Динамический список (массив) элементов (объектов)

Тема в разделе "Delphi - FAQ", создана пользователем SeverBap, 20 авг 2008.

  1. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    Здраствуйте, у меня возникла ситуация написать короткую программу по созданию динамического списка элементов с использованием классов.
    Долго ковырялся и не чего толком не сделал, суть в том что визуальные компонетов использовать не надо ... начал как всегда с создания TMassive с свойствами: количество элементов в массиве (списке), первый элемент, собственно ссылка на элемент (TElement), функция создания массива, удаления, поиска и добавления элемента в массив. TElement: идентификато (короткое название пока), ссылка на следующий элемент (может кинуть это в массив????), позиция в массиве (может ее тоже туда ;) в массив ), функции иннициализации и удаления...

    народ хелп это надо срочно на штомповать ... :blink:
     
  2. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    Не курсач ... мне надо посматреть как это делается ... везде темы на эту лажу есть, а как надо и правильно ну нету ... а то набодяжу ... если есть пример в курсаче давай посматрю или проще выложи сюда будет разбирать .... плтззззззззз :rolleyes:
     
  3. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    Вот мой плохой и корявый код:
    Код (Text):
    PElement=^TElement;
    TElement=object
    info:string;
    n:integer;
    last:PElement;
    constructor create;
    end;
    PMassive=^TMassive;
    TMassive=object
    { указатели на первое и последнее звенья списка }
    first, last:PElement;
    { число элементов массива }
    count : Integer;
    { Конструктор создает новый пустой массив }
    constructor create;
    destructor destroy;
    { Функция, выдающая текущий размер массива }
    function length : Integer; virtual;
    { Функции индексации }
    function get(i:Integer):string; virtual;
    procedure put(i:Integer; e:TElement); virtual;
    { Процедура добавления нового элемента в конец массива }
    procedure add(e:TElement); virtual;
    { Вспомогательная функция поиска элемента по номеру }
    function find(i : Integer):PElement;
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}
    constructor TMassive.create;
    begin
    first:= nil; last:= nil; count:=0;
    end;
    destructor TMassive.destroy;
    var current, save:PElement;
    begin
    current:=first;
    while current <> nil do begin
    save:=current;
    current:=current^.next;
    dispose(save);
    end;
    first:=nil; last:=nil; count:=0;
    end;

    function TMassive.length:Integer;
    begin
    length:=count
    end;

    function TMassive.find(i : Integer) : PElement;
    var current : PElement;
    begin
    if i < 1 then begin
    ShowMessage('Ошибка индексации: выход индекса!');
    halt(100)
    end;
    current := first;
    while (i > 1) and (current <> nil) do begin
    current := current^.next; dec(i)
    end;
    if current = nil then begin
    ShowMessage('Ошибка индексации: выход индекса');
    halt(100)
    end;
    find := current
    end;

    function TMassive.get(i : Integer) : string;
    begin
    get := find(i)^.info
    end;

    procedure TMassive.add(e:TElement);
    var newElement : PElement;
    begin
    new(newElement);
    newElement^.info:='{ту та полный косяк после пива}';
    newElement^.:=nil;
    if first = nil then
    first := newElement
    else
    last^.next := newElement
    last:=newElement;
    inc(count)
    end;
     
  4. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    а как ??? я че тебе блин фома ...если бы я знал тобы вообще сюда не зашел!!! процедура вводнового вообще не доделана ... брал с примера ...
    надо пересмотреть начало а остальное будет видно ...

    Модератор: Выражения выбираем, не в пивной, ку? Если вы сюда зашли и вам пытаются помочь, то как минимум надо уважать.
     
  5. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    Все успокоился! TObjectList - возможно, хорошо посмотрю ... есть где для примера посматреть, что к чему что бы я вкурс дела влетел??? :rolleyes:
    не буду ругтася матом!! чесное пионерское!
     
  6. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    :rolleyes: дома напишу посмотрим что к чему привело!!!
     
  7. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    ... посмотрел это же компонента не стандартная а мне надо стандартная по TStringList а смысл, проще написать консольное приложение....
    кто может помочь при написаниии классов TMassive и TElement а то я зароюсь мне еще программить!!! :)
     
  8. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    вот и разобрались что хоть в чем-то!! ниче я разбирусь в этом TObjectList тогда скину и посмотрим где что не так!!!

    :)
     
  9. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    я же начинающий программер, сам в основном программирую на 1С! И с делфи хочу больше разобратся надо!!! :)
     
  10. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    :( было отложено в долгий и прАтивный ящик!!! - сдавал конфигу!!!

    кто-нибудь скинет ссылку на использование TObjectList в примерах???? Плизззз!!!
     
  11. etc

    etc Гость

    $(DELPHI)\Demos
     
  12. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    Не понял (верней не дошло)! где-то на портале есть документация???
     
  13. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    нет, имееться в виду это на локальном компе , в папке где установлен делфи( $(DELPHI) ) есть папка с примерами (Demos)
     
  14. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    Отлично, посмотрю!!!
    //********************************************
    Morpheus а по чему ты такой злой модератор??
     
Загрузка...
Похожие Темы - Динамический список (массив)
  1. XADD
    Ответов:
    12
    Просмотров:
    3.563
  2. xbeetle
    Ответов:
    15
    Просмотров:
    928
  3. WingmanIX
    Ответов:
    2
    Просмотров:
    1.453
  4. Marazm
    Ответов:
    0
    Просмотров:
    1.294
  5. Mitya
    Ответов:
    6
    Просмотров:
    2.057

Поделиться этой страницей