07-12-2010, 01:01 PM
السلام عليكم
بحث في الانترنت عن طريقة كتابة قيمة REG_MULTI_SZ بواسطة دلفي
ووجدت الكود التالي:
المشكلة أنه يعمل أحيانا بشكل صحيح واحيانا يسجل فقط جزء من البيانات
لم اعرف مالخطأ في الكود السابق
ولكم الشكر
بحث في الانترنت عن طريقة كتابة قيمة 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;المشكلة أنه يعمل أحيانا بشكل صحيح واحيانا يسجل فقط جزء من البيانات
لم اعرف مالخطأ في الكود السابق
ولكم الشكر