![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Frikazoid |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 424 Регистрация: 29.3.2002 Репутация: 1 Всего: 2 |
Привет Всем!
У меня возникла одна проблема. Мне нужно заменить в строке S все вхождения строки S1 на строку S2 К примеру так replace('abcddddabcdmmmmabcd','abcd','dcba'); А вот и мой код: function replace(s,p1,p2:string):string; var i,l1,l2:integer; begin l1:=length(p1); l2:=length(s); repeat i:=ansipos(p1,s); if i=0 then break; s:=copy(s,1,i-1)+p2+copy(s,i+l1,l2); until i=0; replace:=s; end; Она хорошо работает, но есть одно НО, она шикарно тормозит, особенно если строка больше 30Kb, а если строка больше 400КВ, то комп ваще виснит. Помогите плз оптимизировать. Заранее спасибо. -------------------- RTFM - "Всё для программиста" Это уменя есть сайт! Урыл в профайле! А там.... Ну всё что надо по PHP Delphi CSS HTML JavaScript Perl API ASP MySQL XML С++ VBasic и многое другое. |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: нет Всего: 12 |
Уж не знаю, на скоко это оптимизирует... но ИМХО, сморится лучше...
function replace(s, p1,p2:String):string; var i, l1, l2:integer; Begin l1:=length(p1); l2:=length(s); for i := 1 to (l2-l1)+1 do begin if (CompareMem(@s[i], @p1[1], l1)) then CopyMemory(@s[i], @p2[1], l1); end; replace:=s; end; -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
А зачем? Если есть стандартная функция StringReplace?
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
Song |
|
|||
![]() Sysman.ru ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1095 Регистрация: 2.6.2002 Репутация: 2 Всего: 4 |
![]() -------------------- Прежде чем сказать "Невозможно", подумай, прав ли ты |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: нет Всего: 12 |
Всегда интересней изобрести свое колесо... а) из-за незнания, что колесо уже изобретено... б) нужно колесо определенной формы (под конкретную задачу, а не универсальное) в) процесс изобретения колеса приносит наслаждение, а также добавляет опыт по изобретению колес. -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
Frikazoid |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 424 Регистрация: 29.3.2002 Репутация: 1 Всего: 2 |
Baa, ты прав! Мне доставляет большое удовольствие изобретение колёс.
На самом деле я просто не знал, что такая фун-я существует. Точнее Я искал её, но не нашёл! У меня просто нет справочника по фун-ям ![]() Спасибо всем за участие! -------------------- RTFM - "Всё для программиста" Это уменя есть сайт! Урыл в профайле! А там.... Ну всё что надо по PHP Delphi CSS HTML JavaScript Perl API ASP MySQL XML С++ VBasic и многое другое. |
|||
|
||||
Song |
|
|||
![]() Sysman.ru ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1095 Регистрация: 2.6.2002 Репутация: 2 Всего: 4 |
-------------------- Прежде чем сказать "Невозможно", подумай, прав ли ты |
|||
|
||||
Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
-------------------- |
|||
|
||||
Ramstar |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 7.12.2002 Репутация: нет Всего: 1 |
да изврат, а можно было проще пребрать на ассемблере и памяти меньше и скорость больше
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |