Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何读取值';来自注册表的名称和数据?_Delphi_Registry_Delphi 7 - Fatal编程技术网

Delphi 如何读取值';来自注册表的名称和数据?

Delphi 如何读取值';来自注册表的名称和数据?,delphi,registry,delphi-7,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.T

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

看起来您使用的不是
TRegistry
(参数太多,无法
WriteString
),但如果是,您可以使用它将所有内容从注册表中取出。我怀疑您被卡住了,因为您想调用,但您不知道注册表值的名称,因此不知道将什么传递到
ReadString

您可以通过调用获取所有值名称的列表。将
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;

看起来您使用的不是
TRegistry
(参数太多,无法
WriteString
),但如果是,您可以使用它将所有内容从注册表中恢复。我怀疑您被卡住了,因为您想调用,但您不知道注册表值的名称,因此不知道将什么传递到
ReadString

您可以通过调用获取所有值名称的列表。将
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;

我不知道gridView是什么,所以我无法回答这个问题。你说你在注册表中存储的东西来自gridView,那么你首先是如何将它放入gridView的呢?我通过数据集从gridView到注册表存储和检索数据。所以它是一个数据感知的网格控件?然后,要将其放入网格,请将这些内容放入数据集。我不知道怎么做。gridView是TwwwDBGrid,数据集是TClientDataSet,它相互链接。因此,当我将数据附加到dataset时,它会自动在gridView中显示数据。我不知道gridView是什么,所以我无法回答这个问题。你说你在注册表中存储的东西来自gridView,那么你首先是如何将它放入gridView的呢?我通过数据集从gridView到注册表存储和检索数据。所以它是一个数据感知的网格控件?然后,要将其放入网格,请将这些内容放入数据集。我不知道怎么做。gridView是TwwwDBGrid,数据集是TClientDataSet,它相互链接。因此,当我将数据附加到dataset时,它将自动在gridView中显示数据。