[Code] [VB6] Do Schleife und txt

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von skulldred, 13. August 2009 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 13. August 2009
    [VB6] Do Schleife und txt

    Hallo zusammen

    Ich habe folgendes Problem:

    Code:
    Dim List1 As Integer
    Dim List1Item As String
    Dim List2 As Integer
    Dim List2Item As String
    
    List1 = FreeFile
    Open App.Path & "\list1.dat" For Input As #List1
     Do While Not EOF(List1)
     Input #List1, List1Item
     
     List2 = FreeFile
     Open App.Path & "\list2.dat" For Input As #List2
     Do While Not EOF(List2)
     Input #List2, List2Item
     
     If InStr(1, UCase(List2Item), UCase(List1Item)) = 1 Then
     MsgBox ("found")
     End If
    
     Loop
     Close List2
    
     Loop
    Close List1
    
    
    List1 Sieht so aus:
    Item1
    Item2
    Item3
    usw.

    List2 Sieht so aus:

    Item1, item1.1, item1.1.1
    item2, item2.2, item2.2.2
    usw.

    wenn die suche nun mit dem oben gennanten Code startet passiert folgendes (als beispiel suchen wir item2):

    InStr(1, UCase(Item2), UCase(Item1)) dann
    InStr(1, UCase(Item2), UCase(Item1.1)) dann
    InStr(1, UCase(Item2), UCase(Item1.1.1))

    So, nun ist die Fragen: Wie kann ich es anstellen, dass er nur item1 dann item2 usw. sucht und die anderen felder mal weg lässt?

    Wenn das Resultat = true ist sollten item2, item2.2 und item 2.2.2 je in eine Variable geschrieben werden...

    Muss ich dazu ein Array erstellen? Irgentwie geht mir das mit den Arrays noch net ganz in den Kopf...

    Danke schon mal für die Hilfe und hoffe man versteht was ich meine ^^
     
  2. 13. August 2009
    AW: [VB6] Do Schleife und txt

    Also wenn du deine Items in Array schreiben möchtest, kannst du dir ein Array vor der Do Schleife Deklarieren, mit deinem Beliebigen Typ.

    z.B:

    Code:
    Dim IntegerArray() as Integer
    
    so nun kannste einfach sagen wenn deine Aussage = True ist und er reinhüpft,
    Code:
    Redim Preserve IntegerArray(i)
    
    i erhöhst du halt jedesmal wenn er sagt Aussage = True

    Code:
     If InStr(1, UCase(List2Item), UCase(List1Item)) = 1 Then
     i = i+1
     Redim Preserve IntegerArray(i)
     IntegerArray(i) = deine Variable
     End If
    
    nun kannste dir des Array beliebig groß Stocken, und du kannst deine Items/Werte reinschreiben
    so hoffe mal dein Problem mit den Arrays ist geklärt
    und dein i legst du einfach auch vor der schleife an mit:
    Code:
    Dim i as Integer = 0
    
    mfg

    edit:

    falls noch fragen sind einfach fragen xD

    btw.
    Redim Preserve ist dafür da, dass deine Alten Daten in deinem Array erhalten bleiben,
    bei nur einem Redim gingen sie Verloren.
     
  3. 13. August 2009
    AW: [VB6] Do Schleife und txt

    Also das mit dem Array hab ich jetzt zumindest mal kapiert! Ist ja eigentlich keine Raktenenbauanleitung, wenn es denn jemand richtig rüber bringt Coole Erklärung und das um diese Zeit. Den Rest werd ich morgen resp. später anschauen. Danke auf jeden Fall schon mal für die Erklärung.

    MfG SD
     
  4. 13. August 2009
    AW: [VB6] Do Schleife und txt

    So wollte das ganze nun in ein Modul packen, da ich es öfters brauche...

    Code:
    Public Function CreateArray(ArrayName As String, Spalte As Integer, SpaltenAnzahl As Integer, Sourcefile As String)
    
    Dim ArrayName As String
    Dim source As Integer
    Dim line As String
    Dim apps As Integer
    Dim line As String
    Dim count As Integer
    
    source = FreeFile
    ArrayName = Array()
    
    count = 1
    ticker = Spalte
    
    Open Sourcefile For Input As #source
     Do While Not EOF(source)
     Input #source, line
     
     ReDim Preserve ArrayName(count)
     
     If ticker = count Then
     ArrayName(count) = line
     End If
     
     count = count + 1
     ticker = ticker + SpaltenAnzahl
     
     Loop
     
    Close Sourcefile
    
    End Function
    
    AberVB mag meinen ArrayNamen nicht... Es kommt immer die Meldung Argumenttyp ByRef nicht verträglich...

    Ist dieser Lösungsansatz überhaupt Sinnvoll?


    MfG SD
     
  5. 13. August 2009
    AW: [VB6] Do Schleife und txt

    Also ich sehe zwar grade kin ByRef irgendwo, vll kansntes mir posten,

    aber hier schonmal der erste Fehler:

    Code:
    ArrayName = Array()
    
    Du kannst keinem String einfach ein Array übergeben , des musste wenn dann mit .join machen, wenn du alle Daten mithinhängen möchtest.

    Wenn dann müsstest du das Array am anfang so Deklarieren:

    Code:
    Dim ArrayName() As String
    
    jetzt ist es erstmal "beliebig" groß.

    die zweite Frage is nun was ist dein Array()? überhaupt, wo hast du dies Deklariert, wo übergibst du ihm die Daten?, sehe das in deinem Code leider nicht.

    Code:
    Public Function CreateArray(ArrayName As String, Spalte As Integer, SpaltenAnzahl As Integer, Sourcefile As String)
    
    Dim ArrayName() As String
    Dim source As Integer
    Dim line As String
    Dim apps As Integer
    Dim line As String
    Dim count As Integer
    
    source = FreeFile
    //Welche Daten übergibst du hier?
    ArrayName = Array
    
    count = 1
    ticker = Spalte
    
    Open Sourcefile For Input As #source
     Do While Not EOF(source)
     Input #source, line
     
     ReDim Preserve ArrayName(count)
     
     If ticker = count Then
     ArrayName(count) = line
     End If
     
     count = count + 1
     ticker = ticker + SpaltenAnzahl
     
     Loop
     
    Close Sourcefile
    
    End Function
    
    Sodale =), hab deinen Code mal geschwind umgeschrieben, lesen dir einfach mal durch , kanns hier leider net testen, da ich kein VB auf dem Rechner hier draufhab, und auch nicht deine Daten, aber sollte so funktionieren.

    einem Array kannst du von nem anderen Array einfach die Daten übergeben indem du schreibst:
    Code:
    ArrayName = Array
    
    Hier noch kurz ein Beispiel zum Array wie du Datenübergeben kannst
    Code:
    
     Dim array1() As String
     //Hier gibst du dem Array2 gleich feste Werte und sagst ihm gleich wie groß es werden soll
     //in diesem Fall die größe 4
     Dim array2() As String = {1, 2, 3, 4}
     //Hier übergibts du dann die werte von array2 dem array1
     array1 = array2
    
    so hoffe mal das hilft dir hier weiter.

    mfg

    whenyou
     
  6. 14. August 2009
    AW: [VB6] Do Schleife und txt

    Habs nun hinbekommen, allerdings nicht als function... Das werd ich als nächstes machen.

    Code:
    
    Dim line As String
    Dim ArrayName() As String
    Dim source As Integer
    Dim count As Integer
    Dim x As Integer
    
    source = FreeFile
    count = 0
    ticker = 0
    x = 0
    
    Open App.Path & "\list2.dat" For Input As #source
     Do While Not EOF(source)
     Input #source, line
     
     ReDim Preserve ArrayName(x)
     
     If ticker = count Then
     ArrayName(x) = line
     ticker = ticker + 3
     x = x + 1
     End If
     
     count = count + 1
     
     Loop
     
    Close source
    
    MsgBox (ArrayName(0))
    MsgBox (ArrayName(1))
    
    So macht der Code genau was ich will... Danke an whenyouDIE =)
     
  7. 14. August 2009
    AW: [VB6] Do Schleife und txt

    und damit erledigt
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.