É possível alterar o valor de constantes?

Delphi

23/08/2003

Alguém conhece alguma forma de alterar o valor de constantes após serem declaradas? Tipo uma constante vale 1 e depois muda para 2 em tempo de execução.


Akelle Kara

Akelle Kara

Curtidas 0

Melhor post

Cebikyn

Cebikyn

23/08/2003

É possível e se bem utilizado pode ser bem útil, se você tem um DCU com uma constante, mas não tem o respectivo PAS, você pode usar a [i:3c0f5b76f3]procedure[/i:3c0f5b76f3] abaixo e alterar a tal constante.

Eis o código:

procedure ChangeConst(const Constant; var Value; Size: Integer);
begin
  Move((@Value)^, (@Constant)^, Size);
end;


Exemplo de como usar a função:

procedure TForm1.Button1Click(Sender: TObject);
const
  TestStrConst: string = ´Valor inicial´;
  TestInteger: Integer = 1234;
var
  NewString: string;
  NewInteger: Integer;
begin
  // Exemplo para Strings:
  ShowMessage(´Antes da ChangeConst (TestStrConst): ´ + TestStrConst);
  NewString := ´Novo Valor´;
  ChangeConst(TestStrConst, NewString, SizeOf(string));
  ShowMessage(´Depois da ChangeConst (TestStrConst): ´ + TestStrConst);
  // Exemplo para Integers:
  ShowMessage(´Antes da ChangeConst (TestInteger): ´ + IntToStr(TestInteger));
  NewInteger := 5678;
  ChangeConst(TestInteger, NewInteger, SizeOf(Integer));
  ShowMessage(´Depois da ChangeConst (TestInteger): ´ + IntToStr(TestInteger));
end;



GOSTEI 1

Mais Respostas

Aroldo Zanela

Aroldo Zanela

23/08/2003

Colega,

Se isto fosse possível, não haveria sentido ser denominada de constante. Portanto, se precisa modificar o valor declare como variável.


GOSTEI 0
Akelle Kara

Akelle Kara

23/08/2003

Valeu pessoal, era uma questão de curiosidade mesmo... agora eu sei que apesar de chamarem ´constantes´, elas não são tão constantes assim :D ...


GOSTEI 0
Cebikyn

Cebikyn

23/08/2003

agora eu sei que apesar de chamarem ´constantes´, elas não são tão constantes assim :D ...


Vivendo e aprendendo...


GOSTEI 0
POSTAR