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
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
  #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
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
  #3  
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
  #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
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 17:58:26.


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