Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   functiones que devuleve un record (https://www.clubdelphi.com/foros/showthread.php?t=95646)

oscarac 09-04-2022 06:46:05

functiones que devuleve un record
 
buenas noches

declaro este registro
Código Delphi [-]
type
  Tretorno = record
    _Dato  : string;
    _Valor : Double;
  end;

lo declaro en una funcion como retorno

Código Delphi [-]
function _CalcularCaloria(Alias: TDataSource; _Plato, _Contrato, _Tipo: string): Tretorno;
var _Calorias : double;
..
..
 with _result do
      begin
        _dato := 'Calculo 1';
        _valor := _Calorias;
      end;

invoco a la funcion

Código Delphi [-]
variable := _CalcularCaloria(dsqryCalculoCaloria, edtCodigo.text, '', 'G')

como hago para que la funcion me devuelva _dato y _Valor en VARIABLE ???


no se si se logra entender

Caminante 09-04-2022 15:26:38

Hola


Si "Variable" es de tipo TRetorno no veo cual es el problema


Código Delphi [-]
variable := _CalcularCaloria(dsqryCalculoCaloria, edtCodigo.text, '', 'G');
Showmessage(Variable._Dato); //Muestra Dato
Showmessage(Floattostr(Variable._Valor));//Muestra valor

Bueno no se si entendi bien. En tal caso podrias replantear tu duda.

Saludos

oscarac 09-04-2022 19:50:24

ayer investigando un poco mas, descubrí que así era.


ahora la pregunta del millon es...

que pasa si tengo que devolver una lista de registros

el record también trae la lista? o tengo que crear un array de Tretorno ?

Neftali [Germán.Estévez] 11-04-2022 11:16:35

Cita:

Empezado por oscarac (Mensaje 546447)
ahora la pregunta del millon es...
que pasa si tengo que devolver una lista de registros
el record también trae la lista? o tengo que crear un array de Tretorno ?

Correcto.
Puedes utilizar un array (o un TArray).
En ese caso yo prefiero pasarlo como parámetro en lugar de como retorno de la función, porque a veces no queda claro (con el retorno) quien debe crearlo y destruirlo.

oscarac 11-04-2022 16:29:13

buen dato, no me habia percatado de la potencia de usar "record"
quiza porque nunca tuve la necesidad, pero me gusta como se ve y se usa.

gracias...


La franja horaria es GMT +2. Ahora son las 23:42:09.

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