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 18-11-2016
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 210
Poder: 14
compuin Va por buen camino
Ayuda con llamado a funcion

Buenos dias foro, tengo el siguiente problema.

En una Unit 1 tengo una funcion llamada ZodiacName pero al momento de llamarla desde otra unit me arroja el error de Undeclared identifier: 'ZodiacName'

Alguna pista ?

Gracias de antemano
Responder Con Cita
  #2  
Antiguo 18-11-2016
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
En la otra unidad debes agregar la primera en la cláusula uses:

Código Delphi [-]
uses Unit1;

LineComment Saludos
Responder Con Cita
  #3  
Antiguo 18-11-2016
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 210
Poder: 14
compuin Va por buen camino
Gracias

Asi lo hice pero aun asi me arroja ese mensaje de error y no lo compila
Responder Con Cita
  #4  
Antiguo 18-11-2016
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
ZodicaName ¿es una función o un método (de un formulario, por ejemplo)?

LineComment Saludos
Responder Con Cita
  #5  
Antiguo 18-11-2016
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 210
Poder: 14
compuin Va por buen camino
Es una funcion

Código Delphi [-]
function ZodiacName(juldate: double):string;
var
  degree, sign, minute, second: integer;
  zs, ms, ss: String;
begin
  juldate := juldate + 1/120;
  sign := trunc(juldate/30);
  degree := trunc(juldate) - sign*30;
  minute := trunc(frac(juldate) * 60.0);
  second := trunc(frac(juldate * 60) * 60.0);
  zs := Format('%0.2d',[degree]);
  ms := Format('%0.2d',[minute]);
  ss := Format('%0.2d',[second]);
  Result := zs + '°' + ' ' + ms + '''' + ' ' + ss + '"' + ZodiacNames[sign] ;
end;
Responder Con Cita
  #6  
Antiguo 18-11-2016
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
¿Donde está declarada? ¿En la sección interface o en la sección implementation?

LineComment Saludos
Responder Con Cita
  #7  
Antiguo 18-11-2016
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 210
Poder: 14
compuin Va por buen camino
En Implementation
Responder Con Cita
  #8  
Antiguo 18-11-2016
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
Ahí esté el problema. Coloca esta línea en interface:

Código Delphi [-]
function ZodiacName(juldate: double):string;

Otras unidades sólo pueden ver lo que está en interface.

LineComment Saludos
Responder Con Cita
  #9  
Antiguo 18-11-2016
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 210
Poder: 14
compuin Va por buen camino
Ahora me arroja lo siguiente

Declaration expected but 'USES' found
Responder Con Cita
  #10  
Antiguo 18-11-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Estas cosas se solucionan en un periquete si publican todo el codigo fuente relevante, con el mensaje de error del compilador y en que linea. Si no hay que ir adivinando como lo esta haciendo (y encima acertando) roman

Lo que esta en la seccion de implementation es privado a la unidad en cuestion; la unica que puede acceder a dicha funcion es la propia unidad. De hecho, dependiendo de como la tengas declarada puede tener distintos alcances

Código Delphi [-]
unit Unit1;

interface

implementation

function Zod: string; // declaracion de la cabecera, sin implementar: de esta manera es visible en toda la unit

function Foo: string;
begin
  Result := 'Foo';
end;

procedure Algo;
var
  s: string;
begin
  s := Foo; // funciona, porque foo esta implementada mas arriba que este procedimiento
  s := Bar; // no funciona!, porque esta declarada debajo; este procedimiento "no ve" la funcion Bar
  s := Zod; // este caso si funciona porque la cabecera esta declarada
end;

function Bar: string;
begin
  Result := 'Bar';
end;

function Zod: string;
begin
  Result := 'Zod';
end;
Responder Con Cita
  #11  
Antiguo 18-11-2016
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 compuin Ver Mensaje
Ahora me arroja lo siguiente

Declaration expected but 'USES' found
Supongo que estás poniendo la línea antes del uses.

Código Delphi [-]
unit unit1;

interface

uses
  Tal, tal y tal;

function ZodiacName(juldate: double):string;

interface

uses
 Tal, tal y tal;

function ZodiacName(juldate: double):string;
var
  degree, sign, minute, second: integer;
  zs, ms, ss: String;
begin
  juldate := juldate + 1/120;
  sign := trunc(juldate/30);
  degree := trunc(juldate) - sign*30;
  minute := trunc(frac(juldate) * 60.0);
  second := trunc(frac(juldate * 60) * 60.0);
  zs := Format('%0.2d',[degree]);
  ms := Format('%0.2d',[minute]);
  ss := Format('%0.2d',[second]);
  Result := zs + '°' + ' ' + ms + '''' + ' ' + ss + '"' + ZodiacNames[sign] ;
end;

end.

LineComment Saludos
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
!! Ayuda con error de llamado ddl !! beemot OOP 2 05-06-2010 08:54:53
Traducir llamado a funcion juanelo C++ Builder 9 28-01-2010 21:11:11
Ayuda con Funcion edelphi Varios 3 17-07-2006 06:24:03
Llamado a una función de una dll Ricardo León Varios 8 16-12-2005 16:53:08
Ayuda con una función McRight2k Varios 1 13-08-2003 21:47:04


La franja horaria es GMT +2. Ahora son las 20:35:19.


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