AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Fehler, wenn Exe in Autostart
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Fehler, wenn Exe in Autostart

Ein Thema von Jens Hartmann · begonnen am 11. Mär 2009 · letzter Beitrag vom 13. Mär 2009
 
nahpets
(Gast)

n/a Beiträge
 
#22

Re: SQL Fehler, wenn Exe in Autostart

  Alt 13. Mär 2009, 13:12
Hallo Jens,

ne, was der Fehler ist, wissen wir jetzt immer noch nicht, aber wir wissen, dass 5 Sekunden warten das Problem löst. Beim Programmstart steht irgendwas noch nicht zur Verfügung.

Für genauere Erläuterungen zur Fehlerbehandlung schau bitte mal in der Hilfe unter try. Hier nur eine kurze Erklärung:

sMessage ist ein von mir deklarierter String zum Speichern des Fehlertextes.
e ist der Name, unter dem die Exception angesprochen wird, das könnte auch Hugo oder Paul... heißen.
Mit e.Message erhalten wir den Fehlertext der Exception.

Delphi-Quellcode:
on e : Exception Do begin
  sMessage := e.Message;
  Inc(iError);
  WinExec('CMD.EXE /C "net start >> c:\netstart.txt"',SW_HIDE); // nur zur momentanen Fehlersuche, kann später entfallen.
  Application.ProcessMessages;
  Sleep(1000);
end;
Was mich interessieren würde, wäre der Inhalt der per WinExec erstellten Datei c:\netstart.txt. Könntest Du den bitte mal mit hier dranhängen, eventuell kann man da erkennen, ob innerhalb der 5 Sekunden noch ein weiterer Dienst gestartet wurde, mit dem wir hier garnicht rechnen. Alternativ: In der Datei müsste für jeden aufgetretenen Fehler (also bis zu 5 Mal) eine Liste der laufenden Dienste sein. Sind die einzelnen Abschnitte identisch oder ist da im Laufe der Zeit noch irgendein Dienst hinzugekommen?

Kann es sein, dass von dem Zeitpunkt, zu dem der Dienst gestartet wurde, bis zu dem Zeitpunkt, an dem er erstmalig Anforderungen annehmen kann, ein paar Sekunden vergehen? Er muss ja auch noch auf die Datenbankdatei zugreifen, die Datenbank öffenen, eventuell Logdateien erstellen, eine Konsistenzprüfung auf die Datenbankdatei machen, oder... Dies könnte dann dazu führen, dass der erste Zugriff erst nach Dienststart + x Sekunden möglich ist, wobei wir hier mit 5 Sekunden halt lange genug gewartet haben, was sich aber bei längerer Nutzung und Vergrößerung das Datenbank ändern könnte.

Benutzt Dein Programm irgendeine Laufwerksverbindung oder sonstige Resourcen ausserhalb des Rechners, auf dem das Programm läuft?

Dashier könnte man auch etwas verständlicher lösen, statt:
Delphi-Quellcode:
if iError > 5 then begin
  ShowMessage('Die Datenbank konnte mit ' + IntToStr(iError) + ' Versuchen nicht geöffnet werden.
  + #13 + 'Die letzte Fehlermeldung lautete: ' + sMessage);
  Application.Terminate; // <- oder sonstige Fehlerbehandlung.
 end;
wäre wohl besser:
Delphi-Quellcode:
if not QryMB256PLUS.Active then begin
  ShowMessage('Die Datenbank konnte mit ' + IntToStr(iError) + ' Versuchen nicht geöffnet werden.
  + #13 + 'Die letzte Fehlermeldung lautete: ' + sMessage);
  Application.Terminate; // <- oder sonstige Fehlerbehandlung.
 end;
  Mit Zitat antworten Zitat
 


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 11:48 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