![]() |
Laufzeitfehler bei Variante in DLL
Hallo,
Ich habe eine DLL welche eine weitere DLL aufruft. Ich nenne die erste DLL mal DLL1 und die andere Spaßeshalber DLL2. In der DLL2 möchte ich eine Webseite auslesen. Da dieses auf dieser Seite irgendwie nicht mit IDHTTP geht, mache ich dies mit TWebBrowser. Hier ist nun der Quellcode dazu.
Delphi-Quellcode:
Sobald ich aber den Quelltext in einen String laden möchte, bekomme ich immer einen Laufzeitfehler.
Procedure TForm2.Starten;
var ini : TIniFile; Quelltext, URL : String; vTemp : Variant; begin ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Config/einstellungen.ini'); Try URL := ini.ReadString('Aktuell','URL',''); ShowMessage(URL); Fertig := False; Webbrowser1.Navigate(URL); if fertig <> True then Application.ProcessMessages; vTemp := WebBrowser1.Document; Quelltext := vTemp.Body.OuterHTML; <--- hier ist ein Fehler ShowMessage(Quelltext); Finally ini.free; End; END; Interressanterweise funktioniert aber genau dashier in der DLL1 wunderbar. Aus Organisatorischen Gründen möchte ich es aber in DLL2 haben. Sobald ich die Zeile rausnehme geht auch alles nur ich habe keinen Quelltext. Was mache ich falsch ? mfg Tommy82 |
Re: Laufzeitfehler bei Variante in DLL
Nimm besser OleVariant und WideString
|
Re: Laufzeitfehler bei Variante in DLL
Der Laufzeitfehler bleibt trotzdem bestehen.
|
Re: Laufzeitfehler bei Variante in DLL
Und was für ein Fehler? Wie sieht das Interface der Dll aus?
|
Re: Laufzeitfehler bei Variante in DLL
Delphi-Quellcode:
Aufgerufen wird die DLL wie folgt:
library DLLTest2;
uses SysUtils, Classes, Unit2 in 'Unit2.pas' {Form2}; Procedure Anzeigen; var Form : TForm2; BEGIN Form2 := TForm2.Create(NIL); Form2.Starten; end; exports Anzeigen; begin end.
Delphi-Quellcode:
Als fehler bekomme ich nun : "Zugriffsverletzung bei Adresse 01E61FAB in Modul 'DLLtest2,dll'. Lesen von Adress 00000000."
Procedure TForm1.Zeige_PlugIns(Dateiname: string; Name: string);
var PlugIns:TPlugIns; Handle : THandle; BEGIN Handle := LoadLibrary(PCHAR(ExtractFilePath(ParamStr(0)) + '\PlugIns\' + Dateiname)); IF Handle <> 0 THEN BEGIN @PlugIns := GetProcAddress(Handle, PCHAR(Name)); IF @PlugIns <> NIL THEN PlugIns ELSE Showmessage('Fehler beim Laden der Datei "'+Dateiname+'"'); END; FreeLibrary(Handle); end; procedure TForm1.Button1Click(Sender: TObject); begin zeige_DLL('DLLtest2.dll','Anzeigen') end; Aber nur bei der oben genannten zeile. mfg Tommy82 |
Re: Laufzeitfehler bei Variante in DLL
Dann greifst du auf ein nicht initialisiertes Objekt zu.
Wie sieht zeige_DLL() aus? In Anzeigen deklarierst du eine Variable Form, verwendest aber Form2 Debugge die Dll doch mal. |
Re: Laufzeitfehler bei Variante in DLL
Zeige_DLL sieht genauso aus wie zeige_PlugIns, nur das der pfad nen anderer ist
Delphi-Quellcode:
Das Form2 steht bei mir da, habsch wohl ausversehen hier beim tippen vernichtet.
LoadLibrary(PCHAR(ExtractFilePath(ParamStr(0)) + '\DLLs\' + Dateiname)
Die Starten ist oben angegeben. Die soll den Quelltext auslesen. Der Debugger funzt einwandfrei. mfg Tommy82 |
Re: Laufzeitfehler bei Variante in DLL
Im Debugger kommt der fehler dann nicht?
|
Re: Laufzeitfehler bei Variante in DLL
Nein, denn es sieht so aus:
Delphi-Quellcode:
Is wohl hier beim ins Forum setzen was abhanden gekommen. Falsche Taste oder so.
Procedure Anzeigen;
var Form2 : TForm2; BEGIN Form2 := TForm2.Create(NIL); Form2.Starten; end; |
Re: Laufzeitfehler bei Variante in DLL
Welches Objekt ist denn nicht inizialisiert ? Ich finde da nix.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:44 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