AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TMemo : Leerzeilen am Ende erkennen

Ein Thema von maanton · begonnen am 18. Sep 2007 · letzter Beitrag vom 18. Sep 2007
Antwort Antwort
Seite 2 von 2     12   
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#11

Re: TMemo : Leerzeilen am Ende erkennen

  Alt 18. Sep 2007, 14:25
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
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#12

Re: TMemo : Leerzeilen am Ende erkennen

  Alt 18. Sep 2007, 14:27
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.
  Mit Zitat antworten Zitat
maanton

Registriert seit: 10. Sep 2007
16 Beiträge
 
#13

Re: TMemo : Leerzeilen am Ende erkennen

  Alt 18. Sep 2007, 14:31
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
  Mit Zitat antworten Zitat
maanton

Registriert seit: 10. Sep 2007
16 Beiträge
 
#14

Re: TMemo : Leerzeilen am Ende erkennen

  Alt 18. Sep 2007, 14:45
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
  Mit Zitat antworten Zitat
Thorben_Ko

Registriert seit: 8. Jun 2007
86 Beiträge
 
#15

Re: TMemo : Leerzeilen am Ende erkennen

  Alt 18. Sep 2007, 15:12
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:
function LeerzeichenAmEnde(str : String):LongInt;
begin

result := Length(str) - (Length(Trim(str));

end;
so kannst das denke ich machen.

Thorben
  Mit Zitat antworten Zitat
kaiser1401

Registriert seit: 6. Mär 2006
Ort: Gescher
157 Beiträge
 
Delphi 7 Professional
 
#16

Re: TMemo : Leerzeilen am Ende erkennen

  Alt 18. Sep 2007, 17:20
@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.
inc(i);
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#17

Re: TMemo : Leerzeilen am Ende erkennen

  Alt 18. Sep 2007, 18:09
Zitat von kaiser1401:
@Thorben_Ko, ich glaube es gin um Leerzeilen nicht um Leerzeichen
Und? Du kannst als String auch Memo1.Text übergeben.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:37 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