![]() |
|
![]() ![]() ![]() |
|
Гость_Инна |
|
|||
Unregistered |
VARIANT v1
v1.bstrVal имеет тип wchar_t. Как привести к AnsiString? Так не правильно: AnsiString strProverka = AnsiString(v1.bstrVal); |
|||
|
||||
AntonChik |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 4.10.2005 Где: Красноярск Репутация: 1 Всего: 1 |
ну а как же
extern PACKAGE AnsiString __fastcall WideCharToString(wchar_t * Source); ???? ![]() вобщем,попробуй AnsiString strProverka = WideCharToString(v1.bstrVal); Это сообщение отредактировал(а) AntonChik - 18.11.2005, 06:09 --------------------
"Человек притаился за деревом. За широким огромным деревом. Он выглядывал тихонько и прятался. Но его никто не преследовал." (с) Хорги |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
если v1.bstrVal таки имеет тип wchar_t то понятно что не правильно ( нет у АнсиСтринга конструктора от длинного символа. а если wchar_t* -- вполне правильно:
AnsiString strProverka(v1.bstrVal); -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Guest |
|
|||
Unregistered |
Ошибка получается и на строке
AnsiString strProverka(v1.bstrVal); и на строке AnsiString strProverka = AnsiString(v1.bstrVal); Ошибка одна и таже: Access violation at address 7C80A2C8 in module "kernel32.dll" Read of address 80000000. В точке останова вижу, что в v1.bstrVal храняться пустые кавычки "" тип wchar_t* Cоотвественно пишу: String strProverka = WideCharToString(v1.bstrVal); if (strProverka == "") { // } но до if не доходит сразу исключение. ![]() |
|||
|
||||
Vyacheslav |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
А какой реально тип у v1?
Добавлено @ 13:10 Имеется в виду значение
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
Гость_Инга |
|
|||
Unregistered |
v1 обявлен как Variant.
В коде происходит инициализация. В точке останова вижу при наведении курсора, что v1.bstrVal="" после этого пытаюсь безуспешно привести к String ![]() |
|||
|
||||
Neitron |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 580 Регистрация: 3.10.2005 Где: Москва Репутация: нет Всего: 5 |
Навскидку, есть еще WideString
![]() -------------------- Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей. Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
а нефик фсякую гадость пытатся непонятно куда приводить... ( проверку на NULL можно и ввсести ) + вопрос Vyacheslav' а таки остается в силе... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Inga |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 18.11.2005 Репутация: нет Всего: нет |
Проверку на NULL я использую. Иногда v.bstrVal="" это надо отловить
Вот на рисунке такой момент когда v.bstrVal="" Я проверяю на NULL и использую это, иногда v.bstrVal="", а это уже не NULL Присоединённый файл ( Кол-во скачиваний: 12 ) ![]() |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
прикол в том, что vt 5 это VT_R8 ( 8-ми байтное вещественное ), и в строку его переводить...
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Inga |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 18.11.2005 Репутация: нет Всего: нет |
Как правильно написать условие if чтобы отбросить если встретиться v.bstrVal="" ?
|
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
так и написать: v.bstrVal != ""
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Inga |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 18.11.2005 Репутация: нет Всего: нет |
Я так пробовала, но это же сравнение wchar_t и String, поэтому не работало.
Я нашла такое решение, посмотрела, что когда v.bstrVal = "", то scode у variant v меньше нуля или равно единице, во всех остальных случаях оно больше нуля, поэтому новый if все исправил. Сейчас вроде все работает: if(v.scode<0 || v.scode==1) |
|||
|
||||
Neitron |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 580 Регистрация: 3.10.2005 Где: Москва Репутация: нет Всего: 5 |
Это сравнение wchar_t и простого char
а не String для расширинных ф-ция существует множество ф-ций в самой библиотеке Cи. -------------------- Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей. Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
ну с L"" сравни.
только повторюсь -- у тебя там не строка болтается... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |