
25.04.2011, 13:49
|
Прохожий
|
|
Регистрация: 13.04.2011
Сообщения: 22
Репутация: 10
|
|
Создание log файла в сервисе
Помогите не могу понять когда пишу программу в VCL все нормально работает, а когда переписываю в сервис перестает создаваться файл
Вот код сервиса
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs,
ExtCtrls, ComCtrls, StdCtrls;
type
TLurking_software = class(TService)
Timer1: TTimer;
procedure ServiceStart(Sender: TService; var Started: Boolean);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
function GetServiceController: TServiceController; override;
{ Public declarations }
end;
procedure AddToLog(s:string);
function GetFileSize(FileName: string): integer;
var
Service1: TLurking_software;
f : boolean;
implementation
{$R *.DFM}
procedure ServiceController(CtrlCode: DWord); stdcall;
begin
Service1.Controller(CtrlCode);
end;
function TLurking_software.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;
procedure TLurking_software.ServiceStart(Sender: TService;
var Started: Boolean);
begin
f:=true;
end;
procedure AddToLog(s:string);
var
fn:string;
F:TextFile;
begin
Fn:='D:\'+'log.txt';
if (GetFileSize(FN)div 1024)>=2 then
begin
assignFile(f,fn);
RenameFile('D:\'+'log.txt',
'D:\'+FormatDateTime('dd', Now)+ FormatDateTime('mm', Now)
+FormatDateTime('yyyy', Now)+FormatDateTime('hh', Now)+FormatDateTime('nn', Now)+
FormatDateTime('ss', Now));
end;
assignFile(f,fn);
if FileExists(fn) then Append(f) else Rewrite(f);
Writeln(f,s);
Flush(f);
Closefile(f);
end;
function GetFileSize(FileName: string): integer;
var F: TMemoryStream;
begin
try
F:=TMemoryStream.Create;
F.LoadFromFile(FileName);
Result:=F.Size;
finally
F.Free;
end;
end;
procedure TLurking_software.Timer1Timer(Sender: TObject);
begin
if f=true then
begin
AddToLog('test');
end;
end;
end.
|