Autor Beitrag
Moonlight23
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 07.09.04 09:24 
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.
Wenn ich jetzt nun hingehe und beim nächsten mal die Checksummen berechne, ist die Checksumme der neuen Datei immer noch anders, als die von dem Server, obwohl die Dateien eigentlich gleich sein sollten.
Ich habe auch die beiden Dateien mit dem TotalCommander nach Inhalt vergleichen lassen und der einzige Unterschied ist wirklich nur die eine Leerzeile am Ende der neuen Datei.

Ich hatte mir weiterhin überlegt die Funktionen 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:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
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.

Ist es irgendwie möglich das letzte '#$a#$d'-Zeichen aus der Stringliste zu entfernen? Oder gibt es eine andere Möglichkeit meine neue Datei zu speichern?

Ich hoffe Ihr habt ein paar Tips für mich
Danke schonmal im Voraus :)

Grüße Moonlight
StefanH
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1144

Win XP
D5 Standard, D7 Pers, D2005 Pers
BeitragVerfasst: Di 07.09.04 10:12 
Moonlight23 hat folgendes geschrieben:
Ist es irgendwie möglich das letzte '#$a#$d'-Zeichen aus der Stringliste zu entfernen? Oder gibt es eine andere Möglichkeit meine neue Datei zu speichern?


1. TrimRight ?
2. www.delphi-forum.de/topic_29778.html

_________________
"Als es noch keine Computer gab, war das Programmieren noch relativ einfach."(Edsger W. Dijkstra)
"Ich bin nicht von Sinnen, sondern ich rede wahre und vernünftige Worte." (Paulus)
Moonlight23 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 07.09.04 11:05 
Also, ich habe mein Problem gelöst :P :

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
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, 'IrgendeinFile.txt');
{$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;


Grüße Moonlight

Moderiert von user profile iconUGrohne: Code- durch Delphi-Tags ersetzt.