Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Patrick Egli

Treue Seele

  • »Patrick Egli« ist der Autor dieses Themas

Beiträge: 161

Wohnort: Rainstrasse 38

  • Private Nachricht senden

11

05.02.2011, 00:28

So es wird richtig in die Datei geschrieben, es wird 378 bei der Anzahl der Vertices eingetragen. Wo kann ich den herausfinden, an welcher Stelle der reader zur Zeit liest?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

12

05.02.2011, 00:30

Hast du das mit einem Hex-Editor überprüft?
Die aktuelle Leseposition bekommst du mit

C-/C++-Quelltext

1
m_File.tellg()

Patrick Egli

Treue Seele

  • »Patrick Egli« ist der Autor dieses Themas

Beiträge: 161

Wohnort: Rainstrasse 38

  • Private Nachricht senden

13

05.02.2011, 00:45

Nein, ich habe es mit m_File << "" << endl; ausgegeben und geschaut, wie gross die Zahl ist, welche dann in die Datei geschrieben worden ist. Mit tellg() habe ich die Position 140 bekommen. Ich habe mir nun einen Hex-Editor heruntergeladen, wie kann ich jetzt die Positon da finden? Ich habe den NEXT-Soft-Hex-Editor MX heruntergeladen.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

14

05.02.2011, 00:52

Vergiss die << operatoren, das bringt dich hier kein Stück weiter. Schreib deine Datei und check mit einem Hex-Editor ab ob die Werte in der Datei stimmen. Wenn nein -> rausfinden warum nicht, wenn ja -> rausfinden warum sie falsch gelesen werden.

Patrick Egli

Treue Seele

  • »Patrick Egli« ist der Autor dieses Themas

Beiträge: 161

Wohnort: Rainstrasse 38

  • Private Nachricht senden

15

05.02.2011, 00:58

Ok, muss ich das mit dem Debugger überprüfen, oder wie muss ich herausfinden, ob die Werte in der Datei stimmen oder nicht? Ich komme mit dem Hex-Editor nicht so ganz draus, ist eine Zeile eine Zahl oder ein Zeichen?

Hier ein Bild einer Zeile, ich habe gerade die Nummer 140 gewählt, da tellg() mit diese Nummer ausgab.


(Link)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

16

05.02.2011, 01:05

Ein Hex-Editor zeigt dir einfach die einzelnen Bytes der Datei in Hex Notation an, das ist alles. Die ersten 4 Bytes entsprechen deinem m_NumMeshes, gefolgt von den 4 Bytes der ersten m_NumVertices etc.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »dot« (05.02.2011, 01:11)


Patrick Egli

Treue Seele

  • »Patrick Egli« ist der Autor dieses Themas

Beiträge: 161

Wohnort: Rainstrasse 38

  • Private Nachricht senden

17

05.02.2011, 01:12

Und da kann ich die Anzahl der Meshes herausfinden, in dem ich den Dezimalwert der Hex-Werte addiere? Oder wie muss ich das dann mit dem Debugger vergleichen?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

18

05.02.2011, 01:21

Indem du die 4 Bytes anschaust und dir überlegst was der int dazu für einen Wert hat. 378 sollte so aussehen: 7A 01 00 00

Grund: 374 ist 0x17A bzw der ganze int: 0x0000017A. Auf einer Little Endian Architektur wie x86 beginnt ein int mit dem Least Significant Byte im Speicher, darum sind die einzelnen Bytes "verdreht" und in der Datei steht am Ende 7A 01 00 00.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »dot« (05.02.2011, 01:35)


Patrick Egli

Treue Seele

  • »Patrick Egli« ist der Autor dieses Themas

Beiträge: 161

Wohnort: Rainstrasse 38

  • Private Nachricht senden

19

05.02.2011, 01:38

Danke für die Erklährung ich weiss nun wie man Hex-Werte anwendet. Ich habe nun herausgefunden, das der Wert falsch in die Datei geschrieben wird. Es wird tatsächlich 3270754304 = Hex (00C0F3C2) eingetragen. Warum wird ein falscher Wert in die Datei eingetragen, was können die Ursachen davon sein?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

20

05.02.2011, 01:43

Das ist sehr komisch, die Datei ist zum Schreiben auch sicher mit ios::out | ios::binary geöffnet worden und der Wert von m_ModelData.NumVertices ist korrekt? Hast du auch an der richtigen Stelle in der Datei geschaut (5tes bis 8tes Byte)!?

Werbeanzeige