Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2009, 17:10   #1
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию Преобразование строки

Вот я сегодня захотел попробовать начать изучать C++, первый час изучений прошел, вот первый вопрос, я пишу такой код:
Код:
void __fastcall TForm1::bt_3Click(TObject *Sender)
{
 try {
  ed_4->Text = StrToInt(ed_2->Text) + StrToInt(ed_3->Text);
 } catch (Exception *ex) { Application->MessageBox(NULL, ex->Message, "Error!!!", MB_OK | MB_ICONSTOP);
 }
}
У MessageBox'а первый параметр имеет тип WideChar, а ex->Message имеет тип UnicodeString. Как перевести ex->Message в тип WideChar?

В делфи я спокойно бы это сделал, а тут первый час только.

--------------------

Я написал вот так:
Код:
void __fastcall TForm1::bt_3Click(TObject *Sender)
{
 try {
  ed_4->Text = StrToInt(ed_2->Text) + StrToInt(ed_3->Text);
 } catch (Exception *ex) {
  WideChar ch;
  StringToWideChar(ex->Message, ch, )   
  Application->MessageBox(NULL, ch, "Error!!!", MB_OK | MB_ICONSTOP);
 }
}
Только проблема, как узнать размер ex->Message (третий параметр в StringToWideChar, это размер)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.

Последний раз редактировалось Neeter; 30.06.2009 в 17:37.
Neeter вне форума Ответить с цитированием
Старый 30.06.2009, 18:00   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Билдер, как я понимаю?
Там ведь ex->Message имеет тип AnsiString (по крайней мере, у меня так).
И там есть метод c_str(), который возвращает строку в си-формате.
Код:
void __fastcall TForm1::bt_3Click(TObject *Sender)
{
 try {
  ed_4->Text = StrToInt(ed_2->Text) + StrToInt(ed_3->Text);
 } catch (Exception *ex) {
  Application->MessageBox(ex->Message.c_str(), "Error!!!", MB_OK | MB_ICONSTOP);
 }
}
Ну а если все-таки преобразовывать, то ch у вас - один символ. Тогда уж нужно выделять память под строку, как-то так:
Код:
WideChar *ch = new WideChar[ex->Message.Length()+1];
  StringToWideChar(ex->Message, ch, ex->Message.Length());
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 30.06.2009, 18:21   #3
Maks1978
Пользователь
 
Аватар для Maks1978
 
Регистрация: 25.05.2008
Сообщений: 53
По умолчанию

Код:
  WideString *a1, b1; // UnicodeString
  WideChar a2;
  *a1 = "12345";
  b1 = "67890";
  a2 = (wchar_t)a1;
  a2 = (wchar_t)&b1;
Maks1978 вне форума Ответить с цитированием
Старый 30.06.2009, 21:50   #4
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,619
По умолчанию

А чем вам стандартный ShowMessage не угодил?
Или если нужно сделать сообщение без привязки к окну, тогда
Код:
MessageBox(HWND_DESKTOP, "Error", "Error", MB_ICONASTERISK);
MaTBeu вне форума Ответить с цитированием
Старый 02.07.2009, 19:15   #5
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Цитата:
А чем вам стандартный ShowMessage не угодил?
Я же говорю, только начал, сразу захотелось все опробовать) ShowMessage я уже опробовал

Хоть у меня все равно ничего не получилось, всем +
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 05.07.2009, 16:25   #6
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,619
По умолчанию

Да нет, нельзя так, бросать все на полпути. Давайте разберемся. Нужно идти до конца!
MaTBeu вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль. Преобразование строки andronova Помощь студентам 1 13.04.2009 12:55
преобразование строки xaero93 Помощь студентам 3 05.03.2009 13:00
анализ и преобразование текста строки Черная тень Паскаль, Turbo Pascal, PascalABC.NET 6 10.01.2009 17:33
Преобразование строки(ASM) ManU Помощь студентам 4 11.06.2008 17:20
Преобразование строки во время kayman Общие вопросы Delphi 7 02.10.2007 15:41