Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi [gelöst] binär lesen und schreiben (https://www.delphipraxis.net/45063-%5Bgeloest%5D-binaer-lesen-und-schreiben.html)

gmc616 28. Apr 2005 23:15


[gelöst] binär lesen und schreiben
 
Hi Delphianer,

ich lese Informationen vom Rechner aus, z.B. die Seriennummer von Windows, verschlüssle diese mittels RC4 (Danke Luckie für das Demo) und möchte diesen verschlüsselten String in einer Datein speichern;

Später möchte ich diese Datei auslesen und mit der Seriennummer wieder vergleichen;
Worauf das hinausläuft, könnt ihr euch sicher vorstellen;

folgendes Problem:
Wieso sind die Strings nicht gleich?


Zunächst mal mein Code:
Delphi-Quellcode:
procedure fWriteFile (psFileName,psContent:string);
var
  FileHandle : integer;
begin
  if FileExists( psFileName ) then deleteFile (pchar(psFileName));
  FileHandle := FileCreate(psFileName);
  FileWrite(FileHandle,psContent,length(psContent));
  FileClose(FileHandle);
end;


function fReadFile (psFileName,psContent:string) : boolean;
var
  FileHandle,nRead,i,FileLength : integer;
  Buffer: PChar;
  bOkay : boolean;
begin
  bOkay := false;
  if FileExists( psFileName ) then begin
    FileHandle := FileOpen(psFileName, fmOpenRead);
    FileLength := FileSeek(FileHandle,0,2);
    FileSeek(FileHandle,0,0);
    Buffer := PChar(AllocMem(FileLength + 1));
    nRead := FileRead (FileHandle,Buffer^,FileLength);
    FileClose(FileHandle);

    for i:=0 to nRead-1 do begin
      if Buffer[i] = psContent[i] then
        bOkay := true
      else begin
        bOkay := false;
        exit;
      end;
    end;
  end;
  result := bOkay;
end;
Meiner Meinung nach wird der String nicht korrekt gespeichert;
Laut meinem HexEditor stimmen die Bytes in der fReadFile-Funktion im Buffer[i] mit denen in der Datei überein, aber nicht mit dem eigendlichem verschlüsselten String;

Verschlüsselt hin und her, das sollte doch beim Speichern, Lesen und Vergleichen kein Thema sein.

Wo mache ich den Fehler beim speichern?

Bin Dankbar für jede Hilfe.

Gruß
gmc

Mephistopheles 28. Apr 2005 23:20

Re: binär lesen und schreiben
 
Zeig doch mal ein Beispiel (Hex-Bytes in der Datei und im verschlüsselten String).

Christian Seehase 28. Apr 2005 23:25

Re: binär lesen und schreiben
 
Moin gmc,

Zitat:

Zitat von gmc616
Meiner Meinung nach wird der String nicht korrekt gespeichert;

Dem Sourcecode nach zu urteilen möchte ich mich Deiner Meinung anschliessen ;-)

Du hast einfach aber der Adresse des Strings alles was danach im Speicher steht weggeschrieben.

Probier's mal so:

Delphi-Quellcode:
FileWrite(....,psContent[1],...);

gmc616 28. Apr 2005 23:28

Re: binär lesen und schreiben
 
@Mephistopheles:
Clown gefrühstückt?

gmc616 28. Apr 2005 23:40

Re: binär lesen und schreiben
 
Das funktoniert !!
Danke Chris!!

Bin ich blöde??
Wieso funktioniert das?

psContent[0] = Länge des Strings?
psContent[1] = 1. Char??

Oder?

selbst wenn ich am Offset beim Lesen gedreht habe ... konnte ich nix finden was gleich war *grübel*

Nochmal DANKE!

Gruß
gmc

Mephistopheles 28. Apr 2005 23:45

Re: binär lesen und schreiben
 
Zitat:

Zitat von gmc616
Das funktoniert !!
Danke Chris!!

Bin ich blöde??
Wieso funktioniert das?

psContent[0] = Länge des Strings?
psContent[1] = 1. Char??

Oder?

selbst wenn ich am Offset beim Lesen gedreht habe ... konnte ich nix finden was gleich war *grübel*

Die obige Aussage stimmt nur bei Shortstrings. Zu Ansistrings liest du dir am besten einfach mal das Tutorial von Motzi durch.

gmc616 28. Apr 2005 23:45

Re: binär lesen und schreiben
 
Zitat:

Zitat von Mephistopheles
Zitat:

Zitat von gmc616
@Mephistopheles:

Clown gefrühstückt?

Verarschen mag ich überhaupt nicht. Kurzer Satz mit X: War wohl nix. Eigentlich hatte ich erwartet, daß du Hilfe willst. So kann man sich irren :-\

Ich mag mich auch nicht verarschen lassen! Und JA, ich hatte Hilfe erwartet. Die kam aber von dir nicht!

Komisch! Chris wußte mir zu helfen.

Du wolltest mich nur lächerlich aussehen lassen.

[edit] Danke für das Tutorial [/edit]

Luckie 29. Apr 2005 01:05

Re: binär lesen und schreiben
 
Zitat:

Zitat von gmc616
@Mephistopheles:
Clown gefrühstückt?

Was soll bitte diese Aussage? :evil: Mephistopheles hat seine Hilfe angeboten. Solch ein Kommentar ist wohl kaum eine angemessene Reaktion von dir! :warn:

Und dass Christian Seehase dir helfen konnte, war purer Zufall, dass er richtig geraten hat bzw. sich den Quellcode genauer angeguckt hat. Mephistopheles ist davon ausgegangen, dass du solch einen Anfängerfehler nicht machst und hat versucht den Grund wo anders zu suchen. Dass sein Posting dir nicht gleich geholfen hat, ist kein Grund so zu reagieren.

Da dein Problem wohl gelöst ist, mache ich hier zu. Alles weitere per PN.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:13 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