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.