الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كود لإضافة أي قيمة في سجل الويندوز

مغلق
بدأه أبو محمد الهذلي في 24 يونيو 2002 · 0 رد · 404 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1

تصور أن عندك برنامج يتحكم في كثير من مفاتيح السجل Registry فهل تقوم بكتابة كود لكل قيمة ومفتاح إذاً سيكون هذا مملاًّ خذ هذا الكود المتواضع وانظر فيه

procedure TForm1.RegKeyOpen(const 
                         Rootkey: Cardinal;   // المتاح الرئيسي
                         PathKey: String;     //مسار المفتاح المراد فتحه أو إنشاؤه
                         CanCreate: Boolean; // تحديد إنشاء المفتاح عند عدم وجده 
                         NameKey,             //اسم المفتاح
                         ValueType: String;  //نوع قيمة المفتاح
                         ValueKey:Variant);  //قيمة المتاح

function ValueTypeSelect(Selector: string;
                CaseList: array of string): Integer;
var cnt: integer;
begin   {شكراً للأخ العزيز Tmaaa الذي دلني عليها}
  Result:=-1;
  for cnt:=0 to Length(CaseList)-1 do
 begin
    if CompareText(Selector, CaseList[cnt]) = 0 then
    begin
      Result:=cnt;
      Break;
    end;
  end;
end;

var
  Reg : TRegistry;
  ValuType :array[0..8] of string;
begin
  ValuType [0] := 'Bool';
  ValuType [1] := 'Currency';
  ValuType [2] := 'Date';
  ValuType [3] := 'Time';
  ValuType [4] := 'DateTime';
  ValuType [5] := 'ExpandString';
  ValuType [6] := 'Float';
  ValuType [7] := 'String';
  ValuType [8] := 'Integer';
  Reg := TRegistry.Create;
  Try
    Reg.RootKey := Rootkey;
    if Reg.OpenKey (PathKey, CanCreate) then
    begin
      case ValueTypeSelect(ValueType ,ValuType) of
      0 : Reg.WriteBool (NameKey,ValueKey);
      1 : Reg.WriteCurrency (NameKey,ValueKey);
      2 : Reg.WriteDate (NameKey,ValueKey);
      3 : Reg.WriteTime (NameKey,ValueKey);
      4 : Reg.WriteDateTime (NameKey,ValueKey);
      5 : Reg.WriteExpandString (NameKey,ValueKey);
      6 : Reg.WriteFloat (NameKey,ValueKey);
      7 : Reg.WriteString (NameKey,ValueKey);
      8 : Reg.WriteInteger (NameKey,ValueKey);
     end;
     Reg.CloseKey;
    end;
  Finally
    Reg.Free;
  end;
end;

ويكون استدعاه كالتالي :

procedure TForm1.Button1Click(Sender: TObject);
begin
  RegKeyOpen ( HKEY_CURRENT_USER , 'Control PanelDesktop',
  True, 'MenuShowDelay','string' , EditMenu.Text);
end;
// True إذاً سيتم إنشاء المفتاح إذا لم يجده
// 'MenuShowDelay' مفتاح التحكم بسرعة إظهار القوائم يأخذ القيمة 0-999
//EditMenu  : TEdit

أرجو أن يكون الشرح واضحاً

وإذا كان هناك طريقة أنسب وأبسط فأرجو التنبيه عليها

وجزاكم الله خير الجزاء (f) (f)

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…