![]() |
Globale Variable in DLL (?)
Hi DP'ler. :hi:
Wieder einmal hoffe ich, in der richtigen Kategorie gelandet zu sein. Es geht um folgendes Problem: Ich möchte gerne 256 XML-Dokumente gleichzeitig öffnen (bzw. erstmal erstellen) und das in einer DLL. Ein einzigstes Array nimmt die 256 Objekte auf. Nur hab ich damit irgendwie ein Problem. In der DLL gibt der Code -1 zurück, verwende ich ihn normal in einem Programm wird alles problemlos ausgeführt. :? Es geht um folgenden DLL-Code (gekürzt):
Delphi-Quellcode:
In der Anwendung, die verwendet wird, wird der Prototyp von mir folgendermaßen deklariert:
{...}
uses ShareMem, SysUtils, Classes, MSXML2_TLB; {$R *.res} {...} var DB: Array[0..255] of IXMLDOMDocument2; {...} function DBInit: Integer; var i: Integer; begin Result:=0; for i:=0 to 255 do begin try DB[i]:=CoDOMDocument40.Create; DB[i].setProperty('NewParser', True); except Result:=-1; Exit; end; end; end; {...}
Delphi-Quellcode:
Hat irgendjemand eine Ahnung, was daran nicht geht bzw. an was das liegt?
function DBInit: Integer; external 'dblib.dll';
Danke schonmal für's Lesen, Mao :wink: /edit: Code gaaaanz geringfügig editiert (Rückgabewert der Funktion bei Fehler). |
Re: Globale Variable in DLL (?)
Ich seh hier nirgends was, wie das Result überhaupt auf -1 kommen könnte :shock:
Sach mal... bist du dir sicher, dass DOMDocument40 das IXMLDOMDocument2 implementiert? |
Re: Globale Variable in DLL (?)
Oh, ich hatte den Rückgabewert der Funktion bei einem Fehler auf die Laufvariable i gesetzt - um zu sehen, wieviele Objekte er wirklich erstellt. Nun, es ist kein einzigstes. :pale: (Code oben jetzt berichtigt...)
Der Unterschied des Variablentyps mit der Klasse des Konstruktors sollte eigentlich funktionieren - ich hab mich hier mal ganz an das XML-Tutorial aus der DP gehalten. :angel: |
Re: Globale Variable in DLL (?)
Ich tipp mal drauf das du in der DLL kein CoInitialize aufrufst. In einer "normalen" Exe-Anwendung wird dies über Application.Initialize automatisch aufgerufen.
Weiter Hilfe wenn du die Forensuche bemühst. |
Re: Globale Variable in DLL (?)
Hi. :hi:
Das war tatsächlich das Problem! :-D Jetzt läuft alles wunderbar, danke allen, die das gelesen und noch mehr denen, die geantwortet haben. :zwinker: Greets, Mao |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 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