Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-11-2007
tuflotas tuflotas is offline
Miembro
 
Registrado: nov 2007
Posts: 24
Poder: 0
tuflotas Va por buen camino
Exclamation Delphi 5 errores en u subprograma

hola, que tal? Soy nuevo, y es que es el primer año que programo en delphi (bueno, los primros meses...) y aun no entiendo el depurador ni tengo una tabla donde me diga el error en concreto como lo tenia en pascal... bueno, el caso es que no se por qué me sale en este subprograma un error.
El subprograma lo que quiero es que entrando un entero, lo pase a booleano y la forma que le he dado es:

FUNCTION f(Fila:integer):char;
BEGIN
CASE Fila OF
0: f:='0';
1: f:='1';
2: f:='2';
3: f:='3';
4: f:='4';
5: f:='5';
6: f:='6';
7: f:='7';
8: f:='8';
9: f:='9';
end; {case}
END;{function fila}

El error que me da es Ubarquitos.pas (44) Error Return value of function 'f' might be undefinned
cuando pulso el error me sale justo la linea roja en el " END; {function fila} "

No se si lo que tendria que hacer seria, en vez de meterlo directamente en la variable de la funcion f el caracter que quiero que tenga, poner una variable char auxiliar y que al final del case poner f:=variableauxiliar, es que asi me sale otro error, me pone cuando es f:=auxi Not enought actual parameters... que desesperacion ajjajaa

Es que no estoy seguro del todo si eso podria ayudar porque es del mismo tipo
Responder Con Cita
  #2  
Antiguo 22-11-2007
tuflotas tuflotas is offline
Miembro
 
Registrado: nov 2007
Posts: 24
Poder: 0
tuflotas Va por buen camino
por si ayuda, este subprograma lo uso en el procedimiento generarflota

en la unidad, en interface he puesto este orden:

VAR
PROCEDURE Inicializa(solucion:TTablero);
PROCEDURE GenerarFlota;
FUNCTION c(columna:integer):char;
FUNCTION f(Fila:integer):char; {igual que la anterior pero para la fila}
procedure colocandobarco(VAR solucion:TTablero;VAR valido:boolean; fila,columna,tipobarco,plusbarco,direccion:integer; c,f:char); {coloca el barco en la matriz}

SI subo c y f a arriba del todo me dice que despues de (columna: integer en vez de ) tengo que poner ; (lo mismo para ambas)
Responder Con Cita
  #3  
Antiguo 22-11-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Usa "Result" en lugar de "f". Creo que antes, con Pascal, era posible retornar el valor de una función mediante el nombre de la propia función, pero, en Delphi no sé si hay que "tocar" alguna directiva del compilador o algo así. Pero, como digo, prueba con "Result", que es la forma en que en Delphi se asigna el resultado de las funciones. Por ejemplo:

Código Delphi [-]
function Foo(): boolean;
begin
  Result := true;
end;
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 22-11-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Bueno, no es exactamente un Error, es un Warning... el compilador a encontrado que en tu función hace falta asegurar el hecho de que ella te devuelva siempre un valor y por eso te muestra dicha precaución.

Por ejemplo, ¿Que pasaría si alguien coloca como parametro un valor que este fuera del rango del 0..9?, por ejemplo el 1000, seguramente dicha función te devolvera el número que "caiga" luego de pasar 1000 veces evaluando opcion por opcion (La numero 1000 sera tu resultado, en este caso el 8).

Como solucionar este "problemita", asegurandonos que esta función te devuelva un valor "fijo" en caso de que el parametro no tenga un valor que este dentro de ese rango 0..9, asi por ejemplo:

Código Delphi [-]
FUNCTION f(Fila:integer):char;
BEGIN
  CASE Fila of
    0: f:='0';
    1: f:='1';
    2: f:='2';
    3: f:='3';
    4: f:='4';
    5: f:='5';
    6: f:='6';
    7: f:='7';
    8: f:='8';
    9: f:='9';
  else
    f := ' '; //<--- Este y el else anterior son el cambio .
  end; {case}
END;{Resultunction Resultila}
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/

Última edición por jhonny fecha: 22-11-2007 a las 19:48:36. Razón: Colocar comentario en el codigo
Responder Con Cita
  #5  
Antiguo 22-11-2007
tuflotas tuflotas is offline
Miembro
 
Registrado: nov 2007
Posts: 24
Poder: 0
tuflotas Va por buen camino
ahora lo que si que me salta es un error cuando hago la asignacion para la function

Es decir yo en mi codigo pongo:

f:=fila; que la funcion f use fila, puesme dice [error] Ubarquitos.pas (142) : Not enought actual parameters
Responder Con Cita
  #6  
Antiguo 22-11-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por tuflotas Ver Mensaje
ahora lo que si que me salta es un error cuando hago la asignacion para la function

Es decir yo en mi codigo pongo:

f:=fila; que la funcion f use fila, puesme dice [error] Ubarquitos.pas (142) : Not enought actual parameters
Lo que dice es que no le estas asignando un parametro a la función f, supongo que lo que quieres hacer es, por ejemplo:

Código Delphi [-]
fila := f(1);
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #7  
Antiguo 22-11-2007
tuflotas tuflotas is offline
Miembro
 
Registrado: nov 2007
Posts: 24
Poder: 0
tuflotas Va por buen camino
es que el valor de fila lo saco de un random, es decir

fila:=random(10); {se calcula el punto de partida de la fila}
columna:=random(10); {y el de la columna}
c:=columna; {y se traspasan a char}
f:=fila;

los subprogramas son f y c

Última edición por tuflotas fecha: 22-11-2007 a las 19:54:51. Razón: se me olvido poner una aclaracion
Responder Con Cita
  #8  
Antiguo 22-11-2007
tuflotas tuflotas is offline
Miembro
 
Registrado: nov 2007
Posts: 24
Poder: 0
tuflotas Va por buen camino
ya lo entendi, jope, no pensaba que estuviera tan oxidado en esto ...
Responder Con Cita
  #9  
Antiguo 22-11-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Otra cosa, no se que pretendes con dicha función, pero si lo que quieres es convertir de numerico a caracter, puedes lograr ese efecto usando la función IntToStr que viene con delphi...
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Delphi 7 a Delphi 2007.Errores en la migracion Gaby123 Varios 2 22-05-2007 23:25:20
Errores Delphi W98 - XP marcial Varios 0 21-01-2006 19:12:11
Errores en Delphi 7 con win xp Gabriel2 Varios 6 25-08-2005 17:02:47
Errores Delphi 5 sur-se OOP 2 09-05-2005 11:28:51
Errores en Delphi agonzalez Varios 1 16-03-2004 18:22:11


La franja horaria es GMT +2. Ahora son las 14:05:32.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi