Seite 1 von 2

Module mit dll abspielen [Gelöst]

Verfasst: 22.06.2009 17:57
von Tsuki-Namida
Hallo,
ich habe vor eine DLL Datei zu machen mit der mal module abspielen kann (später noch andere formate)

diese dll soll später in einer scriptsprache (Ruby RGSS) verwendet werden
ich habe zunächst das erst noch in der Probier fase und habe mal eine kleine dll geschrieben mit ein paar zeilen momentahn nur ein Modul Player ohne irgentwas andere...

ich habe die dll in einem weiternen text aufgerufen um zun sehn ob es so funktioniert nur leider erfolg los...

hier erst mal die dll:

Code: Alles auswählen

ProcedureDLL Playmod(Datei$)
  If InitSound()
    If LoadModule(0,Datei$)
      PlayModule(0)
    Else
      MessageRequester("Fehler","Die angegebene Datei konnte nicht geladen werden oder Existiert nicht.")
    EndIf
  Else
    MessageRequester("Hinweis","Die Soundkarte wuirde nichtgefunden oder wird anderweitig genutzt.")
  EndIf
EndProcedure
wenn ich die dll aufrufe kokomme ich immer die meldung das die angegebene datei nicht geladen werden konnte

das wäre meinb erstes problem...

dann stellte ich mir die frage wie ich die gerade gespielte datei wieder stoppen kann (fenn sie ggf gespielt wird)

okay ich bin jetzt der meinung das es gar nicht geht die datei abzu spielen so wie die dll aufgebaut ist
denn wenn der text ausgeführt wurden ist, ist ja der priogramm teil fertig und wird beendet...

habt ihr ggf eine alternativ lösung parat?

PS: Ich nutze PB 4.30

Verfasst: 22.06.2009 18:08
von jojo1541
Stoppen kannst du sie, indem du eine weitere ProcedureDLL machst, in der du den Befehl StopModule(Module) einbaust.

Wenn ein Modul fertig ist endet es automatisch, zuminderst tat es das bei mir trotz Wiederholungsmarken.

Re: Module mit dll abspielen

Verfasst: 22.06.2009 18:08
von Kiffi
<Halb-OT>
Magix-Soft <Kain> hat geschrieben:PS: Ich nutze PB 4.30
nimm lieber die 4.31. In dieser Version sind eine Reihe von Fehlern
behoben worden.

<Halb-OT>

Grüße ... Kiffi

Verfasst: 22.06.2009 18:11
von Tsuki-Namida
@volti
okay demnach wird es ja wohl doch gehn in einer dll eine modul datei abzu spielen...
aber warum kommt de meldung das die datei nicht geladen werden kann???

@Kiffi werde gleich mal updaten danke

Re: Module mit dll abspielen

Verfasst: 22.06.2009 18:17
von Kiffi
Magix-Soft <Kain> hat geschrieben:wenn ich die dll aufrufe kokomme ich immer die meldung das die angegebene datei nicht geladen werden konnte
wenn LoadModule() fehlschlägt, solltest Du prüfen, ob...

1.) die Datei auch wirklich vorhanden ist.

und

2.) es sich bei der angegebenen Datei auch wirklich um eine durch LoadModule zu ladende Datei handelt.

Grüße ... Kiffi

Verfasst: 22.06.2009 18:19
von ts-soft
InitSound() ist dort in jedem falle verkehrt, bzw. ist sicherzustellen, das es
nur einmal aufgerufen wird.

Entweder eine statische Variable als Flag nutzen oder AttachProcess() oder
einfach eine Procedure nur für InitSound()

Verfasst: 22.06.2009 18:21
von jojo1541
Die Funktion an sich ja, aber es dürfen keine DirectX Intialisierungsroutinen in den mehrfach aufgerufenen DLL-Prozeduren stehen. was bei dir der Fall ist.(InitSound()) Evtl. eine Extra PRocedure fü machen.


Edit: verdammt Ts-Soft war schneller.

Verfasst: 22.06.2009 18:24
von Kaeru Gaman
wo steht das in der Hilfe? (Verweis bitte)

... ich würde mal schätzen, dass das bedeutet, dass in einer DLL initialisierte Funktionen nicht für Befehle im Hauptprogramm zur verfügung stehen.

die bare Aussage "DX Funktionen dürfen nicht in DLLs initialisiert werden" ist schlicht falsch.

[edit]
> Edit: verdammt Ts-Soft war schneller.
womit? er hat was völlig anderes ausgesagt als du...

[edit2]
ach JETZT ergibt deine Aussage einen sinn... verdori.

Verfasst: 22.06.2009 18:27
von Tsuki-Namida
naja da ich ja noch in der test fase bin (wie es nun geh könnte)

ist es ja egal wo InitSound() steht es wird jedenfalls ausgefürht und wenn es nicht möglich ist kommt ebenfalle eine meldung...

LoadModule() wird auch überprüft mit einer If abfrage und das schlägt ja fehl -.- (Siehe quelltext oben im ersten Beitrag)

der Fad stimmt 100%
ich habe es mit verschiedenen Datei formaten versucht: *.it, *.s3m, *.mod und *.xm

wenn ich die den phad bei LoadModule() direckt eingebe funktioniert es ja aber das ist nicht das was ich möchte

Verfasst: 22.06.2009 18:28
von jojo1541
Ich meinte ja nicht, dass sie nich drinstehen dürfen, sondern nicht in FUnktionen die öfter als einmal aufgerufen werden. Ich schreibe mein InitSound() ja auch nich in die Main-loop meines Programms.

Zur Hilfe, das war mein Fehler, ich habe dass AttachProcess überlesen.
[edit]
> Edit: verdammt Ts-Soft war schneller.
womit? er hat was völlig anderes ausgesagt als du.
Nein, er hat gesagt, dass InitSound() da fehl am Platz ist und ich auch.(wenn auch auf andere weiße... <) )