نمایش نتایج 1 تا 1 از 1

نام تاپیک: تشخيص نسخه‌های نصب شده‌ی دلفی

  1. #1

    تشخيص نسخه‌های نصب شده‌ی دلفی

    تشخيص نسخه‌های نصب شده دلفی:
    كليدی كه برای تشخيص نسخه‌های نصب شده‌ی دلفی يا RAD Studio بر روی يك كامپيوتر بايد در رجيستری چك شود در ريشه‌ی HKEY_CURRENT_USER قرار دارد.
    برای بورلند دلفی تا نسخه‌ی 7 از آدرس :
    \Software\Borland\Delphi\DelphiVersion
    مثال : برای دلفی بايد آدرسی به صورت زير داشته باشيد :
    \Software\Borland\Delphi\7.0

    برای بورلند دلفی 8 تا BDS 2006 از آدرس :
    \Software\Borland\BDS\BdsVersion
    مثال : برای BDS 2005 بايد آدرسی به صورت زير داشته باشيد :
    \Software\Borland\BDS\2.0

    برای CodeGear Rad Studio 2009, 2010 از آدرس :
    \Software\CodeGear\BDS\BdsVersion
    مثال : برای دلفی 2009 بايد آدرسی به صورت زير داشته باشيد :
    \Software\CodeGear\BDS\6.0

    و در نهايت برای دلفی XE از آدرس زير استفاده كنيد :
    \Software\Embarcadero\BDS\8.0

    حالا برای بدست آوردن محل نصب دلفی بايد مقدار ذخيره شده در فيلد App را بخوانيد.
    می‌توانيد با ساختن يونيتی شبيه به ساختار زير، به همه‌ی اينها دسترسی داشته باشيد.



    type
    TDelphiVersions =
    (
    Delphi4,
    Delphi5,
    Delphi6,
    Delphi7,
    Delphi8,
    Delphi2005,
    Delphi2006,
    Delphi2007,
    Delphi2009,
    Delphi2010,
    DelphiXE
    );

    const
    DelphiVersionsNames: array[TDelphiVersions] of string = (
    'Delphi 4',
    'Delphi 5',
    'Delphi 6',
    'Delphi 7',
    'Delphi 8',
    'BDS 2005',
    'BDS 2006',
    'RAD Studio 2007',
    'RAD Studio 2009',
    'RAD Studio 2010',
    'RAD Studio XE'
    );

    DelphiRegPaths: array[TDelphiVersions] of string = (
    '\Software\Borland\Delphi\4.0',
    '\Software\Borland\Delphi\5.0',
    '\Software\Borland\Delphi\6.0',
    '\Software\Borland\Delphi\7.0',
    '\Software\Borland\BDS\2.0',
    '\Software\Borland\BDS\3.0',
    '\Software\Borland\BDS\4.0',
    '\Software\Borland\BDS\5.0',
    '\Software\CodeGear\BDS\6.0',
    '\Software\CodeGear\BDS\7.0',
    '\Software\Embarcadero\BDS\8.0');




    توابع زير را برای راحتی كار تعريف كنيد :




    function RegKeyExists(const RegPath: string;const RootKey :HKEY): Boolean;
    var
    Reg: TRegistry;
    begin
    try
    Reg := TRegistry.Create;
    try
    Reg.RootKey := RootKey;
    Result := Reg.KeyExists(RegPath);
    finally
    Reg.Free;
    end;
    except
    Result := False;
    end;
    end;

    function RegReadStr(const RegPath, RegValue:string; var Str: string;const RootKey :HKEY): Boolean;
    var
    Reg: TRegistry;
    begin
    try
    Reg := TRegistry.Create;
    try
    Reg.RootKey := RootKey;
    Result := Reg.OpenKey(RegPath, True);
    if Result then Str:=Reg.ReadString(RegValue);
    finally
    Reg.Free;
    end;
    except
    Result := False;
    end;
    end;

    procedure ExtractIconFileToImageList(ImageList: TImageList; const Filename: string);
    var
    FileInfo: TShFileInfo;
    begin
    if FileExists(Filename) then
    begin
    FillChar(FileInfo, SizeOf(FileInfo), 0);
    SHGetFileInfo(PChar(Filename), 0, FileInfo, SizeOf(FileInfo), SHGFI_ICON or SHGFI_SMALLICON);
    if FileInfo.hIcon <> 0 then
    begin
    ImageList_AddIcon(ImageList.Handle, FileInfo.hIcon);
    DestroyIcon(FileInfo.hIcon);
    end;
    end;
    end;



    و در آخر ميتوانيم يك ListView را از نتيجه‌ی بدست آمده به علاوه‌ی آيكن دلفی پر كنيم :




    Var
    item : TListItem;
    DelphiComp : TDelphiVersions;
    FileName : string;
    ImageIndex : Integer;
    begin
    for DelphiComp := Low(TDelphiVersions) to High(TDelphiVersions) do
    if RegKeyExists(DelphiRegPaths[DelphiComp],HKEY_CURRENT_USER) then //check if exist the key
    if RegReadStr(DelphiRegPaths[DelphiComp],'App',FileName,HKEY_CURRENT_USER) and FileExists(FileName) then //Now read the App value and check the existence of the file
    begin
    item:=ListViewIDEs.Items.Add;
    item.Caption:=DelphiVersionsNames[DelphiComp];
    item.SubItems.Add(FileName);
    ExtractIconFileToImageList(ImageList1,Filename); //add the icon to the listview
    ImageIndex :=ImageList1.Count-1;
    item.ImageIndex:=ImageIndex;
    end;
    end;



    و اين هم نتيجه‌ی نهايی :




    پروژه رو ميتونيد از اينجا دانلود كنيد.

    منبع : Detecting installed delphi versions
    آخرین ویرایش به وسیله m-khorsandi : پنج شنبه 06 آبان 1389 در 13:00 عصر
    فلويد گواهي مي دهد به آنکه زيستن در هنگامه‌ی استبداد، چه آسان روياها را واژگون مي کند، چه سهل بر چهره‌ی آزادی تيغ می‌کشد!

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •