Список(ООП)

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

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

Сообщение compiler » 17.07.2007 14:26:30

>Там же и многочисленные примеры.
не нашел ни одного...
>Однако, на мой взгляд, более удобно пользоваться хелпом от Delphi
для этого надо его иметь...
compiler
новенький
 
Сообщения: 39
Зарегистрирован: 20.02.2007 13:49:12

Сообщение Brainenjii » 17.07.2007 15:53:45

Код: Выделить всё
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;
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение compiler » 17.07.2007 17:49:26

Код: Выделить всё
Caption := Caption + ':' + IntToStr(TItem(List[i]).Value); //а что мы тут сделали? :)
List.Free; //в конструкторе? оригинально...
compiler
новенький
 
Сообщения: 39
Зарегистрирован: 20.02.2007 13:49:12

Сообщение Attid » 17.07.2007 18:08:31

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

учмтывая что переменая обьявлена внутри процедуты то так и надо.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение compiler » 17.07.2007 18:25:23

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

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

Сообщение Brainenjii » 17.07.2007 19:17:21

FormCreate - это не конструктор, а обработчик события :Р
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение compiler » 18.07.2007 17:11:17

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

Сообщение Brainenjii » 18.07.2007 17:54:38

Код: Выделить всё
  Item := TItem(List[i]);
  List.Delete(i);
  Item.Free;
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение compiler » 18.07.2007 18:36:13

Brainenjii писал(а):
Код: Выделить всё
  Item := TItem(List[i]);
  List.Delete(i);
  Item.Free;
а зачем первая и третья строчка?
compiler
новенький
 
Сообщения: 39
Зарегистрирован: 20.02.2007 13:49:12

Сообщение zub » 18.07.2007 21:42:47

тлист - список ссылок. в нем хранится только ссылка на твой объект.
без 1 и 3 строчек ссылка удалится из списка, но сам объет останется в памяти. соответственно если тебе нужно только убрать объект из списка то 1 и 3 ненужны
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Сообщение v-t-l » 18.07.2007 22:02:17

Тогда можно обойтись без промежуточной переменной
Код: Выделить всё
TItem(List[i]).Free; //освобождаем объект
List.Delete(i); //удаляем ссылку на него
v-t-l
энтузиаст
 
Сообщения: 727
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Сообщение compiler » 18.07.2007 22:17:02

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

Пред.

Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17

Рейтинг@Mail.ru