Einzelnen Beitrag anzeigen

s-off
(Gast)

n/a Beiträge
 
#4

Re: TMemo : Leerzeilen am Ende erkennen

  Alt 18. Sep 2007, 10:20
Hallo,
Zitat von maanton:
Dabei soll es auch möglich sein, am Ende des Textes Leerzeilen hinzuzufügen (damit nach Speichern wieder am Ende mit der Eingabe fortgesetzt werden kann.
Wenn ich den Text eines Memos, welcher am Ende Leerzeilen enthält, speichere, und anschliessend wieder lade, dann sind die Leerzeilen noch immer vorhanden.
Wenn man dann noch den Cursor ans Ende setzt (Selection), dann kann man auch sofort am Ende weiterschreiben.
Sehe hier also kein Problem.

Zitat von maanton:
"Zeilentext 1"<CR><LF>
"Zeilentext 2"<CR><LF>
""<CR><LF>
"Zeilentext 4"<CR><LF>
<CR><LF>

liefert er bei lines.count 4 Zeilen zurück; Er sollte aber 5 zeilen zurückliefern.
Nein, denn Du hast nur vier Zeilen - das letzte CRLF ist keine Zeile!

Zitat von maanton:
Wie schon gezeigt, liefert Memo.Text immer ein CRLF am Ende.
Wenn Du das doch weisst, und nach Deiner Logik auch ein abschließendes CRLF als Zeile interpretiert werden soll, warum sagst Du dann nicht einfach 'Lines.Count + 1'?

Edit:
wenn es Dir aber wirklich darum geht, zu ermitteln, wieviele Leerzeilen sich am Ende Deines Textes befinden, dann könntest Du das so machen (Achtung: auch hier wird ein abschließendes CRLF nicht als Leerzeile interpretiert)

Delphi-Quellcode:
Function TForm1.CountBlankLines(_Memo: TMemo; _bEndOnly: Boolean = True): Integer;
Var
   i: Integer;
Begin
   Result := 0;
   If _Memo.Text <> 'Then Begin
      For i := _Memo.Lines.Count - 1 Downto 0 Do Begin
         If _Memo.Lines.Strings[i] = 'Then
            Inc(Result)
         Else
            If _bEndOnly Then
               Break;
      End;
   End;
End;
Edit: Wenn Du als zweiten Parameter 'False' übergibst, werden auch Leerzeilen gezählt, die sich innerhalb Deines Textes befinden.
  Mit Zitat antworten Zitat