تبليغاتX
بیایید با هم دلفی یاد بگیریم - رجيستری در دلفی و چند تا نکته آموزشی....
کد های مفید به زبان دلفی در دلفی کد

نوبتی هم که باشه نوبت به  يه آموزش با حال و توپ ميرسه که با هاش بريد شب عيد حال کنيد  اما امروز براتون يه آموزش در باره رجيستری در نظر دارم که شامل کار با توابع و کلاس ها ی آن می باشد + يه سری چيز های فرامهم برای برنامه نويسی با دلفی  +کلی سورس + سالاد و نوشابه ( شوخی بود ها )

دلفی برای همه چيز و برای همه نوع کا تابع و يونيت و کلا و کامپونت داره همه جوره جدا کار دلفی از اين لحاظ فرا درست ( منظورم بسيار درست) می باشد . آخه حتی برای پروسس منيجر هم تابع داره برای هلپ ويندوز و برای موتور تبديل و برای حتی موتور طراحی وب هم يونيت و تابع و کلاس داره !!!!!!

[ برای اين به اين ها اشاره می کنم که قدر دلفی رو بدونين آخه وقتی می بينم وی بی کار ها حتی برای کار با رجيستری بايد خودشون با Create Object و اين چرت و پرت ها کلاس بسازند دلم براشون ميسوزه وقتی می بينم اون ها هيچ مقداری برای هندل ها و هندل ديوايس ها و پروسس ها ندارند دلم براشون خون ميشه آخه زبان برنامه نويسی اين قدر عقب افتاده !!!!!!!!!(توجه وی بی کار ها اصلا بهشون بر نخوره ولی حقيقت تلخه ديگه بپذيريد که وی بی خودشو بکشه به گرد  دلفی نمی رسه ) ]

يه توضيح کوچولو:يه عده به اشتباه فکر می کنند که برای کار باشبکه بايد از وين ساک WinSock استفاده کنند اين فکر به شدت اشتباه است و بسيار خنده دار دلفی برای کار با شبکه از سيستم پيشرفته Indy استفاده می کند که ساز گار با TCP/IP و تمام پروتکل های موجود برای شبکه ها است , ميباشد پس از اين به بعد به اين فکر احمقانه ( استفاده از وين ساک) نيافتيد اگه خواستيد در مورد ايندی (Indy)بعدا بيشتر براتون توضيح می دهم

وحالا رجيستری

رجيستر رو در زبان عاميانه قلب ويندوز ان تی می دانند . رجيستری يک مر کز بسيار مهم در ويندوز می باشد که در انجا تمامی برنامه ها و مقدار ها و فرمت ها و تنظيمات ثبت ميشوند در رجيستری می توان به تنظيمات ويندوز دست پيدا کرد و با استفاده از آن بدون استفاده از کنترل پنل تنظيمات ويندوز رو عوض کرد .

شما برای کار با رجيستری در دلفی نياز به تعريف و نوشتن هيچ کلاس و متد و آبجکت نداريد  شرکت جيگر طلای من ( بورلند ) برای کار با رجيستر يه يونيت با همين نام Registry  ارائه داده که تمام نياز های ملت رو برای کار با رجيستر تامين می کنه که شامل کلاس TRegistry می باشد که دارای روال ها و تابع های خاصی مثل

CreateKey يا WriteString يا DeleteKey يا MoveKey يا ReadFloat و....ميباشد. نحو اصلی کار با رجيستری و ثبت کردن مقدار ايجاد يک کليد و....  به اين صورت می باشد که :

ابتدا يونيت رجيستری رو به ليست Uses يونيتمون اضافه می کنيم به شکل زير :

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

خب حالا يه متغير بايد از نوع کلاس TRegistry تعريف کنيم تا بتوانيم از توابع آن ها استفاده کنيم. به شکل زير

Var
B:TRegistry;

 سپس بايد يک نوع از کلاس را بوجود بياوريم که طبق معمول بايد از constructor کرييت (Create) مر بوط به اکثر کلاس ها استفاده کنيم به شکل زير

 b:=TRegistry.Create;

برای کار با رجيستری بايد به يک لانه مربوط در آن اشاره کنيم که عبارتند از :

  • HKEY_CLASSES_ROOT
  • HKEY_CURRENT_USER
  • HKEY_LOCAL_MACHINE
  • HKEY_USERS
  • HKEY_PERFORMANCE_DATA
  • HKEY_CURRENT_CONFIG
  • HKEY_DYN_DATA

برای اين که يکی از اين مقدار ها را انتخاب کنيم بايد از پراپرتی RootKey به شکل زير استفاده کنيد :

B.RootKey:=HKEY_LOCAL_MACHINE;

سپس بايد آدرس مربوط به کليدی که می خواهيم در آن اعمال انجام دهيم رو با استفاده از تابع OpenKey مشخص کنيم به شکل زير :

B.OpenKey(آدرس کليد مربوطه , اجازه بوجود آوردن کليد )

در مورد آدرس شما بايد آدرس کليد مربوطه رو بدون کی روت آن تایپ کنيد و به صورت يک استرينگ در مورد اجازه بوجود آوردن که با يک مقدارFalse يا True ست ميشود اين صورت است که شما می توانيد با ست کردن آن به صورت True به آن اجازه بدهيد تا يک کليد با آدرس که شما تایپک کرديد بوجود بياورد البته ما به شما يشنهاد می کنيم که مقدار مر بوطه را هميشه False کنيد چون شما می توانيد با تابع CreateKey  يک کی بسازيد پس بهتره که شما از تابع اپن کیOpenKey آدرس کليد مربوطه تان را لود کنيد .

سپس شما  در اين مرحله قادر هستيد تا هر کاری انجام دهيد مثلا می توانيد :

کليد بسازيد ( منظورم کليد رجيستری است)يک رشته وارد سازيد  و يا يک عدد و يا يک زمان وارد سازيد و يا يک رشته را فرا بخوانيد و يا يک عدد را فرا بخوانيد و يا کليدی را از بين ببريد و يا کليدی را تغيير مکان (MoveKey) کنيد و تمامی اعمال که می خواهيد را انجام دهيد . برای مثال به کد زير يک نگاه بيندازيد اين کد تسک منيجر (ctrl+Alt+Delete)  را غير فعال می کند:

var
dbm: Tregistry;
begin
DbM:= tregistry.Create;
DbM.RootKey:= HKEY_CURRENT_USER;
DbM.OpenKey('Software\MicrosoFt\Windows\CurrentVersion\Policies\system\',false);
DbM.WriteInteger('DisableTaskMgr',0);
DbM.Free;
end;

خب فکر کنم که کار با توابع رجيستری رو آموخته باشيد همين طور که می بينيد تمام کار ها گفته شده انجام شده و تمام تابع ها آشنا می باشد در ضمن تابع WriteInteger  توابعی از اين دست برای ثبت يک عدد ويا يک مقدار در رجيستری می باشد اين تابع ها خيلی زيادند وهمه دارای ساختمانی به شکل زير می باشند

نام تابع (نام مقداری که بايد از نو ثبت شود و يا با نويسی شود , مقدار)

همچنين توابعی نيز برای خوندن يک مقدار و باز گرداندن يک مقدار ووجود دارد مثل ReadString که اکثرا داری يک نوع  ساختمان می باشند برای مثال با استفاده از کد زير می توانيد مسير کوکی ها را از رجيستری بخوانيد :

var
reg : tregistry;
Cooki:String;
begin
 reg := tregistry.Create;
 reg.RootKey := hkey_current_user ;
   reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders',true);
   Cooki := reg.ReadString('Cookies');


end;

ساختمان تابع های خواندنی به شکل زير می باشد

نام تابع (نام عبارتی که بايد خوانده شود )

خب ديد که به چه سادگی ميشه با رجيستری در دلفی بازی کرد .

ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

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

دلفی چند ثابت برای اين کار دارد مثلا برای تايين پلتفورم ويندوز از کد زير استفاده می کنيم :

if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
کدتان را وارد کنيد//
end Else
if Win32Platform = VER_PLATFORM_WIN32_WINDOWS then
begin
کدتان را وارد کنيد//
end;

خب اينم از نکته آموزشی اين جلسه

ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

حالا می مونه کلی سورس که ما بدهی داشتيم از لينک زير می توانيد چيزی حدود ۱۰۰ تا سورس همراه با توضيح فارسی و به صورت صد در صد مجانی به زبان دلفی دريافت کنيد

http://www.iranvig.com/modules.php?name=News&file=list&new_topic=7 

خب فکر کنم با هم بی حساب شديم اميد وارم اين آموزش به دردتون خورده باشه

با آرزوی بهبودی و موفقيت روز افزون شما - وحيد

تا بعد

+ نوشته شده در  یکشنبه هفتم فروردین 1384ساعت 18:12  توسط وحید  |