![]() |
memo.caretpos liefert falsche ergebnisse
Hallo,
die Methode Memo.CaretPos liefert mir nur bis zum 65.536-sten Zeichen (64*1024) korrekte Werte. Danach beginnen die Y-Werte wieder mit 0 und die X-Werte werden negativ(?)! Ist das ein bekannter Bug? Kann man das irgendwie um gehen (außer Zeile und Spalte mit eigenem Code zu bestimmen...)? Gruß freejay |
Re: memo.caretpos liefert falsche ergebnisse
Von welchem Typ ist denn die Variable, in der du den Wert speicherst?
Ich habe deine Angaben zwar nicht geprüft, kann mir aber nicht vorstellen, dass das bei der Grenze vom Typ Word enden sollte. Falls doch ist die Reaktion des Programms völlig korrekt. |
Re: memo.caretpos liefert falsche ergebnisse
Ich speichere die Werte in einer Integer-Variable.
Das Problem tritt ja auch nicht nach der 65.536sten Zeile oder Spalte auf, sondern z.B. schon in der 1800sten Zeile wenn ich da im Text schon hinter dem 65.536sten Zeichen bin. Kann das jemand nachvollziehen? |
Re: memo.caretpos liefert falsche ergebnisse
Moin freejay,
ich kann das Problem nachvollziehen. Schau doch mal in den VCL-Sourcen, wie GetCaretPos in D7 implementiert ist. Bei mir (D5), wird leider der Rückgabewert von EM_GETSEL als Initialwert genommen, was zu diesem Fehler führt. Vermutlich hat sich dies in D7 nicht geändert. So geht's:
Delphi-Quellcode:
lCol entspricht dem y-, lLine dem x-Wert von CaretPos.
SendMessage(Memo1.Handle, EM_GETSEL, wParam(@lCol), 0);
lLine := SendMessage(Memo1.Handle, EM_LINEFROMCHAR, lCol, 0); lCol := lCol - SendMessage(Memo1.Handle, EM_LINEINDEX, -1, 0); |
Re: memo.caretpos liefert falsche ergebnisse
Danke Chris!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz