AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dir Exists idftp

Ein Thema von ferby · begonnen am 17. Aug 2008 · letzter Beitrag vom 10. Jun 2020
Antwort Antwort
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#1

Dir Exists idftp

  Alt 17. Aug 2008, 19:37
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)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Dir Exists idftp

  Alt 17. Aug 2008, 19:41
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#3

Re: Dir Exists idftp

  Alt 17. Aug 2008, 20:11
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;
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Dir Exists idftp

  Alt 17. Aug 2008, 20:36
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#5

Re: Dir Exists idftp

  Alt 17. Aug 2008, 20:50
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
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Dir Exists idftp

  Alt 17. Aug 2008, 21:05
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.
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#7

Re: Dir Exists idftp

  Alt 17. Aug 2008, 21:16
Stimmt, an das hab ich gar nicht gedacht, danke
  Mit Zitat antworten Zitat
CarlHeRe

Registriert seit: 15. Apr 2009
Ort: 22880 Wedel
1 Beiträge
 
#8

AW: Dir Exists idftp

  Alt 10. Jun 2020, 16:07
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;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:35 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