OK, das kommt davon, wenn man bei seiner Vergleichsfunktion fernab von jeglichen Standards seine Rückgabewerte definiert ... hatte ganz übersehen, daß diese anders vergleicht.
mach mal aus dem
while vergleich(b, a) <= 0 do
dieses hier
while vergleich(b, a) >= 1 do
ich hoff das stimmt dann
standard:
0 a=b
-1 a<b
1 a>b
und zum Auswerten dann
Delphi-Quellcode:
if vergleich(a, b) < 0 then a < b if vergleich(a, b) = -1 then
if vergleich(a, b) <= 0 then a <= b
if vergleich(a, b) = 0 then a = b
if vergleich(a, b) >= 0 then a >= b
if vergleich(a, b) > 0 then a > b if vergleich(a, b) = 1 then
if vergleich(a, b) <> 0 then a <> b
du siehst ... so verhält sich dann a zu b wie "vergleich" zu 0
oder man nutzt bei seiner Vergleichs-Funktion das TValueRelationship aus der
Unit Types
(wie vorher schonmal vorgeschlagen), dann fällt zusätzlich noch auf, daß auch sowas geht
Delphi-Quellcode:
if vergleich(a, b) = LessThanValue then a < b
if vergleich(a, b) <> GreaterThanValue then a <= b
if vergleich(a, b) = EqualsValue then a = b
if vergleich(a, b) <> LessThanValue then a >= b
if vergleich(a, b) = GreaterThanValue then a > b
if vergleich(a, b) <> EqualsValue then a <> b