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-03-2010
Avatar de CarlosHernandez
CarlosHernandez CarlosHernandez is offline
Miembro
 
Registrado: oct 2003
Posts: 139
Poder: 21
CarlosHernandez Va por buen camino
buenas tardes, se que esta es una pregunat vieja pero solo quiero saber en la estructura que puso lepe, en

Código Delphi [-]
 type Numero = (uno, dos, tres);


que es numero y que es (uno,dos,tres)

ya que no se que poner ahi y me da error

por ejemplo en un unit asociado a un form se coloca

Código Delphi [-]
type
  TForm1 = class(TForm)

esto es lo que puse

Código Delphi [-]
unit Unit2;

interface

uses
  Windows;

  type
    Tunit2 =  class(TForm)// estos es un disparate, no se que poner aqui y   es  el motivo de la pregunta
    procedure mensaje;
  end;

implementation


 procedure mensaje;
begin
showmessage('e');
end;

end.
__________________
begin
Elverdugo79@hotmail.com
end;
Responder Con Cita
  #2  
Antiguo 03-03-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Amigo CarlosHernandez >
Si vas a hacer una unidad con procedimientos y/o funciones que no van a pertenecer a ninguna clase pues puedes hacerlo así:
Código Delphi [-]
unit Unit2;

interface

uses Dialogs;

procedure Hola();

implementation

procedure Hola();
begin
 ShowMessage('Hola');
end;

end.
Ahora si por el contrario vas a crear nuevas clases entoces lo haces así:
Código Delphi [-]
unit Unit3;

interface
uses Dialogs;

type
  MiClase = Class {<--Aquí si deseas lo puedes haces asi >  MiClase = Class(TObject)
                   pero es lo mismo ya que para toda clase  que no se especifique su ancestro
                   el compilador asume que su padre es la clase TObject,
                   a no ser que quieras heredar de una clase en cuestión }
  private
    { Aqui se pone todas las declaraciones privadas }
  public
    { Aqui se pone todas las declaraciones públicas }
    procedure Hola();//este método es publico
  end;
implementation

{ MiClase }

procedure MiClase.Hola;
begin
ShowMessage('Hola');
end;

end.
Espero que todo haya quedado claro..
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #3  
Antiguo 04-03-2010
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
CarlosHernandez, tienes toda la razón, ese ejemplo con "Numero" es lo típico que se hace para aclarar cosas y al final resulta de lo más complejo y raro...

Eso de "Numero" es un tipo enumerado en Delphi, vamos, esto mismo:
Código Delphi [-]
type TEstadoCivil = (ecSoltero, ecCasado, ecDivorciado, ecViudo);
Simplemente un tipo de datos que puede contener un sólo estado de todos los posibles. el prefijo "ec" es por aquello de EstadoCivil

Es un tipo de datos definido en ese .pas, pero que se usará en otras partes del programa.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 04-03-2010
Avatar de CarlosHernandez
CarlosHernandez CarlosHernandez is offline
Miembro
 
Registrado: oct 2003
Posts: 139
Poder: 21
CarlosHernandez Va por buen camino
como llamarlo desde otro form

gracias rsgtuamigo y lepe por responder, ya entendi esa parte y corre sin problema, ahora lo que no me deja es llamar ese procedimiento desde el formulario del unit1, aqui declare en las uses el unit2 (que es donde esta el procedimiento a llamar) pero no aparece, no se llamarlo

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
MiClase.hola;
end;

hola no me lo reconoce, no aparece entre las opciones y el error es el siguiente:

"this form of method call only allowed for clas methods"

incluso revise este link pero quede igual
__________________
begin
Elverdugo79@hotmail.com
end;
Responder Con Cita
  #5  
Antiguo 04-03-2010
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
MiClase sólo es la definición de un tipo de datos y no el dato en sí. Luego entonces, por lo general, no puedes usar directamente uno de sus métodos. Sólo los objetos de esa clase pueden hacerlo. Entonces, debes primero crear un objeto de esa clase y usar el método desde ese objeto:

Código Delphi [-]
var
  Objeto: MiClase;

begin
  Objeto := MiClase.Create;
  Objeto.Hola;
end;

Por otro lado, aunque no es obligatorio, se recomienda anteponer un T (de tipo) a los tipos de datos creados por nosotros, lo cual incluye las clases:

Código Delphi [-]
type
  TMiClase = class
    ...
  end;

en lugar de

Código Delphi [-]
type
  MiClase = class
    ...
  end;

// Saludos
Responder Con Cita
  #6  
Antiguo 04-03-2010
Avatar de CarlosHernandez
CarlosHernandez CarlosHernandez is offline
Miembro
 
Registrado: oct 2003
Posts: 139
Poder: 21
CarlosHernandez Va por buen camino
gracias roman y rgstuamigo por ese aporte, ya me funciona perfecto
__________________
begin
Elverdugo79@hotmail.com
end;
Responder Con Cita
  #7  
Antiguo 04-03-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Viendo un poco lo que pretendías hacer con éste códico >
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
 MiClase.hola;
end;
y explicando un poco sobre los métodos de clase (Class methods) que te mencioné en mi anterior post , pues se puede lograr que tu anterior código funcione, tan solo deberias declarar al metodo "hola" como método de clase de ésta forma:
Código Delphi [-]
...
type
  MiClase = Class
  private
    { Aqui se pone todas las declaraciones privadas }
  public
    { Aqui se pone todas las declaraciones públicas }
    class procedure Hola();//este método es un método de clase
  end;
....
Bueno ..desde luego que la implementación del método "hola" tambien debe llevar la palabra reservada "class">
Código Delphi [-]
...
class procedure TMiClase.Hola;
begin
ShowMessage('Hola');
end;
...
En otros lenguajes de programacion como por ejemplo Java o C++ ésto se llama métodos estáticos(static).
Ésto significa que ya no necesito tener un objeto creado(instanciado) de la clase para poder llamar al método "hola", lo puedo hacer directamente atraves de la clase tal como tú lo hiciste , es decir asi:
Código Delphi [-]
...
MiClase.hola;//Ahora si puedo llamar al procedure "Hola" por que es un método de clase. 
...
Para más informacion sobre los método de clases ver la ayuda de Delphi presionando la tecla F1.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 04-03-2010 a las 17:28:03.
Responder Con Cita
  #8  
Antiguo 04-03-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

El problema que veo que tienes es que no has entendido el concepto de Programacion Orientado a Objeto, en éste caso si tienes un Procedure y/o funcion que esta declarado e implementado dentro de una clase, pues la única forma de llamar a tal método es instanciando un objeto de dicha clase , a no ser que lo declares como método clase(Class methods) . ,por ejemplo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var MiObjeto:MiClase;
begin
   MiObjeto:=MiClase.Create;//<-- creo un objeto de tipo "MiClase" 
   MiObjeto.Hola;// Ahora ya puedo llamar al método Hola
   MiObjeto.Free;{<--Siempre despues de usar un objeto hay que liberarlo
                 es decir liberar la memoria cuando ya no se va usar mas dicho objeto}
end;

Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 04-03-2010 a las 16:46:44.
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
llamar a un Store Procedure BlueSteel Firebird e Interbase 6 05-07-2006 09:01:40
Llamar Un Stored Procedure Desde Un Trigger ibuser Firebird e Interbase 3 26-08-2004 09:51:48
¿Como puedo llamar un Procedure desde otra unit? athal Lazarus, FreePascal, Kylix, etc. 11 17-05-2004 01:05:20
Llamar stored procedure con BDE Ricardo Alfredo Conexión con bases de datos 3 12-09-2003 03:09:31
llamar a un procedure desde otro negama Conexión con bases de datos 1 28-08-2003 01:22:15


La franja horaria es GMT +2. Ahora son las 07:07:09.


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