PDA

Ver la Versión Completa : Pregunta sobre funciones


atapia
29-06-2007, 19:08:00
Hola,perdon por molestar pero tengo una duda:tengo un procedure del tipo butonclick y no se si sea posible dentro de el llamar a una funcion;tengo q llamar solo a la funcion o poner toda la funcion dentro del procedure.Este es parte del codigo:



procedure TfrmEtiquetas.AbrirpuertoClick(Sender: TObject);
begin
if OHAUS.Checked then
begin
showmessage('Código para OHAUS');
Function TfrmEtiquetas.LeePeso(var peso: double) : boolean;
var
buff : string;
intentos : integer;
lectura_correcta : boolean;
begin
buff := 'P'+chr(13)+chr(10);
PesoPort.WriteText(buff);
//Una espera inicial de .3 segundos
sleep(300);
intentos := 0;
etc etc etc...

Creo q lo q esta mal es poner asi la funcion no?Ojala alguien me pueda explicar:p .Gracias

eduarcol
29-06-2007, 19:11:51
Creo q lo q esta mal es poner asi la funcion no?Ojala alguien me pueda explicar:p .Gracias

Menos mal que ya sabes donde esta el error, alli solo debes es llamar a la funcion que debe estar dentro del cuerpo de implementation pero fuera de los procedures


procedure TfrmEtiquetas.AbrirpuertoClick(Sender: TObject);
begin
if OHAUS.Checked then
begin
showmessage('Código para OHAUS');
VariableBoolean := LeePeso;
end;
end;

Function TfrmEtiquetas.LeePeso(var peso: double) : boolean;
var
buff : string;
intentos : integer;
lectura_correcta : boolean;
begin
buff := 'P'+chr(13)+chr(10);
PesoPort.WriteText(buff);
//Una espera inicial de .3 segundos
sleep(300);
intentos := 0;
etc etc etc...
end;


Espero te sirva

atapia
29-06-2007, 19:15:34
Muchas gracias, que bueno q no andaba tan perdido como dices jaja,seguire trabajando,si me atoro los volvere a molestar, gracias de nuevo :) .

José Luis Garcí
04-07-2007, 18:51:29
Personalmente prefiero meter todas las funciones en un fichero "funciones.pas" y llamarlas con el uses, como a un modulo más.

Un saludo desde Canarias

gabrielkc
04-07-2007, 18:58:56
Existe otra forma de usar las funciones cuando solo la vas a llamar desde un procedimiento


procedure TfrmEtiquetas.AbrirpuertoClick(Sender: TObject);
Function TfrmEtiquetas.LeePeso(var peso: double) : boolean;
var
buff : string;
intentos : integer;
lectura_correcta : boolean;
begin
buff := 'P'+chr(13)+chr(10);
PesoPort.WriteText(buff);
//Una espera inicial de .3 segundos
sleep(300);
intentos := 0;
etc etc etc...
end;

var Var_boolean:Boolean;
begin
if OHAUS.Checked then
begin
showmessage('Código para OHAUS');
Var_boolean:=LeePeso(peso);
end;
end;