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]);