Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чем лучше пользоваться для хранения объектов, TList'ом или дин. массивов 
:(
    Опции темы
Delphist
Дата 17.10.2008, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Чем лучше пользоваться для хранения списка объектов TList'ом или динамическим массивов, ну т.е.:
Код

var
 m: array of TMyObject;


Предпалагается хранения свыше 1000 объектов. Например где будет выше скорость поиска элемента?

Это сообщение отредактировал(а) Delphist - 17.10.2008, 14:51


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Rennigth
Дата 17.10.2008, 16:10 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



Delphist
Есть такая штука как TObjectList  smile

Добавлено через 1 минуту и 6 секунд
Цитата(Delphist @  17.10.2008,  14:50 Найти цитируемый пост)
динамическим массивов

массив банально не удобен, хоть и памяти занимать будет меньше, но с современными машинами это не актуально.


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Delphist
Дата 17.10.2008, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Цитата(Rennigth @  17.10.2008,  17:10 Найти цитируемый пост)
массив банально не удобен, хоть и памяти занимать будет меньше, но с современными машинами это не актуально. 

А в скорости


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Bose
Дата 17.10.2008, 16:21 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



внутри TList-a тот же array
PM MAIL WWW Skype   Вверх
Rennigth
Дата 17.10.2008, 16:37 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



Цитата(Delphist @  17.10.2008,  16:13 Найти цитируемый пост)
А в скорости 

Цитата(Delphist @  17.10.2008,  14:50 Найти цитируемый пост)
Например где будет выше скорость поиска элемента?

НУ в TList-е уже давно написан алгоритм поика эл-тов, а для массива тебе придеться писать самому, как напишешь так и будет, но имхо врятли придумаешь что-то новое что будет быстрее устоявшихся весчей smile Юзай TList или TObjectList и не парься.



--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Delphist
Дата 18.10.2008, 23:41 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Цитата(Rennigth @  17.10.2008,  17:37 Найти цитируемый пост)
Юзай TList или TObjectList и не парься


Выявил один большой недостаток при хранение списка объектов в TObjectList или TObject, а именно при отладке. Т.е. когда я поднесу курсор мыши в режиме отладки к объекту TObjectList, то в результате мне неудастся увидеть список всех моих объектов и их свойств, зато использование дин. массива лишает меня этого недостатка, особенно это актуально для BDS2006 и выше т.к. он красиво формирует список объектов в Hint'e.
Поэтому даже и не знаю стоит ли использовать TObjectList?


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Delphist
Дата 20.10.2008, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



???


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
MetalFan
Дата 20.10.2008, 14:46 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



напиши наследника от TObjectList, где элементами будут объекты твоего класса...


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Christoph
Дата 20.10.2008, 16:09 (ссылка)   | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 1
Всего: 11



Как по мне...ничего лучше чем TObjectList нету. Я когда то пробывал так:
А массив не актуально уже...и работать может не будет smile


--------------------
user posted image
PM MAIL ICQ   Вверх
Delphist
Дата 20.10.2008, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Цитата(MetalFan @  20.10.2008,  15:46 Найти цитируемый пост)
напиши наследника от TObjectList, где элементами будут объекты твоего класса...

В смысле написать метод типа GetItemsDbg:

Код

type
  TDynArrOfMyObj = array of TMyObject;
  TMyObjList = class(TObjectList)
   ...
   public
     function GetItemsDbg: TDynArrOfMyObj;
   ...
  end

function TMyObjList.GetItemsDbg: TDynArrOfMyObj;
var
  i: integer;
begin
  
  SetLength(Result, Count);
  for i := 0 to Count - 1 do
    Result[i] := List^[i];
end;




--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
MetalFan
Дата 20.10.2008, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Delphist, не, эт чтото извращенно получилось...


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Delphist
Дата 20.10.2008, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Цитата(MetalFan @  20.10.2008,  17:56 Найти цитируемый пост)
Delphist, не, эт чтото извращенно получилось... 

а ты как имел ввиду?

Это сообщение отредактировал(а) Delphist - 20.10.2008, 17:00


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Bose
Дата 20.10.2008, 17:31 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Код

 TMyObjList = class(TObjectList)
   ...
   public
     function GetObject(aIndex:integer): TDynArrOfMyObj; reintroduce;
  ...



function TMyObjList.GetObject(aIndex:integer): TDynArrOfMyObj; 
begin
  result := (inherited GetObject(aIndex)) as TDynArrOfMyObj;
end;


PM MAIL WWW Skype   Вверх
Delphist
Дата 20.10.2008, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Цитата(Bose @  20.10.2008,  18:31 Найти цитируемый пост)
function GetObject(aIndex:integer): TDynArrOfMyObj; reintroduce;

Интересно, где ты нашел метод GetObject в TObjectList у меня твой код не компилиться пишется Undeclared identifier GetObject


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Bose
Дата 20.10.2008, 23:47 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Цитата(Delphist @  20.10.2008,  20:44 Найти цитируемый пост)
Интересно, где ты нашел метод GetObject в TObjectList у меня твой код не компилиться пишется Undeclared identifier GetObject

А головой подумать? 

Замени GetObject на GetItem
PM MAIL WWW Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0889 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.