Zum Inhalt springen

VB: Array... was mach ich falsch?


ChrisDaHub

Empfohlene Beiträge

Hi,

hier eine Übung, mit der ich mir die Funktionsweise von Arrays etwas näher bringen wollte... Jetzt pfunzt das Teil net... Was mach ich da falsch???:

QUELLTEXT:

Option Explicit

Dim Eingabe() As Variant

Dim i, iz As Integer

Dim Text As String

Private Sub Command1_Click()

If Not Text1.Text = "" Then

Eingabe(i) = Text1.Text

i = i + 1

Else

For iz = 0 To i Step 1

Text = Text & iz & ": " & Eingabe(iz) & " - "

Next iz

MsgBox Text

End If

End Sub

Private Sub Form_Load()

i = 0

End Sub

Wäre echt nett, wenn Ihr mir helfen könntet.

Danke,

Chris;-)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du solltest es mal so versuchen:

Option Explicit

Dim Eingabe() As Variant

Dim i, iz As Integer

Dim Text As String

Private Sub Command1_Click()

If Not Text1.Text = "" Then

ReDim Eingabe(i)

Eingabe(i) = Text1.Text

i = i + 1

Else

For iz = 0 To i Step 1

Text = Text & iz & ": " & Eingabe(iz) & " - "

Next iz

MsgBox Text

End If

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

danke für die schnelle Reaktion.... Leider bringt mir VB jetzt eine Fehlermeldung..

"Typen unverträglich"... genau an der Stelle, an der ich neu dimensioniere...

Option Explicit

Dim Eingabe As Variant

Dim i, iz As Integer

Dim Text As String

Private Sub Command1_Click()

If Not Text1.Text = "" Then

i = i + 1

ReDim Preserve Eingabe(i) As Variant

Eingabe(i) = Text1.Text

Else

For iz = 0 To i Step 1

Text = Text & iz & ": " & Eingabe(iz) & " - "

Next iz

MsgBox Text

End If

End Sub

Private Sub Form_Load()

i = 0

End Sub

HELP!

THX!

Chris;-)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by ChrisDaHub

Dim Eingabe As Variant

...

ReDim Preserve Eingabe(i) As Variant

...

Das liegt daran das Du Eingabe am Anfang als normale Variable deklarierst und später redimensionieren willst, so müßte es dann gehen:

Dim Eingabe() As Variant

gruß

Christian

Link zu diesem Kommentar
Auf anderen Seiten teilen

globale definition :

Dim Eingabe() As Variant

und das später in deiner sub :

ReDim Preserve Eingabe(i+1)

weil das ist hier ist nicht sauber :

i = i + 1

ReDim Preserve Eingabe(i)

ein array muß immer bei index 0 anfangen und hier bist du schon am anfang bei dem index 1

gruß

MadCro

:marine

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo



Option Explicit

Dim aryEingabe() as String ' Variant verschwendet viel Speicher und ist nicht nötig

Dim strText as String 

Dim intIndex as Integer

Dim intCount as Integer 


Private Sub cmdOk_Click()


         If txtText1.Text <> "" then

                   aryEingabe(intIndex)=txtText1.Text

                   intIndex=intIndex+1

                   Redim Preserve aryEingabe(intIndex)

         Else

                   For intCount = 0 to intIndex ' oder Ubound(aryEingabe)

                            strText = strText & intIndex & ":" & aryEingabe(intCount)

                   Next intCount

                   MsgBox strText

        End If

End sub


Private Sub frmText_Load

         intIndex = 0

         Redim aryEingabe(0)

End Sub


Ciao

Link zu diesem Kommentar
Auf anderen Seiten teilen

hi,

 

Option Explicit

Option Base 0

Private aryEingabe() as String 


Private Sub cmdOk_Click()

Dim strText as String 

Dim intCount as Integer 

Dim intIndex as Integer


    intIndex = UBound(aryEingabe)


    If txtText1.Text <> "" then

        intIndex = intIndex + 1

        Redim Preserve aryEingabe(intIndex)

        aryEingabe(intIndex - 1)=txtText1.Text

    Else

        For intCount = LBound(aryEingabe) to Ubound(aryEingabe)

            strText = strText & "An Position " & CStr(intCount) & ": " & aryEingabe(intCount) & vbNewLine

        Next intCount

        MsgBox strText

    End If

End sub


imho ist fuer so etwas die collection schoener als ein array...

hoffe es hilft

Link zu diesem Kommentar
Auf anderen Seiten teilen


Option Explicit

Dim aryEingabe() As String  ' Variant verschwendet viel Speicher und ist nicht nötig

Dim strText As String

Dim intIndex As Integer

Dim intCount As Integer


Private Sub cmdOk_Click()


         If txtText1.Text <> "" Then

                   ReDim Preserve aryEingabe(intIndex)

                   aryEingabe(intIndex) = txtText1.Text

                   intIndex = intIndex + 1


         Else

                   For intCount = 0 To UBound(aryEingabe)

                            strText = strText & intCount & ":" & aryEingabe(intCount) & vbNewLine

                   Next intCount

                   MsgBox strText

        End If

End Sub


Private Sub frmText_Initialize()

         intIndex = 0

End Sub



Link zu diesem Kommentar
Auf anderen Seiten teilen

natürlich sollte die Variable intIndex auch einen sinnvollen wert haben.

Also wen er beim Zuweisen in das Array größer ist als Das Array dimensioniert wurde ist es ganz normal das man eine Fehlermeldung bekommt mit Index ausserhalb ....

Also am besten ist du weist wie groß das Array sein soll und machst

Dim arrTest (5) as string

oder wenn du es nicht wissen solltest dann mit

dim arrTest() as string

dann im Quellcode irgendwo vor dem füllen des Arrays:

intIndex = 12

redim arrTest(intIndex)

und dann kannst du mit der 0 - intIndex-1 in das Array Werte eintragen.

Gruß

Guido

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...