Ich fühle mich so weise …
Wegweisende Grüße
usw.
Nein, Blödsinn. Um mal wieder mit Wattebäuschchen zu schmeißen: Das Array ist tatsächlich eindimensional, aber sonst sieht der Code soweit brauchbar aus. @Torben kommt aber gewiß gleich mit der procedure
-Keule und kloppt den Code nochmal zusammen. Etwa so:
const
iMax = 4; // Hier die maximale Senderanzahl minus 1 einsetzen
var
i: integer;
EncoderName: array[0 .. iMax] of string;
procedure OnLoad;
begin
EncoderName[0] := 'SWR';
EncoderName[1] := 'HR';
EncoderName[2] := 'RIAS';
EncoderName[3] := 'NDR';
EncoderName[4] := 'Aircheck';
EnableTimer(100);
end;
procedure SetEncoderButton(Index : integer; Name, Status, Farbe, Textfarbe : string);
begin
ExecuteCommand('ENCODER' + IntToStr(Index) + ' TEXT ' + Name + ' ' + Status);
ExecuteCommand('ENCODER' + IntToStr(Index) + ' BACKGROUNDCOLOR ' + Farbe);
ExecuteCommand('ENCODER' + IntToStr(Index) + ' FONTCOLOR ' + Textfarbe);
end;
procedure OnTimer;
begin
for i := 0 to iMax do
begin
if (Encoder.GetConnections.GetItem(i).GetEnabled = true) then begin
if (Encoder.GetConnections.GetItem(i).GetState = ecsConnected) then
SetEncoderButton(i, EncoderName[i], 'ON AIR', '#FF0000', '#FFFFFF')
else if (Encoder.GetConnections.GetItem(i).GetState = ecsConnecting) then begin
SetEncoderButton(i, EncoderName[i], '!OFF AIR!', '#FFFFFF', '#FF0000');
Sleep(800);
end
else
SetEncoderButton(i, EncoderName[i], 'READY!', '#000000', '#00FF00');
end;
end
else
SetEncoderButton(i, EncoderName[i], 'AUS', '#F0F0F0', '#848484');
end;
end;
end;
begin
end.
Ungetestet, aus reinem Übermut entstanden! (Wahrscheinlich habe ich wieder irgendwo ein entscheidendes ;
vergessen …) Die Zuordnung der Sendernamen habe ich in die OnLoad
gepackt, die braucht man nicht alle Zehntelsekunde neu setzen. Den Spickzettelquatsch habe ich der Kürze halber mal weggelassen.
Kühne Grüße
TSD