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:

Datei Header auslesen

 
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
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 06.11.2011, 20:38    Titel: Datei Header auslesen Antworten mit Zitat

Hallo
Ich schreibe gerade an einem Programm, welches eine .GBA Datei ausliest. Dafür brauche ich die Daten aus dem Header. Ich habe die Datei vorher mit einem Hex-Editor geöffnet und herausgefunden, dass der Name des Spiels bei Offset 108-11E liegt. Nun wollte ich den Namen des Spiels auslesen, also mache ich folgendes:
Code:
Dim As String nam

Dim As Integer ff = Freefile
Open "pkmn.gba" For Input As #ff
Get #ff, 108, nam
Print nam
Close #ff

Dummerweise kommt dabei nichts raus, also wirklich gar nichts. neutral

Dabei ist das das gleiche Vorgehen, wie wenn ich die Auflösung eines BMP-Bildes herausfinden möchte, was aber funktioniert(Link)
Kann mir jemand weiterhelfen? Kann man überhaupt einen Wert aus einer Datei herauslesen, welcher sich über mehrere Offsets verteilt?

Danke für jede Hilfe zwinkern

EDIT: Habs raus:
Code:
Type THeader
   As String nam,shortnam
   As Byte namoffset(12)
End Type

Dim Shared As THeader Header

Dim As Integer ff = Freefile
Open "pkmn.gba" For Binary As #ff
For i As Integer=1 To 12
   Get #ff,&hA0+i,Header.namoffset(i)
   Header.shortnam+=Chr(Header.namoffset(i))
Next
Print Header.shortnam
Close #ff
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 06.11.2011, 22:24    Titel: Re: Datei Header auslesen Antworten mit Zitat

Westbeam hat Folgendes geschrieben:
Dim As String nam
Get #ff, 108, nam

Entweder du musst einen String mit fixer Länge deklarieren, oder du blähst den String vorher auf eine bestimmte Länge auf, oder du nimmst gleich ZStrings.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 06.11.2011, 22:27    Titel: Antworten mit Zitat

Ich habe die Offsets jetzt als Bytes deklariert, sowie im zweiten Code in meinem ersten Post. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 06.11.2011, 22:30    Titel: Antworten mit Zitat

Das ist aber umständlich.
Dim as ZString * 12 name und fertig. Der Name wird vermutlich eh nullterminiert sein, d.h. er wird dann auch wirklich korrekt verarbeitet.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 06.11.2011, 22:35    Titel: Antworten mit Zitat

Ich bin mir nicht sicher, wie du das meinst. Wie soll es denn genau mit ZString funktionieren?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 06.11.2011, 22:40    Titel: Antworten mit Zitat

Code:
Dim as ZString * 12 name
Get #ff,&hA0,name


Wenn der String kürzer als 12 Zeichen ist und durch ein NULL terminiert wird (so wie man das aus der Welt der Dateiformate halt gewohnt ist), wird auch nur der Teil des Strings bis zum Nullzeichen dargestellt.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 06.11.2011, 23:40    Titel: Antworten mit Zitat

wenn er sagt Offsets 108-11E, dann sollte er vermutlich weder 108 noch &hA0 sondern &h108 schreiben?
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 07.11.2011, 08:31    Titel: Antworten mit Zitat

... und um genau zu sein &H109, denn bei FB beginnen die Dateioffsets warum auch immer bei 1, und nicht bei 0, wie bei den meisten Hex-Editoren und anderen Programmiersprachen... mit den Augen rollen
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 07.11.2011, 11:16    Titel: Antworten mit Zitat

daran erkennt man welche module von mathematikern geschrieben wurden Zunge rausstrecken
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 07.11.2011, 18:32    Titel: Antworten mit Zitat

MisterD hat Folgendes geschrieben:
wenn er sagt Offsets 108-11E, dann sollte er vermutlich weder 108 noch &hA0 sondern &h108 schreiben?

Hab ich doch? zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

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

Zitat:
Get #ff,&hA0+i,Header.namoffset(i)

Ist irgendwie nicht ganz &H109.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
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