Kannst du mir nochmals helfen ? Ich wollte nun "einfach" die letzten 10 Minuten immer in einem MemoryStream festhalten und diesen bei Bedarf abspeichern. Leider ist die erstellte Datei 0 KB groß, d.h. er schreibt nichts in den Memorystream.
Delphi-Quellcode:
procedure StatusProc(buffer: Pointer; len, user: DWORD); stdcall;
begin
if (ms = nil) then ms:= TMemoryStream.Create; // create the stream
if (buffer = nil) then ms.Free // finished downloading
else
begin // Ab hier geänderter Code
if ms.Size<=14745600 then //angabe in bit, entsprechend 10 Minuten bei 192kbit/s Stream
ms.Write(buffer^, len) //schreibe memorystream voll
else // wenn memorystream 10min beinhaltet, dann lösche den anfang und füge den buffer ans ende.
begin
ms.Position:=len;//anfangsposition um die größe des buffers nach hinten setzen
ms.CopyFrom(ms,(ms.Size-1)-len); //den "verschobenen" teil des streams neu abspeichern
ms.Write(buffer^, len); //den buffer wieder ans ende schreiben
end;
ms.Position := ms.Size - 1;
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
ms.SaveToFile('memorystream.mp3');
end;
Danke und Gruß, Julian