| Mon, 14 May 2001 23:32:10 +0200 skrev Tomas Christiansen blandt
 andet:
 
 > Tomas skrev:
 > > Hvis man har VB5 og man vil gøre det på en lidt "fræk" måde at kan
 > benytte:
 >
 > ...og Asbjørn Sloth Tønnesen skrev:
 > > Split() kom da først med i version 6
 >
 > Du har helt og holdent ret!
 > 5-tallet var en klar slåfejl fra min side - der skulle have stået 6.
 >
 > -------
 > Tomas
 >
 >
 >
 
 ....og - hvis ikke man har VB6 - så  kan følgende funktioner
 benyttes i f.eks. et bas-modul i VB5:
 
 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 Public Function Join(source() As String, Optional _
 sDelim As String = " ") As String
 Dim sOut As String, iC As Integer
 On Error GoTo errh:
 For iC = LBound(source) To UBound(source) - 1
 sOut = sOut & source(iC) & sDelim
 Next
 sOut = sOut & source(iC)
 Join = sOut
 Exit Function
 errh:
 Err.Raise Err.Number
 End Function
 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 Public Function Split(ByVal sIn As String, Optional sDelim
 As _
 String, Optional nLimit As Long = -1, Optional
 bCompare As _
 VbCompareMethod = vbBinaryCompare) As Variant
 Dim sRead As String, sOut() As String, nC As Integer
 If sDelim = "" Then
 Split = sIn
 End If
 sRead = ReadUntil(sIn, sDelim, bCompare)
 Do
 ReDim Preserve sOut(nC)
 sOut(nC) = sRead
 nC = nC + 1
 If nLimit <> -1 And nC >= nLimit Then Exit Do
 sRead = ReadUntil(sIn, sDelim)
 Loop While sRead <> ""
 ReDim Preserve sOut(nC)
 sOut(nC) = sIn
 Split = sOut
 End Function
 ''''''''''''''''''''''''
 Public Function ReadUntil(ByRef sIn As String, _
 sDelim As String, Optional bCompare As
 VbCompareMethod _
 = vbBinaryCompare) As String
 Dim nPos As String
 nPos = InStr(1, sIn, sDelim, bCompare)
 If nPos > 0 Then
 ReadUntil = Left(sIn, nPos - 1)
 sIn = Mid(sIn, nPos + Len(sDelim))
 End If
 End Function
 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 Public Function StrReverse(ByVal sIn As String) As String
 Dim nC As Integer, sOut As String
 For nC = Len(sIn) To 1 Step -1
 sOut = sOut & Mid(sIn, nC, 1)
 Next
 StrReverse = sOut
 End Function
 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 Public Function InStrRev(ByVal sIn As String, sFind As
 String, _
 Optional nStart As Long = 1, Optional bCompare As _
 VbCompareMethod = vbBinaryCompare) As Long
 Dim nPos As Long
 sIn = StrReverse(sIn)
 sFind = StrReverse(sFind)
 nPos = InStr(nStart, sIn, sFind, bCompare)
 If nPos = 0 Then
 InStrRev = 0
 Else
 InStrRev = Len(sIn) - nPos - Len(sFind) + 2
 End If
 End Function
 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 Public Function Replace(sIn As String, sFind As String, _
 sReplace As String, Optional nStart As Long = 1, _
 Optional nCount As Long = -1, Optional bCompare As _
 VbCompareMethod = vbBinaryCompare) As String
 
 Dim nC As Long, nPos As Integer, sOut As String
 sOut = sIn
 nPos = InStr(nStart, sOut, sFind, bCompare)
 If nPos = 0 Then GoTo EndFn:
 Do
 nC = nC + 1
 sOut = Left(sOut, nPos - 1) & sReplace & _
 Mid(sOut, nPos + Len(sFind))
 If nCount <> -1 And nC >= nCount Then Exit Do
 nPos = InStr(nStart, sOut, sFind, bCompare)
 Loop While nPos > 0
 EndFn:
 Replace = sOut
 End Function
 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 (Funktionerne er tyvneglet fra et Microsoft-site, så de burde
 virke)
 
 --
 mvh
 
 Per
 
 
 |