Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Inicializacion de variables (https://www.clubdelphi.com/foros/showthread.php?t=10596)

xerkan 24-05-2004 09:46:07

Inicializacion de variables
 
Tengo un par de tipos de variable para componer un tipo medio complejo de variable:

TTipo=record
Porcentaje: Single;
Importe: Currency;
end;
TValores=Record
Valor1: TTipo;
Valor2: TTipo;
Valor3: TTipo;
end;

var
Valor: TValores;

Pues bien me gustaria saber si hay alguna manera de inicializar automaticamente la variable Valor para que todos sus registros se queden a cero sin tener que hacerlo manualmente uno a uno como lo tengo q hacer ahora.

ej.: Valor.Valor1.Porcentaje:=0;
Valor.Valor1.Importe:=0; .......

__cadetill 24-05-2004 09:59:50

Ya que estamos en un lenguaje OO, a ver si te vale esta opción

Código Delphi [-]
  TTipo = class
  private
    FPorcentaje: single;
    FImporte: Currency;
  public
    constructor Create;

    property Porcentaje: single read FPorcentaje write FPorcentaje;
    property Importe: Currency read FImporte write FImporte;
  end;

  TValores = class
  private
    FValor1: TTipo;
    FValor3: TTipo;
    FValor2: TTipo;
  public
    property Valor1: TTipo read FValor1 write FValor1;
    property Valor2: TTipo read FValor2 write FValor2;
    property Valor3: TTipo read FValor3 write FValor3;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TTipo }

constructor TTipo.Create;
begin
  FPorcentaje := 0;
  FImporte := 0;
end;

O otra posible solución

Código Delphi [-]
  TTipo = record
    Porcentaje: Single;
    Importe: Currency;
  end;

  TValores = class
  private
    FValor1: TTipo;
    FValor3: TTipo;
    FValor2: TTipo;
  public
    constructor Create;

    property Valor1: TTipo read FValor1 write FValor1;
    property Valor2: TTipo read FValor2 write FValor2;
    property Valor3: TTipo read FValor3 write FValor3;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TValores }

constructor TValores.Create;
begin
  FValor1.Porcentaje := 0;
  FValor1.Importe := 0;
  FValor2.Porcentaje := 0;
  FValor2.Importe := 0;
  FValor3.Porcentaje := 0;
  FValor3.Importe := 0;
end;

Claro que, todo dependerá de lo que quieras conseguir

Si sólo quieres Records.... la verdad es que no sabría decirte de "forma automática" como inicializar los valores

delphi.com.ar 24-05-2004 15:59:03

Agregando a lo que comenta cadetill, si estas variables no pertenecen a una clase, puedes valerte de la parte initialization de la unit:
Código Delphi [-]
unit Unit1;

interface

type
  TTipo = record
    Porcentaje: Single;
    Importe: Currency;
  end;

var
 Tipo: TTipo;

implementation

initialization
  with Tipo do
  begin
    Porcentaje := 0;
    Importe := 0;
  end;
end.

roman 24-05-2004 16:21:48

También recordemos que en el caso de variables globales el compilador las inicializa a ceros de manera que, suponiendo que Valores es una variable global, no hace falta ninguna inicialización.

Por otra parte, si Valores es una variable local, pueden inicializarse a cero todos sus campos con

FillChar(Valor, SizeOf(Valor), 0);

// Saludos


La franja horaria es GMT +2. Ahora son las 09:01:58.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi