Suchfunktion funktioniert nicht.



  • Ich will ein Integer Array Sortieren lassen. Dazu will ich TList benutzen
    Es sollen nur die Elemente an den Rand gesetzt werden, die =-1 sind und die anderen nicht.
    (8,-1,6,10,-1,12) -> (8,6,10,12,-1,-1)
    Ich hab die Funktion geschrieben, aber es wird nicht sortiert. Und ich weis nicht warum. 😕

    for(int i = 0;i < Form2->Spiel.nEKarten ;i++)
                            {
                                    Liste->Add(&Form2->Spiel.eigenKarten[i]);
                            }
                            Liste->Sort(EVergleich);
    
    int __fastcall EVergleich(void *Item1, void *Item2)
    {
            if ((*(int*)Item1 ==-1)&&(*(int*)Item1!=*(int*)Item2))
            {
                    return -1;
            }
            if ((*(int*)Item2 ==-1)&&(*(int*)Item1!=*(int*)Item2))
            {
                    return 1;
            }
            return 0;
    }
    


  • Was genau schreibst du denn in die Liste (Zahlen oder Zeiger auf Zahlen)?
    Wenn du die Zahlen direkt rein schreibst, dann muß deine Vergleichsfunktion so aussehen:

    int __fastcall EVergleich(void *Item1, void *Item2)
    {
            if (((int)Item1 ==-1)&&((int)Item1!=(int)Item2))
            {
                    return -1;
            }
            if (((int)Item2 ==-1)&&((int)Item1!=(int)Item2))
            {
                    return 1;
            }
            return 0;
    }
    

Anmelden zum Antworten