AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi If-Abfrage, die einen Befehl (Console) überprüfen kann ()
Thema durchsuchen
Ansicht
Themen-Optionen

If-Abfrage, die einen Befehl (Console) überprüfen kann ()

Ein Thema von Nils_13 · begonnen am 16. Mär 2006 · letzter Beitrag vom 18. Mär 2006
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#11

Re: If-Abfrage, die einen Befehl (Console) überprüfen kann (

  Alt 17. Mär 2006, 14:44
Ich würde mal spontan sagen ich hätte da ein end vergessen (wenn's jetzt nicht dastehen würde ), aber sowas hätte man ja auch so merken können
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#12

Re: If-Abfrage, die einen Befehl (Console) überprüfen kann (

  Alt 17. Mär 2006, 14:52
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) = 'blackthen
        Console.color := clBlack
      else if copy(line, 7, length(line) - 8) = 'maroonthen
        Console.color := clMaroon
      else Console.Lines.Add('Falscher Farbwert');
    end else
  Mit Zitat antworten Zitat
Benutzerbild von Pr0g
Pr0g

Registriert seit: 21. Mai 2004
809 Beiträge
 
Delphi 7 Personal
 
#13

Re: If-Abfrage, die einen Befehl (Console) überprüfen kann (

  Alt 17. Mär 2006, 19:11
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;
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#14

Re: If-Abfrage, die einen Befehl (Console) überprüfen kann (

  Alt 18. Mär 2006, 09:37
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 !!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#15

Re: If-Abfrage, die einen Befehl (Console) überprüfen kann (

  Alt 18. Mär 2006, 10:08
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) = 'blackthen
    Console.color := clBlack
  else if copy(line, 8, length(line) - 8) = 'maroonthen
    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.');
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 Uhr.
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