AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi AUDIO: Wie kann ich Dateinamen im Mediaplayer benutzen?
Thema durchsuchen
Ansicht
Themen-Optionen

AUDIO: Wie kann ich Dateinamen im Mediaplayer benutzen?

Ein Thema von Mydoene · begonnen am 5. Jan 2007 · letzter Beitrag vom 16. Jan 2007
Antwort Antwort
Seite 1 von 2  1 2      
Mydoene
(Gast)

n/a Beiträge
 
#1

AUDIO: Wie kann ich Dateinamen im Mediaplayer benutzen?

  Alt 5. Jan 2007, 14:24
Hi Leutz,
Ich hab' hier ein Problem: Wenn ich einen Dateinamen in den Mediaplayer per Editfeld eingeben will, dann geht da gar nix mehr. Der sagt mir nur
Delphi-Quellcode:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EMCIDeviceError aufgetreten. Meldung: 'Kein MCI-Gerät geöffnet'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------
Der Aufruf geht so:
Delphi-Quellcode:
begin
  MediaPlayer1.Start;
  MediaPlayer1.FileName := Edit1.Text;
  MediaPlayer1.Play;
end;
Der Mediaplayer steht auf Autoselect, wieso also erkennt er den Dateinamen nicht?

Wieso?
  Mit Zitat antworten Zitat
Flips

Registriert seit: 17. Feb 2005
Ort: Sankt Wendel
491 Beiträge
 
Delphi 7 Professional
 
#2

Re: AUDIO: Wie kann ich Dateinamen im Mediaplayer benutzen?

  Alt 5. Jan 2007, 17:20
Hi.
Probiers mal hiermit:
Delphi-Quellcode:
MediaPlayer1.FileName := Edit1.Text;
MediaPlayer1.Open;
MediaPlayer1.Wait := true;
MediaPlayer1.Play;
MediaPlayer1.Close;
Google hilft

Lg, Flips
Philipp F.
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#3

Re: AUDIO: Wie kann ich Dateinamen im Mediaplayer benutzen?

  Alt 5. Jan 2007, 19:30
MediaPlayer1.Wait := true; ist optional Du kannst auch in OnNotify das Close aufrufen.

Die Fornesuche hätte auch geholfen
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Mydoene
(Gast)

n/a Beiträge
 
#4

Re: AUDIO: Wie kann ich Dateinamen im Mediaplayer benutzen?

  Alt 13. Jan 2007, 20:18
So, sorry, bin erst heute aus den Ferien zurückgekommen. War Skifahren. Egal.

Also, ich hab' mal ausprobiert, was ihr so empfehlt. Und? Das Prog verreckt... Allerdings diesmal ohne Fehlermeldung. Es friert eiskalt zu. Tja, aber warum? Freue mich schon auf die Antwort,
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#5

Re: AUDIO: Wie kann ich Dateinamen im Mediaplayer benutzen?

  Alt 13. Jan 2007, 20:51
'n Abend!

Hätt' mich gewundert, wenns nicht einfriert...

MediaPlayer1.Wait := true;
(MediaPlayer1.Wait := false irgendwie logisch oder?

Schon mal in der OH nachgelesen?

Grüßle!
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Mydoene
(Gast)

n/a Beiträge
 
#6

Re: AUDIO: Wie kann ich Dateinamen im Mediaplayer benutzen?

  Alt 13. Jan 2007, 21:47
Jeha! Das hat's jetzt gebringt!

Sorry, aber der einzige Unterschied ist, dass jetzt wieder keine Mukke spielt und dafür das Prog wieder reagiert. Is' aber immer noch nicht so ganz das wahre ^^. Hoffe immer noch auf Lösung,
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#7

Re: AUDIO: Wie kann ich Dateinamen im Mediaplayer benutzen?

  Alt 13. Jan 2007, 21:54
Hast Du das .Close raus genommen?

Bevor ich jetzt meine Glaskugel wieder runter fallen lasse, weil Du keinen Code zeigst: Abspielen einer sounddatei über Mediaplayer, LOOP mit MediaPlayer?
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Mydoene
(Gast)

n/a Beiträge
 
#8

Re: AUDIO: Wie kann ich Dateinamen im Mediaplayer benutzen?

  Alt 14. Jan 2007, 15:04
Um mal Quelltext mitzubringen:

Delphi-Quellcode:
MediaPlayer1.FileName := Edit1.Text;
MediaPlayer1.Open;
MediaPlayer1.Wait := false;
MediaPlayer1.Play;
Genauso hab' ich's jetzt. Es funktioniert zwar, allerdings fängt jetzt der Mediaplayer jede Sekunde an, die Datei abzuspielen und wird dann wieder von sich selbst überspielt. Wie kann ich jetzt dem Timer-Event mitteilen, dass es den Mediaplayer nur starten soll, wenn der noch nicht an ist?

//edit:

Hier ist jetzt mal der komplette Quelltext, neu, überarbeitet, und mit allen Objekten, die man so braucht. Die Shapes sind dazu da, eine Binäre Uhr anzuzeigen. Muss nicht unbedingt interessieren...

Delphi-Quellcode:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,UAlarmclock, StdCtrls, jpeg, ExtCtrls, MPlayer;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Image1: TImage;
    Label4: TLabel;
    Shape1: TShape;
    Shape2: TShape;
    Shape3: TShape;
    Shape4: TShape;
    Shape5: TShape;
    Shape6: TShape;
    Shape7: TShape;
    Shape8: TShape;
    Shape9: TShape;
    Shape10: TShape;
    Shape11: TShape;
    Shape12: TShape;
    Shape13: TShape;
    Shape14: TShape;
    Shape15: TShape;
    Shape16: TShape;
    Shape17: TShape;
    Label5: TLabel;
    MediaPlayer1: TMediaPlayer;
    Shape18: TShape;
    Edit1: TEdit;
    Label6: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Edit2: TEdit;
    Edit3: TEdit;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button2MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
  alpha:TAlarmclock;
  procedure write;
  public

  end;

var
  Form1: TForm1;
  x:Integer;
  HourWeck, MinWeck: Integer;
  dataPfad: String;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject); //****JJ****\\
begin // . \
  if Button1.Caption='Schließenthen // .
  begin // .
    label6.Visible:=false; // .
    edit1.Visible:=false; // .
    edit2.Visible:=false; // .
    edit3.Visible:=false; // .
    label7.Visible:=false; // .
    label8.Visible:=false; // .
    Button1.Caption:='Stellen'; // .
    HourWeck:=strtoint(edit2.Text); // .
    alpha.SetAlarmTime(HourWeck,MinWeck); // .
  end // .
  else if Button1.Caption='Stellenthen begin // .
    label6.Visible:=true; // .
    edit1.Visible:=true; // .
    edit2.Visible:=true; // .
    edit3.Visible:=true; // .
    label7.Visible:=true; // .
    label8.Visible:=true; // .
    Button1.Caption:='Schließen'; // .
    MinWeck:=strtoint(edit3.Text); // . \
  end //****JJ****\\
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  Application.Terminate;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  label4.Caption := FormatDateTime('dd.mm.yyyy', now);
  alpha:=TAlarmclock.create;
  write;
  alpha.Onchange:= Write;
  alpha.Start;
  alpha.setsec(StrToInt(formatdatetime('ss',time)));
  alpha.setmin(StrToInt(formatdatetime('nn',time)));
  alpha.sethour(StrToInt(formatdatetime('hh',time)));
  x:= 86400-(alpha.gethour * 3600) - (alpha.getmin*60) - (alpha.getsec);
  label5.caption:=IntToStr(x);

  //****JJ****\\
{}HourWeck := strtoint(Edit2.Text);
{}MinWeck := strtoint(Edit3.Text);
{}alpha.SetAlarmTime(HourWeck,MinWeck);
  //****JJ****\\
end;

procedure TForm1.write;
var i,j,z:Integer;
begin
 label1.Caption:=IntToStr(alpha.getsec);
 label2.Caption:=IntToStr(alpha.getmin);
 label3.caption:=IntToStr(alpha.gethour);
 j:=alpha.getsec;
  if (j mod 2) = 1 then shape1.Brush.Color:=clblack
   else shape1.brush.Color:=clsilver;
 j:=(j div 2);
  if (j mod 2) = 1 then shape2.Brush.Color:=clblack
   else shape2.brush.Color:=clsilver;
 j:=(j div 2);
  if (j mod 2) = 1 then shape3.Brush.Color:=clblack
   else shape3.brush.Color:=clsilver;
 j:=(j div 2);
  if (j mod 2) = 1 then shape4.Brush.Color:=clblack
   else shape4.brush.Color:=clsilver;
 j:=(j div 2);
  if (j mod 2) = 1 then shape5.Brush.Color:=clblack
   else shape5.brush.Color:=clsilver;
 j:=(j div 2);
  if (j mod 2) = 1 then shape6.Brush.Color:=clblack
   else shape6.brush.Color:=clsilver;

 i:=alpha.getmin;
  if (i mod 2) = 1 then shape7.Brush.Color:=clblack
   else shape7.brush.Color:=clsilver;
 i:=(i div 2);
  if (i mod 2) = 1 then shape8.Brush.Color:=clblack
   else shape8.brush.Color:=clsilver;
 i:=(i div 2);
  if (i mod 2) = 1 then shape9.Brush.Color:=clblack
   else shape9.brush.Color:=clsilver;
 i:=(i div 2);
  if (i mod 2) = 1 then shape10.Brush.Color:=clblack
   else shape10.brush.Color:=clsilver;
 i:=(i div 2);
  if (i mod 2) = 1 then shape11.Brush.Color:=clblack
   else shape11.brush.Color:=clsilver;
 i:=(i div 2);
  if (i mod 2) = 1 then shape12.Brush.Color:=clblack
   else shape12.brush.Color:=clsilver;

    z:=alpha.gethour;
  if (z mod 2) = 1 then shape13.Brush.Color:=clblack
   else shape13.brush.Color:=clsilver;
 z:=(z div 2);
  if (z mod 2) = 1 then shape14.Brush.Color:=clblack
   else shape14.brush.Color:=clsilver;
 z:=(z div 2);
  if (z mod 2) = 1 then shape15.Brush.Color:=clblack
   else shape15.brush.Color:=clsilver;
 z:=(z div 2);
  if (z mod 2) = 1 then shape16.Brush.Color:=clblack
   else shape16.brush.Color:=clsilver;
 z:=(z div 2);
  if (z mod 2) = 1 then shape17.Brush.Color:=clblack
   else shape17.brush.Color:=clsilver;
 if x>0 then x:=x-1
 else x:=86400;
 label5.caption:=IntToStr(x);
 if shape18.Visible=true then shape18.visible:=false
 else shape18.Visible:=true;

  //****JJ****\\
{}if alpha.AlarmOn = true then
{}  begin
{}    dataPfad := Edit1.Text;
{}    MediaPlayer1.FileName := dataPfad;
{}    MediaPlayer1.Open;
{}    MediaPlayer1.Play;
{}  end;
  //****JJ****\\
end;

procedure TForm1.Button2MouseDown(Sender: TObject; Button: TMouseButton; //****JJ****\\
  Shift: TShiftState; X, Y: Integer); // . \
begin // .
  Label9.Visible:=true; // .
  Label10.Visible:=true; // .
  Label11.Visible:=true; // .
  Label12.Visible:=true; // .
  Label10.Caption:=inttostr(HourWeck); // .
  Label11.Caption:=inttostr(MinWeck); // .
end; // .
                                                                                  // .
procedure TForm1.Button2MouseUp(Sender: TObject; Button: TMouseButton; // .
  Shift: TShiftState; X, Y: Integer); // .
begin // .
  Label9.Visible:=false; // .
  Label10.Visible:=false; // .
  Label11.Visible:=false; // .
  Label12.Visible:=false; // . \
end; //****JJ****\\

end.
Die mit JJ markierten Passagen habe ich gemacht, die anderen ein Kumpel.

Hier ist AlarmClock, das Objekt, das man dafür braucht:

Delphi-Quellcode:

unit UAlarmclock;

interface
uses UinfoClock;
Type
TAlarmClock =class(TInfoClock)
  private
  aHour,aMin:cardinal;
  public
  constructor Create; override;
  procedure SetAlarmTime(h,m:cardinal);
  procedure GetAlarmTime(var h,m:cardinal) ;
  function AlarmOn:boolean;
  end;

//Implementation der Weckerklasse:
implementation
  constructor TAlarmClock.Create;
  begin
    inherited Create;
    aHour:=0;aMin:=0;

  end;

  procedure TAlarmClock.SetAlarmTime(h,m:Cardinal);
  begin
    aHour:=h;
    aMin:=m;
  end;

  procedure TAlarmClock.GetAlarmTime(var h,m:cardinal);
  begin
    h:=ahour;
    m:=amin
  end;

  function TAlarmClock.AlarmOn:boolean;
  begin
    if (ahour=gethour) and (amin=getmin) then result:=true else result:=false;
  end;
end.
Und hier ist die Uhr, der Vorgänger:

Delphi-Quellcode:

unit Uclock;

interface
uses Umodcounter,ExtCtrls;
Type Tclock=class
  private
    hour:Tmodcounter;
    min:Tmodcounter;
    sec:Tmodcounter;
  public
  constructor create();virtual;
  destructor destroy();override;
  procedure click();virtual;
  procedure sethour(n:cardinal);virtual;
  procedure setmin(n:cardinal);virtual;
  procedure setsec(n:cardinal);virtual;
  function gethour:cardinal;virtual;
  function getmin:cardinal;virtual;
  function getsec:cardinal;virtual;
  end;
 Tclockwithtimer = class(Tclock)
 private
  ctime : TTimer;
  procedure Movetime(Sender:Tobject);
 public
  constructor Create; override;
  destructor Destroy; override;
  procedure start;
  procedure stop;
 end;

implementation

constructor Tclock.create();
begin
sec:=Tmodcounter.Create;
min:=Tmodcounter.Create;
hour:=Tmodcounter.Create;
min.init(60);
sec.init(60);
hour.init(24);
end;

destructor TClock.destroy;
begin
  inherited Destroy;
end;

procedure tclock.click;
begin
sec.click;
 if sec.getcount = 0 then begin
    min.click;
    if min.getcount = 0 then hour.click;
 end;
end;

procedure Tclock.sethour (n:cardinal);
begin
hour.setcount(n);
end;

procedure Tclock.setmin (n:cardinal);
begin
min.setcount(n);
end;

procedure Tclock.setsec (n:cardinal);
begin
sec.setcount(n);
end;

function Tclock.gethour:cardinal;
begin
gethour:=hour.getcount;
end;

function Tclock.getmin:cardinal;
begin
getmin:=min.getcount;
end;

function Tclock.getsec:cardinal;
begin
getsec:=sec.getcount;
end;

constructor Tclockwithtimer.Create;
begin
 inherited Create;
 Ctime:= Ttimer.Create(nil);
 Ctime.interval:=1000;
 ctime.enabled:=false;
 Ctime.ontimer:= Movetime;
end;

destructor Tclockwithtimer.Destroy;
begin
sec.free; min.free; hour.Free;
inherited destroy;
end;

procedure Tclockwithtimer.start;
begin
 ctime.enabled:=true;
end;

procedure tclockwithtimer.stop;
begin
 ctime.enabled:=true;
end;

procedure Tclockwithtimer.Movetime(Sender:Tobject);
begin
 click;
end;
end.
...der ModCounter und der Counter:

Delphi-Quellcode:

unit UModCounter;

interface
uses UCounter2;
Type TModCounter=class(TCounter2)
     private
       max:cardinal;
       public
       procedure Init(n:Cardinal); //Maximum festlegen
       procedure Click;override; //Click wird überschrieben
       procedure setcount(n:Cardinal);override;
end;
implementation

procedure Tmodcounter.init(n:cardinal);
begin
  max:=n;
end;
procedure Tmodcounter.click;
begin
  inherited Click; // Aufruf der gleichnamigen Methode von TCounter
  if getcount>=max then Clear;
end;
procedure Tmodcounter.setcount(n:cardinal);
begin
  inherited setcount(n) ; // Aufruf der gleichnamigen Methode von TCounter
  if getcount>=max then Clear;
end;
end.
Delphi-Quellcode:

unit Ucounter2;


interface
Type
  TCounter2 = class
  private
    count:cardinal;
  public
    constructor Create;
    destructor Destroy; override;
    procedure Clear;
    procedure Click;virtual;
    procedure SetCount(n:Cardinal);virtual;
    function GetCount:cardinal;
  end;
implementation
constructor TCounter2.Create;
begin
  count:=0;
end;

destructor TCounter2.destroy;
begin
  inherited Destroy;
end;

procedure Tcounter2.Clear;
begin
  count:=0;
end;

procedure Tcounter2.Click;
begin
  Inc(count);
end;

procedure TCounter2.SetCount(n:cardinal);
begin
  count:=n;
end;

function Tcounter2.GetCount:cardinal;
begin
  Getcount:= count;
end;

end.
Das war's. Wenn mir jetzt auch noch einer sagen könnte, wieso der Player schon von Anfang an zu spielen anfängt, obwohl .Enabled, .AutoEnable usw. alle auf false sind, kriegt 'nen feuchten Händedruck ^^

//Edit: Hab' jetzt bei der Procedure unter Schließen auch ein "alpha.SetAlarmTime(HourWeck,MinWeck);" eingefügt. Also jetzt geht alles, außer dass das Mistvieh von Anfang an zu playen anfängt... So'n schiet... WIESO macht der sowas?
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#9

Re: AUDIO: Wie kann ich Dateinamen im Mediaplayer benutzen?

  Alt 14. Jan 2007, 19:54
Versuchs mal mit der OH , wenn das nix bringt, kannst immer noch fragen:

If MediaPlayer1.Mode<>mpPlaying then ... Edit: Pack soviel Quelltext das nächste mal in ein Zip und leg die Formulare auch dazu, dann kann man das auch zur Laufzeit testen
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Mydoene
(Gast)

n/a Beiträge
 
#10

Re: AUDIO: Wie kann ich Dateinamen im Mediaplayer benutzen?

  Alt 15. Jan 2007, 10:13
Gout, aber die Frage bleibt: Wieso fängt der Mediaplayer gleich bei Programmstart an zu spielen? Das soll er nicht, und dazu bekommt er auch keinen Befehl...?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:50 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