адресного - это в смысле связанного?
Тогда это делается немного не так.
Для начала здесь класс для файла не нужен.
Код:
type
PFileItem=^TFileItem;
TFileItem=record
Name : String;
Size : Integer;
Next : PFileItem;
end;
Для каталога - можно и класс сделать, что бы инкапсулировать туда методы.
Код:
type
TFileCatalog=class
private
FHead : PFileItem;
function GeHead : PFileItem;
public
constructor Create;
function Add(AFileName : String; AFileSize : Integer) : PFileITem;
property Head : PFileItem read GetHead;
end;
implementation
constructor TFileCatalog.Create;
begin
inherited;
FHead := Nil;
end;
function TFileCatalog.GeHead : PFileItem;
begin
Result := FHead;
end;
function TFileCatalog.Add(AFileName : String; AFileSize : Integer) : PFileITem;
var
NewHead : PFileItem;
begin
New(NewHead);
NewHead.Name := AFileName;
NewHead.Size := AFileSize;
NewHead.Next := FHead;
FHead := NewHead;
end;
Здесь добавление идет с головы списка. Т.е. новый элемент вставляется в начало списка и станоеится его головой.
Поиск - стандартная имлементация поиска по св. списку:
Код:
function TFileCatalog.FindFile(AFileName : String) : TFileItem;
var
Buf : PFileItem;
begin
Result := Nil;
Buf := Head;
While Buf <> Nil Do
Begin
If CompareText(AFileName,Buf.Name) = 0 Then // CompareStr, если надо с учетом регистра
Begin
Result := Buf;
Break;
End;
Buf := Buf.Next;
End;
end;