Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Вопросы начинающих программистов
Перезагрузить страницу Вопрос по InputBox (C++Builder)
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
kot.polosat kot.polosat вне форума
Member
 
Аватар для kot.polosat
 
Сообщений: 25
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.08.2011
Question Вопрос по InputBox (C++Builder) - 19.10.2011, 23:25

Подскажите, пожалуйста, как описать действия при нажатии пользователем кнопки Cancel при вызове InputBox! Все остальное работает, а при нажатии Cancel вылетает ошибка, что не есть гуд.
Код:
cpp Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <iostream>
#pragma hdrstop
#include "DZ_2.h"
#include "stdlib.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
srand(time(0));
AnsiString in=(InputBox("Ввод размерности матрицы",
                "Введите количество строк матрицы", ""));
int m=StrToInt(in);
in=(InputBox("Ввод размерности матрицы",
                "Введите количество столбцов матрицы", ""));
int n=StrToInt(in);
int A[100][100];
int i,j,min=100;
AnsiString buf,text="";
int total=0;
for (j=0; j!=m; ++j)
        {text+="\n";
        for (i=0; i!=n; ++i)
                {
                A[i][j]=(rand()%21)-10;
                buf=IntToStr(A[i][j]);
                int size=buf.Length();
                switch(size)
                {
                case 1:
                text+="      ";
                text+=buf;
                break;
                case 2:
                text+="     ";
                text+=buf;
                break;
                case 3:
                text+="    ";
                text+=buf;
                break;
                }
                if ((A[i][j]>0) && (min>A[i][j]))
                min=A[i][j];
                }
        if (total<min) total=min;
        }
Label1->Caption=text;
Form1->Label2->Top=Label1->Top+Label1->Height+10;
Label2->Caption="Наибольшее из наименьших положительных чисел,\nрасположенных в столбцах равно "
                +IntToStr(total);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form1->Close();
}
//---------------------------------------------------------------------------
Ответить с цитированием
  (#2 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,281
Сказал(а) спасибо: 27
Поблагодарили 54 раз(а) в 54 сообщениях
Регистрация: 16.10.2005
По умолчанию 20.10.2011, 01:13

Цитата:
Сообщение от kot.polosat Посмотреть сообщение
при нажатии Cancel вылетает ошибка
Какая именно ошибка?
Ответить с цитированием
  (#3 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,281
Сказал(а) спасибо: 27
Поблагодарили 54 раз(а) в 54 сообщениях
Регистрация: 16.10.2005
По умолчанию 20.10.2011, 01:23

У меня этот код работает без ошибок.

PS. Я бы инициализировал min каждый раз в начале внешнего цикла
Ответить с цитированием
  (#4 (permalink)) Старый
kot.polosat kot.polosat вне форума
Member
 
Аватар для kot.polosat
 
Сообщений: 25
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.08.2011
По умолчанию Извиняюсь за задержку - 24.10.2011, 21:53

Программа у меня тоже работает, но при нажатии кнопки Cancel на первом рисунке (InputBox) вылетает ошибка (рисунок 2). Как и главное где описать событие, чтобы это ошибка не возникала?
Вот скрины:
Изображения
Тип файла: jpg 1.jpg (18.8 Кб, 104 просмотров)
Тип файла: jpg 2.jpg (43.0 Кб, 82 просмотров)
Ответить с цитированием
  (#5 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,281
Сказал(а) спасибо: 27
Поблагодарили 54 раз(а) в 54 сообщениях
Регистрация: 16.10.2005
По умолчанию 24.10.2011, 23:12

Используйте вместо StrToInt функции, которые проверяют значене строки: StrToIntDef или TryStrToInt - в зависимости от того, что Вы хотите получить при вводе ошибочной строки. А если Вы хотите проверить именно нажатие кнопки Сancel, проверяйте явно на пустую строку.
Ответить с цитированием
Ads.
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вопрос о бп The22nd Любые вопросы от новичков 3 04.01.2012 20:37
С++ Builder 6 Leks100 Вопросы начинающих программистов 2 12.12.2011 12:18
C++ BUILDER 6 SADIST C++ Builder 5 29.10.2011 11:49
Надо решить уравнение не через InputBox а через For hoolywood Visual Basic 1 12.01.2011 18:36
Не заносится значение с исполльзованием InputBox IvanKuz Delphi 1 05.10.2009 11:15
Vb6.Использование InputBox, CallByName... Artinka Visual Basic 0 04.04.2008 16:52
Получение адреса ячейки через InputBox Pavel55 Visual Basic 23 26.10.2006 11:09
Как установить компоненты для Builder C++ 5 в Builder C++ 6 zettambov C++ Builder 1 11.04.2006 15:00
C++ Builder vs VC++ sq-Weezee Офтопик 9 11.02.2006 15:35
InputBox и MsgBox kminas Visual Basic 2 10.02.2006 21:38
Как компилировать готовый проект C++ Builder для работы на на компьютере без Builder Anonymous C++ Builder 1 28.01.2004 17:35
C++Builder FAQ Garik Программирование под Windows 4 17.05.2003 17:53



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов