![]() |
Audiodateien einbinden
Kann mir mal jemand verraten, wie ich Audiodateien einbinden kann, so dass man z.B. auf einen Button drückt und dann die Audiodatei abgespielt wird?
Ich wäre sehr dankbar. :bouncing4: Gruss Häcki |
Re: Audiodateien einbinden
|
Re: Audiodateien einbinden
Sorry das ich so blöd frage, aber wo finde ich diese Resource? :cry:
Habe voll keine Ahnung. Gruss Häcki |
Re: Audiodateien einbinden
Die erstellt man.
Kann man mit Delphi machen: Datei - Neu - Weitere - Textdatei dort gibt man z.B. ein: 100 Sound 'irgendwas.wav' (Angabe ohne Gewähr!) ;) Speichern unter: irgendwas.res Dann in Delphi: Umschalttaste+F11 und diese Datei auswählen. |
Re: Audiodateien einbinden
Hallo hacker,
die Resource wirst Du solange nicht finden bis Du sie nicht eingebunden hast. Dafür musst Du Die eine Resourcendatei schreiben und in dein Projekt einbinden.
Code:
Dabei muss sich die Wave-Datei sound.wav in demselbem Verzeichnis wie die Resourcendatei befinden.
WaveResource WAVE "sound.wav"
|
Re: Audiodateien einbinden
Das wird wohl so nicht funktionieren.
Delphi-Quellcode:
Dies kommt in eine *.rc Datei rein. (per Texteditor oder Delphi)
WaveResource WAVE "sound.wav"
Diese muss mit der Brcc32.exe aus dem Delphi-BIN-Verzeichnis in eine *.res kompiliert werden. (einfach draufziehen) Dabei sollten Wave-Datei, *.rc und Brcc32.exe im selben Verzeichnis sein. So, und dann wie im Link einbinden. |
Re: Audiodateien einbinden
Mir ist alles klar...Aber ich finde die Brcc32.exe nicht :cry:
Wo finde ich die? Gruss Häcki :hi: |
Re: Audiodateien einbinden
HI!
Also vom Pfadmuster hier: C:\Programme\Borland\Delphi6\Bin\brcc32.exe Ciao fkerber |
Re: Audiodateien einbinden
danke für den hinweis!! :bounce1:
Gruss Häcki :hi: |
Re: Audiodateien einbinden
Mit den Ressourcen wäre jetzt alles klar. :hello:
Jetzt fehlt mir nur noch dieser Ausdruck mit dem ich nichts anfangen kann :( :
Delphi-Quellcode:
kann mir da jemand helfen?Ich wäre echt froh :)
procedure TfrmMAIN.Button1Click(Sender: TObject);
begin // Sounds stoppen PlaySound(nil,0,0); // Wavedatei aus Resource abspielen (SND_RESOURCE) und // nicht warten, bis das Abspielen beendet ist (SND_ASYNC) PlaySound('WaveResource',hInstance,SND_RESOURCE or SND_ASYNC); end; Gruss Häcki :hi: [edit=Admin]Delphi-Tags eingefügt. Künftig bitte selber machen. Danke. Mfg, Daniel[/edit] |
Re: Audiodateien einbinden
Hi!
Als Tipp vorneweg: Quellcode immer in den Delphi-Code-Tags: [.delphi][./delphi](ohne die Punkte) Wo genau ist das Problem mit dem Code? Hast du schonmal in die Delphi-Hilfe zu diesem Thema geschaut? ciao fkerber |
Re: Audiodateien einbinden
Für das nächste mal weiss ich es ja jetzt :)
Mein Problem...Ich kann doch nicht einfach das eingeben und dann kommt dr Sound und alles von aleine oder? Habe noch nicht in der Hilfe gestöpert.Werde ich jetzt machen vieleicht hilft es mir weiter. Gruss Häcki :hi: |
Re: Audiodateien einbinden
Doch, doch.
Eigentlich müsste es dann genau so klappen. Bedingung ist halt nur, dass sämtliche Bezeichner, wie "WAVERESOURCE" und "Sound.wav" mit Deinen persönlichen Bezeichnern bzw. Dateinamen übereinstimmen. (waren ja nur als Beispiele gedacht) Viel Erfolg! :thuimb: |
Re: Audiodateien einbinden
kanst du mir ein Beispiel machen?
Im moment check ich garnichts mehr :wall: Gruss Häcki :hi: |
Re: Audiodateien einbinden
Hallo,
wenn Du Playsound verwenden möchtest musst Du die unit mmsystem.pas einbinden Den Resourcencompiler brcc32.exe brauchst Du (ich glaube) ab Delphi 5 nicht mehr. Es reicht wenn Du die rc-Datei zu Deinem Projekt hinzufügst. Wenn Du den Resourcencompiler verwenden möchtest, dann musst Du natürlich die Resource einbinden. das gschieht mit {$R MeineResource.res} |
Re: Audiodateien einbinden
Moin Jens,
Zitat:
Zumindest bei D5 klappt das mit dem einfachen einbinden der RC Datei bei vielen Resourcen nicht so richtig. Ich habe den Eindruck, dass Borland hier intern einfach nicht den BRCC32 benutzt, warum auch immer. |
Re: Audiodateien einbinden
Hallo Christian,
ich glaube aber doch. Bei mir klappt es mit Bitmap's, Wave's und RCData. Mit welche Typen klappt es denn nicht? |
Re: Audiodateien einbinden
Moin Jens,
ich hab's jetzt gerade noch mal geprüft: Wenn ich 24 Bit Bitmaps als Resourcen einbinden will (via RC-Datei), bekomme ich vom RLINK32 immer die Fehlermeldung: "Unsupported 16 Bit Resource in File: ..." Wenn ich hingegen die gleiche RC Datei mit dem BRCC32 in eine RES umwandele und diese dann einbinde gibt's keine Probleme. Auf Grund Deiner Anregung hab' ich es eben noch einmal mit anderen Resourcetypen versucht, und erhalte immer (jetzt seltsamer Weise auch bei 24 Bit Bitmaps) die Meldung "Error Reading File", aber nur, wenn die RC Datei im Projektverzeichnis liegt (wo ich sie normalerweise nicht hinlege). Bei der RES Datei nach wie vor keine Probleme. Falls Du mir mal ein Beispiel (RC samt Datei(en), Pfadangaben usw.) zuschicken kannst, dass bei Dir funktioniert kann ich mal Ursachenforschung betreiben. |
Re: Audiodateien einbinden
Liste der Anhänge anzeigen (Anzahl: 3)
Jetzt komme ich überhaupt nicht mehr nach. :(
Ich habe jetzt eine kleine Vorlage dazu gelegt...wen jemand will, kann er mir mal ein Beispiel mit al den ressourcen, Quelltext und so machen dann komm ich vieleicht auch nach. Ich bin euch dankbar. Gruss Häcki :hi: |
Re: Audiodateien einbinden
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Christian,
hier kommt das Beispiel. Ich verwende D5 SP1. Es werden fünf Bilder aus der Resource geladen mit 24,16,8,4,2 Bit. Es wird eine EXE aus der Resource geladen und gestartet ( kannste ruhig starten. ist nur ein Form). Es wird ein Sound abgespielt. Ach ja: Unbedingt mit Pfadangaben entpacken. |
Re: Audiodateien einbinden
das bsp von jens läuft bei mir problemlos, werde es mal mit anderen ressourcen testen
raik |
Re: Audiodateien einbinden
Moin Häcki,
eigentlich steht hier im Thread schon alles was Du brauchst. Ich fasse das mal zusammen: Du erstellst eine Textdatei mit der Endung RC. In dieser schreibst Du eine (ggf. auch mehrere) Zeile, die folgenden Aufbau hat: NameDerResource TypDerResource PfadZuDerDateiDieDieResourceEnthält NameDerResource meint die Bezeichnung, unter der Du die Resource später im Programm ansprechen kannst. TypDerResource bezeichnet einen vordefinierten Resourcentyp, z.B. WAVE oder BITMAP, oder einen selbsterdachten, was hier aber keine Rolle spielen wird. PfadZuDerDateiDieDieResourceEnthält gibt den Namen der Resourcendatei an, und den Pfad, der auch relativ zur Lage der RC Datei angegeben werden kann (bei Leerzeichen im Pfad in "" einschliessen) Beispiel: bild BITMAP Graphics\Photo.bmp es soll eine Resource vom Typ BITMAP eingebunden werden, die im Programm mit der Bezeichnung bild angesprochen werden kann. Hierzu soll die Datei Photo.bmp hinzugefügt werden, die sich im Verzeichnis Graphics befindet, das sich im gleichen Verzeichnis befindet, wie die RC Datei. Du könntest jetzt also eine Datei erstellen, als Beispiel nenne ich sie SOUNDFILE.RC. Da hinein kommt eine Zeile: MySound WAVE MySound.wav Nur zur Sicherheit, falls Jens' Variante nicht funktioniert, kannst Du jetzt eine Resourcendatei erstellen: Konsole öffnen, BRCC32 eingeben, und die SOUNDFILE.RC per Drag&Drop in das Konsolenfenster ziehen. Enter. Jetzt sollte der Resourcencompiler eine SOUNDFILE.RES im gleichen Verzeichnis angelegt haben, in der sich auch die SOUNDFILE.RC befindet. Und jetzt folgt nur noch ein Ausschnitt aus der Unit in der die Datei abgespielt werden soll (wichtig: unter uses die unit mmsystem mit einbinden):
Delphi-Quellcode:
Fertig.
implementation
uses mmsystem; {$R *.DFM} {$R SOUNDFILE.RES} // Abspielen der Wavedateiresource procedure TForm1.Button1Click(Sender: TObject); begin // 'MySound' = Name der Resource (erster Wert in der RC Datei) // 0 = Handle zur Datei aus der die Resource geladen werden // soll. Wird hier nicht gebraucht, da diese EXE auch // die Resource enthält. Man kann auch hInstance angeben // SND_RESOURCE = Der erste Parameter gibt den Namen einer Resource an // SND_ASYNC = Die Funktion startet das Abspielen, und kehrt dann // sofort zurück. // Ansonsten würde das Ende des Abspielens abgewartet, // und das Programm würde an dieser Stelle stehenbleiben PlaySound('MySound',0,SND_RESOURCE or SND_ASYNC); end; // Abspielen stoppen procedure TForm1.Button2Click(Sender: TObject); begin // nil = Das Abspielen der aktuellen Wavedatei wird beendet PlaySound(nil,0,0); end; Jetzt kann man mit Button1 die Wavedatei aus der Resource abspielen, und das Abspielen mit Button2 stoppen. |
Re: Audiodateien einbinden
Vielen dank!!!!!!!!!!
Das ist sehr ausführlich und verständlich geschrieben.Ich habe es ausprobiert und mein programm läuft jetzt. :dancer2: :dancer2: :dancer2: :bounce1: :bounce1: :bounce1: :hello: :hello: :hello: Gruss häcki :hi: |
Re: Audiodateien einbinden
hmmm kann mir vllt einer sagen wo mein fehler liegt???
Delphi-Quellcode:
ich weiss nicht warum aber wenn ich auf den button klicke dann passiert nichts....
unit Unit1;
interface uses Windows, mmsystem, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} {$R song2.RES} procedure TForm1.Button1Click(Sender: TObject); begin PlaySound('song2' ,0,SND_RESOURCE or SND_ASYNC); end; end. die dateien song2.wav song2.rc und song2.res befinden sich alle im Ordner ....\DELPHI\BIN |
Re: Audiodateien einbinden
Zitat:
N8i, Fabian |
Re: Audiodateien einbinden
wenn es nur um sounddateien geht, warum nutzt ihr nicht den mediaplayer? :gruebel:
|
Re: Audiodateien einbinden
Hallo,
ich erhalte folgende Fehlermeldung beim Kompilieren: [Fehler] WARNING. Duplicate resource(s): [Fehler] Type WAVE, ID WAVERESOURCE: nachdem ich eine Sounddatei als Ressource eingebunden habe. .wav, .rc und .res sind alle im Projektordner, wo auch die brcc32.exe ist. Der Progcode des implementation Teils:
Delphi-Quellcode:
implementation
uses mmsystem; {$R *.DFM} {$R bicasso.res} procedure TForm1.Button1Click(Sender: TObject); begin // Sounds stoppen PlaySound(nil,0,0); // Wavedatei aus Resource abspielen (SND_RESOURCE) und // nicht warten, bis das Abspielen beendet ist (SND_ASYNC) PlaySound('Waveresource',hInstance,SND_RESOURCE or SND_ASYNC); end; procedure TForm1.Button2Click(Sender: TObject); begin // Sounds stoppen PlaySound(nil,0,0); end; end. Wo liegt mein Fehler? Kann mit der Fehlermeldung rehct wenig anfangen... Jan |
Re: Audiodateien einbinden
Also ich verwende die mediaplayer in Delphi für soundwiedergabe.... sind easy zu benutzen:
Delphi-Quellcode:
Eigenschaften vom player selbst auf visible=false setzen, dann sieht man ihn nicht, und bedienen kannst Du ihn auch über buttons oä marke eigenbau
MediaPlayer20: TMediaPlayer;
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin MediaPlayer1.filename:=(ExtractFilePath(ParamStr(0)) + 'data\musik\chargeneration1.mp3'); MediaPlayer1.open; MediaPlayer1.play; end; usw :wink: just my 2 cents... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:54 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