Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Laufzeitfehler bei Variante in DLL (https://www.delphipraxis.net/103777-laufzeitfehler-bei-variante-dll.html)

Tommy82 21. Nov 2007 16:11


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:
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;
Sobald ich aber den Quelltext in einen String laden möchte, bekomme ich immer einen Laufzeitfehler.
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

mkinzler 21. Nov 2007 16:15

Re: Laufzeitfehler bei Variante in DLL
 
Nimm besser OleVariant und WideString

Tommy82 21. Nov 2007 16:16

Re: Laufzeitfehler bei Variante in DLL
 
Der Laufzeitfehler bleibt trotzdem bestehen.

mkinzler 21. Nov 2007 16:19

Re: Laufzeitfehler bei Variante in DLL
 
Und was für ein Fehler? Wie sieht das Interface der Dll aus?

Tommy82 21. Nov 2007 16:27

Re: Laufzeitfehler bei Variante in DLL
 
Delphi-Quellcode:
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.
Aufgerufen wird die DLL wie folgt:
Delphi-Quellcode:
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;
Als fehler bekomme ich nun : "Zugriffsverletzung bei Adresse 01E61FAB in Modul 'DLLtest2,dll'. Lesen von Adress 00000000."

Aber nur bei der oben genannten zeile.

mfg

Tommy82

mkinzler 21. Nov 2007 16:41

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.

Tommy82 21. Nov 2007 16:45

Re: Laufzeitfehler bei Variante in DLL
 
Zeige_DLL sieht genauso aus wie zeige_PlugIns, nur das der pfad nen anderer ist
Delphi-Quellcode:
LoadLibrary(PCHAR(ExtractFilePath(ParamStr(0)) + '\DLLs\' + Dateiname)
Das Form2 steht bei mir da, habsch wohl ausversehen hier beim tippen vernichtet.

Die Starten ist oben angegeben. Die soll den Quelltext auslesen.

Der Debugger funzt einwandfrei.

mfg

Tommy82

mkinzler 21. Nov 2007 16:46

Re: Laufzeitfehler bei Variante in DLL
 
Im Debugger kommt der fehler dann nicht?

Tommy82 21. Nov 2007 16:51

Re: Laufzeitfehler bei Variante in DLL
 
Nein, denn es sieht so aus:

Delphi-Quellcode:
Procedure Anzeigen;
var Form2 : TForm2;
BEGIN
 Form2 := TForm2.Create(NIL);
 Form2.Starten;
end;
Is wohl hier beim ins Forum setzen was abhanden gekommen. Falsche Taste oder so.

Tommy82 21. Nov 2007 17:03

Re: Laufzeitfehler bei Variante in DLL
 
Welches Objekt ist denn nicht inizialisiert ? Ich finde da nix.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:46 Uhr.
Seite 1 von 2  1 2      

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