![]() |
Binärdaten auslesen?
hallö,
ich habe einige dateien, dort ist zum beispiel dieses hier: Zitat:
|
Re: Binärdaten auslesen?
|
Re: Binärdaten auslesen?
hallo,
das hilft mir irgendwie nicht weiter... ich weiss zwar wie ich in delphi meine eigenen sachen speicher (file of tmytype...) und wieder auslese.... aber ka wie ich eine fremde datei auslese. hat sonst noch jemand ne idee wie ich aus einer binären datei den TEXT rausbekomme der im binären format vorliegt? |
Re: Binärdaten auslesen?
Wenne s sich um eine typisierte Datei handlet, wird dir nichts anderes übrigbleiben, als den Aufbau zu ermitteln. Entweder selbest oder in dem du den Autor fragst.
|
Re: Binärdaten auslesen?
Ich würde die Datei ersteinmal in einen Stream laden und mir dann die Einzelnen Bytes ansehen (HEX-Editor).
Dann kannst Du versuchen zu analysieren wie die IP in der Datei gespeichert wird und sie dann entsprechend aus dem Stream lesen. |
Re: Binärdaten auslesen?
Wenn die Datei nicht gross ist kannst du sie ja mal hier anhängen.
|
Re: Binärdaten auslesen?
Liste der Anhänge anzeigen (Anzahl: 1)
hi scp,
hier ist so eine datei... es ist eine Ethereal log datei, in ihr sind die daten die ein Spiel an den server sendet... solche daten wie "units gekillt" "units build" "time" usw nur liegen die halt binär vior und mit nem hexeditor bin ich nicht gerade gut... ich häng sie mal an. Hoffe du kannst mir sagen wie ich an die werte komme ;) Denk dran das es nicht wirklich eine .txt datei ist, ich musste sie hier nur umbenennen weil keine dateien ohne endung erlaubt sind. |
Re: Binärdaten auslesen?
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mir mal die Mühe gemacht, mir das anzugucken. Die Datei ist relativ simpel aufgebaut.
Code:
Anbei ein Beispielcode, enthält noch keine Fehlerüberprüfungen, klappt aber schon mit der Datei.
Aufbau der Datei:
05 98 = 2 Bytes (Word) = 1432 = Grösse Datensatz/Datei 00 00 = 2 Bytes (Word) = 0 1. Eintrag 53 49 44 23 = 4 Bytes (DWord) = SID# = Tag 00 07 = 2 Bytes (Word) = 7 = Typ (2 = ByteBool, 6 = Zahl, 7 = String) 00 21 = 2 Bytes (Word) = 33 = Grösse Eintrag ........... = Hier folgt der Inhalt, in dem Fall der String 8B D1 77 = 0 bis 3 Bytes, evtl. um Position des nächsten Tags "einzurücken" 2. Eintrag 53 45 52 23 = 4 Bytes (DWord) = SER# = Tag 00 07 = 2 Bytes (Word) = 7 = Typ (2 = ByteBool, 6 = Zahl, 7 = String) 00 17 = 2 Bytes (Word) = 23 = Grösse Eintrag ........... = Hier folgt der Inhalt, in dem Fall der String 00 = 0 bis 3 Bytes, evtl. um Position des nächsten Tags "einzurücken" 3. Eintrag 49 44 4E 4F = 4 Bytes (DWord) = IDNO = Tag 00 06 = 2 Bytes (Word) = 6 = Typ (2 = ByteBool, 6 = Zahl, 7 = String) 00 04 = 2 Bytes (Word) = 4 = Grösse Eintrag 07 D3 84 D1 = Der Inhalt, in dem Fall die Zahl usw. Die Grundarbeit des Code besteht eigentlich nur darin, die Tags durch eine Schleife Schritt für Schritt abzuarbeiten und je nach Datentyp eine Infozeile in die Listbox reinzuhauen. EDIT: - Benötigt wird ein neues Projekt mit 1 Button und 1 ListBox. - Unbekannte aber in der Datei vorhandene Datentypen: 0x0001, 0x0005, 0x0014 |
Re: Binärdaten auslesen?
hallo scp,
wow, funktioniert einwandfrei wie kann ich mich nur bei dir bedanken? :thumb: Sauber! Vielen dank für die mühe! 8) kannst du mir noch einige dinge erklären? was tun diese dinge z.b(ich wusste nichtmal das man da hexwerte im array haben kann): Zitat:
Zitat:
|
Re: Binärdaten auslesen?
Binärdaten kann man einfach gut in ein array [0..x] Of Char einlesen, weil man dann Teile der Daten über den Index bekommt. Und da der array mit 0 beginnt, kann man ihn auch ohne weiteres als nullterminierten String verwenden (wenn eben ein solcher aus der Datei ausgelesen wurde).
Zu den beiden Funktionen: Diese drehen die Anordung der Bytes um, google einfach mal nach ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 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