Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bass.dll dynamisch zur laufzeit laden (https://www.delphipraxis.net/42309-bass-dll-dynamisch-zur-laufzeit-laden.html)

TeTSuO 17. Mär 2005 06:24


Bass.dll dynamisch zur laufzeit laden
 
Hallo Erstma

Ich habe die Bass.DLL mit in das kompilat eingebunden. zur laufzeit wird es auch entpackt wenn ich aber versuche die DLL mit der Unit Bass_dynamic zu Laden kommt ne Fehlermeldung das er die Datei nicht Laden konnte.

Die Unit ist für Version 2.0 von der Bass.dll ich habe aber Version 2.1. Kann es vielleicht daran liegen das er die Proceduren falls addressiert

Mein Quelltext :

Delphi-Quellcode:
Var hFindRes: HRSRC;
    hLoadres: HGLOBAL;
    hLockRes: Pointer;
    FS: TFileStream;
    TmpDir: String;
    N: Integer;
    FPlayer: TBassInstance;

Begin
 // DLLName für Bass_Dynamic
 BassDLL:='SNDHLD.TMP'+#0;
 // Tempverzeichnis ermitteln
 SetLength(TmpDir,MAX_Path);
 N:=GetTempPath(MAX_Path,PChar(TmpDir));
 SetLength(TmpDir,N);
 // DLL Pfad für Bass_Dynamic setzen
 Bass_Path:=CheckDir(TmpDir);
 // Ressource laden
 hFindRes:=FindResource(hInstance,MAKEINTRESOURCE(1000),'APPDATA');
 hLoadRes:=LoadResource(hInstance,hFindRes);
 hLockRes:=LockResource(hLoadRes);
 // Ressource speichern
 FS:=TFileStream.Create(Bass_Path+BassDll,fmCreate);
 FS.Write(hLockRes^,95288);FS.Free;
 
 FPlayer:=hBassCD;    
 LoadBassDLL(FPlayer);
End;

jim_raynor 17. Mär 2005 07:39

Re: Bass.dll dynamisch zur laufzeit laden
 
Tja. Das Temporäre verzeichnis wird nicht in PATH drin stehen, dementsprechend sucht er auch nicht dort nach der Bass datei und findet sie nicht. Zumal er eine Bass.DLL sucht und du die anders benennst. Du musst also LoadBassDLL ändern, so das der korrekte Dateiname angegeben wird, oder du entpackst die Datei ins aktuelle verzeichnis und mit dem richtigen Dateinamen.

TeTSuO 17. Mär 2005 18:44

Re: Bass.dll dynamisch zur laufzeit laden
 
Ich habe doch Pfad und Dateiname für die Bass_dynamic Unit geändert, steht doch im Quelltext

Delphi-Quellcode:
    BassDLL:='SNDHLD.TMP'+#0;
    Bass_Path:=CheckDir(TmpDir);
Diese beiden Variablen benutzt die Unit um die DLL dynamisch zu laden.
Vielleicht hat jemand ja nen Link für ne neue Version der Unit.

noch_ein_hannes 17. Mär 2005 19:35

Re: Bass.dll dynamisch zur laufzeit laden
 
Hi,

Es gibt es noch ne andere Möglichkeit eine DLL ins Projekt zu bekommen. Schau Dir mal den Weg mit DLLTools an. Ich weiss allerdings nicht, ob es auch bei der Bass.dll klappt. Falls ja, wäre ich über eine Nachricht sehr dankbar.

grüsse,
Hannes

TeTSuO 17. Mär 2005 20:47

Re: Bass.dll dynamisch zur laufzeit laden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das ist echt :thumb: Super. Danke für den Tipp mit DLLTOOLS!

War zwar ein bisschen Arbeit nötig aber das Resultat ist, ich habe jetzt alles was ich wollte :-D !

BASS.Dll ist in EXE integriert und ich habe jetzt die Unit Bass_Dynamic von Version 2.1!!!
Wer auch die DLL ohne irgendetwas im Quelltext zu ändern (außer USES) in die EXE einbinden will kann sich die Datei runterladen.

im Quelltext folgendes ändern

Vorher

Delphi-Quellcode:
 Uses ..., BASS, ...
Nachher

Delphi-Quellcode:
 Uses ..., BASS_Dynamic, ...
und dann kannste auch die DLL löschen !

noch_ein_hannes 17. Mär 2005 23:34

Re: Bass.dll dynamisch zur laufzeit laden
 
COOL!
... und ich danke für die Unit, denn mein Versuch die Bass.dll damit umzusetzen hatte damals irgendwie nicht richtig geklappt ... ich werde es mir morgen mal anschauen! :-)

master87 20. Sep 2009 12:05

Re: Bass.dll dynamisch zur laufzeit laden
 
Liste der Anhänge anzeigen (Anzahl: 1)
@ TeTSuO Deine Bass_Dynamic functioniert nicht richtig da einige functionen fehlen.Ich habe jetzt mal die neue Bass.dll geholt und deren unit Dynamic_Bass; alls vorlage genommen ich hoffe das sie so richtig ist.
Sie wird unter uses alls bass eingefügt kann aber verändert werden durch ersetzen dieser zeile:
Delphi-Quellcode:
UNIT bass;
ersetzen durch
UNIT Dynamic_Bass;
Dan kann sie unter uses auch alls Dynamic_Bass benutzt werden.
Falls irgend welche fehler drin sein sollten könntet ihr sie bitte korigiren und neu hier hochladen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:46 Uhr.

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