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