Autor Beitrag
sunshineh
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44



BeitragVerfasst: Mi 22.10.08 14:31 
Hallo

ich habe ein deprimierendes Problem.

Ich nutze Delphi 2007 und Windows XP und habe meine Anwendung als in einer VLC-Anwendung fertig geschrieben und getestet. Es funktioniert alles! Natürlich habe ich darauf geachtet, dass über die VLC-Oberfläche keine Anwendereingaben gemacht werden und auch nicht ausgegeben wird! Der Input für die Anwendung ist ein ini-File und der Output mehrere txt-Dateien.

Als alles gegangen ist, habe ich eine Service-Anwendung angelegt und meine Funktionalität in diese Service-Anwendung übertragen. Da passiert aber gar nichts, es wird keine Datei angelegt, nichts reingeschrieben, einfach gar nicht. Ich habe auch Interaktive auf true gesetzt und den Beispielcode von einem funktionierenden Beispielprogramm aus dem Internet reinkopiert, aber auch das geht bei mir nicht.

Ich weiß mir nun nicht mehr zu helfen, weiß nicht, was ich noch testen kann :cry:

Weiß wer von euch vielleicht einen Rat?!

Lieben Gruß,

sunshineh
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mi 22.10.08 14:48 
Ohne Code, wie du in die Datei speicherst, können wir da wohl nicht viel machen.

Aber meine Glaskugel sagt mir, dass du relative Pfade verwendest. Diese solltest du in absolute umschreiben, dann geht das.

_________________
PROGRAMMER: A device for converting coffee into software.
sunshineh Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44



BeitragVerfasst: Mi 22.10.08 14:59 
Danke, die Glaskugel hat leider nicht funktionier, ich hab schon absolute Pfäde.
Aber hier ist das Beispiel, das ich mit verarbeitet habe:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
unit uMain; 

interface 

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

type 
  TTestservice = class(TService) 
    procedure ServiceStart(Sender: TService; var Started: Boolean); 
    procedure ServiceCreate(Sender: TObject); 
    procedure ServiceExecute(Sender: TService); 
    procedure ServiceDestroy(Sender: TObject); 
  private 
    { Private-Deklarationen } 
    LogFile: TStringList; 
  public 
    function GetServiceController: TServiceController; override
    { Public-Deklarationen } 
  end

var 
  Testservice: TTestservice; 

implementation 

{$R *.DFM} 

const LogFileName = 'c:\test\Service_log.txt'

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

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

procedure TTestservice.ServiceCreate(Sender: TObject); 
begin 
  LogFile:=TStringList.Create; 
end

procedure TTestservice.ServiceDestroy(Sender: TObject); 
begin 
  LogFile.Free; 
end

procedure TTestservice.ServiceExecute(Sender: TService); 
begin 
  while not Terminated do 
  begin 
    ServiceThread.ProcessRequests(False); 
    Sleep(5000); 
    LogFile.Add(DateTimeToStr(Now)+' OnExecute'); 
    LogFile.SaveToFile(LogFileName); 
  end
end

procedure TTestservice.ServiceStart(Sender: TService; var Started: Boolean); 
begin 
  LogFile.Add(DateTimeToStr(Now)+' Service gestartet'); 
  LogFile.SaveToFile(LogFileName); 
end

end.


und die anderen Dateien erzeuge ich so:

ausblenden Delphi-Quelltext
1:
2:
3:
 AssignFile(datei,'c:\test\Daten.txt');
  if FileExists('c:\test\Daten.txt'then Append(datei)
    else ReWrite(datei);


hab es schon versuch in die
procedure TTestservice.ServiceExecute(Sender: TService);und die
procedure TTestservice.ServiceStart(Sender: TService; var Started: Boolean);zu schreiben aber es passiert nichts.

Moderiert von user profile iconmatze: Delphi-Tags hinzugefügt
blaskito
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 63

Win2003, 2008, 2012, WinXP, Win7
Delphi 6 Pers.
BeitragVerfasst: Di 11.11.08 12:40 
Hallo,

ich hatte das gleiche Problem. Bei mir lag es an dem Benutzer unter dessen Kontext der Dienst lief. Der hatte schlicht und ergreifend nicht die notwendigen NTFS-Rechte auf den Ordner.

Vielleicht hilft's ja weiter.
Gruß aus dem Norden
blaskito