Vill sortera strängar Om vi bortser ifrån att att du använder "Gosub" (olämpligt) och bubblesort (också olämpligt), och att du inte använder färdiga sorteringsrutiner istället för att skriva dem själv, så är det enklaste sättet att lösa ditt problem att helt enkelt köra UCase eller LCase vid jämförelsen. Kanske lite "Out of Topic" Men ! Du kan genom "Option Compare" tala om om strängar skall vara känslig för versaler. Andres tar betalt efter programrader. Att lägga till en rad kod överst i modulen där sorteringsfunktionen ligger, tycker inte jag är för mycket (To much).Sortera stora a små bokstäver alfabetiskt
I en: For n=1 to NumberOfStrings-1: for m=n+1 to NumberOfStrings//next m:next n (separata linjer naturligtvis):
If Astring(n) > Astring(m) Then GoSub SortItems
Sorterar men med ett problem:
Stora och små bokstäver kommer olika, stora före ALLA små, t.ex. X kommer före a. Säg att min lista ser ut så här:
Beta
gamma
alpha
Delta
Vad jag vill få
alpha
Beta
Delta
gamma
Men vad jag får
Beta
Delta
alpha
gamma
Hur löser jag detta?Sv: Sortera stora a små bokstäver alfabetiskt
Alltså
if ucase(str)>ucase(str2) then ...Sv:Sortera stora a små bokstäver alfabetiskt
Kom ihåg att det alltid skiljer 32 mellan Versaler o Gemena.
DVS "A" är 65 "a" är 97 65 +32Sv: Sortera stora a små bokstäver alfabetiskt
Default är:
Option Compare Binary
Genom att istället ange Text:
Option Compare Text
Så kommer gemener och versaler värderas lika.
Du kan experimentera med följande kod genom att kommentera ut en av "Option Compare" raderna:
Option Compare Text
'Option Compare Binary
Private Sub Form_Load()
Dim txt1 As String
Dim txt2 As String
txt1 = "APA"
txt2 = "apa"
If txt1 = txt2 Then
MsgBox "Bra! De är lika."
Else
MsgBox "Tyvärr! De är olika."
End If
End Sub
Om du under körning vill kunna ställa in hur jämförelsen skall gå till, kan du använda metoden StrComp, där tredje argumentat talar om jämförelsen skall ta hänsyn till versaler och gemener:
Private Sub Form_Load()
Dim txt1 As String
Dim txt2 As String
Dim Compare As VbCompareMethod
txt1 = "APA"
txt2 = "apa"
Compare = vbTextCompare
'Compare = vbBinaryCompare
If StrComp(txt1, txt2, Compare) = 0 Then
MsgBox "Bra! De är lika."
Else
MsgBox "Tyvärr! De är olika."
End If
End Sub
P.S.
Ett svar från Microsoft Certified Professional (MCP) innom Visual Basic 6.0. ;-)
D.S.
Sv: Sortera stora a små bokstäver alfabetiskt
Ju mer han kan konstlas till det Ju smartare verkar han vara.
Han är BRAAAAAAAAAAA men ibland blir det "To mush"Sv:Sortera stora a små bokstäver alfabetiskt
Exemplen är för för att på ett pedagogiskt sätt illustrera användningen.
Alla är ju inga gamla rävar på VB som du och jag. ;-)
Så jag finner din kommentar onödig, ogrundad och sårande.