Форум: "Начинающим";
Текущий архив: 2011.03.06;
Скачать: [xml.tar.bz2];
ВнизTStringList vs. TList<string> Найти похожие ветки
← →
TObject (2010-12-14 15:44) [0]В рамках метода собственного класса необходимо получить и хранить отсортированный по году список имен файлов формата log_<день>_<месяц>_<год>. Что посоветуете использовать:
TStringList
илиTList<string>
?
← →
И. Павел © (2010-12-14 15:57) [1]var list: array of TDateTime;
← →
Jeer © (2010-12-14 16:00) [2]Ну и чем TStringList не устраивает ?
← →
И. Павел © (2010-12-14 16:01) [3]
> В рамках метода собственного класса необходимо получить и хранить
А вот это я не понял... Если в C++ что-то нужно хранить "в рамках метода", используют статические переменные. Но вряд ли это то что нужно в этом случае.
← →
Jeer © (2010-12-14 16:01) [4]Если же еще надо искать, то THashedStringList
← →
TObject (2010-12-14 16:10) [5]
> А вот это я не понял...
Вызывается метод. В нем я получаю список имен файлов из папки (FindFirst, FindNext), сортирую по месяцу и году, далее далее что-то делаю и удаляю список, т.о. список создается и уничтожается в рамках метода (временный
).
> Ну и чем TStringList не устраивает ?
что в TStingList, что в TList<string> самому нужно писать сортировку. TStringList сортирует по алфавиту. + в TStringList дофига методов которые мне не нужны вообще. Поэтому склоняюсь больше к TList<string>
← →
И. Павел © (2010-12-14 16:17) [6]Зачем хранить строки, если можно обойтись числами (датами). Такой механизм будет работать быстрее. Вместо сортировки - бинарный поиск и вставка даты после очередного FindNext.
А строки можно получать уже при обработке этого массива.
← →
Jeer © (2010-12-14 16:18) [7]А.. я не обратил внимание на необходимость сортировки по году.
Ну.. опять же, перейти к варианту TStringList в режиме словаря
"год" = "имя_файла"
Или же нужна сортировка год, месяц, день, что логично ?
← →
sniknik © (2010-12-14 16:21) [8]> Что посоветуете использовать: TStringList или TList<string>?
TADO/TClientDatased / TMemoryTable.
← →
Anatoly Podgoretsky © (2010-12-14 16:23) [9]> TObject (14.12.2010 15:44:00) [0]
Имена файлов это строка, а с TList ты возможно споткнешься со временем жизни
строки.
← →
TObject (2010-12-14 16:35) [10]
> Зачем хранить строки, если можно обойтись числами (датами).
> Такой механизм будет работать быстрее. Вместо сортировки
> - бинарный поиск и вставка даты после очередного FindNext.
>
>
> А строки можно получать уже при обработке этого массива.
>
а как мне быстро выцеплять после очередного FindNext месяц и год из имени файла. Для каждого найденного файла делать Copy, Pos? Или лучше заюзать регэкспы.
← →
Anatoly Podgoretsky © (2010-12-14 16:37) [11]А надо из имени или из даты файла
← →
TObject (2010-12-14 16:40) [12]по тз файлы имеют формат log_<день>_<месяц>_<год>.log
Пример:
log_14_11_2010.log
log_13_12_2010.log
log_14_12_2010.log
← →
Германн © (2010-12-14 17:03) [13]
> по тз файлы имеют формат log_<день>_<месяц>_<год>.log
>
А надо было бы log_<год>_<месяц>_<день>.log
← →
И. Павел © (2010-12-14 17:04) [14]
> а как мне быстро выцеплять после очередного FindNext месяц
> и год из имени файла. Для каждого найденного файла делать
> Copy, Pos? Или лучше заюзать регэкспы.
Если месяц и год занимают строго два символа (например 01, 05), то достаточно одного Copy. А иначе - искать символы "_" и выделять числа между ними - что, наверное, проще сделать простым проходом строки в цикле, чем комбинацией с pos. Все равно, даже при использовании StringList, придется выделять дату для сортировки, так что без этого не обойтись.
Регулярные выражения для такой простой операции слишком тяжелые и медлительные.
← →
Ega23 © (2010-12-14 17:09) [15]При больших объёмах данных StringList будет тормозить.
Бери обычный TList и дихотомией фигач туда Pointer(Value);
← →
Anatoly Podgoretsky © (2010-12-14 19:15) [16]> TObject (14.12.2010 16:40:12) [12]
А нельзя ли сделать формат log_гггг_мм_дд.log
Тогда и сортировать нечего, stringlist сам это сделает.
← →
_Юрий (2010-12-14 19:37) [17]
> В рамках метода собственного класса необходимо получить
> и хранить отсортированный по году список имен файлов формата
> log_<день>_<месяц>_<год>. Что посоветуете использовать:
> TStringList или TList<string>?
TDictionary<string, TDateTime>
← →
DVM © (2010-12-14 23:08) [18]Щас придет Медвежонок и объяснит, что на самом деле лучше.
← →
Jeer © (2010-12-15 10:46) [19]Когда-то давно тестировал способы представления данных в словарях TStringList, THashedStringList и TStringDictionary (DF).
Т.е.
lst.Value["Key"] := "Value";
и тд
Результаты остались и привожу:
Время (сек) формирования словаря ( отсортированного ) емкостью N килослов, приведенное к частоте 1 ГГц:
t = (1/F)*(A + B*N + C*N^2)
TStringList
A = 0.36
B = 0.08
C = 1.14
THashedList
A = 0.03
B = 0.19
C = 1.93
К примеру, на 1000 слов имеем 1.3 и 1.8 сек соответственно.
Для TStringDictionary все на порядок лучше, вдобавок функция линейна
t = (1/F)*2.45*N; [msec]
Т.е. для 1000 слов имеем 2.45 мс, приведенные к частоте 1ГГц.
← →
clickmaker © (2010-12-15 11:23) [20]> что на самом деле лучше
xml? -)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.03.06;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.003 c