procedure TForm1.Button1Click(Sender: TObject);
var
  fs:tfilestream;
  buffer:pchar;
  i:integer;
  s:string;
begin
  fs:=tfilestream.Create('c:\a.txt',fmOpenRead);//a.txt的内容是0123456789
  showmessage(inttostr(fs.size)); //显示文件大小=10  getmem(buffer,fs.size);
  fs.Position:=0;
  fs.ReadBuffer((buffer)^,fs.Size);
  for i:=0 to fs.Size-1 do
    showmessage(buffer[i]);  showmessage('bufferlen:='+inttostr(length(buffer))); //第一次点击button1的时候显示10
                                            //第二、三。。次点击button1和时候显示11
                                            //为什么????
 
  s:=buffer;
  showmessage('strlen:='+inttostr(length(s)));
  showmessage(s);  freemem(buffer);
  fs.Free;
end;

解决方案 »

  1.   

    showmessage('bufferlen:='+inttostr(length(buffer))); //第一次点击button1的时候显示10 
                                                //第二、三。。次点击button1和时候显示11 
                                                //为什么???? 
    length(buffer))); //这个可能包含了null用strlen(buffer);//这个不包含null字符