![]() |
AW: Träume, Wünsche und Wahnvorstellungen...
Richtig, denn wenn man tatsächlich etwas initialisieren muss dann kann man das bei Verwendung der Klasse über eine entsprechende Methode.
Wenn man aber die Klasse an sich ändert und die dann an den falschen Stellen verwendet wird... ohje, was für ein Durcheinander, insbesondere in einem Team... finde da mal den Fehler. |
AW: Träume, Wünsche und Wahnvorstellungen...
OK, dann versucht z.B. mal die interne StringList des TRichEdit zu kommen und die Bugs zu fixen, welche seit D2009 existieren, ohne die VCL neu zu kompilieren.
Irgendwer hat deren Deklaration nicht öffentlich gemacht. |
AW: Träume, Wünsche und Wahnvorstellungen...
Zitat:
Zitat:
Und wo wir von Bug sprechen, um was handelt es sich? (schon im QC eingetragen?) |
AW: Träume, Wünsche und Wahnvorstellungen...
Das sehe ich ach so. Wenn man schon etwas WÜNSCHT, dann gleich eine VCL2 (statt einer Problemlösung durch die Hintertür).
|
AW: Träume, Wünsche und Wahnvorstellungen...
Zitat:
|
AW: Träume, Wünsche und Wahnvorstellungen...
einfaches Beispiel:
Delphi-Quellcode:
1) hier ist klar, daß leider #13#10 (sLinebreak) rauskommt, obwohl man das leicht ändern könnte.
RichEdit1.Lines.Clear;
RichEdit1.Lines.Add('fdfdfd'); RichEdit1.Lines.Add('fdfdfd'); RichEdit1.Lines.Add('xx1234567890xx'); //RichEdit1.SelStart := Pos('4567', RichEdit1.Lines.Text) - 1; // *1 RichEdit1.SelStart := Pos('4567', RichEdit1.Text) - 1; // *2 RichEdit1.SelLength := Length('4567'); 2) den Schrott hier hat Emba aber absichtlich verbaut und dabei vergessen auch SelStart/SelLength mit umzurechnen Emba hatte mit der Umstellung auf Unicode auch endlich mal das Richedit-Control upgegradet und nutzt nun nicht mehr die überaltete Version. (von ![]() Wie dem auch sei, komischer Weise nutzt diese Komponente intern als Zeilenumbruch die #13 (Mac :shock: ), also dachte Emba sich, es ist mal "schlau" und ersetzt "einfach" die #13 mit sLineBreak, beim Auslesen. Tja, und nun haben wir den Salat ... pro Zeile verschiebt sich der Index. Ja, es sind irgendwo mehrere QC-Einträge und auch mehrere DP-Beiträge dazu vorhanden, aber seitens Emba keine wirkliche Reaktion. Es gibt auch 2-3 "einfache" Lösungen. (die StringList anpassen, aber leider ist der Zugriff darüber langsam und direkt über die WinAPI oder die Indize von SelStart/SelLength umrechnen) Dis ist mal ein wirklicher Wunschtraum ... daß alle QC-Einträge beantwortet und die Probleme behoben sind. |
AW: Träume, Wünsche und Wahnvorstellungen...
Zitat:
Übrigens, Problem solved:
Delphi-Quellcode:
RichEdit1.Lines.Delimiter := #13;
RichEdit1.Lines.StrictDelimiter := True; RichEdit1.SelStart := Pos('4567', RichEdit1.Lines.DelimitedText) - 1; |
AW: Träume, Wünsche und Wahnvorstellungen...
Aber schau lieber nicht nach, was Lines macht.
Bei jedem zugriff auf Lines.Text / Lines.DelimitedText wird Memo/RichEdit erstmal komplett zerlegt. Im Inneren speichern die den Text zusammenhängens. Lines ließt nun jede Zeile aus und setzt das wieder zusammen.
Delphi-Quellcode:
Was soeine Schleife nun auf den Speicherverbrauch und die Laufzeit für Auswirkungen haben kann/wird, kannst'e dir bestimmt denken?
for i := 0 to Zeilen - 1 do
Result := Result + Zeile[i] + Zeilenumbruch; Hätte Emba nicht oder nur geringfügig (#13 => #10) in RichEdit.Text rumgepfuscht, dann sähe das anders aus, da Memo.Text, im Gegensatz zu Memo.Lines.Text, alles zusammen ausließt. Hey, würden Fehler schneller behoben und auch mal in älteren Versionen, würden nicht so viele Langzeitbugfixes in den Programmen rumgammeln. :angle: Gut, am Liebsten hatte ich auch mal das 1-0-Problem der Strings beseitigt, aber sowas wird wohl nie passieren. |
AW: Träume, Wünsche und Wahnvorstellungen...
Zitat:
Und wer ernsthaft ein Programm für Textverarbeitung schreibt, wo dann mal "große" Dokumente geladen sein könnten, wird bestimmt nicht TRichEdit nutzen... Zitat:
![]() P.S. Übrigens... ![]() |
AW: Träume, Wünsche und Wahnvorstellungen...
Zitat:
Alles was man in einem class helper macht, kann man einfach manuell auslösen. Klar musst du das dann bei jedem RichEdit, das du nutzt, aber von der Frage ausgehend, ob es möglich ist, ändert sich doch nichts. :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:53 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