Показать сообщение отдельно
  #2  
Старый 23.09.2016, 05:53
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

адресного - это в смысле связанного?
Тогда это делается немного не так.
Для начала здесь класс для файла не нужен.
Код:
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;
Ответить с цитированием