AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Datei auf Indikatoren für Binärdatei testen?
Thema durchsuchen
Ansicht
Themen-Optionen

Datei auf Indikatoren für Binärdatei testen?

Ein Thema von PeterPanino · begonnen am 9. Mai 2015 · letzter Beitrag vom 13. Mai 2015
Antwort Antwort
Seite 5 von 5   « Erste     345   
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#41

AW: Datei auf Indikatoren für Binärdatei testen?

  Alt 11. Mai 2015, 17:47
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;
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#42

AW: Datei auf Indikatoren für Binärdatei testen?

  Alt 11. Mai 2015, 22:13
Wir basteln uns eine Binärdatei (eindeutig keine Textdatei, da $FFFE kein Unicode-Zeichen ist):
Delphi-Quellcode:
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;
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..
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#43

AW: Datei auf Indikatoren für Binärdatei testen?

  Alt 12. Mai 2015, 00:07
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?
Vielen Dank für den Hinweis, ich werde mir das ansehen.
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#44

AW: Datei auf Indikatoren für Binärdatei testen?

  Alt 12. Mai 2015, 00:28
Wir basteln uns eine Binärdatei (eindeutig keine Textdatei, da $FFFE kein Unicode-Zeichen ist):
Natürlich ist #255#254 indirekt ein Unicode-Zeichen, nämlich ein UTF-16 BOM. (Hättest du meinen Code gelesen, dann hättest du es gesehen). Wenn du die Datei in einem beliebigen Unicode-Text-Editor lädst, hält er das wegen des BOM für eine Unicode-Datei und stellt deswegen natürlich den Rest nicht mehr dar, weil - wie du richtig sagst - das kein Unicode-Zeichen ist.

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:
da Du ja nicht prüfst, ob es eine Textdatei ist, sondern nur, ob es so einigermaßen danach aussieht.
Auch das ist nicht richtig: Meine Funktion prüft NICHT "ob es so einigermaßen [nach einer Textdatei] aussieht", sondern sie prüft, ob Indikatoren für eine Binärdatei enthalten sind. Steht auch ganz deutlich im Titel dieses Themas.

Geändert von PeterPanino (12. Mai 2015 um 01:17 Uhr)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#45

AW: Datei auf Indikatoren für Binärdatei testen?

  Alt 12. Mai 2015, 07:52
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.

Häng noch ein paar ASCII-Zeichen dran, und Notepad interpretiert das chinesisch ...
Hab ich aber nicht. Meine Datei besteht aus 4 Bytes und ist eine Binärdatei. Richtig? Richtig. Und vollkommen egal (wegen des Threadtitels).
Zitat:
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.
Na ja: "Fresst Scheiße, 100.000.000 Mio Fliegen können nicht irren" fällt mir dabei ein.

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...
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#46

AW: Datei auf Indikatoren für Binärdatei testen?

  Alt 12. Mai 2015, 11:33
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.
Jede Textdatei ist eine Binärdatei. Und wenn du eine "Binärdatei speicherst", dann kann das wiederum durchaus eine Textdatei sein (oder was immer du als Textdatei bezeichnest); denn andere Programme wissen ja nicht, wie du die Datei erzeugt hast.

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.

Geändert von PeterPanino (12. Mai 2015 um 12:08 Uhr)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#47

AW: Datei auf Indikatoren für Binärdatei testen?

  Alt 12. Mai 2015, 13:49
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.
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#48

AW: Datei auf Indikatoren für Binärdatei testen?

  Alt 12. Mai 2015, 19:02
Seid so gut und führt Euren Wettbewerb im "sich gegenseitig ans Bein pinkeln" per PN fort. Das interessiert wirklich keinen Außenstehenden.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#49

AW: Datei auf Indikatoren für Binärdatei testen?

  Alt 13. Mai 2015, 07:45
6 Stunden später. Das Ding war doch längst gegessen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 5   « Erste     345   

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:09 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