Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2014, 16:14   #1
C++++
Пользователь
 
Регистрация: 08.01.2014
Сообщений: 22
По умолчанию ошибка:Is not valid integer value

Написать программу перевода милей в километры. Обеспечить правильную последовательность фокусировки элементов по нажатию клавиши Enter и исключить неверный ввод со стороны пользователя. По нажатию комбинаций клавиш Ctrl+J выводить информацию о программе.
Вот код:
Код:
//$$---- Form CPP ----
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
	  TShiftState Shift)
{
	if(Key=='J' && Shift.Contains(ssCtrl))
	  MessageDlg("Программа \"Конвертор\"\nАвтор: C++",
			mtInformation, TMsgDlgButtons() << mbOK, 0);

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
	Set <char, -255, 255> Dig;
	Dig<<'0'<<'1'<<'2'<<'3'<<'4'<<'5'<<'6'<<'7'<<'8'<<'9';
	Dig<<DecimalSeparator;
	if (Key == DecimalSeparator)
	{
		if ((Edit1->Text).Pos(DecimalSeparator) != 0)
			Key = 0;
		return;
	}
	if (Dig.Contains(Key))
	   return;

	if (Key == VK_BACK)
	   return;

	if (Key == VK_RETURN)
	{
		Button1->SetFocus();
		return;
	}
	Key = 0;
	Beep();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
	int a;
	float b;
	float c;
	if (((Edit1->Text).Length() == 0))
	{
		MessageDlg("Необходимо ввести количество милей",
			mtWarning, TMsgDlgButtons() << mbOK, 0);
	}
	b = 1.61;
	a = StrToInt(Edit1->Text);
	c = a * b;
	Label1->Caption = FloatToStrF(a,ffGeneral, 7,2) + " миль = " +
				FloatToStrF(c,ffGeneral, 7,2) + " км ";
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key,
	  TShiftState Shift)
{
	  if(Key=='J' && Shift.Contains(ssCtrl))
	  MessageDlg("Программа \"Конвертор\"\nАвтор: C++",
			mtInformation, TMsgDlgButtons() << mbOK, 0);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1KeyDown(TObject *Sender, WORD &Key,
	  TShiftState Shift)
{
	if(Key=='J' && Shift.Contains(ssCtrl))
	  MessageDlg("Программа \"Конвертор\"\nАвтор: C++",
			mtInformation, TMsgDlgButtons() << mbOK, 0);
}
//---------------------------------------------------------------------------
Вот в чём ошибка: Если Edit пустой, и нажимается Button выводится сообщение, которое я написал в коде, а затем после этого сообщение выходит окно с ошибкой: "Is not valid integer value"
В чём тут может быть ошибка?

Последний раз редактировалось Stilet; 15.06.2014 в 16:26.
C++++ вне форума Ответить с цитированием
Старый 15.06.2014, 16:21   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
В чём тут может быть ошибка?
В том что Edit пустой, а пусто и есть Is not valid integer value
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.06.2014, 16:30   #3
XE5
Заблокирован
 
Регистрация: 02.03.2014
Сообщений: 439
По умолчанию

C++++ Пустота, это число?
XE5 вне форума Ответить с цитированием
Старый 15.06.2014, 18:49   #4
C++++
Пользователь
 
Регистрация: 08.01.2014
Сообщений: 22
По умолчанию

Is not valid integer value Как исправить эту ошибку? Никто не знает?
C++++ вне форума Ответить с цитированием
Старый 15.06.2014, 18:52   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Все знают - Использовать StrToIntDef().
А еще лучше TryStrToInt() чтоб можно было поставить условие конвертации, если конвертация неудачна вывести сообщение. Примеры в хелпе.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка: '' Is Not A Valid Integer Value / Delphi для начинающих tane Помощь студентам 2 07.02.2014 15:13
Ошибка " is not a valid integer value Htebazile Помощь студентам 1 19.09.2013 14:58
Ошибка '' is not valid integer value svobodys Помощь студентам 4 12.12.2011 22:49
Периодически выскакивает ошибка "not valid integer value" Dux Общие вопросы Delphi 11 07.10.2010 18:37
Ошибка(оконная а не компилятора) "is not a valid integer value" sinobithug Помощь студентам 6 14.08.2010 22:49