如何在Delphi中为对象数组分配值

时间:2019-05-19 14:06:57

标签: arrays json object delphi

我有一个TBoek数组和一个应该为该数组的每个元素分配值的循环。相反,发生的情况是该数组最终在每个索引中具有完全相同的值。也许我的处理顺序不正确,或者我不正确地将值分配给了数组,但是无论哪种方式我都无法解决。

procedure TBoek.MaakArray;
var
  i: integer;
  sTitel, sOuteur, sISBN, sUitgewer, sPrys, sI: string;
  boek: TBoek;
begin
  boek := TBoek.Create;
  for i := 0 to 9 do
  begin
{$REGION 'Parse JSON om eienskappe van boek te kry'}
    sI := IntToStr(i);

    sTitel := JSONFile.GetValue<string>('items[' + sI + '].volumeInfo.title');
    try
      sOuteur := JSONFile.GetValue<string>
        ('items[' + sI + '].volumeInfo.authors[0]');
    except
      sOuteur := '<none>'
    end;
    try
      sISBN := JSONFile.GetValue<string>
        ('items[' + sI + '].volumeInfo.industryIdentifiers[1].identifier');
    except
      sISBN := '<none>'
    end;
    try
      sUitgewer := JSONFile.GetValue<string>
        ('items[' + sI + '].volumeInfo.publisher');
    except
      sUitgewer := '<none>'
    end;
    try
      sPrys := JSONFile.GetValue<string>
        ('items[' + sI + '].saleInfo.listPrice.amount');
    except
      sPrys := '0';
    end;
{$ENDREGION}
    arrBoeke[i] := boek;
    with arrBoeke[i] do
    begin
      SetTitel(sTitel);
      SetOuteur(sOuteur);
      SetISBN(sISBN);
      SetUitgewer(sUitgewer);
      SetPrys(sPrys);
    end;

  end;///end of for loop

end;


Set函数均遵循以下格式:

procedure TBoek.SetTitel(BoekTitel: string);
begin
  fTitel := BoekTitel;
end;

这是GetString函数:

function TBoek.GetString: string;
begin
  Result := GetTitel + #13#10 + GetOuteur + #13#10 + GetISBN + #13#10 +
    GetUitgewer + #13#10 + GetPrys + #13#10 + #13#10;
end;

GetTitelGetOuteur等函数都遵循相同的格式:

function TBoek.GetTitel: string;
begin
  Result := fTitel;
end;

我想打电话给

for I := 0 to 9 do
   begin
     ShowMessage(arrBoeke[i].GetString);
   end;

一次访问一个数组中的值,而是每个值都相同。

0 个答案:

没有答案