![]() |
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:
So in etwa habe ich schon einmal eine längere If Abfrage kurz gelöst.
// Überprüfung
If not (['oben','links','unten','rechts','up','left','down','right'] in temp) then begin showmessage('Fehler...'); exit; end; 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 |
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. |
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; |
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 |
Re: If Abfrage Syntax
|
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. |
Re: If Abfrage Syntax
Also ich habe mir jetzt
![]() 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; |
Re: If Abfrage Syntax
mach doch aus den strings character.
Also aus oben, unten usw. dan kannst du es so machen
Delphi-Quellcode:
edit: ups sry, hab grad erst gesehen das ja usereingaben ausgewertet werden sollen. :oops:
if temp in ['o','u','r','l'....] then foo;
|
Re: If Abfrage Syntax
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz