Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Bass.dll einbinden? (https://www.delphipraxis.net/96691-bass-dll-einbinden.html)

Tommy1988 29. Jul 2007 02:43


Bass.dll einbinden?
 
Hallo, ist es möglich die Bass.dll in eine Unit "einzubinden".

Also ich meine, dass man diese externe Bass.dll nicht mehr braucht?

Wenn ja, wie geht das?

Dunkel 29. Jul 2007 03:02

Re: Bass.dll einbinden?
 
Guck Dir mal das an.

Ghostwalker 29. Jul 2007 06:42

Re: Bass.dll einbinden?
 
Egal ob du es mit einer Unit oder einer Komponente einbindest, die BASS.DLL brauchst du immer. In ihr steckt die eigentliche Funktionalität.

Tommy1988 29. Jul 2007 09:57

Re: Bass.dll einbinden?
 
Also ich dachte mit dem Code hier wär das Problem gelöst:

Delphi-Quellcode:
var
  Form1: TForm1;
  DLLRes: TResourceStream;

implementation

{$R *.dfm}
{$R DLL.res}

function TempDir: String;
begin
  Result := SysUtils.GetEnvironmentVariable('temp');
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  DeleteFile(TempDir+'\bass.dll');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  if not FileExists(TempDir+'\bass.dll') then
  begin
    DLLRes :=TresourceStream.CreateFromID(0, 101, PChar('DLL'));
    DLLres.SaveToFile(TempDir+'\bass.dll');
  end;
  if FileExists(TempDir+'\bass.dll') then ShowMessage(':-)')
  else ShowMessage(':-(');
end;
Aber wenn ich den einfüge und BASS (Bass.pas ist die Unit zur Bass.dll)aus den Uses nehme
erhate ich den Fehler in dieser Zeile:
Delphi-Quellcode:
  chan: HSTREAM = 0;
HStream wär nicht definiert/deklariert.

Das Hstream steht ja natürlich in der Bass.pas.. aber ich möcht die ja gern so wie im Beispiel oben einbinden :idea:

Gausi 29. Jul 2007 10:08

Re: Bass.dll einbinden?
 
Du musst unterscheiden zwischen der pas und der dll. Du kannst die dll mit in die Exe packen und beim Start extrahieren (ob das die Bass.dll-Entwickler so mögen, weiß ich nicht. Wenn du die Verwendung der bass nicht "verheimlichst" geht das aber iirc in Ordnung. Ich meine, da mal von Ian einen Kommentar zu gelesen zu haben.)

Trotzdem musst du die Unit bass.pas verwenden. Woher soll denn sonst der Compiler die ganzen Befehle kennen? Die bass.pas muss du ja nicht mitliefern, dein Problem wäre also gelöst.

turboPASCAL 29. Jul 2007 10:15

Re: Bass.dll einbinden?
 
Zitat:

Zitat von Tommy1988
Hallo, ist es möglich die Bass.dll in eine Unit "einzubinden".
Also ich meine, dass man diese externe Bass.dll nicht mehr braucht?
Wenn ja, wie geht das?


Zitat:

Zitat von Tommy1988
Also ich dachte mit dem Code hier wär das Problem gelöst:

Delphi-Quellcode:
...
Aber wenn ich den einfüge und BASS (Bass.pas ist die Unit zur Bass.dll)aus den Uses nehme
erhate ich den Fehler in dieser Zeile:
Delphi-Quellcode:
  chan: HSTREAM = 0;
HStream wär nicht definiert/deklariert.

Das Hstream steht ja natürlich in der Bass.pas.. aber ich möcht die ja gern so wie im Beispiel oben einbinden :idea:

Im Post 1 fragst du wie man es Anstellt die Bass.dll so einzubinden das man sie als externe Datei nicht mer braucht....

Im deinem Post 2 beschreibst du aber wie man eine Datei aus einer Resource extrahierst und als Datei
speicherst. Somit währe die Datei wieder als externe Datei vorhanden.

Bedenke das die DLL wen du sie aus der Resource extrahierst mit einem realen Pfad geladen werden muss oder du "entpackst" diese in das Windows-Systemverzeichnis (schlechte Idee) bzw. in das Verzeichnis deiner Anwendung (bessere Idee).

Tommy1988 29. Jul 2007 10:34

Re: Bass.dll einbinden?
 
mh, naja eigentich sollte sie ganz verschwinden (extern)

EWeiss 29. Jul 2007 10:57

Re: Bass.dll einbinden?
 
Zitat:

Zitat von Tommy1988
mh, naja eigentich sollte sie ganz verschwinden (extern)

Wäre nicht schlecht wenn du die Kernel32 dann auch direkt verschwinden läßt. :zwinker:
Aber mal im ernst wie soll das gehn ?

gruss

Tommy1988 29. Jul 2007 11:04

Re: Bass.dll einbinden?
 
Ich dachte ich binde sie dynamisch ein. hat eben auch soweit geklappt, nur die bass_dynamic die ich hatte war 2 ausgabeversionen älter :? .. also soll heißen es werden die proceduren falsch adressiert

EWeiss 29. Jul 2007 11:07

Re: Bass.dll einbinden?
 
Zitat:

Zitat von Tommy1988
Ich dachte ich binde sie dynamisch ein. hat eben auch soweit geklappt, nur die bass_dynamic die ich hatte war 2 ausgabeversionen älter :? .. also soll heißen es werden die proceduren falsch adressiert

Schau mal hier http://members.aol.com/wtgdana/private/Bass/

Mußt dir die *.pas Dateien halt auf die neueste Version von Bass anpassen.
Ob jemand neuere ausgaben zur verfügung stellt weiss ich auch nicht.

gruss Emil


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz