Как я могу прочитать имена значений и данные из реестра? - PullRequest
0 голосов
/ 16 июня 2010

Я сохранил список элементов из gridView в реестре, как показано ниже:

frmPOSConfigSet.tblCatItems.First;  
while not frmPOSConfigSet.tblCatItems.Eof do
begin  
  RegItemSetting.WriteString('stk Group\Candy',
    frmPOSConfigSet.tblCatItemsCODE.Text,
    frmPOSConfigSet.tblCatItemsSPHOTO.Text);
  frmPOSConfigSet.tblCatItems.Next;  
end;

В редакторе реестра у меня есть это:

стк группа
- конфеты
-> YUPI_GUM_HB, c: \ Users \ chai \ Pictures \ POS Item Images \ image1.jpg
-> YUPI_GUM_SBKISS, c: \ Users \ chai \ Pictures \ POS Item Images \ image2.jpg

После того, как я закрою форму и открою ее снова, все значения в gridView исчезнут. Как я могу получить идентификатор (например, YUPI_GUM_HB) и его значение (например ,.c: \ Users \ chai \ Pictures \ POS Item Images \ image1.jpg) из реестра и поместить его в gridView при загрузке формы?

1 Ответ

3 голосов
/ 16 июня 2010

Не похоже, что вы используете TRegistry (слишком много параметров для WriteString), но если бы вы это сделали, вы могли бы использовать его, чтобы вытащить все данные из реестра.Я подозреваю, что вы застряли, потому что вы хотите позвонить ReadString, но вы не знаете имен значений реестра, поэтому вы не знаете, что передать в ReadString.

Вы можете получить список всех имен значений, вызвав GetValueNames.Передайте ему TStringList (или любой другой TStrings потомок), и этот метод заполнит список всеми именами значений.

var
  Names: TStrings;
  Name, Data: string;
  i: Integer;
begin
  RegItemSetting.OpenKeyReadOnly('stk Group\Candy');
  Names := TStringList.Create;
  try
    RegItemSetting.GetValueNames(Names);
    for i := 0 to Pred(Names.Count) do begin
      Name := Names[i];
      Data := RegItemSetting.ReadString(Name);
    end;
  finally
    Names.Free;
  end;
end;
...