![]() |
Frage zu TRichEdit
Hi,
ich habe so ca. alle 30 Stunden einen fehler, der mit mad meldet. exception class : EOutOfResources exception message : Fehler bei Einfgen von RichEdit-Zeile. Nu zu meiner frage. Ist die anzahl der zeilen irgendwie begrentzt? Ich habe pro RichEdit eine History von 500 zeilen. Da die history auf 500 zeilen beschränkt ist kann ich leider nicht sehen ob eine zeile fehlt und wo. Danke im Voraus |
Re: Frage zu TRichEdit
Schau mal
![]() |
Re: Frage zu TRichEdit
Super, vielen dank. Das mit den 64k wusste ich garnicht.
|
Re: Frage zu TRichEdit
Das ist wohl noch eine Sicherheitsbegrenzung des alten RichEdit-Controls, welches für bestimmte Adressierungen nur ein Word verwendete.
|
Re: Frage zu TRichEdit
Rückmeldung: Fehler tritt nun nichtmehr auf. Danke
|
AW: Re: Frage zu TRichEdit
Hallo,
ich greife das Thema/die Frage mal wieder auf: Ich benutze in einer Chat-Anwendung ein TRichEdit als Protokoll bzw. Verlauf. Beim Start des Programms lade ich den Text mit LoadFromFile(); - beim Beenden speichere ich ihn mit SaveToFile();. Das funktioniert ganz gut. In extrem unregelmäßigen Abständen macht das aber Probleme, ohne dass ich den Hintergrund herausfinden kann. Diese äußern sich so, dass im TRichEdit nach dem Laden die Formatierungen als Klartext mit angezeigt werden. Außerdem entarten teilweise die Dateien. Der Rekord einer rtf-Datei lag mal bei 185 MB. Das Programm ließ sich nicht mehr starten und brauchte nach Ewigkeiten 200 MB RAM. Ich brauchte dann ewig, um hinter die Riesendatei als Problemverursacher zu kommen. Wie sie aber zustande kommt, kann ich nicht rekapitulieren. Meine Vermutung ist nun nach längeren Recherchen, dass es an der 64KB-Grenze liegen könnte und ich habe meinen Code bereits entsprechend der Hinweise hier angepasst. Meine Frage ist da aber noch, wie kann ich ermitteln, ob ich mich der 64KB-Grenze nähere? Ich möchte das wissen, damit ich dann drangehen und mir diese Dateien und die künftigen Starts ansehen zu kann. Irgendwann möchte ich den Fehler bzw. dessen Ursache mal finden und ich kann nicht auf allen Rechnern Delphi zum Debuggen in der IDE installieren.:wink: Gruß, Alex |
AW: Frage zu TRichEdit
Zitat:
Ich habe mehre Dateien mit mehr als 64k Dateigröße eingelesen, das hat immer funktioniert. Aber es stimmt, manchmal funktioniert die Erkennung der Steuercodes nicht. Habe mich aber nicht näher damit auseinander gesetzt, da ich auch ein Word auf meinem Rechner habe und das hat keine Probleme damit. Gruß K-H |
AW: Frage zu TRichEdit
Zitat:
Zudem ist mein TRichEdit ReadOnly. Denn es ist ein Verlauf, den der Benutzer eben nicht verändern können soll; jedenfalls nicht mit meinem Programm. Es wird daher nichts über die Tastatur, sondern immer nur über
Delphi-Quellcode:
etwas hinzugefügt.
With RichEdit1 Do
SelStart:=Length(Text); Selattributes.Style:=[fsBold]; SelText:='Sie schrieben am ... an ...'; Lines.Append(''); SelStart:=Length(Text); SelAttributes.Style:=[]; SelText:='Das war/ist Ihr Text.'; Perform(EM_SCROLLCARET, 0, 0); End; Daher nochmal meine Frage: Wie bestimme ich, wieviel von den 64 KB ein TRichEdit gerade verbraucht? Begründung siehe oben. Danke und Gruß, Alex |
AW: Frage zu TRichEdit
Delphi-Quellcode:
jenachdem wo die Format-Informationen mit enthalten sind.
//if Length(RichEdit1.Text) >= 65536 div SizeOf(Char) then ...
if Length(RichEdit1.Text) >= 32768 then ... oder if Length(RichEdit1.Lines.Text) >= 32768 then ... Man könnte auch über SeltStart oder über GetTextLength arbeiten, oder über die entsprechende SendMessage-Message dafür. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 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-2025 by Thomas Breitkreuz