AGB  ·  Datenschutz  ·  Impressum  







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

IF-Abfrage genererieren

Ein Thema von wurz3l · begonnen am 9. Jan 2006 · letzter Beitrag vom 11. Jan 2006
Antwort Antwort
wurz3l

Registriert seit: 2. Jan 2006
5 Beiträge
 
#1

IF-Abfrage genererieren

  Alt 9. Jan 2006, 15:20
HiHo,

ich habe da mal ein kleines Problem in meinem Programm welches ich gerade schreibe.
Ich habe auch schon die Suche bemüht, da ich jedoch nicht genau weiss worunter ich suchen muss, und/oder soetwas noch nicht gefragt wurde, schreibe ich einen neuen Beitrag.

Ich würde gerne eine IF-Abfrage genererieren, oder wie man das auch beschreiben mag

Ich habe eine 'Tabelle' in der folgenden Art:
Tabelle - Qualitätsstufe | Bedingung | Wert
1. A | größer gleich | 80
2. B | größer gleich | 60
3. C | kleiner | 60

Diese Tabelle kann innerhalb des Programmes editiert werden.
Es soll dann z.B. die Zahl 71 eingestuft werden.
1. 71 größer gleich 80 = FALSCH
2. 71 größer gleich 60 = RICHTIG : Ausgabe C

Wie kann ich dieses 'Aufbereiten'.

Ich habe eine 'Lösung', finde diese jedoch tierisch umständlich.

Delphi-Quellcode:
if Operator = 'größer gleichthen
begin
   if Wert >= Abfrage then
      Ergebnis := Quali;
end else if Operator = 'größerthen
begin
   if Wert > Abfrage then
      Ergebnis := Quali;
end else if Operator = 'kleinerthen
begin
   if Wert > Abfrage then
      Ergebnis := Quali;
end;
Und nun meine frage ^^
Gibt es eine Einfacherer Möglichkeit die if-Abfrage einfacher zu generieren.
  Mit Zitat antworten Zitat
wurz3l

Registriert seit: 2. Jan 2006
5 Beiträge
 
#2

Re: IF-Abfrage genererieren

  Alt 11. Jan 2006, 15:15
Hmmm, kann mir keiner helfen?
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: IF-Abfrage genererieren

  Alt 11. Jan 2006, 15:22
Ich glaube, einfacher geht es nicht. Aber in der letzten Abfrage ist ein Fehler: Statt < steht da >.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: IF-Abfrage genererieren

  Alt 11. Jan 2006, 15:24
Da ja überall das Selbe ausgeführt wird, ginge es auch so:
Delphi-Quellcode:
if ((Operator = 'größer gleich') and (Wert >= Abfrage))
  or ((Operator = 'größer') and (Wert > Abfrage))
  or ((Operator = 'kleiner') and (Wert < Abfrage)) then
  Ergebnis := Quali;

Und wenn du statt dem Text sowas wie 'nen Index verwende würdest, dann könnte man auch noch die "unpraktischen" Textvergleiche einsparen.
(z.B. 0=größergleich 1=größer 2=kleiner ...)

PS: ich glaub da wolltest du ein "kleiner als" haben?
Code:
end else if Operator = 'kleiner' then
begin
   if Wert [color=#ff0000][b]<[/b][/color] Abfrage then
      Ergebnis := Quali;
[add]
Zitat von 3_of_8:
Aber in der letzten Abfrage ist ein Fehler: Statt < steht da >.
gut erkannt
Zitat von 3_of_8:
Ich glaube, einfacher geht es nicht. Aber in der letzten Abfrage ist ein Fehler: Statt < steht da >.
aber es geht doch
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#5

Re: IF-Abfrage genererieren

  Alt 11. Jan 2006, 15:25
Du könntest auch Funktionszeiger benutzen, aber ob das bei so wenigen Operatoren wirklich einfacher ist...
Delphi-Quellcode:
type
  TCompareFunction = function(a, b: Integer): Boolean;
  
  TOperator = record
    Name: string;
    Function: TCompareFunction;
  end;

[...]

  myOperators: Array of TOperator = ((Name: 'kleiner', Function: IsLesser), [...]
[add]Recordfeldernamen etwas dumm gewählt . [/add]
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
wurz3l

Registriert seit: 2. Jan 2006
5 Beiträge
 
#6

Re: IF-Abfrage genererieren

  Alt 11. Jan 2006, 16:29
Das mit dem Funktionszeiger ist mir dann doch ein bischen zu 'hoch'
Habt ihr aber beide gut beobachtet, habe oben ein Fehler in den Abfragen

himitsu hatte das schon ganz richtig gesehen, das vereinfachen der Abfrage bringt doch schon einiges...
Habe mal ein StringGrid mit meinen Qualitätsstufen gefüllt und dann per Button frage ich es ab.
Nicht gerade die eleganteste Möglichkeit, aber es reicht mir

Delphi-Quellcode:
procedure TfrmConfig.Button1Click(Sender: TObject);
var
   i: Integer;
begin
   LabelQGrade.Caption := '';
   for i := StringGrid1.RowCount-1 downto 1 do
   begin
      if ((StringGrid1.Cells[2,i] = '>=') and (StrToFloat(EditValue1.Text) >= StrToFloat(StringGrid1.Cells[3,i]))) or
            ((StringGrid1.Cells[2,i] = '>') and (StrToFloat(EditValue1.Text) > StrToFloat(StringGrid1.Cells[3,i]))) or
            ((StringGrid1.Cells[2,i] = '<=') and (StrToFloat(EditValue1.Text) <= StrToFloat(StringGrid1.Cells[3,i]))) or
            ((StringGrid1.Cells[2,i] = '<') and (StrToFloat(EditValue1.Text) < StrToFloat(StringGrid1.Cells[3,i]))) then
         LabelQGrade.Caption := StringGrid1.Cells[1,i]
   end;
end;
Vielen Dank an euch, dann mache ich mich mal an das abspeichern des Grids ^^
  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 00:06 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