Kontakt
DSVGO
Dim s As String Dim sa(1 To 4) As String sa(1) = "Hier" sa(2) = "ist" sa(3) = "ein" sa(4) = "Text." s = Join(sa) MsgBox s 'ergibt "Hier ist ein Text."
Public Function Join( _ ByRef sArray() As String, _ Optional ByRef Delimiter As String = " " _ ) As String Dim i As Long For i = LBound(sArray) To UBound(sArray) - 1 Join = Join & sArray(i) & Delimiter Next i Join = Join & sArray(UBound(sArray)) End FunctionJedoch ist die Laufzeit dieser Routine wegen der vielen String-Konkatenationen nicht akzeptabel (s.a. Strings schnell aneinander hängen).
Public Function Join( _ ByRef sArray() As String, _ Optional ByRef Delimiter As String = " " _ ) As String Dim JoinLen As Long Dim JoinPtr As Long Dim DelimiterLen As Long Dim LB As Long Dim UB As Long Dim i As Long 'Gesamtlänge aller Strings bestimmen: LB = LBound(sArray) UB = UBound(sArray) For i = LB To UB JoinLen = JoinLen + LenB(sArray(i)) Next i JoinPtr = 1 DelimiterLen = LenB(Delimiter) If DelimiterLen Then 'Ergebnis-String anlegen: JoinLen = JoinLen + DelimiterLen * (UB - LB) Join = Space$(JoinLen \ 2) 'Kopieren: For i = LB To UB - 1 MidB$(Join, JoinPtr) = sArray(i) JoinPtr = JoinPtr + LenB(sArray(i)) MidB$(Join, JoinPtr) = Delimiter JoinPtr = JoinPtr + DelimiterLen Next i MidB$(Join, JoinPtr) = sArray(i) Else 'Ergebnis-String anlegen: Join = Space$(JoinLen \ 2) 'Kopieren: For i = LB To UB MidB$(Join, JoinPtr) = sArray(i) JoinPtr = JoinPtr + LenB(sArray(i)) Next i End If 'DelimiterLen End Function
© Jost Schwider, 29.01.2001-29.01.2001 - http://vb-tec.de/strjoin.htm