Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Audio Player (https://www.delphipraxis.net/35812-audio-player.html)

Hador 12. Dez 2004 01:09


Audio Player
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich bin in Delphi noch relativ neu, und hab zur Übung mal einen kleinen Audio Player entwickelt, der ganze Verzeichnisse abspielt und so ohne Playlists auskommt.
Ich würde mich über Verbesserungsvorschläge freuen.
Sehr warscheinlich sind im Programm auch noch einige Bugs drin.
Wenn ihr welche findet, meldet euch.

Ultimator 12. Dez 2004 01:15

Re: Audio Player
 
Zitat:

Player.exe hat ein Problem festgestellt und muss beendet werden.
:-?

Kanns leider nicht starten :-(

[edit] :hi: Herzlich Willkommen in der DP :dp: :party: [/edit]

Hador 12. Dez 2004 01:31

Re: Audio Player
 
Zitat:

Zitat von Ultimator
Zitat:

Player.exe hat ein Problem festgestellt und muss beendet werden.
:-?

Kanns leider nicht starten :-(

Ich vermute mal, dass du Windows XP hast, als ich mein Programm darunter grad probiert habe, kam bei mir die gleiche Fehlermeldung. Unter meinem Windows 2k läuft es problemlos.
kann es evt. daran liegen, dass ich die Unit "FileCtrl" verwendet habe? Delphi meldet mir beim Compilieren auch immer:

[Warnung] main.pas[7]: Unit 'FileCtrl' ist plattformspezifisch

Zitat:

Zitat von Ultimator
[edit] :hi: Herzlich Willkommen in der DP :dp: :party: [/edit]

Danke

fkerber 12. Dez 2004 09:58

Re: Audio Player
 
Hi!

Nein, daran kann es wohl nicht liegen, da WinXP und Win2000 als gleiche Platform (nämlich Windows) gelten.
Wenn du den Source-Code postest kann man ja mal drüberschauen, wo es hängen könnte.


Ciao Frederic

Wolverine 12. Dez 2004 10:13

Re: Audio Player
 
Liste der Anhänge anzeigen (Anzahl: 2)
Morgen Mädels,

1. Herzlich Willkommen Hador in der DP :hi: :dp:

2. Muss man dein Programm in irgendein bestimmtes Verzeichnis packen? Ich bekomme nämlich 2 Fehlermeldungen.

Schöne Grüße

P.S.: Fehlermeldungen siehe Anhang :!::!::!: Ich habe Windows XP Home mit ServicePack 2

fkerber 12. Dez 2004 10:17

Re: Audio Player
 
Hi!

Bekomme auch Fehlermeldung 2.
Auch das Starten im Kompatibilitätsmodus für Win2000 bringt nix.


Ciao Frederic

Hador 12. Dez 2004 12:30

Re: Audio Player
 
Liste der Anhänge anzeigen (Anzahl: 1)
So hier mal der Quellcode
Delphi-Quellcode:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, MPlayer, ComCtrls, FileCtrl, ExtCtrls, mmsystem;

type
  TForm1 = class(TForm)
    Button1: TButton;
    MediaPlayer1: TMediaPlayer;
    FileListBox1: TFileListBox;
    DirectoryListBox1: TDirectoryListBox;
    DriveComboBox1: TDriveComboBox;
    ScrollBar1: TScrollBar;
    Timer1: TTimer;
    Button2: TButton;
    Button3: TButton;
    TrackBar1: TTrackBar;
    procedure Button1Click(Sender: TObject);
    procedure FileListBox1DblClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure SetVolume(const volL, volR: Word);
    procedure GetVolume(var volL, volR: Word);
    procedure TrackBar1Change(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  DateiNr,Dateianzahl: integer;
  VolLi, VolRe: Word;

implementation

{$R *.dfm}
// -------------------------------------------------- Stop ----------
procedure TForm1.Button1Click(Sender: TObject);
begin
   MediaPlayer1.Stop;
   MediaPlayer1.Position := 0;
   Timer1.Enabled := false;
   ScrollBar1.Position := 0;
end;
// ---------------------------------------- Doppelklick auf Datei ----------
procedure TForm1.FileListBox1DblClick(Sender: TObject);
var
   x:integer;
begin
   MediaPlayer1.Stop;
   for x:=0 to (FileListBox1.Count-1) do
      if FileListBox1.Selected[x] then DateiNr:=x;
   if DateiNr = 0 then
      FileListBox1.Selected[0] := true;
   MediaPlayer1.FileName := FileListBox1.FileName;
   MediaPlayer1.Open;
   MediaPlayer1.Play;
   if MediaPlayer1.Length < 10000 then Timer1.Interval := 100;
   if MediaPlayer1.Length > 100000 then Timer1.Interval := 2000;
   Timer1.Enabled := true;
end;

// -------------------------------------------------- Position ----------
procedure TForm1.Timer1Timer(Sender: TObject);
begin
   if ScrollBar1.Position < 100 then
   begin
      ScrollBar1.Position := Round(MediaPlayer1.Position / (MediaPlayer1.Length / 100));
   end;
   if MediaPlayer1.Position = MediaPlayer1.Length then
   begin
      ScrollBar1.Position := 0;
      if DateiNr >= FileListBox1.Count-1 then
      begin
         if FileListBox1.Count > 0 then
         begin
            FileListBox1.Selected[0] := true;
            FileListBox1DblClick(NIL);
         end else begin
            Button1Click(NIL);
         end;
      end else begin
         FileListBox1.Selected[DateiNr+1] := true;
         FileListBox1DblClick(NIL);
      end;
   end;

end;

// -------------------------------------------------- Play ----------
procedure TForm1.Button2Click(Sender: TObject);
var
   x,y:integer;
begin
   for x:=0 to (FileListBox1.Count-1) do
      if FileListBox1.Selected[x] then y:=x;
   if (MediaPlayer1.Position = 0) OR (DateiNr <> y) then
   begin
      if FileListBox1.Count > 0 then
         FileListBox1DblClick(NIL);
   end else
      MediaPlayer1.Play;
end;

// -------------------------------------------------- Pause ----------
procedure TForm1.Button3Click(Sender: TObject);
begin
   MediaPlayer1.Pause;
end;
// -------------------------------------------------- Lautstärke ermitteln ----------
procedure TForm1.GetVolume(var volL, volR: Word);
var
  hWO: HWAVEOUT;
  waveF: TWAVEFORMATEX;
  vol: DWORD;
begin
  volL:= 0;
  volR:= 0;
  // init TWAVEFORMATEX
  FillChar(waveF, SizeOf(waveF), 0);
  // open WaveMapper = std output of playsound
  waveOutOpen(@hWO, WAVE_MAPPER, @waveF, 0, 0, 0);
  // get volume
  waveOutGetVolume(hWO, @vol);
  volL:= vol and $FFFF;
  volR:= vol shr 16;
  waveOutClose(hWO);
end;
// -------------------------------------------------- Lautstärke setzen ----------
procedure TForm1.SetVolume(const volL, volR: Word);
var
  hWO: HWAVEOUT;
  waveF: TWAVEFORMATEX;
  vol: DWORD;
begin
  // init TWAVEFORMATEX
  FillChar(waveF, SizeOf(waveF), 0);
  // open WaveMapper = std output of playsound
  waveOutOpen(@hWO, WAVE_MAPPER, @waveF, 0, 0, 0);
  vol:= volL + volR shl 16;
  // set volume
  waveOutSetVolume(hWO, vol);
  waveOutClose(hWO);
end;
// -------------------------------------------------- Lautstärke setzen ----------
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
   SetVolume(Round(VolLi/10*(10-TrackBar1.Position)),Round(VolRe/10*(10-TrackBar1.Position)));
end;

procedure TForm1.FormShow(Sender: TObject);
begin
   GetVolume(VolLi,VolRe);
end;

end.
Und hier noch mal ein Bild von dem Player, so wie der bei mir läuft.
Das Verzeichnis ist egal.
Der läuft so wie es aussieht, nur bei mir auf'm PC.
Warum ???

dizzy 12. Dez 2004 17:27

Re: Audio Player
 
[ot] Ja cool! Subway2Sally ist einfach edel :thumb: [/ot]

Ratte 12. Dez 2004 17:32

Re: Audio Player
 
Hi!

W2k:Auch Fehlermeldung ("Player.exe hat ein Problem festgestellt...").

Ratte


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz