افزونه های CodeGear Rad Studio برای دلفی

29 04 2009

در این نوشتار قصد دارم که شما رو با چند تا از افزونه های محیط توسعه دلفی یعنی CodeGear Rad Studio آشنا کنم.

بسیاری از این ابزار های برای افزایش سرعت کد نویسی و افزودن قابلیت ها و حتی جبران کاستی های این محیط توسعه تهیه شده اند.

  • CnPack IDE Wizards

ابزار رایگان و opens source است که قابلیهای خوبی را اضافه می کند از جمله تعدادی wizard . این افزونه با داشتن Code Structure Highlight که با رنگی کردن بلاک ها به تشخیص کد ها کمک می کند.

CnPack Editor Toolbar
CnPack

Structure highlighted
Structure highlighted

قابلیت کار با محیط های:

Delphi 5 6 7, C++Builder 5 6 or BDS 2005 2006, RAD Studio 2007 2009

ویژگی ها:

Code Input Helper
Code Structure Highlight and Lines
Enhanced Units/Forms List
TabOrder Wizard
Flat Toolbar in Form Designer with full customized
MSDN Help Integrated
Toolbar in Editor with full customized
Project Extension Tools
Multi-line Component Palette
Roll Windows and Set to Topmost
Source Codes Statistics
Lots of Other Improvements

افزونه های این ابزار که به آن اضافه شده اند:

CnWizards Configuration Import&Export
DFM File Convertor
IDE Config Backup/Restore Tool, including IDE History Cleaner
Debug Output Unit & Viewer
ASCII Chart
IDE External Wizard Management Tool
Source-Module Relation Analyzer

سایت سازنده

لینک دریافت

  • GExperts

این افزونه نیز قابلیت های زیادی را به محیط توسعه اضافه می کند. بیشتر قابلیت های اضافه شده مربوط ابزارهای کمکی است و همچنین ابزارهایی نیز برای کمک برنامه نویس در ویرایشگر کد به محیط توسعه اضافه می کند.

امکانات اضافه شده به ویرایشگر کد

امکانات اضافه شده به ویرایشگر کد

همچنین این افزونه یک افزونه اضافه و غیر رسمی دیگر دارد که برای فرمت کردن کد مورد استفاده قرار می گیرد. موردی که دلفی آن را کم دارد!

این افزونه اضافی که code formatter نام داره تحت بسته ای با نام Experimental GExperts Version عرضه می شه که می تونید از سایتش دریافت کنید:

دریافت Experimental GExperts Version

قبل از هر کاری باید GExprts را دریافت کرده و نصب کنید. سپس این Experimental GExperts را دریافت کنید. پس از دریافت باید فایل های موجود در پوشه EditorExpert را با فایلهای ابزار GExprts جایگزین کنید.(مشاهده کنید) پس از آن کلید ALT+F کد را برای شما مرتب خواهد کرد.

قابلیت پشتیبانی از محیط های Delphi 6, 7, 8, 2005, BDS 2006, RAD Studio 2007, 2009

سایر ویژگی ها و راهنما رو اینجا مطالعه کنید.

سایت سازنده

لینک دریافت GExprts

  • Castalia

این افزونه قابلیت های زیادی به ویرایشگر کد اضافه می کند. این افزونه متاسفتانه پولی است.

از جمله قابلیت های زیر:

Editor Changes
Line Numbers
Navigation Toolbar
Structural Highlighting
Flow Control Highlighting
Live Syntax Checking
Syntax Error Balloons
Code Templates
Inline Variable Declaration
Parenthesis Matching
One Key Commenting
One Key Indentation
Modeless text search toolbar
Automated intelligent line wrap
New Editor Context Menu Items
Refactoring
New IDE Windows
Flyout Bar
Project Statistics
MultiPaste
Fix Line Breaks
Castalia In Code Editor

Castalia In Code Editor

با داشتن تعدادی قالب کد و همچنین نمایش خطاها و کد های اشتباه در بالون و بوکمارک کردن راحت کد از ویژگی ها این ابزار است. همچنین ویژگی Structure highlighte که همانند ابزار CnPack برای مشخص کردن بلاک ها کد مورد استفاده است جالب هستند. در صورتی که هر دوی CnPack و Castalia رو نصب کرده باشید ممکنه که این نوع رنگ آمیزی کمی گیج کننده بشه که می تونید یکی از اونها رو غیر فعال کنید.

امکان تغییر نام کنترل و موارد استفاده شده از آن و عوض کردن کنترل و چند مورد دیگر برای عملیات Refactoring ویژگی ها اضافه شده به محیط ویرایشگر فرم هستند.

سایت این ابزار

DDevExtensions

این افزونه بیشتر بر روی عملیات کامپایل کد و ویژگیها IDE تمرکز داره

ویژگی های این افزونه:

Adds an improved View Units, View Forms and Use Units dialog
Adds an extended “Use Units” dialog for the Delphi personalities showing all files that the compiler can see
Keybinding for extended HOME and indent/unindent TAB/Shift-TAB
Ctrl+Left/Right like in VisualStudio
Adds a dialog to set the versioninfo for multiple projects in a projectgroup
Can disable the Source modified. Rebuild? dialog
Brings back the old component palette
Allows to disable the package cache
Adds a progressbar to the compile dialog
Adds Explicit* property remover to keep DFM files compatible to older Delphi versions
Allows to delete .ddp files, empty Model and empty __history directories.
Adds a backup system that creates backups of unsaved files when you compile or execute a project.
Adds the option to automatically save after a successful compile
Adds the ability to close the IDE even if the IDE’s termination code raised an exception
Adds the ability to kill the IDE after saving all files by using Ctrl+Close-Button
Enables Delphi 2009’s ability to cancel the Kibitz-Compiler by pressing ESC or moving the mouse

از ویژگی جالب این افزونه می توان به موارد زیر اشاره کرد:

  • ابزار Use Unit پیشرفته
  • اصلاح عملکرد کلید های Ctrl+Left/Right و Home
  • ذخیره فایلها پس از کامپایل موفق و حذف فایلهای پشتیبان زاید
  • حذف کدهای غیر ضروری تولید شده در فایل DFM

وبلاگ نویسنده

لینک دریافت





مروری بر Delphi 2009 و مهاجرت به آن

24 02 2009
Delphi 2009

بعد از Delphi 7 که در زمان خودش (2001) کم نظیر بود نسخه های بعدی اون بسیار ضعیف ظاهر شدند. مخصوصا که شرکت Borland قصد داشت تا به سمت دات نت حرکت کند و این مورد به علت سیاست های ماکروسافت موفقیت پیدا نکرد. به هر حال پس از قضایای شرکت زیر مجموعه CodeGear و خریده شدن آن توسط Embarcadero سیاست دلفی تغییر کرد و مانند گذشته بر روی برنامه های سرویس دهنده و سرویس گیرنده تحت دسکتاپ تمرکز کرد.

اما اونچه که مد نظر من هست بررسی نسخه 2009 و ارزش مهاجرت به این زبان هست. برای همین باید اولین مورد یعنی به بررسی امکانات بپردازیم.

IDE
محیط توسعه دلفی در زمان نسخه 7 کامل بود ولی گذشت زمان نیازهای جدیدی رو مطرح می کرد که به تدریج به اون اضافه کرد. اما نسخه های مختلف عرضه شده بعد از اون بسیار ناپایدار بودند.
Delphi 7 بسیار پایدار است. تا حدی که به شخصه در مدت چهار سال استفاده کمتر از چند مورد با کرش مواجه شده بودم.
Delphi 8 بر روی توسعه دات نت تمرکز داشت
Delphi 2005 بسیار ناپایدار تا حدی که در برخی مواقع در کامپایل کردن هم باز می ماند.
Delphi 2006 همچنان ناپایدار ولی بهبودهایی حاصل شده بود.
Delphi 2007 همراه با ایجاد شرکت CodeGear بود و پایداری قابل قبولی داشت
Delphi 2009 نسخه فعلی که پس از خریده شدن CodeGear توسط embarcadero عرضه شده و پایداری خوب و قابل قبولی دارد دارد.

بررسی تعدادی از ویژگی ها Delphi 2009

Error Inside
این ویژگی خطاهای کد را در هنگام نوشتن شناسایی می کند و در همانجا نمایش می دهد. ویژگی بسیار بدرد بخوری است ولی در برخی مواقع قادر به شناسایی برخی کلمات رزرو شده که به ندرت استفاده می شوند نیست.

Resource Compiler
امکان اضافه کردن انواع فایل را به Resource مانند فایل یا تصویر به پروژه می دهد. پس از آن میتوان به این منابع از طریق کد دسترسی پیدا کرد. اگرچه این امکان قبلا نیز با تنظیم فایل های .res وجود داشت ولی هیچ ابزار UI برای آن در نظر گرفته نشده بود.

Refactor
این ویژگی بر میگردد به دو نسخه قبلی از دلفی ولی با این حال بسیار قابل توجه است. امکانات استاندارد Refactoring در این قسمت در نظر گرفته شده است. همچنین امکان Find Unit که در صورتیکه به دنبال تابعی هستید که نمی دانید در کدام Unit معرفی شده است می توانید از این مورد استفاده کنید.

پشتیبانی از Unicode
تمامی کنترل ها و محیط ویرایشگر دلفی از یونیکد پشتیبانی می کنند.

نتیجه
با توجه به پیشرفت های ذکر شده، با این حال محیط توسعه دلفی در مقایسه با محیط هایی مانند Visual Studio و Netbeans بسیار ضعیف عمل می کند و آنطور که انتظار می رود به خود کارسازی کارها کمک نمی کند.

زبان دلفی

زبان دلفی سه ارتقاع مهم داشته است. پیتیبانی از Unicode و Generic ها و پشتبانی از Anonymous متد ها یا متد های بی نام.

Generic ها این امکان را می دهند تا کلاس یا نوعی خاص بتواند در هنگام تعریف ورودی از هر نوعی را بپذیرد تا بتوان در هنگام استفاده نوع مورد نظر را تعریف کرد. یک نمونه مثال مانند زیر خواهد بود:

type
TPair<TKey,TValue>= class
private
	FKey: TKey;
	FValue: TValue;
public
	function GetKey: TKey;
	procedure SetKey(Key: TKey);
	function GetValue: TValue;
	procedure SetValue(Value: TValue);
	property Key: TKey read GetKey write SetKey;
	property Value: TValue read GetValue write SetValue;
end;

type
	TSIPair = TPair<String,Integer>;
	TSSPair = TPair<String,String>;
	TISPair = TPair<Integer,String>;
	TIIPair = TPair<Integer,Integer>;

متد های Anonymous
این نوع متدها بی نام تعریف می شوند و امکان ارجاع آنها به عنوان ورودی تابع با متغیری از نوع تابع وجود دارد. در این حالت امکان تعریف تابع درون کد تابع دیگر وجود خواهد داشت. برای مثال می توان به جای تعریف متدی جدید و سپس ارجاع آن به عنوان ورودی یک تابع دیگر، در همانجا تابع بی نام را تعریف کرده و به ورودی پاس کنیم.
این نمونه مثال از راهنمای دلفی است که به ویژگی MyEvent یک تابع بی نام اختصاص می دهد:

type
	TProc = reference to procedure;
	TMyComponent = class(TComponent)
	private
		FMyEvent: TProc;
	public
		property MyEvent: TProc read FMyEvent write FMyEvent;
	end;

// function declaration
// https://salarblog.wordpress.com

var
	c: TMyComponent;
begin
	c := TMyComponent.Create(Self);
	c.MyEvent := procedure
	begin
		ShowMessage('Hello World!');
	end;
end;

پشتیبانی از Unicode
پشتیانی از Unicode مقداری برای دلفی سخت بود، چرا که شیوه ای که ذخیره کردن رشته ها در دلفی مورد استفاده قرار می گیرد، اگرچه سریع است ولی انعطاف کمی دارد. به هر حال این تغییر اعمال شده است. کامپوننت هایی که از رشته ها به عنوان بافر استفاده می کنند مطمئنن دچار مشکل خواهند شد چرا که روش ذخیره بافر مورد استفاده برای رشته در دلفی 2009 متغیر است و بستگی به نوع رشته دارد.

برای پشتیبانی از Unicode چند کلاس و نوع جدید ایجاد شده اند. کلاس TEncoding که شامل انواع تبدیلات است و نوع جدید UnicodeString که به طبع آن انواع مشابه و وابسته شامل WideString, AnsiString, ShortString,UTF8String و انواع اشاره گرهای آنها با پیشوند P.

دو Unit جدید WideStrUtils و WideStrings نیز برای کار و تبدیلات انواع رشته های یونیکد در نظر گرفته شده است. همچنین برای سازگاری با نسخه های قبلی دلفی نیز دستور کامپایلر UNICODE تعریف شده که استفاده از آن مانند زیر است:
{$IFDEF UNICODE}

اگر راهنمای دلفی را نصب کرده اید اینجا را برای انتقال پروژه خود به Unicode مطالعه کنید:
ms-help://embarcadero.rs2009/devcommon/enablingunicode_xml.html

کلاسهای افزوده شده:
در این میان چند کلاس کاربردی برای کار با Stream ها همانند TStringReader ، TStringWriter ، TStreamReader و TStreamWriter اضافه شده اند.
کنترل TButtonedEdit که کاربردی هم هست به همراه کنترل های زیر اضافه شده اند:

TButtonedEdit and TCategoryPanel (TPanel with a header to collapse and expand the panel) added to the ExtCtrls namespace
TCategoryPanelGroup, a container control that contains one or more collapsible panels
TCharacter class added to new Character namespace
TLinkLabel to add HTML links to a text label
TTListGroup, TListGroups to support groups on a list view
TEncoding and TStringBuilder added to SysUtils namespace (see A. Lanusse's Blog about TStringBuilder)
TCustomHint added to Controls namespace; added TBalloonHint inheriting from TCustomHint
TStringReader and TStringWriter added to Classes namespace to read and write strings using TTextReader/Writer interface
TStreamReader and TStreamWriter added to Classes namespace to read and write streams using TTextReader/Writer interface
https://salarblog.wordpress.com

اما مهمترین کنترل که به چشم میاد کنترل Ribbon با استفاده از کلاس TRibbon هست. این کنترل که ظاهر Office 2007 را شبیه سازی می کنند به راحتی و بدون نیاز به سایر کنترل های افزودنی قابل استفاده است.

راهنما
در این مورد دلفی بسیار بد عمل می کند. گرچه نسبت به نسخه های قبلی موارد بیشتری را پوشش می دهد  و راهنمای دلفی برای موارد اساسی خوب است ولی بیشتر مواقع که نیاز به مثال است هیچ مثالی ذکر نشده است.
در بیشتر مواقع نیز توضیحات بسیار ناقص هستند و در بخی مواقع اصلا توضیح وجود ندارد و فقط با جمله ای مانند This is SQLState, a member of class SQLException مواجه می شوید.

آیا از نسخه های قبلی مهاجرت کنیم
تجربه تلخ نسخه های مشکل دار قبلی کاربران را در امر مهاجرت با تردید مواجه کرده ولی ورژن 2009 از دلفی واقعا می تواند دلفی 7 دیگری باشد. همانطور که آمار نیز نشان می دهد درصد حرکت به Delphi از زمان عرضع نسخه 2009 بیشتر شده است.

موانع ارتقاء به 2009
مهمترین مانع پشتیبانی از یونیکد است. ممکن است در پروژه خود از ابزاری استفاده کرده باشید که مربوط به نسخه های قبلی دلفی باشد در این ممکن است که آن ابزار به خاطر عدم پشتیبانی از یونیکد در دلفی 2009 با مشکل مواجه شود.
در اینگونه مواقع باید منتظر باشید تا نسخه سازگار عرضه شود.

مهاجرت از سایر پلتفرم ها
بلی این مورد واقعا امکانپذیر است. شاید فکر کنید که دلفی در مقابل مجموعه عظیم امکانات و ابزارهای dotNET Framework و یا مجموعه Java کم خواهد آورد. ولی واقعا این طور نیست.
اگرچه دلفی در برخی مقوله های مانند برنامه نویس برای وب همانند مورد مشابه ASP.NET و JSP و برنامه نویسی فریم ورک هایی مانند WPF به طور جدی وارد نشده است اما اگر این موارد را در نظر نگیریم در برنامه نویسی تحت ویندوز دلفی تمامی موارد مورد نیاز را دارا می باشد.
دلفی تمامی موارد مورد نیاز را از پایه دارا می باشد و تنها نکته مهم در مورد ان این است که در فریم ورک هایی مانند dotNET مجموعه کلاسها و توابع به طور منسجم و یکپارچه تحت عنوان فریم ورک جمع اوری شده است. این درحالی است که مجوعه بسیار زیادی از ابزارهای کاربردی رایگان و پولی در سراسر برای دلفی وجود دارد.

همچنین زبان دلفی با دارا بود امکان نوشتن همزمان برنامه های سطح پایین و سطح بالا می تواند گزینه بسیار مناسبی برای بسیاری از مواردی باشد که امکان برنامه نویسی با dotNET و یا Java وجود ندارد.
نکته ای که در اینجا مطرح هست قدرت کم IDE است که اگر از سایر محیط های توسعه استفاده کرده اید ممکن این مورد شما را اذیت کند.

نتیجه
بی شک نسخه 2009 از دلفی یک ارتقاء عالی برای دلفی و برای برگشتن به دوران اوج خود هست اما تنها نکته بد در این مورد زمان از دسته در نسخه های قبلی است.
ارتقاء از نسخه های قبلی به این نسخه حتما توصیه می شود ولی باید در مورد کامپوننت ها و کد خود در مورد روشی که قبلا در کار با رشته استفاده کرده اید محتاط باشید.

همچنان دلفی می تواند قدرت Cpp را همراه با سادگی زبانهای سطح بالا در اختیارتان قرار دهد.

نوشته های سایر وبلاگ نویسان در مورد Delphi 2009
آیا دلفی 2009 می تواند دلفی 7 دیگری باشد!؟

Delphi و سیر نزولی آن در مقابل محصولات Microsoft

مروری بر Delphi 2009 و مهاجرت به آن

کتابهایی برای Delphi 2009
Delphi 2009 Handbook