Читаем Советы по Delphi. Версия 1.4.3 от 1.1.2001 полностью

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

// Запись 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;

   if OpenKey('CLSID', False) then GetKeyNames(TempList);

   CloseKey;

   for I := 1 to TempList.Count - 1 do

    if KeyExists('CLSID\' + TempList[I] + '\Borland DataBroker') then begin

Перейти на страницу:

Похожие книги

Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript

Данная книга посвящена программированию игр с помощью ActionScript. Здесь вы найдете подробные указания, необходимые для создания самых разных игр – аркад, головоломок, загадок и даже игровых автоматов. В тексте приведены исходные коды программ и детальные, доступно изложенные инструкции. Базовые принципы программирования ActionScript рассматриваются на примере игр, однако вы без труда сможете применить полученные знания и для разработки неигровых проектов, таких как Web-дизайн и реклама. Рекомендации Гэри Розенцвейга помогут вам не только придумывать занимательные игры и размещать их на Web-сайте, но и оптимизировать скорость их работы, а также защищать свои творения от несанкционированного копирования. Представленный в книге код несложно изменить для использования в других программах.Книга предназначена для широкого круга читателей – создателей анимационных роликов, художников-оформителей, программистов и разработчиков Web-сайтов. Издание может также выступать в качестве практического пособия по изучению ActionScript.

Гэри Розенцвейг

Программирование, программы, базы данных / Программирование / Книги по IT
Программирование. Принципы и практика использования C++ Исправленное издание
Программирование. Принципы и практика использования C++ Исправленное издание

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова

Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT