Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Dir Exists idftp (https://www.delphipraxis.net/118905-dir-exists-idftp.html)

ferby 17. Aug 2008 18:37


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)

SirThornberry 17. Aug 2008 18:41

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.

ferby 17. Aug 2008 19:11

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;

SirThornberry 17. Aug 2008 19:36

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.

ferby 17. Aug 2008 19:50

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

omata 17. Aug 2008 20:05

Re: Dir Exists idftp
 
Zitat:

Zitat von ferby
Habe nicht gewußt das manche Server das nicht zurückliefern

Wenn du in deinem Root auf dem Server bist und nicht die Berechtigung hast eine Ebene höher zu schauen, dann hast du auch nicht den ".."-Ordner. Das ist ganz normal. Du darft dir nicht einfach solche Optimierungen einfallen lassen, das hat alles einen Sinn.

ferby 17. Aug 2008 20:16

Re: Dir Exists idftp
 
Stimmt, an das hab ich gar nicht gedacht, danke

CarlHeRe 10. Jun 2020 15:07

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 09:48 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