Ich weiß es gibt extra Sortiermethoden. Aber die will ich erst mal nicht nutzen, sonst lernen ich ja nichts.
Ich will mir von den drei Grundfarben-Werten die Reihenfolge bzw. die Position von der stärksten bis zu dem schwächsten Wert ausgeben lassen.
So das wenn Rot den Wert $65, Grün den Wert $27, und Blau den Wert $45 hat, das mir die Reihenfolge bzw. die Position 3 für den Wert von Rot, dann 1 für den Wert von Grün und dann 2 für den Wert von Blau.
Für eine andere Funktion habe ich mir eine NearestInteger-Funktion gebaut.
Code: Alles auswählen
Function NearestInteger(Const Main, IntegerA, IntegerB: SInt32): SInt32;
Bei dieser Funktion wird mir die Ganzzahl zurückgegeben, die am nächsten des Main-Wertes ist.
Habe die Werte von 'IntegerA' und 'IntegerB' zu 'Main' den selben Abstand, wird mir 'IntegerA' zurückgegeben.
Zuerst dachte ich mir, diese Funktion in einer Schleife laufen zu lassen, aber dann hatte ich die Idee, die NearestInteger-Funktion anzupassen.
Aber das gelang mir auch nicht.
Code: Alles auswählen
IF (RedColor > GreenColor) and (RedColor > BlueColor) then
Result := 1;
IF (GreenColor > RedColor) and (GreenColor > BlueColor) then
Result := 2;
IF (BlueColor > RedColor) and (BlueColor > GreenColor) then
Result := 3;
Bei dieser Methode kriege ich zwar den Wert für die stärkste Farbe, aber wenn zwei Farben identisch sind kriege ich logischerweise den Wert '0' zurück, und ich kann mir die Position der stärksten Farbe nicht zurückgeben.
Hat einer eine Idee wie ich das Problem lösen kann?
Mir scheint meinen Schleifen-Idee nicht so falsch zu sein, da ich damit ja schon einen Vergleich mache.
Gruß vom Nixsager