Как присвоить значения массиву объектов в Delphi - PullRequest
0 голосов
/ 19 мая 2019

У меня есть массив 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;

И GetTitelФункции *, 1013 * и т. Д. Имеют следующий формат:

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

Я хочу позвонить:

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

и получить доступ к значениям в массиве по одному,вместо этого каждое значение одинаково.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...