Wie wäre es mit 'nem ELSE, also diese Abfrage nur machen, wenn worherige übergangen wurde?
Delphi-Quellcode:
var
iLine : Integer;
Line : String;
lInput, lValue: String;
lColor: Integer;
begin
// ...
lInput := AnsiLowerCase(Line);
if (Pos('#color(', lInput) = 1) and (Pos(')', lInput) > 1) then
begin
lValue := Copy(lInput, 8, Pos(')', lInput) - 8);
if IdentToColor('cl' + lValue, lColor) then
Console.Color := lColor
else
Console.Lines.Add('Ungültiger Parameter');
end
else
if Console.Lines[iLine] <> '' then
begin
Console.Lines.Add('Unbekannter Befehl');
end;
PS: vielleicht ist dir aufgefallen, daß ich oben das # vor'm color vergaß und wenn du dieses schon einfügst, dann müssen natürlich auch die Positionen (also die 6en, 7en und 8en) um das hinzugefügte Zeichen erweiters werden, also um 1 erhöt
Delphi-Quellcode:
line := trim(line);
if (copy(line, 1, 7) = '#color(') and (line[length(line)] = ')' then begin
if copy(line, 8, length(line) - 8) = 'black' then
Console.color := clBlack
else if copy(line, 8, length(line) - 8) = 'maroon' then
Console.color := clMaroon
else Console.Lines.Add('Falscher Farbwert');
//end else if (copy(line, 1, 14) = '#otherCommand(') and (line[length(line)] = ')' then begin
// if copy(line, 14, length(line) - 14) = '...' then
// ...
// else Console.Lines.Add('Falscher Parameter');
end else Console.Lines.Add('Befehl unbekannt.');