AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.05.2008, 11:39   #1  
smoyk is offline
smoyk
Участник
 
188 / 13 (1) ++
Регистрация: 20.04.2007
Напомню синтаксис
NewString := CONVERTSTR(String, FromCharacters, ToCharacters)
Заменяет FromCharacters на ToCharacters в String и помещает результат в NewString. Так Должо быть. Но...
Во-первых, сразу стал ругаться, что FromCharacters и ToCharacters должны быть одинаковой длинны. Это нормально? Бред какойто. Ладно, обошел с помощью PADSTR.
Во-вторых, что гораздо хуже, функция похоже ищет не полное вхождение FromCharacters, а для нее достаточно вхождения какойто ее части, которую она и заменяет. Получается совсем бред. Это не знаю как обойти. Так и должно быть, или я туплю?

Можно конечно и свою функцию написать замены подстроки в строке, ног интересн сам факт: баг это, не баг, или у меня глюки?

p.s. Navision 3.70
Старый 12.05.2008, 12:07   #2  
Технологии как Искусство is offline
Технологии как Искусство
Участник
 
37 / 10 (1) +
Регистрация: 04.02.2008
это не баг, она так работает.
Если нужен аналог REPLACE в сиквеле - надо писать. У меня где-то была
Старый 12.05.2008, 12:28   #3  
HLS is offline
HLS
Участник
 
37 / 10 (1) +
Регистрация: 18.04.2008
Все правильно она работает. Она ищет в String символы (по символьно) из FromCharacters и заменяет их на соответсвующий (по номеру) из ToCharacters (поэтому и размер требует одинаковый). Очень удобна для перекодировки текста из одной кодировки в другую...
Старый 12.05.2008, 12:49   #4  
Технологии как Искусство is offline
Технологии как Искусство
Участник
 
37 / 10 (1) +
Регистрация: 04.02.2008
Она работает правильно, как в нее закладывали разработчики. Если нужен полноценный REPLACE - то вот я выложил:
http://naviart.ru/vivarium#sqlreplace
Старый 12.05.2008, 12:53   #5  
smoyk is offline
smoyk
Участник
 
188 / 13 (1) ++
Регистрация: 20.04.2007
Вот уродство... Сколько ЯП изучил ни в адном такого не видел.
Эх... будем обходить подручными средствами.
Всем спасибо.
Старый 12.05.2008, 13:44   #6  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Какие такие мегафункции надо писать?

берем 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  
Технологии как Искусство is offline
Технологии как Искусство
Участник
 
37 / 10 (1) +
Регистрация: 04.02.2008
Цитата:
Сообщение от Fordewind Посмотреть сообщение
Вас в школе на уроках труда в младших классах наверняка учили делать всяческие художественные композиции из подножных материалов: листьев, каштанов и пр.
Зачем переходить на личности, коллега?

Цитата:
P.S. Только не забываем, что учитывается регистр и STRPOS ищет только первое совпадение, а COPYSTR не любит нулей ...
Моя функция - полноценная замена REPLACE из T-SQL (http://msdn.microsoft.com/en-us/library/ms186862.aspx).
Назначение - замена всех вхождений указанной строки на новое значение.
Старый 12.05.2008, 14:16   #8  
smoyk is offline
smoyk
Участник
 
188 / 13 (1) ++
Регистрация: 20.04.2007
To Технологии как Искусство
Вы что творите, что творите?! Развращаете молодежь?))) Этак они совсем думать перестанут...
Старый 12.05.2008, 14:25   #9  
Технологии как Искусство is offline
Технологии как Искусство
Участник
 
37 / 10 (1) +
Регистрация: 04.02.2008
Цитата:
Сообщение от smoyk Посмотреть сообщение
To Технологии как Искусство
Вы что творите, что творите?! Развращаете молодежь?))) Этак они совсем думать перестанут...
Ну прям ))

Зачем каждый раз изобретать велосипед
Старый 12.05.2008, 14:55   #10  
apanko is offline
apanko
MCTS
MCBMSS
Лучший по профессии 2009
 
1,164 / 139 (7) +++++
Регистрация: 24.02.2005
UPD
Перепроверил. Нормально.


UPD2
Хотя такую строку не берет
tresult:=sqlreplace('00000000001000000000020000000000300000000004000000000050','0','12345678900987654321');
Старый 12.05.2008, 14:57   #11  
Технологии как Искусство is offline
Технологии как Искусство
Участник
 
37 / 10 (1) +
Регистрация: 04.02.2008
Цитата:
Сообщение от apanko Посмотреть сообщение
Что-то не очень: SqlReplace('00';'0';'111');
У меня выдает 111111 - каждый ноль заменяет на три единички. А у вас?
Старый 12.05.2008, 15:09   #12  
randrews is offline
randrews
Участник
Аватар для randrews
 
312 / 10 (1) +
Регистрация: 06.12.2004
Цитата:
Сообщение от smoyk Посмотреть сообщение
Вот уродство... Сколько ЯП изучил ни в адном такого не видел.
Вроде у вас уже 97 сообщений - не новичок А все сетуете на C/AL У меня где-то со второго года программирования на нем выработался инстинкт - не обращать внимание, в NAVISION может быть ВСЁ ЧТО УГОДНО
Недавно выяснилось, что и аналог STRSUBSTNO надо писать свой, если у вас результат вывода больше 508 (цифру точно не помню) символов.

Так что, smoyk, молодежь не развратишь - Navision преподнесет еще не мало поводов потренироваться в написании стандартных ф-й
Старый 13.05.2008, 05:38   #13  
smoyk is offline
smoyk
Участник
 
188 / 13 (1) ++
Регистрация: 20.04.2007
Цитата:
Сообщение от randrews Посмотреть сообщение
Вроде у вас уже 97 сообщений - не новичок А все сетуете на C/AL
А, не говорите) Давно уже не матерюсь, так, иногда тока по привычке поминаю добрым словом собаку Гейтса и всю его контору)

Цитата:
Сообщение от randrews Посмотреть сообщение
Так что, smoyk, молодежь не развратишь - Navision преподнесет еще не мало поводов потренироваться в написании стандартных ф-й
Амен)
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 06:12.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.