لم افلح في نقل بيانت من مكتبة 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 بدلفي...
انظر:
السلام عليكم ورحمة الله
بارك الله فيك اخي كاش واحد على المتابعة
الفكرة هي : **** عند الضغط على زر اضافة زبون جديد مثلا يظهر فورم موجود في dll يحمل اسمه ورقم هاتفه وعنوانه..الخ
وبعد ان تعبئة جميع الخانات يضغط موافق فأمرر تلك المعلومات الى البرنامج الذي فيه قاعدة البيانات
اي
مثال 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);
عندئذ يصبح حجم التطبيق صغير جدا
يمكن تخزين النماذج والمكونات (والجداول) في الحزم
بارك الله فيكما
لقد جنيت من السؤال فوائد كثيرة .ولقد كان المصطفى صلى الله عليه وسلم يجيب السائل ويزيده في كثير من الاحيان مثلا فقد سئل صلى الله عليه وسلم عن ماء البحر فقال هو الطهور ماؤه الحل ميتته اجاب السائل وزاده فائدة عظيمة
شكرا mohfa فقد كنت ابحث عن MDI Dll ووفرت عني بارك الله فيك
اخي كاش واحد لقد نجح معي المثال الاول في #5 الذي قلت لا ينجح وسبب عدم فلاحه عندي عدم تعريف StrArray: TStrArray ونشر BORLNDMM.DLL
والمثال يعمل جيدا
وسانظر في الخيرات التي ارفقت بارك الله فيك ويسر الله لك بهذا العلم طريقا للجنة
لأستهلنّ الصعب أو أدرك المنى فما انقادت الآمال إلاّ لصابر