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 01-10-2004
Avatar de Xianto
Xianto Xianto is offline
Miembro
 
Registrado: oct 2004
Ubicación: Nací en Neuquén (ARG), desde 2001 Spain
Posts: 151
Poder: 20
Xianto Va por buen camino
Funciones para novatos...

Muy buenas, soy un nuevo miembro de esta linda comunidad y necesito una explicación...

He programado en casi todo C, Java, VB y demas de micro$oft... pero soy nuevo en el delphi... tan solo 2 dias, y he probado un par de cosillas, por lo que estoy muy contento. Necesito algun lenguaje potente para trabajar con DB pero que sea tipo RAD, por eso estoy probando el delphi.

Pero tengo un problemilla con el tema de hacer un archivo .pas, una unit en la que esten todas mis definiciones, las que uso generalmente. El problema es que no hay tanta documentacion de delphi como de otros lenguajes, y la que hay es de versiones viejas, incluso la version 8 tiene poca docuemtación...

He aqui el problema, quiero hacer mi unit, pero el problema es la clase... la verdad que no tengo idea cuales son las clases y me ha sido imposible encontrar informacion sobre ello.

Ejemplo:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, etccccc;

type
TFormA = class(TForm)
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Pepa: TPepa;

implementation

{$R *.dfm}

procedure TPepa.FormActivate(Sender: TObject);
begin
a := b;
end;

end.

En este ejemplo la clase es un TForm) lo que quiero es definir mi clase con alguna funcion y variables Publicas o Globales para ver de todos lados, pero no se como hacer, he probado varias cosas, pero al no estar familiarizado con los errores no termino de ver la verdad !!!

Pido por favor que alguien me detalle una clase cualquiera sea que no necesite de ningun formulario o cualquier otra cosa... algo que el programa interprete como codigo añadido y que pueda incorporar en el resto de la aplicacion tan solo con el uses...

Desde ya muy agradecido !!!
Responder Con Cita
  #2  
Antiguo 01-10-2004
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 Xianto
...En este ejemplo la clase es un TForm) lo que quiero es definir mi clase con alguna funcion y variables Publicas o Globales para ver de todos lados
Se pueden definir métodos y propiedades de la clase en las partes public y published (en realidad la parte published sería para eventos y propiedades que puedan aparecer en el explorador de objetos -en caso de clases que lo utilicen-) de la clase (procA); Luego a parte si tienes una función que quieres definir en esa Unit que es global y que no pertenece a esa clase puedes definirla fuera de la clase (procC); En tu ejemplo:

Código Delphi [-]
type
TFormA = class(TForm)
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
// método
procedure procA();
end;
var
Pepa: TPepa;
// Defininición externa a la calse
procedure procC();
 
implementation
{$R *.dfm}
procedure TPepa.FormActivate(Sender: TObject);
begin
a := b;
end;
end.

Para utilizar el método published harías algo similar a ésto:

Código Delphi [-]
 
uses
UnitForm2;
...
var
F1:TFormA;
begin
F1 := TFormA.Create(Application);
F1.procA;
...
 
// Para utlizar el método que no pertenece a la clase basta con que
// la unit esté añadida al uses.
procC();
...
__________________
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
  #3  
Antiguo 01-10-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
en Delphi: File --> New --> unit;

Código Delphi [-]
unit Codigoutil;
{-----------------------------------------------------------------------------
 Unit Name: Codigoutil
 Author:    Lepes
 Purpose:   Reunir funciones de muy comun uso bajo una sola Unidad.
 History:   Empezada el 23/10/2003
            Finalizada (creo que nunca se acabará  )
-----------------------------------------------------------------------------}

interface
uses Math, SysUtils,windows, stdCtrls, DBTABLES, DB; 
//  uses que necesitas porque el tipo de dato está antes del Implementation.
     

  // Tipo de datos publico accesible desde otras unidades
  type TMovidos = record
          desde, donde :Integer;
  end;


//funciones publicas que se acceden solo con añadir el uses de esta unidad
function CreateTemporalFile(const APrefix: string): string;
function GetTemporalFilename: string;

implementation

uses strUtils; 
// uses que hacen falta en la parte de implementation.
// porque uso funciones que estan declaradas en otro sitio
// o porque uso tipos de datos en el interior de las funciones
// que estan declarados en otras unidades.

{-----------------------------------------------------------------------------
  Proc:       CreateTemporalFile
  Autor:      Lepes
  Argumentos: const APrefix: string (3 caracteres máximo)
  Result:     string

  Propósito: Crear un fichero temporal con nombre unico
-----------------------------------------------------------------------------}
function CreateTemporalFile(const APrefix: string): string;
var
   TempPath, TempFile: array [0..MAX_PATH-1] of Char;
begin
   GetTempPath(SizeOf(TempPath), TempPath);
   if GetTempFileName(TempPath, PChar(APrefix), 0, TempFile) = 0 then
      RaiseLastOSError;
   Result := string(TempFile);
end;

{-----------------------------------------------------------------------------
  Proc:       GetTemporalFilename
  Autor:      Lepes
  Argumentos: None
  Result:     string

  Propósito: Obtener un Nombre de fichero único
  Tambien puede interesar:
  utilizar la función CreateFile, del API de Windows, y hacer uso de la opción
  FILE_FLAG_DELETE_ON_CLOSE. Los ficheros creados con este atributo se borran
  automáticamente cuando se cierran
-----------------------------------------------------------------------------}
function GetTemporalFilename: string;
var
   TempPath: array [0..MAX_PATH-1] of Char;
   G: TGuid;
begin
   GetTempPath(SizeOf(TempPath), TempPath);
   OleCheck(CoCreateGuid(G));
   Result := string(TempPath) + GuidToString(G);
end;

end.

Ahora solo queda guardarla con el nombre CodigoUtil.pas, y añadir la carpeta a : Tools --> enviroment Options --> library --> library path

Para que encuentre la unidad codigoutil al añadirlo en el uses de otras unidades.

Manualmente tambien puedes usar: Project --> Add to project y elegir el archivo codigoutil.

Por supuesto te aconsejo crearte varias librerias segun el tipo de rutinas que vas a incluir (tratamiento de cadenas, de bases de datos, tratamiento de rutas de archivos, etc.) y llamar las unidades de una forma homogenea con un prefijo, por ejemplo, todas mis librerias se llaman LPObjetos, LPConstantes, etc. (LP = Lepes)

En cuanto a crear Clases, es mejor no mezclarla con funciones publicas para no engorronear el archivo. Normalmente las clases las defines en otro archivo .pas que no sea el mismo.
Responder Con Cita
  #4  
Antiguo 01-10-2004
Avatar de Xianto
Xianto Xianto is offline
Miembro
 
Registrado: oct 2004
Ubicación: Nací en Neuquén (ARG), desde 2001 Spain
Posts: 151
Poder: 20
Xianto Va por buen camino
Vaya gente mas simpatica que hay en esta comunidad...
Eternamente agradecido, me han venido de 10 los ejemplos.

Muy amables !
Responder Con Cita
  #5  
Antiguo 02-10-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Que conste que Neftali y yo, no nos hemos puesto de acuerdo, cada uno ha puesto su granito de arena y al final hemos acertado, podíamos habernos referido ambos al mismo tema :d.

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


La franja horaria es GMT +2. Ahora son las 13:32:22.


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