![]() |
TMemo
Moin !
Ich hab mal ne Frage zum TMemo. Ich verwende 2 TMemo Felder als Anzeige für eingehende Nachrichten (Länge 10 Zeichen), die ich dann auswerte und die die TMemos schreibe. Ab einer bestimmten Anzahl von Nachrichten (2000) löscht er die 100 ältesten. Codeauszug dazu AString:String; myMemo1.Lines.Append(AString); // Nachricht hinzugefügt Jetzt kommt es vor, daß die Anzeige im TMemo stehen bleibt, d.h. es werden keine neuen Nachrichten mehr hinzugefügt. Nach einem Löschvorgang läuft es dann ganz normal weiter. Erst dachte ich, daß es mit der Speichergröße zusammenhängt (WIN 98 - 64KB), aber das Problem tritt nur sporadisch auf egal wieviel Lines ich im Memo zulasse und ist daher um so ärgerlicher. Danke für die Hilfe ! |
Re: TMemo
Es lommt nicht auf die Zeilen, sondern auf die Anzahl der Zeichen an. Ein zeichen = 1 Byte.
|
Re: TMemo
Jede Nachricht hat 20 Zeichen, also umfaßt 20 Byte.
Bei einer maximalen Größe von 64 KB (65535 Byte) wären dann rein theoretisch 3276 Nachrichten zulässig pro Memofeld. Ich habe aber maximal 2000 Nachrichten also 40000 Byte. Damit ist die Obergrenze nicht erreicht. Selbst wenn noch am Ende jedes Telegramms ein CR und ein Linefeed folgt (ASCII #13,#10) liege ich innerhalb der maximal erlaubten Speichergröße. Summe Nachrichten + Summe (CR und Linefeed) =44000 Byte, Max. erlaubt unter Win98 (65535) Da ich aber nicht Win98 verwende, sondern WIN2000 ist selbst diese Speichergrenze hinfällig. Da bin ich mir aber nicht sicher und nehme deswegen erstmal 65535 Byte an. |
Re: TMemo
Nein, ist sie nicht. Steht MaxLenght auf 0 ist sie auch bei Win2000 auf 64 KB begrenzt, du kannst sie aber beliebig hochsetzten.
|
Re: TMemo
Damit wäre das Thema der Speicherbrenzung geklärt. Danke erstmal dafür !
Allerdings kann ich mir immer noch nicht vorstellen, warum die Aufzeichnung dann bei einer beliebigen Nachrichtenanzahl manchmal stehen bleibt. |
Re: TMemo
Wie sieht der restliche Speicher deiner Anwendung aus? Wenn dein Adressraum voll ist, dann kann auch das Memo nichts mehr aufnehmen.
|
Re: TMemo
Wie bekomme ich das denn raus ?
|
Re: TMemo
Erstellst du Instanzen von Objekten und gibst sie nicht mehr frei? Große Arrays? Werden dynamische Arrays häufig vergrößert / verkleinert? ...
|
Re: TMemo
Nein.
Ich arbeite mit Strings. Ich verwende nur ein dyn.Array, welches aber während der normalen Laufzeit des Programmes nicht verwendet wird. Es wird zwar beim Programmstart initialisiert, aber nur auf die Größe 1. |
Re: TMemo
Hmmm ... seit 2 Wochen keine Antwort. Es gibt also keine Lösung für dieses Problem.
Ich habe inzischen die maximal zulässige Anzahl der eingehenden Nachrichten pro Memofeld halbiert und seit dem läuft es. Kann es sein, daß die Memofelder auf den selben Speicher zugreifen und sich die 64k teilen müssen ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 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