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

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

29.10.2010, 16:03. Показов 6688. Ответов 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
3956 / 1811 / 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
3956 / 1811 / 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
3956 / 1811 / 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
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru