Страница 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
спасибо