Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi memo.caretpos liefert falsche ergebnisse (https://www.delphipraxis.net/41685-memo-caretpos-liefert-falsche-ergebnisse.html)

freejay 7. Mär 2005 10:06


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

Jasocul 7. Mär 2005 10:10

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.

freejay 7. Mär 2005 13:01

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?

Christian Seehase 7. Mär 2005 23:41

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:
  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);
lCol entspricht dem y-, lLine dem x-Wert von CaretPos.

freejay 8. Mär 2005 08:49

Re: memo.caretpos liefert falsche ergebnisse
 
Danke Chris!


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:23 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz