03.08.2011, 09:55 | #21 |
MCITP
|
Вопрос, возможно, глупый, но не могу разобраться. :-(
Всё работает как и надо. Только перед записью, мне необходимо удалить файл. Использую 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 Что я делаю нет? Заранее спасибо. |
|
03.08.2011, 10:12 | #22 |
Участник
|
__________________
Axapta v.3.0 sp5 kr2 |
|
03.08.2011, 10:22 | #23 |
MCITP
|
|
|
03.08.2011, 10:26 | #24 |
Участник
|
А вы в тему загляните
Там как раз ваш вопрос обсуждался
__________________
Axapta v.3.0 sp5 kr2 |
|
03.08.2011, 10:46 | #25 |
MCITP
|
В тему я заглядывал и там есть ответы на мои вопросы. Но они не помогают.
В этой теме есть пример кода (последнее сообщение) и там всё работает. Импорт курса валют ЦБ РФ Возможно, надо было там задать вопрос, но раз уж тут это обсуждается, то и задал здесь. |
|
03.08.2011, 11:14 | #26 |
Участник
|
У вас код выполняется на сервере или на клиенте?
#io_write - из макросборки #File ('w')? В FileExists() проверяется разрешение на операцию чтения ('r'), соответственно, и пермишен должен создаваться либо на чтение, либое на чтение/запись. Ну и вообще, непонятно, зачем там вообще нужен этот пермишн (внутри FileExists(), имею в виду). Работа непосредственно с файлом идет внутри сборки и Аксаптовская защита выполнения кода не нужна
__________________
Axapta v.3.0 sp5 kr2 |
|
03.08.2011, 11:36 | #27 |
MCITP
|
Цитата:
Сообщение от 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 |
Участник
|
Замените #io_write на 'rw'
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: GBH (1). |
03.08.2011, 11:43 | #29 |
MCITP
|
|
|
18.01.2012, 12:01 | #30 |
Участник
|
У меня на тройке этот вариант не работает - в UTF8 выводятся кракозябры:
ABCDEFGabcdefgАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдежзийклмнопрстуфхцчшщьыъэюя123 ABCDEFGabcdefgАБВГДЕЖЗРЙКЛМНОПРСТУФХЦЧШЩЬЫЪРЮЯабвгдежзийклмнопрстуфхцчшщьыъэюя123 ABCDEFGabcdefgАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдежзийклмнопрстуфхцчшщьыъэюя123 |
|
18.01.2012, 12:11 | #31 |
Участник
|
Так вторая строка в utf-8 и написана
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: lev (2). |
18.01.2012, 14:35 | #32 |
Участник
|
Я думал что 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 |
Участник
|
Это уже так называемый URL Encode
В Аксапте для этого можно воспользоваться классом SysURLEncoder - передавать в него полученную строку с utf
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: Just_smile (1). |
15.03.2012, 17:14 | #34 |
Участник
|
Цитата:
Простите пожалуйста , но имею проблем с вашим классом . Оно годиться только для русских букв ? Я формирую такой файлик , где есть названия и по руски , и по литовски . И вот , если попадаеться название цвета , нпр. RUDA ( по литовски 'коричневый' , нету никаких литовск.букв, чисто латинские ) . Так вот если формировать ето с Utf8::Ansi2Utf8( strupr( strlrtrim( colorsDb.ColorDescrLT ) ) ); , получаю 'RUDA` ' например . Как етого избежать етого 5-ого симбола ? Проблема . что Аксапта 3.0 , с SP4 . Пока немогу с кем ето сделать ... С уваженим , Римантас |
|
15.03.2012, 17:33 | #35 |
Участник
|
Не должно быть проблем с латинскими символами
Может, в colorsDb.ColorDescrLT еще какие-либо символы хранятся? Попробуйте сделать такой вызов Utf8::Ansi2Utf8( 'RUDA' ); - что в итоге получится?
__________________
Axapta v.3.0 sp5 kr2 |
|
15.03.2012, 17:40 | #36 |
Участник
|
Ммм.... дааа ... .. только что выяснилься , что в базе у нас UTF-8 . Так что ничего ненадо конвертировать ...
|
|
20.06.2012, 17:50 | #37 |
Участник
|
Спасибо! Но есть одно но, класс плохо себя ведет со скобочками и цивфрами после 4-ки, а точнее добавляет после этих символов кряказябры... Как быть в таких случаях?
Пример: На входе ABCDEFGabcdefgАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдежзийклмнопрстуфхцчшщьыъэюя123( Ны выходе ABCDEFGabcdefgАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдежзийклмнопрстуфхцчшщьыъэюя123(Џ Последний раз редактировалось freezok; 20.06.2012 в 17:53. |
|
21.06.2012, 09:36 | #38 |
Участник
|
Решил проблему добавлением пустоты в конце строки(проблема была толко если символ скобка или цифры 4-9 были в конце строки)
|
|
07.12.2013, 11:37 | #39 |
Moderator
|
Добрый день!
Необходимо из Аксапты 3.0 SP3 выгружать csv файлы в UTF-8 кодировки. 1. Попробовал решение AndyD - в некоторых строках появились дополнительные кракозябры 2. Скачал внешний кодировщик , вызываю его кодом: X++: void encodeFile(str _path) { ; WinAPI::shellExecute("recode", strFmt("-f cp1251...utf-8 %1", _path)); } Т.е. мой кодировщик 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); Не подскажете как получить файл в кодировке UTF-8 with BOM (просто UTF-8 по мнению Notepad++)? |
|
07.12.2013, 14:35 | #40 |
Участник
|
Ну а если "руками" дописать этот BOM (0xEF 0xBB 0xBF) в файл перед конвертированными данными?..
|
|
|
За это сообщение автора поблагодарили: DreamCreator (3), Logger (1). |