Script-Klassen

Deklaration

Die Entwicklung eigener Script-Klassen erfolgt in einer separaten Unit (auch Include benannt). Je Klasse ist eine eigene Unit erforderlich. Die Verwendung von Includes ist nur im C4 Umfeld möglich.

Eine Klassen-Unit wird durch die Compiler-Direktive {$CLASS TClassName} als solche gekennzeichnet.

Alle in der Klassen-Unit deklarierten globalen Variablen, werden als Klassen-Properties behandelt und können so verwendet werden. Alle Funktionen und Prozeduren sind Klassen-Methoden. Der Globale Code Bereich (begin end – Block) dient als Initializer.

Hier eine beispielhafte Klassendeklaration (Include-Name im c4: „Example“ bzgl. der Uses Einbindung):

// ==================================================================================
{$CLASS TExampleClass}

// ==================================================================================
// TExampleClass properties
// ==================================================================================
var
  TestMode : Boolean;
  Test     : Integer;

// ==================================================================================
// TExampleClass methods
// ==================================================================================
procedure Init;
begin
end;

// ----------------------------------------------------------------------------------
function Execute(Start : Boolean) : Boolean;
begin
  Result := False;
end;

// ==================================================================================
// TExampleClass initializer
// ==================================================================================
begin
  TestMode := False;
  Test     := 0;
end;

Verwendung

Um eine Script-Klasse verwenden zu können muss Sie dem Compiler bekannt gemacht werden. Dies geschieht in zwei Schritten:

  1. Aufnahme der Klasse als Include am entsprechenden Script
  2. Deklaration im Script über Uses Anweisung

Beispiel:

uses
  Example;

var
  ExampleClass : TExampleClass;
begin
  ExampleClass := TMyExampleClass.Create;
  try
    ExampleClass.TestMode := true;
    ExampleClass.Init;
    ExampleClass.Execute(true);
  finally
    ExampleClass.Free;
  end;
end; 

Einschränkungen

Script-Klassen verfügen über keinen Destruktor. Diese muss selbst in Form einer aufzurufenden Funktion implementiert werden.