Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Datei binär einlesen (https://www.delphipraxis.net/1782-datei-binaer-einlesen.html)

nailor 23. Dez 2002 14:04


Datei binär einlesen
 
Wie kann ich von einer Datei die ersten 32 Byte (256 Bit) binär einlesen, und als Integer, Byte, String... (irgendwas womit man weiterarbeiten kann) benutzen??? Es muss egal sein, was für Werte da drin stehen, es muss immer klappen!

sakura 23. Dez 2002 14:10

Re: Datei binär einlesen
 
Zitat:

Zitat von Nailor
Es muss egal sein, was für Werte da drin stehen, es muss immer klappen!

Klappt nur, wenn auch mind. 32 Bytes vorhanden sind.

Delphi-Quellcode:
type
  TMy32Bytes = array[0..31] of Byte;
var
  My32Bytes: TMy32Bytes;
begin
  with TFileStream.Create('C:\Temp\SimpleFile.dat', fmOpenRead) do
  try
    Read(My32Bytes, SizeOf(My32Bytes));
    // jetzt kannst Du mit den 32 Bytes machen was Du willst
  finally
    Free;
  end;
  // auch hier kannst Du mit den 32 Bytes machen was Du willst
end;
So einfach.

nailor 23. Dez 2002 14:15

ok, für den speziellen fall reicht das vollkommen,
aber generell:
kann man auch die bytes einzeln einlesen, und dann immer 1 weitergehen, oder 8 oder sowas?

Christian Seehase 23. Dez 2002 14:17

Moin Nailor,

schau Dir doch einfach mal die Methode TFileStream.Read an.
Das müsste Deine Frage eigentlich beantworten.

nailor 23. Dez 2002 14:19

Ich hab die ganze DelphiHilfe nach "Read" durchsucht, aber nix gefunden, was mir zu helfen schien :(

sakura 23. Dez 2002 14:20

Re: Datei binär einlesen
 
JA.
Delphi-Quellcode:
var
  I, OneByte: TMy32Bytes;
begin
  with TFileStream.Create('C:\Temp\SimpleFile.dat', fmOpenRead) do
  try
    for I := 0 to 31 do
    begin
      Read(OneByte, SizeOf(OneByte));
      ShowMessage(IntToStr(OneByte));
    end;
  finally
    Free;
  end;
end;

Christian Seehase 23. Dez 2002 14:23

Moin Nailor,

es geht ja um die Methode Read von TFileStream, ergo:
Erst mal nach TFileStream suchen, und dann oben auf die Methoden klicken.
Dann geht ein Fenster auf mit allen Methoden, die TFileStream kennt, und Read ist dabei.

nailor 23. Dez 2002 14:24

d.h. er rückt die position in der datei automatisch nach dem lesen vor?

auf jeden fall schon mal vielen dank!!! :bouncing4: :hello:

nailor 23. Dez 2002 15:41

Noch eine Frage, bevor ich mir jede Menge Arbeit mach:

Gibt es eine andere möglichkeit, zwei Dateien zu vergleichen, ohne beide komplett Byte für Byte einzulesen und jeweils zu vergleichen?

Christian Seehase 23. Dez 2002 15:47

Moin Nailor,

wenn es Dir genügt mit einiger Wahrscheinlichkeit festzustellen, ob zwei Dateien gleich sind, könntest Du es mit einer CRC 32 Prüfsumme über beide Dateien hinbekommen.

100%ig ist das naheliegender Weise natürlich nicht, da es ja "nur" (2 hoch 32) - 1 verschiedene Prüfsummen gibt, aber wohl bestimmt mehr verschiedene Dateien.

Wenn es sicherer sein soll ginge es wohl auch mit einer MD5 Prüfsumme, wie es z.B. die Kerio Personal Firewall macht, um manipulierte/ersetzte Dateien aufzuspüren.

In keinem Falle wirst Du wohl darum herumkommen beide Dateien komplett zu lesen, nur musst Du sich nicht zwingend Byte für Byte vergleichen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:55 Uhr.
Seite 1 von 2  1 2      

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