Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > MessageBox и операция сложения


Автор: mr.Anderson 21.6.2006, 18:21
Хотел сделать составное сообщение, т.е. генерирующееся по ходу выполнения. Пробовал написать так:
Код

const AnsiString word="вет!";
MessageBox(NULL,"При"+word.c_str(),"Инфо",MB_ICONINFORMATION);

Пишет "Invalid pointer addition". Как быть? 

Автор: _hunter 21.6.2006, 18:24
("При"+word).c_str() 

Автор: mr.Anderson 21.6.2006, 19:53
Не помогло. Все равно Invalid Pointer Addition.

Добавлено @ 20:02 
Вот есть такой код:
Код

const AnsiString version=MainForm->Caption.Delete(1,29);
MessageBox(NULL, ("Версия: " + version) .c_str() + " .", "Инфо", MB_ICONINFORMATION);

Все равно не работает. Инвалид поинтер аддишен. Пробовал "." тоже в скобки - все равно инвалид. 

Автор: Romikgy 21.6.2006, 21:42
Код

MessageBox(NULL, ("Версия: " + version+ " .") .c_str() , "Инфо", MB_ICONINFORMATION);
 

Автор: Void 21.6.2006, 23:34
Очевидно, BCB ошибочно применяет оператор преобразования char*, вместо того, чтобы использовать перегруженный оператор +.
Выход? Ну, например, так:
Код
AnsiString version = "Версия";
version += MainForm->Caption.Delete(1, 29);
version += ".";
MessageBox(NULL, version.c_str(), "Инфо", MB_ICONINFORMATION);

Или воспользоваться функцией Format, кажется, такая была в AnsiString.
Проверить не могу, BCB под рукой нет. 

Автор: 586 21.6.2006, 23:46
Цитата(sim7 @  21.6.2006,  19:21 Найти цитируемый пост)
Хотел сделать составное сообщение, т.е. генерирующееся по ходу выполнения. Пробовал написать так:
Код
const AnsiString word="вет!";
MessageBox(NULL,"При"+word.c_str(),"Инфо",MB_ICONINFORMATION);

Пишет "Invalid pointer addition". Как быть?  


Вот:
Код
const AnsiString word="вет!";
MessageBox(NULL,(String("При")+word).c_str(),"Инфо",MB_ICONINFORMATION);
 

Автор: Vyacheslav 22.6.2006, 09:07
Код

const AnsiString word="вет!";
MessageBox(NULL,(AnsiString("При")+word).c_str(),"Инфо",MB_ICONINFORMATION);


 

Автор: mr.Anderson 22.6.2006, 16:16
Хм... В общем-то, я нашел, наверное, более ненагруженный скобками вариант. Хотя и придется лишних пару строчек кода добавить. Вот так, например, можно:
Код

AnsiString word = "ве";
AnsiString message = "При"+word+"т!";
MessageBox(NULL, message.c_str(), "Инфо", MB_ICONINFORMATION);
 

Автор: Fazil6 22.6.2006, 16:33
Код

AnsiString word = "ве";    
word = "При"+word+"т!";    
MessageBox(NULL, word.c_str(), "Инфо", MB_ICONINFORMATION);
 

Автор: mr.Anderson 22.6.2006, 18:07
Fazil6, а я что написал? smile Не то же самое? 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)