Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fragen zu Memo-Felder (https://www.delphipraxis.net/58731-fragen-zu-memo-felder.html)

-lx- 11. Dez 2005 20:06


Fragen zu Memo-Felder
 
Hallo.

Also ich würde gerne mal wissen, wie ich die gesamte Länge eines eingegebenen Textes in ein Memo-Feld auslesen kann.

wenn ich:

Delphi-Quellcode:
Laenge:= Length(MText.Lines) ; // Laenge ist ein Integer-Typ
schreibe, meckert Delphi, dass das "inkompatible Typen" sind.


Wes wer Rat?




Mit freundlichen Grüßen

Sharky 11. Dez 2005 20:08

Re: Fragen zu Memo-Felder
 
Hai -lx-

der gesamte Text (inkl. der Zeichen für den Zeilenumbruch!!) müsste in der Eigenschaft Delphi-Referenz durchsuchenText stehen.

-lx- 11. Dez 2005 20:14

Re: Fragen zu Memo-Felder
 
Diese Eigenschaft gibt es aber nicht bei Memo-Feldern.

Der Text, den man eingibt, steht in der Eigenschaft "Lines" (TStrings)...


mh...

Cyberbob 11. Dez 2005 20:17

Re: Fragen zu Memo-Felder
 
Nein, mit Lines kannst du Zeilen einfügen, mit Text kannst du einen Kompletten Text einfügen. Wenn du Lines benutzt, wird die Neue Zeile angehängt, wenn du Text benutzt, wird der alte Inhalt gelöscht,

Du hast abgefragt, wieviel Zeilen das Memo hat. Dies ist nicht möglich, da Lines ein String-Datentyp ist.

Wenn du abfragen möchtest, wieviel Zeichen im Memo sind benutze: Length(Memo1.Text)
Wenn du die Anzahl der Zeilen abfragen möchtest, benutze: Memo1.Lines.Count

MfG
Cyberbob

marabu 11. Dez 2005 20:21

Re: Fragen zu Memo-Felder
 
Hi,

Sharky meinte vielleicht Memo.Lines.Text ...

Grüße vom marabu

Sharky 11. Dez 2005 20:23

Re: Fragen zu Memo-Felder
 
Zitat:

Zitat von -lx-
Diese Eigenschaft gibt es aber nicht bei Memo-Feldern.

Nein? Bei mir gibt es die Eigenschaft.

In Delphi-Referenz durchsuchenLines stehen die einzelnen Zeilen des Memos. In Text steht der gesamte Text.

Du könntest es natürlich so machen wenn Du die Anzahl der Zeichen haben möchtest:

Delphi-Quellcode:
function CountMemoLines (aMemo : TMemo) : integer;
var
  ndx : integer;
  counter : integer;
begin
  counter := 0;
  for ndx := 0 to Pred(aMemo.Lines.Count) do
  begin
   counter := counter + Length(aMemo.Lines[ndx]);
  end;
  result := counter;
end;

procedure TForm1.btn_CharCountClick(Sender: TObject);
begin
  ShowMessage(IntToStr(CountMemoLines(memo_Memo1))); // Nur die Zeichen
  ShowMessage(IntToStr(Length(memo_Memo1.text))); // inkl. der Zeichen für Zeilenumbruch
end;

marabu 11. Dez 2005 20:37

Re: Fragen zu Memo-Felder
 
Interessant - meine Online-Hilfe unterschlägt mir die property TMemo.Text, aber kein Zweifel, sie existiert.

marabu

Sharky 11. Dez 2005 21:02

Re: Fragen zu Memo-Felder
 
Zitat:

Zitat von marabu
Interessant - meine Online-Hilfe unterschlägt mir die property ...

Jup. Sie steht wirklich nicht direkt in der OH. Das liegt wohl daran das Delphi-Referenz durchsuchenText eine Eigenschaft von .Lines ist.
Nur der Compiler ist so schlau zu erkennen das
Code:
Memo.Lines.Text
das selbe wie
Code:
Memo.Text
ist. Die Codevervollständigung schaft es darum auch die Property anzuzeigen (welche verwirrender Weise vom Type TCaption ist).

Aber Achtung!
Man sollte im Programm nicht zu oft (z.B in einer Schleife) auf .Text zugreifen.
Diese wird bei jeder Abfrage wieder neu zusammengesetzt. Und das kostest natürlich seine Zeit.

-lx- 11. Dez 2005 22:49

Re: Fragen zu Memo-Felder
 
Hab da snun wie folgt gelöst.

Danke euch ;)

Delphi-Quellcode:
begin
Laenge:= (Length(MText.Text)) ;

For i:= 1 To Laenge Do
 begin
    Buchstabe:= ord(MText.Text[i]) ;
    Case Buchstabe Of
       228 : Satz:= Satz + 'ä' ;
       196 : Satz:= Satz + 'Ä' ;
       246 : Satz:= Satz + 'ö' ;
       214 : Satz:= Satz + 'Ö' ;
       252 : Satz:= Satz + 'ü' ;
       220 : Satz:= Satz + 'Ü' ;
       223 : Satz:= Satz + 'ß' ;
       Else Satz:= Satz + chr(Buchstabe) ;
    end;
 end;
MText.Text:= Satz ;
end;

Luckie 11. Dez 2005 22:56

Re: Fragen zu Memo-Felder
 
Wie wäre es mit Delphi-Referenz durchsuchenStringReplace?


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