Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Programm beendet sich einfach (https://www.delphipraxis.net/131018-programm-beendet-sich-einfach.html)

franktron 17. Mär 2009 16:59


Programm beendet sich einfach
 
Ich habe ein Programm das ich in Lazarus Programmiert haben (ein Server)

Ich nutze Indy (TCPServer) und MySQL Komponenten von Devart
keine Gui nur Konsole

So jetzt zu meinem Problem
Unter Windows XP und unter Wine läuft das Prog ohne Probleme Wochenlang unter Windows 2000 Server läuft es nur ca. 1 Min dann beendet es sich ohne irgend eine Meldung keine AV oder sowas.

Was kann das sein.

P.S. das Programm macht in der Minute nichts

Delphi-Quellcode:
  While FRun do
  Begin
    If IDatum<>Date then //Tages Wechsel
    Begin
      ShowStatus('Tages Start');
      IDatum:=Date;
      If Not FServerClass.DB.Connected then FServerClass.DB.Connect;
      For i:=0 To Plugins.Plugins.Count-1 do
      Begin
        TONLPlugin(Plugins.Plugins.Items[i]).UPDTabs;
        TONLPlugin(Plugins.Plugins.Items[i]).StartDay;
      End;
      If FServerClass.AnzClients=0 then FServerClass.DB.Disconnect;
    End;
    //If KeyPress=VK_ESCAPE then FRun:=False;
    Sleep(1000);
  End;
Nur das hier

Neutral General 17. Mär 2009 17:08

Re: Programm beendet sich einfach
 
Hi,

Du musst Exceptions abfangen. Tritt in der Console eine Exception auf, die nicht abgefangen wird, dann wird das Programm beendet.

Delphi-Quellcode:
While FRun do
begin
  try
    if IDatum<>Date then //Tages Wechsel
    begin
      ShowStatus('Tages Start');
      IDatum:=Date;

      If Not FServerClass.DB.Connected then
        FServerClass.DB.Connect;
   
      for i:=0 To Plugins.Plugins.Count-1 do
      begin
        TONLPlugin(Plugins.Plugins.Items[i]).UPDTabs;
        TONLPlugin(Plugins.Plugins.Items[i]).StartDay;
      end;

      if FServerClass.AnzClients=0 then
        FServerClass.DB.Disconnect;
    end;

  //if KeyPress=VK_ESCAPE then
  //  FRun:=False;

    Sleep(1000);
  except
     writeln('Ein Fehler ist aufgetreten!');
  end;
end;

franktron 17. Mär 2009 19:19

Re: Programm beendet sich einfach
 
Zitat:

Zitat von Neutral General
Hi,

Du musst Exceptions abfangen. Tritt in der Console eine Exception auf, die nicht abgefangen wird, dann wird das Programm beendet.

Ja aber in einem sleep eine exception ??

Neutral General 17. Mär 2009 19:27

Re: Programm beendet sich einfach
 
Hi,

Warum gehst du davon aus, dass gerade sleep ne Exception wirft? o.o

Bernhard Geyer 17. Mär 2009 20:55

Re: Programm beendet sich einfach
 
Zitat:

Zitat von franktron
... unter Windows 2000 Server läuft es nur ca. 1 Min dann beendet es sich ohne irgend eine Meldung keine AV oder sowas.

Ein unerwartetes Programmende deutet sehr stark auf einen Stack-Overflow hin. Schau mal in der Ereignisanzeige nach ob was vermerkt ist. Ansonsten mach eine Remote Debugging Session - Falls es sowas unter Lazarus gibt.

franktron 18. Mär 2009 08:48

Re: Programm beendet sich einfach
 
Es kommt tatsächlich eine Fehlermeldung in der Eregnisanzeige

Fehlgeschlagene Anwendung kas_server.exe, Version 0.0.0.0, fehlgeschlagenes Modul kernel32.dll, Version 5.2.3790.4062, Fehleradresse 0x0000bee7.

Aber was kann ich damit jetzt anfangen ?

Ich habe jetzt auch in die schleife Try Except eingebaut bringt aber leider keine Meldung

Was kann ich jetzt noch tun

P.S. das Problem tritt nur unter Windows 2003 Auf

Udo 31. Mär 2009 10:44

Re: Programm beendet sich einfach
 
Delphi-Quellcode:
except
     writeln('Ein Fehler ist aufgetreten!');
  end;
Das ist nicht gerade aussagekräftig.
Wie wärs damit:
Delphi-Quellcode:
except
     on E: Exception do writeln(E.Message);
  end;

franktron 31. Mär 2009 18:31

Re: Programm beendet sich einfach
 
Zitat:

Zitat von Udo
Delphi-Quellcode:
except
     writeln('Ein Fehler ist aufgetreten!');
  end;
Das ist nicht gerade aussagekräftig.
Wie wärs damit:
Delphi-Quellcode:
except
     on E: Exception do writeln(E.Message);
  end;

Das bringt auch nicht mehr wenn er da gar nicht hinkommt


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:00 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