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 03-05-2007
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
problema con funciones

hola de nuevo, tengo un medio problema con las funciones (al final voy usando casi todo el armamento de delphi, pero poco a poco)

Cree una funcion

Código Delphi [-]
function tfhabitacion.verificaanadircliente(Key:word):word;


se supone que le entra el valor key y me devuelve un valor word, en si mismo es el mismo key.
El programa me funciona pero me da un aviso:
[Warning] habitacion.pas(200): W1035 Return value of function 'Tfhabitacion.verificaanadircliente' might be undefined

pero no se como resolverlo.
gracias

O mejor me explico lo que necesitaba por si se os ocurre como resolverlo.

tengo esta procedure
procedure Tfhabitacion.anadirnomKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);

ahi recoge el key, pero dentro de esa procedure he realizado otra llamada a otra procedure, pero ya no me conserva el valor key (estoy partiendo el programa en procedures tal y como recomendabais) y para eso he creado la funcion anterior, para conservar el valor del key, imagino que el aviso me sale porque en esa funcion no hay asignacion del valor key, es asi?.

Última edición por anubis fecha: 03-05-2007 a las 19:05:57.
Responder Con Cita
  #2  
Antiguo 03-05-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Ya la declaraste en el Type de TFHabitacion??

algo asi

Código Delphi [-]
type
  TFHabitacion = class(TForm)
    BitBtn1: TBitBtn;
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
    function verificaanadircliente(Key:word):word;
  public
    { Public declarations }
  end;


Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #3  
Antiguo 03-05-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
[Warning] habitacion.pas(200): W1035 Return value of function 'Tfhabitacion.verificaanadircliente' might be undefined
Lo que esto indica es que tu función no está regresando un valor, no al menos en todos los casos, de manera que usar la función es riesgoso. Debes revisar el código y asegurarte que siempre hay un valor de regreso.

Por ejemplo,

Código Delphi [-]
function divide(a, b: Integer): Integer;
begin
  if b <> 0 then
    Result := a div b;
end;

te generará esa advertencia, porque la función no regresa nada cuando b = 0.

// Saludos
Responder Con Cita
  #4  
Antiguo 03-05-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Una costumbre que tengo al crear funciones es asignarle un resultado por defecto en la primera linea, así me aseguro de que la función no devuelve nada inesperado. Es algo personal, pero me atrevo a recomendarlo:

Siguiendo el ejemplo de roman:
Código Delphi [-]
function divide(a, b: Integer): Integer;
begin
  // Así nos aseguramos de devolver siempre un resultado
  Result:= 0;
  if b <> 0 then
    Result := a div b;
end;
Responder Con Cita
  #5  
Antiguo 03-05-2007
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
gracias, asi si funciona, son cositas que van saliendo.
Responder Con Cita
  #6  
Antiguo 03-05-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por seoane
Una costumbre que tengo al crear funciones es asignarle un resultado por defecto en la primera linea, así me aseguro de que la función no devuelve nada inesperado. Es algo personal, pero me atrevo a recomendarlo:
No está mal. El problema es que así te expones a otro warning:

Cita:
Value assigned to 'divide' never used
si, por ejemplo, haces:

Código Delphi [-]
function divide(a, b: Integer): Integer;
begin
  Result := 0;

  if b <> 0 then
    Result := a div b
  else
    raise Exception.Create('Regrese a la primaria');
end;



Aunque menos "dañino", no me gusta que aparezca ninguna advertencia.

// Saludos
Responder Con Cita
  #7  
Antiguo 03-05-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Bueno roman, yo empiezo poniendo esa linea, luego si la cosa se tuerce se quita y en paz
Responder Con Cita
  #8  
Antiguo 03-05-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
No has definido el valor resultante de la función, colocare un ejemplo muy sencillo de lo que puedes hacer:
1:
Código Delphi [-]
 
function tfhabitacion.verificaanadircliente(Key:word):word;
begin
  //...
  //...
  Result := key;
end;

o

2:
Código Delphi [-]
 
function tfhabitacion.verificaanadircliente(Key:word):word;
begin
  //...
  //...
  verificaanadircliente := key;
end;

Espero te sirva .
__________________
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
problema con funciones delphi xelip Varios 10 29-03-2007 05:21:51
Problema con funciones de Delphi7 xelip Varios 3 19-03-2007 02:39:38
Dll y funciones mar646 API de Windows 2 27-04-2005 16:45:40
Funciones de SQL DarkSide SQL 6 24-01-2005 16:00:02
Funciones Ras mauro Varios 0 17-07-2003 03:36:28


La franja horaria es GMT +2. Ahora son las 15:53:42.


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