Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Несоответствие строковых типов 
V
    Опции темы
A5uKa
  Дата 15.11.2008, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


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

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



strcmp(Edit1->Text,UserTabel->Fields->FieldByName("AccountName")->Value)

[BCC32 Error] interview.cpp(32): E2034 Cannot convert 'UnicodeString' to 'const char *'

Использую Builder 2009.. Не могу найти преобразование...
UserTabel - это АДО таблица из mdb
PM   Вверх
YanTsys
Дата 15.11.2008, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



strcmp если не ошибаюсь работает с char*
для получения адреса char* внутри String используй
Код

Edit1->Text.c_str()


а уж что за поле у тебя Value понятия не имею хотя подозреваю что фраза насчет UnicodeString относится именно к нему

Что бы узнать где ошибка попробуй так

String sText1=Edit1->Text;
String sText2=UserTabel->Fields->FieldByName("AccountName")->Value;
strcmp(sText1.c_str(),sText2.c_str());

PM MAIL ICQ   Вверх
A5uKa
Дата 15.11.2008, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


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

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



Ошибка тут ->

strcmp(sText1.c_str(),sText2.c_str());

такая

[BCC32 Error] interview.cpp(33): E2034 Cannot convert 'wchar_t *' to 'const char *'


Это сообщение отредактировал(а) A5uKa - 15.11.2008, 18:35
PM   Вверх
YanTsys
Дата 15.11.2008, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



У меня бидлер 6 версии
Прочитал такую вещь
Цитата

По умолчанию в D2009 String уже UnicodeString, поэтому если нужно 
использовать однобайтовую строку, то описывать нужно как AnsiString


А если так?

AnsiString sText1=Edit1->Text;
AnsiString sText2=UserTabel->Fields->FieldByName("AccountName")->Value;
strcmp(sText1.c_str(),sText2.c_str());


PM MAIL ICQ   Вверх
A5uKa
Дата 15.11.2008, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


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

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



Спасибо. 
Так работает.

но всё же как написать сравнение в одну строку ?

Это сообщение отредактировал(а) A5uKa - 15.11.2008, 19:59
PM   Вверх
YanTsys
Дата 15.11.2008, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Должно работать

strcmp(AnsiString(Edit1->Text).c_str(),AnsiString(UserTabel->Fields->FieldByName("AccountName")->Value).c_str());

Но наверняка в b2009 должен быть способ проще.

Добавлено через 3 минуты и 47 секунд
Кстати а почему strcmp? Нужно разобраться с преобразованием или просто проверить равенство?
Почему не просто 

Код

if ( Edit1->Text==String(UserTabel->Fields->FieldByName("AccountName")->Value) )
 {
   // ...
 }


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


TЋ♥s F1rȜ iƧ BurȠiƞg
***


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

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



[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'

Это сообщение отредактировал(а) A5uKa - 15.11.2008, 20:13
PM   Вверх
YanTsys
Дата 15.11.2008, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



т.е.
такая строка работает
Код

AnsiString sText2=UserTabel->Fields->FieldByName("AccountName")->Value;

а такая нет?
Код

AnsiString(UserTabel->Fields->FieldByName("AccountName")->Value)


PM MAIL ICQ   Вверх
A5uKa
Дата 15.11.2008, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


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

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



Да
AnsiString sText2= AnsiString(UserTabel->Fields->FieldByName("AccountName")->Value);
не работает.
PM   Вверх
YanTsys
Дата 15.11.2008, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Когда после Value нажимаешь на точку и выпадает список вариантов в 6 билдере есть вариант .operator AnsiString() может в B2009 тоже есть такое преобразование? Попробуй выдает ли ошибку

Код

AnsiString sText2= AnsiString(UserTabel->Fields->FieldByName("AccountName")->Value.operator AnsiString());


Чувствую нужно срочно B2009 покупать а то отстану...
PM MAIL ICQ   Вверх
A5uKa
Дата 15.11.2008, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


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

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



Спасибо так работает ...

Есть ещё один маленький вопросик , у меня в mdb базе происходит зацикливание тут

while (UserTabel->Fields->FieldByName("IDUser")!=NULL){
UserTabel->Next();

как-нибудь можно это... починить
PM   Вверх
mrbrooks
Дата 16.11.2008, 09:31 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Вообщето для сравнения строк у UnicodeString есть метод Compare() 
Код

UnicodeString str1 = "blablabla";
UnicodeString str2 = "ыыыыыы";
int res = str1.Compare(str2); //далее курим матчасть.

использовать ansi-функции применимо к unicode-строкам не совсем разумно. тем более что есть аналог strcmp() для unicode - wcscmp()

Код

wcscmp(str1.w_str(), str2.w_str())


Так что мой вам совет не устраивайте братских могил из кодировок когда есть много стандартных способов.


Цитата(A5uKa @  15.11.2008,  20:57 Найти цитируемый пост)
while (UserTabel->Fields->FieldByName("IDUser")!=NULL){UserTabel->Next();

не совсем ясен смысл кода. что за критерий в цикле. конец набора БД?

PM MAIL   Вверх
A5uKa
Дата 16.11.2008, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


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

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



Спасибо за пояснение !

А критерий - просто пройти по записям в таблице  smile  да я знаю, что это глупый вопрос, но то что написано не работает...
PM   Вверх
mrbrooks
Дата 16.11.2008, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



A5uKa, ну тогда что то вроде этого
Код

while (!UserTabel->EoF)
              UserTabel->Next();

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


TЋ♥s F1rȜ iƧ BurȠiƞg
***


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

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



Работает - спасибо  ( только ф маленькая ^_^)

Это сообщение отредактировал(а) A5uKa - 16.11.2008, 12:03
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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