Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dateien austauschen (https://www.delphipraxis.net/29240-dateien-austauschen.html)

Moonlight 6. Sep 2004 14:15


Dateien austauschen
 
Hallo zusammen,
ich habe ein Problem. Und zwar möchte ich verschiedene Dateien anhand einer Md5Checksumme vergleichen. Wenn die Summen nicht übereinstimmen, sollen die Dateien ausgetauscht werden.
Diese Dateien werden vom Server über eine Get-Methode der Indy-Komponenten runtergeladen. So liegt meine neue Datei erstmal als string in meinem Programm vor.
Ich hatte mir überlegt diesen string in eine Stringlist zu konvertieren und diese dann mit selben Namen der vorherigen Datei zu speichern.
Das klappt auch soweit, das Problem an der ganzen Sache ist, dass die Stringlist mir am Ende der Datei noch eine zusätzliche leer-Zeile speichert. Daher ist die Checksumme der neuen Datei immer noch anders als die Originaldatei und das soll natürlich nicht sein.
Deshalb hab ich mir überlegt die Funktion FileCreate und FileWrite zu benutzten. Aber das klappt auch nicht, weil die Funktionen in die Datei irgendwelche komischen Zeilen speichert, nur nicht den richtigen Inhalt. Aber vielleicht mache ich ja auch was falsch, also hier mal der Code:
Delphi-Quellcode:
var
  handle: Integer;
begin
  handle := FileCreate('IrgendeineDatei.txt');
  FileWrite(handle, dateiInhalt, Length(dateiInhalt));
end;
'dateiInhalt' ist mein string, den ich per Get vom Server geholt habe und an diese Funktion übergebe.
Ich hoffe Ihr habt ein paar Tips für mich :)
Danke schonmal
Grüße Moonlight

Luckie 6. Sep 2004 14:26

Re: Dateien austauschen
 
Warum lädst du die Datei nicht in das temporäre Verzeichnis und bildest dort die Chech-Summe?

Moonlight 6. Sep 2004 14:41

Re: Dateien austauschen
 
Welche Datei meinst Du? Die ich vom Server geladen habe?

Ich habe alle Checksummen in einer Xml-Datei die ich zum Server schicke. der Server hat die Original Xml-Datei und vergleicht die Checksummen der beiden xml-Dateien.
Daraufhin bekomme ich die geänderte Datei vom Server zurück

Moonlight 7. Sep 2004 10:08

Re: Dateien austauschen
 
Also ich habe mein Problem gelöst :dancer: :

Code:
var
  i: Integer;
  datei: file of Byte;
  myDatei: array of Byte;
begin

  SetLength(myDatei, Length(dateiInhalt) + 1);
  for i := 0 to Length(dateiInhalt) do
    myDatei[i] := Ord(dateiInhalt[i]);

  Assign(datei, cROOTPATH + dateiName);
{$I-}
  Rewrite(datei); // Zum schreiben öffnen, falls vorhanden wird Inhalt gelöscht
{$I+}
  if IOResult <> 0 then
  begin
  // Fehler beim öffnen abfangen
    MessageDlg('Fehler beim öffnen der Datei!', mtError, [mbOk], 0);
  end;
  for i := 1 to High(myDatei) do
  begin
    Write(datei, myDatei[i]);
  end;
  Close(datei);
end;
Viele Grüße
Moonlight


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