امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
ارسال و خوندن یک آرایه به یک کلاس
نویسنده پیام
NabiKAZ آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 520
موضوع‌ها: 48
تاریخ عضویت: اسفند ۱۳۸۲

تشکرها : 6
( 60 تشکر در 46 ارسال )
ارسال: #1
ارسال و خوندن یک آرایه به یک کلاس
سلام ،

خوشحالم که اینجا دوباره راه افتاد.
آقا اشکان دست شما درد نکنه.

یه سوال ؛

در ویژوال بیسیک اگر این کلاس رو داشته باشیم:
کد:
Dim X As Single

Property Get pt_X() As Single
    pt_X = X
End Property

Property Let pt_X(tx As Single)
    X = tx
End Property

براحتی میشه بدین ترتیب :
کد:
Dim myClass As Class1
Set myClass = New Class1

myClass.pt_X = 1
MsgBox myClass.pt_X

میشه متغییر X رو در سطح کلاس مقدار دهی کرد و مقادرش رو خوند.
حالا اگر X به صورت آرایه باشه چطور میشه اون رو در سطح کلاس مقدار دهی کرد .
به عبارتی یه آرایه رو به یه Property از کلاس نسبت داد و یا اون رو خوند ؟



تشکر
نبی

۱۳-آبان-۱۳۸۵, ۰۹:۴۸:۰۳
وب سایت ارسال‌ها
پاسخ
Darg غایب
مدير بازنشسته
*****

ارسال‌ها: 894
موضوع‌ها: 40
تاریخ عضویت: تير ۱۳۸۴

تشکرها : 381
( 702 تشکر در 190 ارسال )
ارسال: #2
RE: ارسال و خوندن یک آرایه به یک کلاس
این کد رو الان نوشتم ببین به کارت میاد:
۱۳-آبان-۱۳۸۵, ۱۴:۰۶:۲۶
وب سایت ارسال‌ها
پاسخ
NabiKAZ آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 520
موضوع‌ها: 48
تاریخ عضویت: اسفند ۱۳۸۲

تشکرها : 6
( 60 تشکر در 46 ارسال )
ارسال: #3
RE: ارسال و خوندن یک آرایه به یک کلاس
سلام
از کدی که نوشتید ممنونم.
جالب بود.
اما در مورد آرایه های دو بعدی چیکار باید کرد؟ باید دو تا پارامتر index تعریف کرد؟ ولی unbound فقط بعد اول رو برمیگردونه ! در مورد بعد دوم آرایه چطور میشه ماکزیمم آندیس رو برگردوند.
اگر کد بزارید ممنونمیشم.
راستی اگر میشه در مورد آندیس فانکشن ها هم یه توضیح بدید که چطوری پارامتر اول رو به صورت آندیس آرایه میگیره ولی پارامتر آخر رو نمیگیره ...

ممنون
نبی

۱۹-آبان-۱۳۸۵, ۱۷:۰۴:۱۷
وب سایت ارسال‌ها
پاسخ
Darg غایب
مدير بازنشسته
*****

ارسال‌ها: 894
موضوع‌ها: 40
تاریخ عضویت: تير ۱۳۸۴

تشکرها : 381
( 702 تشکر در 190 ارسال )
ارسال: #4
RE: ارسال و خوندن یک آرایه به یک کلاس
NabiKAZ نوشته است:اما در مورد آرایه های دو بعدی چیکار باید کرد؟ باید دو تا پارامتر index تعریف کرد؟
درسته باید همین کار رو کرد. ولی با افزایش بُعد آرایه کارها خیلی مشکل میشه. کدی که قبلا برات گذاشتم انعطاف زیادی داشت یعنی می شد از اون کد ها به سادگی بدون تغییر خاصی درون هر برنامه دیگه ای هم استفاده کرد.
اما برنامه ضمیمه جدید خاصیت قبلی رو نداره تا نیاز های جدید برنامه ساز رو برآورده کنه. یعنی اینکه سفارش برای مربعی کردن بُعد باند این نوع کد ها رو ایجاب می کنه!
NabiKAZ نوشته است:ولی unbound فقط بعد اول رو برمیگردونه ! در مورد بعد دوم آرایه چطور میشه ماکزیمم آندیس رو برگردوند.
این سوال جواب ظریفی داره.
من هم وقتی بهش احتیاج پیدا کردم سر پروژه کنترل مبدل تاریخ بودم که آرایه های موجود در صفحه تاریخ (همون روزه ها) تشکیل بُعد مربعی رو میدادند. برای جوابش خیلی جستجو کردم و تقریبا همه مستندات رو زیر رو کردم و کلی کد رو مطالعه کردم, اما جواب رو پیدا نکردم.
در واقع جواب خیلی ساده تر از اینه که فکرش رو کنی. به طور تصادفی به فکرم رسید و وقتی امتحانش کردم دیدم خوشه!
جواب در خود Ubound هست به طور پیش فرض برای آرایه های تک بُعدی هر دو کد زیر یک نتیجه ای داره:
کد:
Dim A(5) as String  <Code
Debug.Print Ubound(A)  <Code
_______________________
Dim A(5) as String  <Code
Debug.Print Ubound(A,1)  <Code
_______________________
جواب در هر دو حالت: 5

باید شماره بُعدی که می خوای بدونی چقدر پهنای باند داره رو به عنوان ورودی دوم به تابع Ubound وارد کنی. مثال:

کد:
Dim A(5,10,2,7)   <Code
Ubound(A,1)=5
Ubound(A,2)=10
Ubound(A,3)=2
Ubound(A,4)=7
NabiKAZ نوشته است:راستی اگر میشه در مورد آندیس فانکشن ها هم یه توضیح بدید که چطوری پارامتر اول رو به صورت آندیس آرایه میگیره ولی پارامتر آخر رو نمیگیره ...
متوجه این سوالت نشدم. لطفا یک کمی بیشتر توضیح بده.
۱۹-آبان-۱۳۸۵, ۲۲:۵۷:۵۹
وب سایت ارسال‌ها
پاسخ
NabiKAZ آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 520
موضوع‌ها: 48
تاریخ عضویت: اسفند ۱۳۸۲

تشکرها : 6
( 60 تشکر در 46 ارسال )
ارسال: #5
RE: ارسال و خوندن یک آرایه به یک کلاس
سلام
بازم از توضیحات و کد خوبت ممنونم دارگ عزیز. روی کدت کار میکنم ...


در مورد Ubound هم نکته جالبی بود...


در مورد سوال آخرم هم :
منظورم اینه مثلا وقتی نوشته میشه:
NCTest.Arrays (0)
یه مقدار رو (در اینجا 0) به عنوان ورودی دریافت میکنه. در صورتی که در اینجا اینگونه تعریف شده:
Public Property Let Arrays(Index As Integer, NewNumber As Single)

آیا به خاطر خط زیره که میفهمه فقط پارامتر اول رو باید از بیرون به داخل کلاس پاس داده بشه:
Public Property Get Arrays(Index As Integer) As Single

سوالم ابتدایی تر از اون چیزیه که فکر میکنید. مشکل در تفهیم و روش استفاده از کلاس هاست که من باشون کم کار کردم.


تشکر
نبی

۲۰-آبان-۱۳۸۵, ۰۷:۱۲:۰۹
وب سایت ارسال‌ها
پاسخ
Darg غایب
مدير بازنشسته
*****

ارسال‌ها: 894
موضوع‌ها: 40
تاریخ عضویت: تير ۱۳۸۴

تشکرها : 381
( 702 تشکر در 190 ارسال )
ارسال: #6
RE: ارسال و خوندن یک آرایه به یک کلاس
نه از Property Get نیست. همون طور که خودت هم می دونی این زیر برنامه فقط برای دریافت مقدار خصوصیت از خارج کلاس, ایجاد شده.
اگر هم می بینی شکل Property Let به صورت زیر هست:
Property Let Arrays(Index As Integer, NewNumber As Single
علتش تنها اینه که این قالب دستور زبانه و نه چیز دیگه ای.
اما اونجایی که پرسیدی درباره "آندیس فانکشن ها" من تعجب کردم چون این ها خصوصیت Property هستند و دستور زبان (گرامر) وی بی در موردشون فرق می کنه. فقط همین و همون طور که خودت اشاره کردی "سوالت ابتدایی تر از اون چیزیه که فکر میکنید".
۲۱-آبان-۱۳۸۵, ۱۹:۰۵:۱۵
وب سایت ارسال‌ها
پاسخ
NabiKAZ آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 520
موضوع‌ها: 48
تاریخ عضویت: اسفند ۱۳۸۲

تشکرها : 6
( 60 تشکر در 46 ارسال )
ارسال: #7
RE: ارسال و خوندن یک آرایه به یک کلاس
سلام
ببخشید دیر جواب میدم.
راستش همون موقع ها یه جواب مفصل و بلند بالا آماده کرده بودم که حذف شد، دیگه سرد شدم ...
فقط یه چیزیش یادمه....

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

بازم ممنون
نبی

۲۴-آذر-۱۳۸۵, ۱۵:۱۲:۰۸
وب سایت ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  خواندن و ارسال کردن اطلاعات با پورت سریال SBRE77 18 20,157 ۱۱-مهر-۱۳۹۷, ۰۹:۴۶:۲۸
آخرین ارسال: reza1354
  ارسال متن بهlcd با کمک پرت usb Ghoghnus 1 2,937 ۰۲-مهر-۱۳۹۵, ۰۴:۳۲:۵۸
آخرین ارسال: engzhina
  نیاز به راهنمایی درباره ارسال اطلاعات reza2010wf 2 3,830 ۲۶-شهریور-۱۳۹۴, ۱۱:۵۸:۰۷
آخرین ارسال: Ghoghnus
  ارسال صدا و تصویر mahdi321 2 2,848 ۲۳-شهریور-۱۳۹۴, ۱۲:۱۶:۰۰
آخرین ارسال: kimiafars
  ارسال پارامتر به برنامه ی در حال اجرا. Blossom 42 27,149 ۰۹-اسفند-۱۳۹۳, ۲۲:۴۴:۱۶
آخرین ارسال: 9988
  ارسال ایمیل با ویژوال بیسیک ΛΛ Θ l-l $ Σ Ω 72 65,640 ۰۲-مهر-۱۳۹۳, ۱۲:۲۸:۳۶
آخرین ارسال: yashar_2006
  ارسال ودریافت صدا در Vb mahdi321 2 3,956 ۱۸-مرداد-۱۳۹۳, ۰۰:۵۲:۰۰
آخرین ارسال: Vb6Moderator
Question [سوال] فرق Property با Get و Set و Let در کلاس eppagh 2 2,660 ۱۴-مرداد-۱۳۹۳, ۰۹:۲۶:۲۶
آخرین ارسال: eppagh
  کامپوننت ارسال ایمیل + کرک Di Di 23 20,319 ۱۴-فروردین-۱۳۹۳, ۱۳:۲۲:۴۷
آخرین ارسال: ms_jadoo
Exclamation درخواست ارسال پی ام در یاهو alipc1 8 6,093 ۲۲-تير-۱۳۹۲, ۲۱:۱۱:۵۶
آخرین ارسال: Ghoghnus

پرش به انجمن:


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

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