Nicht-skalare Typen in aufrufbaren Interfaces verwenden

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Aufrufbare Interfaces im Überblick


Die Web-Services-Architektur unterstützt die folgenden skalaren Typen für Delphi und C++:

Boolean

ByteBool

WordBool

LongBool

Char

Byte

ShortInt

SmallInt

Word

Integer

Cardinal

LongInt

Int64

Single

Double

Extended

string

WideString

Currency

TDateTime

Variant


Die folgenden skalaren Typen werden für C++ unterstützt:

bool

unsigned short

_int64

char

int

AnsiString

signed char

unsigned

float

unsigned char

long

double

short

unsigned long

long double


Für die Verwendung dieser skalaren Typen in einem aufrufbaren Interface ist kein besonderes Vorgehen erforderlich. Enthält das Interface jedoch Eigenschaften oder Methoden, in denen andere Typen zum Einsatz kommen, muss die Anwendung diese Typen in der Remotable-Typ-Registrierung registrieren.

Es ist möglich, dynamische Arrays in aufrufbaren Interfaces zu verwenden. In diesem Fall müssen die Arrays in der Remotable-Typ-Registrierung erfasst werden, was allerdings automatisch beim Registrieren des Interface erfolgt. Die Remotable-Typ-Registrierung extrahiert aus den vom Compiler generierten Typeninformationen alle erforderlichen Informationen.

Hinweis: Sie sollten vermeiden, mehrere dynamische Array-Typen mit demselben Elementtyp zu definieren. Da der Compiler diese Typen als transparente Typen behandelt, die implizit ineinander umgewandelt werden können, unterscheidet er nicht zwischen deren Laufzeit-Typeninformationen. Daher kann die Remotable-Typ-Registrierung diese Typen nicht unterscheiden. Für Server stellt dies kein Problem dar, kann jedoch dazu führen, dass Clients die falsche Typdefinition verwenden. Alternativ können Sie stattdessen Remotable-Klassen zur Darstellung von Array-Typen verwenden.

Hinweis: Die in der Unit Types definierten dynamischen Array-Typen werden automatisch registriert, d. h., Ihre Anwendung muss keinen speziellen Registrierungscode dafür hinzufügen. Einer dieser Typen, TByteDynArray, sei hier besonders hervorgehoben, da er im Gegensatz zu den restlichen dynamischen Array-Typen die einzelnen Array-Elemente nicht separat, sondern an einen "base64"-Block binärer Daten zuweist.

Aufzählungstypen sowie Typen, die direkt einem skalaren Typ zugeordnet sind, für den automatisches Marshaling durchgeführt wird, können ebenfalls in aufrufbaren Interfaces verwendet werden. Auch diese Typen werden (wie die dynamischen Array-Typen) automatisch in der Remotable-Typ-Registrierung registriert.

Bei allen anderen Typen, wie etwa statischen Arrays, Strukturen, Records, Mengen, Interfaces und Klassen, müssen Sie den Typ einer Remotable-Klasse zuweisen. Unter einer Remotable-Klasse versteht man eine Klasse, die Laufzeit-Typinformationen (RTTI) enthält. Das Interface muss anschließend anstelle des entsprechenden statischen Arrays, der Struktur, des Records, der Menge, des Interface oder der Klasse die Remotable-Klasse verwenden. Alle erstellten Remotable-Klassen müssen in der Remotable-Typ-Registrierung registriert werden. Wie bei den anderen Typen erfolgt auch diese Registrierung automatisch.

Themen

Siehe auch