AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

If Abfrage Syntax

Ein Thema von ferby · begonnen am 20. Dez 2006 · letzter Beitrag vom 20. Dez 2006
Antwort Antwort
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#1

If Abfrage Syntax

  Alt 20. Dez 2006, 14:13
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
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: If Abfrage Syntax

  Alt 20. Dez 2006, 14:21
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
dfried

Registriert seit: 16. Aug 2005
486 Beiträge
 
#3

Re: If Abfrage Syntax

  Alt 20. Dez 2006, 14:27
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;
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: If Abfrage Syntax

  Alt 20. Dez 2006, 14:29
Den Operator in gibt es sehr wohl in Delphi, damit kann das Vorhandenseins eines Items
in einem Set ermittelt werden.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
hsg

Registriert seit: 24. Apr 2006
Ort: Wustermark
354 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: If Abfrage Syntax

  Alt 20. Dez 2006, 14:30
Zu diesem Thema gab es doch vor kurzem was:
http://www.delphipraxis.net/internal...=644810#644810
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#6

Re: If Abfrage Syntax

  Alt 20. Dez 2006, 14:31
Hallo,

ich habe jetzt gesucht und schon einmal ein Problem gepostet


Aus

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

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.
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#7

Re: If Abfrage Syntax

  Alt 20. Dez 2006, 14:42
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;
  Mit Zitat antworten Zitat
Antigo

Registriert seit: 14. Mär 2005
274 Beiträge
 
#8

Re: If Abfrage Syntax

  Alt 20. Dez 2006, 15:02
mach doch aus den strings character.
Also aus oben, unten usw.

dan kannst du es so machen
if temp in ['o','u','r','l'....] then foo; edit: ups sry, hab grad erst gesehen das ja usereingaben ausgewertet werden sollen.
Michael
"How should I know if it works? That's what beta testers are for. I only coded it."
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#9

Re: If Abfrage Syntax

  Alt 20. Dez 2006, 15:11
Zitat:
edit: ups sry, hab grad erst gesehen das ja usereingaben ausgewertet werden sollen.
Ja genau das wollte ich grad Posten^^
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:10 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