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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.09.2004, 14:01   #1  
Miktel is offline
Miktel
Участник
 
17 / 10 (1) +
Регистрация: 13.07.2004
Адрес: Дома
удвоение служебного символа \ в строке
Подскажите пожалуйста.
Как в строке с путем к файлу заменить все символы "\" на "\\" (два символа).
Нужно для открытия из Аксапты текстового файла.
Всем спасибо.
Старый 22.09.2004, 14:23   #2  
maxsmirnov is offline
maxsmirnov
экс-модератор
 
268 / 25 (1) +++
Регистрация: 08.07.2003
Адрес: Москва
strReplace(string, "\\", "\\\\");
Старый 22.09.2004, 14:24   #3  
YVAS is offline
YVAS
1C
Аватар для YVAS
1C
 
265 / 10 (1) +
Регистрация: 31.07.2003
Что то пока не понятно. Если просто в текстовой переменно произвести операцию замены то это так.:
PHP код:
static str setStr (str _myString)
{
  
int pointPosition;
  ;

     
pointPosition    strScan(_myString"\", 1, strLen(_myString));
     _myString= strPoke(_myString, "
\\\\\", pointPosition);

   return _myString;

Старый 22.09.2004, 15:19   #4  
Miktel is offline
Miktel
Участник
 
17 / 10 (1) +
Регистрация: 13.07.2004
Адрес: Дома
удвоение служебного символа \ в строке
Нет, к сожалению не работает ни один из советов.
в строке "c:\folder\template.txt" Аксапта считает "\t" и "\f"одним символом.
строка
pointPosition = strScan(_myString, "\", 1, strLen(_myString));
не компилируется т. к. второй параметр "\" не является строкой или символом (это служебный символ).
strReplace(string, "\\", "\\\\"); при string = "c:\template.txt" возвращает "emplate.txt".
Что делать не знаю. Подскажите пожалуйста.
Старый 22.09.2004, 15:33   #5  
maxsmirnov is offline
maxsmirnov
экс-модератор
 
268 / 25 (1) +++
Регистрация: 08.07.2003
Адрес: Москва
мой работает

откуда у вас берется строка "c:\folder\template.txt" ?
если вы ее прямо в коде пишете
str a="c:\folder\template.txt", то и не должно работать, надо сразу писать с удвоенными слэшами

если-же она приходит из формы, считывается откуда либо итп, короче не выражена в виде х++ строковых литералов, то все должно работать

у меня вот такой код отрабатывает правильно

static void Job3(Args _args)
{
str a;
dialog d = new dialog();
dialogField df;
;

df = d.addField(typeId(fileNameOpen));

d.run();
a = df.value();
info (a);
a = strReplace(a, "\\", "\\\\");
info (a);
}

yvas тоже не дурак , он совсем не то вам хотел сказать, просто форум съедает обратные слэши в коде
Старый 22.09.2004, 15:58   #6  
axLog is offline
axLog
Участник
 
286 / 10 (1) +
Регистрация: 01.03.2004
Re: удвоение служебного символа \ в строке
Цитата:
Изначально опубликовано Miktel
строка
pointPosition = strScan(_myString, "\", 1, strLen(_myString));
не компилируется
Потому что там тоже надо писать двойной слэш.
Старый 22.09.2004, 20:48   #7  
Miktel is offline
Miktel
Участник
 
17 / 10 (1) +
Регистрация: 13.07.2004
Адрес: Дома
Действительно, есть разница откуда получена строка.
Если она получена из диалога выбора файла , то strReplace(stringFromDialog, "\\", "\\\\");
работает замечательно.
А если задать st = "c:\folder\template.txt";
st = replaceStr(st,"\\","\\\\");
то не работает. Хотя не понятна принципиальная разница между такими строками.
Большое спасибо. Мне помогло.
Старый 22.09.2004, 21:13   #8  
maxsmirnov is offline
maxsmirnov
экс-модератор
 
268 / 25 (1) +++
Регистрация: 08.07.2003
Адрес: Москва
просто вот так - "\t" в строку вставляется символ табуляции. а чтобы вставить в строку бэкслэш, надо написать "\\"

а теперь следующий шаг - все вышеописанное вам нафиг не нужно
если вы получаете имя файла из диалога - заменять в нем бэкслэши на удвоенные не надо если не из диалога - удваивайте слэши прямо в коде
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
сумма по строке закупки Nikolaich DAX: Программирование 2 03.04.2007 13:37
Как программно изменить к-во в строке заказа в форме SalesTable BorDark DAX: Программирование 2 13.01.2005 17:02
Ловим \ в строке Smith DAX: Программирование 2 10.09.2004 16:09
Скидка по строке и многострочная скидка efim DAX: Функционал 0 18.06.2003 16:32
Как получить доступ к текущей строке в DataSource формы Maxim Gorbunov DAX: База знаний и проекты 0 28.11.2001 13:46

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:00.