Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.55/22: Рейтинг темы: голосов - 22, средняя оценка - 4.55
1 / 1 / 4
Регистрация: 07.10.2012
Сообщений: 123

Если вводит в объект Edit отрицательное число, то выдает ошибку "-" is not a valid integer value". Как исправить?

13.11.2012, 17:20. Показов 4984. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
var
  Form1: TForm1;
 a,r:integer;
 l,s,v,p:real;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Edit2Change(Sender: TObject);
begin
p:=3;
r:=strtoint (edit1.Text);
a:=strtoint (edit2.Text);
case a of
1: begin
  l:=2*p*r;
  edit3.Text:='Длина оружности L= '+floattostrf(l,fffixed,1,0);
  end;
  2: begin
  s:=p*r*r;
  edit3.Text:='Площадь круга S= '+floattostrf(s,fffixed,1,0);
  end;
  3: begin
  v:=(4*r*r*r)/3;
  edit3.Text:='Объем шара V= '+floattostrf(v,fffixed,1,0);
  end;
end;
end;
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.11.2012, 17:20
Ответы с готовыми решениями:

Выдает ошибку Is not valid integer value
Даны три числа. Нужно найти среднее из них. При вводе чисел выдается окно с ошибкой "is not valid integer point value Не могу...

Выдает ошибку в Делфи is not a valid integer value
Выдает ошибку is not a valid integer value. Не помогу понять в чем проблема, объясните пожалуйста. type kostdomino = record ...

Почему при пустом Edit2 выдает ошибку Is not valid integer value
procedure TForm1.Button4Click(Sender: TObject); var kol:integer; begin kol:=strtoint(edit2.text); StringGrid3.Visible:=false; ...

35
95 / 14 / 13
Регистрация: 26.05.2012
Сообщений: 63
13.11.2012, 18:16
Студворк — интернет-сервис помощи студентам
Проще так, как я написал)
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
13.11.2012, 18:16
Цитата Сообщение от al1as Посмотреть сообщение
Delphi
1
2
if Edit1.Text[1]='-' then
    Edit1.Text:=inttostr(abs(strtoint(Edit1.Text)));
Ты сам то понял, что написал?
Delphi
1
Edit1.Text:=inttostr(abs(strtoint('-')));
и какой должен быть результат?
0
1 / 1 / 4
Регистрация: 07.10.2012
Сообщений: 123
13.11.2012, 18:19  [ТС]
Цитата Сообщение от Any0019 Посмотреть сообщение
Delphi
1
2
3
4
5
6
if Edit2.Text[1]='-' then 
 Begin
 Edit2.Text[1]:='0';
 x:=StrToInt(Edit2.Text)*(-1);
 end
 else x:=StrToInt(Edit2.Text);
ты ввел вот так?
Да, я вот так вводил.
0
251 / 156 / 31
Регистрация: 07.10.2012
Сообщений: 401
13.11.2012, 18:19
Я догнал. У тебя используется событие OnChange. Нужно просто
Delphi
1
2
StrToInt(Edit1.Text)
StrToInt(Edit2.Text)
заменить на
Delphi
1
2
StrToIntDef(Edit1.Text,0) 
StrToIntDef(Edit2.Text,0)
1
1 / 1 / 4
Регистрация: 07.10.2012
Сообщений: 123
13.11.2012, 18:20  [ТС]
Цитата Сообщение от DaMortum Посмотреть сообщение
Я догнал. У тебя используется событие OnChange. Нужно просто
Delphi
1
2
StrToInt(Edit1.Text)
StrToInt(Edit2.Text)
заменить на
Delphi
1
2
StrToIntDef(Edit1.Text,0) 
StrToIntDef(Edit2.Text,0)
А DEF в конце что означает?
0
95 / 14 / 13
Регистрация: 26.05.2012
Сообщений: 63
13.11.2012, 18:21
Цитата Сообщение от gorfil Посмотреть сообщение
Ты сам то понял, что написал?
Delphi
1
Edit1.Text:=inttostr(abs(strtoint('-')));
и какой должен быть результат?
Он написал все правильно, но просто это тоже самое, что Edit1.Text[1]:='0', только более сложными словами ^^
0
 Аватар для al1as
386 / 74 / 31
Регистрация: 13.04.2012
Сообщений: 127
13.11.2012, 18:21
Цитата Сообщение от gorfil Посмотреть сообщение
Ты сам то понял, что написал?
Delphi
1
Edit1.Text:=inttostr(abs(strtoint('-')));
и какой должен быть результат?
Вполне годный вариант для чисел, длина которых <> 1; собственно кинуть еще одно условие перед этим.
0
95 / 14 / 13
Регистрация: 26.05.2012
Сообщений: 63
13.11.2012, 18:23
Цитата Сообщение от ArtemK Посмотреть сообщение
Да, я вот так вводил.
Странно, тогда я не знаю, наверное, чем и как помочь(
0
251 / 156 / 31
Регистрация: 07.10.2012
Сообщений: 401
13.11.2012, 18:25
Цитата Сообщение от ArtemK Посмотреть сообщение
А DEF в конце что означает?
В случае ошибки фукция вернёт число в скобочках после запятой. В данном случае ноль.
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
13.11.2012, 18:25
Цитата Сообщение от al1as Посмотреть сообщение
Вполне годный вариант для чисел, длина которых <> 1; собственно кинуть еще одно условие перед этим.
Ты символ '-' пытаешься в число перегнать.
0
 Аватар для al1as
386 / 74 / 31
Регистрация: 13.04.2012
Сообщений: 127
13.11.2012, 18:46
Цитата Сообщение от gorfil Посмотреть сообщение
Ты символ '-' пытаешься в число перегнать.
Цитата Сообщение от al1as Посмотреть сообщение
собственно кинуть еще одно условие перед этим.
Любо сделать сложное с проверкой длины.
Delphi
1
2
if (Edit1.Text[1]='-') and (length(Edit1.Text)<>1) then
  edit1.Text:=inttostr(abs(strtoint(Edit1.Text)));
И вообще, к чему этот неоправданный агр в мою сторону?Я не обязан дать полностью работающий вариант, я должен лишь направить мысль задающего вопрос в нужное русло.
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
13.11.2012, 19:05
Цитата Сообщение от al1as Посмотреть сообщение
И вообще, к чему этот неоправданный агр в мою сторону?Я не обязан дать полностью работающий вариант, я должен лишь направить мысль задающего вопрос в нужное русло.
Ну так а зачем человеку полностью нерабочий давать? Ему и так не легко. Ты б хоть проверял прежде чем писать.
0
251 / 156 / 31
Регистрация: 07.10.2012
Сообщений: 401
13.11.2012, 19:16
У человека, похоже, всё получилось. Только он сказать об этом забыл.
0
 Аватар для al1as
386 / 74 / 31
Регистрация: 13.04.2012
Сообщений: 127
13.11.2012, 19:25
Цитата Сообщение от gorfil Посмотреть сообщение
Ну так а зачем человеку полностью нерабочий давать? Ему и так не легко. Ты б хоть проверял прежде чем писать.
Мда, ну и индивиды тут обитают, я дал лишь кусок, подкорректировать условие для реализации своей задачи любой дегрод сможет.
Цитата Сообщение от DaMortum Посмотреть сообщение
У человека, похоже, всё получилось. Только он сказать об этом забыл.
Согласен, тема себя исчерпала.
0
1 / 1 / 4
Регистрация: 07.10.2012
Сообщений: 123
13.11.2012, 19:52  [ТС]
Цитата Сообщение от al1as Посмотреть сообщение
Мда, ну и индивиды тут обитают, я дал лишь кусок, подкорректировать условие для реализации своей задачи любой дегрод сможет.

Согласен, тема себя исчерпала.
Ну, начну с того, что у меня так и ничего не получилось. Не смог ответить, получилось или нет!
Во-вторых, спасибо, что помогли!!!
В-третьих, я Delphi только начал изучать, и что где исправить с трудом понимаю.
И наконец, если уж каждый дегрод исправить может, то увы, я не дегрод, и не могу исправить))
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
13.11.2012, 20:08
ArtemK, добавь:
Delphi
1
2
3
procedure TForm1.Edit2Change(Sender: TObject);
begin
  if (Edit2.Text[1] = '-') and (Length(Edit2.Text) = 1) then Exit;
al1as, проверь свой код в Дельфи. Ты можешь вставить туда что угодно, он работать не будет.
Delphi
1
2
if Edit1.Text[1]='-' then
    Edit1.Text:=inttostr(abs(strtoint(Edit1.Text)));
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.11.2012, 20:08
Помогаю со студенческими работами здесь

Как исправить ошибку "Is not a valid integer value"?
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, ...

Как исправить ошибку "is not a valid integer value"?
при запуске программы выводит ошибку &quot;&quot;is not a valid integer value var a:array of integer; b:array of boolean; ...

Выдаёт отрицательное произведение, исправить ошибку нужно
program cycle_1; var i, dobutok, suma ,a, b: integer ; begin dobutok := 1; suma := 0; writeln(' введите...

разобраться почему выдаёт ошибку "is not a valid integer value"??
fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { MatrC-&gt;Visible=false; Label1-&gt;Visible=false; ...

Выдает ошибку " Нельзя преобразовать тип real к integer". Как исправить?
Выдает ошибку :&quot; Нельзя преобразовать тип real к integer&quot;. Как исправить? program zadaniemn2; var n, k, i: integer; ...


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

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Новые блоги и статьи
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru