![]() |
#1 |
Участник
|
Напомню синтаксис
NewString := CONVERTSTR(String, FromCharacters, ToCharacters) Заменяет FromCharacters на ToCharacters в String и помещает результат в NewString. Так Должо быть. Но... Во-первых, сразу стал ругаться, что FromCharacters и ToCharacters должны быть одинаковой длинны. Это нормально? Бред какойто. Ладно, обошел с помощью PADSTR. Во-вторых, что гораздо хуже, функция похоже ищет не полное вхождение FromCharacters, а для нее достаточно вхождения какойто ее части, которую она и заменяет. Получается совсем бред. Это не знаю как обойти. Так и должно быть, или я туплю? Можно конечно и свою функцию написать замены подстроки в строке, ног интересн сам факт: баг это, не баг, или у меня глюки? p.s. Navision 3.70 |
|
![]() |
#2 |
Участник
|
это не баг, она так работает.
Если нужен аналог REPLACE в сиквеле - надо писать. У меня где-то была ![]() |
|
![]() |
#3 |
Участник
|
Все правильно она работает. Она ищет в String символы (по символьно) из FromCharacters и заменяет их на соответсвующий (по номеру) из ToCharacters (поэтому и размер требует одинаковый). Очень удобна для перекодировки текста из одной кодировки в другую...
|
|
![]() |
#4 |
Участник
|
Она работает правильно, как в нее закладывали разработчики. Если нужен полноценный REPLACE - то вот я выложил:
http://naviart.ru/vivarium#sqlreplace |
|
![]() |
#5 |
Участник
|
Вот уродство... Сколько ЯП изучил ни в адном такого не видел.
Эх... будем обходить подручными средствами. Всем спасибо. |
|
![]() |
#6 |
Участник
|
Какие такие мегафункции надо писать?
берем STRPOS, STRLEN и COPYSTR скрещиваем, получаем что-то типа: NewString := COPYSTR(OldString, 1, STRPOS(OldString, SubString) -1) + OurSubString + COPYSTR(OldString, STRPOS(OldString, SubString) + STRLEN(SubString)); и радуемся! Вас в школе на уроках труда в младших классах наверняка учили делать всяческие художественные композиции из подножных материалов: листьев, каштанов и пр. ![]() P.S. Только не забываем, что учитывается регистр и STRPOS ищет только первое совпадение, а COPYSTR не любит нулей ... ![]() |
|
![]() |
#7 |
Участник
|
Цитата:
![]() Цитата:
P.S. Только не забываем, что учитывается регистр и STRPOS ищет только первое совпадение, а COPYSTR не любит нулей ...
![]() Назначение - замена всех вхождений указанной строки на новое значение. |
|
![]() |
#8 |
Участник
|
To Технологии как Искусство
Вы что творите, что творите?! Развращаете молодежь?))) Этак они совсем думать перестанут... |
|
![]() |
#9 |
Участник
|
|
|
![]() |
#10 |
MCTS
|
UPD
Перепроверил. Нормально. UPD2 Хотя такую строку не берет tresult:=sqlreplace('00000000001000000000020000000000300000000004000000000050','0','12345678900987654321'); ![]() |
|
![]() |
#11 |
Участник
|
|
|
![]() |
#12 |
Участник
|
Вроде у вас уже 97 сообщений - не новичок
![]() ![]() ![]() Недавно выяснилось, что и аналог STRSUBSTNO надо писать свой, если у вас результат вывода больше 508 (цифру точно не помню) символов. Так что, smoyk, молодежь не развратишь - Navision преподнесет еще не мало поводов потренироваться в написании стандартных ф-й ![]() |
|
![]() |
#13 |
Участник
|
А, не говорите) Давно уже не матерюсь, так, иногда тока по привычке поминаю добрым словом собаку Гейтса и всю его контору)
Амен) |
|