Delphi-PRAXiS
Seite 1 von 2  1 2      

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/)
-   -   Memo Zeichenzähler mit Eingabe (https://www.delphipraxis.net/146945-memo-zeichenzaehler-mit-eingabe.html)

DaveRidge 29. Jan 2010 22:43


Memo Zeichenzähler mit Eingabe
 
Hallo, ich hab ein kleines Problem. Ich möchte die Zeichen vom Memo feld auslesen, sodass das mit der MaxLength passt. Nur die Eingabetaste nimmt er nicht mit, warum weiss ich net.
Hier ist bis jetzt mein Code:
Delphi-Quellcode:
var wort: string;
zeichenzahl, zeilenzahl,i,zeile,zeichenzaehler: Longint;
begin
 Zeichenzahl:=Memo1.lines.count;
 Zeichenzaehler:=0;
  FOR i:=0 TO zeichenzahl-1 DO
   Begin
    wort:=memo1.lines[i];
   zeichenzaehler:=zeichenzaehler+length(wort);
   end;
Form1.StatusBar1.Panels[1].Text:=('Zeichenzahl: ' + InttoStr(zeichenzaehler));
Ich Bitte um Hilfe

MfG Dave

Luckie 29. Jan 2010 22:46

Re: Memo Zeichenzähler mit Eingabe
 
Warum nicht
Delphi-Quellcode:
Length(Memo1.Text)

DaveRidge 29. Jan 2010 22:53

Re: Memo Zeichenzähler mit Eingabe
 
Zitat:

Zitat von Luckie
Warum nicht
Delphi-Quellcode:
Length(Memo1.Text)

Weil er dann bei der eingabetaste 2 Zeichen hinzufügt, statt ein zeichen.

MfG Dave

Luckie 29. Jan 2010 22:55

Re: Memo Zeichenzähler mit Eingabe
 
Ist ja auch richtig. Ein Return führt zu einem Zeilenvorschub und einem Wagenrücklauf. Und die zählen auch zu der Anzahl Zeichen.

DP-Maintenance 29. Jan 2010 22:56

DP-Maintenance
 
Dieses Thema wurde von "Luckie" von "Programmieren allgemein" nach "VCL / WinForms / Controls" verschoben.
Delphi VCL Thema.

DaveRidge 29. Jan 2010 22:59

Re: Memo Zeichenzähler mit Eingabe
 
Zitat:

Zitat von Luckie
Ist ja auch richtig. Ein Return führt zu einem Zeilenvorschub und einem Wagenrücklauf. Und die zählen auch zu der Anzahl Zeichen.

Ja, das stimmt, aber er soll bei der Eingabe nur ein zeichen zählen, denn wenn ich ne SMS sende, dann kommen nur 148 Zeichen oder so an, keine 160 Zeichen, wie ich das im Text geschrieben habe, versteht ihr?

Luckie 29. Jan 2010 23:00

Re: Memo Zeichenzähler mit Eingabe
 
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.

DaveRidge 29. Jan 2010 23:07

Re: Memo Zeichenzähler mit Eingabe
 
Zitat:

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.

MfG Dave

Luckie 29. Jan 2010 23:20

Re: Memo Zeichenzähler mit Eingabe
 
Dann von Hand zählen:
Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure Memo1KeyPress(Sender: TObject; var Key: Char);
  private
    { Private-Deklarationen }
    cntChars: Integer;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
  Inc(cntChars);
  Caption := IntToStr(cntChars);
end;

DaveRidge 29. Jan 2010 23:34

Re: Memo Zeichenzähler mit Eingabe
 
Zitat:

Zitat von Luckie
Dann von Hand zählen:
Delphi-Quellcode:
....

procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
  Inc(cntChars);
  Caption := IntToStr(cntChars);
end;


Jo, danke. genau das hab ich gesucht. Warum bin ich heut net selber dahinter gekommen?
Ist mir ein rätsel :-)

Trotzdem danke

MfG Dave


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:23 Uhr.
Seite 1 von 2  1 2      

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