Поиск:

Ответ в темуСоздание новой темы Создание опроса
> wchar_t 
:(
    Опции темы
vikaz
Дата 9.2.2007, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 10
Всего: 12



Ребят, как узнать длину строки wchar_t?

wchar_t *qwe;

Стандартные методы не подходят! заранее спасибо!


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
Anikmar
Дата 9.2.2007, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



wcslen не подойдет?
PM MAIL ICQ   Вверх
vikaz
Дата 9.2.2007, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 10
Всего: 12



Да подошел! Большое человеческое спасибо!
А что это за переменная? Просто мне модуль готовый дали, а там этот тип! Где можно найти информацию, какие команды применимы к этому типу, и т.д. и т.п?


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
Anikmar
Дата 9.2.2007, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



wchar_t - это "широкие символы". Т.е не char, а по сути int - кодировка Unicode
PM MAIL ICQ   Вверх
AndAnd
Дата 9.2.2007, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 22.7.2006

Репутация: нет
Всего: 1



Примерно вот это:
Код

Кодировка, многобайтовые символы 
Мы уже упоминали о наличии разных кодировок букв, цифр, знаков препинания и т.д. Алфавит большинства европейских языков может быть представлен однобайтовыми числами (т.е. кодами в диапазоне от 0 до 255). В большинстве кодировок принято, что первые 127 кодов отводятся для символов, входящих в набор ASCII: ряд специальных символов, латинские заглавные и строчные буквы, арабские цифры и знаки препинания. Вторая половина кодов – от 128 до 255 отводится под буквы того или иного языка. Фактически, вторая половина кодовой таблицы интерпретируется по-разному, в зависимости от того, какой язык считается "текущим". Один и тот же код может соответствовать разным символам в зависимости от того, какой язык считается "текущим".

Однако для таких языков, как китайский, японский и некоторые другие, одного байта недостаточно – алфавиты этих языков насчитывают более 255 символов.

Перечисленные выше проблемы привели к созданию многобайтовых кодировок символов. Двухбайтовые символы в языке Си++ представляются с помощью типа wchar_t :

wchar_t wch;
Тип wchar_t иногда называют расширенным типом символов, и детали его реализации могут варьироваться от компилятора к компилятору, в том числе может меняться и количество байт, которое отводится под один символ. Тем не менее, в большинстве случаев используется именно двухбайтовое представление.

Константы типа wchar_t записываются в виде L'ab'.



PM MAIL   Вверх
HappyLife
Дата 9.2.2007, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 17.5.2006

Репутация: 4
Всего: 8



Это переменная Юникода.
два байта - один символ.
PM MAIL   Вверх
vikaz
Дата 9.2.2007, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 10
Всего: 12



примерно понятно, спасибо всем!!! 


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
myk
Дата 2.3.2009, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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.  smile  разбиратся
PM MAIL   Вверх
Alexeis
Дата 2.3.2009, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 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 вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
myk
Дата 2.3.2009, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 2.3.2009

Репутация: нет
Всего: нет



о том что для выражений L"XXX" работает я понял, непонял как 

OlePropertySet("Value",DBGrid1->Fields[j-1]->AsString.c_str());
fopen(SaveDialog1->FileName.c_str(),"w");

сделать чаром
PM MAIL   Вверх
mrbrooks
Дата 2.3.2009, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(myk @  2.3.2009,  14:11 Найти цитируемый пост)
сделать чаром 

вместо с_str() использовать w_str()
PM MAIL   Вверх
rthsobakas
Дата 2.3.2009, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 562
Регистрация: 20.9.2007

Репутация: нет
Всего: -1



myk
Цитата

)= запарили эти widestring unicodestring wchar_t разъясните пожалуйста.

в 6 билдере AnsiString.c_str() приводил к char, а в билдере 2009 к wchar_t.    разбиратся

ага... меня тоже это напрягает.

У меня проблем.
 код
Код

Edit1->Text=Code_Dec(Edit1->Text.c_str(),'A');

нажимаю Ф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 выглядит так
Код

char * Code(char *s,char Key){
 for (int i = 0;; i++) {
   if (s[i]=='\0') break;
   s[i]=s[i] ^ Key;
 }
return s;
}


И что такое L??? все пишут перед строкой

Это сообщение отредактировал(а) rthsobakas - 2.3.2009, 22:53
PM   Вверх
Alexeis
Дата 2.3.2009, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 26
Всего: 459



плюс ко всем fopen заменяется на _wfopen

Цитата(rthsobakas @  2.3.2009,  21:35 Найти цитируемый пост)
И что такое L??? все пишут перед строкой

Признак строки в юникоде. От слова Long я думаю.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
myk
Дата 3.3.2009, 04:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 2.3.2009

Репутация: нет
Всего: нет



Цитата( mrbrooks)

вместо с_str() использовать w_str()
 в 2009 билдере c_str() и w_str() свойства типа wchar_t. как же быть то (=

OlePropertySet("Value",DBGrid1->Fields[j-1]->AsString.с_str()); открывается асм отладчик (не пашет в 2009 билдере в пред версиях c_str() был char)
OlePropertySet("Value",DBGrid1->Fields[j-1]->AsString); оле выдает сообщение о неверном типе переменной из за этой строки

Цитата( Alexeis)

плюс ко всем fopen заменяется на _wfopen

пробовал(=

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 *')

PM MAIL   Вверх
mrbrooks
Дата 3.3.2009, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(myk @  3.3.2009,  04:28 Найти цитируемый пост)
в 2009 билдере c_str() и w_str() свойства типа wchar_t.

во-первых метод, а не свойство.
во-вторых - точно возвращают одинаковый тип.  smile 
Цитата(myk @  3.3.2009,  04:28 Найти цитируемый пост)
как же быть то (=

разбираться.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0867 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.