Главная страница
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.027 c
9-1117156620
евГений2005
2005-05-27 05:17
2005.09.25
Как быстро скопировать данные из одной текстуры в другую?


6-1117704753
Marabunt
2005-06-02 13:32
2005.09.25
Файл FTPDemo.dpr


14-1125893012
vajo
2005-09-05 08:03
2005.09.25
Вирус: Trojan-PSW.win32.vipgsm.ap


14-1125296936
Kerk
2005-08-29 10:28
2005.09.25
Библия: Иосиф.


1-1125497772
Карелин Артем
2005-08-31 18:16
2005.09.25
Константа - массив записей. Как делать?