开一个缓冲区是一个好办法。还可以使用流方式来读写文件。这是Delphi帮助中使用fileread把文件读入缓冲区的例子:
procedure TForm1.Button1Click(Sender: TObject);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); for i := 0 to iBytesRead-1 do
begin
StringGrid1.RowCount := StringGrid1.RowCount + 1;
StringGrid1.Cells[1,i+1] := Buffer[i];
StringGrid1.Cells[2,i+1] := IntToStr(Integer(Buffer[i]));
end;
finally
FreeMem(Buffer);
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);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); for i := 0 to iBytesRead-1 do
begin
StringGrid1.RowCount := StringGrid1.RowCount + 1;
StringGrid1.Cells[1,i+1] := Buffer[i];
StringGrid1.Cells[2,i+1] := IntToStr(Integer(Buffer[i]));
end;
finally
FreeMem(Buffer);
end;
end;
end;
解决方案 »
- 提前庆五一,大家谈谈假期都干嘛去!
- Delphi连接Access数据库,想取一个字段的内容用一个变量返回
- 在线程中更新窗体上的ListView控件上的内容,更新时如果不使用Synchronize(更新函数)就会抱错Code:1400,使用的话又会导致界面无响应
- 请在家帮帮忙
- 请看看这个短代码错在哪里?
- 进来帮帮我,一定!在线等待!
- 请问有没有高手解决richview1.42中支持中文的问题
- 急急!!请高手解决delphi+oracle8.04打包问题???
- 请问有基于Delphi的高校宿舍管理系统的源码吗
- 请问,我下载的rar格式的文件用什么才能打开?
- Delphi高手请进,紧急求救,愿奉献100分
- 如何让文字显示出来?
先create
然后loadfromfile
postion:=0;//定位
read or readbuffer
加密
position-1
把加密完的数据写回到流
可以用write
具体可以参看帮助pchar是一个指针,大小为4byte
与byte毫无关系
要转换也可以
p:pchar;
b:byte;
b:=ord(p^);
b:=ord((p+1)^)
...