Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Service Anwedung unter Win Xp SP2 D7 pro (https://www.delphipraxis.net/52122-service-anwedung-unter-win-xp-sp2-d7-pro.html)

Bob68 24. Aug 2005 07:03


Service Anwedung unter Win Xp SP2 D7 pro
 
Hallo zusammen
ich versuche nun seit Stunden einen Service Anwendung unter Win XP SP2 am laufen zu bekommen.
Benutze D7 Pro 4.453.
Ich bekomme den Service installiert und auch gestartet, nur läuft der Service nicht los.

Delphi-Quellcode:
UNIT Unit2;

INTERFACE

USES
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

TYPE
  TForm2 = CLASS(TForm)
    Timer1: TTimer;
    PROCEDURE Timer1Timer(Sender: TObject);
    PROCEDURE FormCreate(Sender: TObject);
    PROCEDURE WriteLog(sText: STRING);
  PRIVATE
    PROCEDURE status4;
    { Private-Deklarationen }
  PUBLIC
    { Public-Deklarationen }
  END;

VAR
  Form2: TForm2;

IMPLEMENTATION

{$R *.dfm}

{ TForm2 }

PROCEDURE TForm2.status4;
BEGIN
    WriteLog('Test');
END;

PROCEDURE TForm2.Timer1Timer(Sender: TObject);
BEGIN
  status4;
END;

PROCEDURE TForm2.FormCreate(Sender: TObject);
BEGIN
  IF NOT timer1.Enabled THEN
    timer1.Enabled := True;
END;

procedure TForm2.WriteLog(sText: STRING);
VAR
  F: TextFile;
  s: STRING;
BEGIN
  s := 'Fehlerlog.log'; // das kann nach Belieben angepasst werden
  IF FileExists(s) THEN
    BEGIN
      AssignFile(F, s);
      Append(F);
      Writeln(F, DateTimeToStr(Now) + ' : ' + sText);
    END
  ELSE
    BEGIN
      AssignFile(F, s);
      Rewrite(F);
      Writeln(F, DateTimeToStr(Now) + ' : ' + sText + ' (neu)');
    END;

  CloseFile(F);

end;

END.
Wie ihr seht was ganz Simples, kann mir jemand helfen oder gibt es Probleme mit Win XP SP2?

Danke Bob68

Bernhard Geyer 24. Aug 2005 07:13

Re: Service Anwedung unter Win Xp SP2 D7 pro
 
Also ich sehr hier nichts was mit einer Service-Anwendung zu tun hätte.
Du hast ein 0815-Formular angelegt.

Wie hast Du denn den Service "definiert"/angelegt? Hoffentlich als Service-Anwendung. Und dort wird doch gleich eine Service-Klasse auch mit angelegt (TService1 = class(TService))

Bob68 24. Aug 2005 08:00

Re: Service Anwedung unter Win Xp SP2 D7 pro
 
Hallo,
ich habe eine Service Anwedung erstellet und dann eine Form hinzugefügt.
Hier ist die erste Unit vom Service:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs;

type
  TS_Packloesch = class(TService)
  private
    { Private-Deklarationen }
  public
    function GetServiceController: TServiceController; override;
    { Public-Deklarationen }
  end;

var
  S_Packloesch: TS_Packloesch;

implementation

{$R *.DFM}

procedure ServiceController(CtrlCode: DWord); stdcall;
begin
  S_Packloesch.Controller(CtrlCode);
end;

function TS_Packloesch.GetServiceController: TServiceController;
begin
  Result := ServiceController;
end;

end.
So habe ich es immer gemacht und es hat sonst immer geklappt(unter NT).
Danke Bob68

Bernhard Geyer 24. Aug 2005 08:24

Re: Service Anwedung unter Win Xp SP2 D7 pro
 
Ok.

Was meinst du mit: "..., nur läuft der Service nicht los." genau?
Wird kein Formular angezeigt? Wird die Logdatei nicht geschrieben? ...

Bob68 24. Aug 2005 08:29

Re: Service Anwedung unter Win Xp SP2 D7 pro
 
Hallo,
genau die logdatei wird nicht erstellt als ob der timer nicht auslöst.
Habe nun mal alles in die erst Service Unit gesteckt und klappt leider auch nicht.
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs,
  ExtCtrls;

type
  Tstest = class(TService)
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure ServiceCreate(Sender: TObject);
  private
   PROCEDURE WriteLog(sText: STRING);
   procedure start;
    { Private-Deklarationen }
  public
    function GetServiceController: TServiceController; override;
    { Public-Deklarationen }
  end;

var
  stest: Tstest;

implementation

{$R *.DFM}

procedure ServiceController(CtrlCode: DWord); stdcall;
begin
  stest.Controller(CtrlCode);
end;

function Tstest.GetServiceController: TServiceController;
begin
  Result := ServiceController;
end;

procedure Tstest.start;
begin
  WriteLog('Test');
end;

procedure Tstest.WriteLog(sText: STRING);
VAR
  F: TextFile;
  s: STRING;
BEGIN
  s := 'Fehlerlog.log'; // das kann nach Belieben angepasst werden
  IF FileExists(s) THEN
    BEGIN
      AssignFile(F, s);
      Append(F);
      Writeln(F, DateTimeToStr(Now) + ' : ' + sText);
    END
  ELSE
    BEGIN
      AssignFile(F, s);
      Rewrite(F);
      Writeln(F, DateTimeToStr(Now) + ' : ' + sText + ' (neu)');
    END;

  CloseFile(F);


end;

procedure Tstest.Timer1Timer(Sender: TObject);
begin
start;
end;

procedure Tstest.ServiceCreate(Sender: TObject);
begin
if not Timer1.Enabled then
 Timer1.Enabled := True;
end;

end.
Der Timer steht auf 4000 aber die Logdatei wird nicht geschrieben.

Danke Bob68

Bernhard Geyer 24. Aug 2005 08:36

Re: Service Anwedung unter Win Xp SP2 D7 pro
 
Gib die Logdatei mal mit kompletten Pfad an, damit sie nicht irgendwo geschrieben wird.

Bob68 24. Aug 2005 09:30

Re: Service Anwedung unter Win Xp SP2 D7 pro
 
Danke mit kompletter Pfadangabe gehts:)
Bob68
:lol: :lol: :lol: :lol:


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