![]() |
Delphi-Version: XE4
Zahlen zwischen zwei Größen filtern
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:
Größe ist kleiner als min, aber auch kleiner als Max, deswegen läuft das Programm dann weiter mit dem Abarbeiten des Codes, richtig?
for i:= 1 to 5 do
if (größe>min) and (größe<max) then 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. |
AW: Zahlen zwischen zwei Größen filtern
Zitat:
Delphi-Quellcode:
If ((Groesse >= Min) and (Groesse <= Max)) then ...
|
AW: Zahlen zwischen zwei Größen filtern
Setz mal in den Projektoptionen unter Delphi-Compiler | Compilieren die Option Vollständige Boolsche Auswertung auf True.
|
AW: Zahlen zwischen zwei Größen filtern
Zitat:
|
AW: Zahlen zwischen zwei Größen filtern
Man kann auch
Delphi-Quellcode:
aus der unit math nehmen.
InRange
Delphi-Quellcode:
If InRange(groesse,min,max) then
|
AW: Zahlen zwischen zwei Größen filtern
Zitat:
|
AW: Zahlen zwischen zwei Größen filtern
Liste der Anhänge anzeigen (Anzahl: 1)
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:
Vollständige Boolsche Auswertung steht bei mir auf False ...
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; Zitat:
|
AW: Zahlen zwischen zwei Größen filtern
Funktioniert, allerdings im Context nur bedingt. Aber das ist nicht auf meine Frage bezogen :=)
|
AW: Zahlen zwischen zwei Größen filtern
Wie war die Frage noch gleich? :gruebel:
|
AW: Zahlen zwischen zwei Größen filtern
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? :lol: Achso, fast vergessen: Welcher Kontext? |
AW: Zahlen zwischen zwei Größen filtern
Wie wäre es mit
(MIN <= WERT) AND (WERT <= MAX) dann wären wir auch optisch nahe bei MIN<=WERT<=MAX... |
AW: Zahlen zwischen zwei Größen filtern
Das sind doch Kindereien! Geht's beim Programmieren jetzt etwa darum, irgend ein Formelbild aus der Mathematik im Quellcode optisch nachzubilden? Oder geht's um die Funktion, den Algorithmus, um das Ergebnis?
|
AW: Zahlen zwischen zwei Größen filtern
Ich würde die Optik eines Programmes nicht als "Kinderei" abtun. Die Wartbarkeit eines Programmes hat sehr viel mit der Lesbarkeit desselben zu tun. Also wenn man das Formelbild leicht nachbilden kann - was spricht dagegen? Außerdem hatte der OP ja offenbar genau an der Stelle ein Problem.
|
AW: Zahlen zwischen zwei Größen filtern
Lesbarkeit ist durchaus ein wichtiger Aspekt. Wenn man selbst eine bestimmte Schreibweise für leserlicher hält, und diese auch nicht gegen die Styleguides des Projektes verstößt, ist nichts dagegen einzuwenden, den persönlichen Präferenzen zu folgen.
Bloß als Beispiel: Auch wenn alle folgenden Bedingungen aufs selbe hinauslaufen, unterscheiden sie sich durchaus in Lesbarkeit.
Delphi-Quellcode:
Das ist aber im Endeffekt ein subjektives Empfinden.
if (min <= value) and (value <= max) then
if (value <= max) and (min <= value) then if (value >= min) and (max <= value) then if not ((max < value) or (value < min)) then Was das Problem im Thread betrifft: Sofern die Vorschläge hier das Problem nicht lösen, bedarf es wahrscheinlich einer genaueren Erklärung des Problems, mit mehr Code. (Sind immer nur 5 Elemente im StringGrid? Wie werden Elemente ein/ausgeblendet?...) |
AW: Zahlen zwischen zwei Größen filtern
Zitat:
Gruß K-H |
AW: Zahlen zwischen zwei Größen filtern
Hallo an Alle,
ich bin immer wieder überrascht, welch Resonanz ein solch banales Problem hervorruft. Daher möchte ich hier mal eins meiner Probleme schildern: Ich habe immer wieder das Problem, dass beim Gehen die Schnürsenkel meiner Schuhe aufgehen, vielleicht kann mir einer von euch eine Lösung anbieten. mfg Frank :oops: |
AW: Zahlen zwischen zwei Größen filtern
Lösung: Slipper oder Sekundenkleber
Nja, eigentlich wurde ja schon alles (mehrfach) gesagt und sollte es dennoch Probleme geben, so möge sich der TE einfach nochmal melden. Und bezüglich "Kontext", also Umlaute sind egal und wenn "größe" ein String ist, dann ist der Typ das Problem, aber das läßt sich ja leicht lösen. |
AW: Zahlen zwischen zwei Größen filtern
Zitat:
Zitat:
Delphi-Quellcode:
Der Code ist irgendwie seltsam, nicht nur wegen der Umlaute und dem ß, sondern auch wegen der irgendwie sinnlos erscheinenden For-Schleife. Der TE hatte sich ja vor allem zuvor beklagt, daß etwas nicht so tut, wie er wollte: " 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."
for i:= 1 to 5 do
if (größe>min) and (größe<max) then Im Zusamnmenhang mit dieser Problemstellung macht der Code keinen Sinn: Man sieht weder irgend eine Zuweisung auf größe noch kennen wir die Werte von Min und Max, ebenso wenig wie die Erwartung, was nach dem Then geschehen soll: Sollen nach dem Then in einem Begin-End-Block Werte in ein Stringgrid geschrieben werden? Oder sollen die Werte, die zwischen Min und Max liegen, nicht ins Stringgrid eingetragen werden? Wie gesagt, alles sehr nebulös, daher lautet die Antwort: 42. Zitat:
So lange sich der TE aber nicht wieder meldet und auf gestellte Fragen antwortet, bleibt alles weitere reinste Spekulation und könnte ohne weiteres mit der altbekannten Antwort auf alles "abgefertigt" werden. Ich habe doch ganz sachlich ganz vernünftig nachgefragt, da muß man doch jetzt nich gleich wieder in Nebenschauplätze ausforken und Mißverständnisse produzieren ... @frankyboy1974 Die Lösung besteht darin, den durch das gewöhnliche Zuschnüren der Schuhe enstandenen Schlaufen nochmal einen einfachen Knoten obendrauf zu verpassen. Ich klinke mich hier aus, wird mir langsam etwas zu ... äh, ja, genau ... |
AW: Zahlen zwischen zwei Größen filtern
Zitat:
Was Dein Problem angeht: barfuß, Sicherheitsnadel, knoten machen lernen, auf die nötige innere Reibung achten..... Gruß K-H |
AW: Zahlen zwischen zwei Größen filtern
Zitat:
Sherlock |
AW: Zahlen zwischen zwei Größen filtern
die meisten vorgebrachten Lösungen, würden mein Problem ja nicht wirklich lösen. Barfuss zu laufen, hilft mir nicht wirklich weiter, wenn ich Schuhe tragen muss, die mit einer Schleife (Kopf, -Fuss oder Zählschleife??) zu binden sind (Slipper leider auch ein no go).
mfg Frank PS: Weitere Lösungen dürft Ihr mir als PN schicken.:lol: |
AW: Zahlen zwischen zwei Größen filtern
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:55 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