5.8k Aufrufe
Gefragt in Anwendungen(Java,C++...) von Experte (1.1k Punkte)
Hallo

Ich bin gerade dabei ein kleines Programm zu schreiben, unter anderem Eine bestimmte mp3 Datei abspielen soll. Mein erster Versuch war DirectX.AudioVideoPlayback:

/*...
using...
*/
using Microsoft.DirectX.AudioVideoPlayback;

namespace meinProgramm
{
public partial class Form1 : Form
{
private Audio spiel = new Audio("abs.mp3");
/+
...
restlicher Code
...
*/


Als erstes kam "LoaderLock erkannt". Bei Debuggen->Ausnahmen->MDA hab ich es abgestellt. Jetzt kommt einfach und ergreifend "Fehler in der Anwendung", bzw. "DirectXException". Ich hab schon winmm.dll versuchtm, doch dann kommt statt der gewünschten Datei dieser Window-Fehler-"Ding"-Sound.
Kennt jemand Alternativen oder kann mir jemand sagen/erklären was da nicht stimmt und wie man das Problem beheben könnte?
Bitte, ich bin am verzweifeln :(
MfG
TByte

13 Antworten

0 Punkte
Beantwortet von jaja Experte (1.4k Punkte)
hey tbyte,

schau mal hier, das scheint genau dein thema zu sein..
0 Punkte
Beantwortet von Experte (1.1k Punkte)
Hallo

Danke für die schnelle Antwort, aber ich habe es schon so gemacht wie es da steht und es will einfach imernoch nicht -.- Ich heul gleich...
Da ist ja auch nichts falsch an dem Code. Das Schlimme daran ist: Der Fehler heißt "Fehler in der Anwendung". Na toll, was soll ich damit?
*heul*
Habt ihr andere Ideen?
Trotzdem Danke.
MfG
TByte
0 Punkte
Beantwortet von jaja Experte (1.4k Punkte)
Habt ihr andere Ideen?


du könntest ja auf directx verzichten ;) anscheinend kann man wav und auch andere (mp3?) auch ohne abspielen lassen..

ich habe aber 0 ahnung von .net und c#, posix kompatibler c code is das wahre für mich ;)
0 Punkte
Beantwortet von
Objektinitialisierungen solltest du in den Constructor schreiben, dann
kannst du Exceptions abfangen. DirectX nur zum Abspielen einer MP3-
Datei zu benutzen ist schwachsinnig, da Overkill.
0 Punkte
Beantwortet von
Objektinitialisierungen solltest du in den Constructor schreiben, dann
kannst du Exceptions abfangen. DirectX nur zum Abspielen einer MP3-
Datei zu benutzen ist schwachsinnig, da Overkill.
0 Punkte
Beantwortet von Experte (1.1k Punkte)
Hallo
@Jaja:
danke für deinen Versuch

@jajajajaja:
Ich hab die Objektinitialisierung schon in den Constructor, in FormLoad() und einfach so als Element hingeschrieben. try catch Blocks hab ich auch schon eingerichtet. winmm.DLL wollte nicht recht. DirectX.AudioVideoPlayback ist eigentlich ziemlich gut, nimmt auch nich zuu viel Speicher weg. Aber ich habe den Fehler gefunden:
Als ich LoaderLock Exception abgeschaltet habe, sagte der mir nur noch "Fehler in der Anwendung". Also klickte ich auf "Details" (die Schaltfläche "Details" ist mir vorher noch nie aufegefallen, komisch...) und der sagt mir dann am Ende, nach tausend Auf und Abklappdingens, "File not Found" -.- Schei... C#, ehrlich. Warum schreibt der das nicht gleich hin statt "Fehler in der Anwendung "??? *grr*. Auf jeden Fall weiß ich jetzt, dass C# nicht mit relativen Pfadangaben arbeiten kann und absolute braucht :)

MfG
TByte
0 Punkte
Beantwortet von
Vor allen Dingen müsste auch eigentlich eine FileNotFound Exception
auftreten.
Trotzdem solltest du auf DirectX verzichten, schließlich weißt du ja
nicht, ob das beim Anwender installiert ist.
Und zuletzt noch ein gut gemeinter Ratschlag:
Finger weg von C#!
Das ganze führt nur dazu, dass du durch diese ganzen RAD-Features
verwöhnt wirst und von der richtigen C-Syntax weggelenkt wirst.
Wenn du dann mal wieder ein C-Programm schreiben willst, musst du
dich ersteinmal wieder umgewöhnen.
Glaub mit, es ist sinnvoller C zu sprechen als diesen Proprietären
Microsoft-Müll.

Beste Grüße
0 Punkte
Beantwortet von supermax Experte (4.8k Punkte)
C# ist kein "proprietärer Microsoft-Müll", sondern eine von der ECMA genormte Sprache.

Für einen Einstieg in die objektorientierte Programmierung ist es sicherlich geeigneter als z.B. C++, was historisch bedingt ein C mit OOP-Erweiterungen ist, was man ja auch an der kruden Syntax erkennen kann.
0 Punkte
Beantwortet von
Mein Fehler.
C# mag genormt sein, aber zeig mir jemanden, der C# ohne .NET
benutzt ;)

Und da siehts schon ganz anders aus.

Vielleicht habe ich mich ungeschickt ausgedrückt.
Was ich sagen wollte ist, dass das Benutzen von C# und .NET dazu
verleitet, sich die Anwendungen "zusammenzuklicken", man macht es
sich einfach extrem leicht.

Und wenn du dann mal vor einem C/C++-Programm stehst - und das
sind heute nun mal die am meisten verbreitetsten Sprachen,
zumindest in der Unix-Welt - dann siehst du schonmal alt aus.

Nenn mich altmodisch, aber meiner Meinung nach gibt es für C#
keinen Bedarf. Nennenswerte Vorteile?

Beste Grüße
0 Punkte
Beantwortet von
Hallo
Ich kann mich nicht einloggen also schreibe ich so, sorry ;)
C# eignet sichç wie Supermax schon sagte, super, um erst einmal Programmierung und spaeter auch OOP zu lernen. C# ohne .Net ist Java mit allen Nachteilen, das stimmt auch. Allerdings ist - wie ich finde - die C# Syntax um vieles einfacher als Java, vor allem was die GUI betrifft, und genau deshalb ist es auch so schön geeignet, erst einmal das Prinzip der GUI nahezubringen (EventHandling, Steuerelemente, etc.). Aber da hat jajajajaja schon recht, wenn man sich erst einmal an C# gewöhnt hat, ist C++ umso schwerer, glaubt mir da spreche ich leider aus Erfahrung. Aber dennoch benutzen, was weiss ich, 70% Windows, 20% villeicht Mac und 10%Linux/BSD/etc. Daher ist es für Windows Benutzer einfacher.
Java hingegen ist jedoch auch nicht das wahre, da wird man auch leicht verwöhnt. Als einer meiner Kumpel mir erzaehlte, dass es ganz leicht waere, in Java Server zu programmieren, hab ich mir erstmal gedacht ''der spinnt doch server und leicht...'' und meinte zynisch ''ja mit Server server = new Server(); und server.CreateServer() und sowas *haha*'', da meinte der erstmal ''ey woher weisst du das''. da musst ich mich erstmal kaputtlachen, weil server in C++ sehen ganz anders aus (Socket, IP, Platform, Server, Respond, Log und was weiss ich...).
Auf jden Fall Problem gelöst, danke trotzdem für eure Hilfe leute!
MfG
TByte
...