AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Zugriffsverletzung beim Ausführen von Halt
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriffsverletzung beim Ausführen von Halt

Ein Thema von backdraft · begonnen am 20. Apr 2006 · letzter Beitrag vom 27. Apr 2006
Antwort Antwort
Seite 1 von 2  1 2      
backdraft

Registriert seit: 19. Apr 2005
Ort: Hückeswagen
333 Beiträge
 
Delphi 11 Alexandria
 
#1

Zugriffsverletzung beim Ausführen von Halt

  Alt 20. Apr 2006, 19:56
Hallo zusammen,

ich habe ein mittlerweile ziemlich grosses Projekt.
Das Hauptmodul sieht folgendermaßen aus:

Delphi-Quellcode:
  Application.Initialize;
  Application.Title := 'SoftwareTest';
  Application.CreateForm(Tfrm_MDI, frm_MDI);
  Application.CreateForm(Tfrm_DBSetup, frm_DBSetup);
  Application.CreateForm(Tfrm_Setup, frm_Setup);
  Application.CreateForm(Tfrm_DDE, frm_DDE);
  if not (frm_MDI.KDRReg.CheckReg(TRUE)) then Halt;
  Application.CreateForm(Tfrm_Setup, frm_Setup);
  Application.CreateForm(Tfrm_Designer, frm_Designer);
  frm_Setup.Init;
  frm_DBSetup.Init;
  frm_MDI.Init;
  if not (Tfrm_Login.Create(nil).Execute(vmastermode)) then Halt;
  frm_MDI.InitAfterLogin(vmastermode);
  Application.Run;
  frm_MDI.DeInit;
Das Programm läuft im normalfall ganz normal ohne Fehler, es wird auch ohne Fehler beendet.
Komme ich aber an die beiden Punkte wo es mit Halt das Programm verlässt fliegt das Programm mit einem Speicherzugriffsfehler + anschließendem Runtime Error 216 raus.

Ich habe auch das Produkt Eurekalog, leider zeigt es mir auch nur im Callstack die Zeile in dem der Halt steht.
Das Problem muss irgendwie innerhalb der letzten 2 Wochen entstanden sein. Leider habe ich so viel in der Zeit daran geändert, das ich nicht mehr durch ausprobieren rausfinden kann, was der Grund ist.

Ein Application.Terminate bringt nicht den gewünschten erfolg, da dann das Programm auf jedenfall durchstartet, und danach erst abbricht (fehlerfrei).

Habe ich irgendeine Möglichkeit diesen Fehler zu finden?

Danke für jeden Tipp
Oliver
Oliver
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Zugriffsverletzung beim Ausführen von Halt

  Alt 20. Apr 2006, 20:40
Hi,

was ist, wenn Du die letzten 4 Zeilen so abänderst:
Delphi-Quellcode:
if Tfrm_Login.Create(nil).Execute(vmastermode) then
begin
  frm_MDI.InitAfterLogin(vmastermode);
  Application.Run;
  frm_MDI.DeInit;
end;
Dann müsste sich das Programm theoretisch einfach normal beenden, falls das Login falsch ist.

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
backdraft

Registriert seit: 19. Apr 2005
Ort: Hückeswagen
333 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Zugriffsverletzung beim Ausführen von Halt

  Alt 20. Apr 2006, 20:46
Hallo, habs probiert, funktioniert auch nicht.

Es hat auch nichts mit dem DeInit zu tun, da wird nur ein Logout in die DB geschrieben und die Einstellungen in die Registry gespeichert.
Oliver
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Zugriffsverletzung beim Ausführen von Halt

  Alt 20. Apr 2006, 20:55
Hallo,

arbeitest Du im Finalization-Abschnitt einer Unit mit einer Objektinstanz, die erst in den Init-Methoden (z.B. frm_Setup.Init) erzeugt wird?

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Zugriffsverletzung beim Ausführen von Halt

  Alt 20. Apr 2006, 20:59
Da gibts doch auch noch den Application.terminate; Befehl vielleicht hilft der ja weiter.
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Zugriffsverletzung beim Ausführen von Halt

  Alt 20. Apr 2006, 21:04
@Corpsman
Zitat von backdraft:
Ein Application.Terminate bringt nicht den gewünschten erfolg, da dann das Programm auf jedenfall durchstartet, und danach erst abbricht (fehlerfrei).
Gruß Hawkeye
  Mit Zitat antworten Zitat
backdraft

Registriert seit: 19. Apr 2005
Ort: Hückeswagen
333 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Zugriffsverletzung beim Ausführen von Halt

  Alt 20. Apr 2006, 22:23
Ich denke, dass es irgendeine Kompoenente ist, die ich verwendet habe, dass da eine Finalization drin ist.
Oliver
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Zugriffsverletzung beim Ausführen von Halt

  Alt 20. Apr 2006, 22:32
Dann würde ich als nächstes Haltepunkte auf die ersten Anweisungen der Finalization-Abschnitte setzen und diese dann im Einzelschritt-Modus durchlaufen - vorausgesetzt, du hast den Quelltext der Komponente(n).

Gruß Hawkeye
  Mit Zitat antworten Zitat
backdraft

Registriert seit: 19. Apr 2005
Ort: Hückeswagen
333 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Zugriffsverletzung beim Ausführen von Halt

  Alt 20. Apr 2006, 22:38
Das ist der letzte Befehl den er ausführt.
Result := CallWindowProc(IntPtr(GetWindowLong(hWnd, GWL_USERDATA)), hwnd, uMsg, wParam, lParam);

Danach kommt er hier hin

procedure TALCustomButton.WndProc(var Message: TMessage);
begin
case Message.Msg of

In dem Moment, wenn ich den Begin ausführe kommt die zugriffsverletzung
Oliver
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Zugriffsverletzung beim Ausführen von Halt

  Alt 20. Apr 2006, 23:03
Sorry, an der Stelle werde ich Dir wahrscheinlich nicht weiterhelfen können.
Du könntest versuchen die Komponente durch eine Standardkomponente zu ersetzen.
Und ein letzter Versuch:

Delphi-Quellcode:

var ok : Boolean;

begin
  Application.Initialize;
  Application.Title := 'SoftwareTest';
  Application.CreateForm(Tfrm_MDI, frm_MDI);
  Application.CreateForm(Tfrm_DBSetup, frm_DBSetup);
  Application.CreateForm(Tfrm_Setup, frm_Setup);
  Application.CreateForm(Tfrm_DDE, frm_DDE);
  ok := frm_MDI.KDRReg.CheckReg(TRUE);
  Application.CreateForm(Tfrm_Setup, frm_Setup);
  Application.CreateForm(Tfrm_Designer, frm_Designer);
  frm_Setup.Init;
  frm_DBSetup.Init;
  frm_MDI.Init;
  ok := ok and Tfrm_Login.Create(nil).Execute(vmastermode);
  frm_MDI.InitAfterLogin(vmastermode);
  if ok then
    Application.Run;
  frm_MDI.DeInit;
end.
Möglicherweise ist das bei Deiner Applikation aber gar nicht umzusetzen, weil einige Formulare vielleicht nur erzeugt werden dürfen, wenn die vorigen erfolgreich initialisiert bzw. abgeschlossen wurden.

Gruß Hawkeye
  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:23 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