ورود

نسخه کامل مشاهده نسخه کامل : add variable در c++.net



sara_she
12-06-2007, 13:04
با سلام

من يه win32dll در c++.net2003دارم كه با addclass از نوع net. چندتا فرم بهش اضافه كردم مي خوام مقداري رو كه تو textbox فرمم مي نويسم (موقع اجرا) تو dll مورد استفاده قرار بدم براي انتقال داده بين فرم و cpp از classviewروي فرم مورد نظر راست كليك و add variableرو انتخاب كردم .ولي تو قسمت type نوع رشته وجود نداره كه من بتونم تو اين متغير محتواي textbox رو بريزم و منتقل كنم فقط sctring داره كه اونم درست كار نمي كنه يا من نمي دونم چه طور باهاش كار كنم

براي انتقال داده از نوع int مشكلي ندارم و تست كردم در فايل cpp به راحتي با مقداري كه براي اين متغير تو فرم در نظر گرفته شده مي تونم كار كنم مثلا تو if ازش استفاده كنم ولي براي انتقال رشته نمي دونم چيكار كنم

ممنون مي شم اگه راهنماييم كنيد

someone
12-06-2007, 16:16
سلام.کافیه شما در Type داده ، String رو بنویسین.به طور کلی هر نوعی که بخواین (مثلا اسم کلاستون) رو در combo مورد نظر بنویسین.دقت کنین که بنویسین String نه string

sara_she
14-06-2007, 10:21
فكر ميكردم با نوع int مشكلي ندارم ولي در واقع در اون حالت هم كار نمي كنه و من چون شرط if رو با = به جاي == استفاده كرده بودم كه يك گزاره هميشه درست بود اين اشتباه پيش اومده

ولي هنوز نمي تونم بين فرم dll‌ با variable‌ها ارتباط داشته باشم . كاري كه من مي خوام انجام بدم اينه كه همون متغير كلاسي كه از نوع class formساختم و روي buttonهاش كليك كردمو يك سري تغييرات زمان اجراش براي اون اتفاق افتاده به dll منتقل كنم و با كامپوننت هاش تو dll‌ كار كنم اين فرم از جاي ديگري و توسط فرم ديگري فراخواني مشه نه از درون dll .

مثلآ مقداري رو كه كاربر زمان اجراي فرم تو textboxريخته درون dll تو جدول insert كنم . در حالي كه اگه از اين نوع كلاس يه new تو dll بسازم چون اين متغير كلاس جديد همون متغير كلاسي كه قبلا از جاي ديگه اي فراخواني و اجرا شده نيست بلكه يه متغير كلاس جديد است كه اجرا نشده مقدار textboxخالي هست و اصلا روي buttonِ ي كليك نشده كه تغييري اعمال بشه

سلسله مراتب كار به صورت زير است
1- درون dllيه كلاس فرم جديد ايجاد مي كنيم و اونو show مي كنيم
2- با كليك روي دكمه اي در اين فرم فرم مورد نظر باز مي شه
3- مقداري در textbox ريخته و روي دكمه ايك ليك مي شه
4- مقدار textboxبه dllمنتقل مي شه و در دستور insert قرار مي گيره

اميدوارم منظورم رو متوجه شده باشيد

someone
16-06-2007, 21:14
دوباره سلام.یه نمونه تو آدرس زیر گذاشتم : [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
اگه مشکلی داشت خبر بدین.

sara_she
17-06-2007, 10:24
exactly زدين به هدف

مشكلمو حل كردين sampleخوبي بود

ولي يه سوال فرق اينكه ما يه متغير رو با addvariableتعريف كنيم كه تو روالها و توابع يه كلاس قابل استفاده باشه با اينكه خودمون با كد نويسي يه متغير رو تو قسمت costructor بگذاريم چيه؟


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

someone
18-06-2007, 16:26
دوباره سلام و خواهش میکنم کاری نبود.


از Add Variable برای اضافه کردن یه متغییر (Field) به صورت public ، private و یا protected به یک
Class یا Struct یا Union استفاده میشه ، نه یه متود.
نمونه ای که شما نوشتین یه Field هست که محدوده ی دید اون (Oscope) تنها در Constructor هست
و تو متود های دیگه نمیتونین ازش استفاده کنین. اگه بخوایم خیلی ساده در نظر بگیریم محدوده ی تعریف
یه Field از " } " شروع میشه و با " { " به پایان میرسه.
مثلا :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


الان در مثال بالا Field در تمامی متود های این کلاس قابل استفاده هست.


استفاده از Add Variable اختیاری هست. میتونین به صورت دستی این کار رو انجام بدین. اما کلا اشتباه

در استفاده از Add Variable خیلی کم میشه.

sara_she
19-06-2007, 08:42
منظورتون اينه كه اگه مثل كدي كه تو پست قبل گذاشتم عمل كنم تو روال هايي مثل كليك button‌ و يا توابعي كه با Add function اضافه مي كنم متغير مور نظر شناخته شده نيست؟

در مورد add function‌ هم همين قضيه برقرار است ؟منظورم تفاوت تعريف يك function‌ با add variable‌و يا با كد نويسي است

someone
19-06-2007, 18:24
درسته!وقتی متغییری رو در oscope یه تابع تعریف میکنین ، تو توابع دیگه نمیتونین ازش استفاده کنین.در مورد تابع این طور نیست. توابعی که با Add Function اضافه میکنین در کلاس مورد نظر ایجاد میشه که بازهمدسترسی اون میتونه به صورت public یا private ویا protected باشه.

sara_she
20-06-2007, 09:42
مگه زماني كه من يه متغير رو تو constructor كلاسم تعريف كنم جزئي از كلاس محسوب نمي شه ؟ پس فكر مي كنم بايد تو روالها ي كلاس بشه ازش استفاده كرد يا وقتي نمونه اي از كلاس رو خارج از اين كلاس مي سازيم .درست نيست؟ منظورتون از scopeيه تابع همين كد زير است ؟ منظورتون از تابع در اين كد چيست؟

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

منظورم از add functionهم اين بود كه كار با يك تابع از نظر دسترسي در روال هاي همين كلاس يا خارج از آن ، براي توابعي كه خودمان مي نويسم با توابعي كه توسطadd function به پروژه اضافه مي كنيم چه تفاوتهايي دارد

someone
20-06-2007, 13:37
مگه زماني كه من يه متغير رو تو constructor كلاسم تعريف كنم جزئي از كلاس محسوب نمي شه ؟


چرا جزئی از کلاس هست اما محدوده ی عملش (oscope) تنها در constructor هست نه بیشتر.
گفتم به طور ساده میتونین oscope رو بین { } در نظر بگیرین. وقتی constructor با { بست میشه
دیگه Field شما قابل دسترس نیست. مگه این در خود کلاس تعریف بشه. نه در یه متود.



منظورتون از تابع
تو هر زبانی یا مجوعه ای یه سری دستور العمل ، به یه اسم خاص تعریف میشه.
مثلا در C یا Cpp میگیم " تابع " و در Net. گفته میشه " متود " و یا در VB که فکر کنم " روال " گفته میشه.
اما در Net. باید این تعریف رعایت بشه.
تو کدی که گذاشتین دو تا تابع (متود یا روال) وجود داره که یکی constructor هست و دیگری
InitializeComponent هست.


هیچ فرقی نمیکنه. شما میتونین یه تابع رو دستی و یا با Add Function به کلاس مورد نظر اضافه کنین.
وقتی یه تابع در یه کلاس تعریف میشه ، باقی توابع یا متودهای اون کلاس بهش دسترسی دارن.

sara_she
21-06-2007, 09:52
يك دنيا ممنون از راهنمايي و پيگيري شما

موفق باشيد