Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   TMemo ersetzen (https://www.delphipraxis.net/190942-tmemo-ersetzen.html)

Keflock 22. Nov 2016 15:09

TMemo ersetzen
 
Hallo zusammen,

ich habe ein Werkzeug entwickelt, was einem User die Textbearbeitung (Schneiden / Ersetzen von Textbausteinen) visuell in mehreren TMemo-Komponenten angezeigt hat. Es ist aber mittlerweile so, dass kaum User drauf schaut und das Tool automatisiert die Dateien verarbeitet. Jetzt möchte ich das Tool schneller machen, also einige VCLs ersetzen.

Gerne würde ich die TMemo-Komponenten ersetzen und das durch ein TFileStream, TStringList oder??? Wobei ich einfach den gesamten Quellcode nicht mehr ändern möchte, sondern nur die TMemo entfernen will und eine nonVCL Komponente unter gleichem Namen verwenden möchte.

Was würdet ihr denn verwenden? Gibt es einen TMemo Ersatz?

Beispielweise möchte ich vermeiden:
memo1.lines
durch
Memo_Verzeichnis_Inhalt.Add()
zu ersetzen.

Versucht habe ich TMemo durch TStrings zu ersetzen. Bekomme aber oft "abstrakter Fehler" als Ergebnis.


mfg
JK

Ghostwalker 22. Nov 2016 15:30

AW: TMemo ersetzen
 
Statt TStrings einfach mal TStringlist versuchen :)

nahpets 22. Nov 2016 15:40

AW: TMemo ersetzen
 
Lines vom TMemo sind eigentlich "nur" TStrings. Wenn Du alles, was auf Lines zugreift durch 'ne TStringList ersetzt, sollte das problemlos funktionieren.

himitsu 22. Nov 2016 15:43

AW: TMemo ersetzen
 
TStrings ist der "abstrakte" Vorfahre aller seiner Nachfahren. :angle:
Der kann selber nichts, deswegen auch abstract, aber er ist eine gute "einheitliche" Schnittstelle zu Allem mit "ähnlichen" Funktionen.

TStringList ist intern 'ne Liste aus vielen Strings.
TMemoStrings, das versteckt intern im TMemo, und ist eine Schnittstelle/Weiterleitung zu den Zeilen des MEMO.
In TListBox, TComboBox, TQuery.SQL vieler DB-Komponenten usw. verstecken sich ebenfalls entsprechende Weiterleitungen.

p80286 22. Nov 2016 17:06

AW: TMemo ersetzen
 
Was eine Möglichkeit wäre:
Delphi-Quellcode:
Type
  myMemo : tMemo;
durch
Delphi-Quellcode:
Type
  myMemo:Tstrings;

begin
  myMemo:=Tstringlist.Create;
Zu ersetzen.
allerdings hast Du dann z.B. die
Delphi-Quellcode:
CaretPos
oder
Delphi-Quellcode:
SelLength,SelStart, SelText
nicht. Dann ist es u.U. besser mit einem unsichtbaren Memo zu arbeiten.

Gruß
K-H

JanWe 22. Nov 2016 21:13

AW: TMemo ersetzen
 
hi,

ich hab jetzt doch zu wenig Ahnung davon.
Aber könnte es Dir helfen,
vor der Verarbeitung von den Memo/RTF/Combo/Listbox-Komponenten
diese mit
Delphi-Quellcode:
memo1.lines.BEGINupdate;
// jetzt Strings Bearbeiten
memo1.lines[i] := memo1.lines[i] + 'blablabla'; //und nachher mit
memo1.lines.ENDupdate; // abschließen. - Fertig
einfzufassen?

das könnte evtl Deine Geschwindigkeitsprobleme beheben, da die Anzeige nicht andauernd bei jedem Zugriff aktualisiert werden muß.

hoika 24. Nov 2016 04:55

AW: TMemo ersetzen
 
Hallo,
wird denn TMemo "missbraucht" für String-Operationen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:07 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