Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi If-Abfrage, die einen Befehl (Console) überprüfen kann () (https://www.delphipraxis.net/65453-if-abfrage-die-einen-befehl-console-ueberpruefen-kann.html)

himitsu 17. Mär 2006 13:44

Re: If-Abfrage, die einen Befehl (Console) überprüfen kann (
 
Ich würde mal spontan sagen ich hätte da ein end vergessen (wenn's jetzt nicht dastehen würde :roll: ), aber sowas hätte man ja auch so merken können :)

Nils_13 17. Mär 2006 13:52

Re: If-Abfrage, die einen Befehl (Console) überprüfen kann (
 
Ok, das habe ich bemerkt, der eigentliche Fehler ist beseitigt, aber wenn ich #color(maroon) eintippe, kommt der Fehler falscher Farbwert.
Delphi-Quellcode:
if (copy(line, 1, 6) = '#color(') and (line[length(line)] = ')') then begin
      if copy(line, 7, length(line) - 8) = 'black' then
        Console.color := clBlack
      else if copy(line, 7, length(line) - 8) = 'maroon' then
        Console.color := clMaroon
      else Console.Lines.Add('Falscher Farbwert');
    end else

Pr0g 17. Mär 2006 18:11

Re: If-Abfrage, die einen Befehl (Console) überprüfen kann (
 
Warum machst du es nicht einfach so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  lInput,
  lValue: String;
  lColor: Integer;
begin
  // Eingabe aus Editfeld holen
  lInput := AnsiLowerCase(Edit1.Text);

  // Befehl prüfen
  if (Pos('#color(', lInput) = 1) and (Pos(')', lInput) > 1) then
  begin
    // Farbwert extrahieren
    lValue := Copy(lInput, 8, Pos(')', lInput) - 8);
    // Farbwert in Delphifarbe umwandeln
    if IdentToColor('cl' + lValue, lColor) then
      Console.Color := lColor
    else
      Console.Lines.Add('Ungültiger Farbwert!');
  end;
end;

Nils_13 18. Mär 2006 08:37

Re: If-Abfrage, die einen Befehl (Console) überprüfen kann (
 
Also ich benutze jetzt folgenden Code:
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;
  // ...
Die Farbe wird mir dem Befehl #color(maroon) abgeändert, allerdings wird später leider noch folgender Code aktiv:
Delphi-Quellcode:
  if Console.Lines[iLine] <> '' then
  begin
    Console.Lines.Add('Unbekannter Befehl');
  end;
Wie kann ich umgehen, dass nach der Abänderung der Farbe 'Unbekannter Befehl' noch in das Memo hinzugefügt wird ?



Ich möchte mich ganz herzlich bei euch allen bedanken, da ihr mir sehr bei dem Problem weitergeholfen habt, das Problem ist dann so ziemlich gelöst, danke für alles !!

himitsu 18. Mär 2006 09:08

Re: If-Abfrage, die einen Befehl (Console) überprüfen kann (
 
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 :roll:

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.');


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz