Ver Mensaje Individual
  #5  
Antiguo 28-10-2007
Stanley Stanley is offline
Registrado
 
Registrado: abr 2007
Posts: 8
Reputación: 0
Stanley Va por buen camino
Ayuda con funciones

Cita:
Empezado por Delphius Ver Mensaje
Hola Stanley,
Te agradezco que te pusieras en contacto conmigo por MP (Mensaje Privado) para agradecerme que te fui de ayuda.
Lo que creo conveniente hacerte notar es que aqui preferimos que tus dudas estén a disposición de todos. Tratamos de ofrecer ayuda en forma desinteresada y para el bien de toda la comunidad y no por mensajes privados o "en linea". Ya que de esa manera el conocimiento queda en poder de pocos.
No es una reprimenda, sino una aclaración.

Con respecto a tu duda, básicamente la estructura de una unit es como sigue:

Código Delphi [-]unit UEjemplo;

interface {Aqui declaro el cuerpo y la estructura. Todo en forma declarativa,
y no en forma "procedimental". Es decir que en esta sección no se encuentra
el código sino la declaración.
La sección interface sirve para hacer público el comportamiento de la unidad.
Es decir que lo declarado aquí será visto desde "afuera"} {En este ejemplo desde cualquier otra unidad que haga uso de ésta (UEjemplo) se
podrá ver:
* UNA_CONSTATE
* TArreglo
* TClase
} uses {Unidades que usa la Unit UEjemplo} SysUtils, QDialogs; const UNA_CONSTANTE = 1000; type TArreglo = array[1..UNA_CONSTANTE] of integer;

{Un ejemplo de clase} TClase = class {Una clase tiene 4 secciones: private, protected, public, published} private {Desde afuera de la clase no se puede tener acceso a esta sección. Por
Tanto FCantidad es privada, solo puede ser empleada desde "adentro"
de la propia clase} FCantidad: integer; {Primero se listan las variables y luego las funciones y/o procedimientos} procedure SetCantidad(Value: integer);
public {Lo dispuesto en public es visto desde afuera. Cantidad es una propiedad
y permite cambiar el valor de FCantidad mediante SetCantidad} property Cantidad: integer read FCantidad write SetCantidad;
end;


implementation {Lo declarado en implementation no es visto desde afuera. Tiene 2 propósitos:
1. Ocultar alguna función o procedimiento
2. Mantener el código} var unArreglo: TArreglo;

procedure ProcedimientoOculto;
{Este procedimiento está oculto. No puede ser visto desde afuera} var i: integer;
begin for i := 0 to UNA_CONSTANTE do unArreglo[i] := i; end;

procedure Aviso;
begin ShowMessage('Se ha disparado la unidad');
end;

{ --- Aqui comienza el cuerpo de la clase ----} procedure TClase.SetCantidad(Value: integer);
begin if Value <> FCantidad
then FCantidad := Value
else raise Exception.Create('Cantidad ya tiene dicho valor');
end;

initialization {Esta sección es opcional. Y se usa para que cuando se "inicie" esta unidad
se disparen algunos procedimientos, funciones, eventos.. etc} ProcedimientoOculto; Aviso; end.

Ahora para hacer uso de UEjemplo sólo basta con ir a la unidad correspondiente (no necesariamente dicha unit debe corresponder a algún form) y declararla en la parte uses:

Código Delphi [-]uses UEjemplo;


Como podrás observar... UEjemplo no tiene o no le pertenece a ningún form.
En el ejemplo que te expuse están expuesto los temas más comunes con respecto a tus dudas. Viendo que recién te inicias en Delphi te sugiero una buena lectura: La Cara Oculta de Delphi 4. Al pdf lo vas a ubicar muy fácil con sólo buscarlo en San Google (o el buscador de tu predilección). Concretamente te sugiero empezar a leer:
Capitulo 3. Unidades, proyectos y paquetes. Allí está bien explicado como está estructurada una unit.
Capítulo 6 y 7. Programación Orientada a Objetos. Allí se trata lo referente a clases.

Bueno creo que con eso ya tienes para empezar. Ya sabes, ante problemas:
1. Buscar en los foros.
2. Si la búsqueda no fue satisfactoria:
2.1. Si existe un hilo en que se trate el tema ya sea en forma superficial o algo similar, postear tus dudas allí.
2.2. Si no hay hilo con dicha temática. Iniciar uno.

Recuerda que cuanto mayores detalles puedas aportarnos con respecto a tus inconvenientes más te podremos ser de ayuda.

Saludos,
Lo que me escribes aqui me ayuda, en cierto punto, pero a la hora de declarar una funcion tipo publica

public
function selemes(varMes: integer): integer;

y luego coloco el codigo en la parte de implementacion
function selemes(varMes: integer): integer
begin
//aqui va el codigo
end
el borland developer me dice que la declaración de la funcion no es correcta me indica que le falta algo.

Es cierto que soy un completo novato en delphi, ya que lo que yo deseo hacer siempre lo he hecho facilmente en fox o en VB.net que es crear un metodo o una clase que contenga todas las funciones y en el codigo simplemente me refiero a esa funcion como x = selemes(1) o x = myfunciones.selemes(1)

me seria de mucha ayuda un ejemplo, es cierto que lo que Delphius me indica funciona para los procedimientos que uso pero lo que me mata es que coloco el uses en el formulario y aunque le haya agregado procedimientos publicos y variables publicas en el codigo del form coloco
edit1.text := Proceds.Tclass.
pero despues de este punto no me aparece nada aun con el ejemplo que Delphius hizo, ya que lo copie tal y como esta y no pude ver la tArreglo solo pude ver la TCLass, pero no vi los procedimientos que coloque despues de tipo publico
Responder Con Cita