|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.02.2009, 09:42 | #1 |
Пользователь
Регистрация: 17.07.2008
Сообщений: 15
|
Unicode в Listboxe
Старая тема:
Не могу вставить в контрол текст в кодировке Unicode Пробовал написать код в VB6 (без экселя). Код должен переносить слова из файла source.txt в Listbox. Если я сохраняю txt в кодировке ANSII, то всё нормально, а в Unicode - никак. Текст должен быть в Unicode, поскольку в нём содержатся буквы ä, ö. Чтобы узнать, код или контрол не видит этих символов, я вставил в код строку Код:
(Temp - переменная, которой присваивается строковое значение). Он мне пишет вместо букв с умляутами козябры. То есть код не распознаёт. Ну, и соответственно, в Listbox он вставляет всё те же козябры. Вот пример интерпретации бейсиком выражения Hyvää päivää: яюHyvдд pдivдд (Причём буквы яю в начале почему-то присутствуют при любом раскладе). Пробовал ввести с клавиатуры буквы ä, ö в Textbox. Вводятся a, o. При этом, когда похожий код пишешь в Excele, то работает всё прекрасно (только там код берёт слова с листа excel). Поискал я по форуму, похожие вопросы уже не раз поднимались. Там советовали подключить библиотеку FM20.dll, и всё, якобы должно получиться. Подключил. Без изменений. Неужели нельзя обойти как-нибудь данную проблему??? П.С. Сейчас попробовал вставить в текстовый файл русские буквы, получился вообще смех: "Добрый день" = ">1@K9 45=L" Повторяю, в excele всё работает без проблем... Последний раз редактировалось ЯИмя; 19.02.2009 в 09:51. |
19.02.2009, 10:02 | #2 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Прикрепите Ваш файл (фрагмент файла) в Unicode. Попробуем.
Чем шире угол зрения, тем он тупее.
|
19.02.2009, 13:56 | #3 |
Пользователь
Регистрация: 17.07.2008
Сообщений: 15
|
Это код:
Code.rar А это текст в Unicode: source.txt Код ещё корявый, не обращайте внимания. Я его только начал писать и вот. В Юникод воткнулся... Последний раз редактировалось ЯИмя; 19.02.2009 в 16:59. |
19.02.2009, 16:57 | #4 |
Пользователь
Регистрация: 17.07.2008
Сообщений: 15
|
А вот экселевский файл, в котором всё работает.
Excel.rar То есть там Listbox, Textbox отображают буквы с умляутами. Это похожий код, принцип тот же, с небольшими изменениями, связанными с ограниченностью возможностей экселевских контролов. Код тоже недоделанный, я его написал, просто чтобы попробовать, будет ли в экселе работать. Почему в экселе всё работает - загадка... Последний раз редактировалось ЯИмя; 19.02.2009 в 16:59. |
19.02.2009, 17:29 | #5 |
Пользователь
Регистрация: 17.07.2008
Сообщений: 15
|
Вот здесь описывается, кажется, решение этой проблемы.
http://www.cyberactivex.com/UnicodeTutorialVb.htm Я в английском не силён, если у кого есть время, может быть, посмотрите? |
20.02.2009, 08:45 | #6 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Попробуйте вместо примененного у Вас
Код:
Код:
Чем шире угол зрения, тем он тупее.
|
21.02.2009, 19:29 | #7 |
Пользователь
Регистрация: 17.07.2008
Сообщений: 15
|
Ладно, предположим, справился я со считыванием строк в код.
Хотя и вышел из положения не самым лучшим образом, но, по крайней мере, теперь почти уверен, что в памяти VB хранятся символы в юникоде. Я взял исходный source.txt и заменил там все буквы ä на @, а буквы ö - на #. При формировании коллекции строк использовал функцию Replace: Код:
Теперь код вместо козябров вставляет в listbox простые буквы a и o, без умляутов. ПОЧЕМУ ЖЕ В ЭКСЕЛЕ-ТО ВСЁ БЕЗ ПРОБЛЕМ РАБОТАЕТ? Там что, контролы другие, чем же они отличаются??? |
21.02.2009, 19:56 | #8 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
И, хоть выглядят они похоже, по сути представляют из себя совершенно разные объекты. Об этом говорилось здесь. |
|
23.02.2009, 12:11 | #9 |
Пользователь
Регистрация: 17.07.2008
Сообщений: 15
|
Всем спасибо!
Вроде бы как нашли выход из положения всеобщими усилиями. Одно не получается - написать в Textboxe, взятому из FM20.dll, русские буквы (с клавиатуры). Прикреплю файл с кодом, огромная просьба, будьте добры, посмотрите, что можно сделать?... Мне нужно, чтобы можно было вводить в Textbox3: 1. Русские буквы; 2. В английской раскладке - кроме стандартных ANSI символов ещё всего две буквы - ä и ö. SAN.rar Повторяю - контрол (Textbox) Экселевский и в экселе он работает прекрасно, принимает любые буквы. А при переносе его в VB6 вдруг начинает принимать только английские, а вместо остальных - печатает козябры. Всю ночь мучался... |
23.02.2009, 16:17 | #10 |
Пользователь
Регистрация: 17.07.2008
Сообщений: 15
|
Ну господа, очень прошу откликнуться!!!
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Unicode в Delphi | Fedorovich | БД в Delphi | 2 | 31.10.2008 21:34 |
Unicode и Delphi | BOBAH13 | Общие вопросы Delphi | 3 | 27.09.2008 13:08 |
Unicode в indy9 | Mixasik | Работа с сетью в Delphi | 3 | 25.08.2008 15:44 |
unicode и printf | Legat | Общие вопросы C/C++ | 9 | 06.07.2008 13:41 |
Unicode | }{UTPUU | Общие вопросы Delphi | 4 | 02.04.2007 15:21 |