3.10 DM_CallRule

Mit Hilfe dieser Funktion können benannte Regeln mit Parametern von der Anwendung aufgerufen werden.

Hinweis

Bei Verwendung in Funktionen, welche Records als Parameter enthalten, beachten Sie bitte die Hinweise im Kapitel „Behandlung von String-Parametern“ und das Kapitel „Hinweis bei Verwendung von DM-Funktionen“ im Handbuch „C-Schnittstelle - Grundlagen“.

DM_Boolean DML_default DM_EXPORT DM_CallRule
(
  DM_ID ruleID,
  DM_ID objectID,
  DM_UInt argc,
  DM_Value *argv,
  DM_Value *retval,
  DM_Options options
)

Parameter

-> DM_ID ruleID

Dieser Parameter bezeichnet die Regel, die ausgeführt werden soll.

-> DM_ID objectID

Dieser Parameter entspricht dem this in der entsprechenden Regel, d.h. in der Regel wird für this das Objekt eingesetzt, das Sie hier angeben.

-> DM_UInt argc

In diesem Parameter wird die Anzahl der Regelparameter angegeben.

-> DM_Value *argv

In diesem Parameter werden die Parameter der Regeln als Feld von DM_Value-Strukturen angegeben. Die Länge dieses Parameters muss unbedingt gleich der beim argc-Parameter angegebenen Anzahl sein. Es sind maximal 16 Parameter erlaubt.

<- DM_Value *retval

Pointer auf eine DM_Value-Struktur, die als Rückgabewert ausgefüllt wird.

-> DM_Options options

Dieser Parameter wird z. Zt. noch nicht benutzt. Muss 0 sein.

Rückgabewert

TRUE

Regel konnte ausgeführt werden.

FALSE

Regel konnte nicht ausgeführt werden.

Beispiel

Aufruf einer Regel im Dialog. Die Regel ist dabei wie folgt definiert:

rule integer Callrule (integer I input)

{

    I := I + atoi(Et.content);

    Et.content := itoa(I);

    print I;

    return(I);

}

Das zugehörige C-Programm sieht wie folgt aus:

void DML_default DM_ENTRY CALLRULE __((DM_ID Regel))

{

  DM_Value argv;

  DM_Value retval;

 

  argv.type = DT_integer;

  argv.value.integer = 888;

  if (DM_CallRule (Regel, Regel, 1, &argv, &retval, 0))

    if (retval.type == DT_integer)

        printf(Erhaltener Wert: %ld", retval.value.integer);

 

}