![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Замена слов в массиве
Vikindos © (2008-07-14 18:49:00)Доброго времени суток. У меня такой вопрос, нет ли у кого функции замены слов в массиве char.
Предположим есть массив
mas : array[0..50000] of char;
И мне надо заменить в нем слово "управление", на слово "проводка".
А конечно в идеале бы так.
Предположим есть массив
mas : array[0..50000] of char;
И мне надо заменить в нем слова со слова "управление" по слово "право", на слово "проводка".
GrayFace (2008-07-19 00:49:00) [1]Покажи код
Vikindos (2008-07-19 00:21:00) [2]всем спасибо, справился сам. pchar
Vikindos (2008-07-18 23:57:00) [3]Я так понял, function RSStringReplace , что-то сложно x(
GrayFace (2008-07-18 20:59:00) [4]Держи: http://www.grayface.nm.ru/RSStringReplace.rar
SysUtils из uses, наверное, можно выкинуть.
Vikindos © (15.07.08 8:42) [29]
StringReplace() работает с массивом чар? может заменить от и до?
string - самый лучший массив char'ов. По-моему, на Королевстве Delphi была хорошая статья про динамические массивы - поищи.
А обычный StringReplace() тебе не подайдет, т.к. очень неоптимален.
Сергей М. (2008-07-15 09:50:00) [5]
> Vikindos © (15.07.08 08:42) [29]
>
> StringReplace() работает с массивом чар?
Работает.
Sha (2008-07-15 09:10:00) [6]> Riply © (15.07.08 05:27) [24]
> Уже надоело слушать жалобы "обыскал весь интернет - готового решения не нашел".
Даже этого не сделано.
brother (2008-07-15 08:44:00) [7]> Напиши свой аналогStringReplace()
для твоего случая
Vikindos (2008-07-15 08:42:00) [8]StringReplace() работает с массивом чар? может заменить от и до?
Loginov Dmitry (2008-07-15 07:52:00) [9]> Я про выполнение, надо как можно быстрее, замен много.
Тогда причем тут требование про uses Windows? Наличие дополнительных подключенных модулей врядли будет влиять на скорость выполнения кода.
Напиши свой аналог StringReplace() для твоего случая (реально сделать в сотни раз быстрее). Тем более буферы у тебя уже подготовлены. Два цикла while и немного кода - и все готово.
palva (2008-07-15 07:13:00) [10]
> > я понял, мне тут вообще не помогут.
Ну на ваш заглавный вопрос ответить просто: такой функции не существует, поскольку вопрос не корректный. Просьбы дать пояснения вы игнорируете.
brother (2008-07-15 06:42:00) [11]> я понял, мне тут вообще не помогут.
натолкнуть на умные мысли - да..
зы готовый код денег стоит...
Riply (2008-07-15 05:30:00) [12]> [24] Riply © (15.07.08 05:27)
"Сдвигаемся на размер "управление" и бежим дальше"
Имелось ввиду сдвигаемся от того места, куда добежали, а не от pLast.
Riply (2008-07-15 05:27:00) [13]> [15] Vikindos © (15.07.08 01:54)
> я понял, мне тут вообще не помогут.
А самому чуть подумать лень ? Уже надоело слушать жалобы "обыскал весь интернет - готового решения не нашел".
Можно поступить, примерно так:
Бежим по массиву, находим "управление", делаем Move в него "проводка",
запоминаем указатель pLast на окончание "проводка".
Бежим до следующего "управление". Move`им кусок, который пробежали в pLast.
Дописываем "проводка". Запоминаем pLast на окончание "проводка". Сдвигаемся на размер "управление" и бежим дальше.
и т.д.
Итого: один цикл и одна функция Move - все чем надо уметь пользоваться.
(ну может еще придется написать ф-ию сравнения)
Vikindos (2008-07-15 03:02:00) [14]Я про выполнение, надо как можно быстрее, замен много.
Германн (2008-07-15 02:34:00) [15]
> Vikindos © (15.07.08 02:18) [21]
>
> Это мне кажется будет дольше, если я верно понял, как это
> реализовать. (сомнение)
>
Это тебе решать.
Vikindos (2008-07-15 02:18:00) [16]Это мне кажется будет дольше, если я верно понял, как это реализовать. (сомнение)
KilkennyCat (2008-07-15 02:15:00) [17]гы :) у меня тож коллапс нечистот... посмотрим, во что утром выльется... на нобелевку не потянем, конечно, но нативеый доступ к мдэшнику я все-таки замутю...
А вот я бы работал с байтами. Я строки, чары ваще не люблю.
Vikindos (2008-07-15 02:11:00) [18]коллапс нечистот в моем сознание все равно выплеснет это в программный код. Пока что сдела через pchar
KilkennyCat (2008-07-15 02:09:00) [19]
> Vikindos © (15.07.08 02:01) [17]
> ну значит придется самому писать. xD
Может, не надо, а? Итак энтропия, коллайдер опять же...
Vikindos (2008-07-15 02:01:00) [20]ну значит придется самому писать. xD