Главная страница
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.47 MB
Время: 0.059 c
14-1125498070
hamster
2005-08-31 18:21
2005.09.25
Thumbs.db


8-1115977682
Артём
2005-05-13 13:48
2005.09.25
BASSPlayer


9-1117104669
Buffer
2005-05-26 14:51
2005.09.25
DX VertexBuffer


14-1125306285
CHES
2005-08-29 13:04
2005.09.25
Посоветуйте хороший хостинг


1-1125495898
Draught
2005-08-31 17:44
2005.09.25
Вычислить разницу во времени