Autor Beitrag
-CrimeTime-
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 55



BeitragVerfasst: Mi 20.10.10 22:52 
Hallo,
ich bekomme diese Fehlermeldung: "Der Operator "+" kann nicht auf Operanden vom Typ "System.IntPtr" und "int" angewendet werden."

in dieser Zeile : FirstObject = Reader.ReadUInt32((IntPtr)(ObjectManager + FirstObjectOffset));

muss dazu sagen das ich ein Anfänger bin, habe schon Gegooglet aber dort bekomme ich kaum hilfestellung zu diesem Fehler.

Gruß CrimeTime


Moderiert von user profile iconChristian S.: Topic aus Sonstiges (.NET) verschoben am Do 21.10.2010 um 09:53
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 21.10.10 06:11 
Hallo und :welcome:

Einer deiner beiden Operanden ist eben ein int und einer ein IntPtr. Also musst du den, der ein IntPtr ist auf int casten, wenn du die addieren willst.

Ich vermute aber das willst du gar nicht. Denn so addierst du nicht den Wert im IntPtr sondern den Zeiger auf die Struktur IntPtr...

Um einen Offset zu einem IntPtr zu addieren gibt es (wie sollte es auch sonst heißen) Add:
msdn.microsoft.com/d...stem.intptr.add.aspx

Also vermute ich einmal, dass ObjectManager der IntPtr ist, dann sieht das so aus:
ausblenden C#-Quelltext
1:
FirstObject = Reader.ReadUInt32(ObjectManager.Add(FirstObjectOffset));					

Für diesen Beitrag haben gedankt: -CrimeTime-
-CrimeTime- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 55



BeitragVerfasst: Do 21.10.10 13:32 
Danke dieses Problem wäre dann ja gelöst, aber es traten nun neue Probleme auf:


ausblenden C#-Quelltext
1:
ClientConnection = (IntPtr)Reader.ReadInt32(StaticClientConnection);					

Markiert "Reader.ReadInt32(StaticClientConnection);"
Fehlermeldung:
Die beste Übereinstimmung für die überladene MemoryReader.Memory.ReadInt32(System.IntPtr)-Methode hat einige ungültige Argumente.

ausblenden C#-Quelltext
1:
CurrentObject.BaseAddress = FirstObject;					

Markiert: FirstObject;

Fehlermeldung:
Der Typ "System.IntPtr" kann nicht implizit in "uint" konvertiert werden. Es ist bereits eine explizite Konvertierung vorhanden. (Möglicherweise fehlt eine Umwandlung.)

Edit:

ClientConnection = (IntPtr)Reader.ReadInt32(StaticClientConnection);

gefixed mit
ausblenden C#-Quelltext
1:
ClientConnection = (IntPtr)Reader.ReadInt32((IntPtr)StaticClientConnection);					



Edit2: Alle Fehler behoben.