Einzelnen Beitrag anzeigen

Sel2012

Registriert seit: 6. Jun 2015
Ort: 31535
103 Beiträge
 
Delphi XE5 Professional
 
#1

Speicherverbrauch bei langer if...then-Liste

  Alt 9. Aug 2015, 06:56
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 = 'amthen ton2:='am';
  if suchwort = 'imthen ton2:='im';
  if suchwort = 'Bärthen 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.