Вниз
Скачать: CL | DM;

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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.023 c
10-1084254746
Niko4543
2004-05-11 09:52
2005.02.27
Word


4-1104885929
Soft
2005-01-05 03:45
2005.02.27
Динамическая загрузка кода в свой процесс.


3-1106826258
Layner
2005-01-27 14:44
2005.02.27
Как установить "SET DATEFORMAT dmy" на сервере MSSQL из программы


14-1107436677
Delta
2005-02-03 16:17
2005.02.27
Сим Сим откройся


3-1107013435
neat
2005-01-29 18:43
2005.02.27
dbExpress. Ошибка в параметре запроса




   Наверх