PDA

View Full Version : سوال: دلیل خطای Object reference not set to an instance of an object چیست؟



debugger
پنج شنبه 08 مهر 1389, 08:27 صبح
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.NullReferenceException: Object reference not set to an instance of an object.
at Travian_Spammer.Form1.Form1_Load(Object sender, EventArgs e) in F:\yashar source\Travian Spammer Closed\Travian Spammer\Travian Spammer\Form1.cs:line 125
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at System.Windows.Forms.Form.OnCreateControl()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Mes sage& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.O nMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.W ndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
Travian Spammer
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Program%20Files/Travian%20Spammer/Application.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Management
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Management/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Management.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.


کسی میدونه چطوری میشه این ارور حل کرد . ؟؟؟؟؟؟

محسن شامحمدی
پنج شنبه 08 مهر 1389, 10:24 صبح
ای کاش کمی بیشتر توضیح می دادید.
سورس قسمتی که این ارور رو می ده رو می ذاشتید.
در کل اینطوری که من فهمیدم

Object reference not set to an instance of an objectاین ارور وقتی پیش میاد که یک شی را با دستور new تعریف نکرده اید.
مثلا بجای یانکه بنویسید
textbox a=new textbox();
a.text="debugger";



نوشتید:

textbox a;
a.text="debugger";


دقت کردید که توی دستور دوم از کلمه کلیدی new استفاده نشده به همین خاطر ارور می ده

debugger
پنج شنبه 08 مهر 1389, 10:43 صبح
ممنونم

اقا این ارور در سیستم من پیش نیومده . من برنامه را کامپایل کردم و دادم به مشتری اونم موقع اجرا با این ارور مواجه شده

در ارور نوشته لاین 125

من رفتم لاین 125 و این کد ها را نوشتم



string mac = "";
ManagementClass diskClass = new ManagementClass("Win32_LogicalDisk");
ManagementObjectCollection disks = diskClass.GetInstances();
foreach (ManagementObject disk in disks)
{
mac = disk["VolumeSerialNumber"].ToString();
break;
}


با توجه به گفته شما حتما ارور بخاطر ManagementClass هست که new شده ؟؟؟ تست می کنم ببینم مشکل حل میشه یا نه ؟؟

تو سایت مایکروسافت نوشته باید JIT Debugging را غیر فعال کنید و دو تا کلید رجیستری هم برای این کار گذاشته که باید اون کلید ها را از رجیستری پاک کنیم

در جایی دیگه نوشته بخاطر دات نت فریم ورک 2 هست باید طرف دات نت فریم ورک 2 نصب کند

ولی من همه این کار ها را کردم نشد

حالا جواب شما را تست می کنم و نتیجه را میگم

M.YasPro
پنج شنبه 08 مهر 1389, 13:14 عصر
سلام
به احتمال زیاد


disk["VolumeSerialNumber"]

وجود نداره و مقدارش null هست .
موفق باشید .

debugger
پنج شنبه 08 مهر 1389, 13:31 عصر
مقدارش اگر نال باشه هم باید برنامه اجرا بشه چون در ادامه کد ها نال بودنش بررسی میشه

هنوز جواب دوستمون را چک نکردم چون نیاز یه xpsp2 دارم

M.YasPro
پنج شنبه 08 مهر 1389, 13:46 عصر
"در ادامه" که فایده ای نداره

میلاد قاضی پور
پنج شنبه 08 مهر 1389, 15:37 عصر
شما یه بریک پوینت بذارید اون قسمت بعد همینطور که خط به خط ادامه میدید مقادیر رو در پنجره لوکال چک کنید ببینید نال هست یا نیست چرا الان نمیشه ؟

debugger
پنج شنبه 08 مهر 1389, 22:54 عصر
دوستان عزیز اوج بلند در سیستم من هیچ مشکلی نداره و بدون کوچکترین خطایی اجرا میشه در سیستم مشتری ارور میدهد

مشتری هم که در یک شهر دیگر زندگی می کند و من فایل اجرایی برنامه را بهش دادم . خالا موقع اجرا رو سیستمش ارور میدهد

دوست عزیز M.YasPro :
مقدار اون قسمت که میگی نال میشه. به هیچ وجه نال نمیشه چون سریال پارتیشن درایو c را بر میگردونه . هیچ ویندوزی نداریم که درایو هاش مثلا از D شروع بشه . تازه رو سیستم مشتری من درایو c هست

تازه کد طوری هست که فرض کنیم درایو c نباشه سریال درایو بعدی را بر میگردونه و به هیچ وجه نال نیست

مشکل یه چیزه دیگه هست . و هیچ دلیل منطقی هنوز پیدا نکردم

دوست عزیز 09111111111 روش شما هم جواب نداد

C Sharp
شنبه 10 مهر 1389, 15:35 عصر
چرا انقد اصرار دارید از سریال درایو C استفاده کنید ؟ رم ، مادر بورد و ... رو استفاده کنین

debugger
شنبه 10 مهر 1389, 23:01 عصر
چرا انقد اصرار دارید از سریال درایو C استفاده کنید ؟ رم ، مادر بورد و ... رو استفاده کنین

سریال cpu و MainBoard و .... در خیلی از سیستم ها یکسان است . یعنی از هر 10 تا سیستم دو تاش یکسانه

این بلا خیلی سرم اومده