Re: Sorting and listviews

new topic     » goto parent     » topic index » view thread      » older message » newer message

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()

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu