Userexit API
- Former user (Deleted)
- Dennis Balzuweit
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.