Foros Club Delphi

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

Makiley 03-02-2006 13:31:34

functions
 
Wenasss!! Os hago una preguntilla tonta pero que me hace falta

Una function puede devolver 2 enteros distintos?
Ej:
function asientos(Grid:TStringGrid; col,fil:integer; texto:TEdit;
progreso:TProgressBar; dinero:integer; porcenta:integer):integer;
...
result:=dinero;
result:=porcenta;

Y despues en la llamada..
caja:=asientos(StringGrid1,ACol,ARow,Edit1,ProgressBar1,caja,porcentaje);
porcentaje:=asientos(StringGrid1,ACol,ARow,Edit1,ProgressBar1,caja,porcentaje);
Edit1.Text:=IntToStr(porcentaje);

Aver si m podeis echar una mano.. y decirme si se puede y si seria asi.

Muchas Gracias!!

Ohcan 03-02-2006 13:40:02

No... pero sí :)
 
Lo que puedes hacer es definirte:
Código Delphi [-]
//[...]
TMiRecord = record
  money,
  percent:Integer;
end;
//[...]

Y luego usarlo como resultado de tu función:
Código Delphi [-]
function asientos(parametros):TMiRecord;
begin
//[...]
  Result.money := dinero;
  Result.percent := porcenta;
end;

Neftali [Germán.Estévez] 03-02-2006 13:43:10

La otra opción es que la conviertas en un procedure y utilices parámetros variables.

NOTA: Utiliza el "TAG delphi" cuando añadas código a los mensajes (ultimo icono del editor de mensajes).

Makiley 03-02-2006 13:49:19

functions
 
Ufff parece que va de perlas, pero.. no te habia dicho que mi funcion esta en otra Unit distinta no? sorry.
Esque tengo varias units y tengo una units donde estan todos los procedimientos y funciones, y necesito que una de esas funciones le duelva 2 enteros a todas las demas units.
Ya me he definido el typo record como me habia dicho, pero cuando me voy a la Unit de los procedimientos y funciones cuando pongo result.money:=dinero... me dice que no.
Tambien era de esperar.
Hay alguna solucion. Gracias! y perdona por las molestias.

Ohcan 03-02-2006 13:56:40

Simplemente declara el record en la misma unit en que tienes la definición de tu función.
y cuando la llames puedes hacer algo así:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  g,h:Integer;
begin
  //Desde el form1, llamamos a MiFuncion que está en form2
  g := Form2.MiFuncion(parametros).money;
  h := Form2.MiFuncion(parametros).percent;
  //En el uses de form1 debes tener la unit del form2
end;

Ohcan 03-02-2006 14:01:46

o también:
Código Delphi [-]
var
  varRecord:TMiRecord;
begin
  varRecord:= Form2.MiFuncion(parametros);
end;
Esta segunda opción es mejor (creo), ya que en el post anterior ejecutarías dos veces la funcion y con esta otra sólo una.
Y podrías hacer varRecor.money y varRecord.percent

Saludos.

Makiley 03-02-2006 14:56:05

Muchas graciass Ohcan! me ha servido todo!
Estoy empezando con esto de delphi, y me gusta, xD
Hasta otra!

Ohcan 06-02-2006 10:52:36

De nada :)
Y cuidado... ¡que engancha! ;D

xEsk 07-02-2006 12:17:02

Otra forma seria el paso de parametros por referencia
 
Otra forma, sencillita tambien seria el paso de parametros por referencia.

Aqui el ejemplo:
Código Delphi [-]
procedure asientos({parametros originales}; var r_dinero: Integer; var r_porcenta: Integer);
...
r_dinero:={lo q sea};
r_porcenta:={lo q sea};

Saludos.


La franja horaria es GMT +2. Ahora son las 11:33: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