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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2012, 15:45   #1
[Jank]
Пользователь
 
Регистрация: 10.08.2012
Сообщений: 43
По умолчанию Is not a valid integer value

Собственно, хочу реализовать прогу для решения квадратных и кубических уравнений. На паскале реализовал, хочу на дэлфи. Суть такая;
1)Есть 3(пока) edita, в который вводятся a,b,c.
2)Дальше выполняются операции вычисления дискриминанта.
3)В два других edita выводятся ответы x1 и x2. Вот прога:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Panel1: TPanel;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit3: TEdit;
    Label4: TLabel;
    Button1: TButton;
    Label5: TLabel;
    Label6: TLabel;
    Edit4: TEdit;
    Edit5: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  x1,x2:real;
  x3,x4:string;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var a,b,c: string;
  g,e,f:integer;
  D:integer;
  
begin

 a:=Edit1.Text;
 b:=Edit2.Text;
 c:=Edit3.Text;

 g:=strtoint(a);
 e:=strtoint(b);
 f:=strtoint(c);

 D:=(e*e)-(4*g*f);
 if d<0 then
  Edit4.Text:=('Kornei');
  Edit5.text:=('nety');
 if d=0 then
  x1:=(-e)/(2*g);
  x2:=x1;
 if d>0 then
  x1:=((-e)+sqrt(d))/(2*g);
  x2:=((-e)-sqrt(d))/(2*g);

  x3:=floattostr(x1);
  x4:=floattostr(x2);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Edit4.text:=x3;
 Edit5.text:=x4;
end;

end.
прога выводит ошибку в названии темы, и ничего не пишет в последние едиты для ответов.
[Jank] вне форума Ответить с цитированием
Старый 18.09.2012, 15:52   #2
maLoy*508
Форумчанин
 
Аватар для maLoy*508
 
Регистрация: 28.03.2008
Сообщений: 672
По умолчанию

что в эдиты вводишь?

и почему не присваивать сразу значения из эдитов?
то есть:
Код:
 g := StrToInt(Edit1.Text); //и т.д.
также поправь тут:
Код:
if d<0 then
 begin
  Edit4.Text:=('Kornei');
  Edit5.text:=('nety');
 end;
 if d=0 then
 begin
 x1:=(-e)/(2*g);
  x2:=x1;
 end;
 if d>0 then
 begin
  x1:=((-e)+sqrt(d))/(2*g);
  x2:=((-e)-sqrt(d))/(2*g);
 end;

Последний раз редактировалось maLoy*508; 18.09.2012 в 16:00.
maLoy*508 вне форума Ответить с цитированием
Старый 18.09.2012, 15:52   #3
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Неподходящее целочисленное значение. Трассировка Вам в помощь.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 18.09.2012, 15:53   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Проблема здесь:
Цитата:
g:=strtoint(a);
e:=strtoint(b);
f:=strtoint(c);
Либо используй strtointDEF, либо вноси в эдиты правильные цифровые значения.
Между прочим не удивлюсь, если ты скажешь что пишешь в них вещественные числа (это те, у которых есть целая и дробная части) - в этом случае нужно использовать StrToFloat
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.09.2012, 15:53   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

На какой строке ошибка? Интересно что получится если юзер в Эдит3 и Эдит2 введет нуль ?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 18.09.2012, 15:54   #6
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Или в исходных данных ошибка: в Edit введено не число либо вообще ничего не введено, что автоматически становится символом '', не эквивалентным ни одному числу, чтоб StrToInt мог его обработать.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 18.09.2012, 15:57   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

А вообще в ФормКреате пишется только код, который непосредственно связан с инициализацией формы. А Ваш код должен быть вынесен в отдельную функцию/процедуру.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 18.09.2012, 15:58   #8
[Jank]
Пользователь
 
Регистрация: 10.08.2012
Сообщений: 43
По умолчанию

Цитата:
что в эдиты вводишь?

и почему не присваивать сразу значения из эдитов?
то есть:
Ввожу в 1 эдит 1, во второй -6, в третий 5.
Цитата:
Между прочим не удивлюсь, если ты скажешь что пишешь в них вещественные числа (это те, у которых есть целая и дробная части) - в этом случае нужно использовать StrToFloat
^^^^^^^^^^^^^^^
[Jank] вне форума Ответить с цитированием
Старый 18.09.2012, 16:12   #9
[Jank]
Пользователь
 
Регистрация: 10.08.2012
Сообщений: 43
По умолчанию

Эх что-то ничего не выходит. Кто может, перепишите плиз мою прогу как надо. Просто дэлфи изучать начал относительно недавно.
[Jank] вне форума Ответить с цитированием
Старый 18.09.2012, 16:23   #10
maLoy*508
Форумчанин
 
Аватар для maLoy*508
 
Регистрация: 28.03.2008
Сообщений: 672
По умолчанию

Сделай, то что написал Utkin - перенеси код из процедуры
Код:
procedure TForm1.FormCreate(Sender: TObject);
в процедуру
Код:
procedure TForm1.Button1Click(Sender: TObject);
maLoy*508 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
is not a valid integer value AFA Помощь студентам 41 15.03.2012 20:29
Ошибка '' is not valid integer value svobodys Помощь студентам 4 12.12.2011 22:49
is not a valid integer value FanRa3 Общие вопросы Delphi 10 26.07.2011 19:54
Is not a valid integer value Lifefine Общие вопросы Delphi 8 04.03.2010 18:25
'' is not a valid integer value в StringGrid Brabus Помощь студентам 12 22.01.2010 17:40