Страница 2 из 2

СообщениеДобавлено: 17.07.2007 14:26:30
compiler
>Там же и многочисленные примеры.
не нашел ни одного...
>Однако, на мой взгляд, более удобно пользоваться хелпом от Delphi
для этого надо его иметь...

СообщениеДобавлено: 17.07.2007 15:53:45
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;

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

СообщениеДобавлено: 17.07.2007 18:08:31
Attid
//в конструкторе? оригинально...

учмтывая что переменая обьявлена внутри процедуты то так и надо.

СообщениеДобавлено: 17.07.2007 18:25:23
compiler
Attid писал(а):
//в конструкторе? оригинально...

учмтывая что переменая обьявлена внутри процедуты то так и надо.
мне просто понравилось уничтожение в методе Create...

СообщениеДобавлено: 17.07.2007 19:17:21
Brainenjii
FormCreate - это не конструктор, а обработчик события :Р

СообщениеДобавлено: 18.07.2007 17:11:17
compiler
а можна увидеть деструктор ячейки по индексу?

СообщениеДобавлено: 18.07.2007 17:54:38
Brainenjii
Код: Выделить всё
  Item := TItem(List[i]);
  List.Delete(i);
  Item.Free;

СообщениеДобавлено: 18.07.2007 18:36:13
compiler
Brainenjii писал(а):
Код: Выделить всё
  Item := TItem(List[i]);
  List.Delete(i);
  Item.Free;
а зачем первая и третья строчка?

СообщениеДобавлено: 18.07.2007 21:42:47
zub
тлист - список ссылок. в нем хранится только ссылка на твой объект.
без 1 и 3 строчек ссылка удалится из списка, но сам объет останется в памяти. соответственно если тебе нужно только убрать объект из списка то 1 и 3 ненужны

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

СообщениеДобавлено: 18.07.2007 22:17:02
compiler
спасибо