Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-05-2004
xerkan xerkan is offline
Miembro
 
Registrado: jun 2003
Posts: 89
Poder: 21
xerkan Va por buen camino
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; .......
Responder Con Cita
  #2  
Antiguo 24-05-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 24-05-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
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.
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #4  
Antiguo 24-05-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 16:04:36.


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
Copyright 1996-2007 Club Delphi