Einzelnen Beitrag anzeigen

Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#1

(Indy) IdFTP: Prüfen ob ein Verzeichnis existiert

  Alt 29. Jan 2010, 19:45
Hallo liebe Leute,
da schon häufiger gefragt wurde wie ich über die Indykomponente IdFTP abfrage ob ein Verzeichnis existiert habe ich
folgende Funktion geschrieben:

Delphi-Quellcode:
function ftpDirExists(ftp:TIdFTP; dir:String; fromRoot:boolean):boolean;
  var tempDir : String;
      tempDir2 : String;
      tempDir3 : String;
      extractedDirs : TStringList;
      tempList : TStringList;
      i : integer;
begin
  result := false;
  // connected?
  if not ftp.Connected then exit;

  if dir[length(dir)] <> '/then
    dir := dir + '/';

  // Initialize objects
  extractedDirs := TStringList.Create;
  tempList := TStringList.Create;

  // Store current dir
  tempDir := ftp.RetrieveCurrentDir;

  // go to the main dir if necessary
  if fromRoot then
    ftp.ChangeDir('/');
  tempDir3 := ftp.RetrieveCurrentDir;

  // extract all single directories in the dir path
  for i := 1 to length(dir) do
  begin
    if dir[i] = '/then
    begin
      if tempDir2 <> 'then
      begin
        extractedDirs.Add(tempDir2);
        tempDir2 := '';
      end;
    end
    else tempDir2 := tempDir2 + dir[i];
  end;

  // Get List for each depth and check if dir exists
  for i := 0 to extractedDirs.Count-1 do
  begin
    tempList.Clear;
    ftp.List(tempList,'*',false);
    if tempList.IndexOf(extractedDirs.Strings[i]) = -1 then
    begin
      result := false;
      exit;
    end
    else
    begin
      tempDir3 := tempDir3 + extractedDirs.Strings[i]+'/';
      ftp.ChangeDir(tempDir3);
    end;
  end;

  //Clear objects
  extractedDirs.Free;
  tempList.Free;
  ftp.ChangeDir(tempDir);
  result := true;
end;
Wichtig ist, dass das Verzeichnis das ihr durchsuchen wollt mit einem '/' beginnt und,
dass eine Verbindung zum FTP-Server besteht.

Ein Beispielaufruf würde so aussehen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  IdFTP1.Username := 'padmalcom';
  IdFTP1.Password := 'blubb';
  IdFTP1.Host := 'www.myftp.de';
  if not IdFTP1.Connected then
    IdFTP1.Connect;
  if ftpDirExists(idFTP1, '/Backup/ftp tool/', true) then
    showmessage('true')
  else showmessage('false');
end;
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat