Einzelnen Beitrag anzeigen

ter

Registriert seit: 26. Aug 2017
17 Beiträge
 
Delphi 6 Personal
 
#3

AW: Memo.CaretPos Limit Erweitern

  Alt 18. Jul 2019, 11:25
SynEdit kommt bei mir bis 65536 Zeichen pro Zeile zurecht.

CaretPos.X wird bis zu dieser Zeilenlänge korrekt dargestellt.
Wow! Das muss zwar nicht sein, schadet aber bestimmt nichts.
Zu dem Thema Fremdcomponenten moechte ich aber mir die Freiheit erlauben, meine bescheidene Meinung aeussern zu duerfen. Und ich sag es gleich erstmal vorneweg, damit sich keiner an den Fuessen gestossen fuehlt.

Alle componenten, die zu Delphi dazu gehoeren, sind seit vielen vielen Jahren dabei und staendig im Test auf ihre richtige Function. Als ich 1993 mit Delphi 1.0 anfing war es noch sehr wenig, aber ich bin der Meinung, wenn man mit einer Mutter componenten nicht klarkommt, hat es keinen Sinn, sich anstattdessen mit 3rd party componenten zu beschaeftigen. Inwieweit die wirklich alle auch functionieren oder ihre Macken haben, bleibt meist im Dunkeln. Auch ihre Weiterentwicklung unter neuen operating systems ist nicht garantiert. Wie auch, es handelt sich meist nur um einen Specialisten, der die geschaffen hat. Das dazu.

Nun zu meiner vorlaeufigen Bewaeltigung des Problems:

Mit der Verwendung von Memo1.LoadFromFile() wird zwar die komplette Textdatei (> 64kB) geladen, aber der ermittelte Positionswert in Memo1.CaretPos.X bzw. .Y wird dann falsch, wenn die Gesamtlaenge des geladenen Textes groesser als 64kB wird und der Cursor diesen Wert ueberschreitet.

Ich habe jetzt die Moeglichkeiten,
a) diese Grenze zu akzeptieren und auf einen richtigen CaretPos-Wert zu verzichten oder
b) die Grenze im Memo zu begrenzen mit Memo1.MaxLength:=65535; Was dumm erscheint, denn viele meiner Textdateien sind weitaus groesser als 64kB oder
c) eine ListBox zu verwenden, was wieder den Nachteil hat, dass ich den Text nicht richtig bearbeiten kann, wie man das in einer Memo kann. Oder
d) eine PaintBox verwenden, um die Zeichen ueber ein Canvas auszugeben. Da wird es mit dem Bearbeiten des Textes noch uebler als in einer ListBox. Oder
e) immer nur bis zu 64kB am Stueck ins Memo laden und beim Scrollen nachzuladen. Ich habe dann so viele Pages wie 64kB in die Textdatei passen. Das wuerde ein Durchsuchen nach bestimmten Textvorkommen und dessen Bearbeitung mich nicht ueberfordern und waere machbar.

Nur so nebenbei: WordWrap zu aendern machte auch keinen Unterschied, weil es sich meist um Zahlenkolonen handelt, die keinen space character enthalten.
Werde mich mal mit SelStart beschaeftigen und auch dazu einiges auf delphipraxis gefunden.
Das war es erst einmal von meiner Seite.
Im Anhang die Moeglichkeit ueber Umgehung von LoadFromFile() eine Textdatei in ein Memo zu laden.
( Anbei die Function Load_TextFile_Into_Memo.zip )

Viele Gruesse
Terence
Miniaturansicht angehängter Grafiken
fehler-beim-laden-der-seite-von-synedit.jpg  
Angehängte Dateien
Dateityp: zip Anbei die Function Load_TextFile_Into_Memo.zip (978 Bytes, 4x aufgerufen)
Terence Coman

Geändert von ter (18. Jul 2019 um 11:30 Uhr)
  Mit Zitat antworten Zitat