Hilfe für Schularbeit

SGT-Team

Grünschnabel
Wir haben bei der Erstellung unseres Programms ein "kleines" Problem.
wir wollen bis zu einem Strichpunkt(Semikolon) den Text herausfiltern und ihn in eine Combobox einfügen. den Teil danach wieder bis zum nächsten semikolon und das die ganze zeile entlang. in der nächsten Zeile dasselbe nur sollen die Teile bis zu dem Strichpunkt wie vorher in die selbe Combobox wie vorher. Wie macht man das?
Danke im voraus
 
Moin Zusammen

Also wenn ich das korrekt verstehe habt Ihr einen String "aaaa;bbbbb;ccccc;ddddd;eeeee" und den wollt ihr zerlegen.

Ansatz 1:
Code:
    Dim szSource            As String
    Dim szDest()            As String
    Dim nCounter            As Integer

    szSource = "aaa;bbb;ccc;ddd;eee;fff"
    szDest = Split(szSource, ";")
    For nCounter = LBound(szDest) To UBound(szDest)
        Combo1.AddItem szDest(nCounter)
    Next nCounter

Ansatz 2:
Code:
    Dim szSource            As String

    szSource = "aaa;bbb;ccc;ddd;eee;fff"
    While InStr(szSource, ";") > 0
        Combo1.AddItem "Instr: " & Left$(szSource, InStr(szSource, ";") - 1)
        szSource = Mid$(szSource, InStr(szSource, ";") + 1)
    Wend
    Combo1.AddItem szSource

hope it helps
Das Orakel
 
Wir wollen folgende Datei öffnen und zerteilen. wir haben das mit dem vorher angegebenen versucht hat aber nicht funktioniert:
Dim X$
Dim szSource As String
X$ = "H:\Programmierung.Wetter.txt"

Open X$ For Input As #1


szSource = "*;*;*;*;*;*;*;*;*;*;*"
While InStr(szSource, ";") > 0
Combo1.AddItem "Instr: " & Left$(szSource, InStr(szSource, ";") - 1)
szSource = Mid$(szSource, InStr(szSource, ";") + 1)
Wend
Combo1.AddItem szSource
hier kam als fehlermeldung: Laufzeitfehler 053
das andere funktionierte gar nicht. da stand: Split ist nicht definiert
 
Wenn die Split-Funktion nicht definiert ist, dann benutzt du womöglich VB5 oder eine noch ältere Version. Denn die Funktion gibt es glaube ich erst ab VB6.

Aber du kannst es ja auch ohne Split-Funktion lösen, einfach den zweiten Ansatz von Orakel richtig in dein Problem einbringen:

Code:
Dim strFilename As String
Dim Nr As Long
Dim tmpInput As String

strFilename = "H:\Programmierung.Wetter.txt"
Nr = FreeFile

Combo1.Clear

Open strFilename For Input As #Nr
   Input #Nr, tmpInput
   
   While InStr(tmpInput, ";") > 0
      Combo1.AddItem Left$(tmpInput, InStr(tmpInput, ";") - 1)
      tmpInput = Mid$(tmpInput, InStr(tmpInput, ";") + 1)
   Wend

   If tmpInput <> "" Then
      Combo1.AddItem tmpInput
   End If
Close #Nr

mfG,
MAN
 
Zuletzt bearbeitet:
so funktioniert das jetzt. Jetzt stehen wir vor dem nächsten problem: wir wollen aus allen zeilen zum beispiel alles nach dem dritten Semikolon in eine Combobox anzeigen. Das ganze soll abhängig vom Datum und der Zeit sein, die man vorher eingibt.(zum Beispiel vom 12.03.05 um 20:00 Uhr bis 10.05.05 um 23:00 Uhr). wir haben insgesamt 8 comboboxen und in jeder soll etwas anderes stehen.
Ausschnitt aus der Datei die wir einlesen wollen:
01.01.2005 00:06 4,3 92 0 8,5 160 22,5 1017 19,6 31
die 3te angabe(4,3) soll in die erste Combobox. die 4te Angabe in die zweite usw.
 
Nur mal so schnell dahingecodet:
Code:
Dim strFilename As String
Dim Nr As Integer
Dim tmpInput As String
Dim szRows()As String
Dim szColumn() As String

strFilename = "H:\Programmierung.Wetter.txt"
Nr = FreeFile
tmpInput = Space(FileLen(strFilename))

Combo1.Clear

Open strFilename For Binary As #Nr
 Get #Nr, , tmpInput
Close #Nr

szRows = Split(tmpInput, vbNewLine)
For cnr = 0 to Ubound(szRows)
 szColumn = Split(szRows(cnr), ";")
 
 'Entweder per Schleife, wenn deine Combobox eine Elementefeld ist
 'For cnc = 2 To Ubound(szColumn)
 ' Combo1(cnc - 2).AddItem szColumn(cnc)
 'Next cnc

 'Oder per Hand; hier z.B. 9 Elemente
 Combo1.AddItem szColumn(2)
 Combo2.AddItem szColumn(3)
 Combo3.AddItem szColumn(4)
 Combo4.AddItem szColumn(5)
 Combo5.AddItem szColumn(6)
 Combo6.AddItem szColumn(7)
 Combo7.AddItem szColumn(8)
 Combo8.AddItem szColumn(9)
 Combo9.AddItem szColumn(10)
Next cnr

Wenns nicht passt bitte um Rückmeldung, wenns passt würd ich mich über Lob freuen. Konnte es nicht auf Syntaxfehler testen, da hier kein VB.


Der Doc!
 
Falls diese Zeile

Code:
szColumn = Split(szRows(cnr), ";")

mit Semikolon nicht gehen sollte, müßte das dann so lauten:

Code:
szColumn = Split(szRows(cnr), " ")

Bei deinem Problem schreibst du nämlich durch Semikolon getrennt, aber dein Beispieltext ist mit Leerzeichen getrennt.

Ok, vielleicht meinst du aber auch Semikolon, dann überles das hier einfach ;)


mfG,
MAN
 
da wir nur Visual Basic 5.0 verwenden können, können wir die splitfunktion nicht verwenden. Gibt es da zu dem selben Abschnitt eine andere Möglichkeit.

Danke für die bisherige Hilfe
 
Wirf einen Blick auf Ansatz 2 von Orakel (2. Posting).
So kannst du dir ganz einfach deine eigene Splitfunktion schreiben ...
 
Zurück