ايران ويج

نسخه‌ی کامل: ناپیک آموزش visual c++ .net 2008
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
سلام
کار با رشته ها

شی 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



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

از پنجره 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 که خیلی راحت میشه با یکی از همین منو ها مقداردهیشون کرد. در اینصورت با راست کلیک رو اون کنترل منو نمایش داده میشه.
متغیر سراسری :

فرض کنید میخوایم یه متغیر سراسری از نوع 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;
با سلام
وقت بخیر، من یه راهنمایی در مورد فرستادن عدد با حرف به پورت سریال میخواستم (البته در محیط c++.net)
سلام !
یه آموزش خوف !!
از آرزو های هر برنامه نویسی اینه که 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 . . .
سلام دوستان
اگه میشه یه لینک بزارید واسه دانلود آموزشها.
مرسی!
دوستان در مورد لیست پیوندی حلقوی یک طرفه هم توضیح میدید
در مورد تعریفشو کار کردن باهاش
ممنون میشم زود بگید چون باید پروژمو شنبه تحویل بدم[/quote]
صفحه‌ها: 1 2