So,
hat einen Moment gedauert...
ich habe jetzt alles überarbeitet und die Begrenzungen, die einem die BassDllPlayer-Komponente auferlegt hat beseitigt.
Das Speicherleck der DllLoader-
Unit konnte ich leider noch nicht stopfen!
(aber das habt ihr ja bei der alten Komponente auch nicht gemerkt)
Trotzdem, vielleicht findet ja irgendwer den Fehler bzw. kann ihn beheben. Das Problem ist das die vier erstellen Sections.Base-Elemente durch VirtualFree nicht freigegeben werden. Die
Unit ist richtig programmiert (so weit ich das sehen konnte). Der Speicher wird freigegeben aber MemProof sagt mir, dass bei dieser Freigabe ein Fehler passiert ist. Ich habe keine Ahnung, was da los ist
(eventuell liegt es an SP2)
Naja, egal kommen wir jetzt zur Komponente...
Jetzt kann man endlich die Bereichs- und Überlauf- Fehlerprüfungen eingeschaltet lassen. hurra!
Es können jetzt unendlich viele Komponenten (BassDllPlayerEx) in einem Programm verwendet werden.
Jeder Komponente wird dabei eine Soundkarte zugewiesen. Bei neueren Soundsystemen kann man auch einfach mehrere Komponenten der gleichen Soundkarte zuordnen.
Dies ist aber nicht erforderlich, da in jeder Komponente jetzt unendlich viele Kanäle definiert werden können. (Um Probleme mit älteren Soundsystemen zu vermeiden sollte man nur eine Komponente pro Soundkarte einsetzen - das geht dann immer!)
Ich habe mal ein kleines Beispiel angehängt.
Es existiert keine Playlist mehr, sorry hatte ich jetzt keine Lust mehr drauf.
Die Komponente muss nicht installiert werden, einfach entpacken, kompilieren und wohlfühlen...
Das Programm testet fünf Soundkarten und legt für jede in einem PageControl eine Seite an. Wenn man nur eine Soundkarte hat, werden (in der
IDE) vier Exceptions ausgelöst (also einfach weiterausführen). Wenn die Exe läuft bekommt man natürlich nichts davon mit. Ich breche die Schleife der Soundkarten nicht mit EXIT ab (weil: ich hasse exit, halt, break, goto).
Auf jeder Soundkartenseite im PageControl können dann über die rechte Maustaste Kanäle hinzugefügt bzw. entfernt werden.
Auf die Aufnahmemöglichkeiten der BassDllPlayer-Komponente bin ich nicht weiter eingegangen. Ich habe einfach die Vorgaben von der BassDllPlayer-Komponente übernommen. Ob das alles so funktioniert weiss ich nicht, mich interresierte nur das Abspielen - vielleicht kann das ja mal einer testen.
Ich möchte mich hier ausdrücklich bei meinen Vorgängern (
Gandalfus &
turboPascal)
bedanken.
Eure Vorarbeit (im Besonderen das Einbetten der
DLL in die EXE) hat mir sehr gefallen.
Ich hoffe euch beiden (und natürlich jeden den es interessiert) gefallen meine Erweiterungen.
Ich bin einfach konsequent den Weg weitergegangen, den Ihr beiden angefangen seit zugehen.
Also nochmal danke für die Möglichkeit.
MfG
Thorsten