在DELPHI中,文件里数据较多,我想分段读取,就是说一次读取N(一个具体的数据,小于文件大小)个数据(以16进制形式读出,方便处理),那么读取一次后,后面该怎么继续接着读取数据? 请给个具体代码示例,谢谢!
解决方案 »
- 获得Listview1.Items.Count,结果总是0
- 关于ADOConnection1连接时的两个问题?有点难度....
- delphi能访问.box文件的内容吗
- create table 的时候,有个blob字段,怎么定义?高手请教!
- adoquery1的afterscroll问题,请高手指教
- 求助:XML文件导入数据表后,中文显示为乱码,请教如何解决?
- 急 !谁用过AVICtrl或AVIWRiter,能指点一下吗?分数随意要(我的范围之内)!
- 大家用vcl的图形控件的时候又没有遇到这样的问题.....
- 关于Tstringgrid的问题?
- TDbText有TransParent(透明)属性,TDBEdit没有,有什么简单的处理办法。
- 怎么修改EXE的图标
- 根据数字键盘查询stringgrid中相对应的内容?
var
MyFile:TFileStream;
Buffer:array[0..65200] of byte;
i:integer;
begin
MyFile:=TFileStream.create('c:\exam.exe',fmOpenRead or fmShareDenyWrite);
try
i:=0;
while i<MyFile.size do
begin
myfile.read(buffer,high(buffer));
inc(i,high(buffer));
end;
finally
myfile.free;
end;
end;随便写的代码,仅供参考
MyFile:TFileStream;
Buffer:array[0..Max] of byte;
i:integer;
begin
MyFile:=TFileStream.create('文件名',fmOpenRead or fmShareDenyWrite);
MyFile.Position := 0;
try
i:=0;
while i <MyFile.size do
begin
myfile.read(buffer,SizeOf(buffer));
inc(i,SizeOf(buffer));
end;
finally
myfile.free;
end;
end;
给个思路吧,以前本人也写过类似的东西1.全局变量
BlockSize : LongWord; // 每次读的块的大小,16的倍数
NowPic : LongWord; // 将要读入的文件的位置
Buffer : PChar; // 读入的块的缓冲区
FI : Integer; // 要读入的文件句柄2. 打开文件
FI := FileOpen(Fname,fmOpenRead or fmShareDenyNone);3. 读入数据
FileSeek(FI,NowPoi,0); // 定位
if (FileRead(FI,Buffer^,BlockSize) = BlockSize) then begin
NowPoi := NowPic + BlockSize;
end;4. 再做其它处理
......5. 关闭文件
FileClose(FI);
将以上各部分写到合适的函数或事件中就可以了.
BlockSize : LongWord; // 每次读的块的大小,16的倍数
NowPic : LongWord; // 将要读入的文件的位置
Buffer : PChar; // 读入的块的缓冲区
FI : Integer; // 要读入的文件句柄 2. 打开文件
FI := FileOpen(Fname,fmOpenRead or fmShareDenyNone); 3. 读入数据
FileSeek(FI,NowPoi,0); // 定位
if (FileRead(FI,Buffer^,BlockSize) = BlockSize) then begin
NowPoi := NowPoi + BlockSize;
end; 4. 再做其它处理
...... 5. 关闭文件
FileClose(FI);
将以上各部分写到合适的函数或事件中就可以了.