Hallo,
über FTP möchte ich nur die jeweils ersten 4096 Bytes von mehreren Dateien übertragen. Bislang habe ich das in einer kleinen Testanwendung mit TIdFtp (Indy 10.5.7, Delphi XE) so gelöst:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38:
| procedure TMainForm.Button1Click(Sender: TObject); begin Label1.Caption := ''; Application.ProcessMessages;
if not IdFtp1.Connected then begin IdFtp1.Host := '192.168.1.101'; IdFtp1.Username := ''; IdFtp1.Password := ''; IdFtp1.Passive := true; IdFtp1.Connect; IdFtp1.ChangeDir('/DataFiles'); end;
IdFtp1.TransferType := ftBinary;
try IdFtp1.Get('Der letzte Tempelritter.rec', 'L:\XXX\Test.REC',true, false); except on E: exception do end; end;
procedure TMainForm.IdFTP1Status(ASender: TObject; const AStatus: TIdStatus; const AStatusText: string); begin Label1.Caption := AStatusText; Label1.Update; end;
procedure TMainForm.IdFTP1Work(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64); begin if AWorkCount > 4095 then IdFtp1.KillDataChannel; end; |
Es handelt sich bei den Dateien um Aufnahmedateien meines Festplattenreceivers. In den Headern steckt die Inhaltsangabe des jeweiligen Films drin. Jede einzelne Datei hat etwa eine Größe von 2 bis 4 GB. Gibt es vielleicht eine elegantere Methode, mein Ziel zu erreichen, als einfach die Übertragung abzuschießen?