مشکل در کلاس من 'Use of unassigned local variable 'ptr
با عرض سلام و عرض ادب .
بنده در کلاسم یه مشکل دارم لطفا راهنمایی بفرمایید
public float ReadFloat(uint Address)
{
IntPtr ptr;
byte[] buffer = new byte[8];
IntPtr lpBaseAddress = new IntPtr((long) Address);
ReadProcessMemory(this.OpenGame(), lpBaseAddress, buffer, 4, ref ptr);
return BitConverter.ToSingle(buffer, 0);
}
خطا رو در قسمت بعد از ref تو قسمت ptr نشون میده - در سایت های خارجی خوندم فک کنم باید intptr رو مقدار ش رو صفر کنم ولی خطا داد
با تشکر
نقل قول: مشکل در کلاس من 'Use of unassigned local variable 'ptr
به احتمال زیاد خطای شما در عدم همخوانی تعریف مقادیر دریافتی توسط ReadProcessMemory و روش پاس دادن مقادیر هست
ReadProcessMemory یک API هست که در kernel32.dll هست پارامتر های ورودیشو هم میشه با IntPtr تعریف کرد هم با int اون قسمت مربوط به طول بافر روهم میشه long تعریف کرد یا UInt32
اما هرطور که تعریف میشه باید همونطور هم استفاده بشه یک نوع تعریفش با انواع داده های معمولی این میشه
[DllImport("kernel32.dll")]
public static extern bool ReadProcessMemory(int processHandle,int beginReadAddress, byte[] readBuffer, int countBytesToRead, ref int coutBytesThatSuccessRead);
نوع دیگش هم با داده هایی که برای ارتباط با پوینترها استفاده میشن اینه
[DllImport("kernel32.dll")]
public static extern bool ReadProcessMemory(IntPtr processHandle,IntPtr beginReadAddress, byte[] readBuffer, UInt32 countBytesToRead, ref UInt32 coutBytesThatSuccessRead);
از ترکیب هر دو هم میشه استفاده کرد خلاصه که هرطور تعریف کردی همون طور و با همون نوع هم باید داده هاتو بهش بدی