|
|
|
| В очередной раз взял себя в руки и начал изучать С++ и Builder. Почувствовал себя юным и зеленым=)
Ладно, это лирика. Вопрос простой до ужаса: как получить данные от пользователя? Поясню: Вот есть TEdit, в нем некоторый текст. Этот текст находится в Edit1->Text. Меня даже хватило на Edit2->Text = Edit1->Text=) Но вот уже вывести его MessageBox'ом почему-то не сумел:
Чтобы сделать хоть что-то толковое, попытался привести тип:
float a;
a = StrToFloat(Edit1->Text);
MessageBox(a);
|
Опять не вышло. Словом, у меня переменных-то нет, обрабатывать нечего) Сообщения об ошибках читал, не понял.
Что делать-то?)
PS Эх, как в РНР все просто было...=) | |
|
|
|
|
|
|
|
для: Киналь
(04.02.2007 в 22:41)
| | Дело в том, что MessageBox(), это функция Windows API и содержит 4 параметра, т.е. вызывать её следует так
MessageBox(NULL, Edit1->Text.c_str(), "Название", MB_OK); |
Для отладки чаще используют функцию ShowMessage, вот она требует лишь один параметр, причём типа AnsiString, который и возвращает Edit1->Text, т.е. следует писать примерно так
ShowMessage(Edit1->Text); |
| |
|
|
|
|
|
|
|
для: cheops
(05.02.2007 в 03:14)
| | Спасибо!
Да, за название темы прошу прощения)
Только у меня опять вопрос.
int a = 8;
ShowMessage(a); // выводит 8
ShowMessage("a"); // выводит а
ShowMessage("Значение: ".a); // ошибка
|
Как вывести "Значение: 8"? | |
|
|
|
|
|
|
|
для: Киналь
(05.02.2007 в 12:24)
| | Нет... в C++ оператор . не связывает подстроки - оператор . служит для доступа к методам и членам объекта и его вообще нельзя перегружать. В С++ Builder можно поступить так
ShowMessage("Значение: " + IntToStr(a)); |
но это будет работать только в С++ Builder, ни в какую другую среду перенести это решение будет нельзя, впрочем ShowMessage() тоже больше нигде нет. Под windows только MessageBox() доступна везде, так как функция входит в состав Windows API. | |
|
|
|
|
|
|
|
для: cheops
(05.02.2007 в 13:42)
| | А как тогда связывать строки? Только strcat()? И еще, как включить переменную в строку? То есть как выглядит аналог $str = "Var \$a = $a"?
Или работа со строками - это вообще последнее, о чем надо думать?=) | |
|
|
|
|
|
|
|
для: Киналь
(05.02.2007 в 14:41)
| | В с++ вообще со строками криво работать. Борланд делала делфи, а там строки можно складывать плюсом, вот они в буилдер и перенесли идею. А в с++ визуальном до такого не додумались..... | |
|
|
|
|
|
|
|
для: alex19921992
(05.02.2007 в 15:00)
| | В MFC можно использовать тип CString или прибегнуть к типу string из стандартной библиотеки шаблонов STL. | |
|
|
|
|
|
|
|
для: Киналь
(05.02.2007 в 14:41)
| | Существует несколько видов строк: простые C-строки, которые на самом деле являются символьными массивами следует складывать при помощи strcat(), стандартные string-строки из библиотеки STL можно складывать +, как впрочем и строки CString из VС++ и AnsiString из C++ Builder.
PS Однако как раборают C-строки, связь их с указателями и массивами нужно знать на зубок - это основа всего и той мощи C и C++, благодаря которой языки получили популярность. Можно не использовать C-строки - альтернатив навалом, но как они работают нужно знать, так как от указателей и управления памятью никуда не денешься, даже если использовать мощные и развитые библиотеки. | |
|
|
|