Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.10.03;
Скачать: [xml.tar.bz2];

Вниз

Быстрая обработка текста   Найти похожие ветки 

 
pelmen   (2002-09-13 20:32) [0]

У меня такая задача.
Hужно быстро работать с текстом, точнее с текстовыми файлами

Для начала.
Есть пол-мегабайта (в дальнейшем скорей всего разростется до десятков мегабайт)
текстовый файл
на первом этапе его надо обработать (каждую строку разбить на несколько подстрок)

а потом с этими подстроками работать.

Подозреваю что сейчас сделано совсем не по уму, точнее через ж.
Сейчас изначальный файл гружу в TRichEdit
==
fafafa;lllll;bbbbb
gtgtgt;jjjjj;ccccc
wewewe;yyyyy;ttttt
==
на выходе 3 TRichEdit
==
fafafa
gtgtgt
wewewe
==
==
lllll
jjjjj
yyyyy
==
==
bbbbb
ccccc
ttttt
==

с ними и работаю.
т.е. зная номер нужной мне строки я могу обратиться к любому из трех полей исходной строки.
По хорошему надо-бы использовать базу данных для этих целей,
_но_ не уверен что будет быстрей т.к. ничего сложного потом с ними не делаю, просто надо быстро доставть значения полей зная номер строки

и переделывать пока лень, но надо находить более быстрый движок,
а то ну очень дого работает.


И вторая задача:
Шаболонная техника:
Есть файл шаблона в которм ищется спец. слова(например %head%), которые надо заменить на нужный мне кусок текста.
При каждом запросе функции в которой происхоит заполненние шаблонной страницы
я гружу файл шаблона с диска в TRichEdit,
потом циклом прохожусь по всем строкам, ища вхождения спец.слова, при нахождении меняю его на нужный кусок текста.

Опять вопрос: как сделать это быстрее?


 
TTCustomDelphiMaster   (2002-09-13 21:13) [1]

Все так туманно...
Оптимизировать ваш алгоритм невозможно, потому что вы не сообщили ничего о глобальной задаче. По этой же причине невозможно предложить вам какой-то другой алгоритм обработки текста.


 
jones   (2002-09-23 11:58) [2]

попробуй поюзать регулярные выражения (TRegexp), должна работать шустро. в частности позволяет искать по шаблону.


 
Леха_   (2002-09-23 12:01) [3]

еще хорошая библиотека QStrings работает быстрее стандартных фукций(не говоря о том что позволяет делать намного больше)


 
3asys   (2002-09-23 12:18) [4]

>>pelmen
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1031915428&n=0
Может быть что-нибудь найдете для себя.

С Уважением, 3asys


 
Yuri-7   (2002-09-23 12:21) [5]

Для начала откажись от RichEdit. Грузи в TStringList, а потом уже можешь использовать QStrings или что угодно.


 
Separator   (2002-09-23 13:25) [6]

Одно замечание. тебе не нужно вообще все жто грузить в память, так как усли файл разрастется до 10 мегабайт, то прикинь скока твоя прога будет жрать ресурсов, так что работай с диском или всеже прейди на какю-нибудь базу данных.


 
REA   (2002-09-23 13:29) [7]

>Есть файл шаблона в которм ищется спец. слова(например %head%), которые надо заменить на нужный мне кусок текста

В Web компонентах есть такая фича - на вход дается HTML с тэгами типа <Head>, и цепляются обработчики на каждый тэг. На выходе тот же HTML, но уже со значениями.


 
Separator   (2002-09-23 13:42) [8]

>Есть файл шаблона в которм ищется спец. слова(например %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;


 
Kibitzer   (2002-09-23 23:19) [9]

To Separator
Ну и естественно, что пример зациклится :)))



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.10.03;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.008 c
1-8034
FleX
2002-09-22 15:14
2002.10.03
Как поместить иконки в Popup Menu


14-8177
Сергей Суровцев
2002-09-06 20:14
2002.10.03
Народ, американский флаг никто не брал?


1-8049
Карлсон
2002-09-22 15:05
2002.10.03
преобразование времени.


1-7978
Осирис
2002-09-20 14:18
2002.10.03
Отладка VCL


8-8066
Good Man
2002-06-04 21:49
2002.10.03
Проблемы с изменением разрешения экрана (Delphi 5)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский