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

  • Автор темы SeverBap
  • Дата начала
S

SeverBap

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

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

SeverBap

Не курсач ... мне надо посматреть как это делается ... везде темы на эту лажу есть, а как надо и правильно ну нету ... а то набодяжу ... если есть пример в курсаче давай посматрю или проще выложи сюда будет разбирать .... плтззззззззз :rolleyes:
 
S

SeverBap

Вот мой плохой и корявый код:
Код:
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;
 
S

SeverBap

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

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

SeverBap

Все успокоился! TObjectList - возможно, хорошо посмотрю ... есть где для примера посматреть, что к чему что бы я вкурс дела влетел??? :rolleyes:
не буду ругтася матом!! чесное пионерское!
 
S

SeverBap

:rolleyes: дома напишу посмотрим что к чему привело!!!
 
S

SeverBap

... посмотрел это же компонента не стандартная а мне надо стандартная по TStringList а смысл, проще написать консольное приложение....
кто может помочь при написаниии классов TMassive и TElement а то я зароюсь мне еще программить!!! :)
 
S

SeverBap

вот и разобрались что хоть в чем-то!! ниче я разбирусь в этом TObjectList тогда скину и посмотрим где что не так!!!

:)
 
S

SeverBap

я же начинающий программер, сам в основном программирую на 1С! И с делфи хочу больше разобратся надо!!! :)
 
S

SeverBap

:( было отложено в долгий и прАтивный ящик!!! - сдавал конфигу!!!

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

SeverBap

Не понял (верней не дошло)! где-то на портале есть документация???
 
M

morpheus

нет, имееться в виду это на локальном компе , в папке где установлен делфи( $(DELPHI) ) есть папка с примерами (Demos)
 
S

SeverBap

Отлично, посмотрю!!!
//********************************************
Morpheus а по чему ты такой злой модератор??
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!