PDA

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



Fastdesign
جمعه 15 مهر 1390, 21:50 عصر
سلام
کسی می تونه در مورد Dll کمی توضیح بده چیه و چه فرقی با کامپوننت داره؟
بعدش من می خواستم رو سورس یک نرم افزار که کسی دیگه نوشته بود کار کنم همه ی کدها را تبدیل به Dll کرده بود به نظر شما Dll چه مزایایی داره؟

سعید صابری
جمعه 15 مهر 1390, 22:01 عصر
لطفا قبل از ایجاد تاپیک جستجو کنید.

اینو ببین (http://forum.p30world.com/showthread.php?t=365632)

daneshmand1354
شنبه 16 مهر 1390, 21:46 عصر
سلام هدف از کامپوننت و dll به اشتراک گذاری منابع برای استفاده دیگران و یا استفاده ساده تر توسط خود شخص است . در کل میتوان گفت که کامپوننت بهتر است زیرا در برخی نسخه های دلفی نظیر دلفی 7 dll جنبه ویژوال ندارد و فقط میتوان با کد نویسی از توابع آن استفاده کرد ولی کامپوننتهای اشیاء ویژوال هستند مانند button . البته در برخی نسخه های جدید مانند سی شارپ dll ها میتوانند ویژوال نیز باشند.

سعید صابری
شنبه 16 مهر 1390, 22:50 عصر
سلام هدف از کامپوننت و dll به اشتراک گذاری منابع برای استفاده دیگران و یا استفاده ساده تر توسط خود شخص است . در کل میتوان گفت که کامپوننت بهتر است زیرا در برخی نسخه های دلفی نظیر دلفی 7 dll جنبه ویژوال ندارد و فقط میتوان با کد نویسی از توابع آن استفاده کرد ولی کامپوننتهای اشیاء ویژوال هستند مانند button . البته در برخی نسخه های جدید مانند سی شارپ dll ها میتوانند ویژوال نیز باشند.

چرا در دلفی 7 جنبه ویژوال ندارد؟ البته اگه اون dll ی باشه که در ذهن منه.چون در همین سایت نیز جستجو کنید dll هایی را خواهید یافت که دارای عناصر ویژوال هستند.

daneshmand1354
یک شنبه 17 مهر 1390, 16:06 عصر
این جزو نقاط ضعف دلفی 7 است البته کامپوننت نویسی نیز در دلفی 7 ضعیفتر از سی شارپ است زیرا محیط کامپوننت سازی در دلفی 7 برای برنامه نویس ویژوال نیست گرچه نتیجه نهایی آن ایجاد شیء ویژوال است.

joker
یک شنبه 17 مهر 1390, 17:36 عصر
DLL یا یک کامپوننت خلاصه ای از توابع قابل دسترسی برنامه نویس هستند .
کامپوننتها یا اکتیوایکس ها معمولا مستقیم در ide کامپایلرها با یک کلیک در دسترسی هستند ، البته کامپوننتهای غیرویژوال هم هست که با آوردن اسمشون در uses میشه از توابع داخلیشون استفاده کرد ، ولی dll ها برای در دسترس بودن توابعشون چیز ویژوالی ندارند، فقط توابعشون را میتونید صدا بزنید.

حسنی که dll داره اینه که برنامه نویس بدون اینکه نگران محیط برنامه نویسی مورد استفاده باشه و بدون توجه به نوع کدنویسی برنامه نویس dll ، میتونه توی همه زبانهایی که با dll کار کنن ، کار بکنه ، کافیه برنامه نویس پارامترهای ورودی یک تابع در فایل dll را بدونه.دیگه فرقی نداره محیط کارش دلفی هست یا بیسیک
( به استثناء بعضی موارد که به صورت داخلی نیازمند یک محیط خاص هستند )

joker
شنبه 12 اسفند 1391, 16:41 عصر
، ولی dll ها برای در دسترس بودن توابعشون چیز ویژوالی ندارند، فقط توابعشون را میتونید صدا بزنید.

من نگفتم يك فايل dll نميتونه فرم و موارد وي‍ژوال نداشته باشه ، گفتم براي دسترسي به منابع داخل يك دي ال ال ، فقط صدا زدن اسم تابعش را در اختيار داريد.
حالا منابع داخل يك dll ديگه هر چيزي ميتونه باشه كه هر جوري براش تعريف شده باشه ميشه باهاشون كار كرد.

در هر حال 100 تا فرم ويژوال هم در يك dll باشه ، تا اسم تابع بارگزاري اين فرمها را صدا نزني ، ( يعني تنها چيزي كه براي شروع كار از يك دي ال ال در اختيار داري ) هيچ اتفاقي نمي افته :)

یوسف زالی
شنبه 12 اسفند 1391, 20:21 عصر
سلام.
BPL ها DLL هایی هستند که ویژوال هستند !! :لبخند:
اون اکتیوکس ها هم به نوعی DLL هایی هستند که ویژوال هستند!
علاوه بر این DLL های خالصی هم هستند که ویژوال می شوند! (اجزای دیداری دارند) البته ران تایم. نمونه: Cards.DLL در مسیر System32

البته در ساختار درونی اینها خیلی تفاوت وجود داره. مثلا در ActiveX ها حتما باید Entry Point های خاصی تعریف شوند.

اما در خصوص اون دوستتون که DLL کرده، معمولا برنامه نویس ها کتابخانه هایی رو که می نویسن رو DLL می کنن تا بتونن به راحتی در برنامه های دیگشون هم ازش استفاده کنن. البته فارغ از هزاران دلیل احتمالی دیگه؛ نه همبشه DLL کردن یعنی برنامه نویس خفن بودن، نه همیشه تک Exe دادن یعنی آخرش بودن!
با توجه به مسائل و نیازهای برنامه هر سلیقه ای می تونه روشی رو بکار بگیره. از DLL ها هم نترسید، اسمش فقط دهن پرکنه، شاخ غول نیست.

developing
یک شنبه 13 اسفند 1391, 10:28 صبح
با سلام

چرا در #C کامپوننت ها اکثرا به صورت dll هستند؟

خب معلومه به خطر طبیعت محیط ویژوال استودیو (یا بهتر بگم دات نت فریمورک) که باید چند زبان از جمله VB و ++C و حتی دلفی پریسم رو پشتیبانی کنه.

بهترین کار برای اینکه کامپوننت ها رو بتوان در زبان های دیگه لود کرد استفاده از dll هست.

در ضمن کی گفته توی دلفی نمی شه کامپوننت رو داخل dll قرار داد؟ میشه خیلی هم راحته.

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

بعدش هم اگه شما بخواید می تونید به صورت ویژوال کامپوننت تولید کنید فقط از لحاظ کارایی شاید افت سرعت پیدا کنید( که البته آنقدر ناچیز هست که می شود از آن صرف نظر کرد فقط در مواردی که به قول حرفه ای ها Performance خیلی مهم باشه بهتره که از این روش استفاده نکنید.)

روش ایجاد کامپوننت ویژوال:

ابتدا یک package ایجاد کنید بعد هر چیزی رو که خواستید درونش به کار ببرید (برای ویژوال شدن بهتره از Frame استفاده کنید. برای این کار: روی Package مورد نظر در Project Manager راست کلیک کنید و گزینه ی New سپس Other را انتخاب کنید.)

کدهای مورد نیاز را نوشته

بعد باید این کامپوننت رو ثب کنید.

به جای implementation دستورات زیر را بنویسید


procedure Register;

implementation

procedure Register;
begin
RegisterComponents('My Components', [TFrame1]);
end;

در این جا TFrame1 نام کلاس فرم مورد نظر است. (یعنی اگر یونیت مورد نظر را ببینید در قسمت Tpype یونیت به اینصورت تعریف شده است TFrame1 = class(TFrame) که در اینجا TFrame1 مورد استفاده قرار می گیرد.)

و رشته ی اول که همان My Components می باشد نام برگه ای است که شما می خواهید کامپوننت شما در آن برگه در Tool Palette قرار گیرد.

در اینجا کافی است شما بر روی Package مورد نظر خود در پنجره Project Manager راست کلیک کرده ابتدا کامپایل سپس Install را بزنید.

کامپوننت مورد نظر شما در برگه ی نوشته شده با نام TFrame1 نمایان خواهد شد.