Ich habe keine Ahnung, wie rechnerintern Speicherplatz für if...then verwendet wird.
Bei ca. 60 if...then-Zeilen habe ich keine Probleme. Bei längeren "Listen" kommt die
Zuordnung außer Tritt. Wahrscheinlich müsste der Speicherbedarf vorstrukturiert werden, oder?
Siehe Beispiel.
Delphi-Quellcode:
// Zufallswort wird ausgesucht
wortwahl[w]:= random (maxLine)+1;
wort[w]:= Memo1.Lines.Strings[wortwahl[w]];
// 4x das gleiche...
wort_1.text:= wort[1];
wort_2.text:= wort[2];
wort_3.text:= wort[3];
wort_4.text:= wort[4];
// davon wird ein Wort vertont
tonwahl:=random (4) + 1;
suchwort:= wort[tonwahl];
mediaPlayer1.FileName := TPath.Combine(TPath.GetDocumentsPath, (suchwort+'.mp3'));
mediaPlayer1.Play;
{ so klappt das gut. Bei Wörtern mit Umlauten muss ich aber wegen .mp3 die Tondatei
umbenennen. Dazu fällt mir leider nur die if..then-Variante ein.
Die funktioniert auch gut und stabil bis zu ca. 60 Zeilen. }
if suchwort = 'am' then ton2:='am';
if suchwort = 'im' then ton2:='im';
if suchwort = 'Bär' then ton2:='Baer';
mediaPlayer1.FileName := TPath.Combine(TPath.GetDocumentsPath, (ton2+'.mp3'));
mediaPlayer1.Play;
// Bei längeren if...then-Listen kommt ton2 bei einer Neuwahl von suchwort "aus dem Tritt" und der letzte ton2
// wird 1- oder 2-mal wiederholt.