![]() |
Worte zählen im Memo
Delphi-Quellcode:
Hallo zusammen,
var
Form1: TForm1; ergebnis : Integer; implementation {$R *.DFM} procedure TForm1.WorteInZeile(Sender: TObject); var n : integer; WortEnde : boolean; nWorte : integer; begin nWorte := 0; WortEnde := true; 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; procedure TForm1.Button1Click(Sender: TObject); var n : integer; nWorte : integer; begin for n := 0 to memo1.lines.count do begin nWorte := nWorte+WorteInZeile(memo1.lines[n]); end; button1.caption := inttostr(ergebnis); end; end. ich habe ein Problem. Und zwar, wenn ich in einem Memo die Worte zählen möchte, dann meldet Delphi noch Fehler. Wäre nett, wenn mir jemand helfen könnte, möglichst schnell ;-) Vielen Dank im Vorraus :) |
Re: Worte zählen im Memo
WorteInZeile soll die Wörter in einer Zeile zählen. Du übergibst aber nirgends den Parameter, welche Zeile denn gezählt werden soll.
Außerdem solltest du das als function und nicht als procedure implementieren :roll: Und drittens ist das: Zitat:
|
Re: Worte zählen im Memo
Naiv gefragt, aber unser Leherer hat das so projeziert: Was genau muss ich tun, um dem WorteInZeile ein Parameter zuzuordnen?
Eine for-Schleife? Und function hatte er auch angeschrieben, aber nun will Delphi oben bei type hinter dem Doppelpunkt bei der function noch irgendwas: Zitat:
Vielen Dank im Vorraus :) |
Re: Worte zählen im Memo
Den Teil in dem der Fehler ist hast du uns noch garnicht gezeigt ^^
|
Re: Worte zählen im Memo
Evtl nen ; (Simikolon) vergessen?
Wäre aber Hilfreich, wenn du uns den Code mit dem Fehler zeigst ;) |
Re: Worte zählen im Memo
Zitat:
Allgemeiner Aufbau einer Funktion:
Delphi-Quellcode:
Edit2: Mein 100. Beitrag
function [Name] ([Param1]: [Typ Param1]; [Param2]: [Typ Param2]...): [Typ Rückgabewert];
begin //Code end; |
Re: Worte zählen im Memo
Im übrigen hast du noch ganz andere Fehler drin: Deine Schleifen laufen alle 1 zu weit (du fängst bei Null zu zählen an, das letzte Element ist als n - 1 und nich n) und außerdem verwendest du die Variable n im selben Kontext für zwei verschiedene Sachen. Das kann nicht gutgehen.
|
Re: Worte zählen im Memo
Delphi-Quellcode:
Ich komme überhaupt nicht weiter. Wäre froh über direkte Verbesserung der Fehler, dann werde ich es sicher auch besser verstehen ;)
var
Form1: TForm1; ergebnis : Integer; implementation {$R *.DFM} function TForm1.WorteInZeile(Sender: TObject): integer; var n : integer; WortEnde : boolean; nWorte : integer; begin nWorte := 0; WortEnde := true; for n := 0 to length(memo1.lines(n)) do //hier meckert Delphi: Operator oder Semikolon fehlt begin if WortEnde = true and (StrZeile[n] <> '') //hier meckert Delphi: Undifinierter Bezeichner: 'StrZeile' then //hier meckert Delphi: Operator ist auf diesem Operandentyp nicht anwendbar begin WortEnde := false; nWorte := nWorte+1; end else if not WortEnde and (StrZeile[n] = '') then //hier meckert Delphi: Operator ist auf diesem Operandentyp nicht anwendbar begin WortEnde := true; end; end; ergebnis := nWorte; end; procedure TForm1.Button1Click(Sender: TObject); var n : integer; nWorte : integer; begin for n := 0 to memo1.lines.count do begin nWorte := nWorte+WorteInZeile(memo1.lines[n]); //hier meckert Delphi: Inkompatible Typen: 'TObject' und 'String' end; button1.caption := inttostr(ergebnis); end; end. Vielen Dank im Vorraus :) |
Re: Worte zählen im Memo
Delphi-Quellcode:
var
Form1: TForm1; ergebnis : Integer; implementation {$R *.DFM} function TForm1.WorteInZeile(Sender: TObject): integer; var n : integer; WortEnde : boolean; nWorte : integer; begin nWorte := 0; WortEnde := true; for n := 0 to length(memo1.lines(n)) do //hier meckert Delphi: Operator oder Semikolon fehlt // es muss auch lines[n] heißen, außerdem meinst du sicherlich NICHT das n das auch gleichzeitig Schleifenvariable ist begin if WortEnde = true and (StrZeile[n] <> '') //hier meckert Delphi: Undifinierter Bezeichner: 'StrZeile' //Du hast StrZeile ja auch nirgends definiert! then //hier meckert Delphi: Operator ist auf diesem Operandentyp nicht anwendbar begin WortEnde := false; nWorte := nWorte+1; end else if not WortEnde and (StrZeile[n] = '') then //hier meckert Delphi: Operator ist auf diesem Operandentyp nicht anwendbar // StrZeile ist unbekannt und kann somit auch nicht verglichen werden begin WortEnde := true; end; end; ergebnis := nWorte; end; procedure TForm1.Button1Click(Sender: TObject); var n : integer; nWorte : integer; begin for n := 0 to memo1.lines.count do begin nWorte := nWorte+WorteInZeile(memo1.lines[n]); //hier meckert Delphi: Inkompatible Typen: 'TObject' und 'String' //WorteInZeile erwartet als Parameter ein Objekt (Sender), du übergibst ihm einen string. Funktioniert halt nicht end; button1.caption := inttostr(ergebnis); end; end. |
Re: Worte zählen im Memo
function TForm1.WorteInZeile(str: string): integer;
Delphi-Quellcode:
for n := 1 to length( str) do
Delphi-Quellcode:
Was ist StrZeile? / Wo hast du das deklariert?
if (WortEnde) and (StrZeile[n] <> '') //hier meckert Delphi: Undifinierter Bezeichner: 'StrZeile'
Delphi-Quellcode:
if (not WortEnde) and (StrZeile[n] = '')
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:45 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