![]() |
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 ![]() 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; |
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.
|
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:
Diese beiden Variablen benutzt die Unit um die DLL dynamisch zu laden.
BassDLL:='SNDHLD.TMP'+#0;
Bass_Path:=CheckDir(TmpDir); Vielleicht hat jemand ja nen Link für ne neue Version der Unit. |
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 ![]() grüsse, Hannes |
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:
Nachher
Uses ..., BASS, ...
Delphi-Quellcode:
und dann kannste auch die DLL löschen !
Uses ..., BASS_Dynamic, ...
|
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! :-) |
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:
Dan kann sie unter uses auch alls Dynamic_Bass benutzt werden.
UNIT bass;
ersetzen durch UNIT Dynamic_Bass; 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 22:27 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