Danke schon mal für die vielen antworten. Ich habe jetzt folgende Routine geschrieben.
Delphi-Quellcode:
//Abfrage in der OnCreate von Form1
if ServiceGetStatus('', 'FirebirdGuardianDefaultInstance') = 4 then
begin
VSTfüllen;
PDatenbankdienst.Caption := 'Datenbank gestartet';
PDatenbankdienst.Color := clLime;
end
else
begin
PDatenbankdienst.Caption := 'Datenbank wird gestartet';
PDatenbankdienst.Color := clred;
TAufDienstWarten.Enabled := true;
TTimeOutDienst.Enabled := true;
end;
//Timer 1 Datenbank Dienst wird im 1 Sec. Takt abgefragt
procedure TForm1.TAufDienstWartenTimer(Sender: TObject);
begin
if ServiceGetStatus('', 'FirebirdGuardianDefaultInstance') = 4 then
begin
VSTfüllen;
TAufDienstWarten.Enabled := false;
TTimeOutDienst.Enabled := false;
end;
end;
//Timer 2 Datenbank wird als nicht geöffnet angegeben. TimeOut Fehler
procedure TForm1.TTimeOutDienstTimer(Sender: TObject);
begin
ShowMessage('Der Datenbankdienst konnte nicht gestartet werden'+#13#10+'Bitte starten Sie das Programm neu');
TAufDienstWarten.Enabled := False;
TTimeOutDienst.Enabled := False;
end;
//VSTFüllen wird nur bei gestartetem Dienst über Timer1 ausgeführt, jedoch hier nochmal die Abrage, falls die Funktion
//später irgendwann nochmal von einer anderen Stelle im Programm aufgerufen wird.
procedure TForm1.VSTFüllen;
var
Daten : TOMB256PLUS;
Count : Integer;
begin
if ServiceGetStatus('', 'FirebirdGuardianDefaultInstance') = 4 then
begin
if not QryMB256PLUS.Active then
QryMB256PLUS.Open;
Habe das ganze dann ausprobiert, in dem ich den Dienst gestoppt habe und wieder gestartet habe. Funktioniert dann auch.
Aber beim Windows Start immer noch nicht. Ich vermute das ein anderer Dienst abgefragt wird, kann das sein ?