Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi If Abfrage Syntax (https://www.delphipraxis.net/82840-if-abfrage-syntax.html)

ferby 20. Dez 2006 13:13


If Abfrage Syntax
 
Hallo,

Ich habe eine If Abfrage zur überprüfung geschrieben.

In der String Variabel "temp" soll der Benutzer eine Richtung schreiben, ansonsten kommt eine Fehlermeldung.

Habe mir das gedacht:

Delphi-Quellcode:
  // Überprüfung
  If not (['oben','links','unten','rechts','up','left','down','right'] in temp) then
  begin
    showmessage('Fehler...');
    exit;
  end;
So in etwa habe ich schon einmal eine längere If Abfrage kurz gelöst.
Leider kann ich mich nicht mehr genau an die Syntax erinnern,
den hier kommt der Fehler

[Fehler] Unit1.pas(188): Ordinaltyp erforderlich


Aber es sollte so bzw. ähnlich doch gehen? Oder?
Hab schon einiges herumprobiert, aber es kommt immer eine Fehlermeldung...

Gruß,
Ferby

Christian Seehase 20. Dez 2006 13:21

Re: If Abfrage Syntax
 
Moin ferby,

mit Strings geht das nicht so.
Du müsstest Du einzeln prüfen, oder, z.B., in eine Liste (TStringList) schreiben, und dann, z.B., mit IndexOf auf vorhandensein prüfen.
Wie die Fehlermeldung schon sagt: Du musst für diese Syntax einen Aufzählungstypen verwenden, wie, z.B., auch bei Case.
Du hast es wohl mit der Prüfung von einzelnen Charactern verwechselt. Das sieht ja ähnlich aus.

dfried 20. Dez 2006 13:27

Re: If Abfrage Syntax
 
Den "in" Operator gibt es leider nur in SQL, nicht aber in Pascal. Hier musst du wühl oder übel alle Prüfungen einzeln machen und mit OR verknüpfen.
Delphi-Quellcode:
// Überprüfung
  If not ((temp = 'oben') or (temp = 'links') or ....) then
  begin
    showmessage('Fehler...');
    exit;
  end;

Klaus01 20. Dez 2006 13:29

Re: If Abfrage Syntax
 
Den Operator in gibt es sehr wohl in Delphi, damit kann das Vorhandenseins eines Items
in einem Set ermittelt werden.

Grüße
Klaus

hsg 20. Dez 2006 13:30

Re: If Abfrage Syntax
 
Zu diesem Thema gab es doch vor kurzem was:
http://www.delphipraxis.net/internal...=644810#644810

ferby 20. Dez 2006 13:31

Re: If Abfrage Syntax
 
Hallo,

ich habe jetzt gesucht und schon einmal ein Problem gepostet


Aus

Delphi-Quellcode:
if (feldaktive[161]<>1) and (feldaktive[162]<>1) and (feldaktive[163]<>1) and (feldaktive[164]<>1) and (feldaktive[165]<>1) and (feldaktive[166]<>1) and (feldaktive[167]<>1) and (feldaktive[168]<>1) and (feldaktive[169]<>1) and (feldaktive[170]<>1) then

wurde

Delphi-Quellcode:
if not(1 in [Feldaktive[161], Feldaktive[162],...]) Then

Aber da habe ich abgefragt ob ein Wert in einer von mehreren Variabeln vorkommt.

Jetzt frage ich ab ob in einer Variabel einer von 8 Werten steht....
Ka wie ich das ändern muss.

ferby 20. Dez 2006 13:42

Re: If Abfrage Syntax
 
Also ich habe mir jetzt das andere Thema durchgelesen und
gesehen das es doch nicht so leicht ist wie ich mir dachte....

Da ich die Abfrage eh nur 1x im Program habe, lasse ich es jetzt ganz einfach bei

Delphi-Quellcode:
  if (temp<>'oben') and (temp<>'links') and (temp<>'unten') and (temp<>'rechts') and (temp<>'up') and (temp<>'left') and (temp<>'down') and (temp<>'right') then
  begin
    showmessage('Fehler...');
    exit;
  end;

Antigo 20. Dez 2006 14:02

Re: If Abfrage Syntax
 
mach doch aus den strings character.
Also aus oben, unten usw.

dan kannst du es so machen
Delphi-Quellcode:
if temp in ['o','u','r','l'....] then foo;
edit: ups sry, hab grad erst gesehen das ja usereingaben ausgewertet werden sollen. :oops:

ferby 20. Dez 2006 14:11

Re: If Abfrage Syntax
 
Zitat:

edit: ups sry, hab grad erst gesehen das ja usereingaben ausgewertet werden sollen.
Ja genau das wollte ich grad Posten^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:53 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