AGB  ·  Datenschutz  ·  Impressum  







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

Wörter zählen

Ein Thema von Lisa.99 · begonnen am 27. Feb 2017 · letzter Beitrag vom 6. Mär 2017
 
Slipstream
(Gast)

n/a Beiträge
 
#5

AW: Wörter zählen

  Alt 27. Feb 2017, 11:17
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var i, woerter : integer;
    text : string;
begin
woerter:= 1;
 for i := 0 to length (text) do
  begin
    inc(woerter);
    continue;
  end;
  Edit3.Text:= inttostr(woerter);
end;
Das habe ich und für wenige Wörter funktioniert das!
Length(Text) gibt die Anzahl der Buchstaben und Zeichen zurück. Die Zählung bei Strings beginnt nicht bei 0, sondern bei 1: Text[1] bezeichnet das erste Zeichen des Strings Text. In deiner Prozedure iterierst du durch die Zeichen und erhöhst bei jedem Durchlauf die Zählvariable woerter. Danach gibt deine Procedure die Anzahl der Zeichen aus, nicht die Anzahl der Wörter.

Ich würde so vorgehen: zuerst einmal legst du fest, welche Zeichen als Worttrenner gelten sollen. Das macht man am besten mit einem Set:

Delphi-Quellcode:
  private { Private-Deklarationen }
    Trenner = set of (' ', '?', ',', '.', ';', '!'); // ... und was dir sonst noch einfällt
Dann entwickelst du eine Function, die das gewünschte Ergebnis zurückliefert:

Delphi-Quellcode:
function Form1.GetWordCount(AText : String) : Integer; // "Text" sollte man nicht als Variable verwenden
var
  i,
  Zaehler,
  Laenge : Integer;

begin
  Zaehler := 0;
  i := 1;
  Laenge := Length(AText);
  while i <= Laenge do
  begin
    if AText[i] in Trenner then // ein Trennzeichen wurde gefunden
    begin
      if (i < Laenge) and (AText[i] = ' ') then // wenn i nicht das letzte Zeichen ist, wird das nächste auf Space geprüft
         inc(Zaehler);
      if i = Laenge then // wenn i das letzte Zeichen ist, wird nicht das nächste auf Space geprüft
         inc(Zaehler);
    end;

    inc(i); // nicht vergessen, den Index des Strings zu erhöhen
  end;

  Result := Zaehler;
end;
Den Beispielcode hab ich nicht getestet, sondern einfach im Foreneditor getippt. Der Code ist natürlich nicht perfekt, zB reagiert er nicht darauf, wenn am Ende des Strings gar kein Trennzeichen mehr steht.
  Mit Zitat antworten Zitat
 


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 17:47 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