Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Memo.Lines.Count - Anomalie ? (https://www.delphipraxis.net/180910-memo-lines-count-anomalie.html)

wendelin 30. Jun 2014 14:32

Memo.Lines.Count - Anomalie ?
 
Hallo,
mir ist bei der Programmierung
Delphi-Quellcode:
 Form4 := TForm4.Create(SELF);
mit einer Memo-Komp.
folgendes aufgefallen: wenn ich nach der Erstellung des Formulars mit der Memo-Komp. (diese ist voll-
ständig leer - KEIN text !) mit
Delphi-Quellcode:
SHOWMESSAGE(IntTOStr(Memo.Lines.Count))
die
Zeilenanzahl ausgebe erscheint immer '1' ??
Wenn ich über
Delphi-Quellcode:
 Memo.Clear
den eigentlich schon leeren Text lösche erscheint endlich
die '0' !
Ich benötige die Memo-Komp. um SQL-Anweisungen via Delphi an Interbase zu schicken, zu editieren
und zu speichern und wenn ich versehentlich den entsprechenden Button drücke, kommt logischerweise die Fehlermeldung "EMPTY SQL-Statement". Vielleicht weiß jemand die Antwort.

Wendelin

arnof 30. Jun 2014 14:38

AW: Memo.Lines.Count - Anomalie ?
 
leer wird ein Memofeld nur mit

Memox.Lines.clear


Sonst ist eine Leerzeile auch ein Inhalt :wink:

Uwe Raabe 30. Jun 2014 14:39

AW: Memo.Lines.Count - Anomalie ?
 
Zitat:

Zitat von wendelin (Beitrag 1263840)
(diese ist voll-
ständig leer - KEIN text !)

Offensichtlich nicht! Zumindest eine leere Zeile scheint dort enthalten zu sein. Wie stellst du denn fest, ob das Memo leer ist?

himitsu 30. Jun 2014 16:35

AW: Memo.Lines.Count - Anomalie ?
 
Trim :stupid:

arnof 30. Jun 2014 16:47

AW: Memo.Lines.Count - Anomalie ?
 
Zitat:

Zitat von himitsu (Beitrag 1263855)
Trim :stupid:

Trim ist auch eine Leerzeile :wink:

Höchstens sowas:

Memo1.lines.Text:=Trim(Memo1.lines.Text);

wenn da aber ein Umbruch drin ist, dann bleibt der Count>0

Also es hilft nur

memo1.lines.clear;

wendelin 30. Jun 2014 16:53

AW: Memo.Lines.Count - Anomalie ?
 
OK,
vielen Dank,
Dann muß ich allso bevor ich Text ins Memo eingebe dieses immer mit Memo.Clear löschen.

Danke
Wendelin

p80286 30. Jun 2014 17:12

AW: Memo.Lines.Count - Anomalie ?
 
Oder du verwendest
Delphi-Quellcode:
Memo1.Lines.Text:='';
oder
Delphi-Quellcode:
Memo1.Lines.Text:='Mein Text ist.....';
Gruß
K-H

himitsu 30. Jun 2014 17:13

AW: Memo.Lines.Count - Anomalie ?
 
Zitat:

Zitat von arnof (Beitrag 1263858)
Trim ist auch eine Leerzeile :wink:

Nicht, wenn man das getrimmte an die SQL-Komponente übergibt.

Zeilenumbrüche werden auch entfernt. :angel:
Trim entfernt alle ASCII-Steuerzeichen und das Leerzeichen (
Delphi-Quellcode:
#0..' '
)

arnof 1. Jul 2014 08:35

AW: Memo.Lines.Count - Anomalie ?
 
Zitat:

Zitat von wendelin (Beitrag 1263860)
OK,
vielen Dank,
Dann muß ich allso bevor ich Text ins Memo eingebe dieses immer mit Memo.Clear löschen.

Danke
Wendelin

memo.Lines.Clear

Das geht auf die TStringlist des Memos, memo.Clear ist eine Windowsfunktion und kann sich je mach Komponentenart auch anders verhalten :wink:

Zitat:

Trim entfernt alle ASCII-Steuerzeichen und das Leerzeichen (#0..' ' )
Trim entfernt KEINE Umbrüche die ein Memo so hat!

DeddyH 1. Jul 2014 08:57

AW: Memo.Lines.Count - Anomalie ?
 
Zitat:

Zitat von arnof (Beitrag 1263908)
memo.Lines.Clear

Das geht auf die TStringlist des Memos, memo.Clear ist eine Windowsfunktion und kann sich je mach Komponentenart auch anders verhalten :wink:

Ein Blick in die StdCtrls von XE:
Zitat:

Delphi-Quellcode:
procedure TMemoStrings.Clear;
begin
  Memo.Clear;
end;

Die Liste ruft intern also Clear des Memos auf, da kann man das auch selbst tun.

Zitat:

Zitat von arnof (Beitrag 1263908)
Trim entfernt KEINE Umbrüche die ein Memo so hat!

Gibt es auch spezielle Memo-Umbrüche? Ich dachte immer, das sei auch nur CR, LF oder beides.

hathor 1. Jul 2014 10:27

AW: Memo.Lines.Count - Anomalie ?
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1263842)
Zitat:

Zitat von wendelin (Beitrag 1263840)
(diese ist voll-
ständig leer - KEIN text !)

Offensichtlich nicht! Zumindest eine leere Zeile scheint dort enthalten zu sein. Wie stellst du denn fest, ob das Memo leer ist?

Die 2 Bytes 0D 0A sind enthalten.
Das hätte der Fragesteller aber auch selbst feststellen können!

Delphi-Quellcode:
procedure TForm2.Button3Click(Sender: TObject);
begin
Memo1.lines.savetofile('F:\STF3.txt');
end;

procedure TForm2.Button4Click(Sender: TObject);
begin
Memo1.Clear;
Memo1.lines.savetofile('F:\STF4.txt');
end;

arnof 1. Jul 2014 10:39

AW: Memo.Lines.Count - Anomalie ?
 
Zitat:

Zitat von DeddyH (Beitrag 1263911)
Zitat:

Zitat von arnof (Beitrag 1263908)
memo.Lines.Clear

Das geht auf die TStringlist des Memos, memo.Clear ist eine Windowsfunktion und kann sich je mach Komponentenart auch anders verhalten :wink:

Ein Blick in die StdCtrls von XE:
Zitat:

Delphi-Quellcode:
procedure TMemoStrings.Clear;
begin
  Memo.Clear;
end;

Die Liste ruft intern also Clear des Memos auf, da kann man das auch selbst tun.

Zitat:

Zitat von arnof (Beitrag 1263908)
Trim entfernt KEINE Umbrüche die ein Memo so hat!

Gibt es auch spezielle Memo-Umbrüche? Ich dachte immer, das sei auch nur CR, LF oder beides.


also bei meinem Trim werden in Delphi XE2 keine Umbrüche entfernt :wink: , das ist doch auch die Lösung des Ursprünglichen Problems (die Frage des #1 Beitrags :!:

DeddyH 1. Jul 2014 11:00

AW: Memo.Lines.Count - Anomalie ?
 
Dann machst Du wohl irgendetwas falsch. Was kommt denn hierbei heraus?
Delphi-Quellcode:
  Memo1.Clear;
  Memo1.Lines.Add('');
  Memo1.Lines.Add('');
  Memo1.Lines.Add('');
  Memo1.Lines.Add('');
  Memo1.Lines.Add('');
  ShowMessage(IntToStr(Memo1.Lines.Count));
  Memo1.Text := trim(Memo1.Text);
  ShowMessage(IntToStr(Memo1.Lines.Count));

wendelin 1. Jul 2014 11:05

AW: Memo.Lines.Count - Anomalie ?
 
Vielen Dank für Eure Hinweise.

Ich habe jetzt einfach bei den EVENTS (ONCREATE) des erzeugten Formulars ein
Delphi-Quellcode:
procedure TForm4.FormCreate(Sender: TObject);
begin
  Memo2.Clear;
end;
eingefügt. Klappt bestens!

Danke nochmals !


Wendelin

himitsu 1. Jul 2014 13:26

AW: Memo.Lines.Count - Anomalie ?
 
Zitat:

Zitat von DeddyH (Beitrag 1263925)
Dann machst Du wohl irgendetwas falsch.

Das macht er wohl, denn das was Trim macht, hatte ich ja beschrieben.
Und das entfernt definitiv alle Arten von Zeilenumbrüchen (Windows, Linux und Mac) aus einem String.

Sir Rufo 1. Jul 2014 19:21

AW: Memo.Lines.Count - Anomalie ?
 
Zitat:

Zitat von himitsu (Beitrag 1263948)
Zitat:

Zitat von DeddyH (Beitrag 1263925)
Dann machst Du wohl irgendetwas falsch.

Das macht er wohl, denn das was Trim macht, hatte ich ja beschrieben.
Und das entfernt definitiv alle Arten von Zeilenumbrüchen (Windows, Linux und Mac) aus einem String.

Der Befehl Trim entfernt nicht etwa nur Leerzeichen am Anfang und Ende, sondern alles was als Whitespace definiert ist (dazu gehören nun mal auch die Zeilenumbrüche).

himitsu 1. Jul 2014 20:05

AW: Memo.Lines.Count - Anomalie ?
 
Sagte ich doch. :angel:

Es werden alle Whitespaces ASCII-Steuerzeichen entfernt, also vorne und hinten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:23 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