Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Undeklarierter Bezeichner (MediaPlayer) (https://www.delphipraxis.net/192089-undeklarierter-bezeichner-mediaplayer.html)

Sveni795 19. Mär 2017 14:10

Undeklarierter Bezeichner (MediaPlayer)
 
Hallo Zusammen,

um mich kurz vorzustellen,

ich habe seit 1 Jahr meine Ausbildung abgeschlossen und arbeite in der Firma mit Delphi 10.1
Nun aber auch privat da ich wirklich noch Anfänger bin. Ich habe nun ein Problem mit meinem Quellcode.

Ich bin mir sicher mein Problem ist für fortgeschrittene schnell zu lösen... :|


Ich möchte versuchen über eine "Click.Button" Funktion einen Sound abzuspielen.
Hierfür verwende ich eine Mediaplayer componente. (Das ganze wird eine Multiplattform Anwendung)

Wird der Button geclickt passiert folgendes:
Code:
procedure TTabbedForm.Button1Click(Sender: TObject);
begin
  DataLink :=
    ('C:\Users\Sven\Documents\Embarcadero\Studio\Projekte\Soundbord\Sounds\xx.mp3');
  playsound(DataLink);
end;
Ich möchte also den Link in einer Stringvariable übertragen und dem Procedure "playsound" übertragen. "DataLink" ist golbal angelegt
Hier nun die PlaySound procedure:
Code:
procedure PlaySound(VAR DataLink: string);
begin
  MediaPlayer1.FileName := DataLink;
  MediaPlayer1.Play;
end;
Nun kommt die Fehlermeldung MediaPlayer1.FileName sei ein Undeklarierter Bezeichner
Wenn ich die MediaPlayer1 funktionen gleich in der ButtonClick Procedure ausführe funktioniert alles ohne Probleme.:pale:

Hat vielleicht jemand einen Tipp?

Vielen Dank
Gruß

Mavarik 19. Mär 2017 14:15

AW: Undeklarierter Bezeichner (MediaPlayer)
 
Playsound gehört nicht zur Form...

Daher ist "ohne" die Form Mediaplayer1 auch nicht erreichbar.

dummzeuch 19. Mär 2017 14:15

AW: Undeklarierter Bezeichner (MediaPlayer)
 
Zitat:

Zitat von Sveni795 (Beitrag 1364721)
Code:
procedure TTabbedForm.Button1Click(Sender: TObject);
begin
  DataLink :=
    ('C:\Users\Sven\Documents\Embarcadero\Studio\Projekte\Soundbord\Sounds\xx.mp3');
  playsound(DataLink);
end;
Code:
procedure PlaySound(VAR DataLink: string);
begin
  MediaPlayer1.FileName := DataLink;
  MediaPlayer1.Play;
end;
Nun kommt die Fehlermeldung MediaPlayer1.FileName sei ein Undeklarierter Bezeichner
Wenn ich die MediaPlayer1 funktionen gleich in der ButtonClick Procedure ausführe funktioniert alles ohne Probleme.:pale:

<Glaskugel auspack>
Lass mich raten: MediaPlayer1 ist eine Komponente auf dem Formular TTabbedForm. Und PlaySound ist eine Prozedur, aber keine Methode von TTabbedForm.

Mach mal aus PlaySound eine Methode von TTabbedForm und es wird funktionieren.

</Glaskugel wieder einpack>

a.def 19. Mär 2017 14:16

AW: Undeklarierter Bezeichner (MediaPlayer)
 
Hallo.

Als erstes: mach mal das
Delphi-Quellcode:
var
in
Delphi-Quellcode:
procedure playSound()
weg.
Als zweites ein paar Fragen die nix mit dem Problem zu tun haben:
- wo ist DataLink in Button1 deklariert?
- warum übergibst du den String nicht direkt an playSound() so wie unten zu sehen
und
- warum stellst du Klammern um den String bei der Deklaration?

Delphi-Quellcode:
 procedure TForm1.playSound(DataLink: string);
 begin
  MediaPlayer1.FileName := DataLink;
  MediaPlayer1.Play;
 end;

procedure TForm1.Button5Click(Sender: TObject);
begin
 playSound('C:\Users\Sven\Documents\Embarcadero\Studio\Projekte\Soundbord\Sounds\spasti alter.mp3');
end;

Mavarik 19. Mär 2017 14:27

AW: Undeklarierter Bezeichner (MediaPlayer)
 
Zitat:

Zitat von a.def (Beitrag 1364724)
Als erstes: mach mal das
Delphi-Quellcode:
var
in
Delphi-Quellcode:
procedure playSound()
weg.

Wieso?

ok ggf. Const aber weg... eher nicht...

haentschman 19. Mär 2017 14:30

AW: Undeklarierter Bezeichner (MediaPlayer)
 
Hallo und willkommen hier...:dp:

Ich würde das File als Konstante anlegen. Wenn du mal an verschieden Stellen den gleichen Sound hast, brauchtst nur die Konstante ändern. :thumb:
Delphi-Quellcode:
const
  conSoundBlubb = 'C:\Users\Sven\Documents\Embarcadero\Studio\Projekte\Soundbord\Sounds\spasti alter.mp3'
  conSoundBla = 'C:\Users\Sven\Documents\Embarcadero\Studio\Projekte\Soundbord\Sounds\spasti neuer.mp3'
.
.
.
procedure TForm1.playSound(DataLink: string);
 begin
  MediaPlayer1.FileName := DataLink;
  MediaPlayer1.Play;
 end;

procedure TForm1.Button5Click(Sender: TObject);
begin
 playSound(conSoundBla);
end;
.
procedure TForm1.Button6Click(Sender: TObject);
begin
 playSound(conSoundBla);
end;
.
procedure TForm1.Button7Click(Sender: TObject);
begin
 playSound(conSoundBlubb);
end;
PS: Gewöhne dir gleich zu Anfang an, vernünftige Bezeichnungen für die Komponenten, Variablen, Objekte etc. zu verwenden. :thumb:

a.def 19. Mär 2017 14:33

AW: Undeklarierter Bezeichner (MediaPlayer)
 
Zitat:

Zitat von Mavarik (Beitrag 1364728)
Zitat:

Zitat von a.def (Beitrag 1364724)
Als erstes: mach mal das
Delphi-Quellcode:
var
in
Delphi-Quellcode:
procedure playSound()
weg.

Wieso?

ok ggf. Const aber weg... eher nicht...

Hast recht. Aber var ist doch total unnötig. const ist da schon besser. Also entweder nix oder const aber nicht var.

Sveni795 19. Mär 2017 14:35

AW: Undeklarierter Bezeichner (MediaPlayer)
 
Zitat:

Zitat von a.def (Beitrag 1364724)
Hallo.

Als erstes: mach mal das
Delphi-Quellcode:
var
in
Delphi-Quellcode:
procedure playSound()
weg.
Als zweites ein paar Fragen die nix mit dem Problem zu tun haben:
- wo ist DataLink in Button1 deklariert?
- warum übergibst du den String nicht direkt an playSound() so wie unten zu sehen
und
- warum stellst du Klammern um den String bei der Deklaration?

Delphi-Quellcode:
 procedure TForm1.playSound(DataLink: string);
 begin
  MediaPlayer1.FileName := DataLink;
  MediaPlayer1.Play;
 end;

procedure TForm1.Button5Click(Sender: TObject);
begin
 playSound('C:\Users\Sven\Documents\Embarcadero\Studio\Projekte\Soundbord\Sounds\spasti alter.mp3');
end;


Vielen Dank für die Antworten.

Die vielen Formatfehler etc kommen einfach daher das ich eigentlich nur C gelernt habe und mich nun in Pascal einarbeite. Das wird besser.

Wenn ich den String direkt übergebe sagt mir der Compiler es seien zu viele Parameter

DataLink ist global deklariert

Das mit den Klammern habe ich nicht verstanden. Sorry :|

haentschman 19. Mär 2017 14:38

AW: Undeklarierter Bezeichner (MediaPlayer)
 
Hallöle... 8-)
statt:
Delphi-Quellcode:
DataLink := ('C:\Users\Sven\Documents\Embarcadero\Studio\Projekte\Soundbord\Sounds\xx.mp3');
...
das:
Delphi-Quellcode:
DataLink := 'C:\Users\Sven\Documents\Embarcadero\Studio\Projekte\Soundbord\Sounds\xx.mp3';
...

a.def 19. Mär 2017 14:39

AW: Undeklarierter Bezeichner (MediaPlayer)
 
Zitat:

Zitat von Sveni795 (Beitrag 1364731)
Zitat:

Zitat von a.def (Beitrag 1364724)
Hallo.

Als erstes: mach mal das
Delphi-Quellcode:
var
in
Delphi-Quellcode:
procedure playSound()
weg.
Als zweites ein paar Fragen die nix mit dem Problem zu tun haben:
- wo ist DataLink in Button1 deklariert?
- warum übergibst du den String nicht direkt an playSound() so wie unten zu sehen
und
- warum stellst du Klammern um den String bei der Deklaration?

Delphi-Quellcode:
 procedure TForm1.playSound(DataLink: string);
 begin
  MediaPlayer1.FileName := DataLink;
  MediaPlayer1.Play;
 end;

procedure TForm1.Button5Click(Sender: TObject);
begin
 playSound('C:\Users\Sven\Documents\Embarcadero\Studio\Projekte\Soundbord\Sounds\spasti alter.mp3');
end;


Vielen Dank für die Antworten.

Die vielen Formatfehler etc kommen einfach daher das ich eigentlich nur C gelernt habe und mich nun in Pascal einarbeite. Das wird besser.

Wenn ich den String direkt übergebe sagt mir der Compiler es seien zu viele Parameter

DataLink ist global deklariert

Das mit den Klammern habe ich nicht verstanden. Sorry :|

Guck dir meinen Beitrag nochmal an und hau die globale Variable weg die brauchst du nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:08 Uhr.
Seite 1 von 3  1 23      

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