Array in MsgBox ausgeben

Hallo,

ich habe folgendes Problem.
Ich lese aus einer Textdatei Zeilenweise etwas ein. Das eingelesene soll gsplittet werden, nach leerzeichen. Danach möchte ich aber alle teile ausgegeben haben , so dass ich die Stücke der Zeile in einer seperaten MsgBox ansehen kann.

Wäre super, wenn ihr mir helfen könntet!

Gruß
André

Hi,

Nichts einfacher als das:

Du erzeugst einen zusätzlichen String, dann öffnest du die Datei und liest den ganzen Schremmel zeichenweise (Zum Beispiel in den String ‚Wort‘) ein, bis ein Leerzeichen kommt. Wenn ein Leerzeichen kommt:

String = String & Wort & VbNewLine

Wenn du ‚msgbox String‘ angibst zeigt er alle Werte untereinander.

PS: Um die einzelnen Wörter zusammenzubauen., musst du natürlich bei jedem Buchstaben der eingelesen wurde ‚Wort = Wort & Buchstabe‘.

Kleines Beispiel:

Dim GetFile
Open File For Input As #1
Line Input #1, GetFile
Dim Wort
Dim String
Dim i
For i = 1 To Len(GetFile)

If Mid$(GetFile$, i) Chr(*) Then ‚‘’’'Ups, habe glatt den Ascii Code für Sapce vergessen
Wort = Wort & Mid$(Getfile$, i)
Else
String = String & Wort & VbNewLine
End If

Next

msgbox String

End Sub

*** Erklärungen zur Mid$ und Len$ Findest du in der Basic Hilfe; dort kann ich dir zu dem Thema auch noch Left$ wärmstens empfehlen.

Gruß
Alexander

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

Nichts einfacher als das:

Du erzeugst einen zusätzlichen String, dann öffnest du die
Datei und liest den ganzen Schremmel zeichenweise (Zum
Beispiel in den String ‚Wort‘) ein, bis ein Leerzeichen kommt.
Wenn ein Leerzeichen kommt:

String = String & Wort & VbNewLine

Wenn du ‚msgbox String‘ angibst zeigt er alle Werte
untereinander.

PS: Um die einzelnen Wörter zusammenzubauen., musst du
natürlich bei jedem Buchstaben der eingelesen wurde ‚Wort =
Wort & Buchstabe‘.

Kleines Beispiel:

Dim GetFile
Open File For Input As #1
Line Input #1, GetFile
Dim Wort
Dim String
Dim i
For i = 1 To Len(GetFile)

If Mid$(GetFile$, i) Chr(*) Then ‚‘’’'Ups, habe glatt
den Ascii Code für Sapce vergessen
Wort = Wort & Mid$(Getfile$, i)
Else
String = String & Wort & VbNewLine
End If

Next

msgbox String

End Sub

*** Erklärungen zur Mid$ und Len$ Findest du in der Basic
Hilfe; dort kann ich dir zu dem Thema auch noch Left$
wärmstens empfehlen.

Gruß
Alexander

Hallo,

ich habe folgendes Problem.
Ich lese aus einer Textdatei Zeilenweise etwas ein. Das
eingelesene soll gsplittet werden, nach leerzeichen. Danach
möchte ich aber alle teile ausgegeben haben , so dass ich die
Stücke der Zeile in einer seperaten MsgBox ansehen kann.

Wäre super, wenn ihr mir helfen könntet!

Gruß
André

Jetzt habe ich ein neues Problem, denn ich dachte die ganze Zeit, dass es bei mir nichts mit der Ausgabe zu tun hat, sondern es bei mir mit dem splitten. Meine Zeile, die gesplittet werden soll ist durch Leerzeichen getrennt. Jedoch immer unterschiedlich, mal mit einem, mal mit drei oder vier. Wie kann ich jetzt in VB sagen, dass er mir die Zeile splittet an Hand der Leerzeichen, egal wieviele es sind.
Gibt es da so etwas wie whitespace in VB und wenn, wie funktioniert es???

Ich bin bald am verrückt werden!!!

Gruß
André
(der, der in VB versagt)

Hi,
am besten liest du die Datei komplett oder Zeilenweise ein und Splittest dann mit Split(Zeile," "), damit erhälst du ein Array aus allen Einträgen.

Ralph

Genau das funktiert nicht, denn VB zählt anscheinend die leerzeichen, nach denen gesplittet werden soll. Wenn ich es dann ausgeben lassen will kommt die Meldung „Index außerhalb des gültigen bereichs“ gibt es da nicht etwas, was mir nach beliebig vielen Leerzeichen sucht.

Beispiel:

324321 23 2323.23.232.23. dfkjlsfdjl dfjkldfskj
(1 LZ) (3 LZ) (5 LZ)
Immer da, wo sich Leerzeichen befinden, soll gesplittet werden!

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Text splitten mit Variabler Leerzeichenanzahl
Salü André

Jetzt habe ich ein neues Problem, denn ich dachte die ganze
Zeit, dass es bei mir nichts mit der Ausgabe zu tun hat,
sondern es bei mir mit dem splitten. Meine Zeile, die
gesplittet werden soll ist durch Leerzeichen getrennt. Jedoch
immer unterschiedlich, mal mit einem, mal mit drei oder vier.
Wie kann ich jetzt in VB sagen, dass er mir die Zeile splittet
an Hand der Leerzeichen, egal wieviele es sind.

Probier einmal mit der folgenden Funktion, die ich jetzt gerade geschrieben habe, deine Zeile in ein Array zu splitten:

Function Teile(txt As String, delim As String, a() As String) As Integer

 ' Diese Funktion zerteilt einen Text nach dem übergebenen Delimiter und gibt die einzelnen Teile in ein Array.
 ' Mehrere Dilimiter unmittelbar hintereinander werden als ein einziger behandelt.
 ' Rückgabewert = Anzahl der ins Array geschriebenen Elemente

 ' Parameter: txt = Text, der zerteilt werden soll
 ' delim = Delimiter
 ' a() = Array, in das die einzelnen Teile geschrieben werden

 Dim z As Integer, i As Integer
 Dim x As String
 ReDim a(0)

 z = 0
 i = 0

 Do While z delim Then
 ' nächstes Array-Element anlegen
 i = i + 1
 ReDim Preserve a(i)
 End If
 Else
 a(i) = a(i) + x ' Zeichen in Array schreiben
 End If
 Loop

 Teile = i ' Anzahl der Array-Elemente zurück liefern

End Function

Die Funktion sollte eigentlich selbsterklärend sein. Falls es trotzdem noch Fragen gibt, stehe ich gerne zur Verfügung.

Ich hab nur quick und dirty getestet. Wenn das erste oder letzte Zeichen des Textes ein Delimiter sind, wird es wahrscheinlich nicht funktionieren (müsste man noch in der Funktion abfangen).

MfG
Roland

Hi,
ich weiss nicht was du meinst, wenn ich auf den von dir angegebenen Satz Split(satz," ") anwende, liefert der mir die einzelnen Bestandteile zurück. Auf diese kann ich jetzt im Array zugreifen oder diese ausgeben lassen. (Siehe quelltext unten)

Ralph

Private Sub Command1\_Click()
Dim a() As String
Dim i As Integer
a = Split("324321 23 2323.23.232.23. dfkjlsfdjl dfjkldfskj", " ")
Dim s As String
s = ""
For i = LBound(a) To UBound(a)
s = s & a(i) & vbCrLf
Next i
MsgBox s
End Sub

Danke
irgendwie bekomme ich das anscheinend nicht so hin, denn er gibt mir das nicht so aus, wie ich das will. Wenn ich das so eingebe, dann spuckt er mir dass in dieser Form aus!

32142432
fsddsf fdafsd sdaf sdafsf dsfsafas asfsd dsfsdfsd fdsf fdsaf

Gruß
André

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

So ganz hab ich zwar dein Problem nicht verstanden, aber:

 Private Sub Command1\_Click()
 Dim a() As String
 Dim i As Long
 a = Split("324321 23 2323.23.232.23. dfkjlsfdjl dfjkldfskj", " ")
 Dim s As String
 s = ""
 For i = LBound(a) To UBound(a)
 if Len(a(i))\> 0 then 
 s = s & a(i) & vbCrLf
 end if
 Next i
 MsgBox s
 End Sub

ignoriert die mehrfachen Leerzeichen…

Gruß aus dem Norden
Reinhard Kraasch