Hallo Community,
ich habe folgendes vor:
Eine Datei erzeugen (5MB groß mit dem Namen 5242880). Nach dem erzeugen möchte ich prüfen, ob die Datei wirklich 5 MB groß ist. Wenn dies so ist, dann möchte ich diese Datei auf einen FTP hochladen.
Grundsätzlich funktioniert folgendes: Ich klicke auf meinen Upload Button und die Datei 5 MB wird erzeugt. Dann wird 5 Sekunden gewartet (damit die Datei auch wirklich komplett erstellt ist) und sie wird hochgeladen. Wenn die Datei jedoch schon existiert, dann muss sie nicht vor dem Upload erstellt werden.
Wenn ich die Datei aber nach dem Erstellen auch noch auf die Größe prüfen will, dann passsiert folgendes.
Die Prozedur erzeuge5mb() wird ausgeführt und gleich danach wird die Datei auf deren Größe geprüft. Das ganze funktioniert nicht, da sie ja noch nicht komplett erstellt ist.
Ich will das ganze ungern durch Timer machen, die einfach Wartezeiten erzeugen. Das würde zwar funktionieren, aber da muss es doch auch eine richtige Lösung geben?
Habt Vielen Dank für Eure Hilfe.
Mfg
Meine Code-Schnipsel sehen so aus:
Delphi-Quelltext
1: 2: 3: 4:
| procedure erzeuge5mb(); begin ShellExecute(Application.Handle, 'open', 'fsutil', 'file createnew 5242880 5242880', nil, SW_HIDE); end; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Button11Click(Sender: TObject); begin if FileExists('5242880') then begin Form1.FTP.Put('5242880', '5242880', true); end else begin erzeuge5mb(); Form1.Timer5MB.Enabled:=true; end end; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Timer5MBTimer(Sender: TObject); begin t5:=t5+1; if t5=5 then begin Form1.FTP.Put('5242880', '5242880', true); Form1.Timer5MB.Enabled:=false; t5:=1; end else end; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| function GetFileSize(const FileName:string):Int64; var FileStream:TFileStream; begin FileStream:=TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone); try try Result:=FileStream.Size; except Result:=0; end; finally FileStream.Free; end; end; |