Страница 1 из 3
		
			
				Динамические списки записей
				
Добавлено: 
21.08.2020 12:54:46 GAMER
				Есть необходимость держать массив/списки/что-либо для записей. Полями записей являются строки, датавремя, указатели на MySQL-соединения.
В списке нужно добавлять и удалять записи, которые могут быть в середине, а не  в конце списка.
Есть современные решения или делатть классически а-ля стеки, в которых елементом записи является указатель на следующий елемент?
или использовать динамический массив, в котором последний елемент пишеться на место удаляемого, а размер  массива уменьшаеться на 1?
			 
			
		
			
				Re: Динамические списки записей
				
Добавлено: 
21.08.2020 13:40:35 Снег Север
				TList, TobjectList, TClassList...
			 
			
		
			
				Re: Динамические списки записей
				
Добавлено: 
21.08.2020 14:44:56 GAMER
				А как держать записи в них? Записи разной природы (типа).
Добавлено спустя 1 час 32 минуты 1 секунду:
Почитал о TList. Буду пробовать
			 
			
		
			
				Re: Динамические списки записей
				
Добавлено: 
21.08.2020 18:31:55 Снег Север
				К записи можно прицепить любой объект. TobjectList может автоматически удалять объекты при удалении записи (если свойство OwnsObjects True, обычно стоит по дефолту).
			 
			
		
			
				Re: Динамические списки записей
				
Добавлено: 
22.08.2020 09:19:31 olegy123
				
			 
			
		
			
				Re: Динамические списки записей
				
Добавлено: 
22.08.2020 15:38:39 iskander
				GAMER писал(а):А как держать записи в них? Записи разной природы (типа).
Если речь про гетерогенные списки, то есть встроенный тип Variant.
Снег Север писал(а):TList, TobjectList, TClassList...
К сожалению всё перечисленное не обеспечивает вставку/удаление элементов в середину списка за постоянное время.
 
			
		
			
				Re: Динамические списки записей
				
Добавлено: 
22.08.2020 21:35:23 Снег Север
				iskander писал(а):К сожалению всё перечисленное не обеспечивает вставку/удаление элементов в середину списка за постоянное время.
И что с того?
 
			
		
			
				Re: Динамические списки записей
				
Добавлено: 
22.08.2020 22:01:01 iskander
				Снег Север писал(а):И что с того?
Кому?
 
			
		
			
				Re: Динамические списки записей
				
Добавлено: 
23.08.2020 06:23:35 olegy123
				iskander писал(а):К сожалению всё перечисленное не обеспечивает вставку/удаление элементов в середину списка за постоянное время.
TFPList <> TList
TFPList как раз использует механизм связаных цепочек, элемент указывает на следующий элемент, против TList, где используется массив. 
скорость вставки в любом месте не должна быть разной.
говорят есть дженерик TFPGList
 
			
		
			
				Re: Динамические списки записей
				
Добавлено: 
23.08.2020 13:33:34 iskander
				Все упомянутые контейнеры (в том числе TFPGList) конечно же построены на основе массива.
Впрочем, это всё имеет значение только если важна производительность.
Обычно важна.
			 
			
		
			
				Re: Динамические списки записей
				
Добавлено: 
23.08.2020 14:32:29 zub
				LinkedList есть в fcl-stl
			 
			
		
			
				Re: Динамические списки записей
				
Добавлено: 
23.08.2020 15:52:30 Снег Север
				iskander писал(а):Впрочем, это всё имеет значение только если важна производительность.
Обычно важна.
Если это не драйвер, игровой движок, микроконтроллер, то обычно совершенно не важна.
 
			
		
			
				Re: Динамические списки записей
				
Добавлено: 
23.08.2020 16:54:47 iskander
				zub писал(а):LinkedList есть в fcl-stl
А как у него дела с доступом по индексу?
Снег Север писал(а):Если это не драйвер, игровой движок, микроконтроллер, то обычно совершенно не важна.
"Счастливые часов не наблюдают"(c)?
 
			
		
			
				Re: Динамические списки записей
				
Добавлено: 
23.08.2020 17:03:13 Снег Север
				iskander писал(а):"Счастливые часов не наблюдают"(c)?
Умные расставляют правильные приоритеты. Лично я за 30 лет вообще еще не встречал программ, для которых (если это не из приведенного мной выше перечня) скорость работы любого list'а была существенной.
 
			
		
			
				Re: Динамические списки записей
				
Добавлено: 
23.08.2020 17:07:30 iskander
				Ну так и я о том же. 
Полагаю ДатаБазаМордоСтроение?