Funktioniert also, prima. Ich hatte aber oben noch eine Vereinfachung angedroht, hier kommt sie:
{
Zwischen die geschweiften Klammern kann der Spickzettel hin, z.B.:
1: SWR, 2: HR, 3: RIAS.
4: NDR, 5: RB; 6: ORF
usw.
}
const
iMax = 15; // Hier die maximale Senderanzahl minus 1 einsetzen
var
i: integer;
Stream: array[0 .. iMax] of boolean;
Button: array[0 .. iMax] of string;
begin
for i := 0 to iMax do
case i of
1, 5, 8..12, 14 : // Hier aufzuschaltende Sender durch Kommata getrennt eintragen
begin
Stream[i] := true;
Button[i] := ' ON';
end;
else
begin
Stream[i] := false;
Button[i] := ' OFF';
end;
end;
for i := 0 to iMax do
begin
Encoder.GetConnections.GetItem(i).SetEnabled(Stream[i]);
ExecuteCommand('BUTTON.' + IntToStr(i) + Button[i]);
end;
end.
Sieht zunächst komplizierter aus, ist es aber gar nicht. Die Erklärung, was die Zeilen im einzelnen bewirken, findet Ihr im Thread über Zählvariablen. Bis auf die Zeile mit dem Encoder (ich habe bisher nämlich keinen) habe ich das ausprobiert, das Skript sollte also laufen. Die Vereinfachung liegt darin, daß man jetzt nicht mehr dutzende Zeilen mit true
, false
, ON
und OFF
versehen muß, sondern lediglich die Nummern der Streams, die aufgeschaltet werden sollen, in die entsprechende Zeile einträgt. (Und noch die Gesamtzahl der Streams iMax
, minus eins, da nullbasiert.)
Vielleicht magst Du das ja mal ausprobieren, Thomas.
Komprimierte Grüße
TSD
Nachtrag: Torben hat zur weiteren Abspeckung beigetragen, hier zu sehen.