Function GetStringFromIndex(ByVal nIndex As Long) As String
Dim s As String
If nIndex < 0 Then Exit Function
s = Space(tmpBuffer)
SendMessage tmphWnd, EM_GETLINE, nIndex, ByVal s
GetStringFromIndex = Replace(Trim(s), vbCrLf + Chr$(0), "")
End Function
Public Property Get count() As Long
count = SendMessage(tmphWnd, EM_GETLINECOUNT, 0, 0&)
End Property
Public Property Get CaseSensitive() As Boolean
CaseSensitive = tmpCaseSens
End Property
Public Property Let CaseSensitive(ByVal vNewValue As Boolean)
tmpCaseSens = vNewValue
End Property
Public Property Get Delimeter() As String
Delimeter = tmpDelimeter
End Property
Public Property Let Delimeter(ByVal vNewValue As String)
tmpDelimeter = vNewValue
End Property
Public Sub ReplaceStringByString(ByVal sSuch As String, sRepl As String, _
Optional nSensitive As Byte = 0)
Dim n As Long
Dim mergeSens As Boolean
Dim x As Long
Dim y As Long
mergeSens = tmpCaseSens
If nSensitive = 1 Then tmpCaseSens = True
n = GetIndexFromString(sSuch)
x = SendMessage(tmphWnd, EM_LINEINDEX, n, 0&)
y = SendMessage(tmphWnd, EM_LINELENGTH, x, 0&)
SendMessage tmphWnd, EM_SETSEL, x, ByVal (x + y)
SendMessage tmphWnd, EM_REPLACESEL, False, ByVal sRepl
tmpCaseSens = mergeSens
End Sub
Public Sub ReplaceStringByIndex(ByVal nIndex As Long, sRepl As String)
Dim x As Long, y As Long
If nIndex > SendMessage(tmphWnd, EM_GETLINECOUNT, 0, 0&) Then Exit Sub
If nIndex < 0 Then Exit Sub
x = SendMessage(tmphWnd, EM_LINEINDEX, nIndex, 0&)
y = SendMessage(tmphWnd, EM_LINELENGTH, x, 0&)
SendMessage tmphWnd, EM_SETSEL, x, ByVal (x + y)
SendMessage tmphWnd, EM_REPLACESEL, False, ByVal sRepl
End Sub
Public Function SetBookMark(ByVal nBook As Variant) As Variant
Dim n As Long, x As Long, y As Long
If Not IsNumeric(nBook) Then
n = GetIndexFromString(nBook)
n = SendMessage(tmphWnd, EM_LINEFROMCHAR, n, 0&)
tmpBookMark = n
x = SendMessage(tmphWnd, EM_LINEINDEX, n, 0&)
y = SendMessage(tmphWnd, EM_LINELENGTH, x, 0&)
SendMessage tmphWnd, EM_SETSEL, x, ByVal (x + y)
SetBookMark = n
Else
x = SendMessage(tmphWnd, EM_LINEINDEX, nBook, 0&)
y = SendMessage(tmphWnd, EM_LINELENGTH, x, 0&)
SendMessage tmphWnd, EM_SETSEL, x, ByVal (x + y)
SetBookMark = GetStringFromIndex(CLng(nBook))
tmpBookMark = CLng(nBook)
End If
End Function
Public Property Get GetBookMark() As Long
GetBookMark = tmpBookMark
End Property
Private Function Find(ByVal sSuch As String, ByVal nPos As Long) As Long
Dim Ft As FINDTEXTAPI
Dim n As Long
With Ft
.lpstrText = sSuch
.chrg.cpMin = nPos + 1
.chrg.cpMax = Len(tmpText)
End With
n = SendMessage(tmphWnd, EM_FINDTEXTEX, 0, Ft)
Find = n
End Function
Public Sub DeleteByString(ByVal sSuch As String)
Dim n As Long
n = GetIndexFromString(sSuch)
n = SendMessage(tmphWnd, EM_LINEFROMCHAR, n, 0&)
If n <> 0 Then
ReplaceStringByIndex n, ""
End If
End Sub
Public Sub DeleteByIndex(ByVal nIndex As Long)
ReplaceStringByIndex nIndex, ""
End Sub
Public Sub SplitByString(ByVal sSuch As String, ByVal nPos As Long)
Dim n As Long
Dim s As String
n = GetIndexFromString(sSuch)
s = Left(tmpText, (n + nPos) - 1)
s = s + vbCrLf + Mid(n + nPos)
tmpText = s
SetWindowText tmphWnd, tmpText
End Sub
Public Sub SplitByIndex(ByVal nIndex As Long, ByVal nPos As Long)
Dim n As Long
Dim s As String
n = SendMessage(tmphWnd, EM_LINEINDEX, nIndex, 0&)
s = Left(tmpText, (n + nPos) - 1)
s = s + vbCrLf + Mid(tmpText, n + nPos)
tmpText = s
SetWindowText tmphWnd, tmpText
End Sub
Public Function GetArray() As Variant
Dim s As String
s = Space(tmpBuffer)
GetWindowText tmphWnd, s, tmpBuffer
s = Replace(Trim(s), vbCrLf, " ")
GetArray = Split(s, " ")
End Function
'nMode = 0 Sortiert aufwärts
'nMode <> 0 Sortiert abwärts
Sub Sort(Optional nMode As Byte = 0)
Dim vErg As Variant
Dim x As Long, y As Long
Dim a As String, b As String
vErg = GetArray
For x = 0 To UBound(vErg) - 1
For y = x To UBound(vErg)
vErg = GetArray
a = vErg(x): b = vErg(y)
If nMode = 0 Then
If a > b Then
ReplaceStringByIndex x, b
ReplaceStringByIndex y, a
End If
Else
If a < b Then
ReplaceStringByIndex x, b
ReplaceStringByIndex y, a
End If
End If
Next y
Next x
End Sub 0 |