MediaPlayer Datei mit rc öffnen
-
will mich da ja nicht einmischen, aber bei dem ganzen chaos steht nur zeug was keiner braucht zb. ärgern, ärgern, rechthaben wollen usw.
wenn ihr euch dann beruhigt habt, bitte eine antwort auf meine frage die ich vor eurer streiterei gestellt habe.
bitte, bitte
danke im voraus
mfg
-
Wie schon weiter oben gesagt versuche mal PlaySound statt sndPlaySound. Alternativ kann man natürlich auch erst die Daten aus der Ressource holen, temporär als Datei speichern und dann den Mediaplayer verwenden. So wie Rostfrei[] und akari es schon gesagt haben.
-
Aber wie soll ich diese sounddatei herausholen und woanders speichern??????
(NICHT DELPHI CODE)!
-
thx, habs geschafft
habs wie akari und Rostfrei[] gesagt haben gemacht.
entlich muss ich keine mp3 mehr bei einem game mitliefern

MFG
-
Hier noch mein Code zum Laden beliebiger Daten aus einer Ressource
//steht so oder so ähnlich in der rc-Datei MUSIK1 RCDATA "test.mp3" // Im Hauptprogramm um sich die Daten zu holen und in einer Datei zu speichern stringstream sstream; HRSRC rsrc = FindResource((int)HInstance, "MUSIK1",RT_RCDATA); if(rsrc) { DWORD Size = SizeofResource(HInstance , rsrc); HGLOBAL MemoryHandle = LoadResource(hdll,rsrc); if(MemoryHandle != NULL) { sstream << (char*)LockResource(MemoryHandle); ofstream file("test.mp3", ios::binary); file.write(sstream.str().c_str(), size); } } //jetzt nur noch die Datei laden und evtl. wieder löschen
-
Wenn du die Daten nicht auf Festplatte speichern willst, kannste auch FMOD verwenden. Das kann Dateien auch aus dem Speicher lesen.
-
Dein Code Funzt Nicht, erstellt zwar eine datei aber nur mit 33kb und die geht Nicht!!
-
Was steht denn in size? Ansonsten könnte man noch den stringstream rausschmeißen
if(MemoryHandle != NULL) { char* buffer = (char*)LockResource(MemoryHandle); ofstream file("test.mp3", ios::binary); file.write(buffer, size); }
-
Ich tippe eher drauf, dass DU nicht "funzt".
Aber ich denke auch, dass man auch die VCL benutzen sollte, wenn man sie schon zur Verfügung hat...
-
Du kannst ja noch den Code posten, damit beim nächsten Mal schon was fertiges im Forum steht.
Gruss
-
Das mit dem ResourceStream kannte ich noch nicht. Dann sieht der Code gleich viel übersichtlicher aus.
TResourceStream* rstream = new TResourceStream(HInstance, "MUSIK1","RT_RCDATA"); rstream->SaveToFile("test.mp3"); delete rstream;
-
Genau das meinte ich. Jetzt braucht "der Neue" auch nicht mehr zu meckern.
-
Wahrscheinlich wird auch das bei ihm nicht gehen
-
Man sollte die Erzeugung noch in einen try/catch Block einschließen, da eine Exception geworfen wird (EResNotFound) wenn irgendwas mit der Resource nicht stimmt.
-
und damit der Neue auch noch ein wenig Spass an der Sache hat, das ganze hier in Delphi:
var TempStream : TResourceStream; begin TempStream := TResourceStream.Create(hInstance, 'MUSIK1',RT_RCDATA); try TempStream.Position := 0; TempStream.SaveToFile('test.mp3'); finally TempStream.Free; end; end;
-
Leider kommt doch ein Fehler!
Der nämlich:
[C++ Error] Unit1.cpp(53): E2285 Could not find a match for 'TResourceStream::TResourceStream(void *,char *,char *)'
-
Uiuiui... Ist der kleine Neue zu dumm, um mal in die Hilfe zu schauen und sich zu fragen, wie das richtig geht, hmmm? Der arme...

-
Tja, habs ja gesagt. Und dann noch so eine klare Fehlermeldung mit Quellcode. Einfach toll
-
Das Problem gäbe es mit Delphi übrigens nicht... :p
-
Poste doch noch ein bisschen Delphi-Code. Ich bin richtig geil darauf...
