É possível alterar o valor de constantes?
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
Curtidas 0
Melhor post
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:
Exemplo de como usar a função:
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
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.
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
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
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