PDA

View Full Version : سوال در مورد ساخت Dll



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

Dll.ram.show_free_ram
Dll.hard.show_hard_serial

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

sohrab o
شنبه 23 مرداد 1389, 00:49 صبح
بایت متد های مختلفی بنویسی
یک متد مربوط به اطلاعات هارد یکی دیگه مربوط به رم

modirmasool
شنبه 23 مرداد 1389, 07:54 صبح
بایت متد های مختلفی بنویسی
یک متد مربوط به اطلاعات هارد یکی دیگه مربوط به رم

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

modirmasool
شنبه 23 مرداد 1389, 12:42 عصر
دوستان ممنون میشم اگه یه توضیح کوچولو بدین آخه کارم خیلی گیره.:گریه:

M.T.P
شنبه 23 مرداد 1389, 12:59 عصر
امکانش نیست اما میتونید واسه تفکیک توابع Ram رو تو یه کلاس به اسم CRam و توابع مربوط به هارد رو تو یه کلاس دیگه به اسم CHard بنویسید.

modirmasool
شنبه 23 مرداد 1389, 13:10 عصر
امکانش نیست اما میتونید واسه تفکیک توابع Ram رو تو یه کلاس به اسم CRam و توابع مربوط به هارد رو تو یه کلاس دیگه به اسم CHard بنویسید.

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

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

sohrab o
شنبه 23 مرداد 1389, 17:56 عصر
بیا دوست عزیز
واست یک نمونه آماده کردم

sohrab o
شنبه 23 مرداد 1389, 17:57 عصر
امکانش نیست اما میتونید واسه تفکیک توابع Ram رو تو یه کلاس به اسم CRam و توابع مربوط به هارد رو تو یه کلاس دیگه به اسم CHard بنویسید.

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

modirmasool
شنبه 23 مرداد 1389, 18:05 عصر
آقا سهراب ممنون. ولی منظور من این نیست.
ببینین من میخوام یه کلاسی باشه که مثل یه منو چندتا زیر شاخه داشته باشه. مثلا مثل خط زیر وقتی hard رو نوشتم و بعدش دات گذاشتم یه فهرست جدید مثل مثلا show_hard_serial و... بیاد.
Dll.hard.show_hard_serial

modirmasool
شنبه 23 مرداد 1389, 18:35 عصر
امکانش نیست اما میتونید واسه تفکیک توابع Ram رو تو یه کلاس به اسم CRam و توابع مربوط به هارد رو تو یه کلاس دیگه به اسم CHard بنویسید.

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

M.T.P
شنبه 23 مرداد 1389, 18:38 عصر
ممنون
من شنیدم که خوب نیست یه dll درست کنیم که کارهای زیادی رو انجام بده. حالا اگه بیایم dll ای درست کنیم که چندین کلاس داشته باشه، آیا اونوقت مشکلی در سرعت کارش پیش میاد؟

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

modirmasool
شنبه 23 مرداد 1389, 18:40 عصر
به هیچ وجه. :قلب:

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

sohrab o
شنبه 23 مرداد 1389, 18:40 عصر
آهان پس فکر نکنم کاری به غیر از روشی که دوستمون گفتن بشه کرد
یعنی باید کلاسهای متفاوتی تولید کنی

sohrab o
شنبه 23 مرداد 1389, 18:42 عصر
پس چرا کسی یه همچین کاری نمی کنه؟:متفکر:
منظورم اینه که یه dll جامع بنویسن که اکثر کارهای لازم رو انجام بده.

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

M.T.P
شنبه 23 مرداد 1389, 18:48 عصر
پس چرا کسی یه همچین کاری نمی کنه؟:متفکر:
منظورم اینه که یه dll جامع بنویسن که اکثر کارهای لازم رو انجام بده.
به عنوان مثال کتابخانه ADODB میکروسافت.
از Refrences اضافه کنید و ببینید: 2.8 Microsoft ActivieX Data Object
چهار تا کلاس داره :
1. Connection
2. Recordset
3. Record
4. Command

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

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

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

M.T.P
شنبه 23 مرداد 1389, 19:04 عصر
البته خوب خود مایکروسافت میتونسته تمام چیزایی که ما لازم داریمو در یک dll می ساخته با حجم مثلا 3GB
اما آیان این راه درستییه؟وقتی ما یک تابع کوچیکشو لازم داریم باید اون فایل 3GB رو همه جا با خودمون ببریم یا موقع نصب برنامه اونو در setup قرار بدیم

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

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

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

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

modirmasool
شنبه 23 مرداد 1389, 19:07 عصر
راستی الان پس الان این چیزی که در ادامه نوشتم و ماله خود ویبی هستش ، چطوریه؟


StdFunctions.LoadPicture.Handle

modirmasool
شنبه 23 مرداد 1389, 19:08 عصر
راستی الان پس الان این چیزی که در ادامه نوشتم و ماله خود ویبی هستش ، چطوریه؟


StdFunctions.LoadPicture.Handle

M.T.P
شنبه 23 مرداد 1389, 19:29 عصر
StdFunctions کلاس نیست ، یک ماژول هستش.
اگه در مورد درخواستتون به نتیجه ای رسیدم حتما شما رو در جریان خواهم گذاشت.

modirmasool
یک شنبه 24 مرداد 1389, 14:05 عصر
دوستان من می خوام یه dll بسازم که ورودی اش یه آرایه باشه و خروجی اش همون آرایه به صورت مرتب شده باشه. ولی نمیدونم چطوری آرایه رو وارد تابع موجود در dll کنم و دوباره برش گزدونم. ممنون می شم اگه کسی راهنمایی کنه.

modirmasool
یک شنبه 24 مرداد 1389, 22:49 عصر
دوستان من می خوام یه dll بسازم که ورودی اش یه آرایه باشه و خروجی اش همون آرایه به صورت مرتب شده باشه. ولی نمیدونم چطوری آرایه رو وارد تابع موجود در dll کنم و دوباره برش گزدونم. ممنون می شم اگه کسی راهنمایی کنه.

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