Autor Beitrag
Boldar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: Do 16.10.08 14:31 
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:

ausblenden 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 ??