Einzelnen Beitrag anzeigen

Benutzerbild von ascotlx
ascotlx

Registriert seit: 8. Mär 2005
Ort: Hamburg
97 Beiträge
 
Delphi 7 Professional
 
#9

Re: Prüfen ob eine Datei auf dem FTP exestiert.

  Alt 24. Jul 2006, 11:17
Moin Toredo,

hier ein CodeSchnipsel ... probier mal, ob Du den gebrauchen kannst:

Die Angaben für den FTP Login musst Du allerdings noch anpassen.
ACHTUNG !!Der CodeSchnipsel stammt aus einem Konsolenprogramm ...!!

Delphi-Quellcode:

...
uses
  SysUtils, Windows, IdFTP, IdFTPCommon, IdException, Classes, IdRFCReply, ShellApi;
...

const
...
  sk_EDir = '/etc'; // Systemkonfiguration
...

procedure cronproc;
var
  IdFTP1: TIdFTP;
  sk_Files2: TStringList;

begin
  IdFTP1:=TIdFTP.Create(nil);
  IdFTP1.Host := '<HOST>';
  IdFTP1.Username := '<USER>';
  IdFTP1.Password := '<PASSWORD>';
  sk_Files2 := TStringList.Create;

  try //FTP: ist der Host erreichbar ??
    IdFTP1.Connect;
  except on e:EIdSocketError do
    begin
      writeLn('');
      SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED + FOREGROUND_INTENSITY);
      Write(E.Message);
      Write('Bitte überprüfen Sie, ob der Server erreichbar ist (cronproc).');
      WriteLn(' ');
      SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
      Write('Bitte drücken Sie die <ENTER>-Taste um das Fenster zu schliessen.');
      ReadLn;
      Exit;
    end;
  end;

  if IdFTP1.Connected then
    try // exception wenn nicht in das Verzeichnis gewechselt werden kann.
      IdFTP1.ChangeDir(sk_EDir);

      try // exception wenn File nicht vorhanden ist.
        IdFTP1.List(sk_Files2, 'SuSE-release', false);
        //Linux
        if sk_Files2.Count >0
          then begin
          //writeln(sk_Files2.Strings[0]);
            if Pos('SuSE-release',sk_Files2.Strings[0]) > 0 then
              [b]<HIER KÖNNTE WAS WEITER VERARBEITET WERDEN>[/b];
          end;
      except on e:EIdProtocolReplyError do
    begin
      writeLn('');
      SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED + FOREGROUND_INTENSITY);
      Write(E.Message);
      Write('Bitte überprüfen Sie, ob die Datei vorhanden ist ...(cronproc).');
      WriteLn(' ');
      SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
      Write('Bitte drücken Sie die <ENTER>-Taste um das Fenster zu schliessen.');
      ReadLn;
      Exit;
    end;

      end;

    finally
    IdFTP1.Disconnect;
  end; // Ende try
  sk_Files2.Free;
  IdFTP1.Free;
end;
Ich habe den Code ein wenig geändert, da Du meine einzelnen Abfragen wharscheinlich nicht gebrauchen kannst.
Vielleicht hilft Dir das Beispiel weiter ...

cu
ascotlx
  Mit Zitat antworten Zitat