AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Fehler in Komponente: Progsan Internet User Agent Components

Fehler in Komponente: Progsan Internet User Agent Components

Ein Thema von geskill · begonnen am 13. Jun 2008 · letzter Beitrag vom 14. Jun 2008
Antwort Antwort
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#1

Fehler in Komponente: Progsan Internet User Agent Components

  Alt 13. Jun 2008, 20:05
Hi,
ich benutze die Komponenten aus einer DLL herraus, beim Schließen vom Programm oder wenn man außerhalb der Formulare klickt wird ein Fehler erzeugt, ich bin mir definitiv sicher, dass der Fehler von diesen Komponenten erzeugt wird.

Habe die Komponente von Torry: (FreeWare)
http://www.torry.net/quicksearchd.ph...ynet&Title=Yes

Normalerweise erzeugt man ein Objekt der Klasse THTMLDecoder, durch direktes wiederfreigeben und enladen der DLL zeigt sich der Fehler, geht man eine Klasse zurück nämlich THTMLDocument passiert ähnliches, erzeugt man jedoch ein Objekt der Klasse THTMLElement entsteht kein Fehler, darauß erschließe ich, dass der Fehler in der Klasse THTMLDocument steht...

So mal die Klassen,
Code:
THTMLElement // keine Fehler
  ->THTMLDocument // Fehler
      ->THTMLDecoder // Fehler
So demnach, hat jemand das schon mal bemerkt, oder eine gute alternaive, der Source Code ist ~15000 Zeilen lang!


Weitere Infos:
Die DLL wird dynamisch geladen/entladen
Zur Übermitlung von Strings wird FastMM4 (bei ShareMem gleiches Prob.) benutzt
DLL ist bereits entladen, dann erst tritt der Fehler auf

Vielen Dank fürs druchlesen :thumb:
Miniaturansicht angehängter Grafiken
error_191.png  
Sebastian
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Fehler in Komponente: Progsan Internet User Agent Compon

  Alt 13. Jun 2008, 20:08
Möglicherweise wird nach Entladen der Dll noch auf sie zugegriffen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Fehler in Komponente: Progsan Internet User Agent Compon

  Alt 13. Jun 2008, 20:11
nein, die Komponenten sind nur innerhalb der DLL deklariert, es leigt an den Komponenten glaubt es mir :cry: :cry:

EDIT:
Hab mal die Frage:
Wie kann der Fehler eigenlich entstehen, ist ein Objekt nicht freigegeben worden, weil was anderes kann ich mir gar nicht vorstellen...
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Fehler in Komponente: Progsan Internet User Agent Compon

  Alt 14. Jun 2008, 09:09
So ein bischen weiter bin ich schon ich konnte den Fehler wieder auf eine kleinere Klasse eingrenzen, mehr oder weniger habe ich dies dann endlich durch probieren geschafft.

Delphi-Quellcode:
constructor THTMLDocument.Create(OwnerDocument:THTMLDocument;BelongTo:THTMLElementCollection);
begin
  inherited Create(OwnerDocument,BelongTo);
  fRawHTML:=TStringList.Create;
  fAutoLoad:=True;
  fAutoParse:=True;
  fAutoLoadFrames:=false;
  fAutoParseFrames:=false;
  fReFormatOutputHTML:=true;
  TagStr:='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.02 Transitional//EN">';

  
  fLocation := THTMLLocation.create(self); // Diese Klasse bereitet die Probleme

  fFrameSet := THTMLFrameSet.Create(self,childs);
  fFrameCollection := THTMLFramesCollection.Create(self);
  fFormCollection := THTMLFormCollection.Create(self);
  fTableCollection := THTMLTableCollection.Create(self);
  fAnchorCollection := THTMLAnchorCollection.Create(self);
  fImageCollection := THTMLImageCollection.Create(self);
  fStylesCollection := THTMLStyleSheetsCollection.Create(self);
  fScriptsCollection:= THTMLScriptsCollection.Create(self);
  
end;
Delphi-Quellcode:
constructor THTMLLocation.Create(aDocument:THTMLDocument);
begin
  inherited Create;
  //fBuffer := TMemoryStream.Create;

  fSession:= TInternetSession.Create(nil);
  fSession.AccessType:=atPreConfig;
  fConnection:= TInternetConnection.Create(nil);
  fConnection.Session:=fSession;
  fLoader := TInternetHTTPRequest.Create(nil); // Diese Klasse bereitet die Probleme
  fLoader.Connection:=fConnection; // Folgefehler ...
  TInternetHTTPRequest(fLoader).opKeepConnection:=true; // Folgefehler ...

  fDocument:=aDocument;
  fLoader.OnLoaded:=doOnLoaded; // Folgefehler ...
end;

Dann habe ich mir nochmal die Destroy Metode angeschaut
Delphi-Quellcode:
destructor THTMLLocation.Destroy;
begin
  {
  fLoader.CloseRequest;
  fLoader.Free;            <--- Aus der Klammer raus sonst jammer der weil es nicht richtig freigegeben ist
  fConnection.Disconnect;
  fConnection.free;
  fConnection:=nil;
  }

  fSession.Close;
  fSession.Free;
  fSession:=nil;
  fLoader:=nil;

  //if assigned(fBuffer) then
  // fBuffer.Free;
  inherited Destroy;
end;
Naja und dann was das schon, also bei mir klappt es jetzt *freu* :firejump: :firejump:

Ich hätte beinahe schon aufgegeben, zumal bei 15000 Zeilen den Fehler zu finden, ohne wirklich zu wissen woran es lag ist hart!
Außerdem war dies mit die beste Komponente wenn man z.b. Internet Komponenten filtern will (Formulare, Button, EditFelder...)etc. Man hätte das auch über den IE machen können, jedoch ist der langsamer und man muss dann mit dem Ereigniss arbeiten, wenn die Seite fertig geladen wurde...

Wie gesagt, "fLoader.Free;" aus der Klammer raus, dass ganze ist zu finden in Z. ~13930
Sebastian
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 00:05 Uhr.
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