|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помогите с добавлялкой в список (ООП)
Здравствуйте, имеется такая задача: Нужна программа, в которую нужно забить информацию о файлам (Имя и размер), а эти файлы в свою очередь, были в контейнере, реализованном в виде адресного однонаправленного списка. Вот что получилось у меня:
Код:
unit FailU; interface type TFail = class private NameFile:string; SizeFile:integer; Next:TFail; public constructor Create(aName:string; aSize:integer); //Создать файл function GetName:string; //Получить имя файла function GetSize:integer; // Получить размер файла procedure SetName(aName:string); // Установить имя файла procedure SetSize(aSize:integer); // Установить размер файла function GetNext (Next:TFail); //Перейти к следующему файлу procedure SetNext (aNext:TFail); //Установить следующий файл end; implementation constructor TFail.Create(aname: string; asize: Integer); begin NameFile:=aName; SizeFile:=aSize; end; procedure TFail.SetName(aname: string); begin NameFile:=aName; end; procedure TFail.SetSize(asize: Integer); begin SizeFile:=aSize; end; function TFail.GetName; begin result:=NameFile; end; function TFail.GetSize; begin result:=SizeFile; end; procedure TFail.SetNext(anext: TFail); begin next:=anext; end; function TFail.GetNext(next: TFail); begin result:=next; end; end. И Код:
unit Katalog; interface uses Dialogs, FileU; //Используем модуль файлов type TKatalog = class private Name:string; //* Название каталога; pFirst: TBuilding; //*Казатель на первый элемент Count:integer; public Constructor Create(aName:string); procedure SetName(aNameKatalog:string); //Установить имя function GetName:string; //Получить имя function TKatalog.SearchFile(anamefile:string):TFail; procedure AddFile(aFile:TFile); //Добавить файл после нужного файла function GetName: string; // получить название Каталога procedure SetName(aName: string); // установить название Каталога end; implementation constructor TKatalog.Create(Name:string); begin Name:=aName; pFirst:=nil; count:=0; end; function TKatalog.SearchFile(anamefile:string):TFail; var pTemp:TFail; begin if Count=0 then ShowMessage('Поиск невозможен! Нет файлов для поиска!') else begin pTemp:=pFirst; while (pTemp<>nil) do if (pTemp.GetName = anamefile) then begin result:=pTemp; break; end else pTemp:=pTemp.GetNext; end; end; procedure AddFile(aFile:=TFile); var pTemp:TFile; Begin if count=0 then begin aFile.SetNext(pFirst); pFirst:=aFile; Inc(count); else pTemp:=SearchFile(anamefile); if (pTemp<>nil) then aFile.SetNext() End; end. С контейнером у меня проблемы, (ЮНИТ2) не уверен, что правильно описан адрессный однонаправленный список и не знаю как реализовать добавлялки :-( Гуру, помогите пожалуйста новичку, хочется разобраться... |