PDA

View Full Version : Object reference not set to an instance of an object.



mammad_kami
سه شنبه 17 مهر 1386, 06:26 صبح
Object reference not set to an instance of an object.
مشکل کجاست؟؟؟؟

hdv212
سه شنبه 17 مهر 1386, 07:13 صبح
از آبجکتت نمونه سازی نکردی، بایستی از کلمه ی کلیدی new استفاده کنی :

object obj = new object();
با این کار رفرنسی که از شی object در حافظه ی stock ساخته شده، به نمونه اون در حافظه ی heap اشاره میکنه، پیغام خطای شما هم همین رو میگه، یعنی رفرنسی که از آبجکت ساخته شده، به هیچ نمونه ای از اون آبجکت اشاره نمیکنه.

mammad_kami
سه شنبه 17 مهر 1386, 07:56 صبح
از آبجکتت نمونه سازی نکردی، بایستی از کلمه ی کلیدی new استفاده کنی :

object obj = new object();
با این کار رفرنسی که از شی object در حافظه ی stock ساخته شده، به نمونه اون در حافظه ی heap اشاره میکنه، پیغام خطای شما هم همین رو میگه، یعنی رفرنسی که از آبجکت ساخته شده، به هیچ نمونه ای از اون آبجکت اشاره نمیکنه.

کجا باید از new استفاده کنم؟ یه ذره بیشتر توضیح بدین.
با تشکر.

اَرژنگ
سه شنبه 17 مهر 1386, 08:14 صبح
کجا باید از new استفاده کنم؟ یه ذره بیشتر توضیح بدین.
با تشکر.
مشکل از اینجاست که ماعِلمه غیب نداریم، لطفا بیزحمت کدتان را بفرستید که بگیم مشکل چیه.

hassan razavi
سه شنبه 17 مهر 1386, 08:19 صبح
می تونید بلافاصله همون جایی که تعریفش کردید اینکار رو بکنید

mammad_kami
سه شنبه 17 مهر 1386, 08:25 صبح
مشکل از اینجاست که ماعِلمه غیب نداریم، لطفا بیزحمت کدتان را بفرستید که بگیم مشکل چیه.

این قسمت تعریف آبجکته:

// Declare global objects...
SqlConnection objConnection;
SqlDataAdapter objDataAdapter;
DataSet objDataSet;
DataView objDataview;
CurrencyManager objCurrencyManager;
private void FillDataSetAndView()
{
// Initialize a new instance of the DataSet objects...
objDataSet = new DataSet();

// Fill the DataSet objects with data...
objDataAdapter.Fill(objDataSet, "test");

// Set the DataView object to the DataSet objects...
objDataview = new DataView(objDataSet.Tables["test"]);

// Set our CurrencyManager object to the DataView objects...
objCurrencyManager = (CurrencyManager)(this.BindingContext[objDataview]);
با تشکر.

mehdisiavashian
سه شنبه 17 مهر 1386, 08:32 صبح
ببخشید اینو داخل پرانتز فرض کنید. آقا یا خانم mammad_kami (http://barnamenevis.org/forum/member.php?u=9867) لطفا از تگهای کد و همچنین alignment در هنگام وارد کردن کد خود استفاده کنید تا خوانایی کد شما در سایت بیشتر شود.
در ضمن خطی که خطا در آن رخ داده را مشخص نکرده اید

hdv212
سه شنبه 17 مهر 1386, 09:09 صبح
دوست عزیز بهتر بود خطی رو که خطا در این اتفاق میفتاد رو مشخص میکردی، به هر حال شما از آبجکت های اولیه که اعلان کردی، این دو تا رو مقدار دهی نکردی :

SqlConnection objConnection;
SqlDataAdapter objDataAdapter;
و احتمالا در این قسمت از شما ایراد میگیره :

objDataAdapter.Fill(objDataSet, "test");

mammad_kami
سه شنبه 17 مهر 1386, 09:47 صبح
ببخشید اینو داخل پرانتز فرض کنید. آقا یا خانم mammad_kami (http://barnamenevis.org/forum/member.php?u=9867) لطفا از تگهای کد و همچنین alignment در هنگام وارد کردن کد خود استفاده کنید تا خوانایی کد شما در سایت بیشتر شود.
در ضمن خطی که خطا در آن رخ داده را مشخص نکرده اید

چه جوری؟ بلد نیستم.

mammad_kami
سه شنبه 17 مهر 1386, 09:49 صبح
دوست عزیز بهتر بود خطی رو که خطا در این اتفاق میفتاد رو مشخص میکردی، به هر حال شما از آبجکت های اولیه که اعلان کردی، این دو تا رو مقدار دهی نکردی :

SqlConnection objConnection;
SqlDataAdapter objDataAdapter;
و احتمالا در این قسمت از شما ایراد میگیره :

objDataAdapter.Fill(objDataSet, "test");

نه! زمان فرا خوانی ایراد میگیره. اینجا:
objCurrencyManager.Position += 1;

mammad_kami
سه شنبه 17 مهر 1386, 09:51 صبح
ببخشید اینو داخل پرانتز فرض کنید. آقا یا خانم mammad_kami (http://barnamenevis.org/forum/member.php?u=9867) لطفا از تگهای کد و همچنین alignment در هنگام وارد کردن کد خود استفاده کنید تا خوانایی کد شما در سایت بیشتر شود.
در ضمن خطی که خطا در آن رخ داده را مشخص نکرده اید

در ضمن فکر کنم ممد یا محمد اسم آقا باشه!!!

iranrose63
سه شنبه 17 مهر 1386, 10:07 صبح
چه جوری؟ بلد نیستم
وقتی که صفحه پاسخگویی به تایپک باز شد در کنار ابزارهای موجود یه ابزار با علامت # وجود داره که اگه رو اون کلیک کنی میتونی کدت رو داخل تگ کد که برات ایجاد میکنه بنویسی


کجا باید از new استفاده کنم؟ یه ذره بیشتر توضیح بدین.

وقتی قراره برای اولین بار از آبجکتت استفاده کنی از new استفاده کن یا میتونی اونو تو load فرمت استفاده کنی تا بلافاصله بعد از load شدن فرم تعریف بشه که البته این روش خوبی نیست



نه! زمان فرا خوانی ایراد میگیره. اینجا:
objCurrencyManager.Position += 1;

یه همچین چیزی تو کدی که فرستادی نبود کدت رو کامل بذار

PC2st
سه شنبه 17 مهر 1386, 20:27 عصر
خط زیر اشتباه است:


objCurrencyManager = (CurrencyManager)(this.BindingContext[objDataview]);

باید به BindingManagerBase تبدیلش کنید و objCurrencyManager از همین نوع باشه.

mammad_kami
چهارشنبه 18 مهر 1386, 08:59 صبح
وقتی که صفحه پاسخگویی به تایپک باز شد در کنار ابزارهای موجود یه ابزار با علامت # وجود داره که اگه رو اون کلیک کنی میتونی کدت رو داخل تگ کد که برات ایجاد میکنه بنویسی


وقتی قراره برای اولین بار از آبجکتت استفاده کنی از new استفاده کن یا میتونی اونو تو load فرمت استفاده کنی تا بلافاصله بعد از load شدن فرم تعریف بشه که البته این روش خوبی نیست


یه همچین چیزی تو کدی که فرستادی نبود کدت رو کامل بذار

کجا رو میگین؟ همچه چیزی ندیدم؟ اصلا ابزار موجودی ندیدم!

mammad_kami
چهارشنبه 18 مهر 1386, 12:36 عصر
خط زیر اشتباه است:


objCurrencyManager = (CurrencyManager)(this.BindingContext[objDataview]);

باید به BindingManagerBase تبدیلش کنید و objCurrencyManager از همین نوع باشه.

ولی من کدمو از یه sample برداشتم، فکر نکنم ایراد داشته باشه!
حالا شما میگین چی کار کنم؟ کامل بگین ممنون میشم.

PC2st
چهارشنبه 18 مهر 1386, 22:01 عصر
ولی من کدمو از یه sample برداشتم، فکر نکنم ایراد داشته باشه!
بله درست میفرمایید، اشکال از اون قسمت نبود :افسرده: (اشکال از من بود که قاطی کردم سلسله مراتب وراثتی رو!)

من هم با iranrose63 موافقم، نمونه برنامه رو کامل بگذارید بهتر است.

mammad_kami
پنج شنبه 19 مهر 1386, 04:21 صبح
از تگ کد چه جوری می تونم استفاده کنم؟ کجاست؟ پیدا نکردم.
بگید تا بتونم کدمو کامل بذارم!

iranrose63
پنج شنبه 19 مهر 1386, 08:30 صبح
وقتی روی دکمه ارسال پاسخ کلیک میکنی یه صفحه برات باز می کنه من تو شکل زیر بهت نشون دادم که چه طوری تگ کد رو بیاری

mammad_kami
پنج شنبه 19 مهر 1386, 13:39 عصر
ممنون! ولی اصلا اینجوری نیست، برای من مثل توی عکس ضمیمه ست:

PC2st
پنج شنبه 19 مهر 1386, 20:52 عصر
بخاطر تنظیمات کاربری است: به قسمت "کنترل پنل کاربر" رفته (لینکش در بالای صفحه) و در قسمت "گزینه های کاربر" و سپس از قسمت "اختیارات نویسنده"، و از قسمت "حالت نمایش ویرایشگر" از کامبو باکس روبرویش گزینه "جعبه نوشته ساده" رو به "سیستم پیشرفته WYSIWYG" تغییر بدید.

mammad_kami
پنج شنبه 19 مهر 1386, 22:28 عصر
این قسمت تعاریفم:


// Declare global objects...
SqlConnection objConnection;
SqlDataAdapter objDataAdapter;
DataSet objDataSet;
DataView objDataview;
CurrencyManager objCurrencyManager;
privatevoid FillDataSetAndView()
{
// Initialize a new instance of the DataSet objects...
objDataSet = newDataSet();
// Fill the DataSet objects with data...
objDataAdapter.Fill(objDataSet, "test");
// Set the DataView object to the DataSet objects...
objDataview = newDataView(objDataSet.Tables["test"]);
// Set our CurrencyManager object to the DataView objects...
objCurrencyManager = (CurrencyManager)(this.BindingContext[objDataview]);


اینم قسمت فراخوانی، که تو این قسمت اروره مذکورو میده:


privatevoid btnMoveNext_Click(object sender, EventArgs e)
{
// Move to the next record...
objCurrencyManager.Position += 1;
// Show the current record position...
ShowPosition();
}


از راهنمایی هاتون ممنون میشم!

PC2st
جمعه 20 مهر 1386, 15:52 عصر
آیا متد FillDataSetAndView قبل از رویداد Click (از btnMoveNext) اجرا میشه؟ مطمئن هستید؟

mammad_kami
جمعه 20 مهر 1386, 16:12 عصر
آره! بقیه آبجکتا کار میکنه!

mammad_kami
یک شنبه 22 مهر 1386, 06:01 صبح
از اساتید برنامه نویسی c# کسی نیست کمکم کنه؟!!
کدمم که گذاشتم، اگه کمکم کنید ممنون میشم.

iranrose63
دوشنبه 23 مهر 1386, 12:47 عصر
دوست عزیز همون طور که جناب PC2st.ir گفتن امکان داره که متد FillDataSetAndView قبل از قبل از رویداد کلیک btnMoveNext فراخوانی نشده باشه به کدت یه نگاهی بنداز و اونو خط به خط اجرا کن و مطمئن شو که objCurrencyManager قبل از objCurrencyManager.Position += 1 تعریف میشه وگرنه اون کدی که تو اینجا گذاشتی به نظر نمیاد ایرادی داشته باشه

mahsa_999
دوشنبه 23 مهر 1386, 16:32 عصر
سلام
من از این sample قبلا استفاده کردم و به مشکلی بر نخوردم. حتما یه جا رو اشتیاه کردین.

این قسمت کد رو چک کنید بد نیست چون تو کد هایی که send کردین ندیدم این قسمتو


{
objConnection= new SqlConnection(_connectionString);
objDataAdapter= new SqlDataAdapter(_Commandtext, objConnection);
initializecomponent();
}

mammad_kami
سه شنبه 24 مهر 1386, 15:51 عصر
سلام
من از این sample قبلا استفاده کردم و به مشکلی بر نخوردم. حتما یه جا رو اشتیاه کردین.

این قسمت کد رو چک کنید بد نیست چون تو کد هایی که send کردین ندیدم این قسمتو


{
objConnection= new SqlConnection(_connectionString);
objDataAdapter= new SqlDataAdapter(_Commandtext, objConnection);
initializecomponent();
}


الیک سلام!
بله، آبجکتامو تعریف کردم دیگه انقدم آماتور نیستم!!!!

mammad_kami
سه شنبه 24 مهر 1386, 15:58 عصر
اساتید گرامی!
مشکل من با objCurrencyManager آبجکتی که خودم از نوع CurrencyManager تعریفش کردم هست. هرجا این آبجکت فراخوانی بشه پیغام خطای مذکورو میده.(همونی که موضوع تاپیکه).
هر کس بتونه کمکم کنه ممنونش میشم!