Здравствуйте, имеется такая задача: Нужна программа, в которую нужно забить информацию о файлам (Имя и размер), а эти файлы в свою очередь, были в контейнере, реализованном в виде адресного однонаправленного списка. Вот что получилось у меня:
Код:
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) не уверен, что правильно описан адрессный однонаправленный список и не знаю как реализовать добавлялки :-( Гуру, помогите пожалуйста новичку, хочется разобраться...