![]() |
Re: TMemo : Leerzeilen am Ende erkennen
Hallo,
TMemo bildet einen Text exakt wie vorgegeben ab. Enthaltene Zeilentrenner (!) werden bei der Zählung genau beachtet. Der Text 'two'#13#10'lines' führt erwartungsgemäß zu einer Zeilenzahl 2, wird doch der Text vor und nach dem Windows-Zeilentrenner #13#10 (sLineBreak) auf zwei Zeilen verteilt. Ein Sonderfall liegt beim Text 'one line'#13#10 vor. Die Zählung liefert den Wert 1, obwohl man argumentieren könnte, dass dem Zeilentrenner ein leerer String folgt und deshalb zwei Zeilen vorliegen. Hier haben die VCL-Entwickler entschieden, dass ein leerer String sich nicht als letzte Zeile qualifizieren kann. Damit wird sicher gestellt, dass die Zeilenzählung auch bei Verwendung von Lines.Add() ein erwartungsgemäßes Ergebnis liefert. Das alles funktioniert auch bei zwischenzeitlichem Speichern. Grüße vom marabu |
Re: TMemo : Leerzeilen am Ende erkennen
Also ehrlich gesagt blicke ich nicht mehr durch.
Situation: Ich habe ein Memo (Memo1), in welches ich gerade meine Memoiren schreibe. Und weil ich gerade so lustig bin, füge ich am Ende einfach mal ein paar Leerzeilen ein. Vielleicht kommen ja gleich, während ich beim Mittagessen sitze, die Hainzelmännchen, und schreiben irgeendwas in die Leerzeilen rein. So, nun ruft Mami zum Mittagessen. Plötzlich denke ich mir jedoch, bevor gleich das Hausschwein kommt, und meine Memoiren löscht, speichere ich den Text aus dem Memo lieber mal ab (Memo1.Lines.SaveToFile()) - und zwar auf der Festplatte in der Datei 'C:\MeineMemoiren.txt'. Und da ich ein energiebewusster Mensch bin, fahre ich den Rechner herunter und ziehe den Stecker raus. Nach dem Essen möchte ich weiterschreiben. Ich fahre also den Rechner wieder hoch, starte mein Programm, und lade meine Textdatei in das Memo (Memo1.Lines.LoadFromFile()). Und da ich ja genau dort weiterschreiben möchte, wo ich aufgehört habe, setze ich mit 'Memo1.SelStart := Length(Memo1.Text);' den Cursor an das Ende meines Memos - in diesem Falle hinter meine ganzen Leerzeilen, die ich vor dem Mittagessen eingefügt habe. |
Re: TMemo : Leerzeilen am Ende erkennen
Hallo pstruh !
Sorry - ich sollte auch vielleicht mein Deutsch wieder auf Vordermann bringen. Also - und das mag ja vielleicht etwas misstrauig erscheinen : Auch bei Zwischenspeichern möchte ich nach Speicherung den Inhalt der Datei anzeigen, meint : Zwischenspeichern-> Datei schreiben->datei schliessen->Datei wieder öffnen-> Memo leeren-> Datei auslesen und Memo wieder füllen->Datei schliessen Gruss maanton |
Re: TMemo : Leerzeilen am Ende erkennen
Hallo pstruh !
Das mit den Memoiren ist genau die Situation... . Nun ist es so, dass ich einfach mal so 2 Leerzeilen aus Formatierungsgründen einfügen möchte -> danach ruft Mami zu Essen->ordentlich,brav, wie ich bin, reagiere ich direkt->ich speichere ab, schliesse Programm, Rechner runter (wg. CO2 und so). Nach Mittagessen möchte ich einfach da weitermachen, wo ich war... (Also nach den 2 Leerzeilen). @Marabou : So was ähnliches hab ich mir gedacht. Etwas spitz formuliert :Im Gegensatz zu den VCL-Entwicklern bin ich der Meinung, das zwischen "Zeile 1" und "Zeile 1<CR><LF" ein Unterschied besteht. Zur Sicherstellung bei Lines.Add könnte man da entsprechend auch anderer Ansicht sein. - Oh, diese Philosophiesachen ! Am Schluss gibt es keine Argumente mehr, sondern nur noch Meinungen. Gibt es irgeneine Möglichkeit an die Rohmasse heranzukommen ? Wie ich schon mal bemerkte - ich muss mir das Memo eh beim Neueinlesen selbst zusammenbauen... Gruss maanton |
Re: TMemo : Leerzeilen am Ende erkennen
Sry ich hab jetzt nicht alles gelesen, aber wenn du die Anzahl der Leerzeichen am ende einer Zeile erfahren willst könntest du das mal versuchen:
Delphi-Quellcode:
so kannst das denke ich machen.
function LeerzeichenAmEnde(str : String):LongInt;
begin result := Length(str) - (Length(Trim(str)); end; Thorben |
Re: TMemo : Leerzeilen am Ende erkennen
@Thorben_Ko, ich glaube es gin um Leerzeilen nicht um Leerzeichen
Bei mir tut das alles genau das wa es soll... Lines.Count gibt auch die leerzeilen am Ende mit aus... sowohl vor dem speicehrn als auch danach, als auch nach einem Neustart des Programms
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Memo1: TMemo; Button3: TButton; Button4: TButton; Button5: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); // Laden begin memo1.Lines.SaveToFile('c:\temp\test.txt'); end; procedure TForm1.Button2Click(Sender: TObject); // Speichern begin memo1.Lines.LoadFromFile('c:\temp\test.txt'); end; procedure TForm1.Button3Click(Sender: TObject); // Memo leeren begin memo1.Clear; end; procedure TForm1.Button4Click(Sender: TObject); // Cursor setzen begin memo1.SelStart:=Length(memo1.Lines.Text); memo1.SetFocus; end; procedure TForm1.Button5Click(Sender: TObject); // Anzhl Zeilen Auslesen und anzeigen begin Label1.Caption:=inttostr(Memo1.Lines.Count); end; end. |
Re: TMemo : Leerzeilen am Ende erkennen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:06 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