# Native Code > برنامه نویسی در 6 VB >  سوال در مورد ساخت Dll

## modirmasool

سلام دوستان.
یه سوال کوچولو دارم. ممنون میشم اگه جوابشو بدین.
فرض کنین یه dll میخوایم بنویسیم که اطلاعات رم و هارد رو به ما بده.
حالا سوال اینه که چطور میشه کاری کرد که قسمت هارد و رم رو جدا کرد. منظورم اینه که مثل کد زیر، اجزا با نقطه دسته بندی بشن:

Dll.ram.show_free_ram
Dll.hard.show_hard_serial

طوری که من می نویسم اینطوریه:
Dll.show_free_ram
Dll.show_hard_serial
ولی همونطور که گفتم میخوام مثل بالایی باشه.

----------


## sohrab o

بایت متد های مختلفی بنویسی
یک متد مربوط به اطلاعات هارد یکی دیگه مربوط به رم

----------


## modirmasool

> بایت متد های مختلفی بنویسی
> یک متد مربوط به اطلاعات هارد یکی دیگه مربوط به رم


میشه مثال بزنین؟ ممنون.

----------


## modirmasool

دوستان ممنون میشم اگه یه توضیح کوچولو بدین آخه کارم خیلی گیره. :گریه:

----------


## M.T.P

امکانش نیست اما میتونید واسه تفکیک توابع Ram رو تو یه کلاس به اسم CRam و توابع مربوط به هارد رو تو یه کلاس دیگه به اسم CHard بنویسید.

----------


## modirmasool

> امکانش نیست اما میتونید واسه تفکیک توابع Ram رو تو یه کلاس به اسم CRam و توابع مربوط به هارد رو تو یه کلاس دیگه به اسم CHard بنویسید.


یعنی نمیشه مثل خود ویبی که دستور زیر رو داره dll ساخت؟

من دقیقا یه چیزی مثل این می خوام:
StdFunctions.LoadPicture.Handle

----------


## sohrab o

بیا دوست عزیز
واست یک نمونه آماده کردم

----------


## sohrab o

> امکانش نیست اما میتونید واسه تفکیک توابع Ram رو تو یه کلاس به اسم CRam و توابع مربوط به هارد رو تو یه کلاس دیگه به اسم CHard بنویسید.


لطفا دوست گرامی به این چیزی که من upload کردم یه نگاهی بکنید

----------


## modirmasool

آقا سهراب ممنون. ولی  منظور من این نیست.
ببینین من میخوام یه کلاسی باشه که مثل یه منو چندتا زیر شاخه داشته باشه. مثلا مثل خط زیر وقتی hard رو نوشتم و بعدش دات گذاشتم یه فهرست جدید مثل مثلا show_hard_serial و... بیاد.
Dll.hard.show_hard_serial

----------


## modirmasool

> امکانش نیست اما میتونید واسه تفکیک توابع Ram رو تو یه کلاس به اسم CRam و توابع مربوط به هارد رو تو یه کلاس دیگه به اسم CHard بنویسید.


ممنون
من شنیدم که خوب نیست یه dll درست کنیم که کارهای زیادی رو انجام بده. حالا اگه بیایم dll ای درست کنیم که چندین کلاس داشته باشه، آیا اونوقت مشکلی در سرعت کارش پیش میاد؟

----------


## M.T.P

> ممنون
> من شنیدم که خوب نیست یه dll درست کنیم که کارهای زیادی رو انجام بده. حالا اگه بیایم dll ای درست کنیم که چندین کلاس داشته باشه، آیا اونوقت مشکلی در سرعت کارش پیش میاد؟


به هیچ وجه.  :قلب:

----------


## modirmasool

> به هیچ وجه.


پس چرا کسی یه همچین کاری نمی کنه؟ :متفکر: 
منظورم اینه که یه dll جامع بنویسن که اکثر کارهای لازم رو انجام بده.

----------


## sohrab o

آهان پس فکر نکنم کاری به غیر از روشی که دوستمون گفتن بشه کرد
یعنی باید کلاسهای متفاوتی تولید کنی

----------


## sohrab o

> پس چرا کسی یه همچین کاری نمی کنه؟
> منظورم اینه که یه dll جامع بنویسن که اکثر کارهای لازم رو انجام بده.


به خاطر اینه که ماهیت کارهایی که انجام میدن متفاوته و رزمانی که نرم افزار update میشه فقط همون قسمتی که به روز شده رو باید کپی کرد و دوم این که اگر بصورت تیمی کار بکنیم هر قسمتو به یه نفر یا یع تیم واگذار می کنیم همچنین این روش کار کردن باعث خوانایی برنامه میشه

----------


## M.T.P

> پس چرا کسی یه همچین کاری نمی کنه؟
> منظورم اینه که یه dll جامع بنویسن که اکثر کارهای لازم رو انجام بده.


به عنوان مثال کتابخانه ADODB میکروسافت.
از Refrences اضافه کنید و ببینید: 2.8 Microsoft ActivieX Data Object 
چهار تا کلاس داره :
1. Connection
2. Recordset
3. Record
4. Command

خب در مثال بالا کاری که کلاس Connection انجام میده با کلاس Recordset فرق داره و در نتیجه هر کدوم تو یه کلاس نوشته شدن.
شما هم اگه دوست داری میتونی برای هرکدم از اطلاعات سخت افزاری که میخوای استخراج کنی یک کلاس جداگونه تعریف کنی.

----------


## sohrab o

> به عنوان مثال کتابخانه ADODB میکروسافت.
> از Refrences اضافه کنید و ببینید: 2.8 Microsoft ActivieX Data Object 
> چهار تا کلاس داره :
> 1. Connection
> 2. Recordset
> 3. Record
> 4. Command


البته خوب خود مایکروسافت میتونسته تمام چیزایی که ما لازم داریمو در یک dll می ساخته با حجم مثلا 3GB
اما آیان این راه درستییه؟وقتی ما یک تابع کوچیکشو لازم داریم باید اون فایل 3GB رو همه جا با خودمون ببریم یا موقع نصب برنامه اونو در setup قرار بدیم

----------


## M.T.P

> البته خوب خود مایکروسافت میتونسته تمام چیزایی که ما لازم داریمو در یک dll می ساخته با حجم مثلا 3GB
> اما آیان این راه درستییه؟وقتی ما یک تابع کوچیکشو لازم داریم باید اون فایل 3GB رو همه جا با خودمون ببریم یا موقع نصب برنامه اونو در setup قرار بدیم


نه خیر کار درستی نیست.

مثالی که من زدم صرفا به خاطر این بود که چند کلاس در یک Dll مشکلی نداره و برای تفکیک و دسته بندی اطلاعات با یک هدف مشترک ساخته میشن.
وگرنه اگه کلاس BaloonTip رو تو ADODB بزارن چه مفهومی داره؟!  :لبخند گشاده!:

----------


## modirmasool

> البته خوب خود مایکروسافت میتونسته تمام چیزایی که ما لازم داریمو در یک dll می ساخته با حجم مثلا 3GB
> اما آیان این راه درستییه؟وقتی ما یک تابع کوچیکشو لازم داریم باید اون فایل 3GB رو همه جا با خودمون ببریم یا موقع نصب برنامه اونو در setup قرار بدیم


حالا نه 3 گیگ ولی چند تا dll مثلا 5 مگی.

----------


## modirmasool

راستی الان پس الان این چیزی که در ادامه نوشتم و ماله خود ویبی هستش ، چطوریه؟

StdFunctions.LoadPicture.Handle

----------


## modirmasool

راستی الان پس الان این چیزی که در ادامه نوشتم و ماله خود ویبی هستش ، چطوریه؟

StdFunctions.LoadPicture.Handle

----------


## M.T.P

StdFunctions  کلاس نیست ، یک ماژول هستش.
اگه در مورد درخواستتون به نتیجه ای رسیدم حتما شما رو در جریان خواهم گذاشت.

----------


## modirmasool

دوستان من می خوام یه dll بسازم که ورودی اش یه آرایه باشه و خروجی اش همون آرایه به صورت مرتب شده باشه. ولی نمیدونم چطوری آرایه رو وارد تابع موجود در dll کنم و دوباره برش گزدونم. ممنون می شم اگه کسی راهنمایی کنه.

----------


## modirmasool

> دوستان من می خوام یه dll بسازم که ورودی اش یه آرایه باشه و خروجی اش همون آرایه به صورت مرتب شده باشه. ولی نمیدونم چطوری آرایه رو وارد تابع موجود در dll کنم و دوباره برش گزدونم. ممنون می شم اگه کسی راهنمایی کنه.


دوستان ممنون میشم اگه در این رابطه کمکم کنین.

----------

