PDA

View Full Version : سوال در مورد DCU



یوسف زالی
دوشنبه 24 بهمن 1390, 13:21 عصر
سلام.
دوستان من یونیتی نوشتم که در سورسی که دادم فقط DCU اون رو دادم.
اما وقتی روی یک سیستم دیگه کامپایل می شه ارور می ده که این DCU با این ورژن از یونیتی که در اون Use شده کامپایل نشده.
چطور می شه مانع از این ارور شد؟
ممنون.

BORHAN TEC
دوشنبه 24 بهمن 1390, 15:14 عصر
توجه داشته باشید که اگر مثلاً یک یونیت را با دلفی 2010 کامپایل کرده باشید از فایل dcu حاصل شده فقط در دلفی 2010 می توان استفاده نمود و استفاده از آن در سایر نسخه ها غیر ممکن است.

Mask
دوشنبه 24 بهمن 1390, 15:47 عصر
یا فایل Pas رو بدی طرف که با همون ورژن کامپایل کنه.
یا dll کن.

یوسف زالی
دوشنبه 24 بهمن 1390, 16:31 عصر
نه، هر دو 7 هست..

BORHAN TEC
دوشنبه 24 بهمن 1390, 17:33 عصر
مهندس جون فقط نسخه 7 بودن ملاک نیست. شاید بیلدشون با هم فرق میکنه.

نه، اینطور نیست. اگه اینطور باشه یک مجموعه کامپوننت بدون سورس رو باید به 500 ورژن مختلف عرضه کرد!

یوسف زالی
دوشنبه 24 بهمن 1390, 21:29 عصر
داستان اینه که این DCU رو در یک یونیتی استفاده کردم، حالا یه سیستم دیگه می گه اون DCU با ورژن متفاوتی از "یونیتی که ازش استفاده کرده" کامپایل شده..

BORHAN TEC
سه شنبه 25 بهمن 1390, 12:36 عصر
داستان اینه که این DCU رو در یک یونیتی استفاده کردم، حالا یه سیستم دیگه می گه اون DCU با ورژن متفاوتی از "یونیتی که ازش استفاده کرده" کامپایل شده..
لطفاً متن خطا را بدون ترجمه کردن برای بررسی بیشتر به صورت دقیق در اینجا قرار بدید.

M_Maskout
شنبه 06 اسفند 1390, 13:41 عصر
سلام
این مشکل زمانی پیش میاد که شما تغییراتی در یکی از یونیتهایی که در قسمت uses از DCUی مورد نظر استفاده شده، ایجاد کرده باشین.
به کد زیر توجه کنید:


unit A;



interface







uses B, C;





implementation


‌ ‌

end.


unit B;





interface





implementation







end.

تو کد بالا در صورتیکه تغییری در یونیت B بعد از کمپایل کردن یونیت A ایجاد بشه، در صورتیکه در زمان استفاده از یونیت A، فقط DCUی اون در دسترس باشه و اصل B.Pas هم قابل دسترس باشه، امکان استفاده از A.DCU وجود نداره و پیام "عدم تطابق ورژن یونیت" برای کمپایل یونیت یا برنامه‌ای که بخواد از یونیت A استفاده کنه، نشون داده میشه.
احتمالاً تنها راه حل، این هست که یا سورس A رو در کنار برنامه قرار بدیم. یا سورس B رو از کنار برنامه حذف کنیم. تا از کمپایل B جلوگیری بشه.