Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Tekstikenttien helpompi vertailu?

Toitsu [24.05.2006 13:07:31]

#

Miten voisi helpommin vertailla n. 20 tekstikentän sisällön toisiinsa (eli etsiä samoja sisältöjä), kuin tekemällä X riviä pitkän ja paljon sisäkkäisiä sisältävän if lausekkeen?

BadSource [24.05.2006 13:16:37]

#

Jos tekstikenttäsi on nimetty yksitellen, niin ei ole muuta vaihtoehtoa kuin miljoona if-tarkistusta. Laita TextBoxisi ControlArrayhin (kaikilla sama nimi, Indexi vain kasvaa aina yhdellä), niin voit käydä nuo läpi kahdella sisäkkäisella silmukalla.

Dim i As Integer
Dim j As Integer
'Indexi alkaa nollasta. Ubound kertoo viimeisen TextBoxin Indexin
For i = 0 To Me.Text1.UBound - 1 'silmukka vain toiseksi viimeiseen boxiin asti, sillä...
    For j = i + 1 To Me.Text1.UBound '...tämä silmukka kattaa viimeisen boxin
        If Me.Text1(i).Text = Me.Text1(j).Text Then Debug.Print i & " ja " & j & " ovat samat"
    Next j
Next i

Toitsu [25.05.2006 08:16:36]

#

Kiitos. Tällä voin kattaa toisen "osaston" mutta toisessa on eri nimet joka boxilla.

sqwiik [25.05.2006 16:45:38]

#

Siinä toisessa voisi 'feikata' nämä boksit taulukoksi. Alla hivenen esimerkkiä tällaisesta toiminnasta (tarvitsee 2 aliohjelmaa):

Function GetVal(id As Integer) As String
  Select Case id
    Case 0: GetVal = text1.Text
    Case 1: GetVal = text2.Text
    ... jne kaikki textboksit
  End Select
End Function

' Tällä voi sitten muokata jos haluaa.
Sub SetVal(id As Integer, n As String)
  Select Case id
    Case 0: text1.Text = n
    Case 1: text2.Text = n
    ... jne kaikki textboksit
  End Select
End Sub

Nyt voit viitata tämänkaltaisten aliohjelmien kautta textbokseihin ikäänkuin taulukkoon ^_- (Seuraava koodi lainausta BadSourcelta)

Dim i As Integer
Dim j As Integer
Const LootaMaara = 10 ' Textboksien määrä, Ubound ei nyt toimi
For i = 0 To LootaMaara - 1
    For j = i + 1 To LootaMaara
        If GetVal(i) = GetVal(j) Then Debug.Print i & " ja " & j & " ovat samat"
    Next j
Next i

Toitsu [26.05.2006 07:05:29]

#

Hitsivitsi, toi sqwiik:in idea taitaa toimia kuin junan vessa.. Kiitos!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta