ورود

View Full Version : سوال: تبدیل نوع VARIANT به int



Hadi.Nasiri
دوشنبه 02 شهریور 1388, 15:39 عصر
سلام دوستان
چند تا سوال داشتم، اول اینکه داده از نوع VARIANT چه جور داده ایه ؟
دوم، ظاهرا داده ای که از پورت سریال دریافت می کنیم حتما باید در متغیری از نوع VARIANT ذخیره بشه! با فرض اینکه داده دریافتی عدد باشه(دهدهی) چطور میشه این عدد رو که از نوع VARIANT هستش رو به int تبدیل کرد ؟(برای کنترل ProgressBar لازمش دارم)
سوال سوم اینکه این دستورات چیکار می کنن ؟
(CString strInput(in_dat.bstrVal
مرسی

Hadi.Nasiri
سه شنبه 03 شهریور 1388, 23:14 عصر
دوستان کسی میتونه راهنمایی کنه ؟

Nima_NF
چهارشنبه 04 شهریور 1388, 19:48 عصر
نمی دانم از چه روشی و از کجا با VARIANT آشنا شدید که می خواهید از آن برای پورت com استفاده کنید، تا جایی که بنده می دانم VARIANT یک ساختار / struct هست که برای کار با Component Object Model یا همان تکنولوژی COM ویندوز هست، نه پورت COM . (در MSDN این ساختار را جستجو کنید)

کدام مرجع را مطالعه کردید که گفته شده باید از VARIANT استفاده کنید؟

Hadi.Nasiri
پنج شنبه 05 شهریور 1388, 05:01 صبح
تو مثالی که برای ارتباط سریال با پورت کام گذاشته بودید از دستورات زیر برای دریافت استفاده می شد:
VARIANT in_dat;
in_dat = m_comm.get_Input();
CString strInput(in_dat.bstrVal);
m_CStringInput1 = m_CStringInput1 + strInput;
که m_comm متغیر پورت سریاله و CStringInput1 هم متغیره EditControl هستش. حالا اگه in_dat رو به نوع int تغییر بدیم error میده . چطور میشه in_dat رو به یک عدد تبدیل کرد ؟

Nima_NF
پنج شنبه 05 شهریور 1388, 14:44 عصر
نگاه کنید، اختمالا مثالی که می گوییدهمانی هست که در آن از یک ActiveX با نام MSComm استفاده شده بود (یا حالا کلاسی مانند آن نوشته شد) که بر اساس تکنولوژی COM بود.

تکنولوژی COM که همان کمپوننت ها هستند هیچ ربطی به پورت سریال COM ندارد. بلکه کپ.ننت فوق کارش این هست که از پورت سریال COM می خواهند.

شما ابتدا باید نحوه فراخوانی و کار کردن با ActivX ها و کمپوننت های COM را یاد بگیرید. که کمی سخت هست. یعنی به نوعی با یک اینترفیس و ساخت یک شئی از کلاس، متدهای آن کلاس را فراخوانی می کنید.

باید در اسناد VB دنبال تابع های آن بگردید و نحوه خواندن داده را جستجو کنید، تا جایی که می دانم in_dat.bstrVal رشته داده ای را می دهد.

توصیه می کنم اصلا دنبال کپوننت های قدیمی COM اینچنینی نباشید که برای ++C هم نیستند و مستقیم دنبال یک کلاس نوشته شده توسط ++C بگردید که با فراخوانی توابعی به شما اطلاعات را بدهد. قبلا چند مرتبه لینک داده ام.

Hadi.Nasiri
پنج شنبه 05 شهریور 1388, 15:28 عصر
آیا امکانش هست VARIANT in_dat رو به int تبدیل کرد ؟

amin_sos
شنبه 18 مهر 1388, 10:04 صبح
آیا امکانش هست VARIANT in_dat رو به int تبدیل کرد ؟

کست جواب نمیده ؟



ch=(char)vin.bstrVal[0];


برای کاراکتر این کار جواب میده حتما عدد هم به همین شکله !