Einzelnen Beitrag anzeigen

Thomas233

Registriert seit: 20. Feb 2004
Ort: Villach
66 Beiträge
 
Delphi 2005 Personal
 
#5

Re: DLL mehrmals laden / mehrere Instanzen bei einem Prozess

  Alt 28. Mai 2006, 13:39
Hallo,

Zitat von Olli:
Zitat von Thomas233:
Nunja, mein Ziel war es eigentlich die Verwaltung mehrer Zustände/Daten (ich sag einfach mal so dazu) von der Dll fern zu halten da ich das ganze nicht zu kompliziert machen möchte, vor allem deshalb weil später vielleicht auch einmal andere Personen solche Dlls selbst schreiben können sollen.
Alo da gäbe es erstmal verschiedene Herangehensweisen:
1.) die DLL exportiert für jeden Zustand eine Funktion
2.) Stackvariablen werden ja nicht in der DLL sondern im Prozeß verwaltet, also kann man sehr wohl eine Funktion mehrfach "instanziieren". Nichts anderes tust du mit jedem Aufruf einer Funktion in einer DLL. Nur weil CreateFile() in einer DLL realisiert wurde, muß die DLL nicht die vielen vielen Aufrufe verwalten oder gar koordinieren.
Also das kappiere ich jetzt leider nicht ganz. Die DLL muss ja die verschiedenen Funktionsaufrufe ja auch gar nicht verwalten, sie muss nur immer wissen mit welchem Zustand/Fenster gerade gearbeitet wird.

Zitat:
Zitat von Thomas233:
In der Dll befinden sich nähmlich meistens Fenster/Formulare die nun ohne mehrmaliges laden der Dll auch manuell mehrmals erstellt werden müssten (ich meine jetzt in der Dll durch den Author selbst).
Furch "TFormX.Create()", jupp. und wo ist das Problem? Wenn du bis jetzt deine Formulare bereits in DllMain (zwischen "begin end.") erstellst, machst du was ganz großartig falsch. Wer sagt denn beispielsweise, daß das Plugin nachher wirklich angezeigt wird? Niemand! Aber du erzeugst es womöglich bei jedem Laden der DLL - sinnloserweise.
Ich erstelle die Fenster natürlich erst dann wenn sie wirklich gebraucht werden (nicht in Dllmain).

Zitat:
Zitat von Thomas233:
In Delphi wäre das ja z.b. anhand von Arrays oder Listen kein grosses Problem, aber z.b. in C stelle ich mir das nicht so einfach vor.
Listen? Arrays? Wozu denn?
Ja wie soll ich den sonst auf die Fenster zugreifen können (ich meine jetzt ohne Api-Funktionen) bzw. wie soll ich den sonst wissen wieviele Fenster ich wo erstellt habe.


Inzwischen habe ich das ganze übrigens wie in meinem vorherigen Thread beschrieben gelöst. Ist zwar nicht die Optimallösung, funktioniert aber immerhin recht gut.

Trotzdem Danke !

Lg,
Thomas

PS: ABWESEND BIS ZUM 04.06.06
  Mit Zitat antworten Zitat