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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.01.2007, 15:27   #1  
mmm is offline
mmm
Участник
 
33 / 43 (2) +++
Регистрация: 10.07.2002
Адрес: Ukraine
TextBuffer и кодировка...?
Добрый день!

Используя TextBuffer пытаюсь загрузить содержимое файла для последующей загрузки в Memo.
Проблема в том, что русские буквы превращаются в кракозяблики, предполагаю что наверное нужно указать кодировку или что…

Подскажите.

Спасибо.
Старый 24.01.2007, 15:39   #2  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Привет, если надо из DOS в Windows то это поможет

static str oemToChar(str _text)
{
DLL dll = new DLL("user32.dll");
DLLFunction dllFunction = new DLLFunction(dll, "OemToCharA");
Binary result = new Binary(strlen(_text) + 1);
;
dllFunction.returns(ExtTypes:Word);
dllFunction.arg(ExtTypes::String, ExtTypes::Pointer);

dllFunction.call(_text, result);
return result.string(0);
}
Старый 24.01.2007, 15:47   #3  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
X++:
void LoadKeyboardLayout()
{
dll dll = new dll("user32");
dllFunction dllFunction = new dllFunction(dll, "LoadKeyboardLayoutA");
#define.KLF_ACTIVATE(1)
;
dllFunction.arg(ExtTypes::String, ExtTypes:: DWord);
dllFunction.returns(ExtTypes:: DWord);
dllFunction.call("00000419", #KLF_ACTIVATE);
}
Цитата:
AndyD, попутный вопрос (в плане повышения общей xpp-грамотности)

Это метод что делает? Для чего?

Заранее благодарю за ответ.

AndyD 14.06.2006 17:56

Активирует русскую раскладку клавиатуры. Если с помощью toClipboard() копировать при активной английской в WIN2000+, то произойдет ошибка конвертации и вместо русских букв будут крякозяблы. Этот эффект можно наблюдать при копировании из Axapta'ы кириллицы (код Recoilme в этом же топике).

На самом деле есть несколько путей решения этой проблемы - копировать в UNICODE, при вставке в Excel указывать тип вставляемых данных (при помощи метода PasteSpecial на WorkSheet).
Старый 24.01.2007, 17:20   #4  
mmm is offline
mmm
Участник
 
33 / 43 (2) +++
Регистрация: 10.07.2002
Адрес: Ukraine
не помогло...
Старый 24.01.2007, 17:32   #5  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
сорри, я промазал - какая кодировка в исходной файле?
Старый 24.01.2007, 17:55   #6  
mmm is offline
mmm
Участник
 
33 / 43 (2) +++
Регистрация: 10.07.2002
Адрес: Ukraine
Даже не могу понять, вроде Windows.

Решил выложить сам файлик, он в архиве, дабы кодировка эта не слетела и выложил код которым пытаюсь

загрузить его содержимое.

X++:
static void Job1(Args _args)
{
TextBuffer dataFile;

dataFile = new TextBuffer();
dataFile.fromFile("c:\\test.txt");

info(dataFile.getText());
}
Вложения
Тип файла: zip test.zip (143 байт, 95 просмотров)
Старый 24.01.2007, 17:59   #7  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Вообще-то он в UTF-8
После чтения в TextBuffer воспользуйтесь этим записать файл в UTF-кодировке классом
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: mmm (1).
Старый 24.01.2007, 18:13   #8  
mmm is offline
mmm
Участник
 
33 / 43 (2) +++
Регистрация: 10.07.2002
Адрес: Ukraine
А как программно определить в какой он кодировке?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как метод TextBuffer.Find работает с регулярными выражениями Lucky13 DAX: Программирование 3 29.02.2008 15:08
TextBuffer: не находит знак переноса строки Arahnid DAX: Программирование 7 17.11.2007 18:35
Dundas.Mailler - Кодировка subject-а письма npokypatop DAX: Программирование 3 18.05.2006 18:40
Axapta виснет на TextBuffer::replace dzeaman DAX: Программирование 3 04.10.2005 09:30
Кодировка номенклатуры мнемоническая (буквенно-цифровая) или цифровая vitart DAX: Функционал 38 22.04.2003 11:32

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

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

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