Jump to content

Recommended Posts

Posted

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

Posted

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.

Posted

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!

Posted

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.

Posted (edited)

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
  • 5 months later...
Posted (edited)

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • 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.