Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C++ Builder > Несоответствие строковых типов |
Автор: A5uKa 15.11.2008, 15:57 |
strcmp(Edit1->Text,UserTabel->Fields->FieldByName("AccountName")->Value) [BCC32 Error] interview.cpp(32): E2034 Cannot convert 'UnicodeString' to 'const char *' Использую Builder 2009.. Не могу найти преобразование... UserTabel - это АДО таблица из mdb |
Автор: YanTsys 15.11.2008, 17:59 | ||
strcmp если не ошибаюсь работает с char* для получения адреса char* внутри String используй
а уж что за поле у тебя Value понятия не имею хотя подозреваю что фраза насчет UnicodeString относится именно к нему Что бы узнать где ошибка попробуй так String sText1=Edit1->Text; String sText2=UserTabel->Fields->FieldByName("AccountName")->Value; strcmp(sText1.c_str(),sText2.c_str()); |
Автор: A5uKa 15.11.2008, 18:35 |
Ошибка тут -> strcmp(sText1.c_str(),sText2.c_str()); такая [BCC32 Error] interview.cpp(33): E2034 Cannot convert 'wchar_t *' to 'const char *' |
Автор: YanTsys 15.11.2008, 19:21 | ||
У меня бидлер 6 версии Прочитал такую вещь
А если так? AnsiString sText1=Edit1->Text; AnsiString sText2=UserTabel->Fields->FieldByName("AccountName")->Value; strcmp(sText1.c_str(),sText2.c_str()); |
Автор: A5uKa 15.11.2008, 19:58 |
Спасибо. Так работает. но всё же как написать сравнение в одну строку ? |
Автор: YanTsys 15.11.2008, 20:03 | ||
Должно работать strcmp(AnsiString(Edit1->Text).c_str(),AnsiString(UserTabel->Fields->FieldByName("AccountName")->Value).c_str()); Но наверняка в b2009 должен быть способ проще. Добавлено через 3 минуты и 47 секунд Кстати а почему strcmp? Нужно разобраться с преобразованием или просто проверить равенство? Почему не просто
|
Автор: A5uKa 15.11.2008, 20:12 |
[BCC32 Error] interview.cpp(40): E2031 Cannot cast from 'Variant' to 'UnicodeString' это если стринг AnsiString(UserTabel->Fields->FieldByName("AccountName")->Value) если так то... [BCC32 Error] interview.cpp(40): E2031 Cannot cast from 'Variant' to 'AnsiString' |
Автор: YanTsys 15.11.2008, 20:21 | ||||
т.е. такая строка работает
а такая нет?
|
Автор: A5uKa 15.11.2008, 20:24 |
Да AnsiString sText2= AnsiString(UserTabel->Fields->FieldByName("AccountName")->Value); не работает. |
Автор: YanTsys 15.11.2008, 20:31 | ||
Когда после Value нажимаешь на точку и выпадает список вариантов в 6 билдере есть вариант .operator AnsiString() может в B2009 тоже есть такое преобразование? Попробуй выдает ли ошибку
Чувствую нужно срочно B2009 покупать а то отстану... |
Автор: A5uKa 15.11.2008, 20:57 |
Спасибо так работает ... Есть ещё один маленький вопросик , у меня в mdb базе происходит зацикливание тут while (UserTabel->Fields->FieldByName("IDUser")!=NULL){ UserTabel->Next(); как-нибудь можно это... починить |
Автор: A5uKa 16.11.2008, 10:51 |
Спасибо за пояснение ! А критерий - просто пройти по записям в таблице ![]() |
Автор: mrbrooks 16.11.2008, 11:26 | ||
A5uKa, ну тогда что то вроде этого
|
Автор: A5uKa 16.11.2008, 12:02 |
Работает - спасибо ( только ф маленькая ^_^) |