# Native Code > برنامه نویسی در Delphi > محیط توسعه (IDE) دلفی >  عدم توانایی IDE دلفی 2010 در انجام برخی کارهای تسهیل کننده

## مهران رسا

سلام
بنده به تازگی تصمیم گرفتم برنامه نویسی با استفاده از زبان قدرتمند دلفی رو آغاز کنم . در اولین برخورد با  دلفی 2010 متوجه عدم وجود برخی امکانات مهم زمان کد نویسی در این محیط توسعه شدم :


قابلیت IntelliSense به طور Live در دلفی 2010 وجود نداره . به عبارت ساده تر شما تنها زمانی لیست Suggestion رو مشاهده می کنید که (نقطه) تایپ کرده باشید یا احتملاً با استفاده از کلید های ترکیبی Ctrl+J بخواین لیسی از کلمات کلیدی موجود رو مشاهده کنید . در صورتی که در VS 2008 به طور زنده و در هنگام تایپ ، دایره ی وسیعی از Keyword های داینامیک و استاتیک در اختیارتون قرار میگیره و عملیات تایپ در زمان کمتری انجام میشه .

در VB 6 اگر متغیری به نام SUM تعریف بشه محیط توسعه VB به طور خودکار و با توجه به شناختی که از نوع نوشتن متغیر SUM (حروف بزرگ) داره ، تمامی متغیر هایی با این نام رو به صورت حروف بزرگ تبدیل میکنه . پس زمانی که در صحت املای کلمه مورد نظر شک داشته باشید این قابلیت به کمک شما میاد و متاسفانه این امکان در IDE دلفی 2010 وجود نداره .
البته امیدوارم تنظیمات خاصی برای دسترسی به این قابلیت ها وجود داشته باشه  .

در کل از نظر من محیط توسعه VS با RAD اصلاً قابل قیاس نیست و کاملاً مشخصه که در این زمینه مایکروسافت موفق تر بوده .

----------


## Felony

> در کل از نظر من محیط توسعه VS با RAD اصلاً قابل قیاس نیست و کاملاً مشخصه که در این زمینه مایکروسافت موفق تر بوده .


این نظر شما هست چون با محصولاتی مایکروسافتی کار کردید و به اونها عادت دارید ، از نظر برنامه نویسان دلفی هم VS در مقابل محیط توسعه دلفی حرفی برای گفتن نداره ، ساده ترین مورد سرعت بارگزاری محیط و کامپایل ... که مایکروسافت قرار بود در VS 2010 یه فکری به حالش بکنه ، حالا نمیدونم این کار رو کرد یا نه ...

دلفی همه چیز رو تو یه محیط مجتمع در اختیارتون قرار میده ، از Net. ، PHP و ... پشتیبانی کامل میکنه ، در نسخه جدید قراره از برنامه ها MultiPlatform و 64 بیت پشتیبانی کنه ، به زودی قدرت دوباره به دست دلفی میافته ...

----------


## مهران رسا

> این نظر شما هست چون با محصولاتی مایکروسافتی کار کردید و به اونها عادت دارید ، از نظر برنامه نویسان دلفی هم VS در مقابل محیط توسعه دلفی حرفی برای گفتن نداره ، ساده ترین مورد سرعت بارگزاری محیط و کامپایل ... که مایکروسافت قرار بود در VS 2010 یه فکری به حالش بکنه ، حالا نمیدونم این کار رو کرد یا نه ...
> 
> دلفی همه چیز رو تو یه محیط مجتمع در اختیارتون قرار میده ، از Net. ، PHP و ... پشتیبانی کامل میکنه ، در نسخه جدید قراره از برنامه ها MultiPlatform و 64 بیت پشتیبانی کنه ، به زودی قدرت دوباره به دست دلفی میافته ...


البته بهتر بود به جای گفتن این مطلب در مورد عدم وجود 2 قابلیت گفته شده در محیط توسعه دلفی صحبت می کردید . بنده ضمن اینکه از سرعت بالای RAD لذت میبرم انتظار دارم در IntelliSense  هم مثل VS قدرتمند عمل کنه .

----------


## vcldeveloper

> قابلیت IntelliSense به طور Live در دلفی 2010 وجود نداره . به عبارت ساده  تر شما تنها زمانی لیست Suggestion رو مشاهده می کنید که (نقطه) تایپ کرده  باشید یا احتملاً با استفاده از کلید های ترکیبی Ctrl+J بخواین لیسی از  کلمات کلیدی موجود رو مشاهده کنید . در صورتی که در VS 2008 به طور زنده و  در هنگام تایپ ، دایره ی وسیعی از Keyword های داینامیک و استاتیک در  اختیارتون قرار میگیره و عملیات تایپ در زمان کمتری انجام میشه .


بصورت پیش فرض فعال نیست، باید خودتون فعالش کنید:
Tools | Options | Code Insight | Code Completion | Auto Invoke

البته من ترجیح میدم به جای فعال کردن آن، از افزونه رایگان CnPack استفاده کنم که این قابلیت را گسترده تر از خودِ IDE ارائه میکنه، و شباهت بیشتری به اون چیزی که بهش در VS عادت کردید، داره.




> در VB 6 اگر متغیری به نام SUM تعریف بشه محیط توسعه VB به طور خودکار و با  توجه به شناختی که از نوع نوشتن متغیر SUM (حروف بزرگ) داره ، تمامی متغیر  هایی با این نام رو به صورت حروف بزرگ تبدیل میکنه . پس زمانی که در صحت  املای کلمه مورد نظر شک داشته باشید این قابلیت به کمک شما میاد و متاسفانه  این امکان در IDE دلفی 2010 وجود نداره .


همچین چیزی برای RAD Studio کاربردی نیست، چون RAD Studio از دو زبان دلفی و ++C پشتیبانی میکنه، و برخلاف دلفی و VB که Case-Sensitive نیستند، ++C به شدت به این موضوع حساس هست، و برنامه نویسان ++C علاقه ایی ندارند که وقتی می نویسند sum، محیط توسعه برای خودش، بر اساس یک سری حدس و گمان ها، آن را به SUM تبدیل کنه.
اگر هدفتان فقط فرمت بندی صحیح کدها ست، می تونید با استفاده از Ctrl+D کدها را فرمت بندی کنید.




> در کل از نظر من محیط توسعه VS با RAD اصلاً قابل قیاس نیست و کاملاً مشخصه  که در این زمینه مایکروسافت موفق تر بوده .


به خاطر همین دو چیزی که شما در RAD Studio ندید؟! 

RAD Studio 2010 از Modeling به صورت دو طرفه پشتیبانی میکنه، یعنی هم می تونید کد را تغییر بدید و مدل UML شما تغییر کنه، هم می تونید مدل UML را تغییر بدید، و کد شما تغییر کنه. مثل VS هم فقط از Class Diagrams پشتیبانی نمیکنه، بلکه مجموعه ایی از مدل های UML را پشتیبانی میکنه.

RAD Studio به شما امکان اعمال Design Patternها بر روی یک کلاس بصورت خودکار را ارائه میکنه.

RAD Studio این امکان رو به شما میده که برای کدهای یک پروژه یک سری قوانین خاص، مثل قوانین نامگزاری متغیرها، قوانین مربوط به Commentها، و غیره اعمال کنید، و اگر کدی از آن قوانین پیروی نکرد، گزارش دریافت کنید.

RAD Studio به شما این امکان رو میده که کد خودتان را برای بروز برخی اشتباهات شناخته شده برنامه نویسی آنالیز کنید.

RAD Studio این امکان رو بهتون میده که آمار دقیقی از وضعیت کدهای خودتان در یک پروژه (مثل پیچیدگی هر کد، تعداد کلاس ها و متدها، و غیره) داشته باشید، و بر اساس آنها یک نمودار Kiviat رسم کنید.

RAD Studio این امکان را برای شما فراهم میکنه که هر چیزی که در IDE یا منوهای آن یا کامپوننت های نصب شده نیاز داشتید، با زدن F6 و نوشتن چند حرف از حروف آن (از هر کجای کلمه که باشه) آن را پیدا کنید. مثلا همون گزینه مربوط به Auto Invoke را اگر بخواید پیدا کنید، کافی هست که کلید F6 را بزنید، و عبارت auto inv را در آن تایپ کنید. می بینید که در حین تایپ شما، خودش گزینه ها را فیلتر میکنه، و وقتی حرف v را تایپ می کنید، فقط یک گزینه در زیر شاخه Preference باقی میمانه که اگر روی آن دابل کلیک کنید، همان صفحه تنظیمات باز میشه. با این گزینه حتی می تونید در داخل کامپوننت های موجودتان هم جستجو کنید. مثلا اگر نیاز به یک کامپوننت HTTP Client دارید، کافیه بعد از زدن کلید F6، عبارت http را در کادر جستجو تایپ کنید، تا همه کامپوننت های مرتبط با آن برای شما لیست بشند.

RAD Studio 2010 این امکان رو به شما میده که برای داده های Complex خودتان مثل اشیاء یا لیست ها، Data Visualizer بنویسید، و در زمان دیباگ کردن یک پروژه، آن داده ها را در داخل Data Visualizer خودتان، به شکلی که خودتان طراحی کردید، ببینید.

RAD Studio این امکان را به شما میده که همیشه یک History از تغییراتی که روی یک فایل اعمال کردید، داشته باشید.

اینها فقط بعضی از ویژگی های RAD Studio بودند که من در Visual Studio 2008 ندیدم. حتی تا جایی که خبر دارم، در Visual Studio 2010 هم خبری از آنها نیست.

البته اگر یکی از افزونه های رایگان مثل CnPack یا GExpert را هم روی RAD Studio خودتان نصب کنید، قابلیت های بسیار زیاد دیگه ایی به آن اضافه میشه. مثلا CnPack به شما این امکان رو میده که یونیت های استفاده نشده در کد را که در بخش uses یونیت های خودتان دارید، بطور خودکار حذف کنه. یا امکان تنظیم خودکار Tab Order را به فرم های شما اضافه میکنه، یا این امکان رو به شما میده که برای هر کامپوننت یک Prefix تعریف کنید، و هر زمان آن کامپوننت را روی فرم قرار بدید، پنجره ایی با همان Prefix برای دریافت نام کاپوننت از شما باز بشه. مثلا اگر شما یک Button روی فرم قرار بدید، بلافاصله یک پنجره باز میشه که عبارت btn در آن نوشته شده، و شما باید ادامه آن را تکمیل کنید، مثل اگر تایپ کنیدOK، نام دکمه شما میشه btnOK. یا مثلا این امکان رو به شما میده که همیشه نام توابع و Procedureهای یک یونیت را در یک ComboBox با قابلیت جستجو، در بالای Editor داشته باشید، و به راحتی از طریق آن به محل آنها مراجعه کنید. یا بلوک های تو در تو در داخل کد را با استفاده از خطوط رنگی از هم متمایز کنه. البته قابلیت های CnPack خیلی زیاد هستند، و فرصت نیست همه آنها اینجا توضیح داده بشند. هر کدام را هم که نیاز نداشتید، می تونید Disable کنید.

----------


## vcldeveloper

این هم نمایی از برخی قابلیت های CnPack در RAD Studio 2010:





البته از آنجایی که می خواستند قابلیت های مختلف را با هم در یک صفحه نمایش بدند، تصویر مربوطه شلوغ شده. در حالت عادی، لزومی نداره که همه اینها با هم باز باشند. حتی خیلی از قابلیت ها برای خیلی ها کاربردی ندارند، و بهتر هست که کلا غیرفعال بشند، و بیخودی صفحه را شلوغ نکنند. من شخصا همه قابلیت هایی را که از آنها استفاده نمی کنم را غیر فعال می کنم.
*

این هم تصویری از IDE من به همراه CnPack:
*
cnpack-rad-studio-2010.jpg

----------


## مهران رسا

> همچین چیزی برای RAD Studio کاربردی نیست، چون RAD Studio از دو زبان دلفی و  ++C پشتیبانی میکنه، و برخلاف دلفی و VB که Case-Sensitive نیستند، ++C به  شدت به این موضوع حساس هست


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

----------


## vcldeveloper

> یک محیط توسعه قدرتمند باید بتونه برای زبان های مختلف Profile مختلفی  ارائه بده.


چیزی که شما میخواید، یک قابلیت بسیار بسیار جزئی هست. بخصوص که همچین چیزی از نظر خیلی از کاربران اصلا قابلیت محسوب نمیشه. توی VB6 کاربر به اینکه VB براش تصمیم بگیره، عادت کرده. در دلفی اکثر کاربران علاقه ایی ندارند که دلفی براشون در خیلی از چیزها تصمیم بگیره، و به طور سر خود تغییراتی در کدشان اعمال کنه.
تیم توسعه RAD Studio هم برای همچین چیزهایی که کاربران حتی در مفید بودنش با هم اتفاق نظر ندارند، معمولا وقت صرف نمی کنند. اگر دوست داشتید، می تونید یک درخواست Feature در QC براش ثبت کنید. اگر هم خیلی بهش نیاز دارید، می تونید با استفاده از OpenTools API دلفی خودتان این قابلیت را بنویسید و به  IDE دلفی اضافه کنید.

در ضمن، در RAD Studio تنظیماتی که نیاز باشه برای Delphi یا ++C متفاوت باشند، از هم تفکیک شدند. این رو می تونید توی Options آن هم ببینید (مثلا در بخش Code Formatter).

----------


## Arman_1367

در رابطه با این بحث این را می توانم بگوییم که هر چیزی که در محیط  دلفی کم داشته باشید می توانید با استفاده از نوشتن expert حلش کنید . پس هر چیزی که نیاز دارید بنویسید شاید باقی دوستان هم خوششان امد و استفاده کردند.

----------


## gbg

> سلامقابلیت IntelliSense به طور Live در دلفی 2010 وجود نداره . به عبارت ساده تر شما تنها زمانی لیست Suggestion رو مشاهده می کنید که (نقطه) تایپ کرده باشید یا احتملاً با استفاده از کلید های ترکیبی Ctrl+J بخواین لیسی از کلمات کلیدی موجود رو مشاهده کنید . در صورتی که در VS 2008 به طور زنده و در هنگام تایپ ، دایره ی وسیعی از Keyword های داینامیک و استاتیک در اختیارتون قرار میگیره و عملیات تایپ در زمان کمتری انجام میشه .


بعد از 6 ماه باید بگم که حالم از این مورد بهم می خوره تا میای یه متغییر تعریف کنی با یه کلمه کلیدی یا اسم دیگه ای جایگزین میکنه که من مجبور میشم از کلمات رکیک استفاده کنم و با بک اسپیس پاک کنم و الی آخر

----------


## kamran_dev

> می تونید با استفاده از Ctrl+D کدها را فرمت بندی کنید.


این عمل کمک شایانی به برنامه نویس می کنه اما فرمت بندی اون کمی شلوغ به نظر می رسه البته این نظر شخصیه!
آیا امکان این وجود دارد که میزان فرورفتگی کد ها را خودمان تعیین کنیم؟

----------


## مهران رسا

> این عمل کمک شایانی به برنامه نویس می کنه اما فرمت بندی اون کمی شلوغ به نظر می رسه البته این نظر شخصیه!
> آیا امکان این وجود دارد که میزان فرورفتگی کد ها را خودمان تعیین کنیم؟


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

----------


## vcldeveloper

> آیا امکان این وجود دارد که میزان فرورفتگی کد ها را خودمان تعیین کنیم؟


توی تنظیمات Formatter هست:

Tools | Options | Formatter | Delphi | Indentation

----------


## hp1361

با سلام

توی ویژوال استودیو با کلیدهای ترکیبیCtrl+K و Ctrl+D میشه فرمت بندی رو خودکار درستش کرد
آیا همچین امکانی توی دلفی 2009 با نصب CnPack و یا  Castalia 2009.2 وجود داره؟

----------


## جواد ملاولی

یکی از قابلیتهای خوب ویژوال استودیو اینه که کامپوننتهای غیر ویژوال رو *در بیرون فرم* کنار همدیگه می چینه ولی IDE دلفی اینجور نیست و همه ی کامپوننتها داخل فرم قرار میگیرن و این میتونه باعث اشکال بشه، کما اینکه برای من پیش اومده؛ در یه پروژه، در فرم اصلی چند تا کامپوننت غیر ویژوال داشتم. یه بار روی یکی از اونها که کلیک کردم نمیدونم چه اتفاقی افتاد که پروژه دیگه اجرا نشد؛ هر کاریش کردم نشد، تا بعد از چند روز  اتلاف وقت متوجه شدم که در همون لحظه ی کلیک روی اون کامپوننت نمی دونم چطور شده که کد همین فرم اصلی (فایل dfm) به هم ریخته و جای یکی دو تا Begin و end عوض شده بود. با یه بدبختی پیداش کردم. اگه IDE دلفی این قابلیت رو داشت، هیچوقت مشکل اینجوری به وجود نمی اومد. حالا غیر از این تجربه ی من، کلاً اگه کامپوننتهای غیر ویژوال با فرم و سایر اجزاء اون قاطی نشه خیلی خویه.
خلاصه اینکه اگه یکی بتونه به گوش Embarcadero برسونه که این قابلیت رو اضافه کنه خیلی خوب میشه.

----------


## vcldeveloper

> یه بار روی یکی از اونها که کلیک کردم نمیدونم چه اتفاقی افتاد که پروژه  دیگه اجرا نشد؛ هر کاریش کردم نشد، تا بعد از چند روز  اتلاف وقت متوجه شدم  که در همون لحظه ی کلیک روی اون کامپوننت نمی دونم چطور شده که کد همین  فرم اصلی (فایل dfm) به هم ریخته و جای یکی دو تا Begin و end عوض شده بود.  با یه بدبختی پیداش کردم. اگه IDE دلفی این قابلیت رو داشت، هیچوقت مشکل  اینجوری به وجود نمی اومد.


خب، گیرم همین دابل کلیک تصادفی را روی کامپوننت مربوطه در کادر جداگانه ایی که براش در نظر گرفته شده بود، انجام می دادید؛ باز همین اتفاق مورد نظر شما تکرار می شد! دقت کنید که کامپوننت های غیرویژوال شما هم جزوی از فرمتون هستند و عملکرد آنها روی فرم، و عملکرد فرم روی آنها اثر میزاره.




> خلاصه اینکه اگه یکی بتونه به گوش Embarcadero برسونه که این قابلیت رو اضافه کنه خیلی خوب میشه.


شرکت بورلند قبلا همچین کاری رو با دلفی 8 کرد. بازخورد خوبی نداشت، حذف شد.

----------


## gbg

به نظر من همینجوری خوبه
اگه هم تو صفحه جدید خاستی یه دیتا ماژول درست کن بزار اونجا (چون اکثرا جدول و گزارش و دیتا ست هستن)

----------


## bootshow

تاپیک خوبی شده بود.با استفاده از MMX یا CNPack گزینه های Arran None Visual و یا Hide/Display None Visual داره.فکر کنم این مشکلو حل کنه.



> یکی از قابلیتهای خوب ویژوال استودیو اینه که کامپوننتهای غیر ویژوال رو *در بیرون فرم* کنار همدیگه می چینه ولی IDE دلفی اینجور نیست و همه ی کامپوننتها داخل فرم قرار میگیرن و این میتونه باعث اشکال بشه،.





> به شما این امکان رو میده که کد خودتان را برای بروز برخی اشتباهات شناخته شده برنامه نویسی آنالیز کنید.
> RAD Studio این امکان رو بهتون میده که آمار دقیقی از وضعیت کدهای خودتان در یک پروژه (مثل پیچیدگی هر کد، تعداد کلاس ها و متدها، و غیره) داشته باشید، و بر اساس آنها یک نمودار Kiviat رسم کنید.


این قابلیتها کجاست؟لطف کنید کتابی،فیلمی به زبان فارسی یا انگلیسی معرفی کنید تا بیشتر با این قابلیتها آشنا بشیم.

----------


## vcldeveloper

> این قابلیتها کجاست؟


منوی Project.




> لطف کنید کتابی،فیلمی به زبان فارسی یا انگلیسی معرفی کنید تا بیشتر با این قابلیتها آشنا بشیم.


در داخل خودش، درباره هر کدام در حد یک پاراگراف توضیح داده شده.

----------


## yashar666

> قابلیت IntelliSense به طور Live در دلفی 2010 وجود نداره


اینکه وجود داره 1000 تا !! ولی من از این که به نظر شما قابلیت متنفرم اون عادت شماست که می گید و ضمنا با نظرات آقای کشاورز موافقم .
من حدود 4 سال با محصولات ماکروسافتی کار می کردم بعد که به دلفی نزدیک شدم تازه فهمیدم چی اشتباهی من کردم برای برنامه نویسی Desktop بهترین گزینه دلفی  مخصوصا برای نوشتم برنامه های صنعتی و interface* سعی کنید تعصب نداشته باشید که باعث عدم تصمیم گیری درست بشه .من مخالف ماکروسافت نیستم شاید اگه این شرکت بزرگ نبود ما الان به این راحتی با هم حرف هم نمیزدیم به تمام بشریت هم حق داره ولی اونجایی که اشتباه هست خوب هست . زبان غیر ماکروسافتی قابلیت های داره که ماکروسافت تو خوابم نمیتونه بهش برسه ساده ترینش open source  بودن دلفی هست که ماکروسافت ازش بیزاره  و خیلی چیزا که در* *حوصله این بحث نیست ....


*

----------


## Felony

> ساده ترینش open source بودن دلفی هست که ماکروسافت ازش بیزاره


از کی دلفی متن باز شده ؟!!!

----------


## yashar666

کتابخانه ها رو عرض می کنم

----------

