ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 23.02.2000

Diese Seite wurde zuletzt aktualisiert am 23.02.2000
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Teile-Haberschaft

Zurück...


Anzeige

(-hg) mailto:hg_split@aboutvb.de

Die Split-Funktion zur Zerlegung eines Strings steht leider erst ab Visual Basic 6 zur Verfügung. Die hier vorgestellte Funktion Split dient als Ersatz zur Verwendung in Visual Basic 5 und verfügt über die gleichen Parameter und das gleiche Verhalten wie die VB 6-Version.

Sie übergeben ihr im Parameter Expression den zu zerlegenden Text-String und im Parameter Delimiter den Trenn-String. Der Trenn-String ist die Zeichenkette, die die Trennung zwischen den Bestandteilen des Text-Strings darstellt. Sie kann beliebiger Länge sein. Voreingestellt ist ein Leerzeichen.

Der optionale Parameter Limit gibt an, in wie viele Teile der übergebene Text-String maximal zerlegt werden soll. Wird er weggelassen (Voreinstellung = -1), wird der Text-String vollständig zerlegt. Anderenfalls werden nur entsprechend viele Teile zurückgegeben, wobei das letzte Element des zurückgegebenen Arrays den Rest des nicht weiter zerlegten Strings enthält. Beispiel:

Dim Text As String
Dim Parts As Variant
Dim Part As Variant

Text = "a b c d e f"
Parts = Split(Text, , 3)
For Each Part In Parts
  Debug.Print Part
Next

ergibt:

a
b
c d e f

Wird als Limit der Wert 0 übergeben, schafft es die originale Split-Funktion in VB 6 auf obskure Weise, ein "Array" zurückzugeben, das 0 als Untergrenze und -1 als Obergrenze zu haben scheint. Da wir diesen "Effekt" nicht nachbilden können, gibt der Nachbau der Split-Funktion ein Array mit -1 als Untergrenze als auch als Obergrenze zurück. Sie können daher sowohl in VB 5 als auch in VB 6 prüfen, ob die Obergrenze -1 ist, und somit feststellen, ob das zurückgegebene Array überhaupt regulär Werte enthält.

Im optionalen Parameter Compare geben Sie den Vergleichsmodus zur Suche nach den Trenn-Strings an.

Zur Verbesserung der Geschwindigkeit wird das in der Funktion dimensionierte Array nicht für jede Fundstelle separat um 1 Element vergrößert, sondern vorausschauend in größeren Schritten. Die Schrittweite können Sie im optionalen Parameter PreDim angeben (Voreinstellung 20). Vor der Zuweisung des Arrays als Rückgabewert der Funktion wird es gegebenenfalls auf die tatsächliche Anzahl der Elemente zurück "gestutzt". Dieser Parameter existiert nicht bei der Split-Funktion in VB 6.

Public Function Split(Expression As String, _
 Optional Delimiter As String = " ", _
 Optional ByVal Limit As Long = -1, _
 Optional ByVal Compare As VbCompareMethod = vbBinaryCompare, _
 Optional ByVal PreDim As Long = 20) As Variant

  Dim nPos As Long
  Dim nStart As Long
  Dim nDelimiterLen As Long
  Dim nParts() As String
  Dim nPartsCount As Long
  Dim nLimit As Long
  
  Select Case Limit
    Case 0
      ReDim nParts(-1 To -1)
      Split = nParts
      Exit Function
    Case Is > 0
      nLimit = Limit - 1
    Case Else
      nLimit = PreDim - 1
  End Select
  ReDim nParts(0 To nLimit)
  nDelimiterLen = Len(Delimiter)
  nStart = 1
  Do
    nPos = InStr(nStart, Expression, Delimiter, Compare)
    If nPos Then
      nParts(nPartsCount) = Mid$(Expression, nStart, nPos - nStart)
      nStart = nPos + nDelimiterLen
      nPartsCount = nPartsCount + 1
      If nPartsCount > UBound(nParts) Then
        If Limit = -1 Then
          nLimit = nLimit + PreDim
        End If
        ReDim Preserve nParts(0 To UBound(nParts) + nLimit)
      End If
    Else
      nParts(nPartsCount) = Mid$(Expression, nStart)
      Exit Do
    End If
    If nPartsCount >= nLimit Then
      nParts(nPartsCount) = Mid$(Expression, nStart)
      Exit Do
    End If
  Loop
  If UBound(nParts) > nPartsCount Then
    ReDim Preserve nParts(0 To nPartsCount)
  End If
  Split = nParts
End Function

Die Funktion Split dient in Visual Basic 5 als Ersatz für die in Visual Basic 6 vorhandene Split-Funktion

Alternativ zur Zerlegung eines Text-Strings in ein Array wird von der auch in VB 6 nicht vorhandenen Funktion SplitToCollection eine Collection anstelle des Arrays zurückgegeben. Wird ihr als Limit der Wert 0 übergeben, erhalten Sie eine leere Collection zurück. Ansonsten haben die Parameter die gleiche Funktion und Wirkung.

Public Function SplitToCollection(Expression As String, _
 Optional Delimiter As String = " ", _
 Optional ByVal Limit As Long = -1, _
 Optional ByVal Compare As VbCompareMethod = vbBinaryCompare) _
 As Collection

  Dim nPos As Long
  Dim nStart As Long
  Dim nDelimiterLen As Long
  Dim nParts As Collection
  Dim nPartsCount As Long
  Dim nLimit As Long
  
  Set nParts = New Collection
  If Limit = 0 Then
    Set SplitToCollection = nParts
    Exit Function
  End If
  nLimit = Limit - 1
  nDelimiterLen = Len(Delimiter)
  nStart = 1
  With nParts
    Do
      nPos = InStr(nStart, Expression, Delimiter, Compare)
      If nPos Then
        nParts.Add Mid$(Expression, nStart, nPos - nStart)
        nStart = nPos + nDelimiterLen
      Else
        nParts.Add Mid$(Expression, nStart)
        Exit Do
      End If
      Select Case nLimit
        Case Is < 0
        Case Is <= .Count
          nParts.Add Mid$(Expression, nStart)
          Exit Do
      End Select
    Loop
  End With
  Set SplitToCollection = nParts
End Function

Auch in Visual Basic 6 nicht vorhanden: Die Funktion SplitToCollection zerlegt einen String und gibt eine Collection anstelle eines Arrays zurück


Modul modSplit (modSplit.bas - ca. 3 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikel

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche



Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer