امتیاز موضوع:
  • 5 رأی - میانگین امتیازات: 4.2
  • 1
  • 2
  • 3
  • 4
  • 5
ناپیک آموزش visual c++ .net 2008
نویسنده پیام
محمد حسینی آفلاین
کاربر فعال بخش رباتیک
****

ارسال‌ها: 1,363
موضوع‌ها: 139
تاریخ عضویت: آذر ۱۳۸۴

تشکرها : 974
( 1780 تشکر در 620 ارسال )
ارسال: #12
RE: ناپیک آموزش visual c++ .net 2008
سلام
کار با رشته ها

شی String تو نیم اسپیس System هست و میتونه رشته های یونیکد (دو بایتی) رو ذخیره کنه.
یعنی باید using namespace System; رو تو نیم اسپیس برنامه تون معرفی کنید. البته بطور پیش فرض معرفی شده.
String ^str1;
این دستور یه رشته به نام str1 میسازه.

کد:
                 String ^str1, ^str2, ^str3;
                 str1 = "www.iranvig.com";
                 str2 = "forum.iranled.com";
                 str3 = str1 + str2;
                 textBox1->Text = str1;

خط اول سه تا رشته معرفی شده.
خط 2 و 3 رشته های اول و دوم توسط اپراتور = مقداردهی شدن.
خط 4 اپراتور + دو رشته میگیره و خروجیش رشته حاصل اتصال رشته اول و دومه. البته برای اتصال دستور concat هم هست.

کد:
                 String ^str1, ^str2;
                 str1 = "www.iranvig.com";
                 str2 = "forum.iranled.com";
                 str1 = str1->Concat("site : " ,str1, " - ", str2);
                 //site : www.iranvig.com - forum.iranled.com

دستور Insert :
دو تا پارامتر میگیره. اولی شماره یه کاراکتر مربوط به خود رشته صدا زننده تابع. پارامتر دوم یه رشته که به اون قسمت از رشته صاحب تابع اضافه میشه.

کد:
                 str1 = "www.iran.com";
                 str1 = str1->Insert(8, "vig");
                 //www.iranvig.com

دستور Remove :
پارامتر اول شماره یه کاراکتر رو میگیره. اگر پارامتر دوم استفاده نشه از اون کاراکتری که مشخص شده تا آخر پاک میشه.

کد:
                 str1 = "www.iranvig.com";
                 str1 = str1->Remove(11);
                 //www.iranvig

پارمتر دوم تعداد کاراکتریه که می خواین پاک کنین.

کد:
                 str1 = "www.iranvig.com";
                 str1 = str1->Remove(8, 3);
                 //www.iran.com

دستور Replace :
تو رشته صاحب تابع میگرده و هرجا یه رشته برابر با پارامتر اول پیدا کرد، رشته تابع دوم رو به جای اون میذاره.

کد:
                 str1 = "www.iranvig.com";
                 str1 = str1->Replace("vig", "led");
                 //www.iranled.com

دستور Substring :
برای جدا کردن یه زیر رشته از رشته اصلی. مثل دستور Replace به دو شکل استفاده میشه.
پارامتر اول شماره کارکتری که جدا کردن باید از اونجا شروع بشه.


کد:
                 str1 = "www.iranvig.com";
                 str1 = str1->Substring(4);
                 //iranvig.com

پارامتر دوم تعداد کارکتری که می خوان جدا کنین. اگه مقدار دهی نشه زیر رشته تا آخر رشته اصلی جدا میشه)

کد:
                 str1 = "www.iranvig.com";
                 str1 = str1->Substring(4, 7);
                 //iranvig

دستور ToLower و ToUpper
تبدیل حروف بزرگ و کوچیک . . .

کد:
                 str1 = "www.IRANvig.com";
                 str1 = str1->ToLower();
                 //www.iranvig.com

دستور Trim :
تمام فضاهای خالی ابتدا و انتهای رشته رو پاک می کنه.

کد:
                 str1 = "        www.iranvig.com    ";
                 str1 = str1->TrimStart();
                 //www.iranvig.com

TrimStart و TrimEnd رو هم امتحان کنید . . .

دستور Compare :
دو تا رشته میگیره. حرف به حرف رشته ها رو با هم مقایشه می کنه. اگه تا آخر کاراکتر ها برابر بودن صفر برمیگردونه. در غیر اینطورت 1 یا -1 بر میگرده (به ترتیب حروف الفبا)

کد:
                 str1 = "www.iranvig.com";
                 int result = str1->Compare(str1, "abc");
                 //1

Length تعداد کاراکتر های رشته رو میده.

کد:
                 str1 = "www.iranvig.com";
                 int result = str1->Length;
                 //15

از اپراتور [ ] برای دسترسی به یه کارکتر رشته استفاده میشه.
کد:
                 str1 = "www.iranvig.com";
                 textBox1->Text = str1[4].ToString();
                 //i

اگه دقت کنید بعضی از توابع مثل concat و compare یه طوری عجیب استفاده شدن. انگار میشه هیچ ربطی به شی صدا زننده تابع نداشته باشن. درسته! یه جورایی friend تعریف شدن.
به نظر من اینطوری قشنگ تره !

کد:
                 String ^str1, ^str2;
                 str1 = "iranvig.com";
                 str2 = String::Concat("www.", str1);
                 //www.iranvig.com



دیگه چیزی به ذهنم نمیرسه !
سوال داشتین تاپیک جدید باز کنین . . .

به راه بادیه رفتن، به از نشستن باطل ------------- اگرچه وصل نیابم، بقدر وسع بکوشمRolleyes
(آخرین ویرایش در این ارسال: ۰۵-تير-۱۳۸۸, ۱۹:۵۹:۲۱، توسط محمد حسینی.)
۰۵-تير-۱۳۸۸, ۱۹:۴۵:۵۹
ارسال‌ها
پاسخ
تشکر شده توسط : 1nafar, اشک, t3r!p3000, shamim_no
محمد حسینی آفلاین
کاربر فعال بخش رباتیک
****

ارسال‌ها: 1,363
موضوع‌ها: 139
تاریخ عضویت: آذر ۱۳۸۴

تشکرها : 974
( 1780 تشکر در 620 ارسال )
ارسال: #13
RE: ناپیک آموزش visual c++ .net 2008
اضافه کردن منو به برنامه :

از پنجره toolbox قسمت menus & toolbars روی MenuStrip دوبار کلیک کنید.
بالای فرم یه فضا برای درست کردن منوها ایجاد میشه. درواقع این یه container برای منو هست. یعنی چیزی که میتونه زیرمجموعه منوها رو داشته باشه. چون در حالت عادی قابل نمایش روی فرم نیست برای اینکه بشه انتخابش کرد و به پروپرتی هاش دسترسی پیدا کرد پایین صفحه طراحی (design) اضافه میشه. (مثل timer یا دیالوگ ها). روش کلیک کنید و قسمت properties اسمش رو ببینید. میتونید تغییرش بدین.
یه قسمتی روش هست که نوشته type here. روش کلیک کنید و اسم اولین منویی که میخواین بسارین رو وارد کنید. مثلا file . البته این اسمش نیست. برچسب یا متن منو هست. برای دیدن اسمش روش کلیک کنید و قسمت properties رو ببینید.
روی منویی که ساختین (file) کلیک کنید. میبینید که میتونید زیرمجموعش رو هم بسازین. مثلا new و open . . .
اگه یه خط تیره (-) وارد کنید یه خط کامل کشیده میشه. برای جدا کردن گروه های مختلف . . .
برای مشخص کردن کلید shortcut برای یه گزینه مثل new اونو انتخاب کنید. تو پنجره properties یه قسمت به نام ShortcutKeys هست. اونجا کلیک کنید. یه پنجره باز میشه که کمک میکنه یه کلید میانبر انتخاب کنید. خیلی راحت.
برای گذاشتن آیکون کنار هر گزینه همونجا پروپرتی image هست برای اینکار. میتونید هر تصویری بدین. خودش کوچیک می کنه میذاره جای آیکون.
برای کدنویسی رویدادهاش هم که قبلا گفته بودم همون پنجره properties بالاش رو آیکون Events کلیک کنید. بعد رو هر رویدادی که میخواین دوبار کلیک کنید تا کدش باز بشه. روی هر گزینه منو هم تو صفحه design دوبار کلیک کنید بطور پیشفرض کد رویداد کلیک رو میاره.
ساخت منوی پاپ آپ :
از پنجره toolbox قسمت menus روی ContextMenuStrip دوبار کلیک کنید تا اضافه بشه. یه اسم براش انتخاب کنید. مثلا mnuPopup . مثل قبل گزینه هاش رو اضافه کنید و منو رو بسازین. این منو همینطوری رو فرم قابل نمایش نیست و باید با کد نویسی نمایشش بدین.
یه button به فرم اضافه کنید و این کد رو براش بنویسید.

کد:
mnuPopup->Show();
mnuPopup->Location = System::Drawing::Point(this->Location.X + button1->Location.X, this->Location.Y + button1->Location.Y);

اینم یه مدل دیگه : یعنی از x و y کنترل buttun1 به اندازه صفر فاصله بگیر.

کد:
mnuPopup->Show(button1, 0, 0);

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

به راه بادیه رفتن، به از نشستن باطل ------------- اگرچه وصل نیابم، بقدر وسع بکوشمRolleyes
۲۲-تير-۱۳۸۸, ۱۵:۱۶:۴۲
ارسال‌ها
پاسخ
تشکر شده توسط : 1nafar, اشک, t3r!p3000, shamim_no
محمد حسینی آفلاین
کاربر فعال بخش رباتیک
****

ارسال‌ها: 1,363
موضوع‌ها: 139
تاریخ عضویت: آذر ۱۳۸۴

تشکرها : 974
( 1780 تشکر در 620 ارسال )
ارسال: #14
RE: ناپیک آموزش visual c++ .net 2008
متغیر سراسری :

فرض کنید میخوایم یه متغیر سراسری از نوع int به اسم var تعریف کنیم.

اول باید یه فایل هدر (مثلا global.h) درست کرد. این فایل رو تو پنجره solution explorer قسمت header files اضافه کنید.
این کد رو توش بنویسین :
کد:
extern int var;

بعد باید یه فایل cpp به قسمت source files اضافه کنید. فایل هدری که قبلا ساختین و فایل هدر stdafx باید توش اضافه بشه. اینک کدش :
کد:
#include "stdafx.h"
#include "global.h"
int var;

حالا برای استفاده از متغیر باید توی فرم فایل هدر رو include کنین.
کد:
#include "global.h"
var = 2;

به راه بادیه رفتن، به از نشستن باطل ------------- اگرچه وصل نیابم، بقدر وسع بکوشمRolleyes
۲۳-تير-۱۳۸۸, ۱۴:۳۱:۱۱
ارسال‌ها
پاسخ
تشکر شده توسط : 1nafar, اشک, t3r!p3000, shamim_no
rebin آفلاین
تازه وارد

ارسال‌ها: 1
موضوع‌ها: 0
تاریخ عضویت: تير ۱۳۸۸

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #15
RE: ناپیک آموزش visual c++ .net 2008
با سلام
وقت بخیر، من یه راهنمایی در مورد فرستادن عدد با حرف به پورت سریال میخواستم (البته در محیط c++.net)
۲۹-تير-۱۳۸۸, ۰۰:۱۵:۵۸
ارسال‌ها
پاسخ
محمد حسینی آفلاین
کاربر فعال بخش رباتیک
****

ارسال‌ها: 1,363
موضوع‌ها: 139
تاریخ عضویت: آذر ۱۳۸۴

تشکرها : 974
( 1780 تشکر در 620 ارسال )
ارسال: #16
RE: ناپیک آموزش visual c++ .net 2008
سلام !
یه آموزش خوف !!
از آرزو های هر برنامه نویسی اینه که multithread برنامه بنویسه. خیلی کوتاه بگم یعنی چند فرمان یا پروسه رو همزمان اجرا کنه. برنامه چند کار رو با هم انجام بده بدون اینکه به حالت هنگ بره. شما میتونید تو برنامه تون یه ترد فرعی ایجاد کنید و یه زیر برنامه خیلی پیچیده که احتیاج به سرعت و زمان داره رو به اون بسپارین ...
و اما دات نت . . .
کنترل backgroundWorker
کار باهاش خیلی سخت نیست و کلا کنترل ساده ایه.
از پنجره toolbox قسمت components کنترل backgroundworker رو اضافه کنید.
خیلی ساده این کنترل یه رویداد داره به اسم DoWork . شما کدهایی که میخواین با یه ترد جدا اجرا بشه رو باید تو این رویداد بنویسین. البته دقت کنید به کنترل های فرم دسترسی ندارینا.
با این کد اون رویداد فراخوانی میشه :

کد:
backgroundWorker1->RunWorkerAsync();

رویداد DoWork یه ورودی e با ویژگی Result داره که میتونید اون رو مقدار دهی کنید و بعد از پایان پروسه اونو بخونید. بعد از پایان رویداد RunWorkerCompleted اجرا میشه.

کد:
System::Void backgroundWorker1_DoWork(System::Object^  sender, System::ComponentModel::DoWorkEventArgs^  e) {
    double i = 0;
    while (i < 666000)
        i = i + 0.1;

    e->Result = i;
}
System::Void backgroundWorker1_RunWorkerCompleted(System::Object^  sender, System::ComponentModel::RunWorkerCompletedEventArgs^  e) {
    MessageBox::Show(e->Result->ToString());
}

برای اینکه بتونین وسط اجرای پروسه متوقفش کنید اول باید خاصیت workersupportdcancellation رو true کنید.
بعد هر وقت خاصیت تابع cancelasync رو صدا بزنید. این تایع باعث میشه خاصیت cancellationpending 1 بشه. توی DoWork هم باید دائم چک کنید که این خاصیت true شده یا نه. اگه شد return کتید.

کد:
System::Void backgroundWorker1_DoWork(System::Object^  sender, System::ComponentModel::DoWorkEventArgs^  e) {
    double i = 0;
    while (1)
    {
        i = i + 0.1;
        e->Result = i;
        if (backgroundWorker1->CancellationPending)
        {
            MessageBox::Show(i.ToString());
            return;
        }
    }
}

ویژگی isbusy هم که مشخصه میگه پروسه در حال اجرا هست یا نه تموم شده.
این مقدماتش . . . اطلاعات بیشتر خواستین msdn . . .

به راه بادیه رفتن، به از نشستن باطل ------------- اگرچه وصل نیابم، بقدر وسع بکوشمRolleyes
۱۰-مرداد-۱۳۸۸, ۰۰:۳۰:۲۲
ارسال‌ها
پاسخ
تشکر شده توسط : 1nafar, اشک, t3r!p3000, shamim_no
omidonline آفلاین
تازه وارد

ارسال‌ها: 1
موضوع‌ها: 0
تاریخ عضویت: بهمن ۱۳۸۸

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #17
RE: ناپیک آموزش visual c++ .net 2008
سلام دوستان
اگه میشه یه لینک بزارید واسه دانلود آموزشها.
مرسی!
(آخرین ویرایش در این ارسال: ۲۰-بهمن-۱۳۸۸, ۱۸:۰۰:۲۱، توسط omidonline.)
۲۰-بهمن-۱۳۸۸, ۱۷:۵۶:۵۴
ارسال‌ها
پاسخ
rezastwo آفلاین
تازه وارد

ارسال‌ها: 1
موضوع‌ها: 0
تاریخ عضویت: آذر ۱۳۹۰

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #18
RE: ناپیک آموزش visual c++ .net 2008
دوستان در مورد لیست پیوندی حلقوی یک طرفه هم توضیح میدید
در مورد تعریفشو کار کردن باهاش
ممنون میشم زود بگید چون باید پروژمو شنبه تحویل بدم[/quote]
۲۷-آذر-۱۳۹۰, ۰۸:۴۴:۲۹
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  [سوال] امکان اتصال Visual Studio با VMware هست ؟ nImaarek 3 2,380 ۱۸-فروردین-۱۳۹۵, ۱۴:۳۶:۱۴
آخرین ارسال: salehjg
  مشکل visual c++ 6 با نرم افزارهای جدید microsoft cnmeysam 1 2,620 ۲۸-فروردین-۱۳۹۱, ۰۶:۲۹:۱۰
آخرین ارسال: one hacker alone
  سوال مهم:مشکل با نداشتن برخی گزینه ها در VC++2008 Sunderlan 0 1,882 ۰۷-دى-۱۳۸۹, ۰۸:۵۲:۴۳
آخرین ارسال: Sunderlan
  اسمبلی در visual c++.net mehrdadg11 0 2,786 ۰۱-آبان-۱۳۸۹, ۲۱:۳۶:۵۰
آخرین ارسال: mehrdadg11
  راهنمایی در مورد visual c++ مشکل در ادرس دهی دکمه newmusic 5 4,986 ۱۱-خرداد-۱۳۸۸, ۲۳:۰۷:۰۰
آخرین ارسال: newmusic
Cool کمک برای Visual c++2005 شدیدا گیج زدم یک راهنمایی نیاز دارم(محیط Vc++ newmusic 1 2,632 ۰۸-اردیبهشت-۱۳۸۸, ۲۳:۴۶:۵۴
آخرین ارسال: arashrj
  مشکل با clrscr در Visual C++6 VBYOFSKI 5 9,225 ۲۱-مرداد-۱۳۸۷, ۱۲:۵۶:۳۲
آخرین ارسال: arash_ele
  C++ یا Visual C++ یا Visual C++.net x.halo360 16 11,952 ۱۹-اسفند-۱۳۸۶, ۲۲:۴۷:۰۰
آخرین ارسال: yeketaz
  Image Processing در Visual C++ 6.0 ali_oop 4 5,518 ۲۶-شهریور-۱۳۸۶, ۰۰:۰۱:۱۷
آخرین ارسال: lord_viper

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS