Rubrik: Variablen/Strings · String-Operationen | VB-Versionen: VB4, VB5, VB6 | 27.02.02 |
Split-Funktion für VB4/5 Seit VB6 fast unabkömmlich - unter VB4/5 leider nicht vorhanden - die Split-Funktion. Hier der VB6-Ersatz. | ||
Autor: Tilman Weiers | Bewertung: | Views: 24.126 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Eine der meist genutzten Neuerungen in Visual Basic 6 (gegenüber VB4 oder VB5) ist zweifelsohne die Split-Funktion. Mit dieser Funktion lässt sich ein Gesamtstring anhand eines bestimmten Trennzeichen in ein Array von Teilstrings zerlegen.
Anwendungsbeispiele gibt es hierfür en-masse. So lässt sich eine "MutliLine"-Textbox mit einem Kommando in ihre Einzelzeilen zerlegen:
sLines = Split(txtMutliline.Text, vbCrLf)
Ein weiteres Beispiel ist das Zerlegen einer Datensatz-Zeile in ihre einzelnen Datenfelder:
txtData = "Name;Vorname;Strasse;PLZ;Ort" sField = Split(txtData, ";")
Auch in vielen unseren Tipps, Workshops und sonstigen Codefragmenten setzen wir immer wieder Split-Funktion ein. Und Fragen, wie "Bei mir gibt es die Split-Funktion nicht. Was kann ich tun?" bleiben demnach nicht aus.
Deshalb möchten wir Ihnen heute die Ersatz-Funktion Split_String vorstellen.
Die Funktion erwartet im ersten Parameter den Gesamtstring und im zweiten Parameter das Trennzeichen. Die Angabe des Trennzeichens ist optional. Wird nichts angegeben, wird das Leerzeichen als Trennzeichen angenommen. Als Rückgabewert erhalten Sie ein nullbasiertes Array, welches die Teilstrings enthält.
' Zerlegt ein String anhand eines angegebenen ' Trennzeichens und gibt die einzelne Teilstrings ' als nullbasierendes Array zurück ' ' Wird kein Trennzeichen angegeben, wird als ' Trennzeichen das Leerzeichen angenommen Public Function Split_String(ByVal inp_str As String, _ Optional sep As Variant) As Variant Dim i As Integer Dim j As Integer Dim ret() As Variant ' kein Trennzeiche? If IsMissing(sep) Then sep = " " j = 0 Do i = InStr(inp_str, sep) If i > 0 Then ReDim Preserve ret(j) ret(j) = Left$(inp_str, i - 1) inp_str = Mid$(inp_str, i + Len(sep)) j = j + 1 End If Loop Until i < 1 ReDim Preserve ret(j) ret(j) = inp_str Split_String = ret End Function