![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Быстрая обработка текста [D6, Win2k, WinXP]
pelmen © (2002-09-13 20:32:00)У меня такая задача.
Hужно быстро работать с текстом, точнее с текстовыми файлами
Для начала.
Есть пол-мегабайта (в дальнейшем скорей всего разростется до десятков мегабайт)
текстовый файл
на первом этапе его надо обработать (каждую строку разбить на несколько подстрок)
а потом с этими подстроками работать.
Подозреваю что сейчас сделано совсем не по уму, точнее через ж.
Сейчас изначальный файл гружу в TRichEdit
==
fafafa;lllll;bbbbb
gtgtgt;jjjjj;ccccc
wewewe;yyyyy;ttttt
==
на выходе 3 TRichEdit
==
fafafa
gtgtgt
wewewe
==
==
lllll
jjjjj
yyyyy
==
==
bbbbb
ccccc
ttttt
==
с ними и работаю.
т.е. зная номер нужной мне строки я могу обратиться к любому из трех полей исходной строки.
По хорошему надо-бы использовать базу данных для этих целей,
_но_ не уверен что будет быстрей т.к. ничего сложного потом с ними не делаю, просто надо быстро доставть значения полей зная номер строки
и переделывать пока лень, но надо находить более быстрый движок,
а то ну очень дого работает.
И вторая задача:
Шаболонная техника:
Есть файл шаблона в которм ищется спец. слова(например %head%), которые надо заменить на нужный мне кусок текста.
При каждом запросе функции в которой происхоит заполненние шаблонной страницы
я гружу файл шаблона с диска в TRichEdit,
потом циклом прохожусь по всем строкам, ища вхождения спец.слова, при нахождении меняю его на нужный кусок текста.
Опять вопрос: как сделать это быстрее?
Kibitzer (2002-09-23 23:19:00) [1]To Separator
Ну и естественно, что пример зациклится :)))
Separator (2002-09-23 13:42:00) [2]>Есть файл шаблона в которм ищется спец. слова(например %head%), которые надо заменить на нужный мне кусок текста
Target:= "%head%";
string:= "твоя строка содеожащаяя %head%";
source: "вместо %head%";
While POS(Target,string)>0 do
begin
P:= POS(Target,string);
Delete(string,P,Length(Target));
Insert(source, string, P)
end;
REA (2002-09-23 13:29:00) [3]>Есть файл шаблона в которм ищется спец. слова(например %head%), которые надо заменить на нужный мне кусок текста
В Web компонентах есть такая фича - на вход дается HTML с тэгами типа <Head>, и цепляются обработчики на каждый тэг. На выходе тот же HTML, но уже со значениями.
Separator (2002-09-23 13:25:00) [4]Одно замечание. тебе не нужно вообще все жто грузить в память, так как усли файл разрастется до 10 мегабайт, то прикинь скока твоя прога будет жрать ресурсов, так что работай с диском или всеже прейди на какю-нибудь базу данных.
Yuri-7 (2002-09-23 12:21:00) [5]Для начала откажись от RichEdit. Грузи в TStringList, а потом уже можешь использовать QStrings или что угодно.
3asys (2002-09-23 12:18:00) [6]>>pelmen
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1031915428&n=0
Может быть что-нибудь найдете для себя.
С Уважением, 3asys
Леха_ (2002-09-23 12:01:00) [7]еще хорошая библиотека QStrings работает быстрее стандартных фукций(не говоря о том что позволяет делать намного больше)
jones (2002-09-23 11:58:00) [8]попробуй поюзать регулярные выражения (TRegexp), должна работать шустро. в частности позволяет искать по шаблону.
TTCustomDelphiMaster (2002-09-13 21:13:00) [9]Все так туманно...
Оптимизировать ваш алгоритм невозможно, потому что вы не сообщили ничего о глобальной задаче. По этой же причине невозможно предложить вам какой-то другой алгоритм обработки текста.