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

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

27.01.2015, 13:10. Показов 1849. Ответов 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
Эксперт по электронике
6573 / 3200 / 335
Регистрация: 28.10.2011
Сообщений: 12,478
Записей в блоге: 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
Эксперт по электронике
6573 / 3200 / 335
Регистрация: 28.10.2011
Сообщений: 12,478
Записей в блоге: 7
27.01.2015, 14:30
Цитата Сообщение от Randen Посмотреть сообщение
всего лишь импорт готовой функции.
Разве из библиотеки на VB не импортируется функция?
Покажите код вызова этой функции.
1
35 / 35 / 15
Регистрация: 06.01.2014
Сообщений: 707
27.01.2015, 14:32  [ТС]
locm, кажется понял. Я вызваю Call методом. Но щас что-нибудь придумаю)
0
Эксперт по электронике
6573 / 3200 / 335
Регистрация: 28.10.2011
Сообщений: 12,478
Записей в блоге: 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
Эксперт по электронике
6573 / 3200 / 335
Регистрация: 28.10.2011
Сообщений: 12,478
Записей в блоге: 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
Эксперт по электронике
6573 / 3200 / 335
Регистрация: 28.10.2011
Сообщений: 12,478
Записей в блоге: 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
Эксперт по электронике
6573 / 3200 / 335
Регистрация: 28.10.2011
Сообщений: 12,478
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru