AGB  ·  Datenschutz  ·  Impressum  







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

Zahlen zwischen zwei Größen filtern

Ein Thema von JulianT · begonnen am 11. Mai 2015 · letzter Beitrag vom 8. Jun 2015
Antwort Antwort
Seite 1 von 3  1 23      
JulianT
(Gast)

n/a Beiträge
 
#1

Zahlen zwischen zwei Größen filtern

  Alt 11. Mai 2015, 08:49
Delphi-Version: XE4
Hallo, mein Problem ist folgendes: Ich gebe einen Wert Größe ein. Sagen wir 145 (Angaben logischerweise in mm). Im StringGrid möchte ich nun nur Einträge anzeigen lassen, die zwischen der Min und der Max Zahl liegen. In dem Fall zwischen 160 und 200. Rein theoretisch sollte es natürlich in dem Fall nicht angezeigt werden, wird es aber.

Hier der Code der problematischen Zeile

Code:
for i:= 1 to 5 do
  if (größe>min) and (größe<max) then
Größe ist kleiner als min, aber auch kleiner als Max, deswegen läuft das Programm dann weiter mit dem Abarbeiten des Codes, richtig?

Wie kann man das umsetzen, dass er sozusagen so etwas wie in Mathe umsetzt (Geht ja leider nicht in Delphi): Min<=Größe<=Max

Danke für eure Antworten.
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Zahlen zwischen zwei Größen filtern

  Alt 11. Mai 2015, 08:56
Wie kann man das umsetzen, dass er sozusagen so etwas wie in Mathe umsetzt (Geht ja leider nicht in Delphi): Min<=Größe<=Max
If ((Groesse >= Min) and (Groesse <= Max)) then ...
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
508 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Zahlen zwischen zwei Größen filtern

  Alt 11. Mai 2015, 08:59
Setz mal in den Projektoptionen unter Delphi-Compiler | Compilieren die Option Vollständige Boolsche Auswertung auf True.
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
703 Beiträge
 
Delphi 12 Athens
 
#4

AW: Zahlen zwischen zwei Größen filtern

  Alt 11. Mai 2015, 09:04
Wie kann man das umsetzen, dass er sozusagen so etwas wie in Mathe umsetzt (Geht ja leider nicht in Delphi): Min<=Größe<=Max
Dein Ansatz ist schon richtig (bis auf das >= und <=, falls so gefordert) und wenn deine Beispielzahlen stimmen (größe=145, min=160, max=200), wird der If-Teil nicht ausgeführt. Wenn doch, stimmt irgendwas mit der Zuweisung der Variablen nicht.

Geändert von bcvs (11. Mai 2015 um 09:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.294 Beiträge
 
Delphi 12 Athens
 
#5

AW: Zahlen zwischen zwei Größen filtern

  Alt 11. Mai 2015, 09:06
Man kann auch InRange aus der unit math nehmen.

If InRange(groesse,min,max) then
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
703 Beiträge
 
Delphi 12 Athens
 
#6

AW: Zahlen zwischen zwei Größen filtern

  Alt 11. Mai 2015, 09:07
Setz mal in den Projektoptionen unter Delphi-Compiler | Compilieren die Option Vollständige Boolsche Auswertung auf True.
Das bringt doch nichts. Wegen dem And wird dieser boolsche Ausdruck doch sowieso vollständig ausgewertet.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#7

AW: Zahlen zwischen zwei Größen filtern

  Alt 11. Mai 2015, 09:08
Versteh ich nicht, warum das nicht gehen sollte ... vielleicht wegen der deutschen Sonderzeichen wie ö und ß ... Bei mir funktioniert der folgende Code einwandfrei, wie die angehänge Grafik belegt:
Delphi-Quellcode:
procedure TFrame_Test.Button1Click(Sender: TObject);
Const
  Zahlen : Array[1..5] Of Integer = (12,25,66,80,92);
  Min = 25;
  Max = 80;
Var
  i : Integer;
begin
  Lbl_Index.Caption := '';
  For i := 1 To 5 Do
  If (Zahlen[i] >= Min) And (Zahlen[i] <= Max) Then
     Lbl_Index.Caption := Lbl_Index.Caption + IntToStr(Zahlen[i]) + ' ';
end;
Vollständige Boolsche Auswertung steht bei mir auf False ...

Größe ist kleiner als min, aber auch kleiner als Max, deswegen läuft das Programm dann weiter mit dem Abarbeiten des Codes, richtig?
Wenn Größe kleiner als Min ist, dann wird Größe aussortiert und nicht angezeigt. Angezeigt werden nur die Werte, die zwischen Min und Max liegen, so wie du das in deinem Eingangsposting dargestellt hast. Das = nach dem > bzw. nach dem < bedeutet, daß der Wert von Min bzw. Max mit einbezogen wird, also inklusive, ohne = wäre es exklusive.
Miniaturansicht angehängter Grafiken
betweenminmax.jpg  

Geändert von Perlsau (11. Mai 2015 um 09:12 Uhr)
  Mit Zitat antworten Zitat
JulianT
(Gast)

n/a Beiträge
 
#8

AW: Zahlen zwischen zwei Größen filtern

  Alt 11. Mai 2015, 09:10
Funktioniert, allerdings im Context nur bedingt. Aber das ist nicht auf meine Frage bezogen :=)
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Zahlen zwischen zwei Größen filtern

  Alt 11. Mai 2015, 09:17
Wie war die Frage noch gleich?
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#10

AW: Zahlen zwischen zwei Größen filtern

  Alt 11. Mai 2015, 09:37
Die Frage lautete:

Wie kann man das umsetzen, dass er sozusagen so etwas wie in Mathe umsetzt (Geht ja leider nicht in Delphi): Min<=Größe<=Max

Und genau das habe ich gemacht.

@JulianT

Was daran nicht auf deine Frage bezogen sein soll, erschließt sich mir nicht. Wenn du etwas anderes gemeint als geschrieben hast, könntest du noch einmal deine Frage oben betrachten und vielleicht neu stellen. Was also willst du als Ergebnis haben: Die Zahlen, die zwischen Min und Max liegen, oder die Zahlen, die außerhalb liegen, inklusive oder exklusive. Oder ging's vielleicht doch um's richtige Kaffeekochen und ich hab da was falsch verstanden?

Achso, fast vergessen: Welcher Kontext?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 15:59 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