Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-05-2006
Avatar de Colgueit
Colgueit Colgueit is offline
Miembro
 
Registrado: abr 2006
Ubicación: Lanzarote, España
Posts: 91
Poder: 19
Colgueit Va por buen camino
Declarar funciones generales

Hola,

Quiero hacer un Modulo de Datos en donde declarar funciones para poderlas usar en todos los formularios. Con los "procedure" todo bien, los pongo en el interface y ya esta... , pero con las "function" no puedo ponerlas en el interface (por lo menos a mi me da error), entonces ¿como hago para que una "function" sea visible por los demas formularios?

Gracias de antemano
Responder Con Cita
  #2  
Antiguo 10-05-2006
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
Debe funcionar sin problemas. Muéstranos cómo lo haces.

// Saludos
Responder Con Cita
  #3  
Antiguo 10-05-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Colgueit
...pero con las "function" no puedo ponerlas en el interface (por lo menos a mi me da error)
¿Y cual es el error que te da? Sin él va a ser difícil...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 10-05-2006
Avatar de Colgueit
Colgueit Colgueit is offline
Miembro
 
Registrado: abr 2006
Ubicación: Lanzarote, España
Posts: 91
Poder: 19
Colgueit Va por buen camino
Lo explico con un ejemplo: Tengo este código declarado en la parte de implementación:
Código Delphi [-]
function EsNif(NIF: String): Boolean;
var
  Numero: Integer;
begin
   Result:= FALSE;
   if TryStrToInt(Copy(NIF,1,Length(NIF)-1),Numero) then
      Result:= Uppercase(Copy(NIF,Length(NIF),1)) = Letra(Numero);
end;

Ahora bien si quiero que sea visible a los demas formularios deberia poner la cabezera ( function EsNif(NIF: String): Boolean; ) en el interface.
Esto es lo que pongo:
Código Delphi [-]
unit ClienteNuevo;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DBCtrls, Mask, ComCtrls, Buttons, ExtCtrls, DB, DBTables;
type
  TFormClienteNuevo = class(TForm)
   //todas los objetos
   //todos los procedures
   function EsNif(NIF: String): Boolean;

Ahí no me deja poner la cabezera de la función, este es el error que da:
[Error] ClienteNuevo.pas(51): Unsatisfied forward or external declaration: 'TFormClienteNuevo.Letra'

¿hago algo mal? y si no ¿entonces donde pongo la cabezera de la funcion o la funcion entera para que sea visible por los demas formularios?

Gracias!

Última edición por Colgueit fecha: 10-05-2006 a las 16:37:21.
Responder Con Cita
  #5  
Antiguo 10-05-2006
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
Eso, con un procedure te va a dar el mismo error. ¿Por qué no revisas los procedure que sí te funcionan y así ves la diferencia?

// Saludos
Responder Con Cita
  #6  
Antiguo 10-05-2006
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
Debes colocarlo dentro del interface, pero tu ademas lo colocas dentro de la declaracion del formulario. Esto puedes solucionarlo de dos maneras:

Sacandolo fuera:
Código Delphi [-]
unit ClienteNuevo;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DBCtrls, Mask, ComCtrls, Buttons, ExtCtrls, DB, DBTables;
type
  TFormClienteNuevo = class(TForm)
   //todas los objetos
   //todos los procedures
  end;


  function EsNif(NIF: String): Boolean;

O por el contrario si va a formar parte del formulario, la implementacion de la funcion seria asi:
Código Delphi [-]
function TFormClienteNuevo.EsNif(NIF: String): Boolean;
var
  Numero: Integer;
begin
   Result:= FALSE;
   if TryStrToInt(Copy(NIF,1,Length(NIF)-1),Numero) then
      Result:= Uppercase(Copy(NIF,Length(NIF),1)) = Letra(Numero);
end;
Responder Con Cita
  #7  
Antiguo 10-05-2006
Avatar de Colgueit
Colgueit Colgueit is offline
Miembro
 
Registrado: abr 2006
Ubicación: Lanzarote, España
Posts: 91
Poder: 19
Colgueit Va por buen camino
Thumbs up Conseguido

Gracias Seoane, la segunda opción es justo lo que quería saber, ya lo he probado y perfecto. Nunca había usado las funciones con un formulario asignado, no sabia que se podía hacer "function formulario.nombre", vaya paquete estoy hecho jeje.

Gracias a todos
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
Declarar variable pública.. JODELSA Varios 8 04-05-2006 13:45:48
declarar un float en delphi dmagui Firebird e Interbase 5 29-09-2005 18:18:10
Donde crear procedimienos generales? JavierO Varios 3 02-09-2005 18:11:19
neofito en firebird y sql (dudas generales) gmontes Firebird e Interbase 2 03-09-2004 00:45:12
declarar Cursor en trigger Carlos de Pablo Firebird e Interbase 4 04-08-2004 05:54:51


La franja horaria es GMT +2. Ahora son las 10:12:00.


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