كتابة قيمة reg_multi_sz في الريجستري
#1
السلام عليكم

بحث في الانترنت عن طريقة كتابة قيمة REG_MULTI_SZ بواسطة دلفي
ووجدت الكود التالي:

كود :
01 procedure kg_WriteStrings(const valueName: string; aStrings: TStrings; oReg:TRegistry) ; 02 var 03 p, buffer : PChar ; 04 i : Integer ; 05 size : DWORD ; 06 begin 07 size := 0 ; 08 for i := 0 to aStrings.Count - 1 do 09 Inc(size, Length(aStrings [i]) + 1) ; 10 Inc (size) ; 11 GetMem(buffer, size) ; 12 try 13 p := buffer ; 14 for i := 0 to aStrings.count - 1 do 15 begin 16 lstrcpy(p, PChar(aStrings [i])) ; 17 Inc(p, lstrlen (p) + 1) 18 end; 19 p^ := #0 ; 20 SetLastError(RegSetValueEx(oReg.CurrentKey, PChar(valueName), 0, REG_MULTI_SZ, buffer, size)) ; 21 if GetLastError <> ERROR_SUCCESS then 22 raise Exception.Create('Unable to write MULTI_SZ value') ; 23 finally 24 FreeMem(buffer) 25 end 26 end;

المشكلة أنه يعمل أحيانا بشكل صحيح واحيانا يسجل فقط جزء من البيانات
لم اعرف مالخطأ في الكود السابق

ولكم الشكر
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم