Помогите найти ошибку (выводится "is not a valid floati

Assembler, Basic, Pascal/Delphi, Perl, PHP, JavaScript, HTML и т.д. Вопросы и помощь.

Помогите найти ошибку (выводится "is not a valid floati

Непрочитанное сообщение < Dem.IG > » 23 окт 2008, 20:46:27

Код: Выделить всё
unit Laba2;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label5: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label6: TLabel;
    Label7: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  i,n,k:integer;
  a,b,c,x1,x2,x3,y1,y2,y3,z1,z2,z3,pp,P,S:real;
   st1,st2,st3,str1,str2,str3:string;

implementation

{R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
begin
st1:=Edit1.Text;
st2:=Edit2.Text;
st3:=Edit3.Text;


  for i:=length(st1) downto 1 do if st1[i]=';' then begin
                                                if n>i then n:=i;
                                                end;
  for i:=1 to n-1 do begin
                     str1:='';
                     str1:=str1+st1[i];
                     end;
x1:=StrToFloat(str1);
  for i:=length(st2) downto 1 do if st2[i]=';' then begin
                                                if n>i then n:=i;
                                                end;
  for i:=1 to n-1 do begin
                     str2:='';
                     str2:=str2+str2[i];
                     end;
x2:=StrToFloat(str2);
  for i:=length(st3) downto 1 do if st3[i]=';' then begin
                                                if n>i then n:=i;
                                                end;
  for i:=1 to n-1 do begin
                  str3:='';
                  str3:=str3+str3[i];
                  end;
x3:=StrToFloat(str3);

  n:=length(st1); k:=1;
  for i:=length(st1) downto 1 do if st1[i]=';' then begin
                                                if n>i then n:=i;
                                                end;
  for i:=1 to length(st1) do if st1[i]=';' then begin
                                                if k<i then k:=i;
                                                end;
    for i:=n+1 to k-1 do begin
                               str1:='';
                               str1:=str1+st1[i];
                               end;
y1:=StrToFloat(str1);
  n:=length(st1); k:=1;
  for i:=length(st2) downto 1 do if st2[i]=';' then begin
                                                if n>i then n:=i;
                                                end;
  for i:=1 to length(st2) do if st2[i]=';' then begin
                                                if k<i then k:=i;
                                                end;
  for i:=n+1 to k-1 do begin
                               str1:='';
                               str1:=str1+st2[i];
                               end;
y2:=StrToFloat(str2);
  n:=length(st1); k:=1;
  for i:=length(st3) downto 1 do if st3[i]=';' then begin
                                                if n>i then n:=i;
                                                end;
  for i:=1 to length(st3) do if st3[i]=';' then begin
                                                if k<i then k:=i;
                                                end;
  for i:=n+1 to k-1 do begin
                               str3:='';
                               str3:=str3+st3[i];
                               end;
y3:=StrToFloat(str3);


  for i:=1 to length(st1) do if st1[i]=';' then begin
                                                if n<i then n:=i;
                                                end;
  for i:=n+1 to length(st1) do begin
                               str1:='';
                               str1:=str1+st1[i];
                               end;
z1:=StrToFloat(str1);
  for i:=1 to length(st2) do if st2[i]=';' then begin
                                                if n<i then n:=i;
                                                end;
  for i:=n+1 to length(st2) do begin
                               str2:='';
                               str2:=str2+st2[i];
                               end;
z2:=StrToFloat(str2);
  for i:=1 to length(st3) do if st3[i]=';' then begin
                                                if n<i then n:=i;
                                                end;
  for i:=n+1 to length(st3) do begin
                               str3:='';
                               str3:=str3+st3[i];
                               end;
z3:=StrToFloat(str3);


a:=sqrt(sqr(x2-x1)+sqr(y2-y1)+sqr(z2-z1));
b:=sqrt(sqr(x3-x2)+sqr(y3-y2)+sqr(z3-z2));
c:=sqrt(sqr(x3-x1)+sqr(y3-y1)+sqr(z3-z1));
pp:=(a+b+c)/2;
S:=sqrt((pp*(pp-a)*(pp-b)*(pp-c)));
label6.Caption:=FloatToStr(S);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 st1:=Edit1.Text;
st2:=Edit2.Text;
st3:=Edit3.Text;


  for i:=length(st1) downto 1 do if st1[i]=';' then begin
                                                if n>i then n:=i;
                                                end;
  for i:=1 to n-1 do begin
                     str1:='';
                     str1:=str1+st1[i];
                     end;
x1:=StrToFloat(str1);
  for i:=length(st2) downto 1 do if st2[i]=';' then begin
                                                if n>i then n:=i;
                                                end;
  for i:=1 to n-1 do begin
                     str2:='';
                     str2:=str2+str2[i];
                     end;
x2:=StrToFloat(str2);
  for i:=length(st3) downto 1 do if st3[i]=';' then begin
                                                if n>i then n:=i;
                                                end;
  for i:=1 to n-1 do begin
                  str3:='';
                  str3:=str3+str3[i];
                  end;
x3:=StrToFloat(str3);

  n:=length(st1); k:=1;
  for i:=length(st1) downto 1 do if st1[i]=';' then begin
                                                if n>i then n:=i;
                                                end;
  for i:=1 to length(st1) do if st1[i]=';' then begin
                                                if k<i then k:=i;
                                                end;
    for i:=n+1 to k-1 do begin
                               str1:='';
                               str1:=str1+st1[i];
                               end;
y1:=StrToFloat(str1);
  n:=length(st1); k:=1;
  for i:=length(st2) downto 1 do if st2[i]=';' then begin
                                                if n>i then n:=i;
                                                end;
  for i:=1 to length(st2) do if st2[i]=';' then begin
                                                if k<i then k:=i;
                                                end;
  for i:=n+1 to k-1 do begin
                               str1:='';
                               str1:=str1+st2[i];
                               end;
y2:=StrToFloat(str2);
  n:=length(st1); k:=1;
  for i:=length(st3) downto 1 do if st3[i]=';' then begin
                                                if n>i then n:=i;
                                                end;
  for i:=1 to length(st3) do if st3[i]=';' then begin
                                                if k<i then k:=i;
                                                end;
  for i:=n+1 to k-1 do begin
                               str3:='';
                               str3:=str3+st3[i];
                               end;
y3:=StrToFloat(str3);


  for i:=1 to length(st1) do if st1[i]=';' then begin
                                                if n<i then n:=i;
                                                end;
  for i:=n+1 to length(st1) do begin
                               str1:='';
                               str1:=str1+st1[i];
                               end;
z1:=StrToFloat(str1);
  for i:=1 to length(st2) do if st2[i]=';' then begin
                                                if n<i then n:=i;
                                                end;
  for i:=n+1 to length(st2) do begin
                               str2:='';
                               str2:=str2+st2[i];
                               end;
z2:=StrToFloat(str2);
  for i:=1 to length(st3) do if st3[i]=';' then begin
                                                if n<i then n:=i;
                                                end;
  for i:=n+1 to length(st3) do begin
                               str3:='';
                               str3:=str3+st3[i];
                               end;
z3:=StrToFloat(str3);


a:=sqrt(sqr(x2-x1)+sqr(y2-y1)+sqr(z2-z1));
b:=sqrt(sqr(x3-x2)+sqr(y3-y2)+sqr(z3-z2));
c:=sqrt(sqr(x3-x1)+sqr(y3-y1)+sqr(z3-z1));
P:=a+b+c;
label7.Caption:=FloatToStr(P);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
close
end;

end.
< Dem.IG >
 

Помогите найти ошибку (выводится "is not a valid floati

Непрочитанное сообщение Void » 25 окт 2008, 09:07:18

< Dem.IG >, ошибку, глядя на этот текст, искать задолбаешься. А так просто совет, воспользоваться отладкой, незаменимая вещь.
ULTIMA RATIO
Аватара пользователя
Void
Администратор
Администратор
 
Сообщения: 2430
Зарегистрирован: 25 июн 2006, 09:33:27
Откуда: Курск
Пол: Мужской
Имя: Роман

Помогите найти ошибку (выводится "is not a valid floati

Непрочитанное сообщение Alex ilmarranen » 30 окт 2008, 00:43:09

Если мне не изменяет память это ошибка обычно при преобразовании строки въ число… въ твоёмъ случае во float…
Проверяй все строчки съ StrToFloat()…
Alex ilmarranen
 

Помогите найти ошибку (выводится "is not a valid floati

Непрочитанное сообщение Гость » 02 ноя 2008, 16:51:00

В обоих процедурах n неинициализировано. И вообще парсинг выглядит кривым.
Вынеси парсинг одной пары в отдельную процедуру, и выводи промежуточные результаты (две подстроки) на экран. Кажется, для одного из чисел ты захватываешь точку-с-запятой в строку, которую потом пытаешься преобразовать в число. Впрочем, я уже не помню, с чего в паскале индексы символов в строках начинаются - но не с нуля разве?
Гость
 


Вернуться в Программирование

Кто сейчас на форуме

Зарегистрированные пользователи: AhrefsBot [Bot], Bing [Bot], GoGo [Бот], Google [Bot], SEMrush [Бот], Trendiction [Бот], Яндекс [Бот]