Ver la Versión Completa : Invalid Floating Point Operation
inetplus
18-05-2004, 20:22:10
Como se puede determinar la causa de este tipo de errore ?
Existe alguna variable que puedan darle a uno un indicio del causante del problema.
un saludo
roman
18-05-2004, 20:26:45
Yo creo que esás atacando el problema desde un ángulo equivocado. Dicho así es muy ambiguo; mejor platícanos qué código es el que te genera dicho error.
// Saludos
sanxpue
18-05-2004, 20:51:48
¡¡¡Que
Ese error no lo marca cuando divides entre cero
Conocidisimo el error de punto flotante :eek:
inetplus
18-05-2004, 21:49:36
Ojala pudiese darte mas información en donde se produce el error, voy a darte una explicación un tanto mas certera, el sistema funciona en forma perfecta en una PC Pentium IV y un K6 de 500. No ocurre lo mismo en otro K6 de las mismas caracteristicas de este ultimo pero con menos memoria.
El error se produce al iniciar su ejecución.
roman
18-05-2004, 22:05:03
No sé si tenga que ver pero había algunos pentium que tenían un error. Existe una directiva al compilador para esto: {U+}.
// Saludos
MiguelR
17-03-2012, 05:58:22
a mi me marca ese problema con este código, soy nuevo y no se mucho, agradecería mucho la ayuda
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
m:array[1..10,1..10] of extended;
v:array[1..10] of extended;
a,i,j,x,z:integer;
k,b:extended;
linea:string;
archivo:textfile;
begin
a:=strtoint(edit2.text);
assignfile(archivo,edit1.text);
reset(archivo);
for i:=1 to a do
for j:=1 to a do
read(archivo,m[i,j]);
z:=1;
x:=1;
b:=1;
k:=0;
while i<>a do begin
for i:=z to (z+1) do begin
k:=m[i,j];
b:=b*k;
for j:=x to a do begin
v[j]:=(m[i,j])/(k);
end;
end;
for i:=i+1 to a do begin
k:=m[i,j];
for j:=j to a do begin
if k<>0 then
m[i,j]:=((v[j])/(k))+m[i,j]
else break;
end;
end;
z:=z+1;
x:=x+1;
end;
m[i,j]:=(m[i,j])*b;
memo1.lines.add(floattostr(m[i,j]));
end;
end.
newtron
17-03-2012, 09:56:48
Hola.
Yo creo que en algún momento alguna variable está cogiendo un valor disparatado así que deberías ir depurando el programa paso a paso mirando qué valor cogen las variables para detectar en qué linea de da el error.
Saludos
Casimiro Notevi
17-03-2012, 10:19:36
Bienvenido a clubdelphi, MiguelR, ¿ya leiste nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php)?, gracias por tu colaboración.
ecfisa
17-03-2012, 22:11:33
Hola Miguel.
El primer error que veo es que aquí:
begin
a:=strtoint(edit2.text);
...
for i:=1 to a do
for j:=1 to a do
read(archivo,m[i, j]);
Cargas a x a valores en la matriz m. Pero inmediatamente luego de entrar al bucle while y sin asignarle valor a j, haces:
...
while i<>a do
begin
for i:=z to (z+1) do
begin
k:= m[i,j]; // <- ¡ Aquí !
...
Resulta que j, luego de salir del ciclo for, tiene un valor de a+1 y el valor de m[i, (a+1)] es indeterminado ya que nunca se le asigno algo...
Saludos.
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.