新手.bin文件怎么按指定字节读取
新手求助:.bin文件如何按指定字节读取?
需求:
现需通过UDP上传bin文件:
有一bin文件2548K,现在我做了这样一个记录体,发给底层设备: 现在需要这样读取:1024K的发送,直到把整个bin文件发完为止,不足1024 的余数则赋值给block:
TUpload= packed record
Session:word;//包序号,一次1024K发,从0开始,每次加一
data:array[1..1025] of byte;//1024K读取
Block:Dword;//不足1024的余数
end;
buttonclick:
var
Upload:TUpload;
i,j,m:integer;
begin
for m:=0 to m do
begin
Upload.session:=m;//包序号
end;
filename:=opendialog1.FileName;
path_edit.Text:=filename;
for i:=length(fileName) downto 1 do
if fileName[i]='\' then
break;
j:=1;
while i<length(filename) do
begin
Upload.data[j]:=ord(filename[i+1]);
i:=i+1;
j:=j+1;
end;//请问这里如何1024K,1024K读取,不足1024K的则赋值给 bolck;
UDP.sendbuffer(ip,port,upload,sizeof(Upload));
end;
------解决方案--------------------
procedure TfrmMain.Button1Click(Sender: TObject);
TUpload= record
Session:word;//包序号,一次1024K发,从0开始,每次加一
data:array[0..1023] of byte;//1024K读取
Block:word;//不足1024的余数
end;
var f:THandle;
Upload:TUpload;
i,j,m:integer;
begin
f:=FileOpen(FileName,0);
i:=0;
repeat
m:= FileRead(f,Upload.data,1024);
if(m>0) then begin
upload.Session:=i;
Inc(i);
Upload.Block:=1024-m;
UDP.sendbuffer(ip,port,upload,sizeof(Upload));
end;
until m<1024;
FileClose(f);
end;
需求:
现需通过UDP上传bin文件:
有一bin文件2548K,现在我做了这样一个记录体,发给底层设备: 现在需要这样读取:1024K的发送,直到把整个bin文件发完为止,不足1024 的余数则赋值给block:
TUpload= packed record
Session:word;//包序号,一次1024K发,从0开始,每次加一
data:array[1..1025] of byte;//1024K读取
Block:Dword;//不足1024的余数
end;
buttonclick:
var
Upload:TUpload;
i,j,m:integer;
begin
for m:=0 to m do
begin
Upload.session:=m;//包序号
end;
filename:=opendialog1.FileName;
path_edit.Text:=filename;
for i:=length(fileName) downto 1 do
if fileName[i]='\' then
break;
j:=1;
while i<length(filename) do
begin
Upload.data[j]:=ord(filename[i+1]);
i:=i+1;
j:=j+1;
end;//请问这里如何1024K,1024K读取,不足1024K的则赋值给 bolck;
UDP.sendbuffer(ip,port,upload,sizeof(Upload));
end;
------解决方案--------------------
procedure TfrmMain.Button1Click(Sender: TObject);
TUpload= record
Session:word;//包序号,一次1024K发,从0开始,每次加一
data:array[0..1023] of byte;//1024K读取
Block:word;//不足1024的余数
end;
var f:THandle;
Upload:TUpload;
i,j,m:integer;
begin
f:=FileOpen(FileName,0);
i:=0;
repeat
m:= FileRead(f,Upload.data,1024);
if(m>0) then begin
upload.Session:=i;
Inc(i);
Upload.Block:=1024-m;
UDP.sendbuffer(ip,port,upload,sizeof(Upload));
end;
until m<1024;
FileClose(f);
end;