Главная страница
    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.007 c
1-7928
R_F$29{n}xp
2002-09-20 21:25
2002.10.03
Ограничение Inrenet Explorera!!!


3-7774
greengen
2002-09-14 14:37
2002.10.03
Перенос данных


1-7949
Ionv
2002-09-24 07:57
2002.10.03
Помогите с фурье преобразованиями


3-7771
AM
2002-09-11 12:15
2002.10.03
Выполнение хран. процедуры идет как одна транзакция?


14-8119
race1
2002-09-07 09:50
2002.10.03
табличка





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский