Jump to content
Rafael Adão

Variável estática

Recommended Posts

Rafael Adão

Como anda a utilização de variáveis estáticas em delphi atualmente?

Trabalho com uma versão muito antiga do delphi em que para utilizar uma variável estática, deve-se utilizar:

const estatica: Integer = 3;

Dei uma pesquisada em algumas wikis mas não encontrei o que procurava.

O que quero saber é se nas versão maiores, tipo XE3, fizeram alguma mudança.

sds

Share this post


Link to post
Share on other sites
nunopicado

Não sei bem o que queres dizer por variáveis estáticas, mas o código que puseste continua valido para constantes de tipo predefinido.

Também, nesse exemplo podias dispensar o tipo de dados, que o compilador escolheria automaticamente o tipo que melhor se adaptasse ao valor.


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
Kline777

Pois, penso que nao estou enganado mas isso não é uma variavel estatica mas sim uma constante :P de qualquer maneira está igual nas novas versões :)

Share this post


Link to post
Share on other sites
thoga31

Com tem sido dito, isso é uma constante. Uma variável estática é outra coisa, um conceito diferente, e que normalmente está mais presente noutras linguagens como Java.

Sendo um valor imutável, o conceito de variável, logo aí, é posto de lado - uma variável varia, e com const define-se um valor fixo com um nome - constante ao longo de todo o programa. ;)

Nada mudou. As constantes mantêm-se como eram antes.


Knowledge is free!

Share this post


Link to post
Share on other sites
pwseo

Rafael Adão,

De facto, a criação de variáveis estáticas é algo que penso necessitar de uma flag específica para o compilador (algo como ${J+}, "Writeable Typed Constants"), visto que habitualmente não é permitido.

Penso que as adições nas novas versões do Delphi dizem respeito a variáveis estáticas em classes (procura por coisas como class var) mas sinceramente não tenho acompanhado o desenvolvimento da coisa.

O próprio FreePascal suporta a criação destas "constantes mutáveis" desde que não estejamos a compilar em modo Delphi.

Share this post


Link to post
Share on other sites
Rafael Adão

CRLF,

Pesquisei sobre a diretiva {$J+} e percebi que esta diretiva ativa o conceito de variável estática no fonte. Segue um exemplo simples de uso:

program prStatic;
{$APPTYPE CONSOLE}
uses
 SysUtils;
type
 TSaldo = class
 {$J+}
 const valor: Integer = 0;
 {$J-}
 end;
var
 xSaldo1, xSaldo2: TSaldo;
begin
 xSaldo1 := TSaldo.Create;
 xSaldo2 := TSaldo.Create;
 try
   xSaldo1.valor := 10;
   Writeln('Saldo 1: ' + IntToStr(xSaldo1.valor));
   Writeln('Saldo 2: ' + IntToStr(xSaldo2.valor));
   xSaldo2.valor := 20;
   Writeln('Saldo 1: ' + IntToStr(xSaldo1.valor));
   Writeln('Saldo 2: ' + IntToStr(xSaldo2.valor));
   Readln;
 finally
   xSaldo1.Free;
   xSaldo2.Free;
 end;
end.

Se não me engano, na conversão do delphi6 para o delphi7 é que essa diretiva se fez necessária.

Obrigado a todos pela ajuda.

Edited by Rafael Adão

Share this post


Link to post
Share on other sites
pwseo

Rafael Adão,

Só mais um reparo: CRLF é a minha "classificação" no fórum, o nick é "pwseo" (tal como o teu nick é "Rafael Adão" e a classificação é "null")

Share this post


Link to post
Share on other sites
Gilson Nunes

mas qdo se fala "variável stática", normalemnte, não está se referindo ao "tipo do c".

está se falando de uma varariável q se assemelha aos metódos státicos (de classe).

isso tem no delphi desde o 8 se não me falhe a memória e tem tb no FPC

TSuaClasse = class
public
   class var Teste : Integer;

pra acessá-la:

TSuaClasse.Teste := 10;

Edited by thoga31
GeSHi

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.