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

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

Почему возникают тормоза при переходе от массива к такой схеме ? [D7]


Страницы:   1 2

AIms ©   (2005-08-24 01:36:00) 

Было:
AIms : array of TAIms;

Cтало :

FAIms : array of TAIms;

property AIms[Index: Integer]: TAIms read GetObject write SetObject;

Всё нормально работает, но тормозит жутко, не понимаю почему. Это чего, просто такая тормозная конструкция, или что-то ещё ? И главное, можно ли это как нибудь ускорить ?


tesseract   (2005-08-31 21:49:00) [1]

А чем всё же Tlist не нравится? Для этого и предназначен.


КаПиБаРа   (2005-08-31 07:45:00) [2]

Что значит не действует?


AIms   (2005-08-31 06:43:00) [3]

AIms   (25.08.05 03:30) [17]
А почему теперь : AIms[0].name := 'blablabla'; не действует ?


Aims   (2005-08-25 05:27:00) [4]

Есть там контроль индексов. Что мне сюда весь проэкт запостивать что ли ?


Fay   (2005-08-25 05:10:00) [5]

2 КаПиБаРа ©   (24.08.05 14:30) [12]
>> Контроль индексов не всегда нужен. Лазиют же некоторые по скалам без страховки.
Си-шники называются


AIms   (2005-08-25 03:30:00) [6]

А почему теперь : AIms[0].name := 'blablabla'; не действует ?


jack128   (2005-08-24 18:42:00) [7]

evvcom ©   (24.08.05 17:10) [14]
Поскольку используется проперть, значит предполагается ее дать кому-то использовать, а этот кто-то может R+ изменить на R- c вытекающими.

$R - локальная директива, область действия которой ограничена текущим модулем..


Sapersky   (2005-08-24 17:57:00) [8]

Type
 TImsArray = array of TAIms;

FAIms : TImsArray;
property AIms: TImsArray read FAIms;

Смертельный номер :)
Зато по скорости наилучший вариант. Жалко, default с ним не действует.


evvcom   (2005-08-24 17:10:00) [9]


> И тогда не будет ERangeError при {$R+} ?

Будет, но...
Поскольку используется проперть, значит предполагается ее дать кому-то использовать, а этот кто-то может R+ изменить на R- c вытекающими.


GuAV   (2005-08-24 14:44:00) [10]

Alexander Panov ©   (24.08.05 14:22) [11]
Длина FAIms может быть нулевой


И тогда не будет ERangeError при {$R+} ?


КаПиБаРа   (2005-08-24 14:30:00) [11]

Контроль индексов не всегда нужен. Лазиют же некоторые по скалам без страховки.


Alexander Panov   (2005-08-24 14:22:00) [12]

if not isLoad then begin
  isLoad := True;
  LoadIt;
end;
Result := FAIms[Index];


Длина FAIms может быть нулевой


GuAV   (2005-08-24 14:19:00) [13]

Anatoly Podgoretsky ©   (24.08.05 9:42) [9]

Откуда Вы можете знать, что отсутствует контроль индексов ?


Anatoly Podgoretsky   (2005-08-24 09:42:00) [14]

Код очень опасный отсутствует контроль индексов.


TUser   (2005-08-24 06:18:00) [15]

А SetLength где?


Джо   (2005-08-24 05:22:00) [16]


>  [6] Defunct ©   (24.08.05 05:10)

Да, название неудачное. И вообще, установку флага я производил бы в методе LoadIt.


Defunct   (2005-08-24 05:10:00) [17]

> Джо

IsLoad это больше на название функции похоже, или свойства.
как для флага Loaded должно было быть.


AIms   (2005-08-24 04:12:00) [18]

Отбой тревоги. :) Перезагрузился и всё нормально заработало. Видимо просто глюк какой то был. Очень надеюсь, что повторяться он не будет.


Джо   (2005-08-24 04:02:00) [19]


>  [3] Defunct ©   (24.08.05 03:59)

Lazy load.
То бишь, загрузка актуальных данных только после первого обращения к свойству. Я так понимаю.


Defunct   (2005-08-24 03:59:00) [20]

Это что?

if not isLoad then begin
  isLoad := True;
  LoadIt;
end;


без этого тоже тормозит?


Страницы:   1 2

Наверх

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