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

Вниз

Нужна функция поиска и замены   Найти похожие ветки 

 
SergP ©   (2004-07-10 21:11) [0]

Нужна функция поиска и замены без учета регистра.

Я писал нечто с использованием AnsiUpperCase, pos, delete, insert
но этот вариант мне не нравится, так как функция должна работать как можно быстрее (обрабатываются большие строки с большим кол-вом замен)

Может кто что-нить может предложить толковое? Типа может есть стандартные функции для этого, или может кто сам писал?


 
Огромное Кулясищще ©   (2004-07-10 21:19) [1]

Может FastStrings подойдёт


 
SergP ©   (2004-07-10 21:31) [2]


> Может FastStrings подойдёт


Где это есть?


 
AD_infiniTUM   (2004-07-10 21:43) [3]

В D7 (незнаю как D6), в SysUtils есть функция StringReplace, четвертым параметром можно установить флаг, чтобы не учитывался регистр. Но мне почему-то не получилось заставить ее работать (Delphi ругается на этот черветый параметр, не понял что он хочет).


 
SergP ©   (2004-07-10 22:00) [4]


>  [3] AD_infiniTUM   (10.07.04 21:43)


Спасибо. В D6 она есть в SysUtils.
Проверил, Все работает...


 
MBo ©   (2004-07-11 12:11) [5]

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


 
SergP ©   (2004-07-11 12:59) [6]


>  [5] MBo ©   (11.07.04 12:11)

Закачал FastStrings

А кто-нить может сказать насколько функции этой библиотеки эффективнее стандартных?


 
SergP ©   (2004-07-11 13:04) [7]

Хм... На ихнем сайте нашел:

FastStrings
FREE: A useful set of assembly optimised string manipulation routines. The most remarkable of these is without a doubt the FastReplace function. StringReplace took over 8 hours to complete multiple replacements on a 10mb string, whereas FastReplace took 0.5 seconds (yes, half of a second).

Что-то не верится. 8 часов и пол-секунды....???


 
MBo ©   (2004-07-11 13:25) [8]

>SergP
На ОЧЕНЬ длинных строках Pos, а особенно StringReplace работают действительно медленно. Насколько это скажется в твоих обтоятельствах- не знаю.
сюда еще загляни.
http://dennishomepage.gugs-cats.dk/FastCodeProject.htm


 
Igorek ©   (2004-07-11 15:38) [9]


> StringReplace took over 8 hours to complete multiple replacements
> on a 10mb string, whereas FastReplace took 0.5 seconds (yes,
> half of a second).
>
> Что-то не верится. 8 часов и пол-секунды....???

Очень может быть.
- тестировалось на ОЧЕНЬ быстром процессоре
- алгоритм StringReplace превысил обьем оперативки и из-за свопирования оно еле ползло
- пример для тестирования был оптимизирован для FastReplace :-)))


 
KilkennyCat ©   (2004-07-11 15:54) [10]


> Igorek ©   (11.07.04 15:38) [9]


Думаю, что тестировалось на одном и том же процессоре, на одном и том же примере.


 
MBo ©   (2004-07-11 16:01) [11]

>Igorek ©   (11.07.04 15:38) [9]
Достаточно посмотреть в исходниках, как сделана StringReplace - c использованием сложения новой строки из кусков - при множествнных заменах - это многократное выделение памяти.


 
Igorek ©   (2004-07-11 16:43) [12]


> Думаю, что тестировалось на одном и том же процессоре, на
> одном и том же примере.

Кстати неочевидно. Для демонстрации преимуществ они могли для FastString дать даже хуже процессор и пример. Хотя обычно так не делают.


> MBo ©   (11.07.04 16:01) [11]
> >Igorek ©   (11.07.04 15:38) [9]
> Достаточно посмотреть в исходниках, как сделана StringReplace
> - c использованием сложения новой строки из кусков - при
> множествнных заменах - это многократное выделение памяти.

Понятно. Тормозило на динамическом выделении памяти как я понимаю. Но для полного анализа надо также исходники FastString.



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

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

Наверх





Память: 0.47 MB
Время: 0.194 c
1-1089382208
MadGhost
2004-07-09 18:10
2004.07.25
Как сделать PREVIEW у TPrinter???


3-1088175347
Alibaba
2004-06-25 18:55
2004.07.25
sp_who


3-1088843361
YurikGL
2004-07-03 12:29
2004.07.25
Путь к базе Interbase


3-1088619879
Zlod3y
2004-06-30 22:24
2004.07.25
Окно ввода логина и пароля при подключении к алиасу в ODBC


1-1089578313
TechnoDreamer
2004-07-12 00:38
2004.07.25
Как убрать border у PageControl?





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