PDA

View Full Version : use کردن فرم ها، یونیت های داخل dll و package



Graphical
پنج شنبه 07 شهریور 1387, 17:53 عصر
با عرض سلام و احترام
-من در برنامه ام 12 عدد فرم دارم و یک فرم Main
- و هر فرم را داخل dll ذخیره کرده ام.
دیتابیس هم درون فرم Main قرار دارد و لازم است در فرم های دیگر استفاده شود.
موارد دیگری نیز در Main قرار دارد که در 12 فرم درون Dll قابل استفاده است.
چگونه می توانم فرم های Dll و Package را use کنم؟
سپاسگذارم

hadisalahi2
پنج شنبه 07 شهریور 1387, 19:30 عصر
دوست عزیز فراخوانی توابع و پروسیجرهای داخل یک فایل DLL رو میتونید به دو روش استاتیک و داینامیک فراخوانی کنید.
در صورتی که روش فراخوانی به صورت استاتیک است ، میتونی از کد های زیر استفاده کنی:



procedure Procedurename(parameters);stdcall;External 'DLL File Name & path'
Function Functionname(parameters):Function Type;stdcall;External 'DLL File Name & path'

Hsimple11
پنج شنبه 07 شهریور 1387, 19:33 عصر
در مورد فراخوانی اونا بصورت دینامیک هم توابع LoadLibrary و FreeLibrary را در سایت جستجو کنید.

Graphical
پنج شنبه 07 شهریور 1387, 20:04 عصر
من با فراخوانی Dll مشکلی ندارم اونارو فراخوانی میکنم
همونطور که گفتم : مثلا دیتابیس توی فرم اصلی قرار داره و وقتی یکی از فرم ها رو از dll فراخوانی میکنم نمیتونم به دیتابیس فرم اصلی یا موارد دیگه دسترسی داشته باشم .

hadisalahi2
پنج شنبه 07 شهریور 1387, 20:14 عصر
خوب پیغام خطا میده، چی میگه که وصل نمیشه؟
فکر نمیکنید در مورد سوالاتتون خیلی توضیح میدید؟...................................... ....!

vcldeveloper
جمعه 08 شهریور 1387, 01:57 صبح
چگونه می توانم فرم های Dll و Package را use کنم؟
use برای یونیت ها بکار میره، نه برای DLL. برای DLL شما باید از تابع های Export شده از اون DLL استفاده کنید. نمی تونید همینطوری از کانکشن برنامه اصلی در DLLها استفاده کنید، یک راهش اینه که شی کانکشن یا Dataset مربوطه را بصورت Pointer در هنگام لود شدن DLL به DLL ارسال کنید. در مورد Packageها، این امکان وجود داره که بتونید یک Object را به یک Package دیگه ارسال کنید، ولی خب اون هم به چند خط کدنویسی نیاز داره. فکر کنم در این زمینه - شی ها درPackageها - توی سایت مطلب و مقاله داشته باشیم.

zarnegar2160
پنج شنبه 04 مهر 1387, 00:15 صبح
سلام من هم همین مشکل رو دارم
چطور می تونم شی کانکشن یا Dataset مربوطه را بصورت Pointer در هنگام لود شدن DLL به DLL ارسال
کنم ممنون میشم اگه کمکم کنید.

vcldeveloper
پنج شنبه 04 مهر 1387, 01:32 صبح
چطور می تونم شی کانکشن یا Dataset مربوطه را بصورت Pointer در هنگام لود شدن DLL به DLL ارسالیک تابع در اون DLL تعریف کنید که اشاره گر مربوطه را تعریف کنه:


function SetConnection(AConnection: pointer): Boolean; stdcall;
begin
try
DLLConnection := TAdoConnection(AConnection);
DLLConnection.Connected := True;
Result := True;
except
Result := False;
end;
end;
برای فراخوانی آن در برنامه، به فرض اینکه DLL را لود کردید:

SetConnection(Pointer(AdoConnection1));