Onko VB:ssa valmista funktiota tai yleisesti hyväksi koettua keinoa käydä taulukko järjestyksessä läpi muutoin kuin alusta loppuun tai takaperin lopusta alkuun? esim. tässä tapauksessa etuperin viimeisestä alkiosta toiseksiviimeiseen alkioon.
NO MORJENS novice!
If Taulukko.Length > 1 Then
'viimeisestä alkiosta toiseksiviimeiseen
For i As Integer = Taulukko.GetUpperbound(0) _
To Taulukko.GetUpperbound(0) - 1 Step -1
MsgBox(Taulukko(i).ToString)
Next
'toiseksiviimeisestä alkiosta viimeiseen
For i As Integer = Taulukko.GetUpperbound(0) - 1
To Taulukko.GetUpperbound(0)
MsgBox(Taulukko(i).ToString)
Next
'Edit: jos Antin epäilys osui oikeaan niin...
'elikä ensimmäisenä viimeinen ja sitten alusta
'toiseksiviimeiseen alkioon...
For i As Integer _
= Taulukko.GetLowerBound(0) _
To Taulukko.GetUpperBound(0)
Dim j As Integer = Math.Abs(Math.Abs( _
(i - (Taulukko.GetUpperBound(0) * 2)) Mod _
Taulukko.GetUpperBound(0)) _
- Taulukko.GetUpperBound(0))
If i > 0 Then j -= 1
MsgBox(Taulukko(j).ToString)
Next
End IfVai oliko tarkoitus pyörähtää ympäri taulukon lopusta?
Dim taulu() As Integer = {1, 2, 3, 4, 5}
' aloituskohta
Dim alku As Integer = UBound(taulu)
' lopetuskohta
Dim loppu As Integer = UBound(taulu) - 1
' 1 = eteenpäin, -1 = taaksepäin
Dim askel As Integer = 1
Dim kohta As Integer = alku
Do
MsgBox(taulu(kohta))
If kohta = loppu Then Exit Do
kohta = kohta + askel
If kohta = -1 Then kohta = UBound(taulu)
If kohta = UBound(taulu) + 1 Then kohta = 0
LoopAntti Laaksonen kirjoitti:
Vai oliko tarkoitus pyörähtää ympäri taulukon lopusta?
Kyllä. Samankaltaisen ratkaisun kehittelin itsekin, mutta ajattelin vaan, että olisiko siihen yksikertaisempaa alla olevan kaltaista ratkaisua...
For Each Item In Taulu StartItem = 3 Next
NO MORJENS taas novice!
tässä pikku funkkari...
Function ListFromItem(_Array As Object, sItem As Integer) As Collection
Dim _Collection As New Collection
If sItem > 0 Then
For i As Integer = sItem To _Array.GetUpperBound(0)
_Collection.Add(_Array(i))
Next
For i As Integer = _Array.GetLowerBound(0) To sItem -1
_Collection.Add(_Array(i))
Next
Else
For i As Integer = _Array.GetLowerBound(0) _
To _Array.GetUpperBound(0)
_Collection.Add(_Array(i))
Next
End If
Return _Collection: _Collection = Nothing
End Function
Sub Button1Click(sender As Object, e As EventArgs)
'Testi
Dim Taulukko(5) As Object
For i As Integer = Taulukko.GetLowerBound(0) _
To Taulukko.GetUpperBound(0)
Taulukko(i) = i
Next
For Each Item In ListFromItem(Taulukko, 2)
MsgBox(item.ToString)
Next
End SubAihe on jo aika vanha, joten et voi enää vastata siihen.