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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-04-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Funciones?, Procedimientos?

Hola
Como bien sabéis, de estas cosas no se pero se que algunos, muy pocos, sabéis un poco menos que yo, así que os quiero explicar, como novato, que aveces no necesariamente se tienen que hacer las cosas de una u otra manera, que se pueden hacer como le quede a uno mas cómodo, mas fácil de entender o incluso mas practico.
Sabemos que en internet, el Club y en muchos sitios encontramos funciones que nos hacen la vida mas simple, si claro, ya están hechas y para que romperse la cabeza.
Pues bien, muchas veces queremos, incluso por curiosidad, entenderlas pero no nos dan las neuronas, entonces a donde recurrimos, bueno, puede ser a un amigo, aun asi, recuerden, las neuronas no nos dan.
Bueno, según lo poco que he aprendido me gusta usar los procedimientos, incluso mas que las funciones, si ya se, en ciertos casos es inevitable, pero os quiero dar un simple ejemplo para que tratéis de entender que no necesariamente tenemos que menospreciar nos por no saber o poder tener claro el uso de las funciones teniendo en la mano a los procedimientos.
Primero hagamos una función, sencilla pero tediosa:
Creemos un form y coloquemos le tres edit y un botón.
Ahora pongamos una variable global, en este caso integer, asi:
Código Delphi [-]
var
  Form1: TForm1;
  VariableGlobal: integer;
implementation

Ahora creemos nuestra funcion, sencilla:
Código Delphi [-]
function suma(dato1,dato2:Integer; dato3:bool):bool;
begin
 if (dato1+dato2 = VariableGlobal) and (dato3 = true) then
     result := true
 else result := false;
end;
Tratemos de entender que hace esta cosa:
La función se llama suma, bueno, debería de sumar.
Tiene dos datos integer y un dato boleano.
Osea, los primeros son la ejecución y el tercero cumple un criterio.
Si el criterio es cierto, envía un resultado boleano, es lo que esperamos recibir de esta función.

Ahora veamos el desarrollo de la función:
Dice: SI el dato1 sumado al dato2, (integer, dentro de la variable) y el dato3 es verdadero (cumple un criterio) se disparara, enviando el resultado dentro de (result), muy obvio, el nombre lo dice.

Ahora veamos como funciona esta función, sencilla:
Usemos el boton y en el evento onclick ponemos esto:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
 VariableGlobal := strtoint(Edit1.Text);
 if Suma(StrToInt(Edit2.Text),StrToInt(Edit3.Text),true) then
 ShowMessage('El resultado es '+Edit1.Text);
end

Tratemos de analizarlo:
La primera linea llama a la variable global e indica que es igual al edit1.
En la segunda linea dice:
SI (LLAMAMOS O NOS POSICIONAMOS EN LA FUNCIÓN SUMA) le eviamos los datos dentro del edit2 y el edit3 he indicamos que tiene que ser verdadero (TRUE), entonces, si se cumplió lo que indica la función, envia un mensaje en el que concatenamos el resultado, recordad (result) al edit1.

Como veis, esta sencilla función lo único que hizo fue comparar dos datos que al ser sumados den como resultado el tercer dato, de obtenerse el dato correcto enviara un mensaje.
Ojala todas las funciones fueran tan sencillas........

Bien, ahora veamos como se haría esto usando un procedimiento y si varia el resultado:
En el mismo form pongamos otro boton:
Creemos el procedimiento (suma1), al principio, donde estan todos, asi:

Código Delphi [-]
    procedure suma1;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);

Coloquemos un par de variables globales, en este caso una string, la llamamos x, otra boolean, la llamamos b asi:
Código Delphi [-]
var
  Form1: TForm1;
  x: String;
  b: boolean;
  VariableGlobal: integer;
implementation

Ahora hagamos nuestro procedimiento:
Código Delphi [-]
Procedure TForm1.suma1;
begin
  If FloatToStr(StrToFloat(Edit3.Text) + StrToFloat(Edit2.Text)) = Edit1.Text then
   begin
   x:= Edit1.Text;
   b:= true;
   end
   else
   b:= false;
end;

Tratemos de analizarlo, dice:
SI el contenido del edit3 sumado al contenido del edit2 es igual al edit1 entonces X (variable global) es igual al edit1 y b (variable boolean) es verdadera (true), de lo contrario (else) es falsa.

Veamos como llamaríamos a este procedimiento y que nos devuelve como resultado:
Usemos el evento onclick del segundo boton, asi:
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
begin
  suma1;
   If b = True then
  Showmessage('El resultado es ' + x);
end;

Que hace:
Llamamos al procedimiento suma1.
Si coinciden los datos con los del procedimiento entonces comprueba que la variable b sea verdadera y nos envia un mensaje que contiene el resultado dentro de la variable global X.

Si ejecutáis el programa veréis que tanto el uso de la función como el del procedimiento envía Exactamente lo mismo y hacen la misma comprobación.

Este solo es un ejercicio para que los novatos como yo no os desaniméis y veáis que se pueden hacer las cosas de muchas maneras, por lo menos a mi me parece.

Espero os sea de utilidad.
Saludos
__________________
Siempre Novato
Responder Con Cita
 



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
Definición de procedimientos y/o funciones mauqu Varios 2 27-08-2007 16:00:19
Procedimientos y funciones en formularios MDI joumont OOP 9 05-03-2007 21:21:34
Sobre procedimientos y funciones Perrero80 OOP 3 17-05-2006 11:55:42
Definir funciones y procedimientos en FastReport???? burasu Impresión 1 16-05-2005 21:47:37
Procedimientos y funciones en paquetes MARIOR Varios 2 08-01-2004 23:50:51


La franja horaria es GMT +2. Ahora son las 20:22:30.


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