nooo nada de ventanas ni nada es un servicio!
ahora voy intentar postear el codigo yso delphi 6, ha otra cosa como se hace para instalarlo?
![Confused](http://www.clubdelphi.com/foros/images/smilies/confused.gif)
Bueno todo el codigo completo!!!! yo creo que no tiene ningun error. porque lo probe bajandole el tiempo al timer y funciona todo ok!! pero a ese tiempo se cierra!!!
una PERSONA DEL FORO me hizo unas modificaciones y el de el funciona.. todabia no lo he visto.. pero quiero saber mi error.. y despues como hago apara instalarlo!! saludos
Código:
unit CompactRep;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs,
ExtCtrls,zip, registry, JRO_TLB;
type
TCompactarYreparar = class(TService)
TimerSql: TTimer;
procedure TimerSqlTimer(Sender: TObject);
procedure ServiceBeforeInstall(Sender: TService);
procedure ServiceStart(Sender: TService; var Started: Boolean);
procedure ServiceStop(Sender: TService; var Stopped: Boolean);
private
{ Private declarations }
public
function GetServiceController: TServiceController; override;
function LeerPath:String;
function Zipear:boolean;
procedure reparar(ruta:string);
{ Public declarations }
end;
var
CompactarYreparar: TCompactarYreparar;
implementation
{$R *.DFM}
procedure ServiceController(CtrlCode: DWord); stdcall;
begin
CompactarYreparar.Controller(CtrlCode);
end;
function TCompactarYreparar.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;
procedure TCompactarYReparar.TimerSqlTimer(Sender: TObject);
begin
zipear; //esto va adentro del if!!!!
if (formatdatetime('dddd',now)='Domingo')and(formatdatetime('hh:mm AM/PM',now)='02:00 AM') then
begin
end;
end;
function TCompactarYreparar.LeerPath:string;
Var
Registry:TRegistry;
begin
Registry:=TRegistry.Create;
Registry.RootKey:=HKEY_LOCAL_MACHINE;
if Registry.OpenKey('Software\Radio Frecuencia',False) then
Result:=Registry.ReadString('Path');
Registry.Free;
end;
function TCompactarYreparar.Zipear: boolean;
var Zip:TZip;
ruta:String;
begin
TRY
ruta:=LeerPath;
reparar(ruta);
if Not DirectoryExists(ruta + 'BackUp\') then
CreateDir(ruta + 'BackUp\');
Zip:=TZip.create(nil);
zip.FileSpecList.Add(ruta + 'Base.mdb');
zip.Filename:=ruta + 'BackUp\' + FormatDateTime('DDMM_hhmm',now)+'.ZIP';
zip.Add;
if FileExists(ruta + 'Base.mdb') then
DeleteFile(ruta + 'Base.mdb');
CopyFile(pchar(ruta + 'basenueva.mdb'),Pchar(ruta+'Base.mdb'),false);
if FileExists(ruta+'basenueva.mdb') then
DeleteFile(ruta+'basenueva.mdb');
result:=TRUE;
EXCEPT
REsult:=FALSE
END;
end;
procedure TCompactarYreparar.reparar(ruta:string);
var
engine: IJetEngine;
src, dst, path: WideString;
begin
// Directio donde se encuentra
path :=ruta;
//src: Base de Datos existente con assword antiguo
src := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + path + 'base.mdb' +
';Jet OLEDB:Database Password=basepdt6146';
//dst: Base de Datos nueva con password cambiado
dst := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + path + 'basenueva.mdb' +
';Jet OLEDB:Database Password=basepdt6146';
engine := CoJetEngine.Create();
engine.CompactDatabase(src, dst);
end;
procedure TCompactarYreparar.ServiceBeforeInstall(Sender: TService);
begin
application.Run;
end;
procedure TCompactarYreparar.ServiceStart(Sender: TService;
var Started: Boolean);
begin
application.Run;
end;
procedure TCompactarYreparar.ServiceStop(Sender: TService;
var Stopped: Boolean);
begin
stopped:=true;
end;
end.