AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi 2009 - Programm hängt manchmal beim beenden
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi 2009 - Programm hängt manchmal beim beenden

Offene Frage von "zeras"
Ein Thema von bwolf · begonnen am 6. Jul 2010 · letzter Beitrag vom 9. Aug 2010
Antwort Antwort
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#1

AW: Delphi 2009 - Programm hängt manchmal beim beenden

  Alt 6. Jul 2010, 16:23
Hier nochmal eine Aktualisierung des Problems auf einen sehr minimalen Quellcode. Ich habe eine Form und ein Memo darauf, samt einem Button zum Anstoßen dieses Codes. Was machst das Ding? Es stellt eine Verbindung zu einer dBase-Datenbank her, welche ja nur über den Pfadnamen angegeben ist, liest die verfügbaren Tabellen aus und gibts diese aus. Danach wird die Verbindung wieder abgebaut und gut is.

Delphi-Quellcode:
var
  conn : TADOConnection;
  list : TStringList;
begin
  conn := TADOConnection.Create(nil);
  list := TStringList.Create();
  try
    conn.ConnectionString := 'Provider=MSDASQL.1;Persist Security Info=False;Data Source=dBASE Files;Mode=Read';
    conn.DefaultDatabase := DBASE_DIRECTORY; // this constant represents a path on the hdd
    conn.Connected := True;
    conn.GetTableNames(list);
    Memo1.Text := list.Text;
  finally
    conn.Connected := False;
    FreeAndNil(conn);
    FreeAndNil(list);
  end;
end;
Die Anwendung hängt sich bei mir nur dann auf, wenn die Delphi IDE diese im Debug-Mode ausgeführt hat. Starte ich diese ganz normal über den Explorer funktioniert alles wunderbar. Die Zeile conn.Connected := True; macht das Problem, nur was genau kann ich leider nicht sagen.
Ich sollte auch noch dazu sagen, dass innerhalb der GetTableNames() -Methode ein TADODataSet erzeugt, damit gearbeitet und freigegeben wird.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)

Geändert von s.h.a.r.k ( 6. Jul 2010 um 16:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Delphi 2009 - Programm hängt manchmal beim beenden

  Alt 29. Jul 2010, 19:59
Ich habe ein ähnliches Problem, aber ohne Verwendung von Datenbankkomponenten. Es sind zwar eine Reihe von Komponenten mit dabei (JVCL, Andorra2D, etc.) - aber der Fehler ist auch nicht wirklich reproduzierbar. Manchmal beende ich das Programm und dann hängt Delphi und es dauert teilweise 20 Sekunden, bis der Debugger den Prozess wirklich schließt und Delphi wieder reagiert. Starte ich das Programm danach erneut und mache genau das gleiche kann es sein, dass es zu keinem Hänger kommt.
Wie würdet ihr so einen Fehler finden? Es bremst einen wirklich übelst beim Programmieren...

Edit: Habe auch mal alle .dcu-Dateien etc. gelöscht -> kein Effekt
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Delphi 2009 - Programm hängt manchmal beim beenden

  Alt 8. Aug 2010, 21:30
*Push*
Bin bisher nicht weitergekommen - hat keiner eine Idee?
  Mit Zitat antworten Zitat
Schorschi5566

Registriert seit: 6. Feb 2006
197 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: Delphi 2009 - Programm hängt manchmal beim beenden

  Alt 8. Aug 2010, 23:38
Hallo Codewalker,

auch wenn der Fehler nicht zu reproduzieren ist, musst Du ihn irgendwie eingrenzen.

Oder hängt Dein Programm auch, wenn Du gar nichts tust?

Unter welchen Umständen tritt das Problem auf? Tritt es auch ohne Delphi auf?

Wenn Du einen bestimmten Codeblock im Verdacht hast, versuche ihn mal wegzulassen oder mit anderem Code zu ersetzen oder natürlich zu debuggen.

Dann wirst Du dem Problem schon auf die Spur kommen.

Benutzt Du eigene Pointer? Wenn Delphi solche "Kunstpausen" macht, war es bei mir schon häufig so, dass ich irgendwo ganz übel im Speicher rumgemalt hatte.


Grüße,
Uwe
Uwe
"Real programmers can write assembly code in any language." - Larry Wall
Delphi programming rocks
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Delphi 2009 - Programm hängt manchmal beim beenden

  Alt 9. Aug 2010, 08:22
Oder hängt Dein Programm auch, wenn Du gar nichts tust?
Nein, es geht ja darum, dass - wenn ich mein Programm beende - der Prozess nicht geschlossen wird. Und solange der Prozess läuft, kehrt der Debugger nicht zurück. Deswegen habe ich auch keinen Codeteil im Verdacht, weil das Debuggen da eigentlich schon vorbei ist. Ist habe in der Zwischenzeit mal AQTime benutzt und wollte herausfinden, wo er so lange verweilt, aber auch AQTime beendet die Zeitmessung vorher.

Unter welchen Umständen tritt das Problem auf?
Keine Ahnung, passiert wahllos in ca. 40% der Fälle.

Tritt es auch ohne Delphi auf?
Ja, aber dann fällt es nicht auf, weil es kein Fenster oder ähnliches gibt, sondern der Prozess nur noch für einige Sekunden im TaskManager zu sehen ist. Aber beim Debuggen ist das halt viel nerviger.

Benutzt Du eigene Pointer? Wenn Delphi solche "Kunstpausen" macht, war es bei mir schon häufig so, dass ich irgendwo ganz übel im Speicher rumgemalt hatte.
Ich nicht, aber Andorra nutzt einige Konstrukte, um dynamisch mit Plugins arbeiten zu können. Das war aber bisher nie ein Problem.

Ich werde einfach mal in alle Units im finalization-Abschnitt ein OutputDebugString einbauen und dann mal sehen, wo ich überall ankomme. Evtl. hilft das weiter.
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#6

AW: Delphi 2009 - Programm hängt manchmal beim beenden

  Alt 9. Aug 2010, 09:15
Das Problem habe ich auch manchmal...eine definierte Lösung habe ich dafür auch noch nicht gefunden.
Ich weiss nur, woran es ungefähr liegt, falls es bei dir auch um eine 3D-Applikation geht: Manchmal braucht der Treiber der Grafikkarte irgendwie unverschämt lange, um den Rendering Context zu deaktivieren. Manchmal ja, manchmal nein.
Ich habe bei mir das ganze schonmal runtergetrackt und gesehen, dass da anscheinend noch der Graka-Treiber Aufräumarbeiten tätigt, und das bei mir teilweise bis zu einer Minute!!!
Ich würde das auch gerne loswerden, da es wirklich nervt! Allerdings habe ich festgestellt, dass das teilweise auch bei kommerziellen Spielen auftritt, dass es ewig dauert, bis das Spiel endlich beendet wird.
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#7

AW: Delphi 2009 - Programm hängt manchmal beim beenden

  Alt 9. Aug 2010, 09:54
Das klingt treffend. Ich habe das in zwei Projekte, eines mit Andorra (definitiv mit 3D-Beschleunigung) und in einer Filmverwaltung mit CoverFlow (von TMsSoftware), dass auch eine DirectX-Surface nutzt. Von daher könnte genau dass bei mir auch die Ursache sein.
Einerseits beruhigt es mich ja, dass ich keinen Blödsinn programmiert habe, aber andererseits kann man dagegen auch nichts tun.
Vielen Dank für den Hinweis
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz