vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: Zeilen aus RichTextBox auslesen: Problem bei Zeilenlaenge > 255 Zeichen 
Autor: Lilith
Datum: 17.08.13 14:19

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.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Zeilen aus RichTextBox auslesen: Problem bei Zeilenlaenge &g...1.765Lilith17.08.13 10:37
Re: Zeilen aus RichTextBox auslesen: Problem bei Zeilenlaeng...1.164Preisser17.08.13 12:54
Re: Zeilen aus RichTextBox auslesen: Problem bei Zeilenlaeng...1.112Lilith17.08.13 14:19
Re: Zeilen aus RichTextBox auslesen: Problem bei Zeilenlaeng...1.098Preisser17.08.13 14:53
Re: Zeilen aus RichTextBox auslesen: Problem bei Zeilenlaeng...1.102Lilith17.08.13 15:16
Re: Zeilen aus RichTextBox auslesen: Problem bei Zeilenlaeng...1.071Preisser17.08.13 15:43
Re: Zeilen aus RichTextBox auslesen: Problem bei Zeilenlaeng...1.196Lilith17.08.13 16:00
Re: Zeilen aus RichTextBox auslesen: Problem bei Zeilenlaeng...1.050Lilith17.08.13 16:06

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel