如何从注册表中读取值的名称和数据?

时间:2010-06-16 03:25:32

标签: delphi registry delphi-7

我已将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;

在注册表编辑器中,我有这个:

stk组
- 糖果
   - > 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中的所有值都消失了。如何从注册表中检索ident(例如YUPI_GUM_HB)及其值(例如:c:\ Users \ chai \ Pictures \ POS Item Images \ image1.jpg)并在加载表单时将其放入gridView中?

1 个答案:

答案 0 :(得分:3)

看起来你看起来并不像TRegistryWriteString的参数太多了),但如果你是,你可以使用它来从注册表中取出所有内容。我怀疑你因为想要拨打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;