گفتگو هایی در باب سی شارپ

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
خوب اینو فهمیدم که نمی شه توی if از عملوند های بیتی استفاده کرد.
چرا میشه . ولی فقط باید خروجی اش بولین باشه . مثل مثال دوم ای که زدین

خوب حالا می خوام همون مثال شما رو = فراخوانی کنه و نشون بده ولی به جای اینکه یا 10 رو نشون بده یا 20 رو عدد 30 رو نشون میده. جمع می زنه

کد:
int a = 10;
int b = 20;
int c = a | b;

MessageBox.Show(c.ToString());

آقا یه مثال ساده بیاری من رفتم قسمت 10
متوجه نشدم منظورتون چیه؟
ولی اگه منظورتون اینه که شرطی که در پست قبلی نوشتین ، درست دربیاد تا کد اجرا بشه که بسیار راحته :

کد:
if ((a | b) == 30)
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام استاد علی
درباره ی جواب پست قبلی تون ، ممنون


به احتمال زیاد UnmanagedExports تون نسخه قدیمی تری بوده، مجددا که نصبش کردید نسخه جدید رو دانلود کرده.

من ویندوز 10 رو به آخرین نسخه آپدیت کردم . همون ویژال استودیو ای که توی ویندوز 7 نصب کرده بودم رو یعنی نسخه ی 15.3 رو توی ویندوز 10 نصب کردم اما با کمال تعجب ، باز هم موقع ساخت خروجی از نوع Unmanaged ، ارور میده :


0.JPG

ولی همین نسخه رو وقتی توی ویندوز 7 نصب میکنم ، ارور نمیده !!!!!!
هر دو ، آخرین نسخه ی UnmanagedExport یعنی نسخه ی 1.2.7 رو دانلود کردن . تنها تفاوت شون توی ویندوز شون هه
هیچ جوری توی ویندوز 10 درست نمیشه؟ اصلا چه ربطی باید به ویندوز داشته باشه؟
------------
میگم این ویژال استودیوی 2017 چرا این جوری هه؟ هر یک دهم نسخه ای که افزایش پیدا میکنه ، چند گیگ بهش اضافه میشه:) توی نسخه ی 15.0 حجمش 21 گیگ بود ، توی نسخه ی 15.3 اش 24 گیگ شد و الان توی نسخه ی 15.4 اش بالای 30 گیگ شد . این جوری تا نسخه ی 16 اش بالای 90 گیگ میشه :green:
نسخه ی 15.5 اش هم امد
 
آخرین ویرایش:

SU-57

Active Member
متوجه نشدم منظورتون چیه؟

منظورم اینه شما این کد رو که از روی مثال شما زدم ببین

کد:
  int a = 10;
            int b = 20;
          
            if((a|b) == 30)

            MessageBox.Show("True");

چرا نتیجه a | b می شه 30 (چون اگه 30 نشه که true رو نشون نمیده)

اگه می خوای دقیق ببینی کد شما رو نوشتم و فقط فراخوانی کردم متغیر C را که عدد 30 رو نشون میده

کد:
int a = 10;
            int b = 20;
            int c = a | b;

            MessageBox.Show(c.ToString());

************

دو تا کد زیر بر مبنای منطقی هستن

کد:
if (a ==10 && b== 20)

کد:
if( a == 10 & b == 20)

هر دو true و false میشن که منطقی یا بولین هستن. حالا من یک کدی می خوام ساده که این حالت بیتی رو نشون بده. آخه شما گفتی که & و | عملگر بیتی حساب میشن اگه عملوند های اونا بیتی باشن یعنی عدد و نه بولین. حالا اصلا مثالی من نمی تونم برای این موضوع پیدا کنم چون توی if فقط بولین باید باشه پس این بیتی به چه دردی می خوره و کجا کاربرد داره

من مثال درباره عمگبرهای بیتی در عکس زیر می خوام

لینک

***********

در مورد سوالی که از استاد علی پرسیدی هم اینو بگم که من خودم نمیام این کار رو بکنم. مثلا photoshop 2017 که اومد ورژنش 18 بود که من دانلود کردم حالا هر از گاهی نسخه 18.1 و 18.2 و ... میاد من نمی رم دانلود کنم چون اکثرا بتا مانند هستن صبر می کنم نسخه 2018 اون بیاد که احتمالا ورژن 19 باید باشه. چون کاری که من بخوام انجام بدم با نسخه 18 هم می تونم انجام بدم و در فوتوشاپ به اون مرحله ای نرسیدم که منتظر یک ویژگی خاص باشم.

تو ویژوال استودیو هم این درسته مثلا من مطمئن هستم یک نرم افزاری که استاد علی توی visual studio 2012 می تونه بسازه هرگز من نمی تونم توی 2017 بسازم چون علمش رو ندارم. پس ملاک نرم افزار نیست. اول باید علمش رو بدست بیاریم

من می دونم که مایکروسافت یک ایده هایی برای ویندوز 10 و ویژوال استودیو داره ولی اینا هنوز به تکامل خودشون نرسیدن من فعلا سعی می کنم از آموزش های شما معلم عزیزم استفاده کنم بعدا ویندوز 10 و visual studio 2018 یا 2019 رو دانلود می کنم.
 
آخرین ویرایش:

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
منظورم اینه شما این کد رو که از روی مثال شما زدم ببین

کد:
  int a = 10;
            int b = 20;
       
            if((a|b) == 30)

            MessageBox.Show("True");

چرا نتیجه a | b می شه 30 (چون اگه 30 نشه که true رو نشون نمیده)
بخاطر اینکه هنوز عملگرهای بیتی یعنی قسمت 10 رو ندیدین :green:
پس یه توک پا برو اون رو ببین


دو تا کد زیر بر مبنای منطقی هستن

کد:
if (a ==10 && b== 20)

کد:
if( a == 10 & b == 20)

هر دو true و false میشن که منطقی یا بولین هستن. حالا من یک کدی می خوام ساده که این حالت بیتی رو نشون بده. آخه شما گفتی که & و | عملگر بیتی حساب میشن اگه عملوند های اونا بیتی باشن یعنی عدد و نه بولین.
اون تیکه از صحبت تون که بولد کردم رو دقت کنید
این نشون میده که احتمالا به نکات "الویت عملگرها" ، خوب دقت نکردید . دوباره به مبحث "الویت عملگرها" در همین قسمت 9 ، دقت کنید . احتمالا فکر میکنید که در مثال بالا ، مثلا در مثال :

کد:
if (a ==10 && b== 20)
چون دو طرفِ عملگر && ، عملوندهای 10 (سمت چپ) و 20 (سمت راست) اومد ، پس عملگر بیتی هست و بنابراین خروجی باید عدد باشه . نه این طور نیست . در مثال بالا ، الویت عملگر == از عملگر && بیشتر هست . یعنی اول ، هر جایی که عملگر == اومد ، طرفین اش حساب میشن و بعد سر وقت عملگر && میره . یعنی اول خروجی a==10 رو حساب میکنه و خروجی اش true میشه . بعد خروجی b==20 رو حساب میکنه و این هم true میشه . حالا دو تا true رو با هم اند میکنه یعنی true & true که خروجی اش true میشه . چون آخرین خروجی ، true شد ، بدنه ی if اجرا میشه
دومین مثال که عملگر تک اند & داره هم همینطوره
بنابراین در این دو مثال ، عملگر & ، عملگر بیتی نیست که شما انتظار خروجی عدد ازش داشته باشین . بلکه عملگر منطقی هست و خروجی بولین داره


حالا اصلا مثالی من نمی تونم برای این موضوع پیدا کنم چون توی if فقط بولین باید باشه پس این بیتی به چه دردی می خوره و کجا کاربرد داره
بله
اصلا در همه ی شرط ها ، خروجی نهایی ، باید بولین باشه پس خروجی نهایی هیچ وقت عملگر بیتی رو نمیپذیره
اما اینکه کاربرد عملگر بیتی کجاست ، توی قسمت 11 و همینطور در قسمت 47 و ... متوجه میشین . کاربردش در enum ها و رویدادهای کیبرد و خیلی جاهای دیگه هست


در مورد سوالی که از استاد علی پرسیدی هم اینو بگم که من خودم نمیام این کار رو بکنم. مثلا photoshop 2017 که اومد ورژنش 18 بود که من دانلود کردم حالا هر از گاهی نسخه 18.1 و 18.2 و ... میاد من نمی رم دانلود کنم چون اکثرا بتا مانند هستن صبر می کنم نسخه 2018 اون بیاد که احتمالا ورژن 19 باید باشه. چون کاری که من بخوام انجام بدم با نسخه 18 هم می تونم انجام بدم و در فوتوشاپ به اون مرحله ای نرسیدم که منتظر یک ویژگی خاص باشم.

تو ویژوال استودیو هم این درسته مثلا من مطمئن هستم یک نرم افزاری که استاد علی توی visual studio 2012 می تونه بسازه هرگز من نمی تونم توی 2017 بسازم چون علمش رو ندارم. پس ملاک نرم افزار نیست. اول باید علمش رو بدست بیاریم

من می دونم که مایکروسافت یک ایده هایی برای ویندوز 10 و ویژوال استودیو داره ولی اینا هنوز به تکامل خودشون نرسیدن من فعلا سعی می کنم از آموزش های شما معلم عزیزم استفاده کنم بعدا ویندوز 10 و visual studio 2018 یا 2019 رو دانلود می کنم.
نسخه ی 15.4 شو دیدی؟ 30 گیگ حجم داره . کل نرم افزارهای من 30 گیگ نمیشن :green:
البته توی نسخه های غیر اصلی (مثلا 15.1 و 15.2 و ...) علاوه بر مختصر ویژگی های جدید ، معمولا رسم بر اینه که باگ های بخش های مختلف نرم افزار، رو اصلاح میکنن
 

the_king

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




من ویندوز 10 رو به آخرین نسخه آپدیت کردم . همون ویژال استودیو ای که توی ویندوز 7 نصب کرده بودم رو یعنی نسخه ی 15.3 رو توی ویندوز 10 نصب کردم اما با کمال تعجب ، باز هم موقع ساخت خروجی از نوع Unmanaged ، ارور میده :


مشاهده پیوست 111978

ولی همین نسخه رو وقتی توی ویندوز 7 نصب میکنم ، ارور نمیده !!!!!!
هر دو ، آخرین نسخه ی UnmanagedExport یعنی نسخه ی 1.2.7 رو دانلود کردن . تنها تفاوت شون توی ویندوز شون هه
هیچ جوری توی ویندوز 10 درست نمیشه؟ اصلا چه ربطی باید به ویندوز داشته باشه؟
ممکنه یه باگ در خود Extension باشه و یا وابستگی به یه مسیر خاص که با تغییر ویندوز معتبر نیست.
حجم ستاپ Office 2013 64-bit کمتر از 1 گیگابایت ئه، اما تا حالا بیشتر از 450 مورد آپدیت براش اومده که مجموع حجم شون برای همون نسخه 64 بیتی 27 گیگابایت ئه. وقتی برای یک نرم افزار 1 گیگابایتی 27 گیگابایت آپدیت بیاد دیگه نباید از افزایش حجم چند گیگابایت ناقابل تعجب کنید. یک قابلیت یا Framework یا Component جدید رو در بخش های مختلفی استفاده می کنند. وقتی یک مورد جدیدی اضافه میشه باید در همه بخش ها پشتیبانی اش اضافه بشه که در نتیجه حجم مجموعه مضاعف افزایش پیدا می کنه.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
ممکنه یه باگ در خود Extension باشه و یا وابستگی به یه مسیر خاص که با تغییر ویندوز معتبر نیست.
حجم ستاپ Office 2013 64-bit کمتر از 1 گیگابایت ئه، اما تا حالا بیشتر از 450 مورد آپدیت براش اومده که مجموع حجم شون برای همون نسخه 64 بیتی 27 گیگابایت ئه. وقتی برای یک نرم افزار 1 گیگابایتی 27 گیگابایت آپدیت بیاد دیگه نباید از افزایش حجم چند گیگابایت ناقابل تعجب کنید. یک قابلیت یا Framework یا Component جدید رو در بخش های مختلفی استفاده می کنند. وقتی یک مورد جدیدی اضافه میشه باید در همه بخش ها پشتیبانی اش اضافه بشه که در نتیجه حجم مجموعه مضاعف افزایش پیدا می کنه.
ممنون
الان متوجه شدم
توی نسخه ی 15.3 ای که در ویندوز 10 نصب کردم ، فقط با دات نت فریم وورک 3.5 مشکل نداره و ارور نمیده ولی توی دات نت 4 و 4.6 و یا بالاتر ارور میده . اما توی همین نسخه ی 15.3 ای که در ویندوز 7 نصب کردم ، حتی با دات نت 4.6 هم مشکلی نداره
 

SU-57

Active Member
(عکس رو یادم رفت که بذارم الان گذاشتم)

آقا سجاد با توجه به جوابی که در سوال قبلی دادی فکر می کنم لازمه یه توضیحی بدم.
شما خودت از اول گفتی که سی شارپ رو در حد مبتدی و متوسط بلد هستی بنابراین من هم اگه سوالی اینجا مطرح می کنم فقط یک سواله که برام ایجاد شده و می دونم ممکنه شما بدونی و ممکنه ندونی و انتظار من هم از شما همون سطح متوسطه نه بیشتر و اگه جواب سوالی رو بلد نبودی مهم نیست وقت زیاده بعدا یا خودم یاد می گیرم یا شما یاد می گیری برای ما میگی. بنابراین همین چیزهایی که داری به امثال من رایگان یاد میدی از سرمون هم زیاده. من شما رو مثل برادر خودم می دونم که داریم با هم گفتگو می کنیم. امیدوارم منظورم رو متوجه شده باشی

*********

من قسمت 10 رو دیدم و اینجا رو متوجه نشدم.

عکس

مثلا شما گفتی که در 4 | 6 اون عملگر | چون عملوندهاش بیتی هست مثل & در منطقی رفتار می کنه یعنی ترکیب می کنه اما شما در مثال زیر اومدی T | F رو T گرفتی که من انتظار داشتم چون بیتی هست برعمس عمل کنه و به صورت T & F در بیاد و در نتیجه F بشه (همونجا که فلش زدی رو به پایین در عکس زیر) البته می دونم که به صورت نرمال T | F چون منطقی هستن می شه T اما شما گفتی برعکس می شه

عکس

************

همچنین شما در عکس اول گفتی که در 7 ^ 5 عدد 7 از 5 کم می شه( کم کردن) اما من کد زیر رو امتحان کردم با هم جمع شد

کد:
int a = 4 ^ 50;
MessageBox.Show(a.ToString());

*******

اسم فارسی و انگلیسی ~ چیه چون گفتی نات نقیض بعد توی یک سایت دیگه عملگر ! رو نوشته بود نقیض می کنه. کاربرد ~ هم معلون نیست چون 4 میدی می کنه منفی 5، 20 میدی می کنه منفی 21 ، 100 میدی می کنه منفی 101. اگه هدفش قرینه کردنه باید بده منفی 100.

*******

البته می دونم که دونستن خیلی از این ها کاربردی نداره مثلا ما که نمیاییم دستی حساب کنیم میدیم خود ویژوال جواب رو میده ولی به نظرم اگه آدم بدونه چطوری حساب می شه بهتره. اگه جواب رو بلد نبودی مهم نیست من میرم قسمت 11. انقدر هم خوب یاد دادی که توی یک ساعت فقط همین 2 سوال برام ایجاد شد.
 
آخرین ویرایش:

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
آقا سجاد با توجه به جوابی که در سوال قبلی دادی فکر می کنم لازمه یه توضیحی بدم.
شما خودت از اول گفتی که سی شارپ رو در حد مبتدی و متوسط بلد هستی بنابراین من هم اگه سوالی اینجا مطرح می کنم فقط یک سواله که برام ایجاد شده و می دونم ممکنه شما بدونی و ممکنه ندونی و انتظار من هم از شما همون سطح متوسطه نه بیشتر و اگه جواب سوالی رو بلد نبودی مهم نیست وقت زیاده بعدا یا خودم یاد می گیرم یا شما یاد می گیری برای ما میگی. بنابراین همین چیزهایی که داری به امثال من رایگان یاد میدی از سرمون هم زیاده. من شما رو مثل برادر خودم می دونم که داریم با هم گفتگو می کنیم. امیدوارم منظورم رو متوجه شده باشی

*********
ممنون گلپسر . شما هم مثل برادر منی

من قسمت 10 رو دیدم و اینجا رو متوجه نشدم.

عکس

مثلا شما گفتی که در 4 | 6 اون عملگر | چون عملوندهاش بیتی هست مثل & در منطقی رفتار می کنه یعنی ترکیب می کنه
لینک عکس نیست. لازم به عکس گذاشتن هم نیست . فقط زمان رو بگین که توی کدوم ساعت و کدوم دقیقه هست ، خودم چک میکنم
اون موقع خودم دقیق نمیدونستم . ترکیب نمیکنه (هر چند خودم گفتم) . در واقع ، عملگر اور ، در شرایطی ، عمل جمع رو انجام میده و در شرایط دیگه ، عدد بزرگتر رو برمیگردونه . چون تا اون موقع شرایطش رو نمیدونستم ، حس میکردم ، میخواستم حس کلی ام رو بگم پس گفتم که ترکیب میکنه (حالا شرایط دیگه داشته باشه یا نه ، نمیدونم) . فقط میتونم بگم که قسمت 10 و 11 ، نکات زیادی داشتن که بعدا فهمیدم و تا جایی که بلد بودم (همونطور که قبلا گفتم) ، در قسمت 40 و مخصوصا 47 ، نکات تکمیلی این دو قسمت (قضیه ی همین شرایط و ...) رو دادم . یعنی حتما بعد از دیدن قسمت 10 و 11 ، برای رفع ابهام های زیادی که از این دو قسمت پیش میاد ، همون تیکه از قسمت های 40 و مخصوصا 47 که قبلا زمانش رو گفتم ، ببینید
اگه بیشتر از اون براتون سئوالی پیش اومد (بعد از دیدن 40 و 47) ، من بلد نیستم . باید از استاد علی بپرسین
این جوری هم بخوام گفته هام رو ویرایش کنم و متنی توضیح بدم ، خیلی طول میکشه و هم تکراری میشه چون توی قسمت 40 و 47 گفتم . پس اول ، اون قسمت های 40 و 47 رو نگاه کنین (مخصوصا 47) ، خیلی از ابهام هاتون ان شاء ا... رفع میشه


اما شما در مثال زیر اومدی T | F رو T گرفتی که من انتظار داشتم چون بیتی هست
عکس ، لینک نداره
اما T | F که بیتی نیست . اگه عدد هم بوده باشه و هر عددش رو به true و false تبدیل کرده باشیم ، دیگه اون true و یا false ، بیتی حساب نمیشن . کلا هر جا true و false بیان (حتی اگه یه عدد رو به T و F تبدیل کرده باشیم) ، عملوندش منطقی و پس عملگرشم منطقی میشه یعنی خروجی true یا false داره


برعمس عمل کنه و به صورت T & F در بیاد و در نتیجه F بشه (همونجا که فلش زدی رو به پایین در عکس زیر) البته می دونم که به صورت نرمال T | F چون منطقی هستن می شه T اما شما گفتی برعکس می شه
منظورم توی قضیه ی عدد بود که برعکس میشه . نه اینکه عدد رو دونه دونه به منطقی (T یا F) تبدیل کنین و بعد عملگرش رو هم تغییر بدین .
هر چند ، گفتم که این منظورم که گفته بودم ، اشتباست و توضیح و دلیل کامل شو در قسمت 47 دادم (اونجا را ببینین ، متوجه میشین)


همچنین شما در عکس اول گفتی که در 7 ^ 5 عدد 7 از 5 کم می شه( کم کردن) اما من کد زیر رو امتحان کردم با هم جمع شد

کد:
int a = 4 ^ 50;
MessageBox.Show(a.ToString());
5 ^ 7 یا 50 ^ 4 ؟!
کدوم دقیقه گفتم؟
اگه گفتم ، اشتباه گفتم
جواب و دلیل هر دو رو در قسمت 47 میگیرین


اسم فارسی و انگلیسی ~ چیه چون گفتی نات نقیض بعد توی یک سایت دیگه عملگر ! رو نوشته بود نقیض می کنه. کاربرد ~ هم معلون نیست چون 4 میدی می کنه منفی 5، 20 میدی می کنه منفی 21 ، 100 میدی می کنه منفی 101. اگه هدفش قرینه کردنه باید بده منفی 100.
اسمش رو نمیدونم . من همیشه ~ و ! رو قاتی میکنم اسماشو چون قبلا که لوا کار میکردم ، عملگر ~ در لوا برابر ! در سی شارپ هه
عملگر ~ رو فراموش کردم ولی عملگر ! نات نقیض هه . کارش نقیض و برعکس کردن هه . اون یه عدد پایین و بالاتر میشه ، بخاطر صفر هست . قضیه شو توی یکی از قسمت های احتمالا مربوط به عملگر بیتی گفتم (همون قسمت های 10 و 11 باید گفته باشم)
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
عکسها رو یادم رفته بود که گذاشتم شما دوباره پست رو ببین. قسمت 10 دقیقه 40 و 29 ثانیه

کلا گفتم دیگه
قسمت 10 و 11 و 40 و مخصوصا 47 رو پشت سر هم ببینین به جواب هاتون میرسین (قبلا زمان های قسمت های 40 و 47 رو گفتم)
 

Salar1359

New Member
با سلام من یه نرم افزار نوشتم که از بانک اطلاعتی خود سی شارپ اسفاده کردم هم فایل mdfوlogتو پوشه دیباگ ریختم هم ادرس دیتا بیس تغییر دادم |dtatdirectory|اما بازم تو سیستم دیگه جواب نمیده
 

the_king

مدیرکل انجمن
با سلام من یه نرم افزار نوشتم که از بانک اطلاعتی خود سی شارپ اسفاده کردم هم فایل mdfوlogتو پوشه دیباگ ریختم هم ادرس دیتا بیس تغییر دادم |dtatdirectory|اما بازم تو سیستم دیگه جواب نمیده
قضیه اینه، اون DataDirectory صرفا یک مقدار ئه که قراره در فایل config کنار فایل اجرایی ثبت شده باشه. پروژه های ASP.NET یک فایل با پسوند config دارند که اگه DataDirectory رو داخلش ثبت کرده باشید مقدارش از اونجا خونده میشه. چه کاربردی داره؟ کاربردش اینه که مسیر پایگاه داده مستقل از کد برنامه باشه و اگر خواستید مسیر پایگاه داده رو در سیستمی تعیین کنید نیازی به کامپایل مجدد پروژه نباشه و صرفا فایل متنی config ویرایش بشه.
اما کی مسئول تعیین شدن اون مقدار ئه؟ اصولا پروژه باید Setup داشته باشه، وقتی Setup روی سیستمی نصبش می کنه اون مسیر داخل config رو بر اساس مسیر نصب ویرایش می کنه. اما شما اگر بخواهید Setup ای نداشته باشید و همینطوری روی سیستمی کپی اش کنید دیگه این اتفاق نمی افته و مسیر درستی داخل config ثبت نمیشه.
پس فکر نکنید که DataDirectory یک سیستم هوشمند شناسایی مسیر پایگاه داده داره یا توانایی خاصی در جابجایی خودکار مسیر پایگاه داده داره. فقط یک متغیر ئه که مقدارش در config ثبت میشه. وقتی این مقدار براتون درست تنظیم میشه که برای پروژه تون یک Setup ئه MSI یا ClickOnce ساخته باشید. با ویژوال استدیو مشکلی پیدا نمی کنید چون اونقدر هوشمند هست که داخل debug رو چک کنه ولی وقتی فقط فایلها رو همینطوری کپی می کنید روی یک سیستم دیگه نباید انتظار داشته باشید که مقدارش در config خود به خود عوض بشه.
 

Salar1359

New Member
قضیه اینه، اون DataDirectory صرفا یک مقدار ئه که قراره در فایل config کنار فایل اجرایی ثبت شده باشه. پروژه های ASP.NET یک فایل با پسوند config دارند که اگه DataDirectory رو داخلش ثبت کرده باشید مقدارش از اونجا خونده میشه. چه کاربردی داره؟ کاربردش اینه که مسیر پایگاه داده مستقل از کد برنامه باشه و اگر خواستید مسیر پایگاه داده رو در سیستمی تعیین کنید نیازی به کامپایل مجدد پروژه نباشه و صرفا فایل متنی config ویرایش بشه.
اما کی مسئول تعیین شدن اون مقدار ئه؟ اصولا پروژه باید Setup داشته باشه، وقتی Setup روی سیستمی نصبش می کنه اون مسیر داخل config رو بر اساس مسیر نصب ویرایش می کنه. اما شما اگر بخواهید Setup ای نداشته باشید و همینطوری روی سیستمی کپی اش کنید دیگه این اتفاق نمی افته و مسیر درستی داخل config ثبت نمیشه.
پس فکر نکنید که DataDirectory یک سیستم هوشمند شناسایی مسیر پایگاه داده داره یا توانایی خاصی در جابجایی خودکار مسیر پایگاه داده داره. فقط یک متغیر ئه که مقدارش در config ثبت میشه. وقتی این مقدار براتون درست تنظیم میشه که برای پروژه تون یک Setup ئه MSI یا ClickOnce ساخته باشید. با ویژوال استدیو مشکلی پیدا نمی کنید چون اونقدر هوشمند هست که داخل debug رو چک کنه ولی وقتی فقط فایلها رو همینطوری کپی می کنید روی یک سیستم دیگه نباید انتظار داشته باشید که مقدارش در config خود به خود عوض بشه.
 

Salar1359

New Member
با سلام من فراموش کردم بگم که stupe رو درست کردم و بعد از نصب روی سیستم دیگه فقط بانک اطلاعاتی ارور میده
 

the_king

مدیرکل انجمن
با سلام من فراموش کردم بگم که stupe رو درست کردم و بعد از نصب روی سیستم دیگه فقط بانک اطلاعاتی ارور میده
پیغام خطا و دلیل خطا مهمه، ارور که صد جور ممکنه ارور بده که هر کدوم دلیل متفاوتی داره.
اول Connection String رو چک کنید. اسم Instance اون سروری که بهش متصل میشید (Data Source) باید درست باشه، فرضا اگه مسیرش MY-PC\SQLEXPRESS باشه فقط و فقط روی سیستم ای اتصال برقرار میشه که اسم سیستم اش MY-PC باشه، یا فرضا اگه . باشه (یک نقطه خالی) باید SQL Server ای با Default Instance نصب شده باشه وگرنه کار نمی کنه. نسخه SQL Server یا SQL Server Express باید همون نسخه یا نسخه جدید تری باشه، SQL Server نسخه قدیمی تر پایگاه داده نسخه های جدیدتر رو باز نمی کنه.
بعد هم که باید چک کنید که Service ئه SQL Server در حال Running باشه و Disable نباشه و ...
 

Salar1359

New Member
پیغام خطا و دلیل خطا مهمه، ارور که صد جور ممکنه ارور بده که هر کدوم دلیل متفاوتی داره.
اول Connection String رو چک کنید. اسم Instance اون سروری که بهش متصل میشید (Data Source) باید درست باشه، فرضا اگه مسیرش MY-PC\SQLEXPRESS باشه فقط و فقط روی سیستم ای اتصال برقرار میشه که اسم سیستم اش MY-PC باشه، یا فرضا اگه . باشه (یک نقطه خالی) باید SQL Server ای با Default Instance نصب شده باشه وگرنه کار نمی کنه. نسخه SQL Server یا SQL Server Express باید همون نسخه یا نسخه جدید تری باشه، SQL Server نسخه قدیمی تر پایگاه داده نسخه های جدیدتر رو باز نمی کنه.
بعد هم که باید چک کنید که Service ئه SQL Server در حال Running باشه و Disable نباشه و ...
 

Salar1359

New Member
با سلام من از نرم افزار centurion setup استفاده کردم و ارور که تو سیستم میده میگه که اکسیول سرور پیدا نمیکنه ممنون میشم اگه راهنمایی کنید
 

the_king

مدیرکل انجمن
با سلام من از نرم افزار centurion setup استفاده کردم و ارور که تو سیستم میده میگه که اکسیول سرور پیدا نمیکنه ممنون میشم اگه راهنمایی کنید
حالت های کلی اش اینه :
1) روی سیستم SQL Server نصب نشده.
2) روی سیستم SQL Server نصب شده ولی Service اش Disable ئه یا Start نشده، ترکیب کلیدی کلید ویندوز + کلید R را فشار دهید (
WinR.gif
) تا پنجره Run باز بشه، عبارت services.msc را داخل پنجره Run تایپ کنید و OK کنید. پنجره Services ویندوز باز میشه. سرویس های SQL Server اونجا باید باشه.
مثلا SQL Server (SQLEXPRESS) و SQL Server (MSSQLSERVER) و ... در ستون Status شون مشخصه که Started شدن یا نه. اگه فرضا SQL Server (SQLEXPRESS) در حالت Started نباشه نمیشه با SQL Server Express ارتباط برقرار کرد. اگه روی اون سرویس راست کلیک کردید و Start کردید ولی خطا داد و اجرا نشد، ایرادی در نصب SQL Server هست که خودش یک بحث مفصله، اعم از بد نصب کردن و تداخل با نسخه های قبلی نصب شده و تنظیمات اشتباه موقع نصب و دسترسی های نامناسب در ویندوز و ...
3) روی سیستم SQL Server نصب شده و سرویس اش هم در حال اجرا هست، ولی Connection String میخواد با Instance ای ارتباط برقرار کنه که روی این سیستم معتبر نیست، فرضا موقع نصب کردن SQL Server از Default Instance استفاده شده ولی در Connection String بجای . (نقطه) یک اسم دیگه بکار برده شده یا اسم Instance ای مثل SQLEXPRESS ثبت شده ولی در Connection String اسم دیگری مثل MSSQLSERVER بکار برده میشه یا فرضا اسم کامپیوتر PC1 ئه ولی توی Connection String از اسم ALIREZA-PC استفاده شده. اینا همه شون باعث میشه که سرور مورد نظر پیدا نشه.

اگه بخواهید Connection String تنظیم شده رو ببینید در ویژوال استدیو منوی Project گزینه ...project Name} Properties} زبانه Settings می توانید مقدارش رو به عنوان یک متغیر Save شده ببینید. اصولا اینکه Connection String یک مقدار ثابت باشه و کاربر برنامه تون نتونه از داخل برنامه Connection String رو عوض کنه یک عیب بزرگ ئه. بهتره که هر برنامه ای می نویسید قبل از اتصال به پایگاه داده یک امکانی به کاربر بدید که جایی در فرمی مقدار Connection String رو ببینه و ویرایش کنه. در خیلی از پروژه ها این مشکل اساسی هست، دلیلش هم اینه که خود ویژوال استدیو برای ساده کردن اینجور ویرایش کردن ها قابلیتی اضافه نکرده و برنامه نویس ها هم ازش غافل میشن.
 

Salar1359

New Member
ممنک
حالت های کلی اش اینه :
1) روی سیستم SQL Server نصب نشده.
2) روی سیستم SQL Server نصب شده ولی Service اش Disable ئه یا Start نشده، ترکیب کلیدی کلید ویندوز + کلید R را فشار دهید (
WinR.gif
) تا پنجره Run باز بشه، عبارت services.msc را داخل پنجره Run تایپ کنید و OK کنید. پنجره Services ویندوز باز میشه. سرویس های SQL Server اونجا باید باشه.
مثلا SQL Server (SQLEXPRESS) و SQL Server (MSSQLSERVER) و ... در ستون Status شون مشخصه که Started شدن یا نه. اگه فرضا SQL Server (SQLEXPRESS) در حالت Started نباشه نمیشه با SQL Server Express ارتباط برقرار کرد. اگه روی اون سرویس راست کلیک کردید و Start کردید ولی خطا داد و اجرا نشد، ایرادی در نصب SQL Server هست که خودش یک بحث مفصله، اعم از بد نصب کردن و تداخل با نسخه های قبلی نصب شده و تنظیمات اشتباه موقع نصب و دسترسی های نامناسب در ویندوز و ...
3) روی سیستم SQL Server نصب شده و سرویس اش هم در حال اجرا هست، ولی Connection String میخواد با Instance ای ارتباط برقرار کنه که روی این سیستم معتبر نیست، فرضا موقع نصب کردن SQL Server از Default Instance استفاده شده ولی در Connection String بجای . (نقطه) یک اسم دیگه بکار برده شده یا اسم Instance ای مثل SQLEXPRESS ثبت شده ولی در Connection String اسم دیگری مثل MSSQLSERVER بکار برده میشه یا فرضا اسم کامپیوتر PC1 ئه ولی توی Connection String از اسم ALIREZA-PC استفاده شده. اینا همه شون باعث میشه که سرور مورد نظر پیدا نشه.

اگه بخواهید Connection String تنظیم شده رو ببینید در ویژوال استدیو منوی Project گزینه ...project Name} Properties} زبانه Settings می توانید مقدارش رو به عنوان یک متغیر Save شده ببینید. اصولا اینکه Connection String یک مقدار ثابت باشه و کاربر برنامه تون نتونه از داخل برنامه Connection String رو عوض کنه یک عیب بزرگ ئه. بهتره که هر برنامه ای می نویسید قبل از اتصال به پایگاه داده یک امکانی به کاربر بدید که جایی در فرمی مقدار Connection String رو ببینه و ویرایش کنه. در خیلی از پروژه ها این مشکل اساسی هست، دلیلش هم اینه که خود ویژوال استدیو برای ساده کردن اینجور ویرایش کردن ها قابلیتی اضافه نکرده و برنامه نویس ها هم ازش غافل میشن.
 

جدیدترین ارسال ها

بالا