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 26-05-2006
kiringui kiringui is offline
Miembro
 
Registrado: may 2006
Posts: 22
Poder: 0
kiringui Va por buen camino
como creo funcion ?

buenas queridos maestros!!!!
soy nuevo en esto y me interesaria saber como devo crear una nueva funcion ...
sonde devo implemetarla ????
Y a poder ser algun ejemplillo?

gracias
kiringui
Responder Con Cita
  #2  
Antiguo 26-05-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Tal vez te interesaría echar un vistazo al curso de Delphi que tiene Francisco Charte en su Web Torre de Babel.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 26-05-2006
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
Hola y bienvenido al ClubDelphi, nunca viene mal darle un repaso a la Guia de Estilo .

En cuanta a tú duda ahí va un ejemplo. Las funciones, al igual que los procedimientos puedes declararlo donde quieras, generalmente en la parte privada, pero si deseas que sea accesible, desde otros módulos del programa puedes ponerla en parte private.

La forma de declararla es sencilla, le pones el identificador delate de si es procedure o function, un espacio y le nombre de dicha funcion. Despues le puede poner los parámetros que le quieras pasar (entre parentesis) y los datos que quieres que te devuelva.

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    Button1: TButton;  
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    function SumaValores(valor1, valor2 : Integer) : Integer;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var v1, v2 : Integer;
begin
   v1 := 3;
   v2 := 8;
   edit1.text := IntToStr(sumavalores(v1, v2));
end;

function Tform1.SumaValores(valor1, valor2 : Integer) : Integer;
begin
   Result := valor1 + valor2;
end

end.

Es sencillo, hemos declarado la funcion en la parte privada del programa, la hemos implementado con la combinación de teclas CTRL + SHIFT + C, para que se cree el cuerpo de la funcion:

Código Delphi [-]
function Tform1.SumaValores(valor1, valor2 : Integer) : Integer;
begin

end

y luego la hemos rellenado. Lo que hay entre parentesis sin los valores que le pasamos y lo que hay despues de los dos puntos es el tipo de dato que queremos que nos devuelva.

Por último hemos añadido un botón que rellena la propiedad text de un campo edit con el valor que devuelve la funcion que hemos creado. Hemos tenido que hacer un cast (IntToStr), porque la propiedad text es una cadena de texto.

Si tienes alguna duda más postéala aquí.

Espero te haya servido.

Saludos
Responder Con Cita
  #4  
Antiguo 26-05-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Sólo quería añadir que Bicho está declarando e implementando métodos de un objeto, más que funciones, simplemente. Implementar una función puede hacerse dentro de la cláusula "implementation" de una determinada unidad, y, si se quiere que dicha función sea accesible desde fuera de dicha unidad, habría que añadir el prototipo de la función, su declaración, dentro de la cláusula "interface". Algo como esto:

Código Delphi [-]
unit UMiUnidad;

interface

implementation

{ Función no accesible desde fuera de esta unidad
}
function Suma(const a,b: integer) : integer;
begin
  Result := a + b;
end;

end.

O esto:

Código Delphi [-]
unit UMiUnidad;

interface

function Suma(const a,b: integer) : integer;

implementation

{ Función accesible desde fuera de esta unidad
}
function Suma(const a,b: integer) : integer;
begin
  Result := a + b;
end;

end.

Pero, en fin, sigo remitiéndote al curso de Delphi que he mencionado antes y a otros que puedas encontrar. Sólo quería decir que Bicho ha utilizado métodos, que, efectivamente, no dejan de ser funciones, pero, funciones que pertenecen a un objeto.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 26-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
En pascal una función se declara así:

Código Delphi [-]
function MiFuncion(parámetros): tipo;
begin
  (*
    código de la función
  *)

  Result := valor_de_vuelta;
end;

Ejemplo:

Código Delphi [-]
{ Suma dos números enteros }
function Suma(A, B: Integer): Integer;
begin
  Result := A + B;
end;

Ahora, ¿dónde implementarla?

En pascal, una unidad tiene la siguiente estructura:

Código Delphi [-]
unit nombre_de_unidad;

interface

implementation

end.

Debes poner la implementación en lasección implementation

Código Delphi [-]
unit nombre_de_unidad;

interface

implementation

function Suma(A, B: Integer): Integer;
begin
  Result := A + B;
end;

end.

Puesto así nada más, sólo podrás usar la función en la misma unidad. Para poder usarla en otras unidades, debes "exportarla" colocando su encabezado en la sección interface:

Código Delphi [-]
unit nombre_de_unidad;

interface

function Suma(A, B: Integer): Integer;

implementation

function Suma(A, B: Integer): Integer;
begin
  Result := A + B;
end;

end.

// Saludos
Responder Con Cita
  #6  
Antiguo 26-05-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Román, he restaurado tu mensaje, puesto que creo que aporta información que puede ser útil.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 26-05-2006
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
me han distraido

Sólo añadir que dec tiene razón con lo poder declarar una función directamente en el apartado interface sin necesidad de declararlo como un método privado o publico. Tenia pensado ponerlo, pero me distrajeron mientras lo redactaba y al retomarlo se me fue de la cabeza y proseguí con lo empezado.

Siempre es bueno tener gente en el club que está a punto siempre para detectar cualquier errata/fallo o en éste caso un descuido de cualquiero.

Con ésto no quiero ofender a mi buen amigo dec, en absoluto, en éste caso agradecer la rapidez con la que ha visto lo que me dejaba y nos ha adevertido por ello

Saludos
Responder Con Cita
  #8  
Antiguo 26-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
Cita:
Empezado por Bicho
Sólo añadir que dec tiene razón con lo poder declarar una función directamente en el apartado interface sin necesidad de declararlo como un método privado o publico.
Yo creo que hay que tener muy clara la diferencia. Tú lo dices como si private o public fuesen otras secciones de la misma unidad, al igual que interface o implementation. Pero son de naturaleza totalmente distinta.

private o public son "secciones" de la declaración de una clase y las "funciones" o "procedimientos" allí declarados son métodos del objeto que se esté definiendo.

Las clases se definen entro de una unidad pero no son inherentes a ella y una unidad puede no tener definida ninguna clase. Además, los métodos de una clase no pueden usarse directamente sino que debe siempre crearse un objeto de esa clase.

// Saludos
Responder Con Cita
  #9  
Antiguo 26-05-2006
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
Cita:
Empezado por roman
Yo creo que hay que tener muy clara la diferencia. Tú lo dices como si private o public fuesen otras secciones de la misma unidad, al igual que interface o implementation. Pero son de naturaleza totalmente distinta.
Tienes razón, me expresé mal. Pero el estar 3 años trabajando de la misma forma y sólo programando en el trabajo, ya no programo fuera, hace que mi forma de programar sea monotona, y la forma de trabajar en mi empresa, es decir que los programas que desarrollamos no necesitan de estructas en la que tengamos que declarar varias clases en la misma unidad, y nos hemos acostumbrado a declarar siempre las funciones dentre de las secciones de la clase del formulario en el que estemos trabajando. No es que lo desconociera, en absoluto, pero repito, la rutina del trabajo y la falta de práctica en ésto, aparte de la distracción antes comentada han hecho que lo olvidase, es lo que tiene estar posteando en el trabajo, pero no se lo digais a nadie

Un saludo
Responder Con Cita
  #10  
Antiguo 29-05-2006
kiringui kiringui is offline
Miembro
 
Registrado: may 2006
Posts: 22
Poder: 0
kiringui Va por buen camino
kiringui

gracias a todos prove varias formas funcia perfect!!!!!
Otra consulta ....
como pinto una celda en concreto de stringgrid ????

kiringui,
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
Como creo un instalador Mariana Varios 9 12-02-2007 13:09:16
Como creo un instalable? miguelml Varios 1 21-05-2006 17:10:15
Como Creo una Consulta SQL esimon SQL 4 08-02-2006 17:33:52
Como creo el componente TADOQuery?? cadabra Conexión con bases de datos 1 29-06-2005 09:11:50
Como creo un Backup Mariana Varios 1 17-09-2003 05:59:24


La franja horaria es GMT +2. Ahora son las 18:01:44.


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