Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fehler: AccessViolation, nur warum... (https://www.delphipraxis.net/76299-fehler-accessviolation-nur-warum.html)

Chaosente 1. Sep 2006 16:04


Fehler: AccessViolation, nur warum...
 
Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, XpMan, StdCtrls, Menus, OleCtrls, SHDocVw_TLB, ComCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Memo1: TMemo;
    ComboBox1: TComboBox;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    MainMenu1: TMainMenu;
    Main1: TMenuItem;
    Label5: TLabel;
    WebBrowser1: TWebBrowser;
    Button1: TButton;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    ProgressBar1: TProgressBar;
    Label6: TLabel;
    Verlauf1: TMenuItem;
    Beenden1: TMenuItem;
    ffnen1: TMenuItem;
    Lschen1: TMenuItem;
    procedure Lschen1Click(Sender: TObject);
    procedure ffnen1Click(Sender: TObject);
    procedure Beenden1Click(Sender: TObject);
    procedure WebBrowser1ProgressChange(ASender: TObject; Progress,
      ProgressMax: Integer);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
pagecontrol1.ActivePage:=tabsheet2;
TOleControl(Webbrowser1).Visible := False;
form1.DoubleBuffered:=true;
Combobox1.Items.Add('mth.Main');
Combobox1.Items.Add('mth.Alternative');
Combobox1.Items.Add('mth.Club');
Combobox1.Items.Add('mth.Electro');
Combobox1.Items.Add('mth.Black');
Combobox1.Items.Add('mth.Break');
Combobox1.Items.Add('mth.House');
Combobox1.ItemIndex:=0;
Memo1.Text:='';
WebBrowser1.Navigate('http://www.shouted.fm/index.php');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.OleObject.document.forms.item(1).elements.item('name').value:=Edit1.Text;
WebBrowser1.OleObject.document.forms.item(1).elements.item('alter').value:=Edit3.Text;
WebBrowser1.OleObject.document.forms.item(1).elements.item('wohnort').value:=Edit2.Text;
WebBrowser1.OleObject.document.forms.item(1).elements.item('stream').selectedIndex:=ComboBox1.ItemIndex;
WebBrowser1.OleObject.document.forms.item(1).elements.item('nachricht').value:=memo1.Text;
WebBrowser1.OleObject.document.forms.item(1).submit;
end;

procedure TForm1.WebBrowser1ProgressChange(ASender: TObject; Progress,
  ProgressMax: Integer);
begin
if webbrowser1.ReadyState = 0 then begin
progressbar1.Position:=20;
end
else if webbrowser1.ReadyState = 1 then begin
progressbar1.Position:=35;
end
else if webbrowser1.ReadyState = 2 then begin
progressbar1.Position:=60;
end
else if webbrowser1.ReadyState = 3 then begin
progressbar1.Position:=100;
pagecontrol1.ActivePage:=tabsheet1;
end
end;

procedure TForm1.Beenden1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.ffnen1Click(Sender: TObject);
begin
ShowMessage('Noch nicht implementiert');
end;

procedure TForm1.Lschen1Click(Sender: TObject);
begin
ShowMessage('Noch nicht implementiert');
end;

end.
Ich bekomme ne Fehlermeldung in der Steht was von EAccessviolation... keine ahnung was mir das sagen soll....

Matze 1. Sep 2006 16:07

Re: Komische Fehlermeldung!!!
 
Hi,

bei welchem Ereignis bzw. in welcher Zeile tritt der Fehler auf?

Und nur als Hinweis: Ich würde im OnCreate nie Komponenten verarbeiten, denn es ist nicht garantiert, dass diese bereits erzeugt wurden.

Bernhard Geyer 1. Sep 2006 16:18

Re: Komische Fehlermeldung!!!
 
Zitat:

Zitat von Matze
Und nur als Hinweis: Ich würde im OnCreate nie Komponenten verarbeiten, denn es ist nicht garantiert, dass diese bereits erzeugt wurden.

Alles was in der IDE im Formular definiert ist und per DFM gestream wird, ist im OnCreate-Event schon vorhanden.
Hattest Du schon mal Probleme und kannst du dies in einem Testprojekt nachvollziehbar gestalten.

Matze 1. Sep 2006 16:58

Re: Komische Fehlermeldung!!!
 
Zitat:

Zitat von Bernhard Geyer
Alles was in der IDE im Formular definiert ist und per DFM gestream wird, ist im OnCreate-Event schon vorhanden.
Hattest Du schon mal Probleme und kannst du dies in einem Testprojekt nachvollziehbar gestalten.

Ja ich hatte damit schon Probleme, vor allem, wenn es viele Komponenten waren. Doch so auf die schnelle kann ich kein Testprojekt erstellen, da es nur sporadisch aufgetreten ist, sorry.

Bernhard Geyer 1. Sep 2006 17:55

Re: Komische Fehlermeldung!!!
 
Zitat:

Zitat von Matze
Zitat:

Zitat von Bernhard Geyer
Alles was in der IDE im Formular definiert ist und per DFM gestream wird, ist im OnCreate-Event schon vorhanden.
Hattest Du schon mal Probleme und kannst du dies in einem Testprojekt nachvollziehbar gestalten.

Ja ich hatte damit schon Probleme, vor allem, wenn es viele Komponenten waren. Doch so auf die schnelle kann ich kein Testprojekt erstellen, da es nur sporadisch aufgetreten ist, sorry.

Kann ich mir nur 2 Gründe vorstellen:

1, Du hast sehr viele Controls und du läufst in Resourcenprobleme

2, Die Controls versuchen schon beim Zugriff auf Properties mit Windowshandles zu arbeiten die es evtl. noch nicht haben.

sakura 1. Sep 2006 17:57

Re: Komische Fehlermeldung!!!
 
:warn: Ändere bitte den Titel. "Komische Fehlermeldung" ist nicht aussagekräftig :roll:

...:cat:...

Prototypjack 1. Sep 2006 19:03

Re: Komische Fehlermeldung!!!
 
Moin!
Kann jetzt sein, dass ich kompletten Blödsinn rede, ich mache selten was mit OLEObjecten dieser Art.

Aber darf ich trotzdem eine Frage stellen?
Wieso schreibst du:
Delphi-Quellcode:
TOleControl(Webbrowser1).Visible := False;
Aber sprichst den TWebBrowser sonst immer direkt an?
Kann da der Fehler liegen?

Gruß,
Max

Chaosente 2. Sep 2006 11:27

Re: Komische Fehlermeldung!!!
 
Delphi-Quellcode:
TOleControl(Webbrowser1).Visible := False;
Ja da hab ich mich am anfang auch gewundert, aber wenn man die Visible eigenschaft über

Delphi-Quellcode:
Webbrowser1.visible:=false;
anspreicht reagiert der webbrowser nicht! das ist also wohl nicht der fehler!

Allerdings wennich das programm im debugger anhalte, zeigt er mir folgende zeile an!

Delphi-Quellcode:
WebBrowser1.OleObject.document.forms.item(1).elements.item('name').value:=Edit1.Text;
da muss also irgendwo der fehler dirn sein, ich hab nur keinen plan warum! oder muss ich ein editfeld gesondert ansprechen, wenn es auf einem tabsheet vom pagecontrol liegt? das wär das einzige was cih mir im moment vorstellen könnte!

Daniel 2. Sep 2006 11:28

Re: Komische Fehlermeldung!!!
 
Hallo Ente,

Du wurst gestern schon darum gebeten, den Titel Deines Thema zu ändern. Komische Meldungen erhalten viele von uns und keiner kann sich etwas Rechtes darunter vorstellen.

Ein aussagekräftiger Titel ist der erste Schritt zu einer passenden Lösung.

Prototypjack 2. Sep 2006 11:35

Re: Fehler: AccessViolation, nur warum...
 
Moin,
Also, wie du bereits feststellen konntest wird die Fehlersuche nicht einfach.
Ich schlage einfach mal vor du verstreust ein paar Breakpoints(Ich hoffe du weisst was ich meine) in deinem Code.
Damit kannst du den Fehler leicht ausmachen.
Sag' dann nochmal bescheid.
Gruß,
Max


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:48 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