Entwickler-Ecke

Open Source Units - bass.dll in einer visuellen Komponente


Claus_R - Fr 29.06.12 15:50
Titel: bass.dll in einer visuellen Komponente
Hallo,

ich schreibe hier erst meinen zweiten Beitrag. Ich bin aber ein fleißiger Leser des Forums und habe mir hier schon
allerhand Tipps geholt. Besonders bei Gausi's MEMP Tutorial. Danke dafür.

Nun eines der Ergebnisse.


Ich habe eine visuelle Komponente für die bass.dll geschrieben. Hier wird auch die tags.dll benutzt.

Es handelt sich um einen kleinen Player, der als Komponente installiert werden muß und dann einfach auf ein Formular gezogen wird.

Getestet habe ich mit Delphi 7 und XE, win7 und xp. Bei mir klappts.

Allerdings muss mann die dll's in \windows\system32 ablegen, sonst könnte es sein, dass XE meckert.

Die Grundkomponente ist ein TPanel.

Zip Version hier [http://cliffscott.homeip.net/panelplayer/panelplayer.zip].

Zip Version Demo hier [http://cliffscott.homeip.net/panelplayer/panelplayer_demo.zip].

Im zip sind auch bass.pas, tags.pass und die entsprechenden dll's.

Ebenso findet ihr da eine Dokumentation.



// Edit: Für Anregungen bin ich natürlich gerne zu haben. Auch für konstruktive Kritik und weitere Ideen.

Gruß

Claus


Gausi - Sa 30.06.12 19:36

Die Idee is ja erstmal nicht schlecht.

Zum Testen wäre aber ein kleines Demo-Projekt schön, damit man sich das mal anschauen kann, ohne erst die Komponente installieren zu müssen. :D


jaenicke - Sa 30.06.12 21:24

user profile iconClaus_R hat folgendes geschrieben Zum zitierten Posting springen:
Allerdings muss mann die dll's in \windows\system32 ablegen, sonst könnte es sein, dass XE meckert.
Das liegt daran, dass du die DLL nicht dynamisch lädst. Das würde ich aber dringend empfehlen.
Erstens kannst du das dann einfach nicht machen, wenn man im Designmodus ist, und zweitens kann man dann eine Fehlermeldung anzeigen, wenn die DLL beim Start fehlt statt dass einfach die Fehlermeldung von Windows kommt.

Die notwendige Unit dafür findest du auch auf der Bass-Seite unter "Delphi dynamic loading API":
http://www.un4seen.com/bass.html

Ansonsten reicht es auch die DLLs in einen Pfad zu legen, der im Systempfad ist (sprich der Umgebungsvariablen PATH), das muss nicht das Systemverzeichnis sein.

Und um einmal ein Beispiel zu ergänzen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
type
  TFormXYZ = class(TForm)
    dlgOpen: TOpenDialog;
  private
    var
      FPlayer: TPanelPlayer;
  public
  end;

// erstellen
  FPlayer := TPanelPlayer.Create(Self);
  FPlayer.Parent := Self;
  FPlayer.Align := alClient;
  FPlayer.SelfInit := True;
  FPlayer.Number := 1;

// abspielen
  if dlgOpen.Execute then
  begin
    FPlayer.Filename := dlgOpen.FileName;
    FPlayer.Play(nil);
  end;

Und weil du in der PDF-Datei deinen Programmierstil ansprichst bzw. dass dazu keiner was sagen soll:
Der ist doch (abgesehen von der Groß- und Kleinschreibung) gar nicht schlecht. ;-)


Claus_R - So 01.07.12 10:52

Hallo Stefan,

ich werde mal das dynamische Laden implementieren.

Danke für den Tip.

Eine Demo zum downloaden findet ihr im ersten Beitrag.

Gruß

Claus