Dúvidas sobre Variaveis

22/07/2008

2

Digamos que eu declare na seção Private uma variável de nome I e tipo Integer. Agora eu declaro numa procedure qualquer(ex:BitBtnClick) uma variável I de tipo Integer. Se nessa procedure eu der um for com a variável I, ele estará lendo a da seção private ou a local? E se o mesmo acontecer com variáveis Globais ou Públicas qual a ordem de precedência para carregar variáveis? Essa pergunta é mais a título de teste mesmo. Valeu a todos de antemão.


Responder

Posts

22/07/2008

Aroldo Zanela

Colega,

Você não consegue declarar uma váriável de mesmo nome nas seções private e public, mas consegue declarar com o mesmo nome sendo pública e local ou privada e local.
Quando uma variável é declarada local, ela possui o seu escopo limitado dentro da procedure ou função onde foi declarada e é descartada da memória assim que a função/procedimento é encerrado.
Veja um exemplo:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    btn1: TButton;
    btn2: TButton;
    procedure btn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btn2Click(Sender: TObject);
  private
    { Private declarations }
    I: Integer;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
var I: Integer;
begin
  I := 123;
  ShowMessage(IntToStr(I));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  I := 999;
end;

procedure TForm1.btn2Click(Sender: TObject);
begin
  ShowMessage(IntToStr(I));
end;

end.



Responder

22/07/2008

Paulo

Digamos que eu declare na seção Private uma variável de nome I e tipo Integer. Agora eu declaro numa procedure qualquer(ex:BitBtnClick) uma variável I de tipo Integer. Se nessa procedure eu der um for com a variável I, ele estará lendo a da seção private ou a local? E se o mesmo acontecer com variáveis Globais ou Públicas


Eu não falei Private e Public ao mesmo tempo. Eu disse Private e Local ou Public e Local. Eu apenas exemplifiquei a Private e Local, mas depois descorri minha dissertação com Public e Global. Eu estou dando manutenção em um Software que possui a munha dúvida. A pergunta foi qual irá receber o valor em situações assim: A local ou as outras?


Responder

22/07/2008

Comodelphi

a variável local tem precdência sobre outros identificadores. Ainda não é aconselhável fazer dessa forma, dificulta a leitura do programa. Se vc tem um atributo definido em uma classe qualquer poderia usar algo mais expressivo do que ´i: integer´, ´s: string´; deixa esse tipo de declaração pra variáveis locais.


Responder

22/07/2008

Paulo

Sim, com o eu falei isso é apenas teste. Em realidade não existe nada aqui comigo. Isso foi uma questão de uma empresa em que me candidatei. Eu acertei então pelo vocês estão falando e acertei no escuro. Eu coloquei como as locais têm precedência, mas a pergunta foi meio pegadinha. A pergunta vinha assim: [i:919de315c5]Estou dando manutenção em um software quando deparo com as seguintes questões. Uma variável declarada na seção private tem um homônimo declarada no evento onclick de um botâo. Na execução do programa, qual irá carregar?E Porque?E Se fosse global?[/i:919de315c5] Mas está resolvido. Não me interessei pela empresa, mas havia umas questões lá maneira, boas para pensar.


Responder

23/07/2008

Rodc

No caso, para conseguir acessar a variável do private é preciso usar o Self
Self.I := I;



Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira