Einzelnen Beitrag anzeigen

Digielm

Registriert seit: 2. Aug 2006
246 Beiträge
 
Delphi 5 Enterprise
 
#1

Delphi.net 2006 und TService

  Alt 29. Dez 2008, 14:28
Hallo Leute

also auf einen neuen Versuch mit meinem TService unter dot net.

Hier mal der Source

Projekt
Delphi-Quellcode:
program ConnectVCL;

{%DelphiDotNetAssemblyCompiler '$(SystemRoot)\microsoft.net\framework\v1.1.4322\System.dll'}
{%DelphiDotNetAssemblyCompiler '$(SystemRoot)\microsoft.net\framework\v1.1.4322\System.Data.dll'}
{%DelphiDotNetAssemblyCompiler '$(SystemRoot)\microsoft.net\framework\v1.1.4322\System.Drawing.dll'}
{%DelphiDotNetAssemblyCompiler '$(SystemRoot)\microsoft.net\framework\v1.1.4322\System.XML.dll'}
{%DelphiDotNetAssemblyCompiler 'c:\programme\gemeinsame dateien\borland shared\bds\shared assemblies\4.0\Borland.Vcl.dll'}
{%DelphiDotNetAssemblyCompiler 'c:\programme\gemeinsame dateien\borland shared\bds\shared assemblies\4.0\Borland.Delphi.dll'}
{%DelphiDotNetAssemblyCompiler 'c:\programme\gemeinsame dateien\borland shared\bds\shared assemblies\4.0\Borland.VclRtl.dll'}
{%DelphiDotNetAssemblyCompiler '..\Borland.Data.Mssql.dll'}
{%DelphiDotNetAssemblyCompiler '..\cc_LicDec.dll'}
{%DelphiDotNetAssemblyCompiler '..\ERPConnect.dll'}

uses
  windows,
  SvcMgr,
  System.Reflection,
  System.Runtime.CompilerServices,
  System.Runtime.InteropServices,
  service in 'service.pas{Service1: TService};

{$R *.res}

{$REGION 'Programm/Assemblierungs-Informationen'}
//
// Die allgemeinen Assemblierungsinformationen werden durch die folgenden
// Attribute gesteuert. Ändern Sie die Attributwerte, um die zu einer
// Assemblierung gehörenden Informationen zu modifizieren.
//

[assembly: AssemblyDescription('')]
[assembly: AssemblyConfiguration('')]
[assembly: AssemblyCompany('')]
[assembly: AssemblyProduct('')]
[assembly: AssemblyCopyright('')]
[assembly: AssemblyTrademark('')]
[assembly: AssemblyCulture('')]

// Der Delphi-Compiler steuert AssemblyTitleAttribute via ExeDescription.
// Sie können dies in der IDE über Projekt/Optionen festlegen.
// Wenn Sie das Attribut AssemblyTitle wie unten gezeigt manuell festlegen,
// wird die IDE-Einstellung überschrieben.
// [assembly: AssemblyTitle('')]


//
// Die Versionsinformation einer Assemblierung enthält die folgenden vier Werte:
//
// Hauptversion
// Nebenversion
// Build-Nummer
// Revision
//
// Sie können alle vier Werte festlegen oder für Revision und Build-Nummer die
// Standardwerte mit '*' - wie nachfolgend gezeigt - verwenden:

[assembly: AssemblyVersion('1.0.*')]

//
// Zum Signieren einer Assemblierung müssen Sie einen Schlüssel angeben. Weitere Informationen
// über das Signieren von Assemblierungen finden Sie in der Microsoft .NET Framework-Dokumentation.
//
// Mit den folgenden Attributen steuern Sie, welcher Schlüssel für die Signatur verwendet wird.
//
// Hinweise:
// (*) Wenn kein Schlüssel angegeben wird, ist die Assemblierung nicht signiert.
// (*) KeyName verweist auf einen Schlüssel, der im Crypto Service Provider
// (CSP) auf Ihrem Rechner installiert wurde. KeyFile verweist auf eine
// Datei, die einen Schlüssel enthält.
// (*) Wenn sowohl der KeyFile- als auch der KeyName-Wert angegeben ist, wird
// die folgende Verarbeitung durchgeführt:
// (1) Wenn KeyName in dem CSP gefunden wird, wird dieser Schlüssel verwendet.
// (2) Wenn KeyName nicht, aber KeyFile vorhanden ist, wird der Schlüssel
// in KeyFile im CSP installiert und verwendet.
// (*) Ein KeyFile können Sie mit dem Utility sn.exe (Starker Name) erzeugen.
// Der Speicherort von KeyFile sollte relativ zum Projektausgabeverzeichnis
// %Projektverzeichnis%\bin\<Konfiguration> angegeben werden. Wenn sich Ihr
// KeyFile z.B. im Projektverzeichnis befindet, würden Sie das Attribut
// würden Sie das Attribut AssemblyKeyFile folgendermaßen festlegen:
// [assembly: AssemblyKeyFile('..\\..\\mykey.snk')]
// (*) Verzögerte Signatur ist eine erweiterte Option; nähere Informationen
// dazu finden Sie in der Microsoft .NET Framework-Dokumentation.
//
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile('')]
[assembly: AssemblyKeyName('')]


//
// Verwenden Sie untenstehende Attribute, um die COM-Sichtbarkeit Ihrer Assembilierung zu steuern.
// Als Vorgabe ist die ganze Assemblierung für COM sichtbar. Das Setzen von ComVisible auf false
// ist die empfohlene Vorgabe für Ihre Assemblierung. Um eine Klasse und Interface für COM sichtbar
// zu machen, setzen Sie ComVisible für jeden Einzelnen auf true. Es wird auch empfohlen ein
// Guid-Attribut hinzuzufügen.
//

[assembly: ComVisible(False)]
//[assembly: Guid('')]
//[assembly: TypeLibVersion(1, 0)]
{$ENDREGION}

[STAThread]
begin
// Application.Initialize;
// Application.CreateForm(TERPConnect, ERPConnect);
// Application.Run;
  if not Application.DelayInitialize or Application.Installing then
    Application.Initialize;
  Application.CreateForm(TService1, Service1);
  // Application.CreateForm(TERPConnect, ERPConnect);
  Application.Run;

end.
und hier meinen Service

Delphi-Quellcode:
unit service;

interface

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

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

var
  Service1: TService1;

implementation

{$R *.DFM}

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

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

end.
Problem das ich habe das ich eine Compilermeldung bekomme

die hier : procedure ServiceController(CtrlCode: DWord); stdcall; wäre nicht nach dem ILCODE-Konvention

lasse ich den stdcall weg dann läß es sich kompilieren aber beimn Install bekomme ich die Meldung das der Objectverweis nicht auf eine Objectinstanz festgelegt wurde.

wer kann mir helfen.
  Mit Zitat antworten Zitat