AGB  ·  Datenschutz  ·  Impressum  







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

Änderungsdatum prüfen

Ein Thema von Metallicwar · begonnen am 24. Feb 2011 · letzter Beitrag vom 25. Feb 2011
Antwort Antwort
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#1

Änderungsdatum prüfen

  Alt 24. Feb 2011, 13:37
Hallo zusammen,
folgendes:
Auf einem FTP Server werden nach 3-4 Monaten eine Aktualisierung einer bestimmten Datei hochgeladen.
Die erste Datei liegt bereits lokal auf meinem Rechner.
Ich möchte nun prüfen, ob die Datei des Servers aktueller ist als die auf dem lokalem Rechner, z.B. über das Änderungsdatum. Ist die Datei aktueller, soll sie heruntergeladen werden, entpackt und der Inhalt in eine Datenbank eingespielt werden. Lässt sich das Änderungsdatum auch direkt auf dem FTP Server prüfen?? Oder hättet ihr eine ganz andere Lösungsmöglichkeit für mich?
So würde ich es lösen:
Delphi-Quellcode:
procedure TfrmdatenDownload.Button1Click(Sender: TObject);
var
   DOSDatum : integer;
    WinDatum : TDateTime;
    Dateiname : string;
begin
  TRY
    TRY
      ftpDateiDownload.Username := 'admin';
      ftpDateiDownload.Password := 'passwort';
      ftpDateiDownload.Host := 'FTP SERVER';
      ftpDateiDownload.Connect;
      Application.ProcessMessages;
      if SaveDlgBankdatendownload.Execute then
        begin
          ftpDateiDownload.Get('Datei.txt', 'G:\Projekte', false);
          {wie entpacken}
          {sobald Datei entpackt, über
          DOSDatum:=FileAge(Dateiname);
           WinDatum:=FileDateToDateTime(DOSDatum); anhand des Änderungsdatums prüfen, ob Datei aktueller ist, wenn ja        DB UPDATE}

        end;
    EXCEPT
      MessageDlg('Es ist ein Fehler beim Download aufgetreten, Prozess wird beendet', mtError, [mbOK], 0);
    END;
  FINALLY
    ftpDateiDownload.Quit;
  END;
end;

Geändert von Metallicwar (24. Feb 2011 um 13:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Änderungsdatum prüfen

  Alt 24. Feb 2011, 13:49
Im Prinzip ja ... nur du kannst ja das Dateidatum schon vor dem Download prüfen lassen

Ein (vernünftiger) FTP-Server gibt dir auch das Datei-Datum zurück.

Somit würde ich auf Anfrage dieses prüfen,
Die Datei dann in den Temp-Ordner laden
und von dort importieren.

Dadurch entlastest du auch den Anwender bzgl. Zeit und Auswahl, wohin die Datei denn soll
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#3

AW: Änderungsdatum prüfen

  Alt 24. Feb 2011, 13:58
Im Prinzip ja ... nur du kannst ja das Dateidatum schon vor dem Download prüfen lassen
genauso, dass ich will ich ja, ist ja deutlich vorteilhafter, als erst die Datei zu downloaden, entpacken und dann auf Änderungsdatum prüfen.
Zitat:
Ein (vernünftiger) FTP-Server gibt dir auch das Datei-Datum zurück.
und mit welchem Befehl? FileAge werd ich ja hier nicht verwenden können.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Änderungsdatum prüfen

  Alt 24. Feb 2011, 14:14
Im Prinzip ja ... nur du kannst ja das Dateidatum schon vor dem Download prüfen lassen
genauso, dass ich will ich ja, ist ja deutlich vorteilhafter, als erst die Datei zu downloaden, entpacken und dann auf Änderungsdatum prüfen.
Zitat:
Ein (vernünftiger) FTP-Server gibt dir auch das Datei-Datum zurück.
und mit welchem Befehl? FileAge werd ich ja hier nicht verwenden können.
FileAge prüft ja auch lokal vorhandene Dateien

Schau dir also mal die FTP-Befehle an
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#5

AW: Änderungsdatum prüfen

  Alt 24. Feb 2011, 14:30
Delphi-Quellcode:
function FileDate(
    const AFileName: String,
    const AsGMT: Boolean = False
): TIdDateTime;
das scheint gut auszusehen, oder meintest du eine andere?
wenn ich jetzte noch die Zugangsdaten zum FTP Server hätte, könnte ich vll auch mal sinnvoll testen, so bleibt mir wohl nichts anderes übrig als code zu tippen und hoffen, er funktiert
  Mit Zitat antworten Zitat
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#6

AW: Änderungsdatum prüfen

  Alt 24. Feb 2011, 15:12
soo, hab mal was gecoded, kann aber nicht sagen, ob das so funktioniert:
Delphi-Quellcode:
procedure TfrmBankenDownload.Button1Click(Sender: TObject);
var
  iDOSDatumLokal: Integer;
  dtWINDatumLokal : TDateTime;
  sDateiEndung: String;
begin
  TRY
    TRY
      ftpDateiDownload.Username := 'admin';
      ftpDateiDownload.Password := 'passwort';
      ftpDateiDownload.Host := 'FTP SERVER';
      ftpDateiDownload.Connect;
      {Änderungsdatum der lokalen Datei herausfinden}
      iDOSDatumLokal := FileAge('C:\Importdateien\Datei.txt');
      dtWINDatumLokal := FileDateToDateTime(iDOSDatumLokal);
      {Abfrage, ob Datei auf Server aktueller als Datei Lokal}
      if ftpDateiDownload.FileDate('Datei.zip',false) > dtWINDatumLokal then
        if dlgDateiAbspeichern.Execute then
          begin
            {Datei downloaden und entpacken}
            ftpDateiDownload.Get('Datei.zip', dlgDateiAbspeichern.FileName, false);
            AbZIPEntpacken.FileName := 'C:\Importdateien\Datei_Neu.txt';
            AbZIPEntpacken.BaseDirectory := 'C:\Importdateien\';
            AbZIPEntpacken.ExtractFiles('*.*');
            {Tabelle leeren und neue Werte eintrage}
            qTabelleLeeren.SQL.Text := 'DELETE FROM Tabelle';
            qTabelleLeeren.ExecSQL;
            {Werte aus Datei (csv oder txt) in Datenbank schreiben}
            if dlgDateiEinelsen.Execute then
              sDateiendung := ExtractFileExt(ansilowercase(dlgDateiEinelsen.FileName));
              if sDateiendung = '.txtthen
                importFromTextfile(dlgDateiEinelsen.FileName)
              else
                importFromCSVfile(dlgDateiEinelsen.FileName);
          end;
    EXCEPT
      MessageDlg('Es ist ein Fehler beim Download aufgetreten, Prozess wird beendet', mtError, [mbOK], 0);
    END;
  FINALLY
    ftpDateiDownload.Quit;
    qTabelleLeeren.Close;
  END;
end;
Anregungen?
Fehler gefunden?
  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:46 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