Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Содержимое TextBox в Unicode? Как сохранить содержимое TextBox в Unico 
:(
    Опции темы
ndec
Дата 4.2.2007, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 3.2.2007

Репутация: нет
Всего: нет



Помогите пожалуйста сохранить содержимое TextBox в кодировке Unicode. Какими способами можно это осуществить? Спасибо.
PM MAIL   Вверх
bom
Дата 4.2.2007, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

Репутация: 4
Всего: 6



С помощью API:
MultiByteToWideChar
WideCharToMultiByte
PM MAIL   Вверх
ndec
Дата 5.2.2007, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 3.2.2007

Репутация: нет
Всего: нет



Т.е закинуть 
Код

Public Declare Function MultiByteToWideChar Lib "kernel32" Alias "MultiByteToWideChar" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As String, ByVal cchMultiByte As Long, ByVal lpWideCharStr As String, ByVal cchWideChar As Long) As Long
 
в модуль. Потом создать текстовую переменную и приравнять ??
Можно пример пожалуйста?

Это сообщение отредактировал(а) ndec - 5.2.2007, 00:30
PM MAIL   Вверх
Akina
Дата 5.2.2007, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(ndec @  5.2.2007,  01:14 Найти цитируемый пост)
Можно пример пожалуйста?

В описании данной функции в MSDN есть пример ее использования


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ndec
Дата 6.2.2007, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 3.2.2007

Репутация: нет
Всего: нет



Цитата(Akina @ 5.2.2007,  10:07)
Цитата(ndec @  5.2.2007,  01:14 Найти цитируемый пост)
Можно пример пожалуйста?

В описании данной функции в MSDN есть пример ее использования

Если Вас не затруднит, могли бы Вы скинуть эту информацию сюда?
PM MAIL   Вверх
ndec
Дата 9.2.2007, 02:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 3.2.2007

Репутация: нет
Всего: нет



Может кто-нибудь помочь и показать пример с использованием MultiByteToWideChar ? Мне нужно чтобы TextBox сохранял информацию в кодировке Unicode.

заранее благодарю.
PM MAIL   Вверх
W4FhLF
Дата 9.2.2007, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 3
Всего: 121



Да вообще-то в ВБ касательно строк кроме unicode ничего и нетsmile


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
bom
Дата 9.2.2007, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

Репутация: 4
Всего: 6



Цитата(W4FhLF @  9.2.2007,  17:13 Найти цитируемый пост)
 в ВБ касательно строк кроме unicode ничего и нет

Действительно, ndec,  можно заюзать и  StrConv  smile  
PM MAIL   Вверх
IcyJet
Дата 9.2.2007, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Да StrConv так сказать "зе бэст вэй!" smile 
Код

Dim sInput as String
Dim sOutput as String
sOutput = StrConv(sInput, vbUnicode)

Vb изначально хранит строку в Unicode
При передачестрок в Win32Api переводит строку в ANSI (грубо говоря)
Когда мы юзаем StrConv с параметром vbUnicode а потом шлем строку в Win32Api то Win32Api получает место ANSI Unicode
Думаю что при записи файлов в vb выходит тоже самое (преоброзование в ANSI)
Используем StrConv и все должно быть Окей! smile 
З.Ы. Есле не прав поправте smile 
PM MAIL   Вверх
W4FhLF
Дата 10.2.2007, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 3
Всего: 121



Цитата(IcyJet @  9.2.2007,  23:41 Найти цитируемый пост)
Vb изначально хранит строку в Unicode


Если быть точнее - BSTR.


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
IcyJet
Дата 10.2.2007, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Да немного не точно вышло smile , но по большому счету это всеровно массив символов Unicode - от LPWSTR отличается только 4 байтами длинны впереди.
Более забавнее как vb преобразовеет строки в ANSI и обратно - все из-за того что дядюшка Билл решил зделать vb совместимым с win9x в котором как такового Unicod'а нет.  smile 
PM MAIL   Вверх
BorisVorontsov
Дата 12.2.2007, 02:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

Репутация: 5
Всего: 10



Цитата(IcyJet @  9.2.2007,  23:41 Найти цитируемый пост)
Когда мы юзаем StrConv с параметром vbUnicode а потом шлем строку в Win32Api то Win32Api получает место ANSI - Unicode


Это самый неудачный способ из всех существующих.
Читать здесь ( всем ): http://www.vbstreets.ru/VB/Articles/66364.aspx

Цитата(IcyJet @  10.2.2007,  13:37 Найти цитируемый пост)
в котором как такового Unicod'а нет


Что значит нет?

Цитата(Джеффри Рихтер)

Windows 98 и Unicode

И все же Windows 98 допускает работу с приложениями, обрабатывающими символы и строки в Unicode, хотя вызов функций Windows при этом заметно усложняется. Например, если Бы, обращаясь к CreateWindowEx, передаете ей ANSI-строки, вызов проходит очень быстро — не требуется ни выделения буферов, ни преобразования строк. Но для вызова CreateWindowEx с Unicode-строками Вам придется самому выделять буферы, явно вызывать функции, преобразующие строки из Unicode в ANSI, обращаться к CreateWindowEx, снова вызывать функции, преобразующие строки — на этот раз ил ANSI в Unicode, и освобождать временные буферы. Так что в Windows 98 работать с Unicode не столь удобно, как в Windows 2000.

Хотя большинство Unicode-функций в Windows 98 ничего не делает, некоторые
все же реализованы Вот они:

    * EnumResourceLanguagesW
    * EnumResourceNamesW
    * EnumResourceTypesW
    * ExtTextOutW
    * FindResourceW
    * FindRcsourceExW
    * GetCharWidthW
    * GetCommandLineW
    * GetTextExtentPoint32W
    * GetTexiExtentPolntW
    * lstrlenW
    * MessageBoxExW
    * MessageBoxW
    * TextOutW
    * WideCharToMultiByte
    * MuitiByteToWideChar 




Это сообщение отредактировал(а) BorisVorontsov - 12.2.2007, 02:56


--------------------
[code=cpp]
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;
[/code]
PM MAIL ICQ GTalk   Вверх
IcyJet
Дата 12.2.2007, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Цитата(IcyJet @  10.2.2007,  13:37 Найти цитируемый пост)
котором как такового Unicod'а нет

Я это и имел ввиду - просто действительно большинство Unicode-функций не делают ничего (в win9x).
А вопще что бы облегчить себе жизнь, лутчше пользоваться ANSI-входом, все таки, согласитесь, заморочек, помимо Unicod'а, в Win32Api хватает. smile 
З.ы. Статья полезная, мне понравилась smile 
PM MAIL   Вверх
suvorr
Дата 3.12.2012, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 28.1.2006
Где: SPb

Репутация: нет
Всего: нет



Ничего не понял.. Исходный вопрос был "как сохранить"?..  И что куда в кого преобразовывать.. Вот код:

Dim txt As String * 100: txt = "xxxx" + ChrW(178):  TextBox1 = txt:
Open "unicode.txt" For Binary As 1: Put #1, 1, txt: Get #1, 1, txt: TextBox1 = txt:

Первая строка сама по себе работает.. А после второй все плохо.. Надо полагать или Put или Get  "умничают"..
Аналогично при использовании Print  - Line Input и пр.. Что, конечно, уже не удивительно..
И как сделать хорошо?.. 
Спасибо..
PM MAIL WWW Skype   Вверх
suvorr
Дата 3.12.2012, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 28.1.2006
Где: SPb

Репутация: нет
Всего: нет



Все, понял.. Надо    Put #1,1,StrConv(txt,vbUnicode)...TextBox1=StrConv(txt,vbFromUnicode)
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0557 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.