Удалить запись из TList

 
0
 
Delphi, Kylix & Pascal
ava
serezhka1986 | 25.01.2013, 17:38
Добрый день!
У меня есть TList, например, такой:
2
6
12
5
198
23
11
45

Подскажите, пожалуйста, как мне удалить из этого TList-а запись, например, 23, но я заранее не знаю в какой позиции эта запись? Т.е., я знаю что
в TList-е есть 23 и мне надо ее удалить.
Kommentare (6)
ava
gesper | 25.01.2013, 16:43 #
TList хранит указатели, а не числа. Вобще открой delphi введи имя переменно и нажми точку, тебе покажут все доступные процедуры, там из их названий все доступно понятно что для чего.

x:=MyList.IndexOf(23);
ava
serezhka1986 | 25.01.2013, 17:01 #
Приведу код:

...

type
  // Определение класса клиента
  TCustomer = class
    private
      // Поля данных этого нового класса
      CustomerNumber : Integer;

    public
      // Свойства для чтения значений этих данных
      property Number : Integer
          read CustomerNumber;

      // Коструктрор
      constructor Create(const CustomerNumber : Integer);
  end;

...

private
  myList : TList;

...

implementation

{$R *.dfm}

constructor TCustomer.Create(const CustomerNumber : Integer);
begin
  // Сохранение переданных параметров
  self.CustomerNumber := CustomerNumber;
end;

procedure TForm1.FormActivate(Sender: TObject);
var
  customer : TCustomer;
  i:integer;
begin
  // Создание объекта TList для хранения набора объектов клиент
  myList := TList.Create;
  Memo1.Clear;

  myList.Add(TCustomer.Create(999));
  myList.Add(TCustomer.Create(25));
  myList.Add(TCustomer.Create(54));
  myList.Add(TCustomer.Create(7));
  myList.Add(TCustomer.Create(6));
  myList.Add(TCustomer.Create(78));
  myList.Add(TCustomer.Create(12));
  myList.Add(TCustomer.Create(2));

  for i := 0 to myList.Count-1 do
  begin
     Memo1.Lines.Add(IntToStr(TCustomer(myList[i]).Number));
  end;

end;

Вот из этого списка мне надо удалить myList[?].Number = 54. Еще раз повторюсь, я не знаю где именно находится 54...
ava
northener | 25.01.2013, 17:10 #
Цитата (serezhka1986 @  25.1.2013,  17:01 findReferencedText)
Вот из этого списка мне надо удалить myList[?].Number = 54. Еще раз повторюсь, я не знаю где именно находится 54... 

Ищи перебором в цикле. Найдешь - удалишь.
ava
serezhka1986 | 25.01.2013, 17:15 #
Цитата (northener @  25.1.2013,  17:10 findReferencedText)
Ищи перебором в цикле. Найдешь - удалишь.

Ну я так в принципе и решил делать... Думал может есть еще какие варианты...
ava
northener | 25.01.2013, 17:23 #
Цитата (serezhka1986 @  25.1.2013,  17:15 findReferencedText)
Думал может есть еще какие варианты

Если бы они и были бы, это был бы тот же перебор в цикле. Как и все IndexOf...
ava
gesper | 25.01.2013, 17:24 #
Либо перебор, либо вместо Мемо использовать что то, где скрыто будет еще указатель на адрес памяти записан.
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
advanced
Absenden