Цитата
Где-то читал, что есть какой-то дополнительный TRegistry для делфи который может работать с этим типом. Но пока не нашёл.
Нима такого компонента. Есть модуль
CODE
unit Reg;
{$R-,T-,H+,X+}
interface
uses Registry, Classes, Windows, Consts, SysUtils;
type
TReg = class(TRegistry)
public
procedure ReadStringList(const name : string; list : TStringList);
procedure WriteStringList(const name : string; list : TStringList);
end;
implementation
//*** TReg *********************************************************************
//------------------------------------------------------------------------------
// Запись TStringList ввиде значения типа REG_MULTI_SZ в реестр
//------------------------------------------------------------------------------
procedure TReg.WriteStringList(const name : string; list : TStringList);
var
Buffer : Pointer;
BufSize : DWORD;
i, j, k : Integer;
s : string;
p : PChar;
begin
{подготовим буфер к записи}
BufSize := 0;
for i:=0 to list.Count-1 do
inc(BufSize, Length(list[i])+1);
inc(BufSize);
GetMem(Buffer, BufSize);
k := 0;
p := Buffer;
for i:=0 to list.Count-1 do begin
s := list[i];
for j:=0 to Length(s)-1 do begin
p[k] := s[j+1];
inc(k);
end;
p[k] := chr(0);
inc(k);
end;
p[k] := chr(0);
{запись в реестр}
if RegSetValueEx(CurrentKey, PChar(name), 0, REG_MULTI_SZ, Buffer, BufSize) <> ERROR_SUCCESS then
raise ERegistryException.CreateResFmt(@SRegSetDataFailed, [name]);
end;
end.
Кстате он тоже с байдой : @SRegSetDataFailed - вот тут не хочет компилироваться.
Можно конечно записать так :
Код
RegSetValueEx(CurrentKey, PChar(name), 0, REG_MULTI_SZ, Buffer, BufSize)
- без проверки.
Но все равно, потом в основной программе подключать дополнительный модуль, создавать новую переменную типа TReg...кароче ввесь смысл написать маленькое приложение пропадает.
Изначально я и справшивал как работать без TRegistry...
Вот я еще нашел такой модуль, довольно-таки интересно.
Нажмите для просмотра прикрепленного файла