为什么我的这段文件读写代码老是报告内存错误?谢谢!
function TForm2.ReadFile1(StrFilePath: PChar): PChar;
var
iFileHandle: Integer;
iFileLength: Integer;
iBytesRead: Integer;
Buffer: PChar;
i: Integer ;
pp:Pchar;
temp : String;
begin
Result := nil;
try
iFileHandle := FileOpen(StrFilePath, fmOpenRead);//fmOpenReadWrite);
if (iFileHandle < 0) then
begin
Result := nil;
exit;
end ;
iFileLength := FileSeek(iFileHandle,0,2);
FileSeek(iFileHandle,0,0);
Buffer := PChar(AllocMem(iFileLength + 1));
iBytesRead := FileRead(iFileHandle, Buffer, iFileLength);
FileClose(iFileHandle);
//ShowMessage(Buffer);
Buffer[iFileLength+1]:=#0;
Result:=Buffer;
finally
FreeMem(Buffer);
end;end;
function TForm2.ReadFile1(StrFilePath: PChar): PChar;
var
iFileHandle: Integer;
iFileLength: Integer;
iBytesRead: Integer;
Buffer: PChar;
i: Integer ;
pp:Pchar;
temp : String;
begin
Result := nil;
try
iFileHandle := FileOpen(StrFilePath, fmOpenRead);//fmOpenReadWrite);
if (iFileHandle < 0) then
begin
Result := nil;
exit;
end ;
iFileLength := FileSeek(iFileHandle,0,2);
FileSeek(iFileHandle,0,0);
Buffer := PChar(AllocMem(iFileLength + 1));
iBytesRead := FileRead(iFileHandle, Buffer, iFileLength);
FileClose(iFileHandle);
//ShowMessage(Buffer);
Buffer[iFileLength+1]:=#0;
Result:=Buffer;
finally
FreeMem(Buffer);
end;end;
解决方案 »
- 如何用DBGrid来实现将列中相同值的行进行合并?
- 请打印高手多多指点,关于打印标签,急呀,今天开始郁闷了。
- 为自己工作方便开发的软件,工作单位是否有权使用?
- 请问大家关于delphi串行通信方面有什么好书?
- 如何程序实现屏幕ie中的安装证书窗口
- 问问大家,原创文章被别人使用,但没有注明转帖是什么感觉?
- socket.ReceiveBuf 的问题
- 请教:关于使用Midas的三层编程结构,在客户端出现的奇怪问题。
- 来者有分,关于ado的
- 如何在delphi中显示ado中选择数据源的链接属性对话框(data link properties)
- 人事管理系统数据库设计的问题
- 想用DELPHI做一个类似QQ游戏,联众世界的游戏大厅,请高手们进来看看
iBytesRead := FileRead(iFileHandle, Buffer, iFileLength);
应该为
iBytesRead := FileRead(iFileHandle, Buffer^, iFileLength);
finally
FreeMem(Buffer);你都释放掉内存了,还如何返回?