![]() |
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:
'dateiInhalt' ist mein string, den ich per Get vom Server geholt habe und an diese Funktion übergebe.
var
handle: Integer; begin handle := FileCreate('IrgendeineDatei.txt'); FileWrite(handle, dateiInhalt, Length(dateiInhalt)); end; Ich hoffe Ihr habt ein paar Tips für mich :) Danke schonmal Grüße Moonlight |
Re: Dateien austauschen
Warum lädst du die Datei nicht in das temporäre Verzeichnis und bildest dort die Chech-Summe?
|
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 |
Re: Dateien austauschen
Also ich habe mein Problem gelöst :dancer: :
Code:
Viele Grüße
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; Moonlight |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:47 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