|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.09.2024, 16:29 | #1 |
Форумчанин
Регистрация: 04.01.2011
Сообщений: 263
|
сохранение строковых данных
Добрый день.
есть следующая ситуация: 1) список строк1 (TStringList), число строк от 1000 до 2000000, формат строки 665:687686:12334456(это пример), где : разделитель 2) список строк2 (TStringList), число строк от 0 до 255, формат строки 12334456(это пример) 3) цикл FOR список1, где отделяется третий параметр (12334456), внутри цикл FOR где выводится строка, если строки в циклах совпадают, тогда строка1 (665:687686:12334456) перезаписывается в хранилище строк с именем третьего параметра (12334456) таким образом может возникнуть до 256 хранилищ с числом строк от 1000 до 140000 строк в каждом. в общем это раздел одного большого массива строк на некоторое количество массивом по заданному параметру (список строк2) вопрос: на основе чего можно сделать такое хранилище строк? TListBox? динамический многомерный массив? что то еще? надо учесть быстродействие, по максимуму необходимо Заранее спасибо за ответы |
22.09.2024, 16:55 | #2 |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,844
|
Для третьего списка строк:
Код:
И, да, нет смысла городить динамические массивы, когда есть специализированный класс для хранения строк, нужно лишь уметь им пользоваться.
В разработке: воспроизводственный контур ИТ
|
22.09.2024, 17:35 | #3 |
Форумчанин
Регистрация: 04.01.2011
Сообщений: 263
|
StringList3.Capacity ???
там вообще может быть сотни новых StringList(для каждого параметра сортировки свой) причем сколько именно заранее неизвестно. хотя... можно конечно и все 256 создать заранее, но это как то не так Код:
Последний раз редактировалось Pcrepair; 22.09.2024 в 17:47. |
22.09.2024, 19:36 | #4 | |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,844
|
Как-то криво прочитал первое сообщение, часть упустил.
Цитата:
В модуле Cntrs есть TObjectList для ответственного хранения списков объектов, в современных версиях Delphi есть какие-то более продвинутые классы через обобщения. Но в рамках одной процедуры можно не морочиться и описать простой массив, даже не динамический, а распределение и освобождение списков выполнять вручную. А индексы фиксированны же? То есть, может быть цвет 1, 10 и 100, а промежуточные пусты? Тогда точно обычный массив. Брать элемент, проверять, не nil ли, создавать, если nil, после чего использовать. Если полученную цветомузыку нужно передавать наружу — можно даже свой класс замутить, ибо фиксированные индексы — особый случай.
В разработке: воспроизводственный контур ИТ
|
|
23.09.2024, 07:18 | #5 | |
Форумчанин
Регистрация: 04.01.2011
Сообщений: 263
|
Цитата:
понятно что есть TObjectList, TList, даже record, TStack, TCollection и... что то еще. но нужно пробовать, проверять. вопрос был к тем кто уже. основной вопрос - быстродействие |
|
23.09.2024, 09:22 | #6 |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,844
|
Быстродействие чего? Про установку Capacity я уже сказал. По умолчанию там совсем маленькое значение — 8 то ли 16, при превышении увеличивается в 2 раза. Если для результирующих списков выставить сразу LstHWColor.Count div 255 — должна быть явная экономия на перераспределениях с копированием, особенно на начальном росте. Минус — повышенный расход памяти (хотя и не такой повышенный — при сегодняшних объемах-то; там тупо значение, умноженное на 4 байта указателя), если списки каких-то значений окажутся короткими.
Быстродействие у них плюс-минус должно быть одинаковое, а TCollection не подходит, он не для этого.
В разработке: воспроизводственный контур ИТ
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Обработка строковых данных | Антон1111 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 4 | 22.03.2012 15:07 |
обработка строковых данных (на C) | zZzzZzzzzzzzzz | Помощь студентам | 3 | 08.02.2012 15:21 |
обработка строковых данных | chainik1 | Помощь студентам | 0 | 12.12.2010 11:42 |
Обработка строковых данных | locdoc | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 06.12.2010 17:28 |
Обработка строковых данных | >>arty<< | Помощь студентам | 4 | 15.01.2010 23:07 |