AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Memo.CaretPos Limit Erweitern

Ein Thema von ter · begonnen am 17. Jul 2019 · letzter Beitrag vom 19. Jul 2019
Antwort Antwort
ter

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

Memo.CaretPos Limit Erweitern

  Alt 17. Jul 2019, 16:37
Frage:
Mein Memo zeigt die richtige CaretPos.X nur bis zu einer Spalte von 1024 richtig an.
Dann erzwingt das Memo (mit WordWrap:=False einen Zeilenumbruch.
Ab dann gibt die CaretPos.X und .Y nur noch falsche Werte an. Was dazu fuehrt, wenn weitere sehr lange Zeilen (laenger als 1024 Zeichen) folgen sogar negative Werte fuer CaretPos.Y wie e.g. -65.305.

Wie kann ich den erzwungenen Zeilenbruch des Memo verhindern ?
Leider lade ich Texte mit Zeilenlaengen bis 4096 Zeichen ueber Memo1.LoadFromFile() ins Memo.
Soll ich die Datei lieber zeilenweise lesen und laengere Zeilen (> 1024) selbst umbrechen ?

Gruss Terence.
Miniaturansicht angehängter Grafiken
pmemocaretpos-pic-1.jpg   pmemocaretpos-pic-2.jpg  
Angehängte Dateien
Dateityp: zip PMemoCaretPos-Test_2019_07_17.zip (206,7 KB, 3x aufgerufen)
Terence Coman
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.451 Beiträge
 
Delphi 7 Professional
 
#2

AW: Memo.CaretPos Limit Erweitern

  Alt 17. Jul 2019, 16:47
SynEdit kommt bei mir bis 65536 Zeichen pro Zeile zurecht.

CaretPos.X wird bis zu dieser Zeilenlänge korrekt dargestellt.
  Mit Zitat antworten Zitat
ter

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

AW: Memo.CaretPos Limit Erweitern

  Alt 18. Jul 2019, 10: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 10:30 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.451 Beiträge
 
Delphi 7 Professional
 
#4

AW: Memo.CaretPos Limit Erweitern

  Alt 18. Jul 2019, 11:16
Laut Profil nutzt Du Delphi 6.

Damals gab's noch so 'ne 64 KB-Grenze. Ob die bei aktuellen Versionen von Delphi auch noch existiert?

In Delphi 7 kann ich das Problem jedoch nachvollziehen.

Apropos: Fremdkomponenten

Ohne die würd' ich Delphi in die Tonne kloppen.

Es ist ja gerade das Schöne an Delphi, dass man soviel selbst machen kann. Vorhandene Komponenten erweitern, fremde hinzufügen, eigene erstellen ...

Die mit Delphi gelieferten Komponenten sind (im Ursprung) eigentlich nur dazu da gewesen, um nicht alles selbst machen zu müssen und nicht: Das ist das Nonplusultra. Weiterentwicklung sinn- und zwecklos.

Nutze diverse Fremdkomponenten schon seit vielen (ca. 24) Jahren und die gibt es immernoch und sie werden immernoch weiterentwickelt.

Müsste ich mich bei allen Editoren und ähnlichem mit TMemo zufriedengeben, statt die SynEdits zu nutzen, wäre mancheins meiner Programme mehr als nur spartanisch.

Und wofür gibt es wohl all die Fremdkomponentenhersteller, die sogar Support für ihre Komponenten bieten ...?

Die Leben davon, obwohl sie eigentlich vollkommen überflüssig sind?

Abgesehen von der Unmenge frei verfügbarere Komponenten, die man auch nach eigenem Gutdünken weiterentwickeln kann ...

Nehmen wir mal https://torry.net/, alles was es dort gibt ist überflüssig?
Oder alles das, was man so auf https://github.com/ findet? Auch überflüssig?

Aber egal, jeder wie er will
  Mit Zitat antworten Zitat
ter

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

AW: Memo.CaretPos Limit Erweitern

  Alt 19. Jul 2019, 07:26
Laut Profil nutzt Du Delphi 6.

Damals gab's noch so 'ne 64 KB-Grenze. Ob die bei aktuellen Versionen von Delphi auch noch existiert?

In Delphi 7 kann ich das Problem jedoch nachvollziehen.

Apropos: Fremdkomponenten

Ohne die würd' ich Delphi in die Tonne kloppen.
...
Aber egal, jeder wie er will
Da hast Du voellig recht. Das sollte jeder selbst entscheiden.

Uebrigens habe ich das Problem mit der CaretPos jetzt
geloest. Mit nur 3 Zeilen im Quellcode. (siehe Anhang)

Wenn ich beim kleinsten Problem es sofort mit Fremdcomponenten versuchen wuerde ...

Viele Gruesse
Terence
Miniaturansicht angehängter Grafiken
pmemocaretpos-fixed-pic-1.jpg   pmemocaretpos-fixed-pic-2.jpg  
Angehängte Dateien
Dateityp: zip PMemoCaretPos-Fixed-Test_2019_07_19.zip (208,3 KB, 10x aufgerufen)
Terence Coman
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:18 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