下面这段代码为什么会报错:
var
iFileHandle: Integer;
iFileLength: Integer;
iBytesRead: Integer;
Buffer:pChar;
i: Integer;
begin
if OpenDialog1.Execute then
begin
try
iFileHandle := FileOpen(OpenDialog1.FileName, fmOpenRead);
iFileLength := FileSeek(iFileHandle,0,2);
FileSeek(iFileHandle,0,0);
Buffer := PChar(AllocMem(iFileLength + 1));
iBytesRead := FileRead(iFileHandle, Buffer, iFileLength);
FileClose(iFileHandle); memo1.Lines.Clear;
memo1.Lines.Add(buffer); //这一句报了一个异常
finally
FreeMem(Buffer);
end;
end;
end;那位大虾解决一下吧,感激不尽。
var
iFileHandle: Integer;
iFileLength: Integer;
iBytesRead: Integer;
Buffer:pChar;
i: Integer;
begin
if OpenDialog1.Execute then
begin
try
iFileHandle := FileOpen(OpenDialog1.FileName, fmOpenRead);
iFileLength := FileSeek(iFileHandle,0,2);
FileSeek(iFileHandle,0,0);
Buffer := PChar(AllocMem(iFileLength + 1));
iBytesRead := FileRead(iFileHandle, Buffer, iFileLength);
FileClose(iFileHandle); memo1.Lines.Clear;
memo1.Lines.Add(buffer); //这一句报了一个异常
finally
FreeMem(Buffer);
end;
end;
end;那位大虾解决一下吧,感激不尽。
我是中国鹰派!
拒绝日货!打倒小日本!
var
f : TextFile;
s : String;
begin
if Open.Execute then
begin
AssignFile(f,Open.FileName);
Reset(f);
try
While not Eof(f) do
begin
readln(f,s);
if s <> '' then
begin
memo1.Lines.Clear;
memo1.Lines.Add(s);
end;
end;
except
f.Close;
end;
end;
end;
var
iFileHandle: Integer;
iFileLength: Integer;
iBytesRead: Integer;
Buffer:string;
i: Integer;
begin
if OpenDialog1.Execute then
begin
try iFileHandle := FileOpen(OpenDialog1.FileName, fmOpenRead);
iFileLength := FileSeek(iFileHandle,0,2);
//FileSeek(iFileHandle,0,0);
//Buffer := AllocMem(iFileLength + 1);
setlength(buffer,ifilelength+1);
iBytesRead := FileRead(iFileHandle, Buffer, iFileLength); FileClose(iFileHandle); memo1.Lines.Clear;
memo1.Lines.Add(buffer); //这一句报了一个异常
finally
// FreeMem(Buffer);
end;
end;
end;
还是一样的效果,但如果改为 Buffer:Array[0..1023] of char 就没有事,
memo1.Lines.Add(StrPas(buffer)) ??
改用TFileStream或TextFile(Readln)来处理了
改成
iBytesRead := FileRead(iFileHandle, Buffer^, iFileLength);
能解释一下吗?
function FileRead(Handle: Integer; var Buffer; Count: LongWord): Integer;
为什么可以这样声明 var Buffer 不要数据类型吗?