Userexit API

Funktionscodes

Folgende Funktionscodes werden von der API unterstützt.

Funktion

Code

Beschreibung

ccfCode_UX_Initialize

100

Initialisierung der Engine

ccfCode_UX_GetVersion

105

Abfrage der Engine-Version

ccfCode_UX_SetConfig

110

Übergabe der Konfigurationsdaten als Stream

ccfCode_UX_SetParameter

115

Übergabe der Konfigurationsparameter

ccfCode_UX_SetOEMInfos

116

Übergabe der OEM Informationen

ccfCode_UX_NewCall

200

Vorbereitung eines neuen Aufrufs

ccfCode_UX_SetData

300

Übergabe der Indexdaten aus der Anwendung

ccfCode_UX_Execute

400

Ausführung

ccfCode_UX_GetResultCount

410

Ergebnismenge abfragen

ccfCode_UX_GetData

500

Abholen der Daten für die Anwendung

ccfCode_UX_CallCfgDlg

800

Aufruf des Konfigurationsdialogs

ccfCode_UX_GetConfig

850

Abruf der Konfigurationsdaten als Stream

ccfCode_UX_Finalize

900

Freigabe der Engine

Funktionsdeklaration

function ccWideUserexit( fCode   : LongInt;
                         fData   : PWideChar;
                         fSize   : LongInt;
                         Msg     : PWideChar ) : LongInt;

Mit der Übergabe eines Funktionscodes in der Variable fCode wird die entsprechende Funktion ausgewählt (s. Tab.).

Im Erfolgsfall wird im Funktionsresult 0 zurückgegeben. Im Fehlerfall ein Wert von -1 (grundsätzlich <> 0). Der Returncode -3 zeigt ein Lizenzproblem an.

Die Variable Msg nimmt einen Meldungstext auf welcher im Problemfall durch die aufrufende Anwendung im entsprechenden Logfile oder als Dialog protokolliert wird.

fData nimmt alle übrigen Übergabedaten, wie z.B. die Indexfelder, auf. Zugehörig muss immer fSize mit der entsprechenden Größe von fData gesetzt werden.

Delphi Codeframe

Auf Basis von Delphi XE5 bzw. Lazarus.

library ccExampleUserexit;

// ================================================================
{$R *.res}
{$WARN UNIT_PLATFORM OFF} 
{$WARN SYMBOL_PLATFORM OFF}

// ================================================================
uses
  Classes;

// ================================================================
const
  Version = '1.0.0';

// ----------------------------------------------------------------
const
  ccfCode_UX_Initialize      = 100;
  ccfCode_UX_GetVersion      = 105;
  ccfCode_UX_SetConfig       = 110;
  ccfCode_UX_SetParameter    = 115;
  ccfCode_UX_SetOEMInfos     = 116;
  ccfCode_UX_NewCall         = 200;
  ccfCode_UX_SetData         = 300;
  ccfCode_UX_Execute         = 400;
  ccfCode_UX_GetData         = 500;
  ccfCode_UX_CallCfgDlg      = 800;
  ccfCode_UX_GetConfig       = 850;
  ccfCode_UX_Finalize        = 900;

// ----------------------------------------------------------------
const
  ccfCode_FB_Common          = 100;

// ================================================================
// Unicode Interface
// ================================================================
function ccWideUserexit( fCode : LongInt;
                         fData : PWideChar;
                         fSize : LongInt;
                         Msg   : PWideChar ) : LongInt;

begin
  Result := 0;
  try
    case fCode of

      // ---------------------------------
      // Initialisierung
      // ---------------------------------
      ccfCode_UX_Initialize :
      begin
      end;

      // ---------------------------------
      // Get Version
      // ---------------------------------
      ccfCode_UX_GetVersion :
      begin
        strpcopy(fData,Version);
      end;

      // ---------------------------------
      // Konfiguration übergeben
      // ---------------------------------
      ccfCode_UX_SetConfig :
      begin
      end;

      // ---------------------------------
      // Parameter übergeben
      // ---------------------------------
      ccfCode_UX_SetParameter :
      begin
      end;

      // ---------------------------------
      // OEM Infos übergeben
      // ---------------------------------
      ccfCode_UX_SetOEMInfos :
      begin
      end;

      // ---------------------------------
      // Neuer Aufruf
      // ---------------------------------
      ccfCode_UX_NewCall :
      begin
      end;

      // ---------------------------------
      // Indexdaten übergeben
      // ---------------------------------
      ccfCode_UX_SetData :
      begin
      end;

      // ---------------------------------
      // Ausführen
      // ---------------------------------
      ccfCode_UX_Execute :
      begin
      end;

      // ---------------------------------
      // Daten abrufen
      // ---------------------------------
      ccfCode_UX_GetData :
      begin
      end;

      // ---------------------------------
      // Exportservice schliessen
      // ---------------------------------
      ccfCode_UX_Finalize :
      begin
      end;
      // ---------------------------------
      // Konfigurationsdialog öffnen
      // ---------------------------------
      ccfCode_UX_CallCfgDlg :
      begin
      end;

      // ---------------------------------
      // Konfiguration abfragen
      // ---------------------------------
      ccfCode_UX_GetConfig :
      begin
      end;

    end;
  except
    on e: exception do
    begin
      Result := -1;
      strpcopyw(msg,'Process exception (' + e.message + ')');
    end;
  end;
end;

// ================================================================
// clarc final builder Engine Test Function
// ================================================================
function ccBuildTest( fCode   : LongInt;
                      fData   : PWideChar;
                      Msg     : PWideChar ) : LongInt;
begin
  Result := -1;

  case fCode of
    // ---------------------------------
    // Common
    // ---------------------------------
    ccfCode_FB_Common:
    begin
      // Test something...
      Result := 0;
    end;
  end;
end;

// ================================================================
Exports
  ccWideUserexit,
  ccBuildTest;

begin
end.