WinCE + TRegistry.GetKeyNames - не работает

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Bupyc
постоялец
Сообщения: 137
Зарегистрирован: 29.08.2007 18:22:42

WinCE + TRegistry.GetKeyNames - не работает

Сообщение Bupyc »

Не работает метод GetKeyNames класса TRegistry при вызове в WinCE

Однако, из выйти из ситуации можно воспользовавшись следующей функцией:

Код: Выделить всё

procedure GetSubKeys(KeyName : String; SubKeysList : TStringList);
 var
  subKeyNameBuf : array [1 .. 300] of Char;
  classNameBuf  : array [1 .. 300] of Char;
  subKeyLng     : Cardinal;
  classLng      : Cardinal;
  keyHndl       : THandle;
  index         : Integer;
  keyTime       : TFileTime;
 
begin
 SubKeysList.Clear();
 
 if (RegOpenKeyEx(HKEY_CURRENT_USER,PWideChar(WideString(KeyName)),0,KEY_READ,keyHndl) = ERROR_SUCCESS) then
 begin
  index := 0;

  FillChar(subKeyNameBuf,SizeOf(subKeyNameBuf),#0);
  FillChar(classNameBuf,SizeOf(classNameBuf),#0);

  subKeyLng := SizeOf(subKeyNameBuf);
  classLng  := SizeOf(classNameBuf);

  while RegEnumKeyEx(keyHndl,              // handle of key to enumerate
                     index,                // index of subkey to enumerate
                     @subKeyNameBuf[1],    // address of buffer for subkey name
                     subKeyLng,            // address for size of subkey buffer
                     NIL,                  // reserved
                     @classNameBuf[1],     // address of buffer for class string
                     @classLng,            // address for size of class buffer
                     @keyTime              // address for time key last written to
                     ) = ERROR_SUCCESS do
  begin
   SubKeysList.Add(WideCharToString(@subKeyNameBuf[1]));

   FillChar(subKeyNameBuf,SizeOf(subKeyNameBuf),#0);
   FillChar(classNameBuf,SizeOf(classNameBuf),#0);

   subKeyLng := SizeOf(subKeyNameBuf);
   classLng  := SizeOf(classNameBuf);

   Inc(index);
  end;

  RegCloseKey(keyHndl);
 end;
end;

Юра
постоялец
Сообщения: 163
Зарегистрирован: 25.05.2005 10:20:09
Откуда: Украина, Киев

Сообщение Юра »

А в багтрекер сообщить слабо?
Bupyc
постоялец
Сообщения: 137
Зарегистрирован: 29.08.2007 18:22:42

Сообщение Bupyc »

Где про багтрекер почитать можно? Я с фрипаскалем пару месяцев всего работаю.
Аватара пользователя
Attid
долгожитель
Сообщения: 2589
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

http://freepascal.org/mantis/main_page.php

регишся в настройках ставишь руский язык и дальше все интуитивно.
Bupyc
постоялец
Сообщения: 137
Зарегистрирован: 29.08.2007 18:22:42

Сообщение Bupyc »

Attid, спасибо. Буду тогда туда багрепорты сбрасывать.
Ответить