Здравствуйте.
Если нужно выполнить несколько операций после 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.