Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Dateigröße ermitteln (https://www.delphipraxis.net/152422-dateigroesse-ermitteln.html)

Samufi 22. Jun 2010 12:07


Dateigröße ermitteln
 
Hallo,
schon seit einer ganzen Weile versuche ich verzweifelt, die Größen von Dateien auf einem FTP-Server zu ermitteln. Letztlich funktioniert hat eigentlich:
Delphi-Quellcode:
function getfilesize(Dateiname:String):Integer;
var f:PDWord;
begin
result := -1;
f := ftpOpenfile(FHSession,Pchar(Dateiname),
GENERIC_READ,
FTP_TRANSFER_TYPE_BINARY,
0);
if assigned(f) then
try
result := ftpGetFileSize(f,nil);
finally
end;
Das funktioniert aber immer nur einmal. Deshalb stand im Original auch
Delphi-Quellcode:
finally
InternetClosehandle(f);
end;
So kommt es aber bei jeder Ausführung der Funktion dazu, dass mein Programm nicht mehr reagiert. Komischerweise trat das Problem nicht auf, wenn ich einen Haltepunkt vor "InternetClosehandle(f);" gesetzt hatte.
Weiß jemand, woran das liegt, bzw. wie ich das Problem beseitigen kann? Mir würde auch einfach eine eigene funktionierende Funktion helfen.
Vielen Dank im Voraus!
Treuergebenst,
Samufi

stho 30. Jun 2010 15:58

AW: Dateigröße ermitteln
 
Schau dir das mal an:
http://www.delphipraxis.net/347788-post.html#410596

Dort siehst du wie man "TIdFtpListItems" verwendet.
Ich glaube das liefert auch als Information "Size" zurück... Schau dich da mal um.


Ansonsten eine sehr unschöne Variante:
Globalen TFileStream erzeugen, FTP-Download in den Stream beginnen, im Ersten "OnWork" oder "OnBegin" die größe es Streams (Nimmt ja die Dateigröße an) auslesen und die Verbindung schließen...

Hoffe das konnte dir helfen
(Und bitte nicht hauen für diese letzte WIRKLICH SCHLECHTE Variante)


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz