Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   musik abspielen (https://www.delphipraxis.net/160189-musik-abspielen.html)

Coxy 1. Mai 2011 22:37

Delphi-Version: 5

musik abspielen
 
Hallo,
ich versuche in meinem Programm gerade Musik abspielen zu lassen.
Dazu benutze ich diesen Code
[DP]sndPlaySound(PChar('C:\Users\Anonym\Desktop\Delphi Project\Strings.wav'),SND_LOOP);[/DP]

Dann kommen allerdings Fehler mit denen ich nichts anfangen kann und zwar:
undefinierte Bezeichnung sndPlaySound
undefinierte Bezeichnung SND_LOOP

Wo liegt das Problem denn genau?
Grüße

Bummi 1. Mai 2011 22:42

AW: musik abspielen
 
uses mmsystem;

DELPHI statt DP für die Codeformaatierung

xxsasch4xx 1. Mai 2011 22:43

AW: musik abspielen
 
Code:
 
playsound(pchar('.\sounddatei.wav'),hinstance,snd_async);
Nur noch den richtigen Pfad anpassen.

himitsu 2. Mai 2011 07:11

AW: musik abspielen
 
Zitat:

Dann kommen allerdings Fehler mit denen ich nichts anfangen kann und zwar:
undefinierte Bezeichnung
Ist eigentlich ganz einfach.

Der Compiler kennt an dieser Stelle diese Befehle/Konstanten nicht,
bzw. diese wurden vorher nirgendwo deklariert und existieren demnach nicht.

Wenn man hier nun die nötige Unit einbindet und somit dem Compiler vorher sagt, daß es das gibt (in dieser Unit sind diese Dinge ja deklariert),
dann kann er sie finden und alles ist gut.



Ansonsten: Verwende besser keine statischen absoluten Pfade,
denn diese stimmen nur auf deinem aktuellen System/PC und nicht bei Anderen.
Relative Pfade sind allerdings auch nicht sonderlich gut, da diese nicht vom Pfad der EXE ausgehn, sondern vom aktuellen Arbeitsverzeichnis.
Dynamische absolute Pfade wären da besser.

Wenn deine EXE also auch in C:\Users\Anonym\Desktop\Delphi Project\ liegt, dann wäre
Delphi-Quellcode:
ExtractFilePath(ParamStr(0))
oder
Delphi-Quellcode:
ExtractFilePath(Application.ExeName)
ganz passend,
also
Delphi-Quellcode:
sndPlaySound(PChar(ExtractFilePath(ParamStr(0)) + 'Strings.wav'), ...
, bzw.
Delphi-Quellcode:
MeinVerzeichnis := ExtractFilePath(ParamStr(0));

sndPlaySound(PChar(MeinVerzeichnis + 'Strings.wav'), ...

Coxy 2. Mai 2011 14:48

AW: musik abspielen
 
Zitat:

Ist eigentlich ganz einfach.

Der Compiler kennt an dieser Stelle diese Befehle/Konstanten nicht,
bzw. diese wurden vorher nirgendwo deklariert und existieren demnach nicht.

Wenn man hier nun die nötige Unit einbindet und somit dem Compiler vorher sagt, daß es das gibt (in dieser Unit sind diese Dinge ja deklariert),
dann kann er sie finden und alles ist gut.
und wie genau mach ich das? (Nur zur Anmerkung ich benutze Delphi 6)
Gruß

DeddyH 2. Mai 2011 14:51

AW: musik abspielen
 
Die Unit einfach hinten an die uses-Klausel mit einem Komma getrennt anhängen.
Delphi-Quellcode:
unit UnitWuppdi;

interface

uses Windows, SysUtils, Messages, Classes, {weitere Units}, DeineUnit;
[edit] Wenn Du allerdings im interface-Teil noch nicht auf Klassen oder Routinen der einzubindenden Unit zugreifst, kannst Du auch im implementation-Teil eine uses-Klausel einfügen bzw. wie beschrieben erweitern. [/edit]

Coxy 2. Mai 2011 15:11

AW: musik abspielen
 
Vielen dank, es klappt jetzt
aber die Musik Datei wird nicht wiederholt obwohl ich am Ende ein SND_LOOP stehen habe.
Und ich würde gern das SND_LOOP mit dem SND_ASYNC kombinieren ist das überhaupt Möglich?

DeddyH 2. Mai 2011 15:15

AW: musik abspielen
 
Jepp, ist es, einfach "verodern": SND_ASYNC or SND_LOOP.

Coxy 2. Mai 2011 15:42

AW: musik abspielen
 
super läuft jetzt alles wie ich es wollte :)

PS: eine letzte Frage noch
warum heißt es SND_ASYNC or SND_LOOP
und nicht SND_ASYNC and SND_LOOP?

Also nur vom Prinzip her jetzt or heißt doch das eine oder das andere aber ich ja beides sozusagen ein und haben

Gruß

DeddyH 2. Mai 2011 15:44

AW: musik abspielen
 
Das habe ich vor längerer Zeit einmal in einem Tutorial beschrieben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:32 Uhr.
Seite 1 von 4  1 23     Letzte »    

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