Поиск соответствующего значения в TList Delphi7

У меня есть TList который я заполняю динамически, из базы данных, он содержит идентификатор и имя.

Что мне нужно знать, это как искать определенное имя в этом TList предоставив идентификатор без использования for петля.

1 ответ

Решение

без использования for петля

К сожалению, это именно то, что вы должны использовать. TList содержащий указатели знает только, как искать указатели, и ничего больше. Чтобы сделать то, что вы хотите, вы должны перебрать список, разыменовывая указатели вручную, чтобы сравнить значения их полей.

Например:

type
  TDatabaseRecord = class
  public
    ID: Integer;
    Name: String;
  end;

function FindNameByID(ID: Integer): String;
var
  I: Integer;
begin
  Result := '';
  for I := 0 to MyList.Count-1 do
  begin
    if TDatabaseRecord(MyList[I]).ID = ID then
    begin
      Result := TDatabaseRecord(MyList[I]).Name;
      Exit;
    end;
  end;
end;
Другие вопросы по тегам