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

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

11

31.01.2013, 12:16

OK, ja, das macht erstmal soweit Sinn.
Aber wieso genau castest du da in (short**)adresseneu? Ich würde ja wie erwünscht (void*) casten. Aber das sollte an sich nicht das Problem sein. Hast du den Speicher in der Umgebung denn mal untersucht, ob da der Pointer überhaupt zu finden ist?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

12

31.01.2013, 12:18

Ich weiß, dass ich einen Pointer auf einen Pointer such der auf eine 2-Byte Zahl zeigt. Demnach ist das doch korrekt oder?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

13

31.01.2013, 12:19

Nö.
Eigentlich suchst Du nur erstmal den Wert in einer Speicheradresse und dieser Wert soll mit dem 0C..-Gerümpel übereinstimmen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

14

31.01.2013, 12:27

Das stimmt wohl. Welchen Cast schlägst du vor?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

15

31.01.2013, 15:39

Eigentlich egal, wie ich sagte. Sinnvoll wäre aber wohl dort (int*) zu übergeben. Und da wir bei C++ sind das auch in einem reinterpret_cast und nicht in einem C-Cast.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

16

31.01.2013, 15:54

Bedenke, dass Adressrechnungen mit Zeigern nicht byteweise rechnen, sondern elementweise. Solange Du also Adressen und Offsets verrechnest, solltest Du das entweder auf einem char* machen, weil char auf x86 ein Byte ist, oder Du nimmst die entsprechenden Typen size_t und ptrdiff_t - dass die in Deinem Programm nur zufällig auf "unsigned int" und "int" fallen, rettet Deinem Programm das Leben :-) In einem 64Bit-Programm wäre das ein Crash mit Ansage.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

17

31.01.2013, 15:59

Er rechnet ja nur mit int und casted danach. Das sollte so schon gehen. Laut den Speicher-Adressen scheint es sich auch um eine 32-Bit-Anwendung zu handeln, also alles prima ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

18

31.01.2013, 16:21

Eigentlich schon, aber schon die auskommentierte Zeile im letzten Quelltext rechnet auf einem short*, würde also das Offset doppelt addieren. Daher empfand ich es als notwendig, auf die Details von Zeiger-Arithmetik hinzuweisen.

Und konnte es mal wieder nicht lassen, gleich noch etwas Programmierstil zu propagieren. Man castet keine Zeiger auf ints. Macht man nicht. Genau wegen dieser Dummheit krieg ich Massen an Warnungen, wenn ich Uralt-Code wie freetype oder zlib auf 64Bit kompilieren will. Da hat auch mal jemand gedacht, er ist schlau und hat das ja im Blick.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

19

31.01.2013, 17:39

Na ja, ich denke wenn es darum geht ein 32-Bit-Spiel zu patchen, kann man wohl auch davon ausgehen, dass das eigene Programm 32-Bit ist. Ansonsten hast du aber vollkommen Recht.

Wegen dem auskommentierten Code hatte ich auch überlegt, aber da er auskommentiert war, habe ich's gelassen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige