Hallo,
vielen Dank fuer die Antwort!
Ich weiss nun nicht, wie ich das umsetzen soll.
Die Fehlermeldung tritt ja beim Versuch auf, die Variable "Buffer" zu dimensionieren, wenn RowLength > 255 Zeichen ist:
ReDim Buffer(RowLength + 1) Ich habe den Code jetzt so geaendert:
Function GetRowContent(hWnd As Long, Optional ByVal nLine As Long = 0) As String
Dim CursorPos As Long
Dim FirstChar As Long
Dim RowLength As Long
Dim Buffer() As Byte
'//////////////////////////////////////////////////////
'Geändert:
'Neue Puffer-Variable verwendet
Dim strBuffer As String
'//////////////////////////////////////////////////////
On Error GoTo ErrHandler
' Falls keine Zeilennummer angegeben,
' Inhalt der aktuellen Zeile ermitteln
If nLine < 1 Then
CursorPos = SendMessage(hWnd, EM_GETSEL, 0, ByVal 0&) \ 65536
nLine = SendMessage(hWnd, EM_LINEFROMCHAR, CursorPos, ByVal 0&)
Else
nLine = nLine - 1
End If
' Zeilenlänge ermitteln
FirstChar = SendMessage(hWnd, EM_LINEINDEX, nLine, ByVal 0&)
RowLength = SendMessage(hWnd, EM_LINELENGTH, FirstChar, ByVal 0&)
'//////////////////////////////////////////////////////
'Geändert:
strBuffer = Space$(RowLength)
SendMessage hWnd, EM_GETLINE, nLine, ByVal strBuffer
GetRowContent = strBuffer
Exit Function
'//////////////////////////////////////////////////////
' Puffer vorbereiten
ReDim Buffer(RowLength + 1)
Buffer(0) = RowLength + 1
' Zeileninhalt in Puffer auslesen
SendMessage hWnd, EM_GETLINE, nLine, Buffer(0)
' Inhalt als String zurückgeben
GetRowContent = Left$(StrConv(Buffer, vbUnicode), RowLength)
Exit Function
ErrHandler:
Call LogErr(Err, "", "modChessdiagrammer.GetRowContent", "Err", Error)
End Function Das funktioniert zwar, ich waere aber fuer eine Rueckmeldung sehr dankbar, ob das so sauber programmiert ist.
Denn seltsamerweise ist beim Testen die VB6-Entwicklungsumgebung hin und wieder mit einem Speicherverletzungs-Fehler abgestuerzt beim Versuch, mein Programm zu beenden.
Auch in der kompilierten Version ist das aufgetreten, und ich vermute, dass es mit meiner geaenderten Routine zusammenhaengt.
Gruesse
Lilith
Beitrag wurde zuletzt am 17.08.13 um 14:23:22 editiert. |