Entwickler-Ecke
Windows API - Service schreibt kein File und ich weiß nicht warum?!
sunshineh - Mi 22.10.08 14:31
Titel: Service schreibt kein File und ich weiß nicht warum?!
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 - 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.
sunshineh - 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:
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 LogFile: TStringList; public function GetServiceController: TServiceController; override; 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:
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
matze: Delphi-Tags hinzugefügt
blaskito - 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!