![]() |
|
كتابة قيمة reg_multi_sz في الريجستري - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : كتابة قيمة reg_multi_sz في الريجستري (/showthread.php?tid=2631) |
كتابة قيمة reg_multi_sz في الريجستري - m.rabee - 07-12-2010 السلام عليكم بحث في الانترنت عن طريقة كتابة قيمة 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;المشكلة أنه يعمل أحيانا بشكل صحيح واحيانا يسجل فقط جزء من البيانات لم اعرف مالخطأ في الكود السابق ولكم الشكر |