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

جستجو