Téma: Zahadný problém v Delphi
Vytvořil jsem vypisování názvů jednotlivých sekcí z ini souboru podle hledané hodnoty v sekci, konkrétně vyhledávání podle Re.
Ukázka sekce v ini souboru:
[18Sound 10NMB420]
Qms=4,6
Qes=0,36
fs=65
Mms=31,5
Dd=20,5
Re=10,5
Hc=12
Hg=8
Pe=350
Le=0,4
URL=http://www.eighteensound.com/
Co je zajímavé, že pokud je Re=2,5, tak zadáním rozmezí při vyhledávání 2,5 a 2,5 (min (Edit123) a max (Edit124)) podle tohoto kódu:
with Relist do if Rebox.Checked then begin
Ref:=StrToFloat(ReadString(vypis.Strings[i],'Re',''));
if (Ref>=StrToFloat(Edit123.Text)) and (Ref<=StrToFloat(Edit124.Text)) then
Add(IntToStr(i)) else Add('-1') end else Add(IntToStr(i));
funguje, a položka je nalezena. A teď to příjde! Je-li hodnota 2,6, záznam se nenajde. Do max je nutné zapsat 2,601 a co je ještě zajímavější, že změním-li max na 2,60000000000000001 opět se nic nenajde a hodnota 2,60000000000000000000000000000001 je podle Delphi menší než 2,6. V případě hledání 2,7 je situace stejná. V případě 2,8 je nutno do minima zadat 2,79...
Co to má být?