Italia
Foro

Listbox sortiert nach Zahlen

 
- Page 1 -



Julian
Schmidt
Ciao,
ich würde gerne ein Listbox erstellen welche Zahlen in der Richtigen Reihenfolge anzeigt. Etwa..
1,2,3...100,...1001,....9999

Oder auch umgekehrt. Eine ganz normale 'SortedListBox' zeigt Zahlen in dieser Reihenfolge....
0,1,100,1000,2,200,2000,5000...

Falls so etwas nicht possibile ist würde ich gerne den höchsten Wert einer Listbox(circa eine Prozedur)ermitteln.
KompilierenMarkierenSeparieren
cls
var Liste&=Create("ListBox", %hwnd, 1, 0, 0, 100, height(%hwnd))

whileloop 100

    AddString(Liste&,Str$((Rnd(20)*&loop)))

Endwhile

while 1

    Sleep 30
    case iskey(27) : end

XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
17.08.2011  
 



« Dieser Beitrag wurde als Lösung gekennzeichnet. »


Julian
Schmidt
hmmmmmm....so kann man auch die Zahlen in einer Listbox sortieren, sieht nur nicht schön aus :p
Voraussetzung ist naturalmente eine 'UnsortedListbox'.
KompilierenMarkierenSeparieren
Windowstyle 24
Window 100,200 - 100,200
Windowtitle "Beispiel zum Sortieren von Zahlen in einer Listbox"
var Liste&=Create("ListBox", %hwnd, 0, 0, 0, width(%hwnd), height(%hwnd)-40)

whileloop 100

    AddString(Liste&,Str$((Rnd(20)*&loop)))

Endwhile

var sort_list&=Create("Button",%hwnd,"Sortieren",5,height(%hwnd)-35,width(%hwnd)-10,30)

while 1

    waitinput

    if getfocus(sort_list&)

        Sort_Listbox_by_Number(Liste&)
        EnableWindow sort_list&,0

    Endif

Endwhile

Proc Sort_Listbox_by_Number

    Parameters hdl&
    declare index%
    var num%=99999999999999999
    var numbersortedlist&=Create("List", 0)

    while GetCount(hdl&)<>0

        whileloop GetCount(hdl&)

            if num%>Val(GetString$(hdl&,&loop-1))

                num%=Val(GetString$(hdl&,&loop-1))
                index%=&loop-1

            Endif

        Endwhile

        AddString(numbersortedlist&,Str$(num%))
        DeleteString(hdl&,index%)
        num%=99999999999999999

    Endwhile

    Whileloop GetCount(numbersortedlist&)

        AddString(hdl&,GetString$(numbersortedlist&,&loop-1))

    Endwhile

    destroywindow(numbersortedlist&)
    Return 1

../../function-references/xprofan/endproc/'>EndProc


Nachtrag:
Fünf Zeilen mehr, aber dafür sieht das sortieren besser aus xD
KompilierenMarkierenSeparieren
Windowstyle 24
Window 100,200 - 100,200
Windowtitle "Beispiel zum Sortieren von Zahlen in einer Listbox"
var Liste&=Create("ListBox", %hwnd, 0, 0, 0, width(%hwnd), height(%hwnd)-40)

whileloop 100

    AddString(Liste&,Str$((Rnd(20)*&loop)))

Endwhile

var sort_list&=Create("Button",%hwnd,"Sortieren",5,height(%hwnd)-35,width(%hwnd)-10,30)

while 1

    waitinput

    if getfocus(sort_list&)

        Sort_Listbox_by_Number(Liste&)
        EnableWindow sort_list&,0

    Endif

Endwhile

Proc Sort_Listbox_by_Number

    Parameters hdl&,num%
    declare index%
    var numbersortedlist&=Create("List", 0)
    var copy_orginal_list&=Create("List", 0)

    Whileloop GetCount(hdl&)

        AddString(copy_orginal_list&,GetString$(hdl&,&loop-1))

    Endwhile

    while GetCount(copy_orginal_list&)<>0

        num%=99999999999999999

        whileloop GetCount(copy_orginal_list&)

            if num%>Val(GetString$(copy_orginal_list&,&loop-1))

                num%=Val(GetString$(copy_orginal_list&,&loop-1))
                index%=&loop-1

            Endif

        Endwhile

        AddString(numbersortedlist&,Str$(num%))
        DeleteString(copy_orginal_list&,index%)

    Endwhile

    ClearList hdl&

    Whileloop GetCount(numbersortedlist&)

        AddString(hdl&,GetString$(numbersortedlist&,&loop-1))

    Endwhile

    destroywindow(numbersortedlist&)
    destroywindow(copy_orginal_list&)
    Return 1

EndProc


Meine Frage habe ich damit zu meiner 100% Zufriedenstellung beantwortet. Der Thread ist damit geschlossen!
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
17.08.2011  
 




Dietmar
Horn
Hallo Julian,

ich würde die zu sortierenden Zahlen mit führenden Nullen auffüllen und sie so einer sortierte Listbox zum Mostra werfen.

Um die Sortierung umzukehren würde ich jede der Zahlen von 1000, 10000, 100000, oder so subtrahieren, und mit diesen dann .die sortierte Listbox füllen.

Saluto
Dietmar
 
Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V.  [...] 

Windows 95 bis Windows 7
Profan² 6.6 bis XProfan X2 mit XPSE

Das große XProfan-Lehrbuch:  [...] 
17.08.2011  
 




Julian
Schmidt
Dietmar Horn (17.08.11)

Ich würde die zu sortierenden Zahlen mit führenden Nullen auffüllen und sie so einer sortierte Listbox zum Mostra werfen.


Welchen Befehl kann man zu solch einem Zweck verwenden? Etwa Format$(...)?

Nachtrag:
Hab jetzt einfach mal eine Prozedur geschrieben welcher die höchste Zahl einer Listbox ermittelt. Das ist per mein Problem schon die Lösung!
KompilierenMarkierenSeparieren
cls
var Liste&=Create("ListBox", %hwnd, 1, 0, 0, 100, height(%hwnd))

whileloop 100

    AddString(Liste&,Str$((Rnd(20)*&loop)))

Endwhile

Create("Text",%hwnd,"Largest Number of Listbox: "+Str$(Listbox_Largest_Number(Liste&)),110,10,230,18)
Create("Text",%hwnd,"Smallest Number of Listbox: "+Str$(Listbox_Smallest_Number(Liste&)),110,30,230,18)

while 1

    waitinput

Endwhile

Proc Listbox_Largest_Number

    Parameters hdl&
    declare num%

    whileloop GetCount(hdl&)

        case num%<Val(GetString$(hdl&,&loop-1)) : num%=Val(GetString$(hdl&,&loop-1))

    Endwhile

    Return num%

EndProc

Proc Listbox_Smallest_Number

    Parameters hdl&
    var num%=99999999999999999

    whileloop GetCount(hdl&)

        case num%>Val(GetString$(hdl&,&loop-1)) : num%=Val(GetString$(hdl&,&loop-1))

    Endwhile

    Return num%

EndProc

 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
17.08.2011  
 




Julian
Schmidt
hmmmmmm....so kann man auch die Zahlen in einer Listbox sortieren, sieht nur nicht schön aus :p
Voraussetzung ist naturalmente eine 'UnsortedListbox'.
KompilierenMarkierenSeparieren
Windowstyle 24
Window 100,200 - 100,200
Windowtitle "Beispiel zum Sortieren von Zahlen in einer Listbox"
var Liste&=Create("ListBox", %hwnd, 0, 0, 0, width(%hwnd), height(%hwnd)-40)

whileloop 100

    AddString(Liste&,Str$((Rnd(20)*&loop)))

Endwhile

var sort_list&=Create("Button",%hwnd,"Sortieren",5,height(%hwnd)-35,width(%hwnd)-10,30)

while 1

    waitinput

    if getfocus(sort_list&)

        Sort_Listbox_by_Number(Liste&)
        EnableWindow sort_list&,0

    Endif

Endwhile

Proc Sort_Listbox_by_Number

    Parameters hdl&
    declare index%
    var num%=99999999999999999
    var numbersortedlist&=Create("List", 0)

    while GetCount(hdl&)<>0

        whileloop GetCount(hdl&)

            if num%>Val(GetString$(hdl&,&loop-1))

                num%=Val(GetString$(hdl&,&loop-1))
                index%=&loop-1

            Endif

        Endwhile

        AddString(numbersortedlist&,Str$(num%))
        DeleteString(hdl&,index%)
        num%=99999999999999999

    Endwhile

    Whileloop GetCount(numbersortedlist&)

        AddString(hdl&,GetString$(numbersortedlist&,&loop-1))

    Endwhile

    destroywindow(numbersortedlist&)
    Return 1

../../function-references/xprofan/endproc/'>EndProc


Nachtrag:
Fünf Zeilen mehr, aber dafür sieht das sortieren besser aus xD
KompilierenMarkierenSeparieren
Windowstyle 24
Window 100,200 - 100,200
Windowtitle "Beispiel zum Sortieren von Zahlen in einer Listbox"
var Liste&=Create("ListBox", %hwnd, 0, 0, 0, width(%hwnd), height(%hwnd)-40)

whileloop 100

    AddString(Liste&,Str$((Rnd(20)*&loop)))

Endwhile

var sort_list&=Create("Button",%hwnd,"Sortieren",5,height(%hwnd)-35,width(%hwnd)-10,30)

while 1

    waitinput

    if getfocus(sort_list&)

        Sort_Listbox_by_Number(Liste&)
        EnableWindow sort_list&,0

    Endif

Endwhile

Proc Sort_Listbox_by_Number

    Parameters hdl&,num%
    declare index%
    var numbersortedlist&=Create("List", 0)
    var copy_orginal_list&=Create("List", 0)

    Whileloop GetCount(hdl&)

        AddString(copy_orginal_list&,GetString$(hdl&,&loop-1))

    Endwhile

    while GetCount(copy_orginal_list&)<>0

        num%=99999999999999999

        whileloop GetCount(copy_orginal_list&)

            if num%>Val(GetString$(copy_orginal_list&,&loop-1))

                num%=Val(GetString$(copy_orginal_list&,&loop-1))
                index%=&loop-1

            Endif

        Endwhile

        AddString(numbersortedlist&,Str$(num%))
        DeleteString(copy_orginal_list&,index%)

    Endwhile

    ClearList hdl&

    Whileloop GetCount(numbersortedlist&)

        AddString(hdl&,GetString$(numbersortedlist&,&loop-1))

    Endwhile

    destroywindow(numbersortedlist&)
    destroywindow(copy_orginal_list&)
    Return 1

EndProc


Meine Frage habe ich damit zu meiner 100% Zufriedenstellung beantwortet. Der Thread ist damit geschlossen!
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
17.08.2011  
 




Julian
Schmidt
Dietmar Horn (17.08.11)

Um die Sortierung umzukehren würde ich jede der Zahlen von 1000, 10000, 100000, oder so subtrahieren, und mit diesen dann .die sortierte Listbox füllen.


Subtrahieren? Multiplizieren!
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
17.08.2011  
 




Thomas
Freier

ich würde die zu sortierenden Zahlen mit führenden Nullen auffüllen und sie so einer sortierte Listbox zum Mostra werfen.


Meist ist ein Font mit gleicher Laufweite vorhanden, dann geht's auch mit Leerzeichen.
KompilierenMarkierenSeparieren
cls
var LB&=Create("ListBox", %hwnd, 1, 10, 10, 224, 400)
var LBfont&=CreateFont("DejaVu Sans Mono",14,0,0,0,0)
SetFont LB&,LBfont&
var a$=space$(20)
AddString(LB&,right$(a$+"100",20))
AddString(LB&,right$(a$+"1",20))
AddString(LB&,right$(a$+"11",20))
AddString(LB&,right$(a$+"4",20))
waitinput
DeleteObject LBfont&
KompilierenMarkierenSeparieren
 $H commctrl.ph
cls
var LB&=Create("GridBox", %hwnd,";1;220;"; 1, 10, 10, 224, 400)
setstyle LB&,getstyle(LB&) | ~LVS_NOCOLUMNHEADER
var LBfont&=CreateFont("Arial",14,0,0,0,0)
SetFont LB&,LBfont&
var a$=space$(20)
AddString(LB&,right$(a$+"100",20))
AddString(LB&,right$(a$+"1",20))
AddString(LB&,right$(a$+"11",20))
AddString(LB&,right$(a$+"4",20))
waitinput
DeleteObject LBfont&
end
 
Gruß Thomas
Windows XP SP2, XProfan X2
17.08.2011  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

10.386 Views

Untitledvor 0 min.
H.Brill17.05.2023
RudiB.05.04.2020
Pauli21.08.2013
Georg20.08.2013
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie