起動可能インターフェイスでの非スカラー型の使用
起動可能インターフェイスについて への移動
Web サービス アーキテクチャでは、Delphi と C++ の両方に対して次のスカラ型をサポートします。
Boolean |
ByteBool |
WordBool |
LongBool |
Char |
Byte |
ShortInt |
SmallInt |
Word |
Integer |
Cardinal |
LongInt |
Int64 |
Single |
Double |
Extended |
文字列 |
WideString |
Currency |
TDateTime |
Variant |
C++ では次のスカラ型がさらにサポートされます:
bool |
unsigned short |
_int64 |
char |
int |
AnsiString |
signed char |
unsigned |
float |
unsigned char |
long |
double |
short |
unsigned long |
long double |
起動可能インターフェイスでこれらのスカラ型を使用するとき、特別な操作は不要です。 ただし、その他の型を使用するプロパティまたはメソッドがインターフェイスに含まれる場合は、アプリケーションによりその型をリモート可能型レジストリに登録する必要があります。
起動可能インターフェイスには動的配列を使用できます。 動的配列はリモート可能型レジストリに登録する必要がありますが、インターフェイスの登録時に動的配列も自動的に登録されます。 リモート可能型レジストリは、コンパイラが生成した型情報から必要な情報を取得できます。
メモ: 同じ要素型を持つ動的配列を複数定義することはお勧めしません。 相互に暗黙にキャストできる透過型としてコンパイラに処理されるので、実行時型情報が識別されないからです。 その結果、リモート可能型レジストリは型を区別できなくなります。 これはサーバー側では問題になりませんが、クライアント側で不適切な型定義が使用される可能性があります。 代替の方法として、remotable 節を使って配列型を表すこともできます。
メモ: Types ユニットで定義した動的配列型は、自動的に登録されるので、そのために特別な登録コードをアプリケーションで追加する必要はありません。 動的配列型の 1 つの TByteDynArray は特に注意を要します。 他の動的配列型のように各配列要素を別個にマップせずに、'base64' ブロックのバイナリ データにマップするからです。
起動可能インターフェイスには、列挙型、および自動的にマーシャリングされるスカラ型の 1 つに直接マップされる型も使用できます。 動的配列型と同様に、これらの型もリモート可能型レジストリとともに自動的に登録されます。
静的配列、構造体やレコード、セット、インターフェイス、クラスなどの他の型の場合、リモート可能クラスに型をマップする必要があります。 リモート可能クラスとは、実行時型情報(RTTI:Runtime Type Information)を含むクラスです。 そしてインターフェイスは、対応する静的配列、構造体、レコード、セット、インターフェイス、またはクラスではなく、リモート可能クラスを使用しなければなりません。 作成するリモート可能クラスはすべて、リモート可能型レジストリに登録する必要があります。 その他の型と同様に、この登録処理も自動的に行われます。