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 MDI-Child - Zugriffsverletzung bei Zuweisung (https://www.delphipraxis.net/49394-mdi-child-zugriffsverletzung-bei-zuweisung.html)

Mr_G 10. Jul 2005 18:25


MDI-Child - Zugriffsverletzung bei Zuweisung
 
Hi!
Ich habe folgendes Problem: Ich habe eine MDI-Anwendung in der ich ein MDI-Kindfenster erstellen möchte. Das Hauptformular wird logischerweise automatisch erzeugt, das Kindfenster jedoch nicht. Nun erzeuge ich im Laufe des Progammablaufs besagtes Kindfenster und zeige es an.
Delphi-Quellcode:
frm_kind := Tfrm_kind.Create(Self);
frm_kind.Show;
Im OnShow-Ereignis des Kindfensters wird nun einem Textfeld ein Inhalt zugewiesen und dabei tritt eine Zugriffsverletzung auf. Die Zuweisung ist an sich korrekt doch beim Debuggen gibt es scheinbar Probleme mit dem Textfeld. Der Fehler tritt jedoch nicht auf wenn ich auch das Kindfenster automatisch erzeugen lasse. Ich vermute das das auch irgendwie mit dem Splashscreen und seiner Entstehung zusammenhängt. Den Splashscreen habe ich nach dem Tutorial von sakura eingebaut.

Taladan 10. Jul 2005 18:27

Re: MDI-Child - Zugriffsverletzung bei Zuweisung
 
Was für eine Fehlermedlung kommt den?

Taladan 10. Jul 2005 18:33

Re: MDI-Child - Zugriffsverletzung bei Zuweisung
 
Zitat:

Zitat von Mr_G
Im OnShow-Ereignis des Kindfensters wird nun einem Textfeld ein Inhalt zugewiesen und dabei tritt eine Zugriffsverletzung auf.

Wahrscheinlich ist dein Textfeld noch nicht vollständig initialisiert. Deshalb setze mal folgende zeile vor deinen Anweisungen (also als erstes im OnShow-Ereignis des Childs)

Delphi-Quellcode:
  inherited Show;

Robert_G 10. Jul 2005 18:42

Re: MDI-Child - Zugriffsverletzung bei Zuweisung
 
Zitat:

Zitat von Taladan
Delphi-Quellcode:
  inherited Show;

:shock: Was soll denn das bringen? :gruebel:

Aber die hier bereitgestellten Infos sind auch dermaßen rar... da kann man ja nur raten. :roll:

@Mr_G
Ich weiß nicht wie du es machst, aber wenn ich weiß dass es irgendwo zickt, dann setze ich natürlich einen Breakpoint davor!
Und schon weiß ich genau wo es zickt. Wäre also ganz nett wenn du das mal machen könntest um wenigstens ein/zwei Code Zeilen präsentieren zu könnnen, die den Fehler produzieren.
Das hier hilft doch nicht weiter, wenn du schon selbst sagst, dass du einen Handler für OnShow geschrieben hast:
Zitat:

Delphi-Quellcode:
frm_kind := Tfrm_kind.Create(Self);
frm_kind.Show;

Ich könnte dir also nicht mehr sagen als dass der Fehler in einem überschriebenen Constructor, OnCreate,OnShow,OnFragsPferd,... steckt. :roll:

btw: frm_kind ist hoffentlich nicht diese komische globale Variable vom Formdesigner. Wenn ja überrascht mich der Fehler bei einer MDI-App überhaupt nicht...

Mr_G 10. Jul 2005 18:59

Re: MDI-Child - Zugriffsverletzung bei Zuweisung
 
@ Robert_G: Lesen bildet! ;)
Zitat:

Im OnShow-Ereignis des Kindfensters wird nun einem Textfeld ein Inhalt zugewiesen und dabei tritt eine Zugriffsverletzung auf.
Nun nochmal für den Herrn der nur Delphi versteht:
Delphi-Quellcode:
Edit.Text := 'Test';

Taladan 10. Jul 2005 19:02

Re: MDI-Child - Zugriffsverletzung bei Zuweisung
 
Zitat:

Zitat von Robert_G
Zitat:

Zitat von Taladan
Delphi-Quellcode:
  inherited Show;

:shock: Was soll denn das bringen? :gruebel:

Hat bei mir eine genau diesen (oder zumindest einen ähnlichen) Fehler verhindert. Warum kann ich dir net sagen :oops: (da habe ich noch mit globalen variablen gearbeitet)

Mr_G 10. Jul 2005 19:08

Re: MDI-Child - Zugriffsverletzung bei Zuweisung
 
Zitat:

Delphi-Quellcode:
inherited Show;

Hilft leider nicht...
Aber mal eine andere Frage: Wie ersetzt du globale Variablen und wie hängt das mit den Zugriffsverletzungen zusammen?

Robert_G 10. Jul 2005 19:23

Re: MDI-Child - Zugriffsverletzung bei Zuweisung
 
Zitat:

Zitat von Mr_G
Zitat:

Delphi-Quellcode:
inherited Show;

Hilft leider nicht...

Hätte auch nur helfen können, wenn du dort irgendetwas initialisierst. ;)
Zitat:

Zitat von Mr_G
Aber mal eine andere Frage: Wie ersetzt du globale Variablen und wie hängt das mit den Zugriffsverletzungen zusammen?

Ist doch klar: Du hast eine MDI App, somit hast wohl du mehr als eine Instanz der Variablen.
Wenn du nun (sinnloserweise) das ganze in eine globale Variable packst wird da immer das Child drin sein, dass dort zuletzt gelandet ist. Und wenn du diese sogar in den Events von Tfrm_kind benutzt (also frm_kind) na dann gute Nacht.
Dann wird der Code zu einer Hälfte self, zur anderen irgendwas benutzen, das zuletzt in diese olle Variable geschrieben wurde. Prost Mahlzeit! :cheers:

Kommentiere frm_kind :Tfrm_kind einfach mal aus. Überall wo es jetzt knallt war ein Fehler im Code.


Für das Ersetzen bzw. Unnötigmachen von globalen Variablen gibt es hier X Threads bzw. mind. die Hälfte aller Quellcodes, die man heutzutage im Internet sieht dürfte frei von solchen alten Unsitten sein. Es ist also sehr wahrscheinlich, dass du für Probleme eine Lösung ohne "sowas" findest. ;)

Mr_G 10. Jul 2005 19:37

Re: MDI-Child - Zugriffsverletzung bei Zuweisung
 
Zitat:

Kommentiere frm_kind :Tfrm_kind einfach mal aus. Überall wo es jetzt knallt war ein Fehler im Code.
Wenn ich das gemacht habe sagt Delphi das frm_kind das Formular frm_kind referenziert das wiederum in der Unit dlg_kind ist. Es will nun die Unit einbinden doch wenn die Unit eingebunden wird bekomme ich logischerweise den Fehler das sich die Unit selber aufruft? Wo soll da nun der Fehler liegen?

Btw: Vielen Dank für die schnelle Hilfe! :dp:

Robert_G 10. Jul 2005 19:40

Re: MDI-Child - Zugriffsverletzung bei Zuweisung
 
Zitat:

Zitat von Mr_G
Zitat:

Kommentiere frm_kind :Tfrm_kind einfach mal aus. Überall wo es jetzt knallt war ein Fehler im Code.
Wenn ich das gesagt habe sagt Delphi das frm_kind das Formular frm_kind referenziert das wiederum in der Unit dlg_kind ist. Es will nun die Unit einbinden doch wenn die Unit eingebunden wird bekomme ich logischerweise den Fehler das sich die Unit selber aufruft? Wo soll da nun der Fehler liegen?

Dann benutzt du es sogar in der gleichen Unit und Delphi ist hier wohl etwas zu "schlau". Auswirkubgen: siehe Prost Mahlzeit ;)


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