| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen | 
	
	
		| Autor | Nachricht | 
	
		| Westbeam 
 
  
 Anmeldungsdatum: 22.12.2009
 Beiträge: 760
 
 
 | 
			
				|  Verfasst am: 06.11.2011, 19:38    Titel: Datei Header auslesen |   |  
				| 
 |  
				| 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.
   
 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
   
 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 |  | 
	
		|  | 
	
		| Jojo alter Rang
 
  
 Anmeldungsdatum: 12.02.2005
 Beiträge: 9736
 Wohnort: Neben der Festplatte
 
 | 
			
				|  Verfasst am: 06.11.2011, 21:24    Titel: Re: Datei Header auslesen |   |  
				| 
 |  
				|  	  | 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 |  | 
	
		|  | 
	
		| Westbeam 
 
  
 Anmeldungsdatum: 22.12.2009
 Beiträge: 760
 
 
 | 
			
				|  Verfasst am: 06.11.2011, 21:27    Titel: |   |  
				| 
 |  
				| Ich habe die Offsets jetzt als Bytes deklariert, sowie im zweiten Code in meinem ersten Post.  |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Jojo alter Rang
 
  
 Anmeldungsdatum: 12.02.2005
 Beiträge: 9736
 Wohnort: Neben der Festplatte
 
 | 
			
				|  Verfasst am: 06.11.2011, 21:30    Titel: |   |  
				| 
 |  
				| 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 |  | 
	
		|  | 
	
		| Westbeam 
 
  
 Anmeldungsdatum: 22.12.2009
 Beiträge: 760
 
 
 | 
			
				|  Verfasst am: 06.11.2011, 21:35    Titel: |   |  
				| 
 |  
				| Ich bin mir nicht sicher, wie du das meinst. Wie soll es denn genau mit ZString funktionieren? |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Jojo alter Rang
 
  
 Anmeldungsdatum: 12.02.2005
 Beiträge: 9736
 Wohnort: Neben der Festplatte
 
 | 
			
				|  Verfasst am: 06.11.2011, 21:40    Titel: |   |  
				| 
 |  
				|  	  | 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 |  | 
	
		|  | 
	
		| MisterD 
 
  
 Anmeldungsdatum: 10.09.2004
 Beiträge: 3071
 Wohnort: bei Darmstadt
 
 | 
			
				|  Verfasst am: 06.11.2011, 22:40    Titel: |   |  
				| 
 |  
				| 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 |  | 
	
		|  | 
	
		| Jojo alter Rang
 
  
 Anmeldungsdatum: 12.02.2005
 Beiträge: 9736
 Wohnort: Neben der Festplatte
 
 | 
			
				|  Verfasst am: 07.11.2011, 07:31    Titel: |   |  
				| 
 |  
				| ... 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...  _________________
 » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 
  |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| MisterD 
 
  
 Anmeldungsdatum: 10.09.2004
 Beiträge: 3071
 Wohnort: bei Darmstadt
 
 | 
			
				|  Verfasst am: 07.11.2011, 10:16    Titel: |   |  
				| 
 |  
				| daran erkennt man welche module von mathematikern geschrieben wurden  _________________
 "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 |  | 
	
		|  | 
	
		| Westbeam 
 
  
 Anmeldungsdatum: 22.12.2009
 Beiträge: 760
 
 
 | 
			
				|  Verfasst am: 07.11.2011, 17:32    Titel: |   |  
				| 
 |  
				|  	  | MisterD hat Folgendes geschrieben: |  	  | wenn er sagt Offsets 108-11E, dann sollte er vermutlich weder 108 noch &hA0 sondern &h108 schreiben? | 
 Hab ich doch?
  |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Jojo alter Rang
 
  
 Anmeldungsdatum: 12.02.2005
 Beiträge: 9736
 Wohnort: Neben der Festplatte
 
 | 
			
				|  Verfasst am: 07.11.2011, 17:41    Titel: |   |  
				| 
 |  
				|  	  | 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 |  | 
	
		|  | 
	
		|  |