![]() |
Anzahl der Zeichen im String (ohne Leerzeichen) zählen.
Hallo Leute, ich habe jetzt als schriftliches Prüfungsfach Informatik.
Thema ist es mit den Datentyp String zu arbeiten. Hier die Aufgabe: Gesucht ist ein Programm, dass die Anzahl der Zeichen(außer Leerzeichen) in einem Memofeld zählt. Meine Frage ist, wie ich das mit den Leerzeichen berücksichtigen kann? Hier mein Code, so wie es funktioniert, nur halt mit Leerzeichen.
Delphi-Quellcode:
[edit=Matze]Titel geändert. MfG, Matze[/edit]
procedure TForm1.check_btn(Sender: TObject);
var ck:string; var i:integer; begin ck := Memo1.Text; i:= Length(ck); Panel1.Caption := IntToStr(i); end; |
Re: Datentyp String
Leerzeichen zählen (Pos/PosEx) und von Gesamtanzahl abziehen
|
Re: Datentyp String
Hi,
Alternativ, wenn evtl. auch weniger performanent als die Lösung von mkinzler, einfach den ganzen String/Memo-Inhalt durchgehen und bei allem was nicht Leerzeichen ist selbst hochzählen. MfG Benedikt |
Re: Datentyp String
Guten Abend,
ein Weg ist mit StringReplace die Leerzeichen durch kein Zeichen zu ersetzen und dann die Länge des Textes zu ermitteln. Ein anderer Weg ist, die Zeichen des Textes zu überprüfen. Wenn ein Zeichen kein Leerzeichen ist dann einen Zähler erhöhen. Grüße Klaus |
Re: Datentyp String
den Memoinhalt in eine Stringgvariable (S) kopieren,
in 'ner For-Schleife alles von Zeichen[1] bis Zeichen[Length(S)] durchgehen und auf in einer weiteren Variable mitzählen oft es vorkommt, daß ein Zeichen kein Leerzeichen ist (S[i] <> ' ') |
Re: Datentyp String
Oder aber 4. Möglichkeit:
Delphi-Quellcode:
Edit: öha, die is mitlerweile ja auch schon erwähnt ;)
Length(StringReplace(Memo1.Text, ' ','', [rfReplaceAll]));
|
Re: Datentyp String
da fehlt noch ein Length(Memo.Text)- :zwinker:
(ist zwar ein einfacher Weg, aber dafür auch mit einer der Langsamsten) :dp: Ach ja, würdest du bitte dem Thema(ersten Post) einen schöneren und vorallem aussagekräftigeren Namen verpassen? |
Re: Datentyp String
Zitat:
man nehme das for schleifchen ... und zähle die leerzeichen ... und ziehe die von der länge des strings ab ... ;-) |
Re: Datentyp String
Zitat:
|
Re: Datentyp String
Also, echt Leute. Vielen Dank für Eure Hilfe und für Eure wirkclich SCHNELLE Antworten. :-D
Funktioniert Super!!! |
Re: Datentyp String
Habe da mal noch zwei kleine Frage. Wie kann ich Vokale in der Memo zählen lassen?
2.Wie kann ich mehrere Sachen replacen, also z.B. alle Vokabeln.
Delphi-Quellcode:
Length(StringReplace(ck, ' ','', [rfReplaceAll]));
|
Re: Datentyp String
Wobei ich mir ziemlich sicher bin, dass der Lehrer bestimmt nicht die Möglichkeiten mit StringRepalce und Length haben wollte.
Zitat:
Noch ein Indiz, dass der Lehrer wohl die for-Schleife mit dem überprüfen jede einzelnen Zeichens haben wollte. Lernziel sind wohl Schleifen und if-Abfragen. Erst war es nur eine einfache Abfrage -- nur Leerzeichen -- jetzt geht es wohl darum Bedingungen mit logischen Operatoren zu verknüpfen. |
Re: Datentyp String
In diesem Fall wäre eine Schleife eine gute Lösung
Oder mehrere geschachtelte StringReplace |
Re: Datentyp String
Tut mir leid, ich weiß leider nicht wie ich in diesem Fall mit Length eine For Schleife bilden soll :?:
Kann mir jemand einen Ansatz geben, damit ich mir selber erklären kann? Danke |
Re: Datentyp String
Na die Schleife lässt du von 1 bis Length(memo.text) laufen und als If-Abfrage in jeden Schleifendurchlauf nimmst du etwas ala
Delphi-Quellcode:
Edit: Und ich hoffe, dass du weißt, wie man auf einzelne Zeichen eines Strings zugreift!?
if 'a' in ['a','e','i','o','u'] then showmessage('moin');
Delphi-Quellcode:
einText[1]
|
Re: Datentyp String
Delphi-Quellcode:
For i := 1 to Length( str) do
if UpperCase(str[i]) in ['A', 'E', 'I', 'O', 'U'] then inc( Vokale); |
Re: Datentyp String
Nur mal der Vollständigkeit halber die Methode mit PosEx:
Delphi-Quellcode:
EDIT: Das kommt davon, das man mehrere Tage irgendwelche Tabs offen lässt. Dank Browsercache steht da dann immer noch "heute" beim letzten Beitrag :wall:
procedure TextLength(txt: String; ignore: Char);
var count, pos: Integer; begin pos := 0; count := -1; repeat pos := PosEx(ignore, txt, Succ(pos)); Inc(count); until pos = 0; ShowMessage(IntToStr(Length(txt)) + ' Zeichen - ' + IntToStr(count) + ' "' + ignore + '" = ' + IntToStr(Length(txt) - count) + ' Zeichen'); end; |
Re: Datentyp String
Aber bitte nicht pos nennen :zwinker:
|
Re: Datentyp String
ist dad der stil von eurem informatiklehrer?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:54 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