28. april 2014 - 13:26Der er
5 kommentarer og 1 løsning
Hurtig sortering af ListBox i Delphi
Jeg har et ældre program hvor jeg sorterer en ListBox i Delphi via en Bubblesort funktion. Det har hidtidigt virket fint for mig - men nu er mine data mængder blevet så store og samtidigt så sorterer jeg nu på en NAS (Linux system). Det giver mig problemer med lange eksekveringstider.
Mit spørgsmål er:
1) Forringer det hastigheden at jeg sorterer i ListBox[i], altså i selve ListBox data.
2) Hvad er en rimelig forventet sorterinstid hvis man sorterer f.eks 5000 linier i en ListBox ?
3) Bør jeg lave en Quick-sort i stedet, eller andet ?
Har du prøvet at bruge den indbyggede sort der er på en stringlist ( som dine items ligger i ) ?
ellers kan du afhængig af din delphi version også lave din egen compare func. i listen, så dens indbyggede sort gør som du vil, kig i delphi doc/google jeg har ikke delphi kørende nu :-)
Den indbyggede sort virker fint - når jeg befinder mig i "windows miljø". Men når jeg kører på min NAS - så kan jeg ikke få den indbyggede sortering til at virke. Derfor har jeg lavet min egen.
Jeg benytter en gammel version af delphi - ver 7
Jeg har forsøgt mig med at google for dette - dog indtil videre uden held.
d7 og linux ? er det lazarus du bruger til linux ? det er nok nemmest at lave en qsort i stedet for bublesort eller bare bruge sort fra tstringlist evt TStringList(mylistbox.items).sort
Linux - er måske overdrevet. Men jeg bruger det på en windows 7 pc - som så bruger en NAS - Synology (der benytter linux). Bruger jeg en windows explorer/stifinder så virker sortering fint, ligeledes når jeg bruger mit NAS administrator program. Men når jeg tilgår via Delphi program - så er sorteringen ikke ok, og jeg kan ikke benytte sortering delphi tilbyder til listbox'en.
Jeg skal lige se mere på dine forslag - men det bliver først tidligst i morgen. Tak for input :-)
Martin - hvis du giver et svar så giver jeg dig point.
Det viste sig at jeg havde lavet noget af en brøler - jeg kunne nemlig se i min log/trace fil at jeg kaldte sorteringen for hver ListBox flere gange - hvilket jo på ingen måde gjorde mit program hurtigere :-)
Efter at have rettet mit program med sorteringskald og lidt andet, så kan jeg leve med hastigheden - som er reduceret til ca 10 %.
Og jeg har endda endnu ikke prøvet at skifte min sortering ud til en Quick-sort.
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.