wie du da sinnvoll die Asserts einbaust weiss ich auch gerade nicht...Wie stellst du denn sicher, dass z nie grösser wird als die Stringlist?
Mit einem Assert
Delphi-Quellcode:
procedure TForm1.TimerEventExecute(Sender: TObject);
begin
Assert((z>=0) and (z<sl.count),'z ist zu klein oder größer als die Länge von sl'); // <<<<<
chrd := sl.Strings[z];
If chrd <> '' then PlaySound(PChar(chrd), hInstance, snd_ASync or snd_Resource);
inc(z);
end;
Es knallt an einer definierten Stelle und nicht 'irgendwo'. Obwohl das 'irgendwo' nun gerade die nächste Zeile ist, insofern... Ist das weniger FailFast und eher 'debug-code'. Aber im ein "Assert" ist es...