var
DataBuff:Pchar
begin
GetMem(DataBuff,BuffSize*2);
//...获取DataBuff值
DataStr:=Trim(DataBuff);//DataStr:string;
FreeMem(DataBuff);
end;这段代码DataStr的值永远都是'',我也知道为什么,FreeMem(DataBuff)的原因但这段代码必须这样写,重要的是如何赋值给DataStr,而不受FreeMem(DataBuff)的影响?
DataBuff:Pchar
begin
GetMem(DataBuff,BuffSize*2);
//...获取DataBuff值
DataStr:=Trim(DataBuff);//DataStr:string;
FreeMem(DataBuff);
end;这段代码DataStr的值永远都是'',我也知道为什么,FreeMem(DataBuff)的原因但这段代码必须这样写,重要的是如何赋值给DataStr,而不受FreeMem(DataBuff)的影响?
2 你的DataStr:=Trim(DataBuff);是正确的
3 给你一个例子
var F: file;
Size: Integer;
Buffer: PChar;
S;String;
begin
AssignFile(F, 'test.txt');
Reset(F, 1);
try
Size := FileSize(F);
GetMem(Buffer, Size);
try
BlockRead(F, Buffer^, Size);
s:=BUffer;showmessage(s);
finally
FreeMem(Buffer);
end;
finally
CloseFile(F);
end;end;
2 你的DataStr:=Trim(DataBuff);是正确的
3 给你一个例子
var F: file;
Size: Integer;
Buffer: PChar;
S;String;
begin
AssignFile(F, 'test.txt');
Reset(F, 1);
try
Size := FileSize(F);
GetMem(Buffer, Size);
try
BlockRead(F, Buffer^, Size);
s:=BUffer;showmessage(s);
finally
FreeMem(Buffer);
end;
finally
CloseFile(F);
end;end;
你说的对,不会因为释放了pchar而无效