PDA

View Full Version : گفتگو: DLL نویسی در vb و مزایا و معایب آن



AbbasVB
شنبه 18 شهریور 1391, 21:45 عصر
با سلام خدمت دوستان
من دو سه روزی هست که به dll نویسی علاقه خاصی پیدا کردم
حالا نمی دونم این به خاطر اطلاعات کم منه یا واقعا dll واقعا می تونه یه چیز دوست داشتنی باشه
حالا در این رابطه من با وی بی 6 شروع کردم به Dll نویسی و کار با اون
توی این قضیه هم به چند تا سوال و مشکل بر خوردم که می گم
در ابتدا بگم که توی این سایت جستجو کردم مطالبی هم پیدا کردم ولی می خوام تخصصی تر بحث کنیم
تا اون جایی که من فهمیدم فایل Dll یه کتاب خانه است که در آن با یک زبان برنامه نویسی تابع یا توابعی قرار داده شده است که می توان از آن در برنامه های دیگر استفاده کرد درسته؟
حالا پس چند تا سوال :
مزایا و معیب Dll ؟؟؟
چرا بعضی از دوستان می گویند که در وی بی 6 Dll نویسی فایده ای نداره لطفا مفصل توضیح دهید.
آیا اگر با هر زبان برنامه نویسی Dll استاندارد بنویسیم در زبان دیگر قابل استفاده است؟
استفاده از فایل Dll و ریختن توابع درون آن بهتر است یا در خود فایل اجرایی باشد؟(از نظر حجم و سرعت و غیره)
چرا وقتی در ویبی6 Dll می نویسم نحوه فراخوانی آن در خود وی بی 6 به صورت توابع API نیست؟
اگر در زبان دیگری مثل دلفی که متغیر های متنوعی نسبت به VB6 دارد یک Dll بنویسیم آیا مشکلی در استفاده از آن در VB6 به وجود می آید؟(مثلا انواع رشته ها)
چرا وقتی از اشیاع در توابعی که در Dll در وی بی 6 استفاده می کنیم مثلا تابعی که مربوط به کار با PictureBox است در Dll کامپایل می شود بعدا قابل استفاده نیست؟
و دیگر سوالاتی که الآن یادم نیست
اگر سوالاتم زیاد شد دوستان به بزرگی خودشون بخشند.

IamOverlord
یک شنبه 19 شهریور 1391, 00:47 صبح
اصولا DLL ها در زبان های برنامه نویسی مختلف قابل استفاده هستن، اما تا اون جایی که می دونم DLL های نوشته شده در VB6 به DLL خود VB6 نیاز دارن -یعنی MSVBVM60.DLL- که مسئله ی جالبی نیست...

AbbasVB
دوشنبه 20 شهریور 1391, 16:09 عصر
سلام
مثل این که کسی نیست جواب من رو بده!!!!!!!!!!!!!!!!!

اما تا اون جایی که می دونم DLL های نوشته شده در VB6 به DLL خود VB6 نیاز دارن -یعنی MSVBVM60.DLL- که مسئله ی جالبی نیست
ممنون که شما حداقل یه جوادی دادید!!
خوب خود برنامه هایی که با وی بی نوشته می شوند به این (MSVBVM60.DLL) نیاز دارند. آیا این طور نیست؟

arenaw
دوشنبه 20 شهریور 1391, 16:51 عصر
سلام
یه چیز دیگه ای هم که من شنیده بودم اینه که مثلا شما یه فانکشنی که رشته رو بر عکس میکنه رو با ویبی 6 تحت dll و همینطور همونو با C تحت یه dll دیگه مینویسید.
حالا اگه ازین dll ها تو هر کامپایلری استفاده کنید، سرعت جوابدهی اونی که با C نوشتید بیشتره

بهروز عباسی
سه شنبه 21 شهریور 1391, 09:18 صبح
درود
وقتی با وی بی DLL می سازی این DLL باز هم می تونه در برنامه دیگه ای که با وی بی نوشته می شه استفاده بشه چون وی بی وقتی از DLL خودش استفاده می کنه لیست توابع و آرگومان های آن را به راحتی به دست می آورد و در اختیار برنامه نویس دیگری قرار می دهد و این مورد زمانی که شما می خواهید کد هایتان لو نرود این روش روش مناسبی نیست و بهتر است کد ها درون خود فایل اجرایی قرار بگیرد
در ضمن اگر DLL در دسترس برنامه نباشد برنامه اجرا نمی شود و این یک نقص است
من که نتونستم از DLL ای که با وی بی نوشتم توی دلفی استفاده کنم اگه کسی بلده بگه ما هم بدونیم

MohammadGh2011
سه شنبه 21 شهریور 1391, 09:38 صبح
سلام عليکم

من که نتونستم از DLL ای که با وی بی نوشتم توی دلفی استفاده کنم اگه کسی بلده بگه ما هم بدونیم

ولي من تونستم DLL که با VB6 نوشتم، توي #C هم استفاده کنم؛Delphi رو نميدونم چه طوره يعني تا حالا باهاش کار نکردم که تستش کنم.

موفق باشيد

AbbasVB
سه شنبه 21 شهریور 1391, 13:47 عصر
سلام
مثل این که کسی نیست جواب سوال های من رو بده :ناراحت:


وقتی با وی بی DLL می سازی این DLL باز هم می تونه در برنامه دیگه ای که با وی بی نوشته می شه استفاده بشه چون وی بی وقتی از DLL خودش استفاده می کنه لیست توابع و آرگومان های آن را به راحتی به دست می آورد و در اختیار برنامه نویس دیگری قرار می دهد و این مورد زمانی که شما می خواهید کد هایتان لو نرود این روش روش مناسبی نیست و بهتر است کد ها درون خود فایل اجرایی قرار بگیرد
ممنون
الآن که فکر می کنم می بینم نکته درستیه:تشویق:
با برنامه هایی مثل PE Explorer lمیشه اسم کلاس رو به دست آورد
بعد توی برنامه تعریفش کرد و از توابعش استفاده کرد
پس بهتره در این رابطه کد ها رو داخل خود برنامه قرار دهیم

یه چیز دیگه ای هم که من شنیده بودم اینه که مثلا شما یه فانکشنی که رشته رو بر عکس میکنه رو با ویبی 6 تحت dll و همینطور همونو با C تحت یه dll دیگه مینویسید.
حالا اگه ازین dll ها تو هر کامپایلری استفاده کنید، سرعت جوابدهی اونی که با C نوشتید بیشتره
البته این نکته درستی است دلیلش هم به کامپایل کد ها بر می گردد و مباحث پردازش داده و cpu و غیره بر می گرده که من اطلاعات چندانی در موردش ندارم
ولی من منظورم سرعت استفاده از کد داخل برنامه نسبت به استفاده از DLL بود


دوستان لطفا جواب سوال ها رو بدهند :گریه::گریه::گریه::گریه::گریه: :گریه::گریه::گریه:

abidana
سه شنبه 21 شهریور 1391, 13:52 عصر
dll یه نوع پسوندی مثل exe,text حالا این مسئله که dll وی بی مثل exe واقعی نیست را نمی دانم حالا فرض را بر این می گیریم که واقعی شاید یه سری برنامه بنویسی که هر نسخه کامل شده ی نسخه قبلی باشد طبق گفته ی اقای بهروز عباسی لازمه سر هر برنامه کدی که توی همه ی برنامه هات جزو کد مادر است را همش کپی پیست کنی حالا اگر برنامت یکم قاطی و سنگین باشد در این امر دچار اشتباه می شی ولی اگر ان را dll کنی کارت راحت تره
راستس یکی از دوستام به من یه برنامه داده بود که بدون dll اصلی وی بی اجرا می شد نمی دانم کجاست می گردم و پیدایش می کنم و این فناوری مهم را به شما انتقال میدم

IamOverlord
سه شنبه 21 شهریور 1391, 14:05 عصر
یه مقاله ی حاشیه ای ولی مفید در رابط با پردازش رشته در VB6 و بهینه سازیش و ...: http://www.aivosto.com/vbtips/stringopt2.html

vbhamed
جمعه 24 شهریور 1391, 08:51 صبح
سلام

استفاده از DLL در پروژه هاي بزرگ كار خيلي درستي هست

1 - برنامتون حالت ماژولار پيدا مي‌كنه و كدهاي مرتبط با هم در يك DLL جداگانه قرار مي گيرند كه كارتون رو راحت مي‌كنه
2 - وقتي نيازي به توابع يا فرمهاي خاصي نداريد بيخودي در حافظه لود نميشن و فضا رو اشغال نمي‌كنن
3 - مي‌تونيد راحت يك قسمت خاص از برنامه رو ارتقاء بديد يا امكانات جديد به برنامه اضافه كنيد بدون اينكه نياز باشه كل برنامه رو براي مشتري ارسال كنيد (كار پلاگين در نرم افزارهاي ديگه)
4 - براي حفاظت از كدها مي‌تونيد كاري كنيد كه هر تابع DLL تون با يك كد فعالساز كه از طرف برنامه شما به عنوان پارامتر تابع ارسال ميشه كار كنه تا كسي كه كد رو نداره نتونه از DLL شما استفاده كنه