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

Вопрос связанный с InputBox

29.10.2010, 16:03. Показов 6729. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!!!
Возник вопрос, связанный с InputBox'ом, а именно: в хелпе билдера написано, что можно задать InputBox следующим образом -

extern PACKAGE double __fastcall InputBox(const WideString ACaption, const WideString APrompt, double ADefault, double Min = std::numeric_limits<int>::min(), double Max = std::numeric_limits<int>::max(), int Decimals = 1);

Вопрос: как правильно задавать минимальное и максимальное значение?!
С уважением, Goodvin.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.10.2010, 16:03
Ответы с готовыми решениями:

вопрос, связанный с notepad
Если кто имел дело или приходилось писать программы, похожие на родовой виндовский блокнот, помогите. Как мне сделать так, чтобы в блокноте...

Вопрос связанный с ЛУТ
С недавних времен занимаюсь изготовлением для собственных нужд печатных плат, вроде все получается, но когда начинаю покрывать дорожки...

Вопрос связанный с пересечением поверхностей
Здравствуйте!У меня такой вопрос связанный с пересечением поверхностей.Допустим есть точка vPickRayDir в пространстве и объёмный предмет...

5
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
29.10.2010, 17:22
goodvin26, странно, но прототип вроде бы имеет вид:
C++
1
extern PACKAGE System::UnicodeString __fastcall InputBox(const System::UnicodeString ACaption, const System::UnicodeString APrompt, const System::UnicodeString ADefault);
И соответственно, вызов:
C++
1
2
String InputString = InputBox(L"Input Box", L"Prompt", L"Enter string");
Edit1->Text = InputString;
0
0 / 0 / 0
Регистрация: 25.01.2010
Сообщений: 7
29.10.2010, 18:08  [ТС]
Хех, в том то и дело, что там три прототипа приведено. Тот, который написал я - второй. Хочу его заюзать, не знаю как правильно передать значения мин и макс.
У меня C++Builder 6. В поиске искал ImputBox. В найденных разделах выбираю строчку InputBox (есть еще строчка InputBox(Visual Component LibraryReference) ). По требованию хелп показывает следующий текст (да простит меня админ ):
Displays an input dialog box that lets the user enter a string.

Unit

QDialogs

Category

dialog and message routines

extern PACKAGE WideString __fastcall InputBox(constWideString ACaption, const WideString APrompt, const WideString ADefault);
extern PACKAGE double __fastcall InputBox(const WideString ACaption, const WideString APrompt, double ADefault, double Min = std::numeric_limits<int>::min(), double Max = std::numeric_limits<int>::max(), int Decimals = 1);

extern PACKAGE double __fastcall InputBox(const WideString ACaption, const WideString APrompt, int ADefault, int Min
= std::numeric_limits<int>::min(), int Max = std::numeric_limits<int>::min(), int Increment = 1);

Description

Call InputBox to bring up an input dialog box ready for the user to enter a string, double, or integer in its edit box.

ACaption is the caption of the dialog box.

APrompt is the text that prompts the user to enter input in the edit box.

ADefault is the value that appears in the edit box when the dialog box first appears.

AMin is the minimum value the user can enter into the edit box.

AMax is the maximum value the user can enter into the edit box.

Decimals does nothing.

Increment controls the amount by which the value in the spin control changes when the user clicks the up or down arrow. (It has no effect on values that the user types).

If the user chooses the Cancel button, InputBox returns the default value. If the user chooses the OK button, InputBox returns the value in the edit box.

Use the InputBox function when there is a default value that should be used when the user chooses the Cancel button (or presses Esc) to exit the dialog. If the application needs to know whether the user chooses OK or Cancel, use the InputQuery function instead.
По второй строке выдает то, что написали Вы.

Итак, возможно ли использовать второй прототип? Если да, то как.
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
29.10.2010, 18:29
goodvin26, в новых версиях IDE данная функция не перегружена.

Но тем не менее, я создал подобную функцию (поле Decimal можете обработать по желанию):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <limits>
// ...
double __fastcall MyInputBox(const WideString ACaption, const WideString APrompt, double ADefault, double Min = std::numeric_limits<int>::min(), double Max = std::numeric_limits<int>::max(), int Decimals = 1)
{
  double AValue = 0.;
  do {
    try {
      AValue = InputBox(L"Input Box", L"Prompt", ADefault).ToDouble();
    } catch (...) {
      ShowMessage("Введено неверное значение");
    }
  } while (AValue < Min || AValue > Max);
 
 
  return AValue;
}
Соответственно, вызывать её нужно так :
C++
1
2
double Val = MyInputBox(L"Input Box", L"Prompt", 3.14, 0., 9.9, 2);
Edit1->Text = Val;
Т.к. прототип идентичен - уверен, что и стандартную функцию нужно вызывать также.
Пробуйте
0
0 / 0 / 0
Регистрация: 25.01.2010
Сообщений: 7
29.10.2010, 19:30  [ТС]
Мда, действительно не пергружена, и в моей версии тоже )). В хелпе написаны приведенные выше слова, а по факту прототип один - extern PACKAGE WideString __fastcall InputBox(constWideString ACaption, const WideString APrompt, const WideString ADefault); Посмотрел в хедере прототипы диалогов, там он только один.
Проблему решил прибегнув к совету MikeSoft, за что ему категорическое спасибо. Итого получилось следующее:

C
1
2
3
4
5
6
7
8
9
extern double __fastcall MyInputBox(const WideString ACaption, const WideString APrompt, double ADefault, double Min = std::numeric_limits<int>::min(), double Max = std::numeric_limits<int>::max(), int Decimals = 1)
{
  double AValue = ADefault;
  do {
      AValue = InputBox(ACaption, APrompt, AValue).ToDouble();
  } while ((AValue < Min) || (AValue > Max));
 
  return AValue;
}
Вызов:
C
1
Button5->Caption=MyInputBox("Probability Input Box", "Imput probability to lost a packet", 0., 0.0, 1.0, 1);
Так получается красивее, что ли )). Правда упразднил try ... catch, кому нужно - добавьте.

MikeSoft еще раз спасибо за наводку, тему можно закрывать.
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
29.10.2010, 19:37
Цитата Сообщение от goodvin26 Посмотреть сообщение
Так получается красивее, что ли )). Правда упразднил try ... catch, кому нужно - добавьте.
Только зачем? При вводе неверного значения - лучше самому обработать исключительную ситуацию и уведомить об этом пользователя.

Тему закрывать не нужно. Вдруг у кого возникнет подобный вопрос ...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.10.2010, 19:37
Помогаю со студенческими работами здесь

Вопрос, связанный с коллекцией Controls.
Доброго времени суток! Моя проблема заключается в следующем: есть родительская форма и на ней есть рабочая панель Workpanel, в которую...

И наверное последний вопрос связанный с файлами
Как можно автоматически отослать информацию по электронке через access

Простенький вопрос связанный с CSS - Текст
Плиз не обзывать нубом и не ржать )))) У меня вот такой простенький вопрос. мне надо сделать так что бы данные цифры вывадились точь в...

InputBox
Здравствуйте народ! Нужна ваша помощь! Вот исходник: unit Unit1; interface uses Windows, Messages, SysUtils,...

InputBox
Как сделать, чтобы перед появлением формы появлялся InputBox, а только потом форма? И если поле InputBox не было заполнено, появлялась...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru