Список(ООП)

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

compiler
новенький
Сообщения: 39
Зарегистрирован: 20.02.2007 12:49:12

Сообщение compiler »

>Там же и многочисленные примеры.
не нашел ни одного...
>Однако, на мой взгляд, более удобно пользоваться хелпом от Delphi
для этого надо его иметь...
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

Код: Выделить всё

Type TItem = class // Описание "ячейки" :)
  Private
    FValue: Integer;
  Public
    Property Value: Integer Read FValue; // Описание "полей"
    Constructor Create(C_Value: Integer);
End;

var
  Form1: TForm1;

Implementation

Constructor TItem.Create(C_Value: Integer);
Begin
  FValue := C_Value;
End;

Procedure TForm1.FormCreate(Sender: TObject);
var
  List: TList;
  i: Integer;
Begin
  List := TList.Create;
  For i := 0 To 9 Do
    List.Add(TItem.Create(Random(100)));
  For i := 0 To List.Count - 1 Do
    Caption := Caption + ':' + IntToStr(TItem(List[i]).Value);
  List.Free;
End;
compiler
новенький
Сообщения: 39
Зарегистрирован: 20.02.2007 12:49:12

Сообщение compiler »

Код: Выделить всё

Caption := Caption + ':' + IntToStr(TItem(List[i]).Value); //а что мы тут сделали? :)
List.Free; //в конструкторе? оригинально...
Аватара пользователя
Attid
долгожитель
Сообщения: 2588
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

//в конструкторе? оригинально...

учмтывая что переменая обьявлена внутри процедуты то так и надо.
compiler
новенький
Сообщения: 39
Зарегистрирован: 20.02.2007 12:49:12

Сообщение compiler »

Attid писал(а):
//в конструкторе? оригинально...

учмтывая что переменая обьявлена внутри процедуты то так и надо.
мне просто понравилось уничтожение в методе Create...
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

FormCreate - это не конструктор, а обработчик события :Р
compiler
новенький
Сообщения: 39
Зарегистрирован: 20.02.2007 12:49:12

Сообщение compiler »

а можна увидеть деструктор ячейки по индексу?
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

Код: Выделить всё

  Item := TItem(List[i]);
  List.Delete(i);
  Item.Free;
compiler
новенький
Сообщения: 39
Зарегистрирован: 20.02.2007 12:49:12

Сообщение compiler »

Brainenjii писал(а):

Код: Выделить всё

  Item := TItem(List[i]);
  List.Delete(i);
  Item.Free;
а зачем первая и третья строчка?
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

тлист - список ссылок. в нем хранится только ссылка на твой объект.
без 1 и 3 строчек ссылка удалится из списка, но сам объет останется в памяти. соответственно если тебе нужно только убрать объект из списка то 1 и 3 ненужны
v-t-l
энтузиаст
Сообщения: 744
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Сообщение v-t-l »

Тогда можно обойтись без промежуточной переменной

Код: Выделить всё

TItem(List[i]).Free; //освобождаем объект
List.Delete(i); //удаляем ссылку на него
compiler
новенький
Сообщения: 39
Зарегистрирован: 20.02.2007 12:49:12

Сообщение compiler »

спасибо
Ответить