Announcement

Collapse
No announcement yet.

DRINGEND!! Zugriffsverletzung beim Schließen der Anwendung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DRINGEND!! Zugriffsverletzung beim Schließen der Anwendung

    Hallo zusammen,

    ich habe folgendes Problem.

    Meine Anwendung besteht aus vielen MDIChild-Fenstern, die bei Bedarf dynamisch erzeugt werden. Bei einem dieser Fenster besteht nun das Problem, dass beim Beenden der Anwendung die Fehlermeldung <B>"Zugriffsverletzung bei Adresse 00000000. Lesen von Adresse 00000000"</B> erscheint. Dies aber nur, wenn die gesamte Anwendung geschlossen wird. Wird zuerst das Fenster und dann die Anwendung geschlossen, kommt die Fehlermeldung nicht. Sobald ich eine Komponente in diesem Fenster lösche, ist das Problem behoben. Sobald ich aber nur wieder eine Komponente, sei es ein TLable, TButton oder in einem TTable ein neues TIntegerfeld öffne, ist die Meldung wieder da. In dem Fenster können über TPageControl verschiedene Eingaberegister geöffnet werde. Alle TTable, die eine Bearbeitung von Daten ermöglichen, sind in ein Datamodul ausgelagert. Trotzdem sind noch 19 TTable- und 30 TDatasource- Komponenten enthalten. Über diese werden 26 TDBLookupComboPlus bedient. (Dies ist eine zugekaufte, verbesserte LookupCombo.) Insgesamt werden für das Fenster 462 Komponenten verwendet (101 TLabel, 43 TStringField, 30 TDataSource, 30 TDBText, 29 TBitBtn, ...). In einem anderen Fenster verwende ich aber 830 Komponenten ohne Probleme. Ich arbeite mit Delphi 5.0.

    Kann mir jemand sagen, wie ich der Ursache auf die Spur kommen kann? Per Debuger habe ich festgestellt, dass die Meldung erst erscheint, wenn "Application.Run;" verlassen wird.

    Vielen Dank

    Gerd

  • #2
    Hallo Gerd,<BR>
    <BR>
    das sieht sehr nach dem Zugriff auf bereits freigegebene Objekte in <BR>
    irgendwelchen Events/Destruktoren.Als Debugansatz mal Breakpoints<BR>
    auf alle wichtigens Events setzen wie z.B. OnClose, OnDestroy etc.<BR>
    <BR>
    Gruß<BR>
    Rol
    Bye und bis denne

    Rolf Heinen

    Comment


    • #3
      Hallo Rolf,

      das habe ich bereits versucht, aber wie gesagt, der Fehler tritt erst nach verlassen von "Application.run" auf und da sind alle Events schon abgearbeitet.

      Gruß
      Ger

      Comment


      • #4
        Hallo Gerd,

        ... verlassen von "Application.run" auf und da sind alle Events schon abgearbeitet.

        Nicht unbedingt. Ich hatte mal den Fall das wenn eine BDE-Verbindung erst automatisch im Destruktor geschlossen wurde, versucht wurde auf das nicht mehr vorhanden Screen-Objekt zuzugreifen um den Cursor zu ändern. Hatte ich die BDE-Verbindung explizit im OnCloseQuery-Event geschlossen war alles ok

        Comment


        • #5
          Hallo Bernhard,

          die Idee war gut und hat in die richtige Richtung gezeigt. Ich bin blöderweise nach <B>Application.Run;</B> mit F8 weitergefahren, da ich dachte jetzt ist alles vorbei. Mit F7 ist er noch mal in das nach meiner Meinung schon geschlossen Formular gesprungen und hat dort in <B>foProject.FormDestroy dmProj.dbtaProjNr.Close</B> aufgerufen und das führt zum Fehler. Weshalb dieser Fehler aber plötzlich, nach einfügen einer weiteren Komponente auftritt, ist mir schleierhaft. Und es ist nachvollziehbar. Sobald ich eine beliebige, auch andere Komponente lösche, ist die Fehlermeldung wieder weg.

          Dank für die Hilfe.

          Wenn noch einer einen Tip hat, weshalb dieser Fehler mit dem Einfügen von Komponenten zusammenhängt, wäre ich dankbar.

          Gruß
          Ger

          Comment


          • #6
            Ich denke mal das ist ein Timing-Problem bzgl. Freigabereihenfolge der Controls/Module

            Comment


            • #7
              Unter WinXP kann noch ein Problem hinzukommen, das an vielen anderen Stellen im Forum angesprochen wurde: Application.ProcessMessages muss häufig(er) aufgerufen werden, d.h. vielleicht auch nach dem Schließen (Destroy) von Elementen, Table.Close u.ä.

              Jürge

              Comment


              • #8
                Hallo,
                <br>
                <br>ich kämpfe mit einem ähnlichen Problem.
                <br>Kann man die Freigabereihenfolge irgendwie beeinflussen?
                <br>
                <br>mfg
                <br>Torsten Lan

                Comment

                Working...
                X