AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Binäre Datei lesen und validieren

Ein Thema von Cubysoft · begonnen am 16. Jul 2015 · letzter Beitrag vom 17. Jul 2015
Antwort Antwort
Cubysoft

Registriert seit: 5. Sep 2014
Ort: Ludwigshafen
76 Beiträge
 
Delphi XE8 Professional
 
#1

Binäre Datei lesen und validieren

  Alt 16. Jul 2015, 12:18
Hallo,

in meinem Thread (http://www.delphipraxis.net/185891-b...s-streams.html) hatte ich ja das Problem mit dem schreiben und lesen von Unicode-Strings. Da sich das nun ja erledigt hat, stehe ich vor dem nächsten Problem und suche hierbei ein kleines Konzept.

Ich möchte, dass mein Programm merkt, wenn man eine Datei öffnet, die nicht das eigentliche Format hat. Ich habe mir dazu eine ganz einfach Möglichkeit ausgedacht, hoffe aber dass ihr bessere Ideen habt. Derzeit schreibe ich immer am Anfang und am Ende eine bestimmte Zahl (83423). Beim auslesen prüfe ich dann, ob diese beiden Zahlen vorhanden und korrekt sind. Wenn nicht ist die Datei in einem falschen Format

Habt ihr dazu eventuell ein paar Anregungen ?
Tobias
  Mit Zitat antworten Zitat
Benutzerbild von frankyboy1974
frankyboy1974

Registriert seit: 7. Apr 2015
Ort: SH
169 Beiträge
 
Delphi XE7 Professional
 
#2

AW: Binäre Datei lesen und validieren

  Alt 16. Jul 2015, 12:30
Hallo,

du möchtest also beim Lesen einer Datei wissen, ob du diese auch tatsächlich gespeichert hast. Verstehe ich das richtig? Also spontan würde mir dann ein Hash einfallen. Du berechnest nach einem bestimmten Algoritmus, einen Hashwert über den Inhalt deiner Daten (Als einfaches Beispiel zählst du die Anzahl der 'e' in der Datei, speicherst diesen Wert mit in der Datei). Wenn du die Datei wieder ausliest, überprüfst du die Anzahl. Stimmt diese nicht überein, lehnts du die Datei ab.

mfg

frank
Java ist auch eine Insel.
Ist Delphi von Oracle?
In meiner Buchstabensuppen fehlt das C++!
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#3

AW: Binäre Datei lesen und validieren

  Alt 16. Jul 2015, 12:34
Derzeit schreibe ich immer am Anfang und am Ende eine bestimmte Zahl (83423). Beim auslesen prüfe ich dann, ob diese beiden Zahlen vorhanden und korrekt sind. Wenn nicht ist die Datei in einem falschen Format
Das Konzept ist nicht neu und wird viel genutzt. Zusätzlich könnte man auch Checksummen benutzten, um beschädigte Dateien auszuschließen.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Binäre Datei lesen und validieren

  Alt 16. Jul 2015, 12:37
kommt darauf an was Du erreichen willst.
Für's Erkennen sollte Deine Methode hinreichend sein. Wenn du auch das Format verifizieren willst, könntest Du z.B. den 13 und 7letzten Datensatz mit einem genau definierten Inhalt schreiben. (also brauchen wir mind. 14 Datensätze)
Soll jeder Datensatz verifiziert werden würde ich hierfür Prüfsummen nutzen.


Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Binäre Datei lesen und validieren

  Alt 16. Jul 2015, 13:22
kommt darauf an was Du erreichen willst.
Genau...

Erkennung : Zum Beispiel : "Gif89" Magic am Anfang schreiben
Konsistenz : Checksumme über die Datei bilden. (Schütz vor Veränderungen im kleinen Rahmen)
Sicherheit : Checksumme bilden und Checksumme in unterschiedlicher Ausprägung in der Datei speichern.
(So kann verhindert werden, dass einer die Datei patched und die Checksumme gleich mit)
"Ganz Sicher" : (Gibt es zwar nicht) aber Verschlüsselung per AES oder vergleichbares...

Mavarik
  Mit Zitat antworten Zitat
Cubysoft

Registriert seit: 5. Sep 2014
Ort: Ludwigshafen
76 Beiträge
 
Delphi XE8 Professional
 
#6

AW: Binäre Datei lesen und validieren

  Alt 16. Jul 2015, 20:45
Hey,

danke für die Zahlreichen Tipps Ich werde beides umsetzen. Eine Variable in den Header, um festzustellen, ob der Typ passt und eine Checksumme, die ich dann irgendwie berechne Da fällt mir bestimmt was ein

Dankeschön!
Tobias
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#7

AW: Binäre Datei lesen und validieren

  Alt 16. Jul 2015, 22:37
Eine Checksumme an sich brauchst du nicht wirklich. Checksummen werden für Datenintegrität verwendet, was hier ja ned der Fall ist.
Einfach ne Kennung am Anfang der Datei packen und beim Auslesen nachschauen, ob sie vorhanden ist.. as simple as that. Öffne ne (kleine) Exe Datei im Texteditor und du wirst merken, die ersten zwei Zeichen sind "MZ" was die initialien des Entwicklers dieses Formats (PE - portable executable files - exe/dll) ist. Könnte auch "MZ " sein.. So viel dazu
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.901 Beiträge
 
Delphi 12 Athens
 
#8

AW: Binäre Datei lesen und validieren

  Alt 17. Jul 2015, 20:04
Ich benutze z.B. für Binärdateien nur noch Streams, um diese dann per Filestream zu Speichern
oder per Blobstream in der DB zu Speicerhn etc.
Das ist für mich am universellsten.

Zusätzlich kann man damit sehr einfach schon vor dem Anfang der eigentlichen Nutzdaten noch FileVersion, Magic number und
was dir sonst noch so einfällt schreiben.
Jeweils sxhreibt man immer die aktuelle Fileversion beim Speichern.

Das hat den Vorteil das man beim Zurücklesen erstmal Version etc. kontrollieren kann,
und bei Bedarf beim weiteren Lesen der Daten auf die Änderungen in den Versionen reagieren kann.
Z.B. neue Datenfelder in der neuen Version generieren und/oder nicht mehr vorhandene Datenfelder
per Dummyread im Stream überlesen.

So kann man sehr bequem nicht nur Testen ob man das überhaupt die richtige Dateiversion hat,
man bekommt noch eine sehr sichere und einfache Verarbeitung für die verschiedenen Dateiversionen die
man über die Jahre mal produziert gratis dazu.

Rollo
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:41 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