السلام عليكم ورحمة الله وبركاته
لم افلح في نقل بيانت من مكتبة DLL الى برنامجي حيث يوجد في مكتبة DLL عدة عناصر من نوع Edit text
المطلوب نقل البيانات الموجودة في هذه العناصر الى بيانات عناصر اخرى في البرنامج
جربت المصفوفات ولم افلح لا ادري اين المشكلة
بارك الله فيكم
وعليكم السلام ورحمة الله وبركاته
لا تنس تحديد حجم البيانات لمعرفة نهايتها من المكتبة لكي لا تواجه أخطاء
وعليكم السلام ورحمة الله وبركاته
"لم أفلح" غير كافية لاكتشاف الخلل...
افتح مشروع جديد، أكتب فيه محاولتك ثم أرفقها هنا.
السلام علكم ورحمة الله
بارك الله فيكما
ربما لم اوضح فقط كثيرا فالمسالة متعلقة بنقل الكلمات الموجوة في كل عناصر edit TEX الموجودة في فورم الذي بدوره موجود في Dll
المشكلة كيفيةارساها واستقبالها من dll الى البرنامج سواء بمصفوفة او list string لا يهم
وفيك أخي الكريم
بهذا الشكل تتم الترجمة، غير أني لم أجرب الاستدعاء
PHP كود :
type
TStrArray = array[0..7] of string;
var
Form1: TForm1;
implementation
{$R *.dfm}
function SendString: TStrArray;
var
StrArray: TStrArray;
I: Integer;
begin
for I := Low(StrArray) to High(StrArray) do
StrArray[I] := TEdit(Application.FindComponent(Format('Edit%s', [I]))).Text;
Result := StrArray;
end;
exports
SendString;
ولا أعتقد أن هذه الطريقة أنسب لما تحاول القيام به
لو تخبرنا بالتفاصيل ربما نجد حلا أفضل
بالتوفيق.
الطريقة السابقة غير صحيحة بهذا الشكل
حتى وإن استخدمنا ShortString بدلا من string أو أضفنا ShareMem ضمن المكتبات وأرفقنا المكتبة borlndmm.dll مع التطبيق كما هو متعارف في dll بدلفي...
انظر:
كود :
http://stackoverflow.com/questions/3342327/how-to-pass-a-string-array-to-an-external-dll
بالتوفيق.
السلام عليكم ورحمة الله
بارك الله فيك اخي كاش واحد على المتابعة
الفكرة هي : **** عند الضغط على زر اضافة زبون جديد مثلا يظهر فورم موجود في dll يحمل اسمه ورقم هاتفه وعنوانه..الخ
وبعد ان تعبئة جميع الخانات يضغط موافق فأمرر تلك المعلومات الى البرنامج الذي فيه قاعدة البيانات
اي
كود :
table.insert;
table.filed[0].value=array[0];
table.field[1].valu=array[1]
table.post
لماذاافعل هذا ؟
اوفر فورم في برنامجي لتقيل حجم البرنامج
اوفر قاعدة بيانات في dll لاني عوض ان اضيف في dll محرك مثلا Unidac ارسلها للبرنامج وهو يضيفها
السلام عليكم ورحمة الله وبركاته .
القي نظرة على المرفق .
وعليكم السلام ورحمة الله وبركاته
جيد...
أولا: إن أردت نماذج Forms بداخل DLL انظر:
http://www.delphi4arab.net/forum/showthr...p?tid=1122
كود :
http://www.delphi-central.com/formdll.aspx
مثال Peter Morris في المرفق يشرح بذلك باستخدام مكتبات DLL
ثانيا: تصغير حجم البرنامج له حديث آخر...
لنحاول أن نفكر بطريقة أخرى...
الأجزاء المشتركة في البرنامج ليست بالضرورة في DLL
بناء تطبيق يقبل الإضافات هي طريقة منتشرة في كثير من البرامج
تعرف عادة Modularized Application أو تطبيقات تركيبية
يمكن دلفي برمجة ذلك إما باستخدام مكتبات DLL (كما في المثال السابق)
وهو الذي يمكّن برامج أخرى من مشاركة مكتبات الربط DLL
أو باستخدام حزم دلفي Delphi Package (كما هو الحال عند تثبيت المكونات dpk)
لا... لست بحاجة إلى تثبيتها على واجهة دلفي
إنما ربطها ديناميكيا، زمن التشغيل كما تفعل مع ملفات الربط DLL
يوفر دلفي ما يلزم من التوابع والإجراءات (في SysUtils) للقيام بذلك أثناء إقلاع البرنامج
يتم تحميل المكتبات على شكل ملفات bpl (وهي حزم مكتبة Borland)
للتحميل (ما يقابل LoadLibrary في DLL):
PHP كود :
function LoadPackage(const Name: string): HMODULE;
لاستدعاء صنف (يقابله GetProcAddress في DLL):
PHP كود :
function GetClass(const AClassName: string): TPersistentClass;
لتحرير الحزمة (FreeLibrary في DLL):
PHP كود :
procedure UnloadPackage(Module: HMODULE);
عندئذ يصبح حجم التطبيق صغير جدا
يمكن تخزين النماذج والمكونات (والجداول) في الحزم
Vino Rodrigues يشرح المثال في مقال أكثر من رائع:
كود :
http://edn.embarcadero.com/article/27178
مقال آخر لـ James Heyworth
كود :
http://www.obsof.com/delphi_tips/DL613.html
بالتوفيق.
بارك الله فيكما
لقد جنيت من السؤال فوائد كثيرة .ولقد كان المصطفى صلى الله عليه وسلم يجيب السائل ويزيده في كثير من الاحيان مثلا فقد سئل صلى الله عليه وسلم عن ماء البحر فقال هو الطهور ماؤه الحل ميتته اجاب السائل وزاده فائدة عظيمة
شكرا mohfa فقد كنت ابحث عن MDI Dll ووفرت عني بارك الله فيك
اخي كاش واحد لقد نجح معي المثال الاول في #5 الذي قلت لا ينجح وسبب عدم فلاحه عندي عدم تعريف StrArray: TStrArray ونشر BORLNDMM.DLL
والمثال يعمل جيدا
وسانظر في الخيرات التي ارفقت بارك الله فيك ويسر الله لك بهذا العلم طريقا للجنة