Warum?
Man könnte natürlich erstmal in den Quellcode gucken und sieht das Warum.
Delphi-Quellcode:
procedure TfsScript.AddVariable(const Name, Typ: String; const Value: Variant);
var
v: TfsVariable;
begin
if Find(Name) <> nil then Exit; // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
v := TfsVariable.Create(Name, StrToVarType(Typ, Self), Typ);
v.Value := Value;
v.OnGetVarValue := FOnGetVarValue;
Add(v.Name, v);
end;
Entweder du suchst eine Set-Funktion (Ich hab Keine in TfsScript gesehn)
oder du machst vorher ein "Clear".
Wir machen es so, wobei wir Clear nur aufrufen, da auch innerhalb der Scripte weitere Variablen angelegt werden,
die Zuweisung an Variables überschreibt auch so Werte, wenn die Variable vorher schonmal zugewiesen wurde.
Delphi-Quellcode:
FR.Variables.Clear;//alles alte Zeug löschen
FR.Variables['USERNAME'] := FUserName;
...
Aber eigentlich machen wir das so
FR.Variables['USERNAME'] := '''' + FUserName + '''';
, wobei ich grade nicht mehr weiß, warum die "Strings" unbedingt als "String" gequotet werden mussten.
(bin bei uns nicht für die Reports zuständig, aber irgendeinen "wichtigen" Grund hatte es)