Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Duda con Function (https://www.clubdelphi.com/foros/showthread.php?t=64433)

Paulao 01-04-2009 13:26:05

Duda con Function
 
Se que no es posible una funcion tener dos results. Entonces mi gustaria de hacer el seguinte:
Una funcion boolean que me trae True o False. Pero en esta funcion yo tengo dos variables que son cargadas en la funcion. Como puedo buscar el valor destas variable dentro de la funcion y trabajar con ellos afuera de la funcion? Pero no es el result, pero si las variables que están dentro de la funcion.

dec 01-04-2009 13:33:27

Hola,

Una posibilidad es usar variables pasadas a la función como argumentos "por referencia":

Código Delphi [-]
function Foo(var a: string) : boolean;
begin
  a := a + ' from Brasil';

  Result := true;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  a: string;
begin
  a := 'Paulao';

  Foo(a);

  ShowMessage(a); // Show: "Paulao from Brasil"

end;

Como ves, es bastante sencillo, basta con usar la palabra reservada "var" antes del identificador de la variable. Cualquier cambio que se haga a la variable "a", se mantendrá en dicha variable incluso fuera ya de la función.

Paulao 01-04-2009 13:45:44

Una pregunta. Tengo que pasar el valor de la variable en la llamada de la funcion? En su ejemplo tengo que pasar el valor de a: Foo(a). Pero esto yo no quiero, pues el valor tendra que venir de la funcion asi:

Código Delphi [-]
function CarregaValores(ano, num: Integer): boolean;
var
  tipo, equipamento: String;
begin
  tipo        := qryOcorPend.FieldByname('ABRANGENCIA').AsString;
  equipamento := qryOcorPend.FieldByname('DEFEITO_FALHA').AsString;
  ...........
  Result := True;
end;
if CarregaValores(2009, 2589) then
carga los valores de las variables tipo y equipamento;
Pero en mi ejemplo aca puzo ellos locales a la funcion, pero pueden ser globales o publicas e etc... Esto es solo un ajemplo. No puedo tener una variable como parametro, pues no puedo dar a ella un valor. La funcion tiene mas cosas, esto es solo un ejemplo.

dec 01-04-2009 14:06:55

Hola,

A bote pronto, otra posible solución podría ser algo similar a esta:

Código Delphi [-]
type
  TCarregaValoresResult = record
    tipo: string;
    result: boolean;
    equipamiento: string;
  end;

function CarregaValores(ano, num: Integer): TCarregaValoresResult;
var
  tipo, equipamento: String;
begin

  Result.tipo := 'Valor';
  Result.equipamiento := 'Valor';

  Result.result := true;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  carregaValoresResult: TCarregaValoresResult;
begin
  carregaValoresResult := CarregaValores(2009, 2589);

  if carregaValoresResult.result then begin

    ShowMessage(carregaValoresResult.tipo); // Show Valor

    ShowMessage(carregaValoresResult.equipamiento); // Show Valor
  end;

end;


La franja horaria es GMT +2. Ahora son las 18:26:43.

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