Re: Sorting and listviews
- Posted by gertie at ad-tek.net Jul 13, 2001
- 380 views
On 13 Jul 2001, at 21:03, irvm at ellijay.com wrote: > > On Friday 13 July 2001 05:25, Tony Steward wrote: > > > Secondly has anyone written a sort routine they would like to share. My > > problem is as follows: > > N1-1-1 > > N1-1-10 > > N1-1-2 > > N1-1-3 > > > > This is a typical numbering system used in master key systems and I would > > rather have them display in a listview as follows: > > N1-1-1 > > N1-1-2 > > N1-1-3 > > N1-1-10 > > > > The default sort routine looks very unprofessional, and as I use the lists > > to set the order of reports it is even more un professional. > > > > Thanks > > Tony Steward > > Here's a way that works by converting the array into numbers, sorting, then > converting back to strings for display. If you've got a mix of numeric and > non-numerics, ("N1-1-10A") then it won't without some serious modifications. <snip> -- copy/pasted from screen: starting with: N1-1-1 N21-5-9 N1-1-10 N1-1-2 N1-1-3 B6-3-65 X32-6ba-2 X32-6a2-2 X32-6a-2 N3-1-10 N3-4-2 B6-3-65a press something to sort it B6-3-65 B6-3-65a N1-1-1 N1-1-2 N1-1-3 N1-1-10 N3-1-10 N3-4-2 N21-5-9 X32-6a-2 X32-6a2-2 X32-6ba-2 all done, press something to close out -- Sort a list -- Kat -- July 13, 2001 with trace include sort.e include get.e include strtok.e atom key sequence list, parsedlist -- set list to something, so we can sort it list = { "N1-1-1", "N21-5-9", "N1-1-10", "N1-1-2", "N1-1-3", "B6-3-65", "X32-6ba-2", "X32-6a2-2", "X32-6a-2", "N3-1-10", "N3-4-2", "B6-3-65a" } puts(1,"starting with:\n") for loop = 1 to length(list) do puts(1,list[loop]&"\n") end for puts(1,"\n\npress something to sort it\n\n") key = wait_key() for loop = 1 to length(list) do parsedlist = parse(list[loop],'-') for loop2 = 1 to length(parsedlist) do while length(parsedlist[loop2]) < 5 do parsedlist[loop2] = "0" & parsedlist[loop2] end while end for list[loop] = deparse(parsedlist,'-') end for list = sort(list) for loop = 1 to length(list) do parsedlist = parse(list[loop],'-') for loop2 = 1 to length(parsedlist) do while equal('0',parsedlist[loop2][1]) do parsedlist[loop2] = parsedlist[loop2][2..length(parsedlist[loop2])] end while end for list[loop] = deparse(parsedlist,'-') end for for loop = 1 to length(list) do puts(1,list[loop]&"\n") end for puts(1,"\n\nall done, press something to close out\n\n") key = wait_key()