![]() |
Dir Exists idftp
Hallo,
ich möchte einen Ordner mit idftp erstellen. Wenn es ihn schon gibt, soll er vorher gelöscht werden. Mein Problem ist jetzt: Wie finde ich heraus ob der Ordner schon am Server existiert? Gibt es da schon irgendeine fertige funktion, oder muss ich mir das jetzt mit idftp.list und dann einfach alle Einträge durchsuchen selbst zusammen basteln? (Indy 9) |
Re: Dir Exists idftp
IdFtp beherbergt so ziemlich nur die grundlegenden FTP-Befehle. Darin ist kein FileExists, DirExists etc. vorgesehen. Entsprechend musst du es dir selbst basteln durch vorheriges Abfragen der verfügbaren Dateien und Ordner.
|
Re: Dir Exists idftp
Okay,
hab mir selbst was gebastelt, funktioniert so weit :-)
Delphi-Quellcode:
function TMyFtp.dir_exists(dir_name: string):boolean;
var list_directories: TStringList; i : integer; begin list_directories := TStringList.create; result:=false; idftp.List(list_directories, '', true); for i := list_directories.Count - 1 downto 0 do if (list_directories.Strings[i][1]='d') and (list_directories.Strings[i]<>'..') and (list_directories.Strings[i]<>'.') then begin DivStrList.Str := list_directories.Strings[i]; if dir_name = DivStrList.Items[DivStrList.Count -1] then begin result:=true; list_directories.Free; exit end end end; |
Re: Dir Exists idftp
warum nur "downto 2" um "." und ".." nicht in der Auswahl zu haben? Wenn das der Grund ist würde ich empfehlen lieber die Namen explizit auf "." und ".." zu überprüfen denn es gibt auch Server welche dir "." und ".." nicht mit auflisten. Und in dem Fall würdest du dann 2 Ordner nicht berücksichtigen.
|
Re: Dir Exists idftp
Hallo,
ja downto 2 wegen den "." und ".." Habe nicht gewußt das manche Server das nicht zurückliefern. Dachte, dass das schon standartisiert ist. Ich habs ausgebessert |
Re: Dir Exists idftp
Zitat:
|
Re: Dir Exists idftp
Stimmt, an das hab ich gar nicht gedacht, danke
|
AW: Dir Exists idftp
Ich habe eine kleine Procedure geschrieben, die prüft, ob eine Directory über Indy-FTP vorhanden ist, falls nicht, wird die Directory angelegt.
Im Indy-FTP muss Passive auf True gesetzt sein. Function Make_FTP_Dir(Path:String):BOOLEAN; VAR I:INTEGER; Begin IdFTP1.List; for i :=0 to IdFTP1.DirectoryListing.Count-1 do begin IF IdFTP1.DirectoryListing[i].FileName = Path Then Begin Result:=True; EXIT; End; end; IdFTP1.MakeDir(Path); Result:=FALSE; End; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz