El 07/07/2019 a las 21:58, James Richters escribió:
This might sound silly, but is it possible to somehow specify a variable with
a string containing the name of the variable?
For example:
Var
MyVariable1 : Word;
MyVariableName : String;
Procedure ShowVariable(Variablename);
Begin
Writeln(Variablename,' = $', inttohex( (Somehow get the value of the
variable specified by the name here ) ,4));
End;
Begin
MyVariableName:= 'MyVariable1';
ShowVariable(MyVariableName);
End.
Is such a thing possible?
What is it for?
What about:
procedure ShowVariable(const Variablename:string; const value:word);
begin
Writeln(Variablename,' = $'+inttohex(value ,4));
end;
ShowVariable('myVar',myVar);
And as far as I understand, you want to call
ShowVariable('myVar',myVar), but not wasting time writing the name
enclosed in quotes, let the program get the identifier name in runtime,
or the other way around, let the program get the value from a name
passed in runtime.
Bad luck, Pascal is not a script language, it is not aware of identifier
names in runtime there is no "eval". Thanks to that it gets rids of all
the burden of having to keep in runtime structures to know the name,
type and value of variable. It generate fast native programs.
Nevertheless, there are ways, you can program that in Freepascal using
classes, properties, RTII etc. It is more flexible and powerful. But
obviously it has a price in complexity. Instead or using the standard
operators and reference a simple variable, you must use a more
convoluted syntax.
As far as I see, you don't intend to let the program create new vars in
runtime, you just want to write the identifiers of the vars you have
hardcoded. Is it worth?
(I hope it is not just for debugging)
--
Saludos
Santiago A.
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal