delphi 7: Как мне найти предмет коллекции предметов?
Как я могу найти по имени и получить Предмет в коллекции объекта?
procedure TfoMain.InitForm;
begin
// Liste des produits de la pharmacie 1
FListeDispoProduit := TListeDispoProduit.Create(TProduit);
with (FListeDispoProduit) do
begin
with TProduit(Add) do
begin
Name := 'Produit 01';
CIP := 'A001';
StockQty := 3;
AutoRestock := 1;
QtyMin:= 2;
end;
with TProduit(Add) do
begin
Name := 'Produit 02';
CIP := 'A002';
StockQty := 5;
AutoRestock := 0;
QtyMin:= 2;
end;
function getProductByName(productName: String): TProduit;
var
i : integer;
begin
for i := 0 to fProductList.Count -1 do
begin
if (TProduit(fProductList.Items[i]).Name = productName)
Result :=
end;
end;
Я хочу редактировать количество о названии продукта.
Как я могу это сделать? благодарю вас
3 ответа
Если ваш объект коллекции является TCollection
то есть Items
свойство (которое вы должны были увидеть в документации или в исходном коде). Используйте это и его Count
свойство, чтобы написать цикл, где вы проверяете каждый элемент, чтобы увидеть, соответствует ли он вашей цели.
var
i: Integer;
begin
for i := 0 to Pred(FListeDespoProduit.Count) do begin
if TProduit(FListeDespoProduit.Items[i]).Name = productName then begin
Result := TProduit(FListeDespoProduit.Items[i]);
exit;
end;
end;
raise EItemNotFound.Create;
end;
Items
это свойство по умолчанию, что означает, что вы можете опустить его в своем коде и просто использовать индекс массива сам по себе. Вместо FListeDespoProduit.Items[i]
, вы можете сократить его до FListeDespoProduit[i]
,
function getProductByName(productName: String): TProduit;
var
i : integer;
begin
for i := 0 to fProductList.Count -1 do
begin
if (TProduit(fProductList.Items[i]).Name = productName)
Result := TProduit(fProductList.Items[i]); // this???
end;
end;
Вы можете тогда пойти:
MyProduit := getProductByName('banana');
MyProduit.StockQty := 3;
Или что угодно.
Ваш TProduit
реализует (Add
). Это еще не реализовано (Get
) (или что-то подобное)?
Вы наследуете этот код? Есть ли еще детали?
Изменить: в противном случае вам придется создать Get
Выполните процедуру самостоятельно, возможно, перебирая список и находя совпадение, а затем возвращая его.