FormDestroy ist unnötig, da sich dynamische Arrays selbst freigeben (beim Beenden dieser
Unit, wo das global hingerotzt wurde).
Wenn schon, dann hätte man es wenigstens als privates Feld in die Form-Klasse reinmachen können (wo man gleich auch DurationOnce dazupacken könnte), aber besser ... siehe nachfolgend.
Delays gehört natürlich nicht global dahingeworfen, sondern z.B. als VAR-Parameter ins DurationOnce.
Und dann natürlich als lokale Variable ins Button1Click.
function DurationOnce(Datei: TFilename; var Delays: TArray<Integer>): Integer;
Dann konnte sich jemand nicht drauf einigen, ob #13, #13#10 oder #10, und hat alles wild miteinander krankhaft verwurschtelt.
PS: #13#10#10 sind zwei, nicht drei Umbrüche
Wenn man keine Ahnung von nichts hat, dann würde ich
sLineBreak empfehlen ... oder einheitlich #10 oder #13#10, aber niemals #13 (außer beim beschissenen TRichEdit oder bis vor 10 Jahren im iOS/MacOS).
Und warum achtet nie jemand auf die Meldungen des Compilers?
z.B. ungenutzte Variable, bzw. zugewiesener Wert würde nicht genutzt