Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Работа с реэстром!
Форум программистов > Системное программирование > Delphi и Pascal > Delphi - Система
misterio
Вообщем впредь вопросы можно задавать тут....

Пожалуй я начну:

1) Объяните мне как создать раздел в реэстре? Я пишу так :

Код
const key_path = 'блаблабла';
var hk : HKEY;
...
RegCreateKey (HKEY_LOCAL_MACHINE,key_path,&hk);


Естественно ничего не выходит..потому что я не пойму зачем тут &hk? И что оно дает?

2) Как создать строковый параметр с именем "blablabla" с описанием(необязательно).

Пишу так :

Код
RegSetValueEx(hk,'StringValue',0, REG_SZ, <не пойму что тут> , <и тут>);


Чем можете помочь?
sax_ol
Берите TRegistry и не мучайтесь.
misterio
Не люблю использовать компоненты...вопрос остаеться в силе!
sax_ol
1. это не компонент.
2. ссзб

http://forum.codeby.net/topic19586s0.html?...amp;#entry90087 , читать до конца!
misterio
Цитата
ссзб
я хоть и на ИБ учусь, но такой шифровки еще не понимаю.
Насчет второго: можно однострочный примерчик ?
sax_ol
ссзб - "сам себе злобный буратино" - типа: легких путей не ищет
Примеры есть в Demos.
misterio
В том то и фишка что не Delphi пользуюсь а CodeGear RAD Studio 2007. И в демосах я в упор не нашел слова TRegistry. А справка там конченая...ничего путевого в ней нету вообще!!
misterio
Хорошо...порпобовал с TRegistry.

Все получилось, но....как создать параметр "блаблабла" типа REG_MULTI_SZ и REG_DWORD???.
Функций WriteDword & WriteMultiString нету....
brink
Цитата(misterio @ 1:04:2008, 18:03 ) *
Хорошо...порпобовал с TRegistry.

Все получилось, но....как создать параметр "блаблабла" типа REG_MULTI_SZ и REG_DWORD???.
Функций WriteDword & WriteMultiString нету....


Для REG_DWORD используй WriteInteger.
А вот с REG_MULTI_SZ мне и самому интересно, пишу на Builder С++, но там тоже лажа с записью в этот тип.
Где-то читал, что есть какой-то дополнительный TRegistry для делфи который может работать с этим типом. Но пока не нашёл.

Неужели никто не знает как это делается? sad.gif
sax_ol
Цитата(brink @ 2:04:2008 - 14:00) *
Неужели никто не знает как это делается?

Или использовать WriteBinaryData, или дописать метод.
misterio
Цитата
Где-то читал, что есть какой-то дополнительный 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...



Вот я еще нашел такой модуль, довольно-таки интересно.

Нажмите для просмотра прикрепленного файла
sax_ol
Цитата(misterio @ 2:04:2008 - 16:07) *
Кстате он тоже с байдой : @SRegSetDataFailed - вот тут не хочет компилироваться.

Это не он с "байдой" а ... короче надо справку штудировать.
Цитата(misterio @ 2:04:2008 - 16:07) *
Но все равно, потом в основной программе подключать дополнительный модуль, создавать новую переменную типа TReg...кароче ввесь смысл написать маленькое приложение пропадает.

И что тут такого страшного, в подключении модуля? Или совсем без ООП пишите?

Цитата(misterio @ 2:04:2008 - 16:07) *
создавать новую переменную типа TReg

Все по ситуации смотрится, надо создадим, но как показывает практика в большинстве случаев это ненадо.
misterio
Все проблема решена. Всем спасибо.

@SRegSetDataFailed - где про нее можно почитать? Кроме как в справке.
sax_ol
в RTLConsts.pas (D7)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Русская версия IP.Board © 2001-2008 IPS, Inc.