AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi EOSError 1400 - Invalid window handle
Thema durchsuchen
Ansicht
Themen-Optionen

EOSError 1400 - Invalid window handle

Ein Thema von A.Griffin · begonnen am 22. Feb 2017 · letzter Beitrag vom 23. Feb 2017
Antwort Antwort
Seite 1 von 2  1 2      
A.Griffin

Registriert seit: 17. Feb 2017
94 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

EOSError 1400 - Invalid window handle

  Alt 22. Feb 2017, 15:55
Könnte mir jemand vielleicht behilflich sein und mir erklären wie ich den oben genannten Fehler debuggen könnte? Der Fehler tritt beim Beenden der Anwendung auf. Ich habe versucht mit Breakpoints gerauszufinden, wo genau der Fehler auftritt, aber der Fehler tritt leider nach oder im "end;" auf. Für jeden Hinweis wäre ich dankbar. Ich habe den ganzen Tag schon probiert herauszufinden wodurch der Fehler ausgelöst wird.


Delphi 7 Anwendung auf einem Windows 7 Rechner.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: EOSError 1400 - Invalid window handle

  Alt 22. Feb 2017, 16:55
Ist ein Thread neben dem MainThread im Spiel? Hast du eine Console offen?
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: EOSError 1400 - Invalid window handle

  Alt 22. Feb 2017, 17:09
Angenommen, Du hast in Deinem Programm irgendwo eine Ereignisroutiene dieser Art:
Delphi-Quellcode:
procedure Tform1.btnProgrammbeenden(Sender: TObject);
begin
  stb.SimpleText := 'Das Programm wird beendet ...';
  Application.ProcessMessages;
  Close;
end;
Dann einen Breakpoint auf das Close setzen und dann mit dem Debugger schrittweise (F7) bis zum Fehler weitersteppen.

Das CPU-Fenster vorher aufmachen und dort schauen, was bei jedem Schritt so gemacht wird. Daraus solltest Du dann eventuell Rückschlüsse auf die Fehlerursache ziehen können.

Oder das Programm mit ausführlicher MAP-Datei erstellen und dort die Fehleradresse aus der Fehlermeldung suchen. Eventuell findest Du dort dann brauchbare Informationen.

Nutzt Du zufällig die JVCL?

Wenn ja, papp Dir die Komponente TJvDebugHandler auf's Formular, gibt dort einen Namen für die Logdatei ein und erstelle Dein Programm mit ausfühlicher MAP-Datei.

Im Fehlerfalle sollte dann sowas in der Art in der LOG-Datei stehen:
Code:
22.02.2017 18:02:43 Exception EDivByZero occured in TForm1.FormCreate at 29 in file Unit1.pas
Message: Division durch Null
Call stack:
[581E1048] Unit1.TForm1.FormCreate (Line 29, "Unit1.pas")
[581BE2C1] Forms.TCustomForm.DoCreate (Line 2648, "Forms.pas")
[581BDFA1] Forms.TCustomForm.AfterConstruction (Line 2575, "Forms.pas")
[581C5661] Forms.TApplication.CreateForm (Line 6947, "Forms.pas")
[581E1413] Project1.Project1 (Line 11, "E:\Delphi\Project1.dpr")
Analog dazu solltest Du dann bei Deinem Programm einen Hinweis auf die fehlerverursachende Stelle bekommen.
  Mit Zitat antworten Zitat
A.Griffin

Registriert seit: 17. Feb 2017
94 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: EOSError 1400 - Invalid window handle

  Alt 22. Feb 2017, 18:04
Ist ein Thread neben dem MainThread im Spiel? Hast du eine Console offen?
Es sind mehrere Threads mit dabei. Es wird keine Console genutzt.

@nahpets, JVCL wird nicht genutzt. Kannst du eine gute Anleitung für MAP files empfehlen?
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: EOSError 1400 - Invalid window handle

  Alt 22. Feb 2017, 18:55
Nö, 'ne Anleitung hab' ich nicht.

MAP-Dateien sind auch nur Textdateien. In die kann man mit Notepad (oder so) reinschauen.

Wenn Du aus der Fehlermeldung eine Fehleradresse hast, kannst Du die da einfach suchen. Mit ein bisserl Glück findest Du sie. Im Idealfall steht daneben dann eine Zeilennummer. Oberhalb des Abschnittes, in dem Du fündig geworden bist, steht die zugehörige Quelltextdatei.

Findest Du die Adresse nicht, so nimm nur die ersten sechs Zeichen davon und suche nochmal. Wirst Du fündig, so kannst Du dort wieder Zeilennummer und Quelltextdatei entnehmen und weiß zumindest, dass der Fehler irgendwo ab dieser Stelle auftritt. Dann setzt Du Dir dort 'nen Breakpoint und gehst mit dem Debugger ab da schrittweise weiter, bis der Fehler auftritt.

Klappt es mit den ersten sechs Zeichen nicht, dann halt mit 5, 4, 3 Zeichen versuchen, eine Annäherung an die Fehlerstelle sollte somit eigentlich möglich sein.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.610 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: EOSError 1400 - Invalid window handle

  Alt 23. Feb 2017, 10:50
Kannst du, wenn du den Debugger gestartet hast und der Fehler passiert, nicht einfach auf Anhalten klicken und dir den StackTrace anschauen? Sollte doch eigentlich funktionieren.

Alternativ wie von Stephan empfohlen den Breakpoint auf das Close setzen und ab dort mit F7 durchsteppen. Allerdings hatte ich dann schon öfters das Problem, dass der Fehler dann nicht mehr auftrat weil dann andere Laufzeiten der Threads bestehen und evtl. der Fehler nicht entsteht weil alles noch sauber abgearbeitet werden kann.
  Mit Zitat antworten Zitat
A.Griffin

Registriert seit: 17. Feb 2017
94 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: EOSError 1400 - Invalid window handle

  Alt 23. Feb 2017, 12:58
Kannst du, wenn du den Debugger gestartet hast und der Fehler passiert, nicht einfach auf Anhalten klicken und dir den StackTrace anschauen? Sollte doch eigentlich funktionieren.

Alternativ wie von Stephan empfohlen den Breakpoint auf das Close setzen und ab dort mit F7 durchsteppen. Allerdings hatte ich dann schon öfters das Problem, dass der Fehler dann nicht mehr auftrat weil dann andere Laufzeiten der Threads bestehen und evtl. der Fehler nicht entsteht weil alles noch sauber abgearbeitet werden kann.
Meinst du mit StackTrace "Call Stack" unter "Debug Windows"? Mit F7 steppen komme ich nicht weiter, da laut dem Steppen im CPU Window im Ausführen des "end;" der Fehler entsteht. Laut der map file ist die Speicheradresse des Fehlers zwischen BackupVarBStrFromCy und BackupVarBStrFromDate, aber was das mir sagt weiß ich leider nicht.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

AW: EOSError 1400 - Invalid window handle

  Alt 23. Feb 2017, 13:25
Bei Delphi 7 sind die beiden Methoden in der VarUtils.pas zu finden (steht unter Delphiverzeichnis\Source\Rtl\Sys).

Also die Unit ins Projekt aufnehmen und Breakpoint auf die erste Zeile der Methode.

Vermute, dass dort vorab im Programm veränderte Systemeinstellungen (bezüglich Währung und Datum) restauriert werden sollen.

Änderst Du eventuell im Programm irgendwelche Einstellungen dieser Art?

Wenn ja, kommentiere die mal bitte testweise aus und prüfe, ob damit auch der Fehler behoben wird.
Dann ist die Ursache in dem Bereich zu suchen.
  Mit Zitat antworten Zitat
A.Griffin

Registriert seit: 17. Feb 2017
94 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: EOSError 1400 - Invalid window handle

  Alt 23. Feb 2017, 13:48
Die beiden Methoden werden im Projekt nicht genutzt.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#10

AW: EOSError 1400 - Invalid window handle

  Alt 23. Feb 2017, 14:00
Wäre es möglich, dass Du uns mal die Fehlermeldung postest (per Strg-C im Fehlerdialog kopieren und hier zwischen CODE-Tags einfügen) und die MAP-Datei als Anhang beifügst?
  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 06:28 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