[C#]wert einer adresse ausgeben

06/14/2009 19:34 ms​#16
Wenn du aber das machst, was schlurmann geschrieben hat, geht es einfacher. Also einfach bytes bzw. bytes2 auf einen 4 Byte großen Typen zeigen lassen anstatt auf ein Array.
Dann kann man sich das mit dem Umwandeln sparen.
06/14/2009 19:45 Cholik#17
Quote:
Originally Posted by Disconnect View Post
Ich glaube nicht.


Denn wenn du beispielsweise folgendes schreibst:
Code:
int i = 9
dann steht im Speicher (vorrausgesetzt natürlich int entspricht 32 Bit):
Code:
09 00 00 00
Ja und wenn man die Bytes so ausliest in ein Byte-Array sollte man sie "konvertieren" :P
06/14/2009 20:04 ms​#18
Richtig, wenn du sie in ein Byte-Array schreibst.
Wenn du den Wert aber direkt in einen 4 Byte großen Typen schreibst, muss man nichts umwandeln, oder?
06/14/2009 20:04 schlurmann#19
Quote:
Originally Posted by Cholik View Post
"dumm umwandeln" musst du so oder so
So ein Quatsch. Der buffer Parameter ist ein Zeiger auf ein void. ([Only registered and activated users can see links. Click Here To Register...])

Code:
int x = 0;
unsigned int bytesRead = 0;

ReadProcessMemory(rhdl, (void*)Pos_x, (void*)&x, 4, &bytesRead);
06/14/2009 20:08 Cholik#20
Quote:
Originally Posted by schlurmann View Post
So ein Quatsch. Der buffer Parameter ist ein Zeiger auf ein void. ([Only registered and activated users can see links. Click Here To Register...])

Code:
int x = 0;
unsigned int bytesRead = 0;

ReadProcessMemory(rhdl, (void*)Pos_x, (void*)&x, 4, &bytesRead);
Feeeeiiiiiinnnnn!

Glaub damit ist das Problem gegessen und genügend Lösungsmöglichkeiten genannt.
06/14/2009 20:14 Gianotti#21
XD cholik okay kannst nun closen da es ja wegen dieser großartigen hilfe geht ;)
06/14/2009 20:23 schlurmann#22
Quote:
Originally Posted by Cholik View Post
Feeeeiiiiiinnnnn!

Glaub damit ist das Problem gegessen und genügend Lösungsmöglichkeiten genannt.
Ich sehe zwei Lösungsmöglichkeiten, eine davon ist ineffizient.
06/14/2009 20:30 Gianotti#23
Quote:
Originally Posted by schlurmann View Post
Ich sehe zwei Lösungsmöglichkeiten, eine davon ist ineffizient.
Quote:
Dear Gianotti,

schlurmann has just replied to a thread you have subscribed to entitled - [C#]wert einer adresse ausgeben - in the epvp*coders forum of elitepvpers.

This thread is located at:
[Only registered and activated users can see links. Click Here To Register...]

Here is the message that has just been posted:
***************

---Quote (Originally by Cholik)---
Feeeeiiiiiinnnnn!

Glaub damit ist das Problem gegessen und genügend Lösungsmöglichkeiten genannt.
---End Quote---
Ich sehe zwei Lösungsmöglichkeiten, eine davon ist dumm.
ineffizient und dumm sind nicht dieselben sachen . ich finde es jedoch einfacher zu konvertieren als mich mit zeigern rumzuschlagen ;)

ich finde choliks methode besser.

@schlurmann was regst du dich eiegntlich so auf . beides tut dasselbe also warum aufregen :confused:
06/14/2009 20:37 ms​#24
Quote:
Originally Posted by Gianotti View Post
ich finde es jedoch einfacher zu konvertieren als mich mit zeigern rumzuschlagen ;)
Du musst ohnehin Zeiger benutzen. Entweder du nimmst einen Zeiger auf ein Array oder gleich einen Zeiger auf einen 32Bit-Typen. Letzteres ist dabei wirklich effizienter (oder welchen Begriff auch immer man nehmen will :p) als mit Arrays, da man nichts konvertieren muss sondern der Wert direkt in der Variable steht.

Wozu einen Brief in 4 Teile schneiden, wenn man ihn doch auch einfach 2 Mal falten kann?
06/14/2009 20:42 schlurmann#25
Ich rege mich nicht auf. Aufregen sieht anders aus.

Richtig, dumm und ineffizient sind verschieden, deshalb habe ich es auch editiert.

Zeiger sind toll und man muss sich keineswegs mit ihnen herumschlagen, sie ermöglichen vieles und sind leicht zu handhaben.

Mal davon abgesehen wird in dem von mir geposteten Code kein Zeiger genutzt, nur der Adressoperator. Und dass die WinAPI Zeiger als Parameter benutzt, dafür kann ich nichts. ;)

Auch wenn man dir in C# von Zeigern abrät und sie sogar als "unsafe" beschimpft (was sie in den Händen von fähigen Leuten ja keineswegs sind), funktioniert im Hintergrund trotzdem alles über Zeiger, und gerade wenn du im Bereich Gamehacking tätig bist, musst du einfach Wissen wie ein Zeiger funktioniert und wie du ihn benutzt. Denn ein byte (unsigned char) Array zu missbrauchen, nur damit du den "&" Operator umgehen kannst, ist idiotisch.

Code:
//Übrigens:
int arr[3] = {1, 2, 3};
(arr == &arr) // == true
06/14/2009 22:31 RDTSC#26
blah blah blah
06/14/2009 22:52 Gianotti#27
dann tut es mir leid was ich gesagt habe :/

rtdctk XD wie auch immer danke für die aufklärung
06/14/2009 22:55 Adroxxx#28
Gelöst -> #closed