Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
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
  #2  
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: 26
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
  #3  
Antiguo 03-05-2007
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 20
anubis Va por buen camino
gracias, asi si funciona, son cositas que van saliendo.
Responder Con Cita
  #4  
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
  #5  
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: 26
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
  #6  
Antiguo 04-05-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Yo suelo hacer lo que hace Seoane, ciertamente. La primera línea es una instrucción: "Result := false" o "Result := true", según si se supone que la función ha de retornar "false" o "true" por defecto. Sin embargo, últimamente, programando en PHP, las cosas cambian amigos.

¿Cómo? Pues porque en PHP no vale algo como "return false" al principio de la línea, puesto que el "return" impedirá que se ejecute lo que venga después, es decir, que no es lo mismo que el "result" de Delphi. Lo siento.

Ahora, aún así sigo utilizando a veces algo como:

Código PHP:
function LoqueSea(){
  
$resultado false;
  
/* */
  
return $resultado;

Que es como copiar lo que hago en Delphi: asegurarme de que la función tiene un resultado por defecto. Sin embargo, es verdad que a veces ocurre lo que menciona Román, y bueno, que, últimamente también estoy tirando por el lado de no tener un resultado por defecto, aunque, eso sí, asegurándome de que lo que la función X retorna tiene sentido en cualquier caso. ¡O eso intentamos!
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 04-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
Hola,

A decir verdad me extraña un poco este tipo de técnicas, o la necesidad de ellas. Parece que damos un valor por defecto para "cubrirnos las espaldas" ante algún posible caso no considerado. Pero el valor por defecto no arreglará tal omisión- de haberla -, de tal suerte que el problema seguirá latente. En el caso de Delphi, al menos, prefiero que el compilador me notifique que hay un problema, a ocultar el mensaje con un valor por defecto.

// Saludos
Responder Con Cita
  #8  
Antiguo 04-05-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Bueno. Tú eres mucho más experto que yo, Román, empero, yo no trato de ocultar ningún problema o mensaje de error... sino que, simplemente, asigno un valor de retorno por defecto para una función: nada más y nada menos.

Cuando escribo una función, digamos, "EsUsuarioAdministrador()", a veces (así lo he hecho más a menudo en Delphi que en PHP, eso sí), nada más comenzar la función, escribo un "Result := False", por ejemplo. Es una forma de decir "ningún usuario será considerado administrador a no ser que se cumplan X condiciones... en un primer momento ningún usuario es considerado administrador".

No sé. Tal vez incluso sea una forma de hacer más legible la función, no sé si me explico. Pero, ya digo, la intención no es esconder errores, ni ocultarlos, ni nada de eso.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 05:04:07.


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