Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.25;
Скачать: CL | DM;

Вниз

Ну почему мне проще написать ...   Найти похожие ветки 

 
Валя   (2005-08-17 14:57) [0]

... такой класс, чем наследника 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;


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

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

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


 
Digitman ©   (2005-08-17 15:04) [2]


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


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


 
TUser ©   (2005-08-17 18:38) [3]

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2005.09.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.056 c
1-1125816959
Dibroff
2005-09-04 10:55
2005.09.25
Как правильно нарисовать вне формы и поверх остальных форм


2-1123945723
Саша У
2005-08-13 19:08
2005.09.25
Как правильно сделать одинаковые обработчики для нескольких компо


1-1125917246
DesWind
2005-09-05 14:47
2005.09.25
Обясните смылсл данных действий.


1-1125849561
kblc
2005-09-04 19:59
2005.09.25
Ошибка в алгоритме


14-1125157557
Piter
2005-08-27 19:45
2005.09.25
Конвертирование файлов FLV