Fragen zu TMemo

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
u-boot
Beiträge: 306
Registriert: Do 9. Apr 2009, 10:10
OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 785..

Fragen zu TMemo

Beitrag von u-boot »

TMemo hat das tolle MaxLength-Property.... soll das die Gesamtzeichenanzahl sein oder nur für eine Zeile ?

Ein TMemo in ner Schleife mit TMemo.Lines.add zu befüllen funktioniert bei mir nur, wenn man am Ende der Zeilen einen Zeilenumbruch anfügt. Ist das ein Bug oder gewollt ?
(Falls das so gewollt ist versteh ich nicht, warum man über Lines die einzelnen Zeilen ansprechen können soll, wenn man sowieso einen Zeilenumbruch benötigt)
Füge ich einen Zeilenumbruch am Ende der Zeile ein, dann wird eine [ungewollte] leere Zeile eingefügt.

Dann noch etwas: fügt man zur Designtime ein ha ll oo jeweils in verschiedene Zeilen ein, wird zur Laufzeit daraus ein halloo in der ersten Linie.

Kann jemand diese Verhaltensweisen von TMemo bei sich bestätigen ?

Momentan verwende ich Lazarus svn fixes 0.9.30 und FPC 2.4.2
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Fragen zu TMemo

Beitrag von theo »

u-boot hat geschrieben:Kann jemand diese Verhaltensweisen von TMemo bei sich bestätigen ?


Nein, nichts davon.
Lazarus 0.9.31 r28409M FPC 2.4.2 i386-linux-gtk 2

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Fragen zu TMemo

Beitrag von pluto »

Ein TMemo in ner Schleife mit TMemo.Lines.add zu befüllen funktioniert bei mir nur, wenn man am Ende der Zeilen einen Zeilenumbruch anfügt. Ist das ein Bug oder gewollt ?

Diese Methode fügt legendlich eine neue Zeile hinzu. Also musst du für jede neue Zeile, diese Methode erneut aufrufen. Das was du im Moment machst ist Folgendes: Du fügst nur eine Zeile hinzu. Mehr nicht.
MFG
Michael Springwald

am2
Lazarusforum e. V.
Beiträge: 116
Registriert: Di 21. Dez 2010, 09:59
OS, Lazarus, FPC: Win (L 0.9.26 beta FPC 2.2.2)
CPU-Target: 32 Bit

Re: Fragen zu TMemo

Beitrag von am2 »

pluto hat geschrieben:
Ein TMemo in ner Schleife mit TMemo.Lines.add zu befüllen funktioniert bei mir nur, wenn man am Ende der Zeilen einen Zeilenumbruch anfügt. Ist das ein Bug oder gewollt ?

Diese Methode fügt legendlich eine neue Zeile hinzu. Also musst du für jede neue Zeile, diese Methode erneut aufrufen. Das was du im Moment machst ist Folgendes: Du fügst nur eine Zeile hinzu. Mehr nicht.

Hab ich da was verpaßt? Hast Du das erraten oder steht das irgendwo in einem Posting?
Ich habe den OP schon so verstanden, dass er irgenetwas in der Art

Code: Alles auswählen

for i:=0 to MyStringList.Count-1 do
  MyMemo.Add(MyStringList[i]);


macht und dass mit Add an sich eben keine neue Zeile eingefügt wird, sondern lediglich der Text.

Zur Frage nach der Funktionsweise von Add kann ich nicht viel sagen, ich bin auch davon ausgegangen, dass diese Methode eine neue Zeile anfügt. Zu Deiner letzten Leerzeile: Das ist so ja nicht ganz richtig: Du erzeugst ja keine Leerzeile, sondern einen Zeilenumbruch, danach steht nichts. Wenn Dich dieser letzte Zeilenumbruch stört, dann solltest Du den letzten Zeilenvorschub eben nicht schreiben. Je nach gusto beispielsweise

Code: Alles auswählen

for i:=0 to MyStringList.Count-1 do begin
  MyMemo.Add(MyStringList[i]);
  if i<MyStringList.Count-1 then MyMemo.Add(#13#10);
end;


oder

Code: Alles auswählen

for i:=0 to MyStringList.Count-1 do begin
  if i>0 then MyMemo.Add(#13#10);
  MyMemo.Add(MyStringList[i]);
end;


Aber vielleicht habe ich Dich auch völlig falsch verstanden. Hast Du mal ein paar Zeilen Code?

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Fragen zu TMemo

Beitrag von Socke »

Wie wärs mit

Code: Alles auswählen

MyMemo.Lines.Add('neue Zeile!');


Edit: Welche Lazarus-Version verwendest du? Meine (SVN 28849) besitzt keine Methode TMemo.Add();
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Fragen zu TMemo

Beitrag von pluto »

@am2 Hätte mir den Code genauer anschauen sollen. Dann hätte ich vielleicht gar nicht gepostet.
MFG
Michael Springwald

u-boot
Beiträge: 306
Registriert: Do 9. Apr 2009, 10:10
OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 785..

Re: Fragen zu TMemo

Beitrag von u-boot »

Ich weiss immer noch nicht an was es lag. Ich habe nichts bis auf Maxlength wissentlich verändert und nun funktioniert das mit dem memo.line.add . Ehrlich gesagt, keine Ahnung warum. Ich glaub mittlerweile wird dieses Maxlength bei mir einfach ignoriert. Jedenfalls scheint da noch ein Käferchen zu sein, den ich nicht mal reproduzieren kann.
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Fragen zu TMemo

Beitrag von pluto »

Vielleicht hast du auch "nur" ein -1 Problem bzw +1 Problem.
MFG
Michael Springwald

mtbf40
Beiträge: 72
Registriert: Do 3. Nov 2011, 16:39

Re: Fragen zu TMemo

Beitrag von mtbf40 »

Hallo,

wie kann man einen Text - nachträglich - in einem/bzw. zwei TMemo(s) farblich ändern.
Grund:
Ich fülle ein TMemo aus einer TStringList. Jede Zeile wird mit einer Zeile aus einem 2.TMemo (über Index) verglichen. Wenn ich Unterschiede feststelle sollen beide Zeilen farblich markiert werden.

Ich hoffe das mich jemand auf die Spur der Lösung bringen kann. :wink:

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Fragen zu TMemo

Beitrag von pluto »

mit einem TMemo überhaupt nicht. Jedenfalls habe ich es versucht und es sollte eigentlich über die API gehen, aber bei meinen letzten Versuchen ging das nicht.

Du könntest höchsten ein TSynEdit oder TSynMemo verwenden... die können aber kein Automatischen Zeilenumbruch...
MFG
Michael Springwald

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Fragen zu TMemo

Beitrag von hde »

Und was ist mit TRichMemo?

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Fragen zu TMemo

Beitrag von pluto »

Stimmt, dass hatte ich vergessen gehabt.
MFG
Michael Springwald

Antworten