Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.03.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.005 c
8-1150913139
Layner
2006-06-21 22:05
2008.03.16
Примеры для TVideoGrabber (v 7.2-7.3) ищу


15-1202329724
No_Dead
2008-02-06 23:28
2008.03.16
Подскажите софтинку


2-1203176661
н.сергей
2008-02-16 18:44
2008.03.16
TTreeView и данные


3-1193151397
opoloXAI
2007-10-23 18:56
2008.03.16
Знак диаметра в DBGrid


4-1168433375
Gear
2007-01-10 15:49
2008.03.16
Vista и права админа у программы.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский