FoxPro/Visual FoxPro - error en funcion

 
Vista:
sin imagen de perfil

error en funcion

Publicado por eduardo (139 intervenciones) el 16/07/2007 02:54:35
hola :
tengo esta funcion ,la cual pide un numero y dice si es primo o no .
SET STEP ON

SET DEFAULT TO d:\prueba
DO FORM pidenum TO var1

IF primo(var1)
WAIT WINDOW 'es primo'
ELSE
WAIT WINDOW 'no es primo'
ENDIF

FUNCTION primo
PARAMETERS nume
LOCAL i,tope,poruno,porsi,noprimo

tope=nume
poruno=.F.
porsi=.F.
noprimo=.F.

FOR i=1 to tope
if(MOD(tope,i)=0)
DO CASE
CASE i=1
poruno=.T.
CASE i=tope
porsi=.T.
CASE (i>1 AND i<tope)
noprimo=.T.
endcase
ENDIF
ENDFOR
IF (poruno AND porsi AND !noprimo)
RETURN .T.
ELSE
RETURN .F.
endif
el tema es que me da un error de ejecucion,no de compilacion en la linea del for con la variable tope ,hace referencia a que no es una expresion numerica .probe de poner val (tope) y tampoco tuve resultados.

gracias p or al ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:error en funcion

Publicado por Luighi (105 intervenciones) el 16/07/2007 04:21:55
en la linea que dice:

if primo(var1)

estas seguro que var1 contiene un valor numerico?
antes deberias descartar eso
antes de esa linea agrega esto:

wait 'tipo de dato de var1 = '+type('var1') wind nowa

eso te hara saber si realmente var1 es numerico, type() tiene que arrojar N
si no lo hace es obvio que var1 contiene otro tipo de dato
podria adivinar que es del tipo logico

esa es la razon por la cual en el FOR te da problemas
al final la variable tope esta recibiendo un dato que no es numerico

y al hacer val(tope)
val() necesita un valor de numero, si le pasas otra cosa, error
y otra cosita
deberias acostumbrarte a mejorar la legibilidad de las variables
usa el estandar
en lugar de var1 usa mejor nVar1, asi sabrias que tratas con una variable numerica... o cVar1... si es caracter... etc

y cuando entregues parametros a una funcion o procedimiento
antes que todo debes asegurarte bien de que las variables que llegan son del tipo de dato esperado... hacer las verificaciones pertinentes... hecho todo eso... recien puedes trabajar con dichas variables

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:error en funcion

Publicado por eduardo (139 intervenciones) el 16/07/2007 15:22:11
gracias por la ayuda y los consejos sobre las variables.
lo pude arreglar en el form ,cuando asigno a nvar1 ,a thisform.text1.value ,le puse val( adelante y me lo tomo como numerico cuando el form paso el parametro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar