تبليغاتX
برنامه نویسی با دلفی

برنامه نویسی با دلفی
 
به درخواست دوستان در این پست چند برنامه و کامپوننت جدید برای دانلود گذاشتیم . همچنین لینک دانلود فایلها از سایت DivShare به لینک مستقیم تبدیل شد تا عزیزان در دانلود فایلها با مشکلی مواجه نشوند. و از این پس بطور مستقیم و با کلیک بر روی دانلودها فایلها و کامپوننتها قابل دسترسی می باشد و هنگام دانلود با نرم افزارهای دانلود شبیه DAP یا IDM و ... با مشکلی مواجه نخواهید شد.

  1. کامپوننت Fast Report Enterprise 4.3 : نسخه جدید از این کامپوننت که در پستهای قبلی ورژن پائین این کامپوننت را گذاشته بودیم. این ورژن از کامپوننت تقریبا نسخه آخری می باشد که بصورت کامل ارائه شده است.
    دانلود - حجم فایل: ۳.۵۸ مگابایت
    دانلود - لینک غیرمستقیم از DivShare
        
  2. کامپوننت SuiSkin Full: نسخه کامل و نهائی از کامپوننت SuiSkin برای تغییر ظاهر فرمها و اکثر پنجره های باز شده در برنامه، که با استفاده از ُSkinهایی که در ادامه پست گذاشته شده می توانید ظاهر زیبائی را به برنامه هایتان دهید. همچنین بوسیله SkinBuilder می توانید خودتان پوسته های دلخواهتان را برای این کامپوننت بسازید.
    دانلود - حجم فایل: ۳.۸۱ مگابایت
    دانلود - لینک غیرمستقیم از DivShare

      
    Skins :
    شامل 28 پوسته زیبا برای SuiSkin.
    دانلود - حجم فایل: ۳۷۰ کیلوبایت
    دانلود - لینک غیرمستقیم از DivShare

      
    SkinBuilder:
    برنامه ای برای ساختن پوسته برای SuiSkin. 
    دانلود - حجم فایل: ۴۳۵ کیلوبایت
    دانلود - لینک غیرمستقیم از DivShare

          
  3. برنامه کامل تبدیل تاریخ میلادی به شمسی: به درخواست دوستان کد تکمیل شده و نهائی تبدیل تاریخ میلادی به شمسی را همراه یک نمونه برنامه کامل را در این مثال قرار داده ایم. 
    دانلود - حجم فایل: ۲۰۳ کیلوبایت

    دانلود - لینک غیرمستقیم از DivShare

          
  4. برنامه کامل تبدیل تاریخ شمسی به میلادی: این هم کدنهائی تبدیل تاریخ شمسی به میلادی که همراه بایک نمونه برنامه کامل می باشد. 
    دانلود - حجم فایل: ۱۶۳ کیلوبایت

    دانلود - لینک غیرمستقیم از  RGHost

       
  5. کامپوننت کامل VCLSKIN v4.11.2006.7.25 Delphi.BCB : نسخه کامل همراه با کرک و اسکین از کامپوننت VCL Skin برای تغییر ظاهر فرمها و اکثر پنجره های باز شده در برنامه، که با استفاده از Skinهایی که در داخل پوشه زیپ وجود دارد ظاهر زیبائی را به برنامه هایتان دهید.برای اینکه از دست جمله Demo در بالای فرم هایتان خلاص شوید از کامپوننت SkinCaption که در کنار این کامپوننت قرار دارد استفاده نمائید. 
     دانلود - حجم فایل: ۸.۶ مگابایت
    دانلود - لینک غیرمستقیم از DivShare

        
  6. آخرین نسخه از کامپوننت VCLSkin 4.81 : نسخه کامل و نهائی از این کامپوننت که در قسمت قبلی توضیحات رو دادم. این نسخه شامل سورس کامپوننت هم می باشد که نیازی به کرک و سریال ندارد.
    دانلود - حجم فایل: ۲۶۱ کیلوبایت
    دانلود - لینک غیرمستقیم از DivShare

در صورت درخواست دوستان کامپوننتهای جدید و دیگری برای دانلود گذاشته خواهد شد.
( حتما نظرات خود را برای پیشبرد اهداف این وبلاگ ارائه نمائید )


ادامه مطلب
نوشته شده در تاريخ چهارشنبه بیست و نهم اسفند 1386 توسط ابراهیم خدائی

----(  کدها ومثالها و ترفندهای دلفی  )----

 

  • نوشتن یک لیبل بصورت مورب
  • نوشتن کپشن یک دکمه در چند سطر
  • مخفی کردن و نمایش مجدد ساعت ویندوز
  • نمایش تمامی اطلاعات مربوط به حافظه اصلی کامپیوتر (RAM) 
  • غیرفعال کردن دکمه خروج فرم (Exit)
  • تغییر رنگ سطرهای یک جدول (StringGrid)
  • برش یک فرم و تبدیل آن به دو فرم
  • غیر فعال کردن TaskManager
  • ایجاد اشیا به شکلهای دلخواه
  • ساختن فرم اتصال به اینترنت به همراه نام کاربری و  کلمه عبور و شماره تلفن
  • حذف ، کپی ، انتقال یک پوشه با تمامی زیر پوشه و فایلهای درون آن

برای مشاهده کل مطلب همچنین کدهای مربوطه و دانلود نمونه برنامه ها بر روی ادامه مطلب کلیک کنید.



ادامه مطلب
نوشته شده در تاريخ جمعه دوازدهم مرداد 1386 توسط ابراهیم خدائی
به درخواست دوستان در این پست هم چند کامپوننت برای دانلود گذاشته و از پستهای بعدی به کدنویسی و آموزش دلفی ادامه می دهیم. ( اگر در دانلود فایلهای فوق پیام pop-up بر روی صفحه باز شده ظاهر شد بر روی آن کلیک کرده و گزینه Download File را انتخاب نمائید. )

  1. کامپوننت FastReport 3.07 for Delphi 4-7 & C++Builder 4-6 : از این کامپوننت برای کار با گزارشات و پرینت استفاده می شود و نیازی به توضیح بیشتر ندارد چون که اکثر دوستان با آن آشنایی دارند. این نسخه بصورت کامل بوده و سورس آن همراه با امکانات و توضیحات کامل می باشد ، که PDF آموزشی آن هم درون فایل زیپ شده موجود می باشد.
     دانلود - حجم فابل: 2.26 مگابایت
     دانلود - لینک غیرمستقیم از DivShare
       
  2. کامپوننت CoolTray : با استفاده از این کامپوننت می توانید در قسمت Tray سیستم خود (کنارساعت) آیکونی برای برنامه خود داشته باشید و با استفاده از منوی آن برنامه خود را کنترل نمائید.
     دانلود - حجم فایل: 360 کیلوبایت
     دانلود - لینک غیرمستقیم از DivShare
         
  3. کامپوننت Dwin Lock : برای کنترل صفحه کلید و یا دسکتاپ ویندوز و اعمال تمامی محدودیت ها  هنگام گرفتن ورودی و یا کار با سیستم می توانید از این کامپوننت استفاده نمائید.
     دانلود - حجم فایل: 598 کیلوبایت
     دانلود - لینک غیرمستقیم از DivShare
        
  4. کامپوننت Keyboard Layout : برای تغییر زبان صفحه کلید از داخل برنامه و تغییر آن در تمای جاهایی که به تغییر زبان صفحه کلید نیاز دارید می توانید از این کامپوننت استفاده نمائید.
     دانلود - حجم فایل: 231 کیلو بایت
     دانلود - لینک غیرمستقیم از DivShare
       
  5. کامپوننتFlash Player : برای استفاده از فایلهای فلش در درون برنامه خود می توانید از این کامپوننت استفاده نمائید.
     دانلود - حجم فایل: 18 کیلوبایت
     دانلود - لینک غیرمستقیم از DivShare
        
  6. کامپوننت Waitbar : کامپوننتی شبیه نوار پیشرفت بوده ولی نوار انتظار دارای امکانات چرخش و تکرار می باشد که با تغییر سرعت حرکت و نوع رنگ می توانید تنظیمات مورد نظر خود را بدست آورید.
     دانلود - حجم فایل: 9 کیلوبایت
     دانلود - لینک غیرمستقیم از DivShare
        
  7. کامپوننت Sms Message : برای ارسال مسیج یا SMS از این کامپوننت می توانید استفاده نمائید. البته سیستم مخابرات و نوع مودم در کارکرد این کامپوننت تاثیر گذار می باشند.
     دانلود - حجم فایل 11 کیلوبایت
     دانلود - لینک غیرمستقیم از DivShare
        

در صورت درخواست دوستان کامپوننتهای جدید و دیگری برای دانلود گذاشته خواهد شد.
( حتما نظرات خود را برای پیشبرد اهداف این وبلاگ ارائه نمائید )


ادامه مطلب
نوشته شده در تاريخ پنجشنبه سوم خرداد 1386 توسط ابراهیم خدائی

چند کامپوننت دلفی برای دانلود

 کامپوننتهای این بخش بطور کامل تست و امتحان شده اند:

  1. کامپوننت KDTele برای دلفی ۷  ( برای برنامه نویسی تلفن و مودم )
    دانلود - حجم فایل: 1.26 مگابایت 
    دانلود - غیرمستقیم از DivShare
         
  2. کامپوننت KDTele برای دلفی ۲۰۰۶ ( برای برنامه نویسی تلفن و مودم )
    دانلود - حجم فایل: 1.25 مگابایت
    دانلود - غیرمستقیم از DivShare
         
  3. کامپوننت XiButton.1.12 (دارای دکمه های زیبا با قابلیت تغییر رنگ و افکت)
    دانلود - حجم فایل: 31 کیلوبایت
    دانلود - غیرمستقیم از DivShare
      
  4. کامپوننت socket ( برای کار با شبکه در برنامه نویسی Socket Programming )
    دانلود - حجم فایل: 3 کیلوبایت
    دانلود - غیرمستقیم از DivShare
      
  5. کامپوننت dclock ( یک ساعت آنالوگ زیبا با eventهای ثانیه و دقیقه و ساعت )
    دانلود - حجم فایل: 234 کیلوبایت
    دانلود - غیرمستقیم از DivShare
       

به درخواست دوستان کرک و پچ کامپوننت KDTele برای کار با تلفن و مودم برای دانلود گذاشته شد.

کرک کامپوننت KDTele (برای کرک کردن بعد نصب هر کدام از کامپوننت ها این پچ را نصب نمائید)
دانلود - حجم فایل: 14 کیلوبایت
دانلود - غیرمستقیم از DivShare
   


ادامه مطلب
نوشته شده در تاريخ سه شنبه هجدهم اردیبهشت 1386 توسط ابراهیم خدائی

آموزش نصب کامپوننت در دلفی :

 

شما در این مقاله با روش نصب انواع کامپوننت ها در دلفی آشنا خواهید شد.در دلفی کامپوننت ها به سه دسته تقسیم می شوند که این تقسیم بندی بر اساس پسوندهای آنهاست.

 

این سه دسته عبارتند از : 

 

  1. .bpl
  2. .dpk
  3. .pas

 

 برای مشاهده کل مطلب بر روی ادامه مطلب کلیک نمائید.

 



ادامه مطلب
نوشته شده در تاريخ سه شنبه هجدهم اردیبهشت 1386 توسط ابراهیم خدائی

در این مقاله و یا مقالات بعدی سعی بر این داریم که کار با تلفن و یا مودم را با استفاده از کامپوننت تلفن یا همان KDTele آغاز کنیم ، در این مقالات با مطالب زیر آشنا می شویم:

 

  • نصب و آشنايي با متدها
  • راه اندازي و ارسال پيغام از طريق خط تلفن
  • شماره گیری و پخش صدا از طریق تلفن
  • طراحی تلفن پیامگیر ( عکس العمل به شماره فشرده شده)
  • ارسال فایل از طریق تلفن
  • ارسال فکس
  • ضبط صدای تماس گیرنده و تاریخ و ساعت تماس
  • و...

 

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

  

دانلود KDTele برای دلفی 7 - حجم فایل: 1.26 مگابایت
دانلود - لینک غیرمستقیم از DivShare
       

دانلود KDTele برای دلفی 2006 - حجم فایل: 1.25 مگابایت
دانلود - لینک غیرمستقیم از DivShare
      

کرک  KDTele - حجم فایل: 14 کیلوبایت
دانلود - لینک غیرمستقیم از DivShare

  

نحوه نصب به این شکل می باشد که ابتدا دلفی را اجرا کرده و سپس از منوی Component ، قسمت InstallPackges را کلیک کرده و سپس بر روی دکمه Add کلیک کرده و سپس وارد مسیر شده و فایل KDTeleDelphi2006.bpl یا KDTeleDelphi7.bpl (بستگی به نسخه دلفی شما) را انتخاب کرده و در خاتمه OK را کلیک کنید. اکنون گروه جدیدی با نام KDTele Tools به کامپوننتهای دلفی اضافه می شود که شامل 8 جزء زیر می باشد:

 

KDPhone:  ایجاد ارتباط تلفی و کنترل تلفن

KDVoice: ضبط و پخش صدا بر روی خط تلفن

 KDFax: ارسال و دریافت فکس

KDFile: ارسال و دریافت هر گونه فایل

KDSpeack: پخش متن دلخواه بصورت صدا بر روی خط تلفن

KDListen: دریافت فرمانهای صوتی

KDSerialPort: کنترل و ارسال داده از طریق پورت سریال

KDWaveEditor: کنترل صدا و نمایش موج صوتی

 

برای مشاهده کل آموزش بر روی ادامه مطلب کلیک نمائید



ادامه مطلب
نوشته شده در تاريخ پنجشنبه سیزدهم اردیبهشت 1386 توسط ابراهیم خدائی
بدلیل طولانی بودن صفحه اول ، مطالب به صورت آرشیو موضوعی در آمده است. دوستان علاقه مند به مطالب خاص می توانند مطالب خود را در آرشیو موضوعی وبلاگ پیدا نمایند.

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

با تشکر ابراهیم خدائی: Ebrahim.khodaei@yahoocom


ادامه مطلب
نوشته شده در تاريخ سه شنبه چهارم اردیبهشت 1386 توسط ابراهیم خدائی
الگوريتم تبديل تاريخ ميلادي به تاريخ شمسي :

تبديل تاريخ ميلادي به شمسي بسيار راحتتر از تبديل تاريخ شمسي به ميلادي است. براي نوشتن اين الگوريتم به اختلاف روزهاي ميان اولين روز سال ميلادي و اولين روز سال شمسي نياز داريم که اين اختلاف روز (در صورتي که سال کبيسه باشد يا نباشد) "79" روز است. براي تشخيص کبيسه بودن يا نبودن سال از روش زير استفاده مي کنيم:
"اگر سال داده شده بر100و 400 بخشپذير باشد" يا بر" 100 بخشپذير نباشد بر 4 بخشپذير باشد" آنگاه سال کبيسه است، در غير اين صورت سال کبيسه نيست.با توجه به کبيسه بودن يا کبيسه نبودن سال مشخص مي کنيم که در کدامين روز سال ميلادي قرار داريم.دو حالت پيش مي آيد:

• روزي که در آن قرار داريم از 79 بيشتر است
به اين معني است که در ماههاي بعد از فروردين قرار داريم.حال بايد مشخص کنيم که در 6 ماه اول سال شمسي قرار داريم يا در 6 ماه دوم سال قرار داريم،براي اينکار ابتدا 79 روز از تعداد روزها کم مي کنيم تا در اول فروردين قرار بگيريم حال اگر تعداد روزها از "186" (31*6) کمتر باشد يعني در 6 ماه اول سال شمسي قرار داريم در غير اينصورت در 6 ماه دوم قرار داريم.

برای مشاهده کل آموزش بر روی ادامه مطلب کلیک نمائید



ادامه مطلب
نوشته شده در تاريخ یکشنبه دوم اردیبهشت 1386 توسط ابراهیم خدائی

بخشي از ويژگيهاي جديد محيط BDS 4.0 یا (Borland Developer Studio 2006) یا دلفی ۲۰۰۶

  • Method Navigation (حركت/ پرش بين متدها با استفاده از تركيب كليدها)
  • Class Lock (براي اينكه حركت بين متدها را به يك كلاس خاص محدود كنيد )
  • Help Insight (راهنمايي كه با قرار دادن اشاره گر ماوس روي يك كلمه نمايش داده خواهد شد)
  • UML Designer (همان Together هست كه در BDS 2006 جا داده شده)
  • Form Positioner (موقعيت فرم در صفحه نمايش را در زمان اجراي برنامه نشان می دهد)
  • Block Completion (بااین ويژگي در Code Editor ميتوانيد بلاكهاي خود را تكميل كنيد)
  • Live (Code) Templates (اين ويژگي واژه نامه اي شامل كدهاي از قبل نوشته شده است)
  • Block Comments (با اين ويژگي ميتوانيد خطي كه در آن هستيد را Comment كنيد)
  • Code Folding and Region (متد یا تمام بخشهای یك یونیت را میتوانید ببندید یا باز كنید)
  • Refactoring (دوباره ساختن و اصلاح كد جاری تا رفتار كد جاری به همانصورت باقی بماند)
  • Extract Resource String (برای انتقال یك متغیر رشته ای به بخش resource string)
  • Rename Refactoring (تغییرنام یك Property و متدهای مربوط به آن و ... )
  • Extract Method Refactoring (یك قطعه كد را تبدیل به یك متد میكند)
  • Extract Interface (خارج كردن یك متد از یك كلاس و قرار دادن آن در یك Interface)
  • Introduce Variable و Introduce Field

اطلاعات فوق توضیح خیلی جزئی از امکانات جدید محيط BDS 4.0 بود. برای مشاهده کل امکانات و توضیح کامل آنها بر روی ادامه مطلب کلیک نمائید.



ادامه مطلب
نوشته شده در تاريخ پنجشنبه بیست و سوم فروردین 1386 توسط ابراهیم خدائی
GDI در دلفی
 

GDI مخفف کلمه Graphics Device Interface و تکنیک رسم گرافیک دو بعدی ویندوز است. این روش متاسفانه روش بسیار کندی برای ترسم گرافیکی میباشد ولی بدلیل اینکه اساس برنامه نویسی گرافیک است یاد گیری آن بعنوان پایه برنامه نویسی گرافیک برای برنامه نویسان لازم به نظر میرسد. اولین نکته قابل توجه در این رابطه این است که نباید سعی کنید از GDI برای ایجاد هر جلوه خیالی گرافیکی استفاده کنید بدلیل اینکه GDI یک تکنیک ابتدایی در گرافیک است . برای استفاده حرفه ای از گرافیک سعی کنید از DirectX , OpenGL و ... بهره بگیرید. اگرچه شما با کمی خلاقیت قادر ید جلوه های ساده را با GDI ایجاد کنید . 

 یکی از کلمات عمومی که در GDI زیاد با آن برخورد خواهید کرد DC (Device Context ) است که نشان دهنده همان ناحیه ای است که ترسیم روی آن صورت میگیرد و در دلفی با TCanvas نشان داده میشود . در واقع DC  محل نشان دادن خروجی توابع گرافیکی است . بنابرین شما میتوانید از برخی توابع ترسیم برای ترسیم در صفحه نمایش یا پرینتر استفاده کنید . نکته دیگری که باید مورد توجه قرار بگیرد این است که توابعی که شما از آن استفاده میکنید توابع گرافیکی استاندارد دلفی بوده و پوششی برای توابع گرافیکی ویندوز است و دلفی آنها را برای ایجاد یک رابط کاربر خوب و مناسب آماده کرده است.

 

برای مشاهده کل مطلب بر روی ادامه مطلب کلیک کنید.



ادامه مطلب
نوشته شده در تاريخ چهارشنبه بیست و دوم فروردین 1386 توسط ابراهیم خدائی

Borland Developer Studio 2006 (دلفی 2006)

محصول جدید بورلند یعنی BDS 2006 با کد نام دکستر ("DeXter") شامل یک محیط توسعه یکپارچه (IDE) ، بسیار عالی است که حاوی Borland C++ for .Net و Borland C# for .Net و Borland Delphi for .Net و Borland Delphi for Windows و امکانات دیگر بر حسب نوع نسخه ای که خریداری می کنید ، می باشد.

نسخه حرفه ای (Professional Edition) : این نسخه شامل محیط توسعه یکپارچه ای است جهت طراحی برنامه هایی برای سازمانهای با مقیاس یا اندازه کوچک ، که امکان طراحی وب برای بانک های  اطلاعاتی محلی (Local DB) نیز در آن فراهم آمده است.

نسخه اینترپرایز (Enterprise Edition): این نسخه برای شرکتهای با مقیاس متوسط ،که نیاز به سرورهایی با قدرت بالا دارند، طراحی شده است.

نسخه معمار (Architect Edition): این نسخه دارای قابلیت های نسخه Enterprise است، که قابلیت ECO 3 یا Enterprise Core Object نیز به آن اضافه شده است.

برای مشاهده کل اطلاعات بر روی ادامه مطلب کلیک نمائید.



ادامه مطلب
نوشته شده در تاريخ سه شنبه بیست و یکم فروردین 1386 توسط ابراهیم خدائی

منابع و مطالب زیادی در مورد دلفی 2006 و چرایی و چگونگی استفاده از نسخه جدید را در مراجع زیر بیابید . لیست کتابهای  منتشر شده در زمینه دلفی 2006:

چند لینک مفید در زمینه دلفی 2006:

 

 

بورلند استودیو در یک نگاه


ادامه مطلب
نوشته شده در تاريخ سه شنبه بیست و یکم فروردین 1386 توسط ابراهیم خدائی
فایل های INI در دلفی
 

فایل های .INI دارای ساختاری بر اساس فایلهای متنی هستند و برای نگهداری اطلاعات پیکر بندی برنامه های کاربردی استفاده میشوند که هم براحتی بوسیله ما قابل ویرایش هستند و هم بوسیله یک ساختار ساده در هر برنامه ساده قابل دسترسی هستند .

بدلیل اینکه ویندوز داری Registry هست کسانی که از ویندوز استفاده میکنند آشنایی کمی با فایلهای .ini دارند ولی در ویندوز هنوز هم از فایلهای .ini استفاده میشود. مثل Win.ini و System.ini . ویندوز از این فایلها برای ذخیره اطلاعات مهمی از جمله اطلاعات پیکربندی استفاده میکند که براحتی قابل پاک شدن ، ویرایش و دیدن هستند.  بسیاری از برنامه های تحت ویندوز برای ذخیره اطلاعات پیکربندی خود از Registry  استفاده میکنند در حالیکه استفاده از فایلهای .ini هم سریعتر و هم ایمن تر است . یک مثال ساده برای استفاده از فایلهای  .ini ذخیره اندازه ، حالت و موقعیت فرم برنامه شماست . بطور کلی هر چیزی که شما در رجیستری ذخیره میکنید میشود در فایلهای .ini ذخیره کرد .

 

ساختار فایلهای .ini

فایلهای .ini نوعی فایل متنی هستند که به بخشهای محدود به 64 کیلو بایت (Section) تقسیم شدند که هر بخش میتواند دارای چند کلید (Key) باشد و هر کلید میتواند دارای صفر یا چند مقدار (Value) باشد . مثال:

[SectionName]
keyname=value
;comment
keyname=value

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

یک کلید میتواند دارای مقادیری از نوعهای String , Integer , Boolean باشد. دلفی از فایلهایINI در خیلی وضعیتها استفاده میکند. برای مثال فایلهای .SDK نوعی فایل هستند مانند ini ها .

 

 کلاس TiniFile

        دلفی برای ذخیره و بازیابی فایلهای ini. کلاس TiniFile را در اختیار ما قرار داده است. این کلاس در یونیت inifiles.pas  قرار گرفته است. قبل از کار کردن با فایلهای .ini لازم است یک مثال راجع به استفاده از این کلاس ببینیم.

 

uses inifiles;

...

var

  IniFile : TIniFile;

begin

  IniFile := TIniFile.Create('myapp.ini');

          این کد یه فایل .ini ایجاد میکند و این فایل را به myapp.ini  ارجاع میدهد . البته این کد فایل را درون پوشه ویندوز ایجاد میکند ولی بهتر این است که برای ذخیره کردن اطلاعاتی از برنامه فایل .ini را درون پوشه برنامه ایجاد کنید . برای این کار باید آدرس کامل فایل را بنویسید . مثال :                 

IniFile := TIniFile.Create('C:\Hattel\myapp.ini'); 

 

          البته میتوانیم از تابع ChangeFileExt هم استفاده کنیم که در این صورت یک فایل با نام فایل برنامه و درون پوشه برنامه ایجاد میکنیم .

IniFile := TIniFile.Create(
ChangeFileExt(
Application.ExeName,'.ini'));

 

 

 خواندن از فایلهای .ini

 

         کلاس TiniFileچندین متد برای خواندن از فایلهای .ini دارند . متد  ReadString برای خواندن مقدارهای رشته ای از یک کلید استفاده میشود. متد ReadInteger, ReadFloat ومتدهای مشابه برای خواندن مقدارهای عددی استفاده میشوند . همه این متدها یک مقدار پیش فرض دارند که وقتی فایل مورد نظر یا کلید و مقدار مورد نظر موجود نباشد استفاده میشود. مثلا ReadString به این صورت بیان میشود.

 function ReadString(const Section, Ident,
Default: String): String; override;
 Section نام بخش ، Ident نام کلید و Default نشان دهنده مقدار پیش فرض است .

 

 

نوشتن در فایلهای .ini

 

برای هر متد خواندن یک متد متناظر برای نوشتن وجود دارد . مثلا  WriteString, WriteBool, WriteInteger و غیره

فرض کنید میخواهیم برنامه ای بنویسیم که تاریخ آخرین استفاده و آخرین موقعیت فرم برنامه را ذخیره کند . پس لازم است یک فایل.ini  با دو بخش داشته باشیم . یک بخش با نام Date برای ذخیره تاریخ و یک بخش با نام Position برای ذخیره آخرین موقیت برنامه. بخش Date شامل کلید Last و بخش Position شامل کلیدهای Top, Left, width, Height .

کلید Last باید از نوع TDateTime و کلیدهای بخش Position باید از نوع عددی باشند.

 

برای نوشتن برنامه رویداد OnCreate فرم اصلی برنامه را بصورت زیر مینویسیم . (فراموش نکنید در بخش Uses یونیت TIniFiles را اضافه کنبد. )

 

procedure TForm1.FormCreate(Sender: TObject);

var

  MyIniFile  : TIniFile;

  LastDate : TDateTime;

begin

  MyIniFile := TIniFile.Create(

             ChangeFileExt(Application.ExeName,'.ini'));

 

  LastDate := MyIniFile.ReadDate('Date', 'Last', Date);

 

  ShowMessage('This program was previously used on '

                               + DateToStr(LastDate));

 

  Form1.Top := MyIniFile.ReadInteger

               ('Position','Top', Form1.Top);

  Form1.Left := MyIniFile.ReadInteger

                ('Position','Left', Form1.Left);

  Form1.Width := MyIniFile.ReadInteger

                 ('Position','Width', Form1.Width);

  Form1.Height := MyIniFile.ReadInteger

                  ('Position','Height', Form1.Height);

 

  MyIniFile.Free;

end;

            با این کد در صورتی که هنگام اجرای برنامه فایل .ini مورد نظر وجود داشته باشد آخرین تاریخ استفاده از برنامه نشان داده میشود و فرم در آخرین موقعیت قبلی قرار میگیرد.

 

          برای ذخیره شدن آخرین تاریخ و موقیت فرم ، رویداد OnClose فرم اصلی برنامه را به این صورت مینویسیم :

 

procedure TForm1.FormClose

           (Sender: TObject; var Action: TCloseAction);

var

  MyIniFile  : TIniFile;

begin

  MyIniFile := TIniFile.Create(

             ChangeFileExt(Application.ExeName,'.ini'));

 

  MyIniFile.WriteDate('Date', 'Last', Date);

 

  With MyIniFile, Form1 do

  begin

    WriteInteger('Position','Top', Top);

    WriteInteger('Position','Left', Left);

    WriteInteger('Position','Width', Width);

    WriteInteger('Position','Height', Height);

  end;

 

  MyIniFile.Free;

end;

           این کد باعث میشود در هنگام بسته شدن برنامه تاریخ و موقعیت فرم در فایل .ini ذخیره شود.

         

 

کار کردن با بخشها

          چندین متد برای کار کردن با بخشها طراحی شدند. برای مثال متد EraseSection یک بخش را بطور کامل از فایل ini حذف میکند. متد های ReadSection نام کلیدهای یک بخش و متد ReadSections نام بخشهای یک فایل را در یک TStringList قرار میدهد. کلاسهای دیگری هم در یونیت Registry وجود دارند از جمله TRegIniFile برای دسترسی ساده به سیستم رجیستری ویندوز بصورت فایلهای ini که استفاده از آنها ساده است.

 

محدودیتها و راه حل ها

          بدلیل اینکه کلاس TIniFile از Windows API استفاده میکند یه محدودیت 64 کیلو بایتی به فایلهای ini تحمیل میشود. در صورتی که احتیاج دارید اطلاعاتی بیشتر از 64 کیلو بایت در فایل ذخیره کنید باید بجای استفاده از TIniFile از TMemIniFile استفاده کنید که در این صورت مشکل محدودیت 64 کیلو بایتی را ندارید.


ادامه مطلب
نوشته شده در تاريخ چهارشنبه پانزدهم فروردین 1386 توسط ابراهیم خدائی
ساختار رکوردها در دلفی

یک ساختار تعریف شده در پاسکال موضوعی تحت عنوان record می‌باشد. رکوردها را می‌توان یک نوع داده که خود شامل چندین نوع داده دیگر است در نظر گرفت. برای تعریف رکوردها بصورت زیر عمل می‌کنیم:

type recordTypeName = record
   fieldList1: type1;
   ...
   fieldListn: typen;
end


پس از اینکه نوع رکورد ایجاد شد، باید متغییرهایی از نوع این رکورد تعریف واز آنها استفاده کرد. برای تعریف متغییر نوع رکورد به صورت زیر عمل می‌شود:

type
   TDateRec = record
   Year: Integer;
   Month: (Jan, Feb, Mar, Apr, May, Jun, 
               Jul, Aug, Sep, Oct, Nov, Dec);
   Day: 1..31;
end;

var
   Record1, Record2: TDateRec;


هنگام کار با یک رکورد برای دستیابی به میدان‌های آن، از نماد نقطه استفاده میکنیم:

Record1.Year := 1904;
Record1.Month := Jun;
Record1.Day := 16;


همچنین می‌توان یک رکورد را در یک رکورد دیگر کپی کرد بدون اینکه با خطائی مواجه شویم. شما همچنین می‌توانید متغییرهای از نوع رکوردهای خود را به صورت مستقیم تعریف کنید:

var S: record
   Name: string;
   Age: Integer;
end;



رکوردهای با طول متغییر
نوع رکورد را می‌توان طوری تعریف کرد که طول بخشی از آن ثابت و طول بخش دیگری بر اساس شرایط فیلدها متغییر باشد. در زیر یک مثال و در ادامه آن جدولی از حافظه‌ای که اشغال می‌شود آورده شده است.

type
   TPartType = (ptComputer, ptMonitor, ptComponent);
   TPart = record
      PartNumber : String[15];
      Description : String[30];
      Price : Double;

      case PartType : TPartType of
         ptComputer: (CPU : String[10]; Speed : String[10]; HardDrive : String[10]);
         ptMonitor: (VideoType : String[10]; Size : String[5]; DotPitch : String[5]);
         ptComponent: (Internal : Boolean; Specs : String[29]);
end;


این تعریف به کامپایلر می گویید که تنها یکی از متغییرهای مجموعه case را برای استفاده در هر رکوردی انتخاب کند. این یک راهکار بسیار خوب برای استفاده از حافظه می باشد؛ زیرا حافظه یکسانی برای هر مجموعه‌ای از متغییرها در نظر گرفته می‌شود.

بایت نام متغییر نام متغییر نام متغییر
0 PartNumber
15 Description
45 Price
53 PartType
54 CPU VideoType Internal
55 Specs
64 Speed Size
69 DotPitch
74 HardDrive


دسترسی به یک بایت
بعضی مواقع، هنگامیکه با یک API خارجی کار می‌کنید، احتیاج دارید که اطلاعاتی از نوع Word یا Longint را به نوع‌های دلخواه بشکنید. به عنوان مثال TMSF را بصورت زیر در نظر بگیرید:

Most Significant Byte Least Significant Byte
Unused Frames Seconds Minute

ساختار TMSFRec رو بصورت زیر تعریف می‌کنیم:

type
   TMSFRec = record
      Minutes : Byte;
      Seconds : Byte;
      Frames : Byte;
      Dummy : Byte;
end;

در این حالت ما می‌توانیم به راحتی به هر یک از بایت‌های نوع Longint دسترسی داشته باشیم:

begin
   MinuteLbl.Caption := IntToStr(TMSFRec(Position).Minutes);
   SecondLbl.Caption := IntToStr(TMSFRec(Position).Seconds);
   FrameLbl.Caption := IntToStr(TMSFRec(Position).Frames);
end;

در مثال قبل، Position متغییری از نوع Longint می‌باشد.
ادامه مطلب
نوشته شده در تاريخ چهارشنبه پانزدهم فروردین 1386 توسط ابراهیم خدائی
آرایه ها در دلفی
 
دلفی به ما امکان می دهد آرایه‌هایی از هر نوع متغییری را ایجاد کنیم. برای تعریف آرایه به صورت زیر عمل میکنیم:

var
   array[indexType1, ..., indexTypen] of baseType;


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

نکته: شما می توانید به جای استفاده از کروشه [] از ترکیب پرانتز نقطه استفاده کنید:

d(.i.):= 3 + i; // Equivalent d[i]:= 3 + i;


نکته: وقتی که شما یک آرایه را تعریف می کنید احتیاجی ندارید که به آن مقدار کمترین یا بیشترین بدهید:

var
   A : array [Boolean] of integer;
begin
   A[True] := 50;
   A[False] := 100;
end;


نکته: توابع Low و High کران‌های پایین وبالای یک متغییر آرایه‌ای یا نوعی یا ترتیبی را بر میگردانند:

for I := 0 to High(X) do S := S + X[I];


آرایه‌های ثابت:
آرایه های ثابت می توانند توسط ساختار ثابت نوع دلفی تعریف شود. نوع ثابت که همیشه با عبارت Const تعریف می شود، نه تنها مانع تغییر مقدار پارامتر می شود، بلکه کدهای بهینه بیشتری برای رشته‌ها و رکوردهای رد شده به توابع تولید می کند. ما هنگامی از این نوع استفاده می کنیم که نخواهیم مقدار رد شده به یک تابع تغییر کند.

type
   TDay = (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday);

const
   DayNames : array [TDay] of String[9] = ('Sunday', 'Monday', 'Tuesday',
                                           'Wednesday', 'Thursday', 
                                           'Friday', 'Saturday');
var
   Today : TDay;

begin
   Today := TDay(DayOfWeek(Date) - 1);
   ShowMessage('Today is ' + DayNames[Today] + '!');
end;



آرایه‌های دینامیکی:
آرایه‌های دینامیکی، آرایه‌های تحلیلی پویایی هستند که ابعاد آنها موقع کامپایل شدن شناخته شده نیست. برای اعلان آنها کافی است یک آرایه بدون بعد تعریف کنید:

var MyFlexibleArray: array of Real;


قبل از به کار گیری آرایه‌های دینامیکی، ابتدا باید از رویه SetLength برای تخصیص حافظه آرایه استفاده کرد:

SetLength (MyFlexibleArray, 2);


نکته: آرایه‌های دینامیکی همیشه مبتنی بر صفر می باشند.

نکته: شما می‌توانید آرایه‌های دینامیکی را قبل از رسیدن به ترک قلمرو از حافظه خارج کنید:

MyFlexibleArray := nil;


نکته: مقدار حافظه‌ای که در اختیار آرایه قرار میگیرد، به طول آرایه ونوع عناصر آن بستگی دارد. به عنوان مثال اگر آرایه‌ای از نوع صحیح به طول 10 داشته باشیم 4*10 بایت حافظه به آن اختصاص می‌یابد.


فشرده‌سازی آرایه‌ها:
در دلفی شما هنگامی که ساختار خود را تعیین کردید می‌توانید با استفاده از کلمه کلیدی packed اطلاعات ذخیره شده خود را متراکم کنید:

type TNumbers = packed array[1..100] of Real;


نکته: استفاده از packed سرعت دسترسی به اطلاعات را کند میکند. در مورد آرایه‌ای از کاراکترها این مورد سازگارتر می‌باشد.


آرایه‌های چند بعدی دینامیکی:
برای تعریف آرایه‌های چند بعدی دینامیکی، تنها کافی است ...array of را در ساختار خود تکرار کنید. به طور مثال:

type
   TMessageGrid = array of array of string;

var
   Msgs: TMessageGrid;


این تعریف یک آرایه دو بعدی از رشته‌ها می باشد. سپس باید به آرایه خود فضا نسبت داد:

SetLength(Msgs, I, J);



شما می‌توانید آرایه‌های چند بعدی دینامیکی خود را به صورت غیر مستطیلی (Not Rectangular) ایجاد کنید. ابتدا رویه SetLength را صدا زده و پارامتر بعد اول را بدهید:

var
   Ints: array of array of Integer;

SetLength(Ints, 10);


ما 10 سطر به آرایه خود اختصاص دادیم. از این پس، شما می توانید ستونهای خود را در هر زمان (با اندازه‌های مختلف) تخصیص دهید:

SetLength(Ints[2], 5);

ادامه مطلب
نوشته شده در تاريخ چهارشنبه پانزدهم فروردین 1386 توسط ابراهیم خدائی
ایجاد یک DLL
با استفاده از منو فایل گزینه New Items را انتخاب کنید و آیتم DLL Wizard را انتخاب نمایید. حال به فایل ایجاد شده، یک فرم با استفاده از روش بالا اضافه نمایید. دقت نمایید که Application را بجای فرم انتخاب ننمایید. حال اگر فرض کنیم که نام فرم شما Demo باشد و بانام UDemo.pas آنرا ذخیره کرده باشید. باید در فایل DLL بصورت زیر کد نویسی نمایید:

library demodll;

{ Important note about DLL memory management: ShareMem must be the
  first unit in your library's USES clause AND your project's (select
  Project-View Source) USES clause if your DLL exports any procedures or
  functions that pass strings as parameters or function results. This
  applies to all strings passed to and from your DLL--even those that
  are nested in records and classes. ShareMem is the interface unit to
  the BORLNDMM.DLL shared memory manager, which must be deployed along
  with your DLL. To avoid using BORLNDMM.DLL, pass string information
  using PChar or ShortString parameters. }

uses
   SysUtils,
   Classes,
   UDemo in 'UDemo.pas' {Demo};

{$R *.res}
procedure ShowdemoForm;stdcall;
begin
   Demo :=Tdemo.Create(nil);
   demo.Show;
end;

function ShowdemoFormModal:integer;stdcall;
begin
   demo :=Tdemo.Create(nil);
   Result := demo.ShowModal;
end;

Exports
   ShowDemoForm,
   ShowdemoFormModal;
begin
end.


دقت کنید که نام DLL فوق DemoDll می باشد و با نام DemoDll.dpr ذخیره گردیده است.

حال بر روی فرم موجود تمام دکمه‌ها و آبجکت‌های مورد نظرتان را اضافه و کد نویسی کنید (اختیاری). در پایان در منو Project گذینه Build DemoDll را انتخاب کرده و اجرا نمایید. فایلی با نام DemoDll.dll ایجاد می گردد که برای استفاده آماده است.


استفاده از یک DLL بصورت دینامیکی
برای استفاده از یک DLL ‌بصورت دینامیکی، ابتدا نام توابعی را که در فایل DLL شما موجود است بصورت زیر تعریف نمایید:

unit UMain;

interface

uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, StdCtrls, ExtCtrls;

type
TShowdemoFormModal= Function :integer;
.
.
.


دقت کنید که نام برنامه انتخابی پیش فرض Main و با نام UMain.pas ذخیره گشته است. حال برای لود کردن DLL یادشده، یک دکمه بر روی فرم قرارداده آنرا بصورت زیر کد نویسی کنید:

var
hndDLLHandle:THandle;
ShowdemoFormModal:TShowdemoFormModal;

procedure TFMain.Button1Click(Sender: TObject);
begin
   try
      hndDLLHandle:=LoadLibrary('Demodll.dll');

      if hndDLLHandle <> 0 then begin
         @ShowdemoFormModal:=getProcAddress(hndDLLHandle,'ShowdemoFormModal');

         if addr(ShowdemoFormModal) <> nil then begin
            ShowdemoFormModal;
         end
         else
            showmessage ('function not exists ...');
         end
      else
         showMessage('Dll Not Found!');
      finally
         freelibrary(hndDLLHandle);
      end;
end;

فرم شما آماده اجراست. در پایان متذکر می شوم که استفاده ار روش دینامیکی در لود کردن DLL ها باعث پایین آمدن سرعت نمایش فرم‌ها و در عوض بالارفتن سرعت برنامه خواهد شد.

ادامه مطلب
نوشته شده در تاريخ سه شنبه چهاردهم فروردین 1386 توسط ابراهیم خدائی

انواع متغیر ها در دلفی:

Windows Data Type

Object Pascal Data Type

Description

LPSTR

PAnsiChar

اشاره گر رشته

LPCSTR

PAnsiChar

اشاره گر رشته

DWORD

Longword

عدد کامل

BOOL

LongBool

مقدار بولي

PBOOL

^BOOL

اشاره گر به مقدار بولي

PByte

^Byte

اشاره گر به مقدار بايت

PINT

^Integer

اشاره گر به مقدار صحيح

PSingle

^Single

اشاره گر به مقدار مميز شناور

PWORD

^Word

اشاره گر به مقدار 16 بيتي

PDWORD

^DWORD

اشاره گر به مقدار 32 بيتي

LPDWORD

PDWORD

اشاره گر به مقدار 32 بيتي

UCHAR

Byte

مقدار 8 بيتي

PUCHAR

^Byte

اشاره گر به مقدار 8 بيتي

SHORT

SmallInt

عدد کامل 16 بيتي با علامت

UNIT

Longword

عدد کامل 32 بيتي بيعلامت

PUNIT

^UNIT

اشاره گربه مقدار عدد کامل32 بيتي بيعلامت

ULONG

Cardinal

عدد کامل 32 بيتي بيعلامت

PULONG

^ULONG

اشاره گر به مقدار عدد کامل 32 بيتي بيعلامت

PLongint

^Longint

اشاره گر به مقدار 32 بيتي

PInteger

^Integer

اشاره گر به مقدار 32 بيتي

PSmallInt

^SmallInt

اشاره گر به مقدار 16 بيتي

PDouble

^Double

اشاره گر به مقدار دابل

LCID

DWORD

شناسه محلي

LANGID

Word

شناسه زبان


ادامه مطلب
نوشته شده در تاريخ سه شنبه چهاردهم فروردین 1386 توسط ابراهیم خدائی
تخصیص خودکار حافظه

وقتی شما از نوع‌های پایه (Integer ،real ،word و…) برای ایجاد متغییرهای خود استفاده می کنید، هیچ نگرانی درباره تخصیص حافظه آن وجود ندارد چون دلفی خودش آنرا تخصیص حافظه می کند و سپس آزاد میکند.

type
   TDay = (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday);
var
   Name  : String;                          {256 Bytes}
   X, Y  : Integer;                           {4 + 4 = 8 Bytes}
   List  : array [0..10] of Double;     {8 * 11 = 88 Bytes}
   Today : TDay;                            {1 Byte}


دراین نمونه پس از پایان برنامه، تمام حافظه تخصیص داده شده فراخوانی و آزاد می شود.


تخصیص حافظه دینامیکی
در این حالت برنامه نویس احتیاج دارد تا انباره حافظه را شخصا" تخصیص و آزاد کند.

نوع Pointer
اشاره‌گرها در دلفی می‌توانند شکل‌های مختلفی را در برگیرد. نخست، نوع اشاره‌گری که یک آدرس حافظه را برای نوع ویژه‌ای از داده، همانند صحیح، رشته و غیره نگه میدارد (Typed Pointer).

var
   Number : ^Integer;
   Name   : ^String;


دوم، اشاره‌گرهای بدون نوع. اشاره‌گرهای بدون نوع (Untyped Pointers) خیلی به نوع معمولی خود شبیه هستند. اما محدودیت‌هایی مثل اینکه باید به نوع خاصی اشاره (Point) کند را ندارد.

var
   Something : Pointer;


حال اشاره‌گر بدون نوع ما می تواند به هر نوعی از داده اشاره کند. برای تخصیص حافظه آن، از کمپلکس بیش از یک بیت استفاده میکنیم. برای مثال برنامه زیر کامپایل می شود ولی در زمان اجرا حافظه‌ای تخصیص نمیشود.

begin
   New(Something);
   Dispose(Something);
end;


برای تخصیص حافظه کامپایلر باید بداند که نوع داده ما برای تخصیص حافظه چیست:

type
   IntPtr = ^Integer;

var
   Something : Pointer;
begin
   Something := New(IntPtr);
   Integer(Something^) := 10;
   Dispose(Something);
end;



تخصیص بلاکی از حافظه
ما می‌توانیم از اشاره به بلاک‌هایی از تخصیص حافظه در سیستم استفاده کنیم. این کار را با رویه‌های GetMem و FreeMem برای تخصیص و آزاد سازی حافظه استفاده میکنیم.

var
   Something : Pointer
begin
   GetMem(Something, 100);
   FreeMem(Something, 100);
end;



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

var
   Something : Pointer;
   MyString  : PChar;        // type PChar = ^Char;
                              
begin
   GetMem(Something, 100);
   MyString := Something;
   StrCopy(Something, 'Hello World'); 
   FreeMem(Something, 100);
end;



حافظه Heap
Heap شامل قسمتی از حافظه موجود در یک برنامه است که آنرا حافظه پویا می نامیم. Heap بخشی است که در آن تخصیص و تعریف حافظه به صورت تصادفی (Random) اتفاق می‌افتد. این به آن معناست که اگر شما سه بلاک از حافظه را به طور متوالی تخصیص دهید، می توانید بعد از هر دستور آنرا از بین ببرید. مدیر Heap جزئیات را برای شما نگهداری می کند. بنابراین شما به سادگی می توانید یک حافظه جدید را با GetMem و یا بوسیله صدا زدن constructor هنگام ساختن یک شی درخواست کنید و دلفی به شما یک بلاک جدید را برخواهد گرداند. Heap یکی از سه فضای موجود در برنامه کاربردی را استفاده کرده و دوتای دیگر به صورت فضای یکپارچه (Global) و پشته قرار می گیرند.


حافظه Stack
Stack شامل قسمتی از یک بخش از حافظه موجود یک برنامه است که دینامیکی است اما برای تخصیص و آزادسازی فرامین مخصوص دارد. تخصیص Stack به صورت LIFO می باشد. این بدان معناست که آخرین حافظه شیء شما تخصیص داه خواهد شد و سپس حذف می شود. حافظه پشته در روتین‌های نوعی استفاده می‌شود. وقتی شما یک روتین را صدا میزنید، پارامترهایش و روتین نوع آن در پشته ریخته می شود. همچنین پارامترهایی که در یک روتین تعریف میشوند، در پشته ذخیره میشوند و وقتی روتین خاتمه پیدا می کند تمام آنها به طور خودکار از بین می رود.


ادامه مطلب
نوشته شده در تاريخ سه شنبه چهاردهم فروردین 1386 توسط ابراهیم خدائی

گزارش از دلفي 9- Delphi 2005

بازهم خبرهاي جديدتري از Delphi 9 حاکي از آنست که نسخه جديد Delphi قويترين و بهترين ابزار براي برنامه نويسي ويندوز خواهد شد.

در نسخه جديد علاوه بر امکانات زيادي که به محيط برنامه نويسي اضافه شده قدرتهاي بيشتري به IDE آن داده شده است. يکي از اين امکانات اينه که شما مي تونيد در يک محيط هم براي Win32 برنامه نويسي کنيد و هم NET. (براي #C) . نکته جالب اينه که يک دستوارت جديد هم به آن اضافه شده است.

خلاصه اينکه بازم مثل هميشه Delphi بهترين هست.

براي اطلاعات بيشتر در زمينه امکانات جديد Delphi 9 که در کنفرانس Borcon 2004 تشريح شده سري به این آدرس بزنيد. http://delphi.about.com/library/weekly/aa083104a.htm

دوستان عزيز دلفي كار حتما Delphi 2005 نصب كنيد ، بعد از نصب كردنش خيلي چيزهاي جديد از اين محصول بي همتا خواهید ديد.كه بسيار جالب و مفيد خواهد بود.

حال سعي خواهیم كرد امكانات و كاربردهاي جديد اين محصول رو معرفي كنیم

وقتي كه اين محصول رو تهيه كنيد اولين چيزي كه جالبه اينه كه بايد CD 3 رو بشينيد و نصب كنيد كه اين ممكنه يكم عجيب باشه. چرا كه تا حالا اينطوري نبوده و هميشه در دلفی 7 با يك سي دي (در دلفي 8 دو سي دي) مي تونستيد از دلفي استفاده كنيد . البته ناگفته نماند كه خود دلفي در سي دي اول هست و مابقي مربوط به موارد بسياري هست كه براي كار با اين محصول شما ممكنه كه احتياج پيدا كنيد.

اول Microsoft .NET Framework v1.1 و بعد هم Microsoft .NET Framework SDK كه فقط همين SDK حدود 850 مگابايت از هاردتون رو لازم داره. و بعد نرم افزارها و ابزارهاي جالب ديگه كه خودتون بايد نصب كنيد تا ببينيد.

حالا به يك سري موارد شاخص كه در اين نسخه از DELPHI عرضه شده مي پردازیم:

1- اول اينكه شما ميتونيد تمام برنامه هاي قبلي خودتون رو كه در نسخه هاي قبلي نوشته ايد رو باز كنيد و توسعه بدين.

2- شما امكان كار بصورت توام هم در محيط NET. و هم WIN32 رو داريد.

3- يكي از امكانات بسيار جالبي كه اکثر کاربران هماو اول شيفتش خواهند شد اينه كه شما ميتونيد براي تعريف تمامي شناسه ها ( identifier) مثلا متغييرها و نام توابع و روالها از Unicode (برای مثال: نام های فارسی) استفاده كنيد. مثلا يك متغيير به شكل زير ايجاد كنيد :

Var

;Integer :ابراهیم_خدائی

;TBitmap : محمد

يا اينكه تابعي بصورت زير تعريف كنيد:

String) :Boolean: متن_ورودی) چاپ_متن Function

البته ممكنه در اينجا جابجا ديده بشه ولي خودتون امتحان كنيد حتما متوجه خواهيد شد.

4- ديگر اينكه ساختار for..do…in هم به زبان Object Pascal اضافه شده كه با اون ميتونيد مانند C ساختار foreach استفاده كنيد. حالا اين امكانات رو به طور كامل و مفصل بعدا توضيح خواهم داد.

5- كلي امكانات جديد به محيط IDE هم اضافه شده كه هر کاربری در ابتدا متوجه آن خواهد شد.

در آخر اينكه حتما اين محصول رو تهيه كنيد و خودتون يك نگاهي بندازيد. حتما خواهيد فهميد كه اين بهترين محصول براي برنامه نويسي در ويندوز و اينترنت هست كه تا حالا اومده.

موفق باشيد.


ادامه مطلب
نوشته شده در تاريخ سه شنبه چهاردهم فروردین 1386 توسط ابراهیم خدائی

حركت از دلفي به دلفي net.

 همه مي دانيم كه از زمان به بازار آمدن دلفي 7 بورلند صحبت از تكنولوژيNET. مي كرد و همراه دلفي 7 هم يكNet Preview. منتشر كرد كه برنامه نويسها مي توانستند كدهاي NET. خود را با آن كامپايل كنند.
شما به عنوان يك برنامه نويس دير يا زود مي بايست براي ماندن در ميان برنامه نويسان ويندوزي به سمت NET. حركت كنيد. در اين مقاله داریم كمي در مورد كارايي و تواناييهاي دلفي 8 و همچنين برنامه نويسي NET. صحبت كنیم و در آينده نيز با ارائه مقالات كامل تر و آموزشي با هم قدم به سرزميني جديد بگزاريم.
اگر شما جز برنامه نويسان دلفي باشيد و در حال حاضر اين احساس و فكر را داريد كه چگونه وارد برنامه نويسي NET. بشويد و از كدام قسمت آن (VCL Forms, Windows Forms, ASP.NET, … ) بايد استفاده كرد و هر كدام چه ويژگيهايي دارند و چگونه مي شود با آنها كار كرد اين سري مقالات را دنبال كنيد.

كمي بيشتر در مورد NET. در دلفي:
اگر ما با NET. آشنايي نداريد پيشنهاد ميكنم حتما دلفي 8 رو نصب كنيد و يك نگاهي هم به داخل Documentهاي همراه آن بياندازيد. اگر شما مي خواهيد اين مقالات را دنبال كنيد بايد حداقل ديروز دلفي 8 رو نصب كرده باشيد و يك كم با آن سروكله شده باشيد !!!
حال براي بهتر درك كردن اين موضوعات چند نكته رو در اينجا ذكر ميكنم:

- "Delphi 8 for .Net is pure Delphi and pure .Net" اين شعار بورلند است در مورد دلفي 8. كه واقعا شعاري درست و بواقع هست. در واقع اين شعار به اين معني هست كه شما مي توانيد به راحتي با داشتن تجربه و مهارت در دلفي مي توانيد براي NET. هم برنامه نويسي كنيد. دلفي 8 اين قدرت را به شما مي دهد كه در محيط IDE آن علاوه بر برنامه نويسي NET. برنامه هاي قبلي خود كه در ورژنهاي قبلي دلفي نوشته ايد را باز كنيد، تغيير دهيد و اجرا نماييد.
دلفي 8 به شما قدرت بينهايتي براي برنامه نويسي ويندوز و وب تحت NET. ميدهد كه هيچ محصول ديگري حتي محصولات ميكروسافت (VS.NET) هم نمي تواند در اين حد امكانات و قابليتها در اختيار شما قرار دهد. براي همين موضوع نيز دلفي در سال 2002 بعنوان بهترين ابزار براي برنامه نويسي NET. انتخاب شد. و محصولات ميكروسافت در رده هاي بعدي قرار گرفتند. براي ديدن اين موضوع مي توانيد به سايت developer.com مراجعه كنيد.
در يك كلام مي توان گفت دلفي 8 امروزه بهترين و تنها انتخاب برنامه نويسان حرفه اي NET. مي باشد.

- Windows Forms ممكن است بپرسيد منظور از Windows Forms در دلفي 8 چيست؟
يا اينكه Caption يكي از VCLهاي خود كه روي فرمتان قرار دارد كجاست؟ و يا چه بلايي به سر TDBGrid آمده است؟
بدون شك NET. يك Framwork بسيار قوي است. و Windows Forms بعنوان يك Platform قدرت بسيار زيادي براي برنامه نويسي برنامه هاي ويندوزي تحت NET. در اختيار شما قرار مي دهد. توضيح بيشتر اينكه در گذشته هر زباني براي خود يك Platform جداگانه اي براي كار در محيط Win32 داشت مانند VCL در دلفي، MFC‌در C++ و VB API در VB و ... . Platform يك رابطي است براي منتقل كردن برنامه هاي به سطوح پايين براي كار با Messageها و ... . و هر برنامه نويس كه در يك محيط برنامه نويسي مي كرد با يكي از آنها مي بايست كار ميكرد. در حاليكه NET. تنها يك Platform را معرفي ميكند كه از آن مي توان در تمامي زبانهاي برنامه نويسي NET. مي توان استفاده كرد.
در دنيا .NET ، Windows Forms هم كه تركيبي است از Windows Forms Controls بعنوان ابزار طراحي برنامه هاي تحت ويندوز به كار برده مي شود.
در NET. قسمتي كه .Net FCL (Framework class library) ناميده مي شود داراي توابع و ابزارهايي است كه همانند VCLهاي دلفي براي استفاده در برناه نويسي برنامه هاي Win32 بسيار پر كاربرد هستند. در نتيجه شما بعنوان يك برنامه نويس دلفي مي توانيد با قدرت با برنامه نويسان ديگر مانند C#, VB.NET , … رقابت كنيد، حتي كار برنامه نويسان دلفي بسيار راحت است از ديگر برنامه نويسان چرا كه شما براي كار كردن با NET. در دلفي احتياجي نداريد دلفي را از پايه بياموزيد ولي بطور مثال براي برنامه نويسي با VB.NET برنامه نويسان VB بايد برنامه نويسي شي گرا (Object-Oriented) را از پايه بياموزند و بعد بروند با VB.NET برنامه نويسي كنند.
- " TObject یا System.object". آيا براي كار كردن با .NET fcl بايد همه آن را از ابتدا ياد بگيریم؟ درست است كه .net fcl مجموعه بسيار بزرگي از توابع ،كلاسها، اينترفيسها و ... است ولي آيا بايد با طرز كار همه آنها آشنا شویم؟

ولي نه صبر بورلند وقتي داشت براي NET. خود را آماده ميكرد فكر اينجا را هم كرده و VCL.NET را بوجود آورده است. خوب حالا VCL.NET چيست؟ اين VCL هست يا NET. ؟ اگر در فرم خود از يكي از VCL ها استفاده كنيد كه دلفي شما هم VCL.NET داشته باشد و آنرا كمپايل كنيد آنگاه شما از FCL استفاده كرده ايد!!! بله به همين راحتي . در واقع VCL.NET يك پوسته (shell) براي NET. هست كه به برنامه نويسان دلفي اين امكان را مي دهد كه با استفاده از VCLهاي دلفي برنامه هاي تحت NET. بنويسند.
مي توان گفت كه اين از قدرتهاي دلفي 8 مي باشد كه ديگر زبانها آنرا ندارند.


ادامه مطلب
نوشته شده در تاريخ پنجشنبه نهم فروردین 1386 توسط ابراهیم خدائی

دلفي و تكنولوژي NET.:
در دلفي 8 به دو روش مي توان Applicationهاي تحت NET. نوشت: اول استفاده از VCL for .NET است كه از طراحي VCL پشتيباني مي كند و حالا براي استفاده در .NET Framework با نام VCL.NET عرضه شده است. اين روش براي بسياري از برنامه نويساني كه قبلاً با دلفي 7 كار مي كرده اند و از همان VCL استفاده مي كرده اند بسيار مفيد است, چراكه به راحتي مي توانند برنامه هاي قبلي خود را با تغييرات اندك به دلفي 8 و محيط NET. منتقل كنند.
روش دوم استفاده از WinForms است كه در اين مقاله قصد داريم درباره اين روش صحبت كنيم. در مقالات بعدي بيشتر به روش هاي ديگر خواهيم پرداخت كه البته اين روش براي توليد نرم افزارهاي ويژوال تحت NET. بهترين روش است. چراكه در اين روش از Namespace system.forms استفاده مي شود كه از كلاس هاي اصلي NET. به شمار مي رود. (namespaceها كلاس هاي اصلي NET. هستند كه مانند Unitها در دلفي 7 مي باشند)
همچنين تمامي برنامه نويسان دلفي براي استفاده از اين روش تقريباً بايد تمامي مطالبي كه در مورد برنامه نويسي GUI كه در محيط win32 استفاده مي شد را فراموش كنند و با winfroms برنامه نويسي NET. را شروع كنند.
براي شروع اول دلفي 8 را اجرا كنيد و از منوي file گزينه New و بعد Others را انتخاب كنيد تا يك ديد اوليه از روش هايي كه مي توان با استفاده از آنها در NET. برنامه نوشت را ببنيد كه ابتدا Delphi ASP Projects را مي بينيد كه در آن مي توان از ASP.NET web Application و يا ASP.NET web Services براي توليد برنامه هاي مبتني بر NET. براي استفاده در وب بكار برد.
در قسمت Delphi for.NET نيز شما قسمتهاي زير را مشاهده مي كنيد:
 

محيط IDE دلفي 8
با انتخاب windows form محيط IDE دلفي 8 براي شروع كار آماده مي شود. شما يك فرم خالي كه در محيط Form Designer قرار دارد را در وسط صفحه مي بينيد و Object Inspector را در سمت چپ و Project Manager و Model View و Data Explorer را در بالاي سمت راست و Tool Palette را در پايين سمت راست مي بينيد.
در اينجا اولين تفاوتي كه نسبت به دلفي 7 مشاهده مي شود اين است كه محيط طراحي form به صورت يك پنجره بسته است كه فرم خالي در آن قرار دارد. اگر با محصولات Visual Studio .NET كار كرده باشيد متوجه شباهت اين قسمت با آنها خواهيد شد. احتمالاً بورلند خواسته است كه يك شباهتي بين محيط دلفي 8 و Visual Studio .NET ايجاد كند تا برنامه نويساني كه قبلاً با VB و يا VC كار مي كرده اند بتوانند سريع تر خود را با محيط دلفي وفق دهند و با آن به برنامه نويسي NET. بپردازند.
براي اولين بار كه من اين محيط را ديدم كمي ناراحت كننده بود چرا كه ديگر نمي توانستيم آن آزادي عملي كه در محيط دلفي 7 داشته ايم را در (مورد اندازه formها) اينجا داشته باشيم و همچنين در اين محيط ديگر نمي توان كد برنامه و form را با هم ديد و براي تغيير حالت از حالت نمايش form به Code بايد از Tabهايي كه در پايين بصورت Code/Design هستند استفاده كرد. يعني در هر لحظه شما فقط يك حالت را مي توانيد داشته باشيد.
اما يك سري نكات مفيد و جالب است كه در اين محيط به چشم مي خورند. اول يك جعبه ابزار (Tool Palette) بسيار زيبا و كارا، كه نسبت به محيط قبلي دلفي 7 بسيار سهل الوصول تر شده و امكان اين كه شما بتوانيد تعداد زيادي از ابزار لازم را در كنار دست خود داشته باشيد را فراهم مي كند. هم چنين اگر نام كنترل هاي مورد نياز را هم بدانيد, مي توانيد با تايپ كردن نام كنترل مورد نظر در Textbox بالاي جعبه ابزار, ابزارها را فيلتر كنيد. مثلاً با زدن حرف (b) تمامي كنترل هايي كه با حرف (b) شروع شده است, نمايش داده مي شود.
اما يك سري تغييرات ساختاري ديگري هم در اينجا ديده مي شود. به طور مثال اگر شما يك Button را به روي form قرار دهيد در قسمت Object Inspector مي بينيد كه براي تغيير مكان دكمه، ديگر Propertyهاي Top و Left وجود ندارد بلكه location كه داراي دو قسمت x و y است مكان كنترل و Size كه شامل Height, Width است اندازه كنترل را تعيين مي كند و همچنين بجاي Caption از Text استفاده شده است.
از ديگر مزايا اين است كه تمام Propertyهاي كنترل ها به صورت كلاسه بندي و طبقه بندي شده وجود دارند كه امكان باز و بسته كردن Sub Propertyها هم با گذاشتن + و – وجود دارد كه اين نكته از سردرگمي در قسمت Propertyها كه در محيط دلفي 7 خيلي وقت گير بود جلوگيري مي كند. در قسمت رويدادها (Events) نيز تغييراتي را مي بينيم. مثلاً بجاي رويداد Onclick در اينجا Click را داريم. در كل، در اول Eventها ديگر on وجود ندارد (به اين دليل كه در NET. ما رويداد Click داريم و نه OnClick) اينجا هم با دو بار كليك كردن روي هر رويداد به قسمت Code Editor مي رويم.
 

محيط ويرايش كد (Code Editor)
در قسمت ويرايش كد يك سري تغييرات عمده نسبت به محيط هاي قبلي دلفي وجود دارد. اولين چيز شماره خط ها مي باشد كه در كنار هر خط از كدها مي توان ديد.
همچنين يك سري علامت هاي + و – كه با آنها مي توان يك قسمت هايي از كد را باز و بسته كرد كه به اين عمل باز (Expand) و بسته (fold) كردن كدها و روش Code Folding مي گويند. در اين روش كدهاي جديدي توليد مي شوند كه براي طراحي Win formها مي باشد.
در طراحي فرم ها و كنترل هاي VCL (يا CLX) تمامي مشخصات و Propertyهاي آنها در فايل هاي جداگانه DFM. (يا XFM.) ذخيره مي شوند. اما در اينجا به اين شكل نيست و تمامي مشخصات در فايل جدا ذخيره نمي شوند بلكه در خود فايل كد برنامه ذخيره مي شوند كه اين را مي توانيد در قسمت اول كد برنامه كه با عبارت Windows Form Designer generated Code مشخص شده, ببينيد.
حالا اگر بدون اين كه در قسمت رويداد Click دكمه اي كه قبلاً ساختيم كدي وارد كنيد برنامه را Compile كنيد. چيزي كه حتماً متوجه خواهيد شد اين است كه با آن كه شما در قسمت Button1-Click چيزي وارد نكرده ايد اين قسمت حذف نمي شود!!!
در دلفي 7 به اين شكل نبود و هنگام كمپايل كردن اگر چنين حالتي رخ مي داد آن قسمت از كد برنامه حذف مي شد. اين يك خصيصه دلفي 8 است و فكر نكنيد كه باگ پيدا كرده ايد!!! چراكه در Win Form شما مي توانيد رويداد Click چندين كنترل را به يك كد كه مثلاً براي يكي از كنترلها نوشته ايد مربوط كنيد كه هرگاه رويداد Click براي هر كدام از آن كنترلها اتفاق افتاد اين كد اجرا شود. به همين دليل در دلفي 8 با پاك كردن كدهاي مربوط به يك قسمت و كمپايل كردن برنامه, آن قسمت از بين نمي رود, چراكه ممكن است آن قسمت براي ديگر كنترلها نيز استفاده شده باشد.
 

كدهاي مديريت طراحي (Designer Manager Code):
اگر شما بخواهيد متد Button1-Click را به صورت دستي حذف كنيد, مي توانيد Handler اين رويداد را به صورت دستي از قسمت Implementation حذف كنيد. يعني چي؟!
خوب وقتي كه شما يك كنترل روي فرم قرار مي دهيد و مثلاً Event كليك آنرا را ايجاد مي كنيد, در قسمت Implementation يك خط كد مانند زير اضافه مي شود:
اين خط به اين معني است كه اگر روي Button1 كليك شد, متد Button1-Click را اجرا كن. اين خط همان Handler رويداد Click دكمه ما است. حال اگر از اين متد كه براي اجرا شدن هنگام كليك روي Button1 نوشته ايم در رويداد كليك چند كنترل ديگر نيز استفاده كنيم. اين Handler به كد مربوط به آن كنترلها نيز اضافه مي شود و در آن به كمپايلر مي فهماند كه اگر روي اين كنترل هم كليك شد كد مربوط به Button1-Click را اجرا كن. فقط در آنجا بجاي عبارت Self-Button1.Click نام كنترل ديگر مثلاً Self-label1.Click مي آيد. به صورت زير:
بهتر است در اين مورد بيشتر از اين توضيح ندهيم, چون مسايل مهمتري هم است!!! حالا قبل از اين كه برگرديم به قسمت طراحي form بهتر است نگاهي به سمت راست صفحه و جعبه ابزار بيندازيم. بله مي بينيم كه در آنجا بجاي كنترلها Code Snippets را داريم. هر كدام از آن آيكونها براي ايجاد كردن يك كد از پيش تعريف شده در متن برنامه مي باشد. يك مشكلي كه در اينجا ديده مي شود اين است كه آيكون تمام آنها مثل هم است و نمي توان فهميد كه كدام يك از آنها يك كدي را توليد مي كنند. البته با نگه داشتن موس روي هر كدام از آنها به صورت Hint اين مطلب را مي شود فهميد.
ولي براي راحت تر كردن كار شما مي توانيد با Right Click كردن روي آن قسمت و انتخاب Button Size Include Caption متن هر كدام از آنها را در كنار آيكونها ديد. در ضمن براي استفاده از آنها مي توانيد هر يك از آنها را بوسيله موس بكشيد و بجاي مورد نظر Darg كنيد و يا اين كه روي آنها Double Click كنيد.


ادامه مطلب
نوشته شده در تاريخ پنجشنبه نهم فروردین 1386 توسط ابراهیم خدائی

در سال 1995 اولین نسخه Delphi با نام Delphi 95 توسط شرکت Borland به بازار عرضه شد. در این ده سال فعالیت شاهد تغییرات زیادی در ساختار و معماری این ابزار قوی برای برنامه نویسی و توسعه نرم افزارها بودیم. اول با Delphi 95 که امکان طراحی برنامه های اجرایی هم در محیط Win32 و هم Win16 (مانند Windows 3.1) را داشت شروع شد و با پیشرفت روز به روز صنعت نرم افزار و تکنولوژی های برنامه نویسی Delphi هم رشد کرد.


سال 1996 در نسخه دوم Delphi 2 ابزارهایی برای گزارشگیری و رسم نمودار وجود داشت که توانست خیلی بالاتر از دیگر رقبا به بازار وارد شود. و از این نسخه بود که Delphi دیگر فقط برای Win32 استفاده میشد.


در سال 1997 با به بازار آمدن Delphi 3 یک جهش اساسی در ابزار RAD بوجود آمد که باعث شد بسیاری از برنامه نویسان به Delphi روی آورند. اما نکته ای که برنامه نویسان ایرانی را تا آن زمان آزار میداد نبودن امکاناتی برای برنامه نویسی فارسی بود. به همین دلیل هنوز هم بسیاری از برنامه نویسی ایرانی با اینکه به قدرت و سرعت Delphi پی برده بودند اما برای برنامه نویسی ساده تر و فارسی هنوز با محصول صرفا آموزشی مایکروسافت به نام VB کار میکردند. و این مهمترین دلیل پایین بودن سطح برنامه نویسی تحت Windows در آن روزگار بود. که البته در همان سالها بود که نمایندگی رسمی شرکت بورلند نیز به دلیل تحریم ایران توسط آمریکا تعطیل شد.


 اما در سال 1998 که یک سال رویایی برای برنامه نویسان ایرانی بود Delphi 4 پا به عرصه بازار برنامه نویسی ویندوز گذاشت. (در همین سال هم بود که Borland اولین نسخه Kylix برای Linux را نیز به بازار داد) برای اولین بار وقتی که Delphi 4 نصب شد اولین چیزی که در کترلهای آن توجه هر برنامه نویس ایرانی را به خود جلب میکرد گزینه ای بود به نام BiDiMode. بله این همان چیزی بود که ما منتظرش بودیم با استفاده از این امکان بود که تعداد زیادی از Componentهای فارسی نویسی با امکان از چپ به راست نویسی به برنامه های تحت ویندوز اضافه شد. البته این امکان باعث شد که Internationaliztion نیز در برنامه های نوشته شده با Delphi نیز بوجود بیاید که نه تنها در ایران بلکه در بسیاری از کشورهای دیگر نیز مورد استقبال قرار گرفت. در آن زمان تنها برتری که VB و VC نسبت به Delphi داشتند امکان نوشتن VBA (VB for Application) بود که با استفاده از آن میشد برای محصولات Office برنامه هایی نوشت که البته در Delphi هم با استفاده از OLE Container امکان استفاده از آن نرم افزارها وجود داشت ولی کمی مشکل بود و احتیاج به سواد بالایی از برنامه نویسی داشت.


 سال 1999 با آمدن Delphi 5  به بازار علاوه بر تغییرات بسیار جالب و مفیدی که در محیط IDE بوجود آمده بود یک Tab هم به قسمت ابزار Delphi اضافه شده بود با نام Server که این دقیقا همان امکاناتی بود که برای برقراری ارتباط با Office مورد استفاده قرار میگرفت. در این نسخه از دلفی نیز امکانات زیادی برای اتصال به بانکهای اطلاعاتی ایجاد شد علاوه بر آن امکاناتی برای برنامه نویسی اینترنت بوجود آمد و همچنین استفاده از WinSock نیز بسیار راحتتر شده بود و مهمتر از همه Quick Report هم تمامی نیازهای گزارشگیری برنامه نویسان را جواب میداد.


 سال 2000 که Delphi 6  به بازار آمد (البته این نکته را هم عنوان کم که در Turbo Pascal و تا Delphi 5 یک امکانی وجود داشت که شما می توانستید Constantهایی که در برنامه تعریف میکنید را در قسمتهایی از برنامه بنا به خواست خود تغییر دهید که البته این بیشتر به این دلیل بود که ما از همان زمانی که با Pascal کار میکردیم عادت کرده بودیم که اگر می خواهیم متغییری بسازیم که بتوان به آن مقدار اولیه داد از Constant استفاده می کردیم. برای همین هم با برداشتن این امکان که خوب منطقی هم بود (چون Constant یعنی همین که تغییر نکند!!!!)

 به سال 2001 رسیدیم سالی که Borland حجت را بر برنامه نویسان Win32 تمام کرد و تمام امکانات و قدرتهای برنامه نویسی در Windows و Internet و هر چیز دیگری که می توانید فکرش بکنید را فراهم کرد. در این سال بود که من بالاخره دل از Delphi 5 کندم و زندگی را با Delphi 7  پی گرفتم !  امکانات بسیار زیاد برای برنامه نویسی اینترنت مانند IntraWeb, WebServices, NSAPI-ISAPI, WEBSnap, Indy, ... باعث شد که Delphi 7 بعنوان قویترین ابزار برای برنامه نویسی اینترنت خودنمایی کند. البته Borland در سی دی دوم Delphi 7 یک کمپایلر و یک سری ابزار دیگر قرار داد که شاید اول توجه هیچ کس را به خود جلب نکرد اما در سال 2003 همان ابزارها باعث شد که Delphi 7 بعنوان بهترین و سریعترین ابزار برای برنامه نویسی و توسعه برنامه ها در NET. در بیاید. بله حتی بالاتر از محصولات VisualStudio که برای NET. ایجاد شده بودند.  همین امر سبب شد تا در سال 2002 Borland تمام تلاش خود را متوجه حرکت از Win32 به سمت NET. بکند. و در این سال هیچ محصولی به بازار عرضه نشد.


 در سال 2003 تقریبا اواخر سال بود که بورلند اعلام کرد اولین محصول خود را که برای برنامه نویسی NET. تولید شده است را به بازار می دهد و همینطور هم شد. پس از دو سال انتظار Delphi 8 به بازار آمد محصولی که هر برنامه نویس Delphi که برای اولین بار آنرا اجرا میکرد مدتی فقط محو تغییرات بسیار عمده ای میشد که در آن داده شده بود. بطوریکه تمام ساختار IDE که در نسخه های پیشین فقط با تغییرات جزیی به بازار می آمد، حال کاملا عوض شده بود. و همین باعث این بود که در این نسخه Borland زیاد موفق نباشد چرا که سرعت پایین در اجرا شدن برنامه و داشتن یک سری مشکلات ریز و درشت در IDE ان و همچنین نبودن امکانی برای برنامه نویسی WIN32 باعث شد که بسیار از برنامه نویسان فعلا با همان Delphi 7 کار کنند و منتظر محصول بعدی بمانند. و در همین سال بود که Borland یک Update برای Delphi 7 منتشر کرد.

و حال میرسیم به بزرگترین و جادویی ترین محصولی که حتی ابر مرد نرم افزار جهان (بیل گیتس) اعلام کرد این محصول برای ما یک چالش اساسی ایجاد خواهد کرد، با نام DiamondBack در کنفرانس Borcon2004 مطرح شد و در سپتامبر سال 2004 Delphi 2005 متولد شد. امکانات و ابزارهای بسیار و از همه مهمتر راهنما و اموزشهای کافی و  ساده که هماره این نسخه بود باعث شد که مورد توجه بسیاری از برنامه نویسان قرار بگیرد.


ادامه مطلب
نوشته شده در تاريخ پنجشنبه نهم فروردین 1386 توسط ابراهیم خدائی

نكات مفيد براي كار در محيط دلفي

محيط دلفي براي برنامه نويسي يكي از بهترين محيطهاي برنامه نويسي است گذشته از كاركرد داخلي و كمپايلر آن كه بسيار قوي و سريع است، محيط آن يعني IDE آنهم قدرت بسيار زيادي دارد كه باعث شده يكي از بهترين اديتورها باشد. در اين مقاله سعي بر اين شده تا با ارائه يك سري از نكات و كليدهاي ميانبر كه مي توانند براي كار در دلفي بسيار مفيد و كارا باشند، كمك كنیم تا شما بتوانيد با قدرت بيشتر به برنامه نويسي و كار در اين محيط قدرتمند ادامه دهيد.
در قسمت يك سري از كليدهاي ميانبر و تركيبي مورد استفاده در IDE دلفي را بصورت ليست وار و همراه يك توضيح كوچك آورده شده است.

جستجو در متن بصورت مستقيم:
براي اينكار كليدهاي Ctrl+E را بفشاريد و بدنبال آن شروع به تايپ كلمه مورد نظر كنيد نتيجه آن را خود ببينيد. براي اينكه به كلمه بعدي برويد كافيست كليد F3 را بزنيد.

ايجاد فرورفتگي در كد:
بعضي اوقات - كه خيلي هم پيش مي‌آيد - لازم است كه يك مقداري از متن را بصورت بلوك شده به جلو و يا عقب ببريم. منظور دندانه دار كردن متن است كه به خوانايي برنامه كمك مي كند. براي اينكار مي تونيد از كليد Ctrl +Shift+I براي جلو بردن و Ctrl+Shift+U براي عقب برگرداندن متن بلوك شده استفاده كنيد.

پرش به قسمت تعريف يك شي (Object):
براي اينكه ببنيد شي مورد نظرتون (از قبيل VCL, Procedure, Function,...) در كجا و چطور تعريف شده مي توانيد كليد Crtl رو پايين نگه داشته و روي شي مورد نظر Click كنيد.

براي تغيير حالت كاراكترها:
شما مي توانيد يك قسمت از متن (كه ممكن است با حروف بزرگ و يا كوچك تايپ شده باشد) را انتخاب كنيد و با زدن كليدهاي Ctrl+o+u به ترتيب تمامي حروف كوچك آن قسمت از متن را به حروف بزرگ و تمامي حروف بزرگ آنرا به حروف كوچك تبديل كنيد.
براي تعيير حالت يك كلمه نيز ميتوانيد روي كلمه مورد نظر رفته و كليدهاي Ctrl+k+f براي بزرگ كردن و كليدهاي ctrl+k+e را براي كوچك كردن حروف آن كلمه بكار برد.

درست كردن ماكرو متني:
اين امكان بسيار مفيد است و مي توانيد بسياري از كارهاي نوشتاري را كاهش دهد با اينكار شما ميتوانيد يك سري از كارهاي تكراري كه روي متون انجام مي دهيد را بصورت ماكرو در آورده و از آنها به راحتي استفاده كنيد. براي شروع به ضبط ماكرو كليدهاي ctrl+shift+r را بفشاريد و آن سري كارهايي را كه مي خواهيد را انجام دهيد و سپس براي اينكه به كار ضبط ماكرو پايان دهيد كليدهاي ctrl+shift+r را دوباره بزنيد. حال براي استفاده از ماكرو كافيست در هر جا كه لازم بود كليدهاي Ctrl+Shift+P را بفشاريد.

انتخاب متن بصورت مربعي:
اگر شما از كهنه كارهاي كامپيوتر باشيد حتما از زمان داس يادتون هست كه برنامه اي بود به نام PE2 كه يكي از امكانات بسيار جالبش اين بود كه يك مربع از متن رو ميتوانستين انتخاب
كنيد و آنرا كپي يا حذف كنيد. بله درست متوجه شديد در محيط دلفي هم شما اينكار را ميتوانيد انجام دهيد اما نه به مشكلي PE2 بلكه اينكار را ميتوانيد فقط با گرفتن كليد Alt و كشيدن
موس روي متن انجام دهيد. هر چند ممكن است در نگاه اول زياد اين امكان مفيد به نظر نيايد ولي بعضي وقتهاي خيلي كار را راحت ميكنه، كه حتماً تجربه خواهيد كرد.
 

گذاشتن علامت روي متن:
اين كار كه به BookMark معروف است بسيار مفيد و كارا مي باشد. در هنگامي كه شما روي قسمتي از متن برنامه كار ميكنيد و مي خواهيد به يك قسمت ديگر برويد ممكن است براي برگشتن به مكان اول خود كمي مشكل پيدا كنيد. ولي شما ميتوانيد با زدن چند دكمه به محل مورد نظرتون باز گرديد. براي اينكار در خطي كه قصد داريد علامت بگذاريد كليدهاي Ctrl+Shift+0..9 را بفشاريد. منظور اينست كه كليدهاي ctrl+Shift را نگه داريد و يكي از اعداد 0 تا 9 را وارد كنيد تا آن خط به همان شماره علامت گذاري شود و سپس هر جا كه خواستيد برويد و سپس هر بار كه كليد Ctrl را نگه داريد و شماره مورد نظر را وارد كنيد به همان خط باز خواهيد گشت. البته توجه داشته باشيد كه فقط مي توانيد 10 خط را با اين روش علامت گذاري بكنيد و براي برداشتن علامت ها كافيست روي همان خط دوباره كليد Ctrl+shift و شماره‌اي كه براي آن خط وارد كرده ايد را بفشاريد با اينكار علامت آن خط برداشته مي شود.


ايجاد كلاس مورد نظر :
شما هنگامي كه در قسمت Private و يا Public يك type، روال يا تابع درست كرديد لازم داريد كه قسمتي را براي قرار دادن كدهاي مربوط به آن روال يا تابع را ايجاد كنيد. براي اينكار شما پس از اينكه نام تابع را تايپ كرديد مي توانيد كليدهاي Ctrl+Shift+C را فشار دهيد تا دلفي يك قسمت براي نوشتن كدهاي مورد نظرتان ايجاد كند.

ظاهر كردن پنجره Code insight :
شما حتما به اهميت و مفيد بودن اين قسمت دلفي واقفيد كه در هنگام كد نويسي تا چه حد مي تواند كارها را راحت كند. بله در هنگام وارد كردن كدها بعد از وارد كردن نام يك كلاس و يا Object با زدن يك نقطه (.) پنجره Code Insight‌ ظاهر مي شود. حال در بعضي وقتها شما ممكن است كه نقطه را قبلا وارد كرده باشيد و يا در مواقع ديگر اين پنجره ظاهر نشود. در
اين صورت براي اينكه پنجره را ظاهر كنيد بايد دوباره نقطه را وارد كنيد ولي راه اسانتري هم وجود دارد و آن اينست كه كليدهاي Ctrl+Speacebar را فشار دهيد.


ظاهر كردن پنجره Code Parameter:
همانند بالا در هنگام ظاهر شدن Hint مربوط به راهنماي توابع كه معمولاً بعد از گذاشتن پرانتز مربوط ظاهر ميشود و در مورد پارامترهاي لازم مي باشد نيز مي توانيد از كليدهاي Ctrl+Shift+SpaceBar استفاده كنيد.

رفتن از قسمت تعريف توابع و روالها به قسمت كد آنها:
هميشه اين نياز وجود خواهد داشت كه شما در هنگامي كه داريد به دنبال يك روال در قسمت type ميگرديد بعد از پيدا كردن نام آن مي خواهيد كه خود آن تابع يا روال را نيز ببنيد. براي اينكار خوب حتما نام آن را جستجو ميكنيد ولي يك راه آسانتر اينست كه شما روي نام آن تابع قرار گيريد و كليدهاي Ctrl+Shift+Up/Down را بزنيد. در اينحالت اگر روي كد تابع باشيد به قسمت تعريف آن خواهيد رفت.


ادامه مطلب
نوشته شده در تاريخ پنجشنبه نهم فروردین 1386 توسط ابراهیم خدائی

 
سال 1386 سال خوک است؛ از سال خوک چه می دانید؟
بالاخره سگ با تمام دلهره ها و اضطراب ها و بی اعتمادیش سال را به پایان رساند و برای یک استراحت طولانی دوازده ساله ما را ترک کرد و فرصت نفس راحت کشیدن پیدا کردیم. بر مبنای گاه شماری های شرقی ها سال ۱۳۸۶ ( ۲۰۰۷ ) سال خوک است.
هرچه نگرانی در سال های های قبل بود در سال خوک جایش را به آرامش و شادی و راحتی می دهد

تقسیم دوازده تایی فقط مختص ماه های سال نیست، بلکه چینی ها و اصولا اهل نجوم و تنجیم هم سال ها را به دوره های دوازده تایی تقسیم می کنند که هر کدام را با نماد یک حیوان مشخص می کنند: موش، گاو، ببر، گربه ( از نظر مصری ها خرگوش )، اژدها، مار، اسب، بز، میمون، خروس، سگ و خوک .
این دوره ها آغاز و اوج و فرود دارند و تغییرات آنها شباهت تام و تمام با فصول دارد: آغاز سبز شدن و امید و روشنایی مثل بهار، اوج گرما و برکت مانند تابستان، فرود نرم و آهسته چون پاییز و سرمایی که در دل آن زندگی برای آغازی دوباره خود را آماده می کند همانند زمستان.
خوک آخرین حلقه دوازده گانه سال هاست و در بطن خود زندگی دوباره با تمام شور و شرش را دارد. هرچه تلخی و نگرانی و اضطراب در سال های بز و میمون و خروس و سگ وجود داشت در سال خوک جایش را به آرامش و شادی و راحتی می دهد.
از نظر طالع بینی چینی سال خوک بهترین سال برای تمام مردم دنیاست چون در این سال کار فراوان برای همه وجود دارد و گردش پول عادلانه خواهد بود.
سالی که از دست گرفتاری های سیاسی و اداری می توان نفسی به راحتی کشید. سالی که برای روشنفکران و اهل حساب و کتاب به یک اندازه خوب است. یعنی سال تعادل و تناسب.
از نظر طالع بينی چينی، در این سال خیانت ها و بی اعتمادی ها بسیار کم خواهد بود. سال صلح طلبی عمیق، سالی که دعوا و اقامه دعوا در مراجع ذیصلاح جای بحث های تند و دعوا و جنگ را می گیرد.
سالی که ادبیات بر تارک آن خواهد درخشید و نویسندگان و شعرا به دور از دغدغه های رایج به موفقیت های چشمگیری نائل خواهند شد.
بچه هایی که در بهار و تابستان سال خوک متولد می شوند در رفاه و آسودگی زندگی خواهند کرد.
البته به دلیل سادگی بیش از حد خوک امکان زودباوری، فریب خوردن و نومیدی هم وجود دارد.
از بدی های سال خوک این است که افراد از هم دیگر تقاضای کمک کمتری می کنند و احتمالا آسیب بیشتری می بینند.
تاثیر علامت خوک بر نمادهای حیوانی دوازده گانه
نه تنها سال خوک، بلکه تمام علایم دوازده گانه برای متولدین همه ماه ها تاثیرات یکسانی ندارند.
متولدین سال موش ( ۱۳۱۵، ۱۳۲۷، ۱۳۳۹، ۱۳۵۱، ۱۳۶۳ ) می توانند تا دلشان می خواهد با دمشان گردو بشکنند! و البته برای آینده برنامه ریزی کند و شکرگزار باشند.
متولدین سال گاو ( ۱۳۱۶، ۱۳۲۸، ۱۳۴۰، ۱۳۵۲، ۱۳۶۴ )، سال ببر ( ۱۳۱۷، ۱۳۲۹، ۱۳۴۱، ۱۳۵۳، ۱۳۶۵ ) ، سال گربه ( ۱۳۱۸، ۱۳۳۰، ۱۳۴۲، ۱۳۵۴، ۱۳۶۶ ) ، سال اسب ( ۱۳۱۹، ۱۳۳۱، ۱۳۴۵، ۱۳۵۷، ۱۳۶۹ ) ، سال خروس ( ۱۳۱۲، ۱۳۲۴، ۱۳۳۶، ۱۳۴۸، ۱۳۶۰ ) و سال خوک ( ۱۳۱۴، ۱۳۲۶، ۱۳۳۸، ۱۳۵۰ و ۱۳۶۲ ) هم سال خوبی در پیش دارند با کار زیاد و مشکلاتی که در اسرع وقت به سامان می رسند.
متولدین سال اژدها ( ۱۳۱۹، ۱۳۳۱، ۱۳۴۳، ۱۳۵۵ و ۱۳۶۷ ) ممکن است امسال بی پول شوند.
متولدین سال مار ( ۱۳۲۰، ۱۳۳۲،۱۳۴۴، ۱۳۵۶، ۱۳۶۸ ) بهتر است منتظر سال بهتری باشند.
متولدین سال بز ( ۱۳۲۲، ۱۳۳۴، ۱۳۴۶، ۱۳۵۸ ، ۱۳۷۰ )، میمون ( ۱۳۲۳، ۱۳۳۵، ۱۳۴۷، ۱۳۵۹، ۱۳۷۱ ) و سگ ( ۱۳۲۵، ۱۳۳۷، ۱۳۴۹، ۱۳۶۱، ۱۳۷۳ ) باید احتیاط پیشه کنند و مواظب دخل و خرج و خانواده شان باشند.
افراد سرشناس متولد سال خوک
گفته اند خوک هرگز محتاج نخواهد شد. بنابراین عجیب نیست اگر میلیاردهای سرشناسی چون راکفلر، فورد اول و روچیلد اول و یا حتی سن ایگناتیوس لویلا بانی فرقه یسوعی متولد سال خوک باشند.
از اهل قلم و فرهنگ فدريکو گارسیا لورکا شاعر اسپانیایی که به دست فاشیست های طرفدار ژنرال فرانکو کشته شد و فرانسواز ساگان نویسنده فرانسوی و همین طور دکتر آلبرت شوایتزر نیکوکار و انسان دوست نامدار نیز از متولدین سال خوک اند.
هانری هشتم و بیسمارک صدراعظم آلمان متولدین بدنام سال خوک اند. کمی عجیب است، ولی فیلد مارشال مونتگمری، مارشال سرشناس دوران جنگ جهانی دوم و اولیور کرامول هم متولد سال خوک اند.
دیگر متولدین سرشناس سال خوک پاسکال، مادام مانتنون و لوکوز بوزیه هستند.
آیین های ما
در کتاب شازده کوچولو، روباه در پاسخ به سئوال شازده کوچولو در باره آیین گفت: این هم چیزی است بسیار فراموش شده، چیزی است که باعث می شود روزی با روزهای دیگر و ساعتی با ساعت های دیگر فرق پیدا کند.
آیین های زیبای نوروز باستانی ایرانیان و گاه شماری ای که صدها سال است در باورهای مردم این سرزمین جای دارد، آیین هایی است که حتی وقتی آن را قبول نداشته باشیم هم چیزی از عزت و عظمتش کاسته نمی شود.

خوک آخرین حلقه دوازده گانه سال هاست و در بطن خود زندگی دو باره با تمام شور و شرش را دارد. هرچه تلخی و نگرانی و اصظراب در سال های بز و میمون و خروس و سگ وجود داشت در سال خوک جایش را به آرامش و شادی و راحتی می دهد.

ادامه مطلب
نوشته شده در تاريخ شنبه دوازدهم اسفند 1385 توسط ابراهیم خدائی
تمامی حقوق این وبلاگ محفوظ است | طراحی : پیچک