AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TWebBrowser verursacht Fehler bei Ansteuerung

Ein Thema von youuu · begonnen am 8. Apr 2012 · letzter Beitrag vom 8. Apr 2012
Antwort Antwort
Seite 1 von 2  1 2      
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#1

TWebBrowser verursacht Fehler bei Ansteuerung

  Alt 8. Apr 2012, 16:49
Hi,

Ich habe z.B. auf "Form 2" einen Webbrowser und möchte diesen Refreshen, wenn auf "Form 1" ein Button geklickt wird.

Form2.Webbrowser.Refresh; funktioniert leider aber nicht, denn ich erhalte jedesmal eine Zugriffsverletzung (Lesen von Adresse 00000388).

Gleiche Fehler auch, wenn ich den Refresh aus einem Thread ansteuern möchte bzw. generell wenn ich den Browser auf Form 2 ansteuern will.

Wieso ist das So? Problem tritt nur mit dem TWebbrowser auf.
Steven
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: TWebBrowser verursacht Fehler bei Ansteuerung

  Alt 8. Apr 2012, 17:18
Die Variable "Form2" ist nicht zufällig nil?

Und auf nichtthreadsichere VCL-Komponenten greift man nicht von einem Thread zu. (jedenfalls nicht ohne Synchronize)
$2B or not $2B
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#3

AW: TWebBrowser verursacht Fehler bei Ansteuerung

  Alt 8. Apr 2012, 17:39
Nein Form2 ist nicht nil und im Thread sicher ich das alles durch CriticalSektion ab.

Ich erstelle Form2 allerdings vorher im Form1 und danach will ich Refreshen lassen. Kann es da zur Kollesion kommen?

Delphi-Quellcode:

procedure TTestThread.Execute;
var
  slText: TStringList;
begin
  slText := TStringList.Create;
  try
  CritSektion.Enter;
    try
      frm_Test.Browser.Refresh;
      slText.AddStrings(frm_Test.Browser.HTMLCode);
    except
      on E: Exception do
        Showmessage(E.Message);
    end;
  CritSektion.Leave;
  finally
    FreeAndNil(slText);
  end;
end;
So Sieht der Thread aus, dieser ist auch im Form2 gespeichert.
Ist erst einmal nur zum testen gedacht.
Steven

Geändert von youuu ( 8. Apr 2012 um 17:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: TWebBrowser verursacht Fehler bei Ansteuerung

  Alt 8. Apr 2012, 17:44
Und woher kennt die VCL deine CriticalSection?

Garnicht, also greifst du dennoch ungesichert darauf zu, denn der VCL-Thread (Hauptthread) kann dennoch gleichzeitig arbeiten.


Weder der TWebBrowser noch Showmessage sind threadsicher.
$2B or not $2B

Geändert von himitsu ( 8. Apr 2012 um 17:46 Uhr)
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#5

AW: TWebBrowser verursacht Fehler bei Ansteuerung

  Alt 8. Apr 2012, 17:47
Zitat:
Und woher kennt die VCL deine CriticalSection?
meinst du das?
Delphi-Quellcode:
constructor TTestThread.Create;
Begin
  inherited create(true);
  CritSektion := TCriticalSection.create;
  FreeOnTerminate := True;
End;

destructor TTestThread.Destroy;
begin
  FreeAndNil(CritSektion);
  inherited;
end;
Steven
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#6

AW: TWebBrowser verursacht Fehler bei Ansteuerung

  Alt 8. Apr 2012, 17:48
Hallo...

ich verstehe das so:
1. Form1 (Mainform) erzeugt Form2 (mit Webbrowser)
2. Aufruf von Form2.Webbrowser.Refresh aus Form1 schlägt fehl.
3. Form1 erzeugt Thread
4. Aufruf von Webbrowser.Refresh aus dem Thread schlägt fehl.

soweit korrekt ?
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#7

AW: TWebBrowser verursacht Fehler bei Ansteuerung

  Alt 8. Apr 2012, 17:51
Zitat:
1. Form1 (Mainform) erzeugt Form2 (mit Webbrowser)
2. Aufruf von Form2.Webbrowser.Refresh aus Form1 schlägt fehl.
3. Form1 erzeugt Thread
4. Aufruf von Webbrowser.Refresh aus dem Thread schlägt fehl.
Fast.

1 und 2 ist Versuch 1

1 - 3 - 4 ist Versuch 2

Beide Versuche gleiche Ergebnis
Steven
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#8

AW: TWebBrowser verursacht Fehler bei Ansteuerung

  Alt 8. Apr 2012, 17:55
dann bleiben wir mal bei Versuch 1...
Du mußt 2 Dinge prüfen:
- existiert Form2 (erzeugt, automatisch oder manuell)
- existiert der Webbrowser (erzeugt, automatisch oder manuell)

alles andere ist rumdocktern an den Sympthomen. Bevor die o.g. 2 Punkte nicht klar sind brauchst du nix anderes probieren.
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#9

AW: TWebBrowser verursacht Fehler bei Ansteuerung

  Alt 8. Apr 2012, 17:58
Beides ist vorhanden, denn das Fenster ist offen und ich kann den Webbrowser + aufgerufene Seite sehen.
Steven
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#10

AW: TWebBrowser verursacht Fehler bei Ansteuerung

  Alt 8. Apr 2012, 18:01
Dann hast du ein wundersames Delphi... stelle mal das Projekt rein.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:57 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