Avatar billede thewizard Nybegynder
27. august 2006 - 08:39 Der er 8 kommentarer og
1 løsning

Liste i numerisk-korrekt rækkefølge

Har en listbox der ser således ud:

-1
1,3
-4
4,5
osv.

Forskellige tal derned af.

Er der en nem løsning til at sætte dem i korrekt nummerisk-rækkefølge, således at det ændre sig til:

-4
-1
1,3
4,5

Gider næsten ikke rode med en gang loooops, hvis nogen allerede har opfundet et runde hjul osv.
Avatar billede thewizard Nybegynder
27. august 2006 - 08:46 #1
sorted = true

Jeg går lige ud og hænger mig selv ;)
Avatar billede thewizard Nybegynder
27. august 2006 - 08:51 #2
Hmmm nej, sorted = true virkede ikke korrekt. Nogen gode løsninger?

Point kan fås i et andet topic.
Avatar billede joern Nybegynder
27. august 2006 - 10:25 #3
For a = 0 to list1.listcount -1
    list1.listindex = a
    var = format(list1.text, "00#,#")
    list1.removeitem
    list1.additem var
  next a
  list1.refresh

Ikke afprøvet!!  point er ligemeget
Avatar billede thewizard Nybegynder
28. august 2006 - 00:02 #4
Kan ikk få det til at virke, mester :). Mangler du ikke en integer ved "removeitem"?
Avatar billede joern Nybegynder
28. august 2006 - 09:09 #5
Hej. Afprøver, men endnu ikke positivt resultat.  Har ellers tidligere lavet noget lignende, men husker ikke hvilket projekt.
Avatar billede joern Nybegynder
28. august 2006 - 09:37 #6
Hej.

Det ser ud til at være vanskeligt (VB5).  + har lavere ascii-værdi end minus, så positive værdier kommer først i en sorteret liste.

Et forslag er at lave et array og udføre buble-sort i det, og derpå skrive værdierne til en liste, der ikke er sorteret.

Dim var As String, a As Integer
Private Sub Command1_Click()
  For a = 0 To List1.ListCount - 1
      List1.ListIndex = a
      If Val(List1.Text) > 0 Then
            var = Format(List1.Text, "+000.0")
          Else
            var = Format(List1.Text, "000.0")
      End If
      List1.RemoveItem List1.ListIndex
      List1.AddItem var
  Next a
  List1.Refresh
End Sub

Private Sub Form_Load()
  List1.AddItem "1,4"
  List1.AddItem "-0,3"
  List1.AddItem "13"
  List1.AddItem "-6,3"
  List1.AddItem "42"
End Sub

Dette giver i listen
+001,4
+013,0
0042,0
-000,3
-006,3

Du hører ikke mere fra mig i dette spørgsmål.
Avatar billede thewizard Nybegynder
28. august 2006 - 11:34 #7
joern,hvorfor vil du have 00 foran?
Avatar billede thewizard Nybegynder
28. august 2006 - 11:34 #8
Kan du evt fjerne "pluset" foran de positive værdier?
Avatar billede thewizard Nybegynder
30. august 2006 - 07:37 #9
:) jeg fik det til at virke, hvis nogen vil ha' løsningen er den her:

Lav 2 lists, en hvor du skriver de tilfældige tal (lsttopbadplayers) og en der skal sættes i orden (lsttopbadplayersrev).

Private Sub Form_load()
Dim balance As Currency
Dim Q
Dim U

Q = 0

Do Until Q = frmMain.lstusers.ListCount
lsttopbadplayers.AddItem (frmMain.lblbalance(Q + 1).Caption)

Q = Q + 1
Loop

End Sub
Private Sub cmdlsttopbadplayers_Click()
Dim high As Currency


Q = 0

    high = lsttopbadplayers.List(0)
   
Do Until Q = lsttopbadplayers.ListCount
   
   
    If lsttopbadplayers.List(Q) > high Then
        high = lsttopbadplayers.List(Q)
        ID = Q
    End If
   
   
   
   
Q = Q + 1
Loop
    lsttopbadplayers.RemoveItem (ID)
    lsttopbadplayersrev.AddItem high
   

End Sub
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester