‏نمایش پست‌ها با برچسب Error. نمایش همه پست‌ها
‏نمایش پست‌ها با برچسب Error. نمایش همه پست‌ها

Migrate a project from Delphi 7 or Delphi XE2 to Delphi XE4

امروز می خواستم یک پروژه که از Delphi 7 به Delphi XE2 ارتقاء داده بودم رو به Delphi XE4 ارتقاء بدم. اما با خطای زیر مواجه شدم :
E2003 Undeclared identifier: ' ShortDateFormat'

خوب اینجور که از سایت شرکت Embarcadero معلوم هست، متغیر هایی مثل ShortDateFormat، DateSeparator، CurrencyString و ... در FormatSettings مجتمع شدن و برای استفاده از اون ها باید به شکل زیر در برنامه نوشته بشن:

FormatSettings.ShortDateFormat := 'dd/MM/yyyy';

اگر هنوز نرم افزارهایی دارید که از Delphi 7 برای برنامه نویسی اون ها استفاده می کنید و اگر در فکر ارتقاء اون ها هستید باید چند نکته رو بدونید:

  • در Delphi 2009 پشیبانی از Unicode به این زبان اضافه شده، و اگر با اون آشنایی ندارید، احتمالا به مشکل بر خواهید خورد. برای اطلاعات بیشتر یا از اینجا White Paper: Delphi and Unicode را دانلود کنید و بخونید و یا بخش اول کتاب Delphi 2009 Handbook رو مطالعه کنید. البته چند لینک مفید هم در آخر معرفی میکنم.
  • اگر از متغیر هایی مثل ShortDateFormat' استفاده می کردید، باید مثل مثال بالا ازشون استفاده کنید.
  • Namespace ها هم به دلفی اضافه شدن. مثلا به جای SysUtils باید و بهتره که بنویسید System.SysUtils و بهتر هست که از این قابلیت در کلاس ها و یونیت های خود استفاده کنید.
  • اگر در شرط هاتون از مجموعه ای از کاراکتر ها (Sets of Characters) استفاده میکردید، به خاطر اینکه قبلا کاراکتر ها Ansi بودن و هر کاراکتر نمایانگر یک بایت بوده میتونستید از شرط زیر استفاده کنید:
if C in ['a'..'z', 'A'..'Z'] then


اما الان چون کاراکتر ها WideChar تعریف شده اند، باید از دستور CharInSet به صورت زیر استفاده کنید:


if CharInSet(C, ['a'..'z', 'A'..'Z']) then

  • و در آخر اگر از کامپوننت های قدیمی استفاده می کنید، به احتمال قوی اون ها از Unicode و توابع جدیدی که به دلفی اضافه شدن، پشتیبانی  نمیکنن و اون ها رو باید ارتقاء بدید.

چند لینک درباره Unicode در دلفی:


\.Chehre

خطا در اجراي برنامه

چند وقت پيش که مي خواستم يک برنامه اي رو با سي شارپ بنويسم به يک خطا بر خوردم. قضيه از اين قرار بود که من بايد از يک COM در برنامه خودم استفاده مي کردم. و وقتي که شي مربوط به اون COM را روي فرمم قرار ميدادم و برنامه رو اجرا مي کردم با خطاي
Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
مواجه ميشدم. براي مثال اگر مي خواستم از فايل هاي فلش در برنامم استفاده کنم، با خطاي زير مواجه ميشدم.


خوب با اين خطا وقتي مواجه ميشدم که برنامم رو داشتم با Platform پيشفرض ويژوال استوديو يعني Any CPU اجرا مي کردم.
و چون ويندوز من Windows7 64-bit هست با خطا مواجه ميشدم چون ويژوال استوديو مي خواست برنامه من رو در پلتفرم 64 بيت اجرا کنه، در صورتي که من داشتم از COM 32bit در برنامم استفاده مي کردم.
حالا براي اجراي برنامه بايد Platform را به x86 تغيير ميدادم.

براي اطلاعات بيشتر درباره برنامه هاي 64 بيتي ميتونيد به آدرس زير مراجعه کنيد:
http://msdn.microsoft.com/en-us/library/ms241064.aspx

جستجو