10. november 2003 - 10:07Der er
13 kommentarer og 1 løsning
Nemmest at sortere listboks eller array ?
Jeg skal enten have sorteret mit array inden det sættes ind i en listboks eller også skal det først sorteres i listboksen. Hvad er nemmest ? Og hvordan gør man ? Jeg skal sortere en variabel som er integer, og det største tal skal øverst!
function SortListBox(List: TStringList; Index1, Index2: Integer): Integer; var D1, D2: Integer; begin D1 := StrToInt(List[Index1]); D2 := StrToInt(List[Index2]); If D1 < D2 Then Result := 1 Else If D1 > D2 Then Result := -1 Else Result := 0; end;
procedure TForm1.Button2Click(Sender: TObject); var SL: TStringList; begin ListBox2.Items.Add('3'); ListBox2.Items.Add('1'); ListBox2.Items.Add('34'); ListBox2.Items.Add('63'); ListBox2.Items.Add('355'); ListBox2.Items.Add('7'); ListBox2.Items.Add('10'); ListBox2.Items.Add('55');
x-masman: Har du prøvet den !? Den virker meget dårlig da den er beregnet til at sortere alfabetisk og ikke til tal, så den sortere kun på første tegn i tallet og ikke hele tallet som helhed ;)
Denne procedure virker, hvis du skal have ændret rækkefølgen skal du bare vendre "krokodille-næbbet" :)
procedure SortListBox; var Finished : Boolean; I : Integer; begin repeat Finished := True; For I:=1 to Form1.ListBox1.Count-1 do begin If (StrToInt(Form1.ListBox1.Items.Strings[I]) > StrToInt(Form1.ListBox1.Items.Strings[I-1])) then begin Form1.ListBox1.Items.Move(I,I-1); Finished := False; break; end; end; until (Finished); end;
fordi jeg skulle samtidig rykke værdierne op i en anden listbox når den rykkede dem i den listbox den sorterer i, og så synes jeg den var mere overskuelig for sådan en nybegynder som mig...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.