24. juli 2003 - 15:16 Der er 2 kommentarer og
1 løsning

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?
Avatar billede cms Nybegynder
27. juli 2003 - 16:46 #1
Har du prøvet at tjekke, at "Fil"-variablen er rigtig med en ShowMessage eller debug?
28. juli 2003 - 11:52 #2
Fil variablen er korrekt,
Der kommer heller intet 'File not found' eller lignende.
Og det er den først kommende kommando efter Player.Open, fejlen kommer, ihvertfald når jeg kører i debug mode.
03. august 2003 - 13:51 #3
Det viser sig nu efter utallige forsøg, at fejlen kommer når filnavnet er for langt!!!
Hvis filnavnet "drev:\sti\filnavn.mp3" er på ialt 97 tegn, så kører det fint, men hvis den er på 98 tegn så skriver den at der ikke er hukommelse nok.
Det giver svar på dette spørgsmål, men det løser ikke rigtig mit problem.
Hvis det skal gå rigtig til, må det vel udløse et nyt spørgsmål.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester