Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Binärdatei lesen?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1042
Wohnort: Niederbayern

BeitragVerfasst am: 18.05.2023, 20:23    Titel: Binärdatei lesen? Antworten mit Zitat

Ich habe im Internet eine Datei gefunden, die zu einem kostenlosen Mühlespielprogramm gehört:

bilder umsonst bearbeiten

Die Datei ist mit Sicherheit im Binärformat. Wie komme ich an den Inhalt ran? Was steht in der Datei letztendlich drin? Ich habe bereits ein paar Tests gemacht, aber kann mit dem was ich sehe nichts anfangen! Ist der Inhalt trotz Open Source verschlüsselt? Die andere Alternative die ich eventuell habe, wäre die Verwendung einer .DLL-Datei. Aber wie verwende ich die mit Freebasic? Sofern das überhaupt möglich ist?

Link zum Programm und Quellcode: http://compalg.inf.elte.hu/~ggevay/mills

Quellcode: http://compalg.inf.elte.hu/~ggevay/mills/dl.php?file=malom_source_1.1.0.zip

Programm: http://compalg.inf.elte.hu/~ggevay/mills/dl.php?file=Malom_binaries_1.1.0.zip

Das Design von dem Programm, ist nicht gerade das beste! Deswegen wollte ich was eigenes entwickeln/schreiben.

Versuche, die Datei zu lesen:
Code:
#INCLUDE ONCE "WINDOWS.BI"

SCREENRES 640, 640, 32

COLOR &hFFFFFF

DIM AS INTEGER i, j, k

DIM AS CBYTE Text(0 TO 9000)


i = 1
DIM AS INTEGER f = FREEFILE
OPEN "std_0_0_9_9.sec2" FOR BINARY AS #f
DO
   GET #f,, Text(i)
   i += 1
LOOP UNTIL EOF(f)
CLOSE #f


Mit Binärdateien, habe ich bisher noch nicht viel gemacht.
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1228
Wohnort: Ruhrpott

BeitragVerfasst am: 19.05.2023, 19:55    Titel: Antworten mit Zitat

Welche Datei genau meinst du? Das geht aus deinem Beitrag leider nicht hervor. Aber wenn es eine ausführbare Datei ist, wird sie natürlich im Binärformat sein.

Die Quelldateien sind auf jeden Fall in C/C++ und VB geschrieben.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1042
Wohnort: Niederbayern

BeitragVerfasst am: 19.05.2023, 20:09    Titel: Antworten mit Zitat

grindstone hat Folgendes geschrieben:
Welche Datei genau meinst du? Das geht aus deinem Beitrag leider nicht hervor. Aber wenn es eine ausführbare Datei ist, wird sie natürlich im Binärformat sein.

Die Quelldateien sind auf jeden Fall in C/C++ und VB geschrieben.

Gruß
grindstone
Es ist eine der Dateien, die zur Datenbank gehört! Siehe Screenshot im 1. Post ganz oben! Es ist keine ausführbare Datei und auch im Quellcode oder dem Programm nicht mit enthalten. Die Datenbank beinhaltet alle Stellungen/Züge bis zum Gewinn, Remis oder verlust! Runterladen kann man die Datenbank leider nur seperat und mit einem Torrent. Ich habe das damals gemacht.

Link: http://compalg.inf.elte.hu/~ggevay/mills/dl.php?file=Malom_Standard_Ultra-strong_1.1.0.torrent

Ich weiß nur nicht, was ich als Datentyp beim Laden mit angeben soll? Wie ist die Datei im Grunde aufgebaut? Binärformat ist klar. Aber welches Binärformat? Wie komme ich an die Informationen der Datei ran? Mir fehlen einfach zu viele Infos...

Ich habe bereits ein paar Tests gemacht, aber nichts was auf eine Information über Züge oder Stellungen hindeutet.
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1228
Wohnort: Ruhrpott

BeitragVerfasst am: 20.05.2023, 21:30    Titel: Antworten mit Zitat

Ich gehe mal sehr stark davon aus, daß es sich um ein proprietäres Datenformat handelt. Wenn das Format nicht irgendwo beschrieben ist, wirst du dir wohl die Mühe machen müssen, den Quellcode zu analysieren. traurig

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1042
Wohnort: Niederbayern

BeitragVerfasst am: 20.05.2023, 22:09    Titel: Antworten mit Zitat

Was ist mit der Datei Wrappers.dll (im Programm mit enthalten)? Gibt es eine Möglichkeit, diese in mein Freebasic-Programm mit einzubinden? Wenn ja, würde mir das auch schon weiterhelfen. Ich habe im Grunde 2 Programme für Mühle. Eines der Programme (BrillantMill) habe ich mal für ca. 60 Euro gekauft und ist nur für 1 Computer. Das andere Programm (Malom), läuft nur auf 64-bit Rechner. Aber ich will ja auch in erster Linie verstehen, wie so etwas aufgebaut ist bzw. funktioniert! Das Thema fasziniert mich einfach.

Zitat:
Wenn das Format nicht irgendwo beschrieben ist, wirst du dir wohl die Mühe machen müssen, den Quellcode zu analysieren.
Beschrieben, ist das Format nirgends! Leider...

Trotzdem, erstmal danke für die Info!
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1228
Wohnort: Ruhrpott

BeitragVerfasst am: 21.05.2023, 05:32    Titel: Antworten mit Zitat

Du kannst eine .dll in Fb einbinden (siehe das entsprechende Tutorial), sofern es in der gleichen Version (32/64bit) vorliegt wie dein FB Compiler. Du müsstest dann "nur" die dazugehörige Header-Datei finden und nach FB übersetzen (meistens von C/C++).

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1042
Wohnort: Niederbayern

BeitragVerfasst am: 21.05.2023, 18:41    Titel: Antworten mit Zitat

grindstone hat Folgendes geschrieben:
Du kannst eine .dll in Fb einbinden (siehe das entsprechende Tutorial), sofern es in der gleichen Version (32/64bit) vorliegt wie dein FB Compiler. Du müsstest dann "nur" die dazugehörige Header-Datei finden und nach FB übersetzen (meistens von C/C++).

Gruß
grindstone
Header-Datei gibt es glaube ich nicht? Wenn ich mir das Programm (allein nur das Programm) so anschaue, finde ich nur eine Wrappers.dll! Wenn, dann gibt es diese Header-Datei nur beim Quellcode?! Irgendwo habe ich mal gelesen, dass man .dll Dateien mit Freebasic (ohne Header-Datei) verwenden kann?

Zitat:
Wenn das Format nicht irgendwo beschrieben ist, wirst du dir wohl die Mühe machen müssen, den Quellcode zu analysieren.
Wenn ich jetzt wüsste, wo das im Quellcode drin steht?! Habe mir den Quellcode schon mehrmals angeschaut. Irgendwas übersehe ich da?

Ps.: Habe mir jetzt mal schnell die neue Compilerversion (1.10.0) runtergeladen...
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4625
Wohnort: ~/

BeitragVerfasst am: 21.05.2023, 20:00    Titel: Antworten mit Zitat

Auf jeden Fall würde ich mir die Binärdatei ncht als String anzeigen lassen; da sieht man in der Regel nichts. Lass dir lieber die Zahlenwerte der einzelnen Byte anzeigen, vielleicht ist das aufschlussreicher.

Prinzipiell brauchst du keine Header-Datei, wenn du weißt, wie die DLL aufgebaut ist (aber genau das beschreibt die Header-Datei ja). Als Hilfe für die Suche: In C++ haben Header-Dateien normalerweise die Endung .h
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1042
Wohnort: Niederbayern

BeitragVerfasst am: 21.05.2023, 22:12    Titel: Antworten mit Zitat

nemored hat Folgendes geschrieben:
Auf jeden Fall würde ich mir die Binärdatei ncht als String anzeigen lassen; da sieht man in der Regel nichts. Lass dir lieber die Zahlenwerte der einzelnen Byte anzeigen, vielleicht ist das aufschlussreicher.

Prinzipiell brauchst du keine Header-Datei, wenn du weißt, wie die DLL aufgebaut ist (aber genau das beschreibt die Header-Datei ja). Als Hilfe für die Suche: In C++ haben Header-Dateien normalerweise die Endung .h

Danke für die Info! Ich muss mal ein paar Tests machen...

Dass eine Header-Datei die Endung .h hat, weiß ich. Habe die beim Programm nicht gefunden, da in dem Ordner kein Quellcode drin ist.

Zitat:
Auf jeden Fall würde ich mir die Binärdatei ncht als String anzeigen lassen; da sieht man in der Regel nichts. Lass dir lieber die Zahlenwerte der einzelnen Byte anzeigen, vielleicht ist das aufschlussreicher.
Das heißt dann, nicht als String deklarieren, sondern als Byte oder?
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4625
Wohnort: ~/

BeitragVerfasst am: 22.05.2023, 00:05    Titel: Antworten mit Zitat

ALWIM hat Folgendes geschrieben:
Zitat:
Auf jeden Fall würde ich mir die Binärdatei ncht als String anzeigen lassen; da sieht man in der Regel nichts. Lass dir lieber die Zahlenwerte der einzelnen Byte anzeigen, vielleicht ist das aufschlussreicher.
Das heißt dann, nicht als String deklarieren, sondern als Byte oder?

Ja, und dann immer gleich nach dem Einlesen ausgeben, da die Variable ja beim Einlesen des nächsten Bytes wieder überschrieben wird. Alternativ kannst du natürlich auch das Einlesen lassen wie bisher, dann aber vom String zeichenweise den ASCII-Code ausgeben lassen.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz