AGB  ·  Datenschutz  ·  Impressum  







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

Memo Zeichenzähler mit Eingabe

Ein Thema von DaveRidge · begonnen am 29. Jan 2010 · letzter Beitrag vom 31. Jan 2010
Antwort Antwort
Seite 2 von 2     12   
DaveRidge

Registriert seit: 14. Sep 2009
53 Beiträge
 
#11

Re: Memo Zeichenzähler mit Eingabe

  Alt 30. Jan 2010, 00:38
MMh, mir fällt grd auf, das wenn ich was lösche, das dies als zeichen mit hinzugefügt wird.
MMh, naja. Ich mach morgen weiter. Heute isses mir zu spät.

MfG Dave
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#12

Re: Memo Zeichenzähler mit Eingabe

  Alt 30. Jan 2010, 02:35
Zitat von DaveRidge:
MMh, mir fällt grd auf, das wenn ich was lösche, das dies als zeichen mit hinzugefügt wird.
MMh, naja. Ich mach morgen weiter. Heute isses mir zu spät.

MfG Dave
Weil ich nicht die Zeichen zähle, sondern nur die Tastendrücke. War auch nur als Anregung gedacht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#13

Re: Memo Zeichenzähler mit Eingabe

  Alt 30. Jan 2010, 09:27
Hi!

Als Tipp dazu:
Du musst dann noch abfragen, welches Zeichen da so kommt - es kommen ja nur 2 Tastendrücke in Frage, die etwas löschen können.
Allerdings gibt es noch mehr Sonderfälle:
Markierten Text (mehr als ein Zeichen) löschen oder sogar ausschneiden oder überschreiben...
Auch das Einfügen von Text (sei es über Kontextmenü oder über Tastenkombi) solltest du bedenken...


Grüße, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.589 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: Memo Zeichenzähler mit Eingabe

  Alt 30. Jan 2010, 10:14
Zitat von DaveRidge:
Form1.StatusBar1.Panels[1].Text:=('Zeichenzahl: ' + InttoStr(zeichenzaehler));
Vorausgesetzt du bist innerhalb von Form1 ist das eine sehr schlechte Idee explizit auf die in der globalen Variablen Form1 gespeicherte Instanz des Formulares zuzugreifen.
Das solltest du wie beim Memo lieber weglassen.

Zum Thema: Warum denkt ihr so kompliziert?
Delphi-Quellcode:
  StatusBar1.Panels[1].Text := 'Zeichenzahl: '
    + IntToStr(Length(StringReplace(Memo1.Text, #13#10, ' ', [rfReplaceAll])));
Bzw. wenn der Zeilenumbruch gar nicht gezählt werden soll, dann einfach durch einen leeren String statt mit einem Leerzeichen ersetzen, fertig.

Diese Lösung ist zwar langsamer usw. als einfaches Zählen, aber bei der zu erwartenden Zeichenanzahl spielt das ja keine Rolle.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.065 Beiträge
 
Delphi XE2 Professional
 
#15

Re: Memo Zeichenzähler mit Eingabe

  Alt 30. Jan 2010, 12:36
Zitat von jaenicke:
Zitat von DaveRidge:
Form1.StatusBar1.Panels[1].Text:=('Zeichenzahl: ' + InttoStr(zeichenzaehler));
Vorausgesetzt du bist innerhalb von Form1 ist das eine sehr schlechte Idee explizit auf die in der globalen Variablen Form1 gespeicherte Instanz des Formulares zuzugreifen.
Das solltest du wie beim Memo lieber weglassen.

Zum Thema: Warum denkt ihr so kompliziert? :mrgreen:
Delphi-Quellcode:
  StatusBar1.Panels[1].Text := 'Zeichenzahl: '
    + IntToStr(Length(StringReplace(Memo1.Text, #13#10, ' ', [rfReplaceAll])));
Bzw. wenn der Zeilenumbruch gar nicht gezählt werden soll, dann einfach durch einen leeren String statt mit einem Leerzeichen ersetzen, fertig.

Diese Lösung ist zwar langsamer usw. als einfaches Zählen, aber bei der zu erwartenden Zeichenanzahl spielt das ja keine Rolle.
Da finde ich Luckies Vorschläge, bzw. das was sich daraus ergibt, deutlich eleganter:
StatusBar1.Panels[1].Text:=IntToStr(Length(Memo1.Text)-Memo1.Lines.Count);
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.589 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: Memo Zeichenzähler mit Eingabe

  Alt 30. Jan 2010, 14:02
Zitat von Amateurprofi:
Da finde ich Luckies Vorschläge, bzw. das was sich daraus ergibt, deutlich eleganter:
StatusBar1.Panels[1].Text:=IntToStr(Length(Memo1.Text)-Memo1.Lines.Count);
Nur dass du festgestellt hättest, dass es so nicht funktioniert, wenn du es ausprobiert oder die Antworten gelesen hättest...
Zitat von DaveRidge:
Zitat von Luckie:
Na dann ziehe die Anzahl der Zeilen wieder ab. Dann müsste es stimmen. Bei zwei Zeilen hast du vier Steuerzeichen minus zwei Zeilen sind ein Steuerzeichen pro Zeile.
Das hab ich jetzt auch mal gemacht, von den Zeichen her passt es, nur beim Eingabe zählt er immernoch 2 Zeichen, aber dann bei der neuen Zeile der erste Buchstabe zählt er nicht mit. Er fängt dann beim 2.ten Zeichen an.
Das lässt sich sicher auch noch korrigieren, aber da hatte ich jetzt keine Lust zu.
// EDIT:
Es sollte reichen bei 0 Zeichen in der letzten Zeile nochmal minus Eins zu rechnen. Kommt noch dazu, dass man die Leerzeile woanders machen kann...
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.065 Beiträge
 
Delphi XE2 Professional
 
#17

Re: Memo Zeichenzähler mit Eingabe

  Alt 31. Jan 2010, 12:03
Ich hab das schon getestet, habe mir aber zugegebenermaßen nicht alle Kommentare angesehen und deswegen den Sonderfall (Zeile hat noch kein CRLF) nicht 'drauf gehabt.
So sollte es dann vollständig funktionieren:
Delphi-Quellcode:
var s:string; len:integer;
begin
   s:=Memo1.Text;
   len:=Length(s);
   dec(len,Memo1.Lines.Count-Integer((len>0) and (s[len]<>#10)));
   Statusbar1.Panels[0].Text:=IntToStr(len);
end;
M.E. sollte das aber nicht in Memo1KeyPress stehen sondern im Memo1Change.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#18

Re: Memo Zeichenzähler mit Eingabe

  Alt 31. Jan 2010, 12:10
Man könnte es auch mit
Anzahl := Length(Memo.Lines.DelimitedText); versuchen
Markus Kinzler
  Mit Zitat antworten Zitat
DaveRidge

Registriert seit: 14. Sep 2009
53 Beiträge
 
#19

Re: Memo Zeichenzähler mit Eingabe

  Alt 31. Jan 2010, 17:44
Hallo

Dank jaenicke, das war das was ich gesucht hatte
IntToStr(Length(StringReplace(Memo1.Text, #13#10, ' ', [rfReplaceAll]))); Funzt perfekt

MfG Dave
  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 20:44 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