![]() |
|
![]() ![]() ![]() |
|
vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
Ребят, как узнать длину строки wchar_t?
wchar_t *qwe; Стандартные методы не подходят! заранее спасибо! -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
wcslen не подойдет?
|
|||
|
||||
vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
Да подошел! Большое человеческое спасибо!
А что это за переменная? Просто мне модуль готовый дали, а там этот тип! Где можно найти информацию, какие команды применимы к этому типу, и т.д. и т.п? -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
wchar_t - это "широкие символы". Т.е не char, а по сути int - кодировка Unicode
|
|||
|
||||
AndAnd |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 22.7.2006 Репутация: нет Всего: 1 |
Примерно вот это:
|
|||
|
||||
HappyLife |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: 4 Всего: 8 |
Это переменная Юникода.
два байта - один символ. |
|||
|
||||
vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
примерно понятно, спасибо всем!!!
-------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
myk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 2.3.2009 Репутация: нет Всего: нет |
а я не понял)=. можно обьяснить или дать почитать как этими типами строковыми оперировать. вот к примеру
с екселем мучаюсь. Cur=sheet.OlePropertyGet("Cells",index,j); Cur.OlePropertySet("Value",DBGrid1->Fields[j-1]->AsString.c_str()); неробит когда мучаюсь с fopen(SaveDialog1->FileName.c_str(),"w"); неробит )= запарили эти widestring unicodestring wchar_t разъясните пожалуйста. в 6 билдере AnsiString.c_str() приводил к char, а в билдере 2009 к wchar_t. ![]() |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 26 Всего: 459 |
wchar_t может быть либо 2 либо 4 байта, потому нужно всегда проверять.
В Билдере String это unicodestring строка из wchar_t символов wchar_t это аналог char только размером не байт. Если нужно ему присвоить значение то это будет выглядеть так wchar_t ch = L'C'; Если это строка wchar_t *ch = L"Строка"; -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
myk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 2.3.2009 Репутация: нет Всего: нет |
о том что для выражений L"XXX" работает я понял, непонял как
OlePropertySet("Value",DBGrid1->Fields[j-1]->AsString.c_str()); fopen(SaveDialog1->FileName.c_str(),"w"); сделать чаром |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
||||
|
||||
rthsobakas |
|
||||||
Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 562 Регистрация: 20.9.2007 Репутация: нет Всего: -1 |
myk,
ага... меня тоже это напрягает. У меня проблем. код
нажимаю Ф9. [BCC32 Error] PTestDll.cpp(19): E2034 Cannot convert 'wchar_t *' to 'char *' [BCC32 Error] PTestDll.cpp(19): E2342 Type mismatch in parameter 's' (wanted 'char *', got 'wchar_t *') Ф-ия Code_Dec выглядит так
И что такое L??? все пишут перед строкой Это сообщение отредактировал(а) rthsobakas - 2.3.2009, 22:53 |
||||||
|
|||||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 26 Всего: 459 |
плюс ко всем fopen заменяется на _wfopen
Признак строки в юникоде. От слова Long я думаю. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
myk |
|
||||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 2.3.2009 Репутация: нет Всего: нет |
OlePropertySet("Value",DBGrid1->Fields[j-1]->AsString.с_str()); открывается асм отладчик (не пашет в 2009 билдере в пред версиях c_str() был char) OlePropertySet("Value",DBGrid1->Fields[j-1]->AsString); оле выдает сообщение о неверном типе переменной из за этой строки
пробовал(= out=_wfopen(SaveDialog1->FileName.w_str(),"w"); [BCC32 Error] Unit1.cpp(127): E2034 Cannot convert 'const char *' to 'const wchar_t *' [BCC32 Error] Unit1.cpp(127): E2342 Type mismatch in parameter '__mode' (wanted 'const wchar_t *', got 'const char *') |
||||
|
|||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
||||
|
||||
myk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 2.3.2009 Репутация: нет Всего: нет |
никто на билдере не пишет чтоли?(= как мне в ексель записывать wchar_t ? другим методом или всетаки есть какие то функции преобразования
Это сообщение отредактировал(а) myk - 3.3.2009, 10:06 |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 26 Всего: 459 |
Опять жеж про L забыл
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
rthsobakas |
|
||||||||||||||
Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 562 Регистрация: 20.9.2007 Репутация: нет Всего: -1 |
блин... во всем китайцы виноваты. Alexeis, дык ниче у него не переконвертируется w_str() и с_str() в wchar_t переводят. http://www.sql.ru/forum/actualthread.aspx?tid=577447
http://www.programmersforum.ru/showthread.php?t=25474
Если честно , то я плохо понял как конвертировать. если кто понял, то как относительно моего примера будет?
Добавлено через 6 минут и 3 секунды CP_ACP The current system Windows ANSI code page. This value can be different on different computers, even on the same network. It can be changed on the same computer, leading to stored data becoming irrecoverably corrupted. This value is only intended for temporary use and permanent storage should be done using UTF-16 or UTF-8 if possible. Перевод сократа
Это сообщение отредактировал(а) rthsobakas - 3.3.2009, 12:59 |
||||||||||||||
|
|||||||||||||||
rthsobakas |
|
|||
Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 562 Регистрация: 20.9.2007 Репутация: нет Всего: -1 |
http://msdn.microsoft.com/en-us/library/bb202786.aspx
int MultiByteToWideChar( UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar ); |
|||
|
||||
rthsobakas |
|
|||
Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 562 Регистрация: 20.9.2007 Репутация: нет Всего: -1 |
[ILINK32 Error] Fatal: Unable to open file '相Ⴜ"Ⴔ"農相ꊊ相ꀁ盞勑ƊĄ.OBJ'
Возникает если
|
|||
|
||||
myk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 2.3.2009 Репутация: нет Всего: нет |
я попробовал это исполнять сперва тоже чето не открывалось но потом пересоздал проект и все сделал внимательно((=
а по поводу чаров надо помоеум другую среду юзать, builder 2007 не имеет таких галов ну и по приятнее чем builder 6 . Это сообщение отредактировал(а) myk - 4.3.2009, 05:13 |
|||
|
||||
myk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 2.3.2009 Репутация: нет Всего: нет |
вот так работает(= неужели никто не знал про этот метод?? |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
||||
|
||||
myk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 2.3.2009 Репутация: нет Всего: нет |
это чисто пример, как приводить к чару из юникода. мне надо было через оле в ексель передавать чар строки, другие он не принимал ругаясь ошибками, .c_str() не помогал а .t_str() делает.
Это сообщение отредактировал(а) myk - 13.3.2009, 05:03 |
|||
|
||||
ZAK |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 9.7.2007 Репутация: нет Всего: нет |
Вынужден был давеча портировать проект с VC++ 6.0 на VC++ 2005 и пользуясь инструкцией, написанной менеджером проекта, для конвертирования в/из Unicode широко использовал макросы ATL. Для констант - _T(""), для переменных CA2T(), CT2A(), CW2T() и т.п.
http://msdn.microsoft.com/ru-ru/library/87zae4a3.aspx http://msdn.microsoft.com/ru-ru/library/805c56f8.aspx |
|||
|
||||
batraq |
|
|||
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 12.4.2007 Репутация: нет Всего: нет |
А может кто знает в std::wstring и вообще в STL есть готовые функции чтобы гонять строки из верхнего регистра в нижний и наоборот?
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ 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. |