AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Service debuggen

Offene Frage von "EagleData"
Ein Thema von EagleData · begonnen am 21. Jul 2005 · letzter Beitrag vom 22. Jul 2005
Antwort Antwort
Seite 3 von 3     123
Olli
(Gast)

n/a Beiträge
 
#21

Re: Service debuggen

  Alt 21. Jul 2005, 22:48
Zitat von EagleData:
Mist. Bin ich fast der einzige der mal nen Service programmiert?
Nein, bist du sicher nicht. Aber wie gesagt, ohne nähere Infos zu deiner verwendeten Klasse kannst du von mir nichts weiter verlangen
  Mit Zitat antworten Zitat
EagleData

Registriert seit: 16. Mai 2003
Ort: Leipzig
20 Beiträge
 
Delphi 5 Enterprise
 
#22

Re: Service debuggen

  Alt 21. Jul 2005, 22:57
was brauchst du denn noch? ich hab doch den gesamten Quelltext gepostet (1. Seite).
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#23

Re: Service debuggen

  Alt 21. Jul 2005, 23:13
Zitat von EagleData:
was brauchst du denn noch? ich hab doch den gesamten Quelltext gepostet (1. Seite).
Habe ich doch geschrieben: mindestens die Klassendeklaration, wenn schon nicht die komplette Unit. Die Unit solltest du aber nicht hier posten, weil das Probleme mit Borland geben könnte. Also lieber per PN schicken. Wird dann aber frühestens morgen bei mir.
  Mit Zitat antworten Zitat
EagleData

Registriert seit: 16. Mai 2003
Ort: Leipzig
20 Beiträge
 
Delphi 5 Enterprise
 
#24

Re: Service debuggen

  Alt 22. Jul 2005, 08:16
welche Unit meinst du denn? Ich hab den kompletten Quelltext der Unit von meinem Service doch schon gepostet.
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#25

Re: Service debuggen

  Alt 22. Jul 2005, 09:43
@Olli: Die Unit SvcMgr ist von Borland!

Zum Prinzip:

Delphi geht davon aus, dass der Thread so lange läuft, bis der Dienst angehalten/beendet wird.

Also solltest du keinen Timer verwenden sondern einfach eine Endlosschleife, in der du mit Sleep oder WaitForSinlgeObject/WaitForMultipleObjects auf das nächste Ereignis wartest.

[jetzt muss ich erst noch ein bisschen lesen...]

Also: du packst einfach alles in OnExecute, in der Art:
Delphi-Quellcode:
procedure TService2.ServiceExecute(Sender: TService);
begin
  while not Terminated do
  try
    AssignFile(txt_logfile, 'sensor.log');
    Append(txt_logfile);
    DateSeparator:='/';
    Writeln(txt_logfile, FormatDateTime('yyyy/mm/dd hh:nn:ss',Now));
    Flush(txt_logfile);
    CloseFile(txt_logfile);

    Sleep(1000);
    ServiceThread.ProcessRequests(False);
  except
  end;
end;
Volker
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#26

Re: Service debuggen

  Alt 22. Jul 2005, 10:00
Zitat von Flocke:
@Olli: Die Unit SvcMgr ist von Borland!
Weiß ich. Bringt mir nur nix, wenn ich sie nicht habe um zu helfen.

Zitat von Flocke:
DelphiWindows geht davon aus, dass der Thread so lange läuft, bis der Dienst angehalten/beendet wird.


Zitat von Flocke:
Also: du packst einfach alles in OnExecute, in der Art:
Siehste, und genau diese Information hat mir gefehlt. Deswegen habe ich oben Rätselraten müssen.
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#27

Re: Service debuggen

  Alt 22. Jul 2005, 10:13
Zitat von Olli:
Zitat von Flocke:
DelphiWindows geht davon aus, dass der Thread so lange läuft, bis der Dienst angehalten/beendet wird.
Das meinte ich nicht!

Was ich eigentlich meinte ist: Delphi geht davon aus, dass du den (speziell dafür erstellten) TServiceThread in OnExecute so lange beschäftigst, bis der Dienst angehalten/beendet wird (Property Terminated).
Volker
  Mit Zitat antworten Zitat
s14

Registriert seit: 15. Mai 2003
Ort: München
251 Beiträge
 
Delphi 7 Architect
 
#28

Re: Service debuggen

  Alt 22. Jul 2005, 10:21
Ich weiß nicht ob es hilft, mir ist aber noch dunkel in Erinnerung, dass Delphi5 Probleme mit Diensten hat.
Probier mal folgendes in der Projektdatei:

Delphi-Quellcode:
procedure BreakProcessSecurity; // (;-P)
var SD: PSECURITY_DESCRIPTOR;
begin
    GetMem(SD,SECURITY_DESCRIPTOR_MIN_LENGTH);
    if not InitializeSecurityDescriptor(SD,SECURITY_DESCRIPTOR_REVISION) then RaiseLastWin32Error;
    if not SetKernelObjectSecurity(GetCurrentProcess,DACL_SECURITY_INFORMATION,SD) then RaiseLastWin32Error;
    FreeMem(SD);
end;

begin
    BreakProcessSecurity;
    Application.Initialize;
    ............
Die Units Windows und SysUtils müssen noch in die Uses - Klausel.

Der Tipp ist noch aus dem Jahr 2000
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 10:09 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