大虾帮忙运行下这段代码!!!盼您赐教!!!
procedure TForm1.BitBtn1Click(Sender: TObject);
var p:pchar;
str:string;
i:integer;
FInstream:TMemoryStream;
begin
for i:=0 to 1 do
str:=str+'a';
p:=pchar(str);
try
FInstream:=TMemoryStream.Create;
FInstream.writeBuffer(p^,i);
FInstream.SaveToFile(edit1.Text)
finally
Finstream.Free;
end;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
var
FInstream:TMemoryStream;
buffer:pchar;
lsize:Longint;
begin
try
FInstream:=TMemoryStream.Create;
FInstream.LoadFromfile(edit1.Text);
memo1.Lines.LoadFromStream(FInstream);
FInstream.Free;
FInstream:=TMemoryStream.Create;
FInstream.LoadFromfile(edit1.Text);
lsize:=FInstream.Size;
GetMem(Buffer,lsize);
FInstream.readBuffer(Buffer^,lsize);
memo1.Lines.Add(buffer+' '+inttostr(strlen(buffer)));
GetMem(Buffer,lsize);
buffer:=pchar('aa');
memo1.Lines.Add(buffer+' '+inttostr(strlen(buffer)))
finally
FInstream.Free;
end;
end;
结果:
aa
aa 5
aa 2
为什么结果有出入,第一个'aa'没错,第二个buffer为什么通过getmem(buffer,lsize)长度成了5了,我的lsize一定是2的啊。
晕了
盼您赐教