Чтение онлайн

на главную - закладки

Жанры

Советы по Delphi. Версия 1.4.3 от 1.1.2001

Озеров Валентин

Шрифт:

//*** 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;

//------------------------------------------------------------------------------

// Чтение 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[i] = chr(0) then begin

list.Add(s);

s := '';

end else s := s + Buffer[i];

end;

 finally

FreeMem(Buffer);

 end;

end;

end.

Как я могу определить доступные сервера приложений на этой машине через Registry?

Nomadic советует:

Прочитайте ключ под HKEY_CLASSES_ROOT\CLSID\*, просматривая его насчёт ключей, которые имеют подключ "Borland DataBroker". Эти вхождения и являются серверами приложений.

Ниже пример, который загружает имена доступных серверов приложений в Listbox:

uses Registry;

procedure TForm1.FormCreate(Sender: TObject);

var

 I: integer;

 TempList: TStringList;

begin

 TempList := TStringList.Create;

 try

with TRegistry.Create do try

RootKey := HKEY_CLASSES_ROOT;

Поделиться:
Популярные книги

Отмороженный 8.0

Гарцевич Евгений Александрович
8. Отмороженный
Фантастика:
постапокалипсис
рпг
аниме
5.00
рейтинг книги
Отмороженный 8.0

Газлайтер. Том 14

Володин Григорий Григорьевич
14. История Телепата
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Газлайтер. Том 14

Ермак. Телохранитель

Валериев Игорь
2. Ермак
Фантастика:
альтернативная история
7.00
рейтинг книги
Ермак. Телохранитель

Матабар IV

Клеванский Кирилл Сергеевич
4. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар IV

Сборник коротких эротических рассказов

Коллектив авторов
Любовные романы:
эро литература
love action
7.25
рейтинг книги
Сборник коротких эротических рассказов

Идеальный мир для Лекаря 19

Сапфир Олег
19. Лекарь
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 19

Дочь моего друга

Тоцка Тала
2. Айдаровы
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Дочь моего друга

Свет Черной Звезды

Звездная Елена
6. Катриона
Любовные романы:
любовно-фантастические романы
5.50
рейтинг книги
Свет Черной Звезды

Кодекс Крови. Книга IV

Борзых М.
4. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга IV

Идеальный мир для Лекаря 22

Сапфир Олег
22. Лекарь
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Лекаря 22

Попаданка в академии драконов 4

Свадьбина Любовь
4. Попаданка в академии драконов
Любовные романы:
любовно-фантастические романы
7.47
рейтинг книги
Попаданка в академии драконов 4

Сердце Дракона. Том 12

Клеванский Кирилл Сергеевич
12. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.29
рейтинг книги
Сердце Дракона. Том 12

Лолита

Набоков Владимир Владимирович
Проза:
классическая проза
современная проза
8.05
рейтинг книги
Лолита

Сводный гад

Рам Янка
2. Самбисты
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Сводный гад