Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтение реестра c помощью RegEnumValue, Как убрать повторы? 
:(
    Опции темы
navodri
Дата 10.6.2010, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 26.10.2007

Репутация: нет
Всего: -1



В определенной ветке реестра нужно прочитать значения City0...CityN. Проблема в том, что я получаю повторы, равные всем значения в определенной ветке реестра. Как избежать повторов?

user posted image

Вот код, с которым работаю:
Код

//Заполнение ComboBox1 параметрами City0...CityN определенной ветви реестра
function AddRegistryValue(const RootKey: HKEY; const Key: String): boolean;
var
 i: integer;
 iRes: integer;
 s: string;
 hTemp: HKEY;
 Buf: Pointer;
 BufSize: Integer;
 display:String;
begin
 Result := False;
 if RegOpenKeyEx(RootKey, PChar(Key), 0, KEY_READ, hTemp) = ERROR_SUCCESS then begin
  Result := True;
  BufSize := 1024;
  GetMem(buf, BufSize);
  i := 0;
  iRes := ERROR_SUCCESS;
   while iRes = ERROR_SUCCESS do begin
    BufSize := 1024;
    iRes := RegEnumValue(hTemp, i, buf, BufSize, nil, nil, nil, nil);
     if iRes = ERROR_SUCCESS then begin
      SetLength(s, BufSize);
      CopyMemory(@s[1], buf, BufSize);
      //Считываю все параметры City0...CityN
      //Как убрать повторы?
      display := GetRegistryString(RootKey, Key, 'City' + inttostr(i));
      Form1.ComboBox1.Items.Add(display);
      inc(i);
     end;
   end;
  FreeMem(buf);
  RegCloseKey(hTemp);
 end;
end;

//Вызов функции
AddRegistryValueToListBox(HKEY_LOCAL_MACHINE, 'SOFTWARE\MyAppp\Base');

PM MAIL WWW   Вверх
RinOSpro
Дата 22.6.2010, 12:04 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Может так) ? 

Код

var
  LStringList: TStringList;
begin
  LStringList := TStringList.Create;

  LStringList.Duplicates := dupIgnore;
  LStringList.Sorted := True;

  LStringList.Add('111');
  LStringList.Add('111');
  LStringList.Add('222');
  LStringList.Add('333');
  LStringList.Add('222');

  ComboBox1.Items.Assign(LStringList);
end;

  Вверх
Rennigth
Дата 22.6.2010, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 8
Всего: 76



Или 
Код

  if Form1.ComboBox1.Items.IndexOfName(display) <> -1 then
    Form1.ComboBox1.Items.Add(display);[/quote]


RinOSpro, 
Ни хороший человек(с) , кто LStringList уничножать будет?  smile

Добавлено через 1 минуту и 14 секунд
И вообще, при чем тут API...


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0411 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.