Thema: Delphi Worte zählen im Memo

Einzelnen Beitrag anzeigen

SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#11

Re: Worte zählen im Memo

  Alt 23. Mär 2009, 19:48
ganz ehrlich, ohen dir zu nahe treten zu wollen, aber dein Code ist totaler bullshit.

Dein Code:
Delphi-Quellcode:

//1. du hast hier eine Procedure, willst aber einen Wert, nämlich die Anzahl der Worte in der Zeile erhalten, also nimm
// eine Function

// 2. du musst immer entweder einen String (Zeile), oder eben die Zeilennummer an die Function übergeben, das geschieht hier jedoch nicht.
procedure TForm1.WorteInZeile(Sender: TObject);
var n : integer;
    WortEnde : boolean;
    nWorte : integer;

begin
  nWorte := 0;
  WortEnde := true;

  // ganz grober Fehler: wenn du einen Zeilenindex übergibst, darf dieser nicht die Zählvariable sein also nimm zum Zählen was anderes, z.b. i
  for n := 0 to length(memo1.lines(n)) do
    begin
      if (WortEnde = true) and (StrZeile[n] <> '')
      then
        begin
          WortEnde := false;
          nWorte := nWorte+1;
        end
      else
        if not WortEnde and (StrZeile[n] = '')
        then
          begin
            WortEnde := true;
          end;
      end;

    ergebnis := nWorte;
end;

So die restliche Fehlersuche erspar ich mir, ich schreibe dir lieber gleich was richtiges:


Delphi-Quellcode:

function CountWordsInLine(LineText : string) : integer;
var position: integer;
begin
  result := 0;

  if LineText = 'then
    exit;

  repeat

  position := pos(' ',LineText);
  if position > 0 then
    begin
    LineText := copy(LineText,position + 1,length(LineText));
    inc(result);
    end
      else
        if length(LineText) > 0 then
          inc(result);
    
  until (position = 0);
end;
Delphi-Quellcode:
//Aufruf der Function

var Woerter , i: integer;
.
.
.
Woerter := 0;
if Memo1.lines.count > 0 then
  for i := 0 to high(Memo1.lines) do
    Woerter := Woerter + CountWordsInLine(Memo1.lines[i]);
Marco Tröger
  Mit Zitat antworten Zitat