![]() |
AW: Datei auf Indikatoren für Binärdatei testen?
Ggf. tut man sich leichter, die Datei zunächst in einen HEX String zu überführen um dann einfach mit Pos nach Hex Sequenzen zu suchen?
Delphi-Quellcode:
function GetBinToHex(Value: TStream): string;
var Stream: TMemoryStream; begin SetLength(Result, (Value.Size - Value.Position) * 2); if Length(Result) > 0 then begin Stream := TMemoryStream.Create; try Stream.CopyFrom(Value, Value.Size - Value.Position); Stream.Position := 0; BinToHex(PChar(integer(Stream.Memory) + Stream.Position), PChar(Result), Stream.Size - Stream.Position); finally Stream.Free; end; end; end; function LoadFromFile(const FileName: string): string; var FileStream: TFileStream; begin Result := ''; if FileExists(FileName) then begin FileStream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite); try FileStream.Position := 0; Result := GetBinToHex(FileStream); finally FileStream.Free; end; end; end; |
AW: Datei auf Indikatoren für Binärdatei testen?
Wir basteln uns eine Binärdatei (eindeutig keine Textdatei, da $FFFE kein Unicode-Zeichen ist):
Delphi-Quellcode:
Was macht dein Code? Ich habe es nicht ausprobiert, aber er dürfte meinen, das es sich um eine Textdatei handelt, da Du ja nicht prüfst, ob es eine Textdatei ist, sondern nur, ob es so einigermaßen danach aussieht. Na ja. Wenn es Dir reicht..
Type
TData = Packed Record SpielerNummer, HighScore, LevelCode, TaschenInhalt : Byte; end; const data :TData = (SpielerNummer:255; HighScore:254; LevelCode:255; TaschenInhalt:254 ); Var dataFile : File Of TData; begin AssignFile(dataFile,'c:\Spielstand.Dat'); Rewrite(dataFile); Write(dataFile,data); CloseFile(dataFile); end; |
AW: Datei auf Indikatoren für Binärdatei testen?
Zitat:
|
AW: Datei auf Indikatoren für Binärdatei testen?
Zitat:
Häng noch ein paar ASCII-Zeichen dran, und Notepad interpretiert das chinesisch ... Du siehst also, dass sogar weit verbreitete Text-Editoren das für einen Text halten (wegen des BOM) - insofern befinde ich mich in guter Gesellschaft. Und streng definitionsgemäß ist es (wegen des BOM) ja eine Unicode-Textdatei, nur eben eine verkorkste Unicode-Textdatei. Nur DU hältst es für eine Binärdatei, weil sie von deinem Spiel als strukturierte Datendatei gespeichert wurde. Das wissen aber andere Programme nicht. Für die ist es eine Unicode-Textdatei mit einem BOM. Wäre der Spielstand 254:254:255:254 gewesen, würde jeder moderne Text-Editor die Datei als ganz normalen Text darstellen, weil der BOM dann fehlt, denn es IST ja definitionsgemäß eine Textdatei. Für Unicode-Text-Editoren ist das eben die durch den BOM bedingte Rest-Unsicherheit, die ich in mehreren Postings genannt habe, und die sich nicht vermeiden lässt - für den Rest ist es eine ganz normale Textdatei. PS: Zitat:
|
AW: Datei auf Indikatoren für Binärdatei testen?
He he. Richtig. Nur ist $FFFE ein ungültiges Unicode-Zeichen. Hätte ich schreiben müssen. Kommt aufs gleiche heraus. Ich schreibe eine Binärdatei und deine Routine meint, es wäre eine Textdatei. Und richtig: ICH schreibe eine Binärdatei und dann ist es eine.
Zitat:
Zitat:
Aber offenbar klingelt es bei mir. Man muss den Titel wirklich wörtlich nehmen. Alles ok. Wieso man dafür aber so viele Posts verbraten muss, verstehe ich mittlerweile auch nicht (obwohl ich ja Teil des Spams bin ;-) ). Schön aufs Glatteis gelaufen... :thumb: |
AW: Datei auf Indikatoren für Binärdatei testen?
Zitat:
Ein anschauliches Beispiel: Stell dir vor, du bist ein Bäcker. Eines Tages raubt jemand eine Bank aus und kauft am nächsten Tag bei dir mit dem geraubten Geld ein Brötchen. Hast du dich damit strafbar gemacht? Antwort: Nein, denn du konntest ja nicht wissen, dass das Geld für das Brötchen aus einem Bankraub stammt. Siehst du, das Geld ist die Datei, dessen Herkunft du ja nicht kennst. Für dich ist lediglich wichtig und entscheidend, was auf dem Geldschein drauf steht - bzw. was in der Datei drin steht. Wenn der Geldschein echt ist, kann man damit Brötchen kaufen, ganz unabhängig davon, wo der Geldschein her stammt. So ist das. |
AW: Datei auf Indikatoren für Binärdatei testen?
Man Panino. Eine Binärdatei ist es deshalb, weil ich Zahlen reinschreibe, keinen Text. Basta.
Wenn ich Dadaist bin, der gerade seine grenzdebile Surealismusphase auslebt, und ein Buch schreibe, ist das ein Buch mit Inhalt. Punkt. Alle anderen würden es als Kauderwelsch eines SchwachkopfesKünstlers bezeichnen, aber es ist nun einmal ein Buch. Mit Inhalt. Das ist sozusagen die Intention des Erstellers/Autors/Künstlers. Vermutlich kauft irgend ein Walddröpfel das Teil sogar für viel Geld. So, aber Du willst halt mit Haarspalterei, Pfennigpfuchserei und Erbsenzähler-ei Recht haben. Haste. Kriegste geschenkt. So, ich geh wieder in den Sandkasten, wo ich ja hingehöre. :stupid: |
AW: Datei auf Indikatoren für Binärdatei testen?
Seid so gut und führt Euren Wettbewerb im "sich gegenseitig ans Bein pinkeln" per PN fort. Das interessiert wirklich keinen Außenstehenden.
|
AW: Datei auf Indikatoren für Binärdatei testen?
6 Stunden später. Das Ding war doch längst gegessen. :-D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:07 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