用seek()改变文件变量的当前位置var f: file of Byte; size : Longint; S: string; y: Integer; begin if OpenDialog1.Execute then begin AssignFile(f, OpenDialog1.FileName); Reset(f); size := FileSize(f); S := 'File size in bytes: ' + IntToStr(size); y := 10; Canvas.TextOut(5, y, S); y := y + Canvas.TextHeight(S) + 5; S := 'Seeking halfway into file...'; Canvas.TextOut(5, y, S); y := y + Canvas.TextHeight(S) + 5; Seek(f,size div 2); S := 'Position is now ' + IntToStr(FilePos(f)); Canvas.TextOut(5, y, S); CloseFile(f); end; end;
begin ... AssignFile(Ftrans, filename); ReWrite(Ftrans); Recelen:=Recv(ReceSocket, BlockBuf, BlockLen,0); while (not StopTrans) and (Recelen>0) do begin BlockWrite(Ftrans,BlockBuf[0],Recelen); Applicatoin.ProcessMessage; Recelen:=Recv(ReceSocket, BlockBuf, BlockLen,0); end; ... CloseFile(Ftrans); ... end.
f: file of Byte;
size : Longint;
S: string;
y: Integer;
begin
if OpenDialog1.Execute then
begin
AssignFile(f, OpenDialog1.FileName);
Reset(f);
size := FileSize(f);
S := 'File size in bytes: ' + IntToStr(size);
y := 10;
Canvas.TextOut(5, y, S);
y := y + Canvas.TextHeight(S) + 5;
S := 'Seeking halfway into file...';
Canvas.TextOut(5, y, S); y := y + Canvas.TextHeight(S) + 5;
Seek(f,size div 2);
S := 'Position is now ' + IntToStr(FilePos(f));
Canvas.TextOut(5, y, S);
CloseFile(f);
end;
end;
...
AssignFile(Ftrans, filename);
ReWrite(Ftrans);
Recelen:=Recv(ReceSocket, BlockBuf, BlockLen,0);
while (not StopTrans) and (Recelen>0) do
begin
BlockWrite(Ftrans,BlockBuf[0],Recelen);
Applicatoin.ProcessMessage;
Recelen:=Recv(ReceSocket, BlockBuf, BlockLen,0);
end;
...
CloseFile(Ftrans);
...
end.