Forum: Sonstige Fragen zu Delphi
Delphi
by mjustin,
23. Mai 2018
Danke, aber den Stacktrace liefert madExcept (siehe mein erstes Posting, und im verlinkten Artikel von Gurock wird madExcept auch als Tool hierzu genannt) - der Stacktrace sieht auch nicht falsch oder beschädigt aus. Was eventuell beschädigt ist, ist der Stack selbst, oder etwas im Bereich des Delphi Exceptionhandlings.
Forum: Sonstige Fragen zu Delphi
Delphi
by mjustin,
23. Mai 2018
Das Problem, das den APPCRASH verursacht, könnte ein Stackschaden sein. Das ist vergleichbar mit einem Hardwaredefekt - einen defekten Speicherchip kann man auch nicht mit Änderungen des Programmcodes reparieren ;)
Forum: Sonstige Fragen zu Delphi
Delphi
by mjustin,
23. Mai 2018
Dem stimme ich 100%ig zu.
Fehler im sonstigen Code, der einen beschädigten Stack verursacht, ist natürlich nicht leicht zu finden.
Sobald ich etwas mehr Zeit habe, schreibe ich eine simple Testanwendung, die nur versucht den Port des Servers zu öffnen. Spanned wird es wenn das dann funktioniert. Ursachen für Stackschäden zu finden ist sicher kein Ponyhof :)
Forum: Sonstige Fragen zu Delphi
Delphi
by mjustin,
23. Mai 2018
Danke, aber das ist nicht erforderlich: die Connect-Methode sieht so aus:
procedure TProducerLoop.Connect;
begin
while True do
try
CreateProducer;
Logger.Info('Connected %d', );
IsConnected := True;
Exit;
Forum: Sonstige Fragen zu Delphi
Delphi
by mjustin,
23. Mai 2018
True ist immer wahr, eine while True do ... Schleife ist somit eine 'Endlosschleife' da die Abbruchbedingung nie False wird
Forum: Sonstige Fragen zu Delphi
Delphi
by mjustin,
23. Mai 2018
Im Delphi Debugger (mit abgeschaltetem madExcept) habe ich überprüft welche Codezeilen ausgeführt werden wenn der Server nicht mehr erreicht werden kann:
als Breakpoint habe ich die Zeile mit IsConnected := False gesetzt. Dort stoppt das Programm dann wie erwartet, aber von dort geht es mit F8 sofort aus der Prozedur heraus in das finally der aufrufenden Methode.
ProducerLoop :=...
Forum: Sonstige Fragen zu Delphi
Delphi
by mjustin,
23. Mai 2018
Ein Exit verlässt die Prozedur, ein Break nur die Schleife. Es soll ja nur die innere Schleife verlassen werden.
Forum: Sonstige Fragen zu Delphi
Delphi
by mjustin,
23. Mai 2018
Update:
Am Break liegt es nicht, mit diesem Code ergibt sich beim Stoppen des Servers ebenfalls ein APPCRASH:
procedure TProducerLoop.Run;
begin
while True do
begin
Connect;