Главная страница
    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.47 MB
Время: 0.006 c
4-1168433375
Gear
2007-01-10 15:49
2008.03.16
Vista и права админа у программы.


2-1203330006
dm37
2008-02-18 13:20
2008.03.16
Построение очереди


15-1202197190
Шмелъ
2008-02-05 10:39
2008.03.16
Оффтоп. Linux. /dev/null


8-1177042797
Dmitriy_O.
2007-04-20 08:19
2008.03.16
Как сделать "вспышку" тоесть чтобы картинка засветилась яркими цв


3-1193258614
Винни-Пух-Пух-Пух
2007-10-25 00:43
2008.03.16
Какие права и шары нужны для обращения к базе FB (+) ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский