AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DLL neu starten nach beenden

Ein Thema von EWeiss · begonnen am 20. Okt 2010 · letzter Beitrag vom 4. Nov 2010
Antwort Antwort
ele

Registriert seit: 18. Feb 2009
129 Beiträge
 
Delphi 2010 Professional
 
#1

AW: DLL neu starten nach beenden

  Alt 4. Nov 2010, 17:12
Malen ist einfach: Ich kenne das nicht genau bei WinAmp, aber ich habe bei meinem eigen Projekt folgendes festestellt:

Mein Projekt lädt die Plugin-DLLs und ruft dort eine Init-Funktion auf, die mir ein Interface zurückliefert mit dem ich dann auf die DLL-funktinen zugreifen kann. In dieser Init-Funktion werden Klassen registriert, ganz einfach in einer Sortierten StringListe (ist eine Globale Variable - ich weiss dass das nicht toll ist, geht aber nicht anders).

Wenn nun die DLL nicht sauber entladen wird, schlägt das Ausführen der Init-Funktion beim nächsten mal fehl, weil die entsprechenden Klassen schon einmal registriert wurden.

Solche Szenarien sind durchaus auch bei WinAmp oder ähnlichen Problemstellungen denkbar...
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#2

AW: DLL neu starten nach beenden

  Alt 4. Nov 2010, 17:45
Solche Szenarien sind durchaus auch bei WinAmp oder ähnlichen Problemstellungen denkbar...
In der Tat, ein berechtigter Einwand. Statische Variablen sind aber einfach nur eine Form der globalen Variablen, die man ohnehin vermeiden sollte

Aber hast schon recht, so ein Szenario würde ggf. fehlschlagen.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: DLL neu starten nach beenden

  Alt 4. Nov 2010, 19:57
Solche Szenarien sind durchaus auch bei WinAmp oder ähnlichen Problemstellungen denkbar...
In der Tat, ein berechtigter Einwand. Statische Variablen sind aber einfach nur eine Form der globalen Variablen, die man ohnehin vermeiden sollte

Aber hast schon recht, so ein Szenario würde ggf. fehlschlagen.
Ich umgehe das Problem einfach indem ich das aktive modul caste quasi
eine globale Variable @Module für
This_Mod: PWinAMPVisModule Ich beende die DLL nicht mehr muss ich auch nicht..
Ich verbiege lediglich das zuletzt verwendetet THIS auf mein neues @Modul.

Funktioniert einwandfrei auch ohne das Zuletzt verwendetet Modul(in dem Fall DLL) zu entladen.
Ich kann jetzt zwischen allen Modulen frei schalten auch wenn ich die DLL mit dem "Beispiel:" 3 Modul gestartet habe.

gruss
  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 01:54 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 by Thomas Breitkreuz