AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi dll in Systemordner suchen anstatt im Exe-Ordner
Thema durchsuchen
Ansicht
Themen-Optionen

dll in Systemordner suchen anstatt im Exe-Ordner

Ein Thema von HentaiD · begonnen am 11. Nov 2003 · letzter Beitrag vom 11. Nov 2003
Antwort Antwort
Benutzerbild von HentaiD
HentaiD

Registriert seit: 30. Jun 2003
Ort: Wuppertal
30 Beiträge
 
Delphi 7 Enterprise
 
#1

dll in Systemordner suchen anstatt im Exe-Ordner

  Alt 11. Nov 2003, 14:38
Hallo,ich bins schon wieder!
Da soweit jetzt alles klappt , habe ich nur noch ein Problem.
Von der unit , die ich benutze , um MOD Dateien abzuspielen , wird die dll im Ordner gesucht , wo sich auch die Executable befindet.
Das ist natürlich sehr schlecht!
Angenommen die *.exe ist auf einer CD gebrannt - was dann?Da lässt sich die dll nur schwer aus der *.exe auf die CD entpacken und dann wieder "free-en"

Ich würde der unit gerne sagen , dass die dll im Systemordner (also kein bestimmter - manche user haben ja anstatt einem "WINDOWS"- einen "WINNT"Ordner) zu suchen ist.
Im Moment sieht das folgendermaßen aus :

function BASSMOD_GetVersion: DWORD; stdcall; external 'bassmod.dllname 'BASSMOD_GetVersion'; So zB..
Ich schätze in der Funktion steht wohl , dass die dll automatisch im Ordner der *.exe zu finden sein sollte.
Habe sonst nichts auffälliges in der unit gefunden.

Hoffe da hat jemand ne Lösung für mich , wie ich die dll Suche etwas ändern kann

Greetz,D
Signaturen stinken!
  Mit Zitat antworten Zitat
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#2

Re: dll in Systemordner suchen anstatt im Exe-Ordner

  Alt 11. Nov 2003, 15:04
Moin,

also hast du doch nicht vor, die DLL in die Resourcen deiner EXE zu packen? Das statische Linken der DLL wird nicht funktionieren, wenn du die sie erst zu Laufzeit extrahierst. (Wenn ich mich nicht irre )
Wenn du die bassmod_dynamic.pas benutzt, kannst du dem Aufruf zum Laden der DLL den Pfad wo sie liegt mitgeben...

Delphi-Quellcode:
if Load_BASSMODDLL(DerPfadZurDLLStehtInDieserVariablen, 'bassmod.dll') then
begin
//...
end;
Ich hatte in dem andren Thread ein Beispiel gepostet, wie du die DLL ins Temp-Dir extrahierst und dann dynamisch einbindest!


Gruß

Wormid
Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat
Benutzerbild von HentaiD
HentaiD

Registriert seit: 30. Jun 2003
Ort: Wuppertal
30 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: dll in Systemordner suchen anstatt im Exe-Ordner

  Alt 11. Nov 2003, 15:09
Lol
Folgendes...
Es ist ganz abstrakt jetzt ^^
ich hab ma temporär mit PEBundle (werde es hinterher noch coden) die exe mit der dll und einer xm (die musikdatei)
gepackt und folgendes passiert :
die exe entpackt die dll in den systemordner (komischerweise - ich hab PEBundle nämlich gesagt es soll nachm exe Ordner extrahieren) und die xm in den exe-Ordner.Und das funktioniert sogar!
Das dumme ist jetzt , dass die xm im Systemordner untergebracht nicht funktioniert.
Aber wenn ich mich nicht irre , kann ich mit den codes , die ich dank eucht gesammelt hab , das jetzt so umschreiben , dass die xm auch aus dem Systemordner geladen wird

Greetz,D
Signaturen stinken!
  Mit Zitat antworten Zitat
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#4

Re: dll in Systemordner suchen anstatt im Exe-Ordner

  Alt 11. Nov 2003, 16:31
Och menno... jetzt habe ich dir aus Mitleid mal eben eine kleine Demo zusammengebastelt, wie das ganze auch ohne dein Extra-Programm funktioniert...

Damit das Archiv möglichst klein ist, musst du das RC-Script und das Projekt selber kompilieren.

Code:
brcc32 bassmod.rc
dcc32 project2.dpr
Damit wird eine kleine Konsolenanwendung erzeugt, in die ein Track und die DLL eingebunden ist... beim Start wird beides ins Temp extrahiert, die DLL geladen und initialisiert, der Track geladen und abgespielt, bis jemand Enter drückt. Danach wird die DLL un-geloaded und sowohl DLL als auch Track werden aus dem Temp wieder gelöscht!

Ich denke, das ist doch genau, das was du willst, oder etwa nicht?


Gruß

Wormid

Edit: Attachment vergessen...
Angehängte Dateien
Dateityp: zip demo_355.zip (134,6 KB, 9x aufgerufen)
Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:49 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