Форум: Форум C++Разное
Новые темы: 00
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Извлечь текст из текстовой области и отобразить в диалоговом окне
 
 автор: Киналь   (04.02.2007 в 22:41)   письмо автору
 
 

В очередной раз взял себя в руки и начал изучать С++ и Builder. Почувствовал себя юным и зеленым=)
Ладно, это лирика. Вопрос простой до ужаса: как получить данные от пользователя? Поясню: Вот есть TEdit, в нем некоторый текст. Этот текст находится в Edit1->Text. Меня даже хватило на Edit2->Text = Edit1->Text=) Но вот уже вывести его MessageBox'ом почему-то не сумел:

MessageBox(Edit1->Text);

Чтобы сделать хоть что-то толковое, попытался привести тип:

float a;

a = StrToFloat(Edit1->Text);
MessageBox(a);

Опять не вышло. Словом, у меня переменных-то нет, обрабатывать нечего) Сообщения об ошибках читал, не понял.

Что делать-то?)


PS Эх, как в РНР все просто было...=)

  Ответить  
 
 автор: cheops   (05.02.2007 в 03:14)   письмо автору
 
   для: Киналь   (04.02.2007 в 22:41)
 

Дело в том, что MessageBox(), это функция Windows API и содержит 4 параметра, т.е. вызывать её следует так
MessageBox(NULL, Edit1->Text.c_str(), "Название", MB_OK);

Для отладки чаще используют функцию ShowMessage, вот она требует лишь один параметр, причём типа AnsiString, который и возвращает Edit1->Text, т.е. следует писать примерно так
ShowMessage(Edit1->Text);

  Ответить  
 
 автор: Киналь   (05.02.2007 в 12:24)   письмо автору
 
   для: cheops   (05.02.2007 в 03:14)
 

Спасибо!
Да, за название темы прошу прощения)
Только у меня опять вопрос.

int a = 8;

ShowMessage(a); // выводит 8
ShowMessage("a"); // выводит а
ShowMessage("Значение: ".a); // ошибка

Как вывести "Значение: 8"?

  Ответить  
 
 автор: cheops   (05.02.2007 в 13:42)   письмо автору
 
   для: Киналь   (05.02.2007 в 12:24)
 

Нет... в C++ оператор . не связывает подстроки - оператор . служит для доступа к методам и членам объекта и его вообще нельзя перегружать. В С++ Builder можно поступить так
ShowMessage("Значение: " + IntToStr(a));

но это будет работать только в С++ Builder, ни в какую другую среду перенести это решение будет нельзя, впрочем ShowMessage() тоже больше нигде нет. Под windows только MessageBox() доступна везде, так как функция входит в состав Windows API.

  Ответить  
 
 автор: Киналь   (05.02.2007 в 14:41)   письмо автору
 
   для: cheops   (05.02.2007 в 13:42)
 

А как тогда связывать строки? Только strcat()? И еще, как включить переменную в строку? То есть как выглядит аналог $str = "Var \$a = $a"?
Или работа со строками - это вообще последнее, о чем надо думать?=)

  Ответить  
 
 автор: alex19921992   (05.02.2007 в 15:00)   письмо автору
 
   для: Киналь   (05.02.2007 в 14:41)
 

В с++ вообще со строками криво работать. Борланд делала делфи, а там строки можно складывать плюсом, вот они в буилдер и перенесли идею. А в с++ визуальном до такого не додумались.....

  Ответить  
 
 автор: cheops   (05.02.2007 в 15:49)   письмо автору
 
   для: alex19921992   (05.02.2007 в 15:00)
 

В MFC можно использовать тип CString или прибегнуть к типу string из стандартной библиотеки шаблонов STL.

  Ответить  
 
 автор: cheops   (05.02.2007 в 15:48)   письмо автору
 
   для: Киналь   (05.02.2007 в 14:41)
 

Существует несколько видов строк: простые C-строки, которые на самом деле являются символьными массивами следует складывать при помощи strcat(), стандартные string-строки из библиотеки STL можно складывать +, как впрочем и строки CString из VС++ и AnsiString из C++ Builder.

PS Однако как раборают C-строки, связь их с указателями и массивами нужно знать на зубок - это основа всего и той мощи C и C++, благодаря которой языки получили популярность. Можно не использовать C-строки - альтернатив навалом, но как они работают нужно знать, так как от указателей и управления памятью никуда не денешься, даже если использовать мощные и развитые библиотеки.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования