Ver Mensaje Individual
  #8  
Antiguo 23-11-2018
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.119
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Cita:
Empezado por movorack Ver Mensaje
En la nueva versión ¿que sucedería en el caso a continuación?

Código Delphi [-]
unit Unit1;

interface

type
  TForm2 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    StrVar: string;
    { Public declarations }
  end;

var
  Form2: TForm2;
  StrVar: string;

implementation

{$R *.dfm}

procedure TForm2.FormCreate(Sender: TObject);
begin
  Self.StrVar := 'A';
  Unit1.StrVar := 'B';
end;

procedure TForm2.Button1Click(Sender: TObject);
var
  StrVar: string;
begin
  ShowMessage(Self.StrVar); //A
  ShowMessage(Unit1.StrVar); //B

  StrVar := 'C';
  ShowMessage(StrVar); //C

  var StrVar: string := 'D'; // ¿Genera exepción?
  ShowMessage(StrVar); //D?
end;

end.

¿Y porque alguien declararía la variable nuevamente? ¡No se! ¿Código espagueti como en PHP?
Si he entendido bien este apartado de la lista de novedades, se trata de poder declarar variables "en línea", es decir, no necesitando hacerlo a nivel de la función/procedimiento/método. Esto está ligado a que dichas variables pueden ser ahora visibles únicamente en un determinado "bloque de código", dentro de dicha función/procedimiento/método, y, no fuera del mismo. Esto digo puede ya tener su utilidad... y acaso tenga alguna otra utilidad que a mí se me escape.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita