AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi en kleines Problem mit Thread
Thema durchsuchen
Ansicht
Themen-Optionen

en kleines Problem mit Thread

Ein Thema von Wishmaster · begonnen am 15. Feb 2006 · letzter Beitrag vom 16. Feb 2006
 
Wishmaster

Registriert seit: 14. Sep 2002
Ort: Steinbach, MB, Canada
301 Beiträge
 
Delphi XE2 Architect
 
#1

en kleines Problem mit Thread

  Alt 15. Feb 2006, 11:21
Hi

Ich habe en kleines Problem mit TThread! Ich schreibe an eine Prog. Mit dem ich meine
Mp3, Playlists verwalten kann. Das Problem ist ich habe bis jetzt nie mit TThread gearbeitet.


Kuckt euch meine versuch mal an Feileich findet den Feiler. Ich well alles unterbrechen und direkt neu starten!



Delphi-Quellcode:
type
  TNetRadioThread = class(TThread)
  private

   Procedure PlayURL;
  public
  protected
   procedure Execute; override; // Net Radio
  end;




type
   TAudioEngine = class(TObject)
  private
    fNetThread : array of TNetRadioThread;





Destructor TAudioEngine.Destroy;
var i : integer;
begin
{Thread Terminate}
  if length(fNetThread) > 0 then
   begin
    for i := 0 to length(fNetThread) - 1 do
      fNetThread[i].Terminate;
   end;

{Free Bass}
 BASS_Free;
end;


{---------------------------- NetRadio Thread ---------------------------------}

procedure DownloadProc(buffer: Pointer; length: DWORD; user: DWORD); stdcall;
begin
 with AudioPlayer do // Get Server Status
  begin
   if (buffer <> nil) and (length = 0) then
    fServerStatus:= PChar(buffer)
  end;
end;


procedure TNetRadioThread.Execute;
var i : integer;
begin
try
   PlayURL; // test
 except
  on E: Exception do
    ShowMessage(E.Message);
 end;
end;


procedure TNetRadioThread.PlayURL;
  var Flag : DWORD;
      i : integer;
begin
 With AudioPlayer do
  begin
     BASS_StreamFree(Channel);
     BASS_MusicFree(Channel);

     PlayerState:= ENGINE_PLAYER_CONNECTING;
     Flag:= BASS_STREAM_STATUS;


     Channel:= BASS_StreamCreateURL(PChar(FFilename), 0, Flag, @DownloadProc, 0);
  if Channel = 0 then
     Channel:= BASS_FLAC_StreamCreateURL(PChar(FFileName), 0, Flag, @DownloadProc, 0);
  if Channel = 0 then
     Channel:= BASS_AAC_StreamCreateURL(PChar(FFileName), 0, Flag, @DownloadProc, 0);
  if Channel = 0 then
     Channel:= BASS_AC3_StreamCreateURL(PChar(FFileName), 0, Flag, @DownloadProc, 0);
  if Channel = 0 then
     Channel:= BASS_SPX_StreamCreateURL(PChar(FFileName), 0, Flag, @DownloadProc, 0);


    //Synchronize('');


  if BASS_ChannelPlay(Channel, true) then
    PlayerState:= ENGINE_PLAYER_PLAY
  else
    PlayerState:= ENGINE_PLAYER_STOP
  end;
end;


{---------------------------------- Play URL ----------------------------------}

Procedure TAudioEngine.PlayURL;
  var i : integer;
begin
 if length(fNetThread) > 0 then
   begin
    for i := 0 to length(fNetThread) - 1 do
     begin
      fNetThread[i].Terminate;
     end;
   end;

   Setlength(fNetThread, 1); // test

  for i := 0 to length(fNetThread) - 1 do
   begin
    fNetThread[i]:= TNetRadioThread.Create(true);
    fNetThread[i].Priority := tpNormal;
    fNetThread[i].FreeOnTerminate := True;
    fNetThread[i].Resume;
  end;
end;

{--------------------------------- Load  File ---------------------------------}

Procedure TAudioEngine.PlayFile(Filename : String);
var Flag : DWORD;
begin
   FFilename:= Filename;


  if isURL(Filename) then
   begin
     PlayURL;
    exit;
   end;



Procedure TAudioEngine.Stop();
var i : integer;
begin
 if length(fNetThread) > 0 then
  begin
   for i := 0 to length(fNetThread) - 1 do
    fNetThread[i].Terminate;
   end;

 if BASS_ChannelStop(Channel) then
   PlayerState:= ENGINE_PLAYER_STOP;
end;
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz