C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Тип wchar_t, Как сравнивать?
Лена
Отправлено: 24.08.2005, 13:38


Мастер участка

Группа: Участник
Сообщений: 501



Как сравнить две переменные типа wchar_t?
CODE

AnsiString id = "PK1";
         String sid = String(id);
         WideString wsid = WideString(sid);
 if(Layer[i]->Name == wsid)//не выполняется, хотя в свойстве Layer[i]->Name гарантировано находиться PK1 типа wchar_t
             {
                Application->MessageBox("Проверка","Ошибка",MB_ICONEXCLAMATION);
             
             }



gvg
Отправлено: 24.08.2005, 15:20


Машинист паровоза

Группа: Участник
Сообщений: 222



А если попробовать так?

if( AnsiString( Layer[i]->Name ) == id )
{
}
xim
Отправлено: 24.08.2005, 15:22


Станционный диспетчер

Группа: Участник
Сообщений: 143



лучше
CODE

WCHAR *wsid=L"PK1";
// если Layer[i]->Name точно wchar_t*
if(!wcscmp(Layer[i]->Name,wsid)){
// ...
}


а так можно
CODE

AnsiString id = "PK1";
        String sid = String(id);
        WideString wsid = WideString(sid);
if(WideString(Layer[i]->Name) == wsid)             {
               Application->MessageBox("Проверка","Ошибка",MB_ICONEXCLAMATION);
             
            }
Лена
Отправлено: 24.08.2005, 17:01


Мастер участка

Группа: Участник
Сообщений: 501



QUOTE (xim @ 24/08/2005, 15:22)
лучше
CODE

WCHAR *wsid=L"PK1";
// если Layer[i]->Name точно wchar_t*
if(!wcscmp(Layer[i]->Name,wsid)){
// ...
}


а так можно
CODE

AnsiString id = "PK1";
String sid = String(id);
WideString wsid = WideString(sid);
if(WideString(Layer[i]->Name) == wsid) {
Application->MessageBox("Проверка","Ошибка",MB_ICONEXCLAMATION);

}

Cпасибо, буду пробывать!

Вернуться в Вопросы программирования в C++Builder