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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.08.2011, 09:55   #21  
GBH is offline
GBH
MCITP
Аватар для GBH
MCP
MCBMSS
Ex AND Project
 
140 / 28 (1) +++
Регистрация: 28.06.2007
Вопрос, возможно, глупый, но не могу разобраться. :-(
Всё работает как и надо.
Только перед записью, мне необходимо удалить файл. Использую WinAPIServer::deleteFile(fileName)

X++:
Set                     permissionSet = new set(Types::Class);
....
permissionSet.add(new FileIOPermission(fileName, #io_write));
permissionSet.add(new InteropPermission(InteropKind::ClrInterop));

CodeAccessPermission::assertMultiple(permissionSet);

if(WinAPIServer::fileExists(fileName))  
{
    WinAPIServer::deleteFile(fileName);
}
Получаю ошибку
Цитата:
Сбой запроса на разрешение типа "FileIOPermission".
(S)\Classes\FileIOPermission\demand
(S)\Classes\WinAPIServer\fileExists - line 14
Функция WinAPI отрабатывает без проблем. Права на папку все даны. Папка серверная.

Что я делаю нет?
Заранее спасибо.
Старый 03.08.2011, 10:12   #22  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
WinAPI::fileExists()
__________________
Axapta v.3.0 sp5 kr2
Старый 03.08.2011, 10:22   #23  
GBH is offline
GBH
MCITP
Аватар для GBH
MCP
MCBMSS
Ex AND Project
 
140 / 28 (1) +++
Регистрация: 28.06.2007
Цитата:
Сообщение от AndyD Посмотреть сообщение
Спасибо.
Но я написал
Цитата:
Функция WinAPI отрабатывает без проблем.
. Но мне, для пакетной обработки, требуется использование WinAPIServer.
Старый 03.08.2011, 10:26   #24  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
А вы в тему загляните

Там как раз ваш вопрос обсуждался
__________________
Axapta v.3.0 sp5 kr2
Старый 03.08.2011, 10:46   #25  
GBH is offline
GBH
MCITP
Аватар для GBH
MCP
MCBMSS
Ex AND Project
 
140 / 28 (1) +++
Регистрация: 28.06.2007
Цитата:
Сообщение от AndyD Посмотреть сообщение
А вы в тему загляните

Там как раз ваш вопрос обсуждался
В тему я заглядывал и там есть ответы на мои вопросы. Но они не помогают.
В этой теме есть пример кода (последнее сообщение) и там всё работает.
Импорт курса валют ЦБ РФ

Возможно, надо было там задать вопрос, но раз уж тут это обсуждается, то и задал здесь.
Старый 03.08.2011, 11:14   #26  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
У вас код выполняется на сервере или на клиенте?

#io_write - из макросборки #File ('w')? В FileExists() проверяется разрешение на операцию чтения ('r'), соответственно, и пермишен должен создаваться либо на чтение, либое на чтение/запись.

Ну и вообще, непонятно, зачем там вообще нужен этот пермишн (внутри FileExists(), имею в виду). Работа непосредственно с файлом идет внутри сборки и Аксаптовская защита выполнения кода не нужна
__________________
Axapta v.3.0 sp5 kr2
Старый 03.08.2011, 11:36   #27  
GBH is offline
GBH
MCITP
Аватар для GBH
MCP
MCBMSS
Ex AND Project
 
140 / 28 (1) +++
Регистрация: 28.06.2007
Цитата:
Сообщение от AndyD Посмотреть сообщение
У вас код выполняется на сервере или на клиенте?

#io_write - из макросборки #File ('w')? В FileExists() проверяется разрешение на операцию чтения ('r'), соответственно, и пермишен должен создаваться либо на чтение, либое на чтение/запись.

Ну и вообще, непонятно, зачем там вообще нужен этот пермишн (внутри FileExists(), имею в виду). Работа непосредственно с файлом идет внутри сборки и Аксаптовская защита выполнения кода не нужна
Выполняется на сервере. И файл находится на сервере, который необходимо удалить.
Да, #io_write из макрособорки #File (W). Соответственно пермишен на запись.
Зачем нужен пермишен я , к сожалению,не знаю. Но при компиляции сообщение выдает
Цитата:
TwC: объявление об использовании API WinAPIServer.fileExists, поскольку он защищен с применением разграничения доступа кода.
Также выдает аналогичную ошибку без использования пермишен.
Имелась в виду ошибка
Цитата:
Сбой запроса на разрешение типа "FileIOPermission".
(S)\Classes\FileIOPermission\demand
(S)\Classes\WinAPIServer\fileExists - line 14
Старый 03.08.2011, 11:41   #28  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от GBH Посмотреть сообщение
Да, #io_write из макрособорки #File (W). Соответственно пермишен на запись.
Зачем нужен пермишен я , к сожалению,не знаю. Но при компиляции сообщение выдает
Замените #io_write на 'rw'
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: GBH (1).
Старый 03.08.2011, 11:43   #29  
GBH is offline
GBH
MCITP
Аватар для GBH
MCP
MCBMSS
Ex AND Project
 
140 / 28 (1) +++
Регистрация: 28.06.2007
Цитата:
Сообщение от AndyD Посмотреть сообщение
Замените #io_write на 'rw'
Так и сделал. Всё заработало.
Всем спасибо за помощь.
Почему-то я думал, что "w" подразумевает и чтение.
Старый 18.01.2012, 12:01   #30  
Just_smile is offline
Just_smile
Участник
Axapta Retail User
 
41 / 29 (1) +++
Регистрация: 28.10.2008
Цитата:
Сообщение от AndyD Посмотреть сообщение
Рискну предложить свой вариант на основе виндовых функций
У меня на тройке этот вариант не работает - в UTF8 выводятся кракозябры:
ABCDEFGabcdefgАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдежзийклмнопрстуфхцчшщьыъэюя123

ABCDEFGabcdefgАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдежзийклмнопрстуфхцчшщьыъэюя123

ABCDEFGabcdefgАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдежзийклмнопрстуфхцчшщьыъэюя123
Старый 18.01.2012, 12:11   #31  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Так вторая строка в utf-8 и написана
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: lev (2).
Старый 18.01.2012, 14:35   #32  
Just_smile is offline
Just_smile
Участник
Axapta Retail User
 
41 / 29 (1) +++
Регистрация: 28.10.2008
Я думал что UTF8 выглядит типа %D0%9D%D0%B0%D1%82. В таком формате в ссылках содержатся текст из русских букв, вот например ссылка из-за википедии: http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5


Старый 18.01.2012, 16:25   #33  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Это уже так называемый URL Encode
В Аксапте для этого можно воспользоваться классом SysURLEncoder - передавать в него полученную строку с utf
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: Just_smile (1).
Старый 15.03.2012, 17:14   #34  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от AndyD Посмотреть сообщение
Это уже так называемый URL Encode
В Аксапте для этого можно воспользоваться классом SysURLEncoder - передавать в него полученную строку с utf
Andy ,

Простите пожалуйста , но имею проблем с вашим классом . Оно годиться только для русских букв ?

Я формирую такой файлик , где есть названия и по руски , и по литовски . И вот , если попадаеться название цвета , нпр. RUDA ( по литовски 'коричневый' , нету никаких литовск.букв, чисто латинские ) . Так вот если формировать ето с Utf8::Ansi2Utf8( strupr( strlrtrim( colorsDb.ColorDescrLT ) ) ); , получаю 'RUDA` ' например . Как етого избежать етого 5-ого симбола ?

Проблема . что Аксапта 3.0 , с SP4 . Пока немогу с кем ето сделать ...

С уваженим , Римантас
Старый 15.03.2012, 17:33   #35  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Не должно быть проблем с латинскими символами
Может, в colorsDb.ColorDescrLT еще какие-либо символы хранятся?

Попробуйте сделать такой вызов Utf8::Ansi2Utf8( 'RUDA' ); - что в итоге получится?
__________________
Axapta v.3.0 sp5 kr2
Старый 15.03.2012, 17:40   #36  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от AndyD Посмотреть сообщение
Не должно быть проблем с латинскими символами
Может, в colorsDb.ColorDescrLT еще какие-либо символы хранятся?

Попробуйте сделать такой вызов Utf8::Ansi2Utf8( 'RUDA' ); - что в итоге получится?
Ммм.... дааа ... .. только что выяснилься , что в базе у нас UTF-8 . Так что ничего ненадо конвертировать ...
Старый 20.06.2012, 17:50   #37  
freezok is offline
freezok
Участник
 
4 / 10 (1) +
Регистрация: 18.06.2012
Цитата:
Сообщение от AndyD Посмотреть сообщение
Рискну предложить свой вариант на основе виндовых функций
Спасибо! Но есть одно но, класс плохо себя ведет со скобочками и цивфрами после 4-ки, а точнее добавляет после этих символов кряказябры... Как быть в таких случаях?
Пример:
На входе
ABCDEFGabcdefgАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдежзийклмнопрстуфхцчшщьыъэюя123(
Ны выходе
ABCDEFGabcdefgАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдежзийклмнопрстуфхцчшщьыъэюя123(Џ

Последний раз редактировалось freezok; 20.06.2012 в 17:53.
Старый 21.06.2012, 09:36   #38  
freezok is offline
freezok
Участник
 
4 / 10 (1) +
Регистрация: 18.06.2012
Решил проблему добавлением пустоты в конце строки(проблема была толко если символ скобка или цифры 4-9 были в конце строки)
Старый 07.12.2013, 11:37   #39  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Добрый день!
Необходимо из Аксапты 3.0 SP3 выгружать csv файлы в UTF-8 кодировки.
1. Попробовал решение AndyD - в некоторых строках появились дополнительные кракозябры
2. Скачал внешний кодировщик , вызываю его кодом:

X++:
void encodeFile(str _path)
{
    ;
    WinAPI::shellExecute("recode", strFmt("-f cp1251...utf-8 %1", _path));
}
Файл кодируется в utf-8, но есть один недостаток - когда отрываю Notepad++ кодировка файла отображается как 'Ansi as UTF-8', и если в том же Notepad++ перекодировать файл в UTF-8 то размер файла изменится на 3 байта, как я понимаю - это в начало файла добавится BOM-символ.
Т.е. мой кодировщик recode кодирует в utf8_without_bom, а заказчику нужен чистый utf-8 c этим BOM-символом.

3. Пробую на C# написать перекодирование в UTF-8:
X++:
            FileStream fs = File.Open("E:\\data\\1\\test2.txt", FileMode.Open);            
            StreamReader sr = new StreamReader(fs, Encoding.Default);
            string asciText = sr.ReadToEnd();
            FileStream fsw = File.OpenWrite(@"E:\\data\\1\\test4.txt");
            Byte[] info = new UTF8Encoding(true).GetBytes(asciText);
            fsw.Write(info, 0, info.Length);
И опять файл кодируется без BOM символа (Notepad++ определяет кодировку файла как 'Ansi as UTF-8')

Не подскажете как получить файл в кодировке UTF-8 with BOM (просто UTF-8 по мнению Notepad++)?
Старый 07.12.2013, 14:35   #40  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Ну а если "руками" дописать этот BOM (0xEF 0xBB 0xBF) в файл перед конвертированными данными?..
За это сообщение автора поблагодарили: DreamCreator (3), Logger (1).
Теги
.net, ansi, ascii, cp866, utf8, законченный пример, полезное

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Создание текстового файла в кодировке DOS Pismarkina DAX: Программирование 5 18.06.2012 14:57
Файлы XML, CSV, HTML в кодировке Unicode EVGL DAX: База знаний и проекты 3 16.01.2009 14:23
Вывод отчета в файл в пакетном режиме Egor_bl DAX: Программирование 16 09.10.2006 19:10
Отчет записать сразу как RTF файл st_msav DAX: Программирование 2 17.01.2006 18:52
считать/записать данные в файл Valia DAX: Программирование 7 19.11.2003 11:59
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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