Здравствуйте. Подскажите в чем ошибка в скрипте?
begin
if arch.AsBool = false then
vrValue_1.Archiving := false;
vrValue_2.Archiving := false;
vrValue_3.Archiving := false;
vrValue_4.Archiving := false;
vrValue_5.Archiving := false;
vrValue_6.Archiving := false;
vrValue_7.Archiving := false;
vrValue_8.Archiving := false;
vrValue_9.Archiving := false;
vrValue_10.Archiving := false;
vrValue_11.Archiving := false;
vrValue_12.Archiving := false;
vrValue_13.Archiving := false;
vrValue_14.Archiving := false;
vrValue_15.Archiving := false;
vrValue_16.Archiving := false;
vrValue_17.Archiving := false;
vrValue_18.Archiving := false;
vrValue_19.Archiving := false;
vrValue_20.Archiving := false;
vrValue_21.Archiving := false;
else
vrValue_1.Archiving := true;
vrValue_2.Archiving := true;
vrValue_3.Archiving := true;
vrValue_4.Archiving := true;
vrValue_5.Archiving := true;
vrValue_6.Archiving := true;
vrValue_7.Archiving := true;
vrValue_8.Archiving := true;
vrValue_9.Archiving := true;
vrValue_10.Archiving := true;
vrValue_11.Archiving := true;
vrValue_12.Archiving := true;
vrValue_13.Archiving := true;
vrValue_14.Archiving := true;
vrValue_15.Archiving := true;
vrValue_16.Archiving := true;
vrValue_17.Archiving := true;
vrValue_18.Archiving := true;
vrValue_19.Archiving := true;
vrValue_20.Archiving := true;
vrValue_21.Archiving := true;
end.
Здравствуйте.
Если нужно выполнить несколько операций после if..then, заключайте их в блок "begin..end;", иначе условие будет применено только к первой строке после if..then.
begin
if arch.AsBool then
begin
// несколько операций здесь
end else
begin
// несколько операций здесь
end;
end.
Но гораздо лучше упростить код так:
var
aValue: Boolean;
begin
aValue := arch.AsBool;
vrValue_1.Archiving := aValue;
vrValue_2.Archiving := aValue;
vrValue_3.Archiving := aValue;
vrValue_4.Archiving := aValue;
vrValue_5.Archiving := aValue;
vrValue_6.Archiving := aValue;
vrValue_7.Archiving := aValue;
vrValue_8.Archiving := aValue;
vrValue_9.Archiving := aValue;
vrValue_10.Archiving := aValue;
vrValue_11.Archiving := aValue;
vrValue_12.Archiving := aValue;
vrValue_13.Archiving := aValue;
vrValue_14.Archiving := aValue;
vrValue_15.Archiving := aValue;
vrValue_16.Archiving := aValue;
vrValue_17.Archiving := aValue;
vrValue_18.Archiving := aValue;
vrValue_19.Archiving := aValue;
vrValue_20.Archiving := aValue;
vrValue_21.Archiving := aValue;
end.
Или так:
var
I: Integer;
aValue: Boolean;
aVar: TM_Variable;
begin
aValue := arch.AsBool;
for I := 1 to 21 do
begin
aVar := GetVariableByName('vrValue_' + IntToStr(I));
if aVar <> nil then
aVar.Archiving := aValue;
end;
end.