Форум программистов, компьютерный форум, киберфорум
Pure Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
35 / 35 / 15
Регистрация: 06.01.2014
Сообщений: 707

Передача unicode строки в библиотеку VB

27.01.2015, 13:10. Показов 1822. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Поменял в проекте кодировку на Unicode. Теперь библиотека VB принимает пустые строки.
Что можно сделать?
Может как-то передавать строку в обычной кодировке? Но такой способ в самом PB дает пустую строку:
PureBasic
1
2
Text.s = "Текст"
Text2.s = PeekS(@*Text, -1, #PB_Unicode)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.01.2015, 13:10
Ответы с готовыми решениями:

Передача Unicode-строки в функцию по ссылке
Добрый день, товарищи форумчане. Я столкнулся с такой вот задачей: Есть некая функция, например, void FindFile(LPCWSTR Dir, LPCWSTR...

Передача Unicode-строки через сокет. Видимо что-то случилось...
Добрый день! Пытаюсь написать простенькое клиент-серверное приложение - сервер слушает какой-либо порт, и, при подключении клиента...

Передача объекта в библиотеку
У меня в проге есть форма и библиотека, на форме расположен грид VSFlexgrid. Библиотека отвечает за поиск внутри грида. Так вот, при...

12
Эксперт по электронике
6493 / 3123 / 331
Регистрация: 28.10.2011
Сообщений: 12,277
Записей в блоге: 7
27.01.2015, 13:25
Если проект юникодный, то строку не нужно перекодировать, ведь она и так в юникоде. Возможно в VB какие-то нестандартные юникодные стоки. Возможно BSTR. PB поддерживает этот тип строки (в прототипах, интерфейсах и импорте) через псевдотип p-bstr.
1
35 / 35 / 15
Регистрация: 06.01.2014
Сообщений: 707
27.01.2015, 14:22  [ТС]
locm, не понятно. Что делать с этим? Как мне передать строку p-bstr, как вообще создать такую переменную? Если в примере по вашей ссылке всего лишь импорт готовой функции. По моему, этот пример вообще бесполезен.

До этого я пользовался функцией, для преобразования в bstr:
PureBasic
1
2
3
4
5
6
7
8
9
10
Procedure.l ansi2bstr(ansi.s)
  size.l=MultiByteToWideChar_(#CP_ACP,0,ansi,Len(ansi),0,0)
  Dim unicode.w(size)
  MultiByteToWideChar_(#CP_ACP, 0, ansi, Len(ansi), unicode(), size);#CP_ACP
  For i=0 To size
        tmp.s + Hex(unicode(i),#PB_Unicode)
        Next
  ;MessageRequester(Str(size), tmp )
  ProcedureReturn SysAllocString_(@unicode())
EndProcedure
А как её переделать под юникод?
0
Эксперт по электронике
6493 / 3123 / 331
Регистрация: 28.10.2011
Сообщений: 12,277
Записей в блоге: 7
27.01.2015, 14:30
Цитата Сообщение от Randen Посмотреть сообщение
всего лишь импорт готовой функции.
Разве из библиотеки на VB не импортируется функция?
Покажите код вызова этой функции.
1
35 / 35 / 15
Регистрация: 06.01.2014
Сообщений: 707
27.01.2015, 14:32  [ТС]
locm, кажется понял. Я вызваю Call методом. Но щас что-нибудь придумаю)
0
Эксперт по электронике
6493 / 3123 / 331
Регистрация: 28.10.2011
Сообщений: 12,277
Записей в блоге: 7
27.01.2015, 14:41
Нужно вызывать через прототип.
1
35 / 35 / 15
Регистрация: 06.01.2014
Сообщений: 707
27.01.2015, 14:45  [ТС]
Не получается.
PureBasic
1
2
3
Import "тут полный путь до *.lib файла"
  DocumentOpen(Word.l, Path.p-bstr)
EndImport
Пишет ошибку unresolved external symbol '_DocumentOpen'
0
Эксперт по электронике
6493 / 3123 / 331
Регистрация: 28.10.2011
Сообщений: 12,277
Записей в блоге: 7
27.01.2015, 14:50
Возможно в lib-файле другое имя у функции. Его нужно открыть в каком-то hex-просмоторщике (в крайнем случае, перетащить lib-файл в окно редактора PB) и посмотреть какое у функции имя.
1
35 / 35 / 15
Регистрация: 06.01.2014
Сообщений: 707
27.01.2015, 14:53  [ТС]
locm, а можно вместо импорта прототип использовать?
0
Эксперт по электронике
6493 / 3123 / 331
Регистрация: 28.10.2011
Сообщений: 12,277
Записей в блоге: 7
27.01.2015, 14:58
Можно.
PureBasic
1
2
3
4
5
Prototype DocumentOpen(Word.l, Path.p-bstr)
If OpenLibrary(0, "VB_Lib.dll")
  DocumentOpen.DocumentOpen = GetFunction(0, "DocumentOpen")
  DocumentOpen(0, "С:\1234.doc")
EndIf
1
35 / 35 / 15
Регистрация: 06.01.2014
Сообщений: 707
27.01.2015, 15:09  [ТС]
Хорошо. Но таким образом функция даже не начинает выполняться. Всё из-за типа p-bstr. Функция принимает String.
В чём может быть проблема?

Добавлено через 4 минуты
"не начинает выполняться" это я подразумевал что выдает ошибку)
0
Эксперт по электронике
6493 / 3123 / 331
Регистрация: 28.10.2011
Сообщений: 12,277
Записей в блоге: 7
27.01.2015, 15:14
Цитата Сообщение от Randen Посмотреть сообщение
Функция принимает String.
Для начала нужно выяснить какой формат строки в VB6.
1
35 / 35 / 15
Регистрация: 06.01.2014
Сообщений: 707
27.01.2015, 16:14  [ТС]
locm, скорее всего bstr. Т.к. эта функция:
PureBasic
1
2
3
4
5
6
7
8
9
10
Procedure.l ansi2bstr(ansi.s)
  size.l=MultiByteToWideChar_(#CP_ACP,0,ansi,Len(ansi),0,0)
  Dim unicode.w(size)
  MultiByteToWideChar_(#CP_ACP, 0, ansi, Len(ansi), unicode(), size);#CP_ACP
  For i=0 To size
        tmp.s + Hex(unicode(i),#PB_Unicode)
        Next
  ;MessageRequester(Str(size), tmp )
  ProcedureReturn SysAllocString_(@unicode())
EndProcedure
при кодировке Ansi, выручала.

Добавлено через 58 минут
Всё, разобрался. Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.01.2015, 16:14
Помогаю со студенческими работами здесь

Передача констант через динамически подгружаемую библиотеку
Всем привет! Создал LS-библиотеку, общую для нескольких баз системы. Специфику же каждой базы определил через константы в персональной...

Unicode - указатели на строки
Добрый день! Работаю в VS 2010. Для начала приведу вырезку из кода: void Rational::errorMsg() const { ...

Сохранить строки в Unicode
Здравствуйте! Подскажите как сохранить две строки (String str, str_2) в файл в Unicode. Так вот пробую OutputStreamWriter pw...

Сменить кодировку строки на Unicode
Ребят, подскажите, каким образом это делается? $str = "asdfasdf"; Как ее в unicode преобразовать?

Как выводить строки в unicode?
почему не выводит на экран строки в формате unicode? в win32 прикрасно работает, а в консоле не выводит... #include <iostream> ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru