Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут
закрыты.
Читайте
требования к создаваемым темам.
-
Inferno
-
- Продвинутый пользователь

-
-
- Сообщения: 179
- Зарегистрирован: 26.01.2005 (Ср) 1:06
Inferno » 03.02.2005 (Чт) 11:46
Доброе время суток.
Суть проблемы: Имеются папки и файлы на китайском языке. После выбора файла через соммоdialog и потом проверки через FileExist- матюгается, что такого файла нет. Если вывести полученный путь к файлу, то китайские символы заменяет знаками вопросов.
Пробовал выбирать файлы и через API- тажа ерунда.
Пример:
c:/folder/"Папка на китайском"/1/
будет выведен как с:/folder/Я идиот! Убейте меня, кто-нибудь!????/1/
Может кто-то подскажет как боротся с такой проблемкой.
-
hCORe
-
- VB - Экстремал

-

-
- Сообщения: 2332
- Зарегистрирован: 22.02.2003 (Сб) 15:21
- Откуда: parent directory
-
hCORe » 03.02.2005 (Чт) 11:56
Все ANSI-версии API-функций замени на Unicode
Например, была функция:
- Код: Выделить всё
Private Declare Function BlaBlaBla Lib "rtfm32.dll" _
Alias "BlaBlaBlaA" (ByVal dwNumber As Long, _
ByVal lpstrData As String) As Long
И вызывал ты ее так:
- Код: Выделить всё
...
Dim lRes As Long
Dim sMyString As String, lNum As Long
sMyString = "RTFM!"
lNum = &H0&
lRes = BlaBlaBla(lNum, sMyString)
...
А стала:
- Код: Выделить всё
Private Declare Function BlaBlaBla Lib "rtfm32.dll" _
Alias "BlaBlaBlaW" (ByVal dwNumber As Long, _
ByVal lpstrData As Long) As Long
И вызывается так:
- Код: Выделить всё
...
Dim lRes As Long
Dim sMyString As String, lNum As Long
sMyString = "RTFM!"
lNum = &H0&
lRes = BlaBlaBla(lNum, VarPtr(sMyString))
...
Моду создают модоки, а распространяют модозвоны.
-
Inferno
-
- Продвинутый пользователь

-
-
- Сообщения: 179
- Зарегистрирован: 26.01.2005 (Ср) 1:06
Inferno » 03.02.2005 (Чт) 12:08
Насколько я понял из вышенаписанного разница между названиями анси функций и юникодовых в последней букве алиаса,
тоесть если стоит
- Код: Выделить всё
Alias "BlaBlaBlaA"
-то это анси функция
а если
- Код: Выделить всё
Alias "BlaBlaBlaW"
- ТО это юникодовая.
Я понял правильно?
-
alibek
-
- Большой Человек

-
-
- Сообщения: 14205
- Зарегистрирован: 19.04.2002 (Пт) 11:40
- Откуда: Russia
alibek » 03.02.2005 (Чт) 12:15
Да.
Плюс следует учитывать, что при вызове API VB в любом случае производит конвертацию. Поэтому надо передавать указатель, VarPtr/StrPtr.
Lasciate ogni speranza, voi ch'entrate.
Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: AhrefsBot, Google-бот, SemrushBot, Yandex-бот и гости: 10