Работа с реэстром!

Тема в разделе "Delphi - Система", создана пользователем misterio, 31 мар 2008.

  1. misterio

    misterio Гость

    Вообщем впредь вопросы можно задавать тут....

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

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

    Код (Text):
    const key_path = 'блаблабла';
    var hk : HKEY;
    ...
    RegCreateKey (HKEY_LOCAL_MACHINE,key_path,&hk);
    Естественно ничего не выходит..потому что я не пойму зачем тут &hk? И что оно дает?

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

    Пишу так :

    Код (Text):
    RegSetValueEx(hk,'StringValue',0, REG_SZ, <не пойму что тут> , <и тут>);
    Чем можете помочь?
     
  2. misterio

    misterio Гость

    Не люблю использовать компоненты...вопрос остаеться в силе!
     
  3. misterio

    misterio Гость

    я хоть и на ИБ учусь, но такой шифровки еще не понимаю.
    Насчет второго: можно однострочный примерчик ?
     
  4. misterio

    misterio Гость

    В том то и фишка что не Delphi пользуюсь а CodeGear RAD Studio 2007. И в демосах я в упор не нашел слова TRegistry. А справка там конченая...ничего путевого в ней нету вообще!!
     
  5. misterio

    misterio Гость

    Хорошо...порпобовал с TRegistry.

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

    brink Гость

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

    Неужели никто не знает как это делается? :)
     
  7. misterio

    misterio Гость

    Нима такого компонента. Есть модуль

    [codebox]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)+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;
    end.[/codebox]

    Кстате он тоже с байдой : @SRegSetDataFailed - вот тут не хочет компилироваться.
    Можно конечно записать так :

    Код (Text):
     RegSetValueEx(CurrentKey, PChar(name), 0, REG_MULTI_SZ, Buffer, BufSize)
    - без проверки.

    Но все равно, потом в основной программе подключать дополнительный модуль, создавать новую переменную типа TReg...кароче ввесь смысл написать маленькое приложение пропадает.

    Изначально я и справшивал как работать без TRegistry...



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

    Посмотреть вложение ApiRegistry_Module.zip
     
  8. misterio

    misterio Гость

    Все проблема решена. Всем спасибо.

    @SRegSetDataFailed - где про нее можно почитать? Кроме как в справке.
     
  9. jostya

    jostya New Member

    Регистрация:
    6 фев 2012
    Сообщения:
    1
    Симпатии:
    0
    для того что бы компилировался этот модуль необходимо в раздел uses добавить RTLConsts, там определенна SRegSetDataFailed и многие другие
     
Загрузка...
Похожие Темы - Работа реэстром
  1. Andrey Kha
    Ответов:
    0
    Просмотров:
    22
  2. Hoasker
    Ответов:
    0
    Просмотров:
    64
  3. garri671
    Ответов:
    0
    Просмотров:
    54
  4. lelik200969
    Ответов:
    0
    Просмотров:
    50
  5. Kozolick
    Ответов:
    0
    Просмотров:
    137

Поделиться этой страницей