Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ну почему мне проще написать ... [D7, WinXP]


Валя ©   (2005-08-17 14:57:00) 

... такой класс, чем наследника TList. Может мне кто объяснит как этот класс реализовать в виде наследника TList?

type
 TOpenFileStruc = record
   FullName:string;
   ShortName:string;
   Saved:boolean;
   Year:string;
   Conf:string;
 end;

 TOpenedFiles = class(TObject)
 private
   FOpenedFiles: array of TOpenFileStruc;
   function GetItem(Index: Integer): TOpenFileStruc;
   procedure SetItem(Index: integer; Value: TOpenFileStruc);
 public
   function Add(Value: TOpenFileStruc): Integer;
   function Count : integer;
   procedure Delete(Index: integer);
   property OpenedFiles[Index: Integer]: TOpenFileStruc read GetItem write SetItem; default;
 end;

implementation

function TOpenedFiles.Add(Value: TOpenFileStruc): Integer;
begin
 SetLength(FOpenedFiles, Length(FOpenedFiles)+1);
 SetItem(Length(FOpenedFiles)-1, Value);
 Result := Length(FOpenedFiles)-1;
end;

function TOpenedFiles.Count : integer;
begin
 if FOpenedFiles <> nil then Result := Length(FOpenedFiles) else Result := 0;
end;

procedure TOpenedFiles.Delete(Index: integer);
var
 i:integer;
begin
 if index <= Count then begin
   if index < Count then begin
     for i := index to count-2 do begin
       FOpenedFiles[i] := FOpenedFiles[i+1];
     end;
   end;
   SetLength(FOpenedFiles, Length(FOpenedFiles)-1);
 end;
end;

function TOpenedFiles.GetItem(Index: Integer): TOpenFileStruc;
begin
 Result := FOpenedFiles[Index];
end;

procedure TOpenedFiles.SetItem(Index: integer; Value: TOpenFileStruc);
begin
 FOpenedFiles[index] := Value;
end;


alex_***   (2005-08-17 18:46:00) [1]

сделать наследник TObjectList куда запихать классы, преобразованные из TOpenFileStruc. ИМХО: надежнее и проще.


TUser   (2005-08-17 18:38:00) [2]

Ну, мне тоже было бы проще. И память оптимальнее используется - не тратится на хранение указателей. И удобнее, имхо. Удлиннение массива лучше сделать примерно так же, как у Борланда - см. методл Grow.


Digitman   (2005-08-17 15:04:00) [3]


> почему мне проще написать


потому что изобретатели велосипедов никогда не переведутся на белом свете


Гаврила   (2005-08-17 15:01:00) [4]

Для этого вообще не обязательно писать наследника Tlist
И разумеется не обязательно городить этот огород ,ибо он работает намного менее оптимально ,чем TList

type
 POpenFileStruc = ^TOpenFileStruc;
И добавляй в список указатели (не забывая выделять и освобождать память)


Наверх

Титульная страница Поиск, карта сайта Написать письмо