![]() |
Leerzeichen in einem String zählen
Hallo,
Ich hab ein Problem mit delphi 5 ... hab so gut wie keine Erfahrung, wir lernen delphi gerade in der schule :/ Ich soll in einem String, der z.B.: "Das ist ein Beispielsatz" heißt, die Leerzeichen zählen und in einem edit Feld wiedergeben, wenn auf einen Button gedrückt wird. Nun ja ich hab nun unzählige Google-Suchen gestartet aber kein Thema traf auf meins zu. Kann wer helfen? loki |
Re: Leerzeichen in einem String zählen
Entweder
-mit Pos()/PosEx() Leerzeichen suchen oder -Lange ermittlen; Leerzeichen durch Leerstrings ersetzen; neue länge ermittlen -> Unterschied |
Re: Leerzeichen in einem String zählen
oder
in einer Schleife alle Zeichen durchgehn und alle Leerzeichen zählen, welche vorbeikommen :roll: |
Re: Leerzeichen in einem String zählen
Erstmal falsche Forum. Das hat nichts mit der IDE zu tun.
Zweitens kann man über den Index auf ein Zeichen in einem String zu greifen. Mit einer for-schleife so nacheinander auf jedes einzelne Zeichen. Jetzt überlege mal weiter. @mkinzler: Ist das nicht etwas umständlich? |
Re: Leerzeichen in einem String zählen
Nein warum? Sind 3 Befehle
|
Re: Leerzeichen in einem String zählen
Er braucht doch die Anzahl. Wie bekommt er bei deiner Vorgehensweise die Anzahl?
|
Re: Leerzeichen in einem String zählen
oh man peinlich xD :oops: ich hab ja so keine ahnung...
Wenn mir jemand sagt: Zitat:
Habs nun so:
Delphi-Quellcode:
Nun wird, wenn ich den Button drücke, das Edit1 Feld, in dem der Satz stand, einfach gelöscht...was mach ich falsch? (ich weiß ist einiges...:P)
var
s:string; begin Edit1.Text := s; Pos(' ',s); end; end. loki |
Re: Leerzeichen in einem String zählen
Zitat:
- alte Länge mit Length() ermitteln und in Variable speichern - Leerzeichen im String durch einen Leerstring ersetzen mit StringReplace() - neue Länge ermitteln - AlteLänge - NeueLänge = Anzahl der Leerzeichen Hm, das wären aber 4 Schritte. Edit: Einen String kannst du so durchgehen:
Delphi-Quellcode:
Auf ein einzelnes Zeichen kannst du so zugreifen bzw. es mit einem Char, hier ' ', vergleichen:
for i := 1 to Length(DeinString) do
Delphi-Quellcode:
Den rest kriegst du hin. ;)
DeinString[i]
|
Re: Leerzeichen in einem String zählen
Geht aber auch in einer Zeile :zwinker:
|
Re: Leerzeichen in einem String zählen
Delphi-Quellcode:
Den Rest überleg dir mal selber.
for i := 1 to length(s) do
begin if s[i] = ??? then Zaehler := Zaehler + 1 end; @Matze: Jetzt hab eich es auch verstanden. Gar nicht mal so dumm. ;) Aber ich glaube, der Lehrer dachte eher an eine Schleife. |
Re: Leerzeichen in einem String zählen
Zitat:
PS: die Schleife macht genau das, was der Mensch auch machen würde ... sich alle Zeichen der Reihe nach ansehn und dabei die gewünschten Zeichen zählen ;) |
Re: Leerzeichen in einem String zählen
So nun kann der Code nicht compiled werden, liegts daran, dass der Zaehler noch nicht wiedergegeben wurde, oder an was anderem?
Delphi-Quellcode:
loki
var
i,zaehler:integer; s:string; begin s := Edit1.Text; for i := 1 to length(s) do begin if s[i] = ' ' then //Falls im string Leerzeichen gefunden werden (' ') dann zaehler := zaehler + 1//erhoehe den Zaehler um 1, oder? end; end. |
Re: Leerzeichen in einem String zählen
Geschickt wäre es wohl, wenn du uns die Fehlermeldung sagen würdest.
|
Re: Leerzeichen in einem String zählen
Der Wert von "zaehler" ist zu Beginn undefiniert. Wenn du "zaehler" vor der Schleife den Wert 0 zuweist, sollte es gehen.
|
Re: Leerzeichen in einem String zählen
Fehlermeldung:
Auf 'zaehler' zugewiesener Wert wird niemals benutzt. " selbe nochmal " ';' erwartet aber '.' gefunden hab zaehler 0 zugewiesen, denk ich jetzt, also hab zaehler := 0 geschrieben, hat dennoch nicht geklappt. |
Re: Leerzeichen in einem String zählen
OK, am Ende der Schleife steht in der Variablen zaehler jetzt was drin. Und nu?
Zitat:
|
Re: Leerzeichen in einem String zählen
zähle mal die END; am Ende deiner Prozedur.
PS: sowas läßt sich übrigens mit einer "ordentlichen" Codefarmatierung "recht" leicht entdecken. |
Re: Leerzeichen in einem String zählen
Das erste sagt aus, dass du den Wert nicht nutzt, also nirgendwo weiterverarbeitest, ausgibst o.ä. Das ist auch nur ein Hinweis und kein Fehler. Nach
Delphi-Quellcode:
solltest du ein ";" einfügen (sagt die Fehlermeldung deutlich).
zaehler := zaehler + 1
Luckie hat es bereits geschrieben: Sagte uns, was nicht geht, welche Meldungen kommen etc. "hat dennoch nicht geklappt" hilft keinem. Achja, ganz wichtig: ![]() |
Re: Leerzeichen in einem String zählen
Irgendwie habe ich das Gefühl dass meine pädagogischen Antworten torpediert werden. ;)
|
Re: Leerzeichen in einem String zählen
Wenn Fehler auftauchen überprüfe ich als erstes ob ein Semikolon fehlt, soweit bin ich.
Ehm... END's hab ich 2, eine zum beenden der Schleife und die andere um die Button-aktion zu beenden. Ich denke das Problem ist, dass der Wert vom zaehler nicht ausgegeben wird, aber wie gebe ich den Wert nun in einem Edit-Feld aus? Normalerweise sieht es ja dann so aus label1.caption := IntToStr(zaehler); wieso geht das hier nicht: Edit1.Caption := IntToStr(zaehler); ? |
Re: Leerzeichen in einem String zählen
Es fehlt auch das Prozedurende
|
Re: Leerzeichen in einem String zählen
Zitat:
|
Re: Leerzeichen in einem String zählen
ich brauch insgesamt 3 end's ?
Hab mir gedacht, wenn ich 2 begin drin habe, reichen 2 end's aus. hm. Ich habs nun einfach mit Label1.Caption := IntToStr(zaehler); gemacht um irgend ein Ergebnis zu sehen um nicht ganz zu verzweifeln :X. Jetzt hab ich noch eine Fehlermeldung zu beseitigen. "Auf 'i' zugewiesener Wert wird niemals genutzt" "Deklaration erwartet, aber Dateiende gefunden" Muss ich 'i' nochmal irgendwie einen Wert zuweisen oder sowas? Wie beim zaehler := 0 ? |
Re: Leerzeichen in einem String zählen
Wie sieht denn dein Quellcode jetzt aus?
|
Re: Leerzeichen in einem String zählen
Delphi-Quellcode:
var
i,zaehler:integer; s:string; begin s := Edit1.Text; i := 0; // war nur ein versuch.. zaehler := 0; for i := 1 to length(s) do begin if s[i] = ' ' then zaehler := zaehler + 1; Label1.Caption := IntToStr(zaehler); end; end; |
Re: Leerzeichen in einem String zählen
Zitat:
|
Re: Leerzeichen in einem String zählen
das dritte end wird mir unterstrichen /:
Kann es sein dass die verschiedenen Aktionen sich gegenseitig behindern können? Das Formular sieht so aus um mal eine kleine Vorstellung zu bekommen: ![]() |
Re: Leerzeichen in einem String zählen
Formatiere doch mal deinen Quellcode ordentlich mit Einrückungen, dann siehst du auch deine Fehler.
|
Re: Leerzeichen in einem String zählen
:? das wird hier zum ratespiel ^^
Hab mal alles ein bisschen übersichtlicher gemacht und bin der Meinung der Fehler liegt irgendwo hier:
Delphi-Quellcode:
Fehlermeldung ist ja, "erwartet Deklaration, aber Dateiende gefunden" und alles was nicht deklariert worden ist bzw. nichts zugewiesen worden ist, ist das 'i' :/
for i := 1 to length(s) do
begin if s[i] = ' ' then |
Re: Leerzeichen in einem String zählen
Rücke mal die ganze Unit so ein, dass die begin/end Paare auf gleicher Position liegen
|
Re: Leerzeichen in einem String zählen
aha ich hatte nicht ein end zuviel sondern ein begin zuviel!
habs nun so;
Delphi-Quellcode:
Nun klappts auch...puhh, war dass eine schwere Geburt xD, danke an alle für die ganzen Hinweise. Morgen geht der Spaß denke ich weiter^^
var
i, zaehler : integer; s : string; begin s := Edit1.Text; zaehler := 0; for i := 1 to length(s) do if s[i] = ' ' then zaehler := zaehler + 1; showmessage( IntToStr(zaehler)); end; end. loki PS: Gute Nacht |
Re: Leerzeichen in einem String zählen
Ich hatte eher so
Delphi-Quellcode:
gedacht
var
i, zaehler: integer; s: string; begin s := Edit1.Text; zaehler := 0; for i := 1 to length(s) do if s[i] = ' ' then zaehler := zaehler + 1; showmessage( IntToStr(zaehler)); end; |
Re: Leerzeichen in einem String zählen
Hallo,
oder um bei den begin/end zu bleiben
Delphi-Quellcode:
Klar ist hier begin/end nicht notwendig,
var
i, zaehler: integer; s: string; begin s := Edit1.Text; zaehler := 0; for i := 1 to length(s) do begin if s[i] = ' ' then begin zaehler := zaehler + 1; end; // if s[i] = ' ' then end; // for i := 1 to length(s) do showmessage( IntToStr(zaehler)); end; { procedure ... } macht es aber leichter erweiterbar, falls nach dem then noch mehr Zeilen kommen sollen. Heiko |
Re: Leerzeichen in einem String zählen
Endlich mal jemand der sich bemüßigt fühlt zu schreiben wozu ein end gehört.
Gruß k-H |
Re: Leerzeichen in einem String zählen
Zitat:
|
Re: Leerzeichen in einem String zählen
Hallo,
1. ich bin ein #-Sammler (haben wollen) 2. war das nur für den Thread-Ersteller ;) Heiko |
Re: Leerzeichen in einem String zählen
Es war eigentlich kein begin zu viel, sondern genau richtig. Allerdings gibt es ein end was kein begin hat. Und zwar ist es das letzte Wort in der Datei:
Delphi-Quellcode:
Und das hast du anscheinend nie gezeigt.
[...]
end. Um das mal so zu sagen:*zu jedem begin gehört ein end;. MfG Fabian |
Re: Leerzeichen in einem String zählen
Zitat:
|
Re: Leerzeichen in einem String zählen
Das war ja nur eine Anregung. Etwas sollte der Fragesteller schon noch selber machen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:27 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