Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Dateiinhalt Prüfen (https://www.delphipraxis.net/105681-dateiinhalt-pruefen.html)

Gehstock 27. Dez 2007 14:07


Dateiinhalt Prüfen
 
und zwar soll die Datei anhand eines wertes identifiziert werden
bei Hex $3c-$3f da soll 544B4A43 Drinstehen

hab mal ein Codeschnipsel dazu gefunden welches mir aber nichts sagt
Delphi-Quellcode:
Dword((@buf[0])^):=$544B4A43; // CJKT
bzw
Delphi-Quellcode:
Dword((@buf[$3C])^):=$544B4A43; // CJKT
hab die datei erstmal nur in einen Filestream geladen

Gehstock 27. Dez 2007 14:31

Re: Dateiinhalt Prüfen
 
Ok geht so
Delphi-Quellcode:
FS := TFileStream.Create(OpenDialog1.Filename,fmopenreadwrite);
  FS.Position := $3c;
  FS.ReadBuffer(Buffer,4);
  S := Copy(Buffer,1,4);
  Memo1.Lines.Add(s);
aber ein problem hab ich hier bei
Delphi-Quellcode:
FS.ReadBuffer(Buffer,3);
liest das programm CJK
aber bei
Delphi-Quellcode:
FS.ReadBuffer(Buffer,4);
liest das programm CJKTğâ

Luckie 27. Dez 2007 14:34

Re: Dateiinhalt Prüfen
 
Weil da hinter eine nicht als Zeichen darstellbare Bytefolge kommt oder der Buffer ist nicht groß genug, so dass du Müll im Speicher mit ausgibst.

Gehstock 27. Dez 2007 14:35

Re: Dateiinhalt Prüfen
 
Nee er war einfach zu groß hab ihn verkleinert jetzt klappt es

von
Delphi-Quellcode:
Buffer:Array[1..10000]of Char;
zu
Delphi-Quellcode:
Buffer:Array[1..4]of Char;
Delphi-Quellcode:
  FS := TFileStream.Create(OpenDialog1.Filename,fmopenreadwrite);
  FS.Position := $3c;
  FS.ReadBuffer(Buffer,4);
  Memo1.Lines.Add(Buffer);
end


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 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 by Thomas Breitkreuz