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 1 von 2  1 2      
Nils_13

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

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

  Alt 16. Mär 2006, 18:30
Hi,

tur mir leid, wenn der Titel etwas unklar formuliert ist, () heißt soviel wie Parameter.

Ich mache gerade bei meiner kleinen Console weiter. Da stoße ich auf folgendes Problem: Ich möchte, dass man die Hintergrund Farbe per color() abändern kann. Aber wenn ich z.B. color(asdhasg) eingebe, ist der Parameter falsch, es tritt zwar kein Fehler auf, aber ich möchte natürlich den Benutzer darauf hinweisen, dass es keine Farbe mit dem Namen asdhasg gibt und dann 'Ungültiger Parameter' mit
Delphi-Quellcode:
// Console = TMemo
Console.Lines.Add('Ungültiger Parameter');
ausgeben, aber das wird sehr schwierig, hier erstmal der Code:
Delphi-Quellcode:
if pos('#color', line) = 1 then
begin
  // Console = TMemo
  if pos('(black)', line) > 0 then
    Console.color := clBlack;
  if pos('(marron)', line) > 0 then
    Console.color := clMaroon;
end;
Um die Frage nochmal ganz klar zu stellen: Wie schmeiße ich dem Benutzer die Meldung 'Ungültiger Parameter' an den Kopf, wenn er weder color(black) eintippt oder color(maroon) ?
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#2

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

  Alt 16. Mär 2006, 18:34
So?
Delphi-Quellcode:
if pos('#color', line) = 1 then
begin
  // Console = TMemo
  if pos('(black)', line) > 0 then
    Console.color := clBlack
  else
    if pos('(marron)', line) > 0 then
      Console.color := clMaroon
    else
      Console.Lines.Add('Ungültiger Parameter');
end;
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Nils_13

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

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

  Alt 16. Mär 2006, 18:38
Ähm, nein, dann kann ich color(maroon) nicht mehr benutzen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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

  Alt 16. Mär 2006, 18:47
Wieso nicht?



PS:
color(black)abc
oder
colorino(black)
oder
colorino(black)abc

sind nach eurer Abfrage dennoch richtig, wärend z.B.

color(Black)

ein falscher Parameter ist -.-''
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#5

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

  Alt 16. Mär 2006, 18:50
Zitat von himitsu:
Wieso nicht?
Frag ich mich auch
Zitat von himitsu:
PS:
color(black)abc
oder
colorino(black)
oder
colorino(black)abc

sind nach eurer Abfrage dennoch richtig, wärend z.B.

color(Black)

ein falscher Parameter ist -.-''
Sag nicht eurer! Ich hab einfach nur seinen Code genommen und dahingehend geändert.
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Nils_13

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

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

  Alt 16. Mär 2006, 18:53
Ok, nochmal von vorne: Ich möchte ganz einfach nur, dass alle Befehle, die color(), mit einem zulässigen, von mir vorgegebenen Parameter akzeptiert werden, kein abc dahinter, einfach nur color(farbe).
  Mit Zitat antworten Zitat
Benutzerbild von Pr0g
Pr0g

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

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

  Alt 16. Mär 2006, 18:57
Du solltest die Zeile parsen, so dass du am Ende einen String hast, welcher genau den Wert zwischen der Klammer enthält. Nun kannst du per IdentToColor() den String in den entsprechenden Farbwert umwandeln lassen (denk dran vorher im Code ein "cl" anzufügen, damit der Name den Farbkonstanten von Delphi entspricht). Dabei kannst du direkt prüfen, ob die Funktion den Wert False zurücklieferte, was bedeutet, dass die Farbe ungültig war
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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

  Alt 16. Mär 2006, 18:59
Dann mußt du halt ertmal abfragen, ob color richtig eingegeben ist und dann nochmal die farbe prüfen,

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 Console.Lines.Add('Befehl unbekannt.');
oder du fragst direkt ab
Delphi-Quellcode:
if line = 'color(black)then
  Console.color := clBlack
else if line = 'color(maroon)then
  Console.color := clMaroon
else Console.Lines.Add('Falscher Parameter');
[add]
oder wir Pr0g meint ._.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#9

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

  Alt 16. Mär 2006, 19:02
pr0g's Lösung ist wahrscheinlich die passendste..

Ich hätte ja vorgeschlagen, aus dem Eingabestring erstmal Tokens zu machen, dann mit ner Grammatik nen abstrakten Syntaxbaum aufzubauen und den dann zu interpretieren. Aber irgendwie glaub ich, ist das wohl etwas übertrieben
  Mit Zitat antworten Zitat
Nils_13

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

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

  Alt 17. Mär 2006, 14:21
@himitsu: Irgendwie funktioniert dein Code bei mir nicht, Unbekannter Befehl.
Delphi-Quellcode:
if Console.Lines[iLine] <> 'then
begin
  Console.Lines.Add('Unbekannter Befehl');
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 06:38 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