Форум: "Основная";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];
ВнизParser. Как сделать быстрее и с минимальной затратой памяти? Найти похожие ветки
← →
Cosinus © (2005-02-10 10:23) [0]Есть некоторый файл(100К мах), который необходимо раcпарсить. Что я хочу сделать:
1) Загружаю его вMem:=TMemoryStream.Create
2)GetMem(Buffer,Mem.Size)
3)Mem.Free
и далее по всему дереву процедур и функций парсинга, в качестве параметра передаю Buffer (например функция нахождения определеных байт, с возвращаемым параметромpBytePos = ^(array of SomeRecord)
(начало и конец некоторого блока), которая в свою очередь вызывается из функции разбиения на блоки и т.д.
Я ни разу с этим не сталкивался, и прошу помощи у мастеров. Как органичнее это сделать? Может я вообще не туда пошел?
← →
Cosinus © (2005-02-10 10:25) [1]Гы. Забыл прочитать
Mem.Read(Buffer,Mem.Size)
← →
TUser © (2005-02-10 10:28) [2]Непонятно - зачем из потока в какой-то буфер писать? Да и вообще - мало чего понятно, если честно.
← →
Cosinus © (2005-02-10 10:33) [3]
> TUser © (10.02.05 10:28) [2]
Так может тогда и работать сTMemoryStream
?
И ни писать ни в какой buffer?
← →
Anatoly Podgoretsky © (2005-02-10 10:37) [4]Так может работать с буфером и не использовать никакой TMemoryStream
← →
Cosinus © (2005-02-10 10:43) [5]Хорошо :) Я понял.
Буду благодарен за грамотные статьи с примерами на дельфи по парсингу.
← →
TUser © (2005-02-10 10:47) [6]
> Так может тогда и работать с TMemoryStream?
> И ни писать ни в какой buffer?
Вот и я о том же. А по поводу примеров - ты даже не сказал, что такое ты парсишь. По ходу дела я так понял, что бинарник (хотя не уверен). В принцыпе дело можно было бы организовать и в виде конечного автомата + стек (я так понимаю, что у тебя там какое-то дерево хранится).
← →
Cosinus © (2005-02-10 10:49) [7]
> TUser © (10.02.05 10:47) [6]
Угу. Бинарник.
Угу. Дерево. :)))
Спасибо за совет, буду разбираться.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.042 c