MediaPlayer giver Out of memory
function TForm68.HilsenTid: TDateTime;var
Fil: String;
begin
with Global.Hilsen.DataSet do
begin
Fil := Global.HentLokal('HILS') + FieldByName('Intro').AsString + '.mp3';
Global.Player.FileName := Fil;
Global.Player.Open;
Result := Global.Player.Length /86400000;
Global.Player.Close;
Result := Result + Global.HentTitel(FieldByName('Sang').AsInteger).Laengde;
Fil := Global.HentLokal('HILS') + FieldByName('Outro').AsString + '.mp3';
Global.Player.FileName := Fil;
Global.Player.Open;
// Laver out of memory efter denne instruktion.
Result := Result + Global.Player.Length /86400000;
Global.Player.Close;
Result := Result + StrToTime('00:00:01') /2; // 1/2 sekunds pause mellem hver hilsen.
end;
end;
Funktionen er en del af et større sammenhæng.
Funktionen beregner længden,( i min & sec) på en hilsen.
Funktionen skal ikke spille hilsenen, blot beregne længden.
Global er en Unit der inderholder de ting der skal bruges mange steder fra.
Player er en MediaPlayer.
86400000, er en konstant jeg dividerer Player.Length med for at få længden i minutter og sekunder.
Fil := Global.HentLokal('HILS') + FieldByName('Intro').AsString + '.mp3';
Henter den fil der danner introen til hilsenen.
Result := Result + Global.HentTitel(FieldByName('Sang').AsInteger).Laengde;
Længden på det musikstykke der følger med hilsenen.
Fil := Global.HentLokal('HILS') + FieldByName('Outro').AsString + '.mp3';
Henter den fil der danner afslutningen på hilsenen.
Her går det så galt med hukommelsen, i Windows 98, men ikke i Windows XP, hvorfor?
Eller findes der en anden måde at beregne længden på en mp3 fil?
