Главная страница
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.035 c
5-1100763658
Valerman
2004-11-18 10:40
2005.09.25
Перемаргивание компонентов при прорисовке ???


1-1125468384
SergProger
2005-08-31 10:06
2005.09.25
Меню программы на TaskBar


9-1117142330
XCoder
2005-05-27 01:18
2005.09.25
Перемещение объекта по кривой


2-1123970686
ArtemESC
2005-08-14 02:04
2005.09.25
CopyFrom класса TStream


14-1125739636
KilkennyCat
2005-09-03 13:27
2005.09.25
3 сентября. С Днем рождения!