AGB  ·  Datenschutz  ·  Impressum  







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

Zugriffsverletzung bei Minimieren-schließen

Ein Thema von Overclocker · begonnen am 5. Jul 2008 · letzter Beitrag vom 6. Jul 2008
Antwort Antwort
Seite 1 von 2  1 2      
Overclocker

Registriert seit: 10. Jan 2007
215 Beiträge
 
#1

Zugriffsverletzung bei Minimieren-schließen

  Alt 5. Jul 2008, 15:16
Hi,

habe folgendes Problem:
Habe eine MDI Anwendung die folgendermaßen aussieht:

Links ist ein Menü mit alphacontrols komponente und rechts ist dann sozusagen mein MDI Child.

Wenn ich jetzt das child schließe, kommt keine Fehlermeldung.
Wenn ich das child allerdings minimiere (also das fenster verkleiner) und dann schließe, kommt jedes mal eine zugriffsverletzung.

woran liegt das? er führt doch im endeffekt das normale close durch und wieso macht er nur bei minimiertem fenster probleme?

dankeschön

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#2

Re: Zugriffsverletzung bei Minimieren-schließen

  Alt 5. Jul 2008, 15:27
ich denke ohne den kompletten quelltext (am besten nach eingrenzung) oder zumindest de genaue Fehlermeldung können wir nur rätseln...

ist es eine Zugriffsverletzung mit lesen/schreiben auf 0x0 oder an einer komisch aussehenden adresse (z.b. 0x0000C00)?

wenn nicht wird man das step by step debuggen müssen, wo wir wieder beim quellcode wären

hast das mal ohne das alphacontrols-menü probiert? bzw mit einer leeren anwendung nur mit diesem menü...

Gruß Frank
  Mit Zitat antworten Zitat
Overclocker

Registriert seit: 10. Jan 2007
215 Beiträge
 
#3

Re: Zugriffsverletzung bei Minimieren-schließen

  Alt 5. Jul 2008, 15:34
folgenden code mach ich bei onclose
freeandnil(fenster2); Folgende Zugriffsverletzung:
Im Projekt test.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: ' Zugriffsverletzung bei Adresse 0041B108 in Modul 'Test.exe'. Lesen von Adresse 00000008'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.

Wenn ich mit F8 jede Anweisung einzeln durchgeh, kommt eben die Zugriffsverletzung bei der onclose-Ausführung.



ohne dem menü hab ichs noch nicht versucht nein, weil in dem prog ziemlich viel daran hängt.
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#4

Re: Zugriffsverletzung bei Minimieren-schließen

  Alt 5. Jul 2008, 16:37
hast du fenster2 ohne owner erstellt? weil wenn du als owner ein anderes formular angibst wird es automatisch freigegeben (vom Owner halt).

machst du irgendwas im destructor/onclose von fenster2?

die Zugriffsverletzung sieht jedenfalls stark nach einer un- bzw. falsch initalisierten variable aus...evtl. wurde das formular vorher freigegeben....sollte aber auch im nich-minimierten Modus fehlschlagen.

nur mal so zur Erklärung...
die 8 sieht deswegen komisch aus, weil in der 32-bit-adresse nur 1 bit (bit 3) gesetzt ist, daher eher auf eine konstante/flag deutet. evtl wurde die fensteradresse mit genau dieser 8 überschrieben, warum auch immer. evtl. kannst du den ausdruck überwachen und so schauen, wann das passiert.

Gruß Frank
  Mit Zitat antworten Zitat
Overclocker

Registriert seit: 10. Jan 2007
215 Beiträge
 
#5

Re: Zugriffsverletzung bei Minimieren-schließen

  Alt 5. Jul 2008, 16:39
im onclose von fenster2 ist eben das freeandnil

aber jetzt fängt mein problem schon an, habe noch nie mit ownern gearbeitet

was ist das und wie geht sowas????

danke für die hilfe!!!
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#6

Re: Zugriffsverletzung bei Minimieren-schließen

  Alt 5. Jul 2008, 16:45
naja, woher hast du fenster2? das erstellst ja irgendwo per hand (fenster2:=TForm2.create(...) oder so ähnlich).
die 3 punkte sind der owner (auf deutsch Eigentümer), wenn der Owner freigegeben wird, gibt er seine untertanen auch frei. daher musst/darfst du das in dem Fall nicht separat machen.

die formulare, die durch die anwendung erstellt werden (Application.CreateForm() in der dpr) werden auch automatisch freigegeben.

HTH Frank
  Mit Zitat antworten Zitat
Overclocker

Registriert seit: 10. Jan 2007
215 Beiträge
 
#7

Re: Zugriffsverletzung bei Minimieren-schließen

  Alt 5. Jul 2008, 16:49
das fenster erstell ich ganz normal und lass es aber erst im programm selber erstellen mit

application.createform(Tfenster2,fenster2); aber was muss mich jetzt wo freigeben??sonst ist dieses fenster nirgends verknüpft oder ähnliches

ich erzeug es einfach so und im onclose mach ich freeandnil...
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#8

Re: Zugriffsverletzung bei Minimieren-schließen

  Alt 5. Jul 2008, 16:58
dadurch, dass du es über die application-instanz erstellst, brauchst du das imho nicht freigeben...das macht die anwendung selbst. wie die anderen Forms auch.
[oh]TApplication.CreateForm
...
Der Eigentümer des neuen Formulars ist die Anwendung.[/oh]

[oh]TComponent.Create
...
Für manuell (also nicht im Formular-Designer) erzeugte Komponenten rufen Sie Create auf und übergeben die übergeordnete Komponente im Parameter AOwner. Der Eigentümer löst die Komponente auf, wenn er selbst aufgelöst wird. Wenn die Komponente keinen Eigentümer hat, rufen Sie Free auf, um sie aufzulösen.[/oh]

warum der effekt nur im minimierten Zustand auftritt ist mir allerdings ein Rätsel.

Gruß Frank
  Mit Zitat antworten Zitat
5. Jul 2008, 17:49
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
Es geht um Delphi. Und ich ordne das mal als allgemeines Delphi-Sprachproblem ein.
Overclocker

Registriert seit: 10. Jan 2007
215 Beiträge
 
#10

Re: Zugriffsverletzung bei Minimieren-schließen

  Alt 6. Jul 2008, 13:05
noch jemand eine idee woran das liegen könnte???
  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 16:40 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