"لا يمكن تحميل الحزمة A، فإنه يحتوي على وحدة X، والذي يحتوي أيضا على الحزمة ب"

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

سؤال

(المزيد من الحزمة / مكون تثبيت متعة بالنسبة لي - شكرا للجميع على كل مساعدتكم حتى الآن).

أحصل على الخطأ المدرج باسم العنوان، في Delphi 2007. حزمة A هي حزمة من لوحات المشاهد المستندة إلى الإطار ". Package B عبارة عن حزمة تحتوي على بضع مكونات تستخدم لإظهار معلومات حول مجموعات البيانات المرتبطة بقاعدة بيانات Geven (SQL، ولاية الفئة، إلخ)، أحدها هو مكون غير مرئي (سنقوم بتسميته المفتش) الذي ينشئ ويستدعي نموذج يظهر هذه المعلومات. الوحدة X هي وحدة هذا النموذج.

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

أيضا، ما الذي سيضيف هذا مكون المفتش إلى أحد إطارات لوحة العرض (والذي يتم تثبيته أيضا كمكونات مسجلة)، تسبب هذه المشكلة؟

هذا يرتبط المرجح هذا السؤال السابق و هذا كذلك، لكنني قررت أن أبدأ جديدة مع هذا القضية / القضية المحددة، فقط لإبقائها موجزة وواضحة، ونأمل أن تكون مفيدة لشخص آخر في وقت لاحق. ويرجع الفضل في ذلك مسبقا لأية وكل مساعدة.


تحديث:

بفضل Loren، كنت قادرا على إيجاد وإزالة المرجع الاستخدامات الذي ظل وكان يسبب المشكلة. ومع ذلك، ما زلت غير واضح حول كيفية إنجاز ما أحاول إنجازه. : إليك الأحدث:

المفتش هو مكون بسيط غير مرئي يحتوي على خاصية DataSet، و "نموذج معلومات" داخلي. إن استدعاء أسلوب ShowInfo يخلق النموذج، ويممله بمعلومات مختلفة تتعلق بمجموعة البيانات المرتبطة. أريد أن استخدمها لتصحيح SQL قيادة المشاهدين.

كما ذكر أعلاه، يتم احتواء المفتش في الحزمة B. المشاهدين في الحزمة A. أريد استخدام مكون المفتش على بعض نسل Tframe (المسجل باسم مكونات لوحة حقيقية). عندما أسقط هذا المكون على Tframe المحدد ومع ذلك لاستخدامه، وقم بتجميع / تثبيت الحزمة A، أحصل على "تحميل حزمة A، أنه يحتوي على وحدة X، والتي تحتوي أيضا على الحزمة ب" خطأ. من الواضح أنه من الواضح أن السبب، ويمكنني إعادة إنشاء المشكلة عند الطلب.

اقتراح Moobaa أدناه منطقي، ومع ذلك يبدو أنه على الرغم من أنني أحاول القيام بذلك النهج رقم 2 من ما يقترحه، فإنه لا يعمل. ماذا ينقصني؟ يبدو أن هذا يجب أن يكون قادرا، وفي الواقع يبدو أنه يبدو أن معظم الحزم التي رأيتها تستخدم حزم أخرى مثبتة طوال الوقت (وشملت VCL نفسها).

ملاحظة: الحزمة B لا تعتمد على الحزمة A، بقدر ما أستطيع أن أقول (وقد قمت بتثبيتها تقف وحدها، بحيث يبدو أنها توافق).

(راجع للشغل، هل هناك أي أدوات ل "تخطيط" تبعيات الحزمة مثل هذا؟ أنا أستخدم D2007)

كما هو الحال دائما، شكرا على وقتك والمساعدة.

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

المحلول

فقط لأنك حذفت المكون لا يعني أنك حذف اسم الوحدة النمطية من جملة الاستخدامات - تلك ليست حذف تلقائي.

نصائح أخرى

يمكن أن تكون أيضا ذات صلة هذا السؤال.

يتم ربط الوحدة X بوضوح في كلا الحزمتين. هناك بضعة طرق حول هذا:

  • إنشاء حزمة جديدة (سنقوم بتسمية الحزمة C) مع الوحدة X (وأي تبعيات أخرى)، ثم قم بتغيير الحزمة A والحزمة B إلى كلا حزمة الاستخدام C؛ أو...
  • قم بتضمين الوحدة X في الحزمة B، ولدي حزمة حزمة الاستخدام B (وهو شكل أكثر إحكاما من الحل الأول).

إذا تم ذكر المشاهدين صراحة في كود الحزمة B الخاص بك، فيجب أن يكون الحزمة B أكثر بالتأكيد يستخدم الحزمة A (بمعنى آخر, ، يجب أن يكون هناك تبعية واضحة هناك). إذا لم يتم إجراء هذا المؤشر على التعليمات البرمجية المشتركة بشكل صريح، فسيحدد B إصداره الخاص من التعليمات البرمجية في B، مما يؤدي إلى المشكلة التي تراها.

الآن، إذا كان هذا التبعية على ما يرام، فينبغي إضافة مرجع إلى حزمة A من الحزمة B، يجب مسح هذه المشكلة على الفور؛ بعد كل شيء، ستكون B "استخدام" التعليمات البرمجية في الحزمة A، ولن يتم تجميع الوحدات نفسها في حزمتين. ومع ذلك، إذا قدم هذا مراجع دائرية (لا أستطيع أن أتذكر ما إذا كان يستخدم B أو لا)، فقد يكون لديك القليل من إعادة التدوير إلى:}

Loren: يتطلب جملة، لأنه .DPK، لا يمكنك استخدام حزم AFAIK.

أنا ببساطة تنظيف $ (BDSDIR) / المشاريع / DIR، مشاريع خاصة بي DIR لإزالة B.DCP وجميع DCU للحصول على الوحدات التي كانت في B ثم إعادة بناء A.

شيء آخر للتحقق مما إذا كان هناك مكون مسجل يعتمد على B.

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