Hallo,
ich möchte ein Programm coden, was Lateinische Texte nach Silben trennt. Die Regeln dafür sollen zuerst sein, Das eine Silbe Ein Vokal ist. Wenn davor ein Konsonant ist, gehört er zur Silbe, Doppelvokale zählen vorerst als einzelne Silben, und alle übrigen Konsonanten (Die nicht vor einem Vokal stehen) gehören zur Vorherigen Silbe.
Das ist mein Ansatz:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| var i: Integer; s, str: shortstring; j: Integer; begin listbox1.Clear; s:=edit1.text; s:=lowercase (s); s := stringreplace (s, ' ', '', [rfreplaceall]); for i := 0 to length(edit1.Text)-1 do begin if s[i]in Vokal then begin str:=(s[i]); if not (s[i-1] in Vokal) then str := s[i-1]+str; for j := 1 to (length(s)-i)-1 do begin if not (s[i+j] in Vokal) and not (s[i+j-1] in Vokal) then str := str+s[i+j] else break; end; end; if str<>'' then listbox1.Items.Add(str); end; end; |
Leider aber klappt das überhaupt nicht. Vokale werden zwar erkannt, aber die Zuordnung der Konsonanten ist Falsch und manchmal werden Silben mehrfach in die Listbox übernommen. Warum ??