Hi,
Habe ich ein Fehler in der Funktion?
Ich bekomme immer einen leeren String zurück...
Code
public static string ReadString(IntPtr address, int size)
{
byte[] bytes = new byte[size];
uint readed = 0;
if (ReadProcessMemory(handle, address, bytes, (uint)size, ref readed))
{
return Encoding.UTF8.GetString(bytes).Split(new char[] { '\0' })[0]; ;
}
return "";
}
Funktionsaufruf/Test in SAMP
globs.dwSAMP ist korrekt...
Code
public static string Line(int line = 0)
{
IntPtr _IsInChat_PTR = IntPtr.Zero;
IntPtr dwAdress = globs.dwSAMP + 0x21A0E4;
if (!Memory.ReadMemory(dwAdress, out IntPtr msg_ptr))
return "-1";
int Line_oSET = 0x152 + ((99 - line) * 0xFC);
string msg = Memory.ReadString(msg_ptr + Line_oSET, 144);
return msg;
}
Alles anzeigen
Mit Ausgaben:
Code
public static string Line(int line = 0)
{
IntPtr _IsInChat_PTR = IntPtr.Zero;
IntPtr dwAdress = globs.dwSAMP + 0x21A10C;
Console.WriteLine("dwAd: " + dwAdress);
if (!Memory.ReadMemory(dwAdress, out IntPtr msg_ptr))
return "-1";
Console.WriteLine("msg_ptr: " + msg_ptr);
int Line_oSET = 0x152 + ((99 - line) * 0xFC);
Console.WriteLine("LineOffset: " + Line_oSET);
string msg = Memory.ReadString(msg_ptr + Line_oSET, 144);
Console.WriteLine("msg: " + msg);
return msg;
}
Alles anzeigen
Output:
globs.dwSAMP ist korrekt...
Wenn jemand eine Idee hat, raus damit
Wenn ich eine Lösung in den nächsten Minuten finde, editiere ich diesen Beitrag!
Gruß
Lösung:
Encoding.UTF8.GetString(bytes).Split(new char[] { '\0' })[0];
zu
Encoding.UTF7.GetString(bytes).Split(new char[] { '\0' })[0];