AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu TRichEdit

Ein Thema von DelTurbo · begonnen am 16. Feb 2010 · letzter Beitrag vom 29. Aug 2010
Antwort Antwort
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#1

Frage zu TRichEdit

  Alt 16. Feb 2010, 12:34
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
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Frage zu TRichEdit

  Alt 16. Feb 2010, 13:02
Schau mal hier
Blackheart
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#3

Re: Frage zu TRichEdit

  Alt 16. Feb 2010, 13:07
Super, vielen dank. Das mit den 64k wusste ich garnicht.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: Frage zu TRichEdit

  Alt 16. Feb 2010, 13:16
Das ist wohl noch eine Sicherheitsbegrenzung des alten RichEdit-Controls, welches für bestimmte Adressierungen nur ein Word verwendete.
$2B or not $2B
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#5

Re: Frage zu TRichEdit

  Alt 17. Feb 2010, 12:02
Rückmeldung: Fehler tritt nun nichtmehr auf. Danke
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#6

AW: Re: Frage zu TRichEdit

  Alt 27. Aug 2010, 15:17
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.

Gruß, Alex
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Frage zu TRichEdit

  Alt 27. Aug 2010, 18:14
Zitat:
Note:
In code, you can set the value of the Text property to a value that has a length greater than the value specified by the MaxLength property. This property only affects text entered into the control at run time.
Warum auch immer MS diese 64k(?) Beschränkung eingeführt hat, sie greift wohl nur bei der Eingabe über die Oberfläche/Keyboard.

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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#8

AW: Frage zu TRichEdit

  Alt 29. Aug 2010, 10:22
Warum auch immer MS diese 64k(?) Beschränkung eingeführt hat, sie greift wohl nur bei der Eingabe über die Oberfläche/Keyboard.

Ich habe mehre Dateien mit mehr als 64k Dateigröße eingelesen, das hat immer funktioniert.
Das deckt sich mit meiner Feststellung, dass ich mit dem TRichEdit 185 MB große Dateien laden kann, hilft mir aber nicht bei der Problemlösung. Ich versuche eben zu ergründen, warum eine Datei gerade noch nur z.B. 78 KB groß war und plötzlich beim Speichern 185 MB groß wird.
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:
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;
etwas hinzugefügt.

Daher nochmal meine Frage:
Wie bestimme ich, wieviel von den 64 KB ein TRichEdit gerade verbraucht? Begründung siehe oben.

Danke und Gruß, Alex
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#9

AW: Frage zu TRichEdit

  Alt 29. Aug 2010, 10:52
Delphi-Quellcode:
//if Length(RichEdit1.Text) >= 65536 div SizeOf(Char) then ...
if Length(RichEdit1.Text) >= 32768 then ...

oder

if Length(RichEdit1.Lines.Text) >= 32768 then ...
jenachdem wo die Format-Informationen mit enthalten sind.

Man könnte auch über SeltStart oder über GetTextLength arbeiten, oder über die entsprechende SendMessage-Message dafür.
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort


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:32 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