كيفية مشاركة المتغيرات بين المكتبات في دلفي عام 2009 ؟

StackOverflow https://stackoverflow.com/questions/1811615

سؤال

أحاول تقسيم متجانسة ، دلفي-Win32 التطبيق في المكتبات ، حتى أحصل على بعض الأسئلة حول كيفية مشاركة المتغيرات العالمية و الكائن بين المكتبات باستخدام دلفي 2009.على سبيل المثال لدي 3 كائنات عمومية (مشتقة من TObject):للحصول على معلومات المستخدم ، الدورة معلومات لتخزين النشطة اتصال قاعدة البيانات وإدارة العمليات مع قاعدة البيانات هذه.بلدي المكتبات تحتاج إلى العمل مع هذه الكائنات.وعلاوة على ذلك بعض المكتبات تعطي كائن مشتق من تفورم أن استضافت آخر الوالد عنصر تحكم في النموذج الرئيسي.كل كائن مشتق من تفورم تمريرها إلى النموذج الرئيسي لديها الأساليب والخصائص التي تمكنهم من الطبقات المختلفة بعضها البعض.

أنا أفكر أن أضع العالمية الكائنات إلى مكتبة منفصلة ولكن أعتقد أنه من شأنه أن يجعل الأمور أكثر صعوبة ، ولكن النظر في ذلك ، الرجاء.

كيفية الحصول على العمل في هذه الحالة ؟

سؤال واحد أكثر من ذلك ، وهو أفضل من استخدام:ثابتة أو ديناميكية تحميل المكتبات ؟ يمكنك يوصي بعض الكتب أو المواقع لمعرفة المزيد عن هذا ؟

شكرا مقدما.

هل كانت مفيدة؟

المحلول

ما قمنا به في الماضي للمشاركة المتغيرات بين وحدات (كنا BPLs) كان يمر من خلال مشترك TStringList.وبصفة عامة فإنه من الأفضل أن يكون العالمية المشتركة الكائن مع كل المتغيرات المشتركة في ذلك.

أي شيء سيكون المشار إليها بين أكثر من واحد المكتبة يجب أن يكون في مكتبته الخاصة. ميسون المشورة السليمة.

تذهب مع ساكنة التحميل إلا إذا كنت حقا بحاجة إلى ديناميكية لسبب معين (الذي لا يبدو).دعونا نوافذ الذاكرة مدير مبادلة غير الضرورية المكتبات من الذاكرة.

واحد نصيحة من شخص الذين تمكنوا من تطبيق كبير تنقسم إلى مكتبات متعددة.كان لدينا عناصر في مجموعات VCL, بعض التطبيقات المشتركة الروتينية ، ومن ثم مكتبة لكل "الشاشة" أو جزء من التطبيق.لإجراء تغييرات على الشاشات ، كان من الممكن أن مجرد إطلاق هذا واحد تحديث المكتبة, ولكن التغييرات إلى أي من أنواع أخرى من المكتبات ، وجدنا نحن عادة قد نقل كل شيء.لذلك كان نادر استمتعنا ميزة من التكوين.

نصائح أخرى

يبدو أن "المكتبات" تعني BPL حزم ، حتى هنا هي المبادئ التوجيهية:

كل BPL, عندما يحصل على تحميل, تحميل جميع الوحدات في ذلك.أي وحدة يمكن تحميل أكثر من مرة.وهذا يعني أنه إذا كان أكثر من واحد حزمة يحتاج إلى الوصول إلى واحدة من globals, ثم يجب أن تكون إما في حزمة واحدة أخرى(ق) في يتطلب قائمة أو في حزمة منفصلة أن كل الآخرين تتطلب.

أما بالنسبة ثابت مقابلتحميل الديناميكي ، إذا كان البرنامج يحتاج على الإطلاق ، وجعله مرتبطة بشكل ثابت.تحميل الديناميكي هي ميزات اختيارية مثل الإضافات.(إذا كنت تريد أن تذهب في هذا الطريق ، نلقي نظرة على JVPlugin في JVCL.انها مفيدة جدا نظام.)

وأنا لا أفهم لماذا الناس بالذكر نسخة دلفي للسؤال بسيط مثل هذا، فإن الجواب هو نعم هو الأفضل لوضع المتغيرات المشتركة في وحدة منفصلة قبل الكلمة التنفيذ. ويستمد كل كائن (شكل، والطبقة، ومراقبة) من TObject، حتى إذا قمت بتعريف فئة مثل

type TMyClass = class
  // no inheritance ?
end;

لا تزال تستمد الطبقة المذكورة أعلاه من TObject (اقرأ دلفي مساعدة). يمكن تعريف المتغيرات العالمية بك من نوع TObject أو مؤشر وعند الوصول إليها استخدام TForm يلقي الصعبة (MyPointerVariable) .Method، أي بمعنى.

var MyPointerVariable: Pointer; // I presume it is already initialized and is a pointer to a TForm descendant
...
begin
     TForm(MyPointerVariable).Caption := 'Stack Overflow';
end;

لمزيد من المعلومات قراءة دلفي البرنامج التعليمي على بلدي بلوق يجب أن تكون بسيطة جدا لفهم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top