Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 08.06.2009
Сообщений: 48

Error: expression can't be evaluated

02.10.2009, 23:06. Показов 2991. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравстуйте!
Помогите, пожалуйста, разобраться, почему возникает ошибка и избавиться от нее. Есть вот такая ф-ция (член класса):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    int ExecQuery(char *str, bool output) {
        if (!CN_STATUS) return 0;
/* ERROR */     if (mysql_query(cn, str) != NULL) {
            cout << mysql_error(cn) << endl;
            mysql_close(cn);
            return 0;
        };
    
        if (output) {
            res = mysql_store_result(cn);
            cout << "---------------------------------------\nQuery result:\n";
            while ( (row = mysql_fetch_row(res)) != NULL ) {
                for (i=0; i<mysql_field_count(cn); i++) 
                    cout << row[ i ] << "     ";
                    cout << endl;
                };
            cout << "---------------------------------------\n";
        };
 
        return 1;
    };
И есть три вызова этой ф-ции:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 . . . .
string *query_str;
query_str = new string[sizeof(long)];
. . . .
strcat((char*) query_str, "UPDATE users SET ");
        strcat((char*) query_str, f_names[ 0 ]);
        strcat((char*) query_str, "=123456 WHERE ");
        for (i=0; i<mysql_num_fields(res); i++) {
            . . . . .
            strcat((char*) query_str, t2[ i ]);
            . . . . .
        };
        strcat((char*) query_str, ";");
        ExecQuery((char*) query_str, false);
 
        strcpy((char*) query_str, "UPDATE users SET ");
        for (i=0; i<mysql_num_fields(res); i++) {
            if ( (i != 0) && (i != mysql_num_fields(res)) ) strcat((char*) query_str, ", ");
            strcat((char*) query_str, f_names[ i ]);
            strcat((char*) query_str, "=");
            . . . . .
            strcat((char*) query_str, t2[ i ]);
            . . . . .
        };
        strcat((char*) query_str, " WHERE ");
        for (i=0; i<mysql_num_fields(res); i++) {
            if ( (i != 0) && (i != mysql_num_fields(res)) ) strcat((char*) query_str, ", ");
            strcat((char*) query_str, f_names[ i ]);
            strcat((char*) query_str, "=");
            . . . . .
            strcat((char*) query_str, t1[ i ]);
            . . . . .
        };
        strcat((char*) query_str, ";");
        ExecQuery((char*) query_str, false);
 
        strcpy((char*) query_str, "UPDATE users SET ");
        for (i=0; i<mysql_num_fields(res); i++) {
            if ( (i != 0) && (i != mysql_num_fields(res)) ) strcat((char*) query_str, ", ");
            strcat((char*) query_str, f_names[ i ]);
            strcat((char*) query_str, "=");
            . . . . .
            strcat((char*) query_str, t1[ i ]);
            . . . . .
        };
        strcat((char*) query_str, " WHERE ");
        strcat((char*) query_str, f_names[ 0 ]);
        strcat((char*) query_str, "=123456;");
        ExecQuery((char*) query_str, false);   // 3
При 3-ем вызове возникает ошибка в ф-ции ExecQuery на обозначенной в коде строке. При наведении курсора на перем. str показывает: "АДРЕС <Bad Ptr> Error: expression can not be evaluated". Что делать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.10.2009, 23:06
Ответы с готовыми решениями:

CXX0030: Error: expression cannot be evaluated
Добрый вечер! я новичок в программировании, подскажите что за ошибка и как ее исправить. компилирую код, он компилится, но выдает...

This expression is typed incorrectly, or it is too complex to be evaluated
Я хочу вашей помощи, у меня проблема такая &quot; this expression is typed incorrectly,or it is too complex to be evaluated.for example ,a...

Error 1 error C2450: switch expression of type 'char [80]' is illegal
проблемы с Case, хочу чтобы работало с чаром char yn; cin&gt;&gt;yn; switch(yn); case'y':{cout&lt;&lt;&quot;GOOD&quot;&lt;&lt;endl;} ...

7
Эксперт по математике/физике
 Аватар для Том Ардер
4218 / 3418 / 396
Регистрация: 15.06.2009
Сообщений: 5,818
02.10.2009, 23:48
Цитата Сообщение от oler117 Посмотреть сообщение
string *query_str; query_str = new string[sizeof(long)];
Какова _максимальная_ длина строки query_str (по её объявлению) и сколько в неё на самом деле запихивается?
0
Maniac
Эксперт С++
 Аватар для ISergey
1465 / 966 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
03.10.2009, 00:03
C++
1
2
3
4
5
6
string *query_str;
query_str = new string[sizeof(long)];
. . . .
strcat((char*) query_str, "UPDATE users SET ");
                strcat((char*) query_str, f_names[ 0 ]);
                strcat((char*) query_str, "=123456 WHERE ");
Вы что прикалываетесь?

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <string>
 
int main()
{
    std::string str;
    str += "aaaa";
    str += " ddddd";
 
    std::cout << str;
    return 0;
}
Вот почитайте http://www.cplusplus.com/reference/string/string/
0
0 / 0 / 0
Регистрация: 08.06.2009
Сообщений: 48
04.10.2009, 23:24  [ТС]
К сожалению ошибка не исчезла.
А в вашем примере на строке вывода ошибка:
C++
1
error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion)
Видимо не судьба выводить строки... Конвертировать в char тоже не получается.
0
Эксперт по математике/физике
 Аватар для Том Ардер
4218 / 3418 / 396
Регистрация: 15.06.2009
Сообщений: 5,818
05.10.2009, 01:38
А почему нельзя написАть примерно так:

C++
1
2
const int size = 1024;
char query_str[size];
Если уж пользоваться strcat. Тогда и приведение типов (char*) можно убрать, и cout будет работать

Добавлено через 18 минут
Если же хочется юзать стринги, то
Цитата Сообщение от ISergey Посмотреть сообщение
Вы что прикалываетесь?

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <string>
 
int main()
{
    std::string str;
    str += "aaaa";
    str += " ddddd";
 
    std::cout << str;
    return 0;
}
Вот почитайте http://www.cplusplus.com/reference/string/string/
Слегка доработано:

C++
1
2
3
4
5
string str("aaa");
 
str += "dddd";
 
cout << str.c_str(); // преобразование в С-строку (char array)
Как обычно, помогает RTFM
0
Maniac
Эксперт С++
 Аватар для ISergey
1465 / 966 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
05.10.2009, 11:46
Цитата Сообщение от Том Ардер Посмотреть сообщение
Слегка доработано:
C++
1
2
3
string str("aaa");
str += "dddd";
cout << str.c_str(); // преобразование в С-строку (char array)
Как обычно, помогает RTFM
Зачем?
ostream& operator<< (ostream& os, const string& str);
0
Эксперт по математике/физике
 Аватар для Том Ардер
4218 / 3418 / 396
Регистрация: 15.06.2009
Сообщений: 5,818
06.10.2009, 01:57
Правда Ваша
C++
1
2
3
4
        std::string str ("test string");
 
        cout << str << endl;       // правильно
        std::cout << str << endl;// правильно
Неясно тогда, что же не получилось у oler117 ?
0
0 / 0 / 0
Регистрация: 08.06.2009
Сообщений: 48
06.10.2009, 16:43  [ТС]
Непонятно почему, но ошибка была из-за неверного скул-запроса...
Проблемма решена.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.10.2009, 16:43
Помогаю со студенческими работами здесь

Error: expression syntax error, NASM
Здравствуйте! Пишу программу, которая получает на вход количество элементов целочисленного массива (0&lt;N&lt;10000), затем N чисел через...

Error in expression
program cherga; uses crt; type Ptr=^Item; Item=record tovar:string; next:Ptr; end; var head,current:Ptr;

Error: Illegal expression
Выдает ошибку в в последней строке из двух copyTimeBoxMaxY := AOfLabelInATimeBoxMaxY; copyTimeBoxMaxY.nalichie = true; при...

Expression syntax error
Возникает ошибка: class goods{ char gtype; //item name char brand; //item producer int price; ...

Error: "expression Out Of Range"
Подскажите, плз..... После нажатия на кнопку, у пользователя выскочила ошибка &quot;Expression out of range&quot;... У меня не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru