Форум: "Начинающим";
Текущий архив: 2008.08.24;
Скачать: [xml.tar.bz2];
ВнизЗамена слов в массиве Найти похожие ветки
← →
Vikindos © (2008-07-14 18:49) [0]Доброго времени суток. У меня такой вопрос, нет ли у кого функции замены слов в массиве char.
Предположим есть массив
mas : array[0..50000] of char;
И мне надо заменить в нем слово "управление", на слово "проводка".
А конечно в идеале бы так.
Предположим есть массив
mas : array[0..50000] of char;
И мне надо заменить в нем слова со слова "управление" по слово "право", на слово "проводка".
← →
Palladin © (2008-07-14 18:57) [1]есть конечно, StringReplace + F1
← →
Vikindos © (2008-07-14 19:14) [2]Дело в том, что я использую только
uses
windows
← →
Palladin © (2008-07-14 19:19) [3]жалко...
← →
Smile (2008-07-14 19:29) [4]>Palladin © (14.07.08 19:19) [3]
жалко...
мне тоже
>Vikindos © (14.07.08 18:49)а предположим
каким образом ты собираешься "сказать" своему приложению, что на что ты собираешься заменять (использую только Windows)?
← →
Denis__ © (2008-07-14 19:48) [5]
> И мне надо заменить в нем слово "управление", на слово "проводка".
А оставшиеся символы должны сдвинуться?
← →
Vikindos © (2008-07-14 19:57) [6]Да, остальные должны сдвинуться, массив с запасом.
Может с памятью работать?.. нужен пример.
← →
tesseract © (2008-07-14 20:02) [7]
> Может с памятью работать?.. нужен пример.
GetMem/FreeMem ? Или посмотреть реализацию StringReplace ?
← →
Vikindos © (2008-07-14 20:55) [8]GetMem/FreeMem. Если StringReplace может такие действия делать с чар, то ведь можно оттуда взять функции и переделать под uses windows;
← →
Johnmen © (2008-07-14 21:34) [9]
> переделать под uses windows
Что это Бэрримор? (c)
← →
palva © (2008-07-14 21:48) [10]
> И мне надо заменить в нем слова со слова "управление" по
> слово "право", на слово "проводка".
Можете пояснить, какие слова входят в диапазон "управление".."право"
← →
Loginov Dmitry © (2008-07-14 22:27) [11]> Дело в том, что я использую только
>
> uses
> windows
Религия?
← →
Игорь Шевченко © (2008-07-14 22:31) [12]можно даже не использовать uses Windows для такой замены.
← →
Vikindos © (2008-07-15 00:57) [13]Оффтоп!
"управление".."право" другие слова.
Использую только uses windows; нужна полная оптимизация, быстрота и лёгкость.
← →
Юрий Зотов © (2008-07-15 01:15) [14]> Vikindos © (15.07.08 00:57) [13]
> нужна полная оптимизация, быстрота и лёгкость.
Требования несовместимы.
← →
Vikindos © (2008-07-15 01:54) [15]я понял, мне тут вообще не помогут.
← →
Германн © (2008-07-15 02:00) [16]
> Vikindos © (15.07.08 01:54) [15]
>
> я понял, мне тут вообще не помогут.
>
Эт точно, Ни у кого тут нет волшебной палочки.
P.S. Ну насколько прозорлив был Н.Носов, когда писал "Незнайка в Солнечном городе".
← →
Vikindos © (2008-07-15 02:01) [17]ну значит придется самому писать. xD
← →
KilkennyCat © (2008-07-15 02:09) [18]
> Vikindos © (15.07.08 02:01) [17]
> ну значит придется самому писать. xD
Может, не надо, а? Итак энтропия, коллайдер опять же...
← →
Vikindos © (2008-07-15 02:11) [19]коллапс нечистот в моем сознание все равно выплеснет это в программный код. Пока что сдела через pchar
← →
KilkennyCat © (2008-07-15 02:15) [20]гы :) у меня тож коллапс нечистот... посмотрим, во что утром выльется... на нобелевку не потянем, конечно, но нативеый доступ к мдэшнику я все-таки замутю...
А вот я бы работал с байтами. Я строки, чары ваще не люблю.
← →
Vikindos © (2008-07-15 02:18) [21]Это мне кажется будет дольше, если я верно понял, как это реализовать. (сомнение)
← →
Германн © (2008-07-15 02:34) [22]
> Vikindos © (15.07.08 02:18) [21]
>
> Это мне кажется будет дольше, если я верно понял, как это
> реализовать. (сомнение)
>
Это тебе решать.
← →
Vikindos © (2008-07-15 03:02) [23]Я про выполнение, надо как можно быстрее, замен много.
← →
Riply © (2008-07-15 05:27) [24]> [15] Vikindos © (15.07.08 01:54)
> я понял, мне тут вообще не помогут.
А самому чуть подумать лень ? Уже надоело слушать жалобы "обыскал весь интернет - готового решения не нашел".
Можно поступить, примерно так:
Бежим по массиву, находим "управление", делаем Move в него "проводка",
запоминаем указатель pLast на окончание "проводка".
Бежим до следующего "управление". Move`им кусок, который пробежали в pLast.
Дописываем "проводка". Запоминаем pLast на окончание "проводка". Сдвигаемся на размер "управление" и бежим дальше.
и т.д.
Итого: один цикл и одна функция Move - все чем надо уметь пользоваться.
(ну может еще придется написать ф-ию сравнения)
← →
Riply © (2008-07-15 05:30) [25]> [24] Riply © (15.07.08 05:27)
"Сдвигаемся на размер "управление" и бежим дальше"
Имелось ввиду сдвигаемся от того места, куда добежали, а не от pLast.
← →
brother © (2008-07-15 06:42) [26]> я понял, мне тут вообще не помогут.
натолкнуть на умные мысли - да..
зы готовый код денег стоит...
← →
palva © (2008-07-15 07:13) [27]
> > я понял, мне тут вообще не помогут.
Ну на ваш заглавный вопрос ответить просто: такой функции не существует, поскольку вопрос не корректный. Просьбы дать пояснения вы игнорируете.
← →
Loginov Dmitry © (2008-07-15 07:52) [28]> Я про выполнение, надо как можно быстрее, замен много.
Тогда причем тут требование про uses Windows? Наличие дополнительных подключенных модулей врядли будет влиять на скорость выполнения кода.
Напиши свой аналог StringReplace() для твоего случая (реально сделать в сотни раз быстрее). Тем более буферы у тебя уже подготовлены. Два цикла while и немного кода - и все готово.
← →
Vikindos © (2008-07-15 08:42) [29]StringReplace() работает с массивом чар? может заменить от и до?
← →
brother © (2008-07-15 08:44) [30]> Напиши свой аналог StringReplace()
для твоего случая
← →
Sha © (2008-07-15 09:10) [31]> Riply © (15.07.08 05:27) [24]
> Уже надоело слушать жалобы "обыскал весь интернет - готового решения не нашел".
Даже этого не сделано.
← →
Сергей М. © (2008-07-15 09:50) [32]
> Vikindos © (15.07.08 08:42) [29]
>
> StringReplace() работает с массивом чар?
Работает.
← →
GrayFace © (2008-07-18 20:59) [33]Держи: http://www.grayface.nm.ru/RSStringReplace.rar
SysUtils из uses, наверное, можно выкинуть.
Vikindos © (15.07.08 8:42) [29]
StringReplace() работает с массивом чар? может заменить от и до?
string - самый лучший массив char"ов. По-моему, на Королевстве Delphi была хорошая статья про динамические массивы - поищи.
А обычный StringReplace() тебе не подайдет, т.к. очень неоптимален.
← →
Vikindos © (2008-07-18 23:57) [34]Я так понял, function RSStringReplace , что-то сложно x(
← →
Vikindos © (2008-07-19 00:21) [35]всем спасибо, справился сам. pchar
← →
GrayFace © (2008-07-19 00:49) [36]Покажи код
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.08.24;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.057 c