Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.16;
Скачать: CL | DM;

Вниз

Запись данных в реестр   Найти похожие ветки 

 
Knoob   (2008-02-15 20:01) [0]

Нужно записать данные в реестр с типом REG_MULTI_SZ.


 
Palladin ©   (2008-02-15 20:02) [1]

ну кому нужно пусть тот и пишет


 
Knoob   (2008-02-15 20:03) [2]

Я же помощи прошу! А не всякой фигни.


 
Palladin ©   (2008-02-15 20:05) [3]

где ты ее просишь? ты, мля, фразу произносишь... никакой просьбой вообще не пахнет...


 
Knoob   (2008-02-15 20:10) [4]

Видно сам не знаешь, а только умного из себя строишь!


 
Palladin ©   (2008-02-15 20:11) [5]

:) угу, ты угадал


 
Knoob   (2008-02-15 20:15) [6]

а я вот понял как:

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

//------------------------------------------------------------------------------
// Запись 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) + 1);
inc(BufSize);
GetMem(Buffer, BufSize);
k := 0;
p := Buffer;
for i := 0 to list.Count - 1 do
begin
s := list;
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;

//------------------------------------------------------------------------------
// Чтение TStringList ввиде значения типа REG_MULTI_SZ из реестра
//------------------------------------------------------------------------------

procedure TReg.ReadStringList(const name: string; list: TStringList);
var

BufSize,
DataType: DWORD;
Len, i: Integer;
Buffer: PChar;
s: string;
begin

if list = nil then
Exit;
{чтение из реестра}
Len := GetDataSize(Name);
if Len < 1 then
Exit;
Buffer := AllocMem(Len);
if Buffer = nil then
Exit;
try
DataType := REG_NONE;
BufSize := Len;
if RegQueryValueEx(CurrentKey, PChar(name), nil, @DataType, PByte(Buffer),
@BufSize) <> ERROR_SUCCESS then
raise ERegistryException.CreateResFmt(@SRegGetDataFailed, [name]);
if DataType <> REG_MULTI_SZ then
raise ERegistryException.CreateResFmt(@SInvalidRegType, [name]);
{запись в TStringList}
list.Clear;
s := "";
for i := 0 to BufSize - 2 do
begin // BufSize-2 т.к. последние два нулевых символа
if Buffer = chr(0) then
begin
list.Add(s);
s := "";
end
else
s := s + Buffer;
end;
finally
FreeMem(Buffer);
end;
end;



Страницы: 1 вся ветка

Текущий архив: 2008.03.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
8-1176981412
Dmitriy_O.
2007-04-19 15:16
2008.03.16
Как сделать BMP файл типа Gluph чтоб он проигрывался AnimateImage


15-1201798852
NiGGa
2008-01-31 20:00
2008.03.16
Компонент отображающий графики


3-1191926279
R4V3N
2007-10-09 14:37
2008.03.16
Проблема с проверкой пароля в базе Access


15-1202499449
Palladin
2008-02-08 22:37
2008.03.16
Хозяйкам на заметку


3-1193041148
kyn66
2007-10-22 12:19
2008.03.16
Связь Delphi - 1C