CStruct(CObject)
導入されたバージョン | 0.90β
擬似的な構造体を生成し、保持するクラスです。 Spinelには構造体の概念がないため、このクラスを使って操作します。 また、このクラスを継承して構造体クラスを宣言することで、あたかも構造体を宣言したかのようにクラスを操作できます。 使用例 CStructクラスを使って構造体を宣言する方法です。 CStructを継承し、メンバ名をプロパティとして実装します。 以下の例は構造体PointAPIの宣言です。
宣言コード
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    class PointAPI(CStruct){
      private:
        function SetX(Val)    { Super.WriteInt(Val,0); }
        function SetY(Val)    { Super.WriteInt(Val,4); }
        function GetX()       { Return Super.ReadInt(0); }
        function GetY()       { Return Super.ReadInt(4); }
        function SetValue(Val){ Super.Value = Val; }
        function GetValue()   { Return Super.Value; }
      public:
        constructor Create(){
          Super.GetMem(8);
        }
        property X(GetX,SetX);
        property Y(GetY,SetY);
        property Value(GetValue,SetValue);
    }
このように宣言することで、XとYには自由にアクセスすることが出来ます。 使用するには以下のようにします。 GetCursorPosはWindowsAPIで、カーソル座標を得る命令です。
実行コード
    1
    2
    3
    4
    5
    6
    7
    8
    //DLLの宣言
    external "USER32";
    import Int GetCursorPos(PChar);

    Pos = PointAPI.Create; //生成
    GetCursorPos(Pos.Value);
    Mes("MousePos:" + Pos.X + "," + Pos.Y);
    Pos.Free;
このように、クラスと同等に扱うことが出来ます。 値を取得する場合は、Obj.Valueを使用します。ValueはCStructから継承してください。
コンストラクタ・メソッド・プロパティ概要
constructor | Create | インスタンスを生成します。
function | ReadInt(Pos) | Posバイト目をInt形式で読み出します。
function | ReadByte(Pos) | Posバイト目をByte形式で読み出します。
function | ReadIWord(Pos) | Posバイト目をWord形式で読み出します。
function | ReadDWord(Pos) | Posバイト目をDWORD形式で読み出します。
function | ReadChar(Pos) | Posバイト目をChar形式で読み出します。
function | ReadPChar(Pos) | Posバイト目をPChar形式で読み出します。
function | WriteInt(Val,Pos) | ValをPosバイト目にInt形式で書き込みます。
function | WriteByte(Val,Pos) | ValをPosバイト目にByte形式で書き込みます。
function | WriteWord(Val,Pos) | ValをPosバイト目にWord形式で書き込みます。
function | WriteDWord(Val,Pos) | ValをPosバイト目にDWORD形式で書き込みます。
function | WriteChar(Val,Pos) | ValをPosバイト目にChar形式で書き込みます。
function | WritePChar(Val,Pos) | ValをPosバイト目にPChar形式で書き込みます。
function | GetMem(Size) | Sizeバイトメモリを確保します。
クラス CObject からの継承
static property | ClassName | (読)クラス名を返します。
function | Free | インスタンスを解放します。
詳細
CStruct.Create コンストラクタです。
サンプルコード
    1
    2
    Obj = CStruct.Create;
    Obj.Free;//開放する
CStruct.ReadInt(Pos) Posバイト目をInt形式で読み出します。
サンプルコード
    1
    2
    3
    4
    Obj = CStruct.Create;
    Obj.GetMem(16);
    v = Obj.ReadInt(0);//取得
    Obj.Free;
CStruct.ReadByte(Pos) Posバイト目をByte形式で読み出します。
サンプルコード
    1
    2
    3
    4
    Obj = CStruct.Create;
    Obj.GetMem(16);
    v = Obj.ReadByte(0);//取得
    Obj.Free;
CStruct.ReadWord(Pos) Posバイト目をWord形式で読み出します。
サンプルコード
    1
    2
    3
    4
    Obj = CStruct.Create;
    Obj.GetMem(16);
    v = Obj.ReadWord(0);//取得
    Obj.Free;
CStruct.ReadDWord(Pos) Posバイト目をDWORD形式で読み出します。
サンプルコード
    1
    2
    3
    4
    Obj = CStruct.Create;
    Obj.GetMem(16);
    v = Obj.ReadDWord(0);//取得
    Obj.Free;
CStruct.ReadChar(Pos) Posバイト目をChar形式で読み出します。
サンプルコード
    1
    2
    3
    4
    Obj = CStruct.Create;
    Obj.GetMem(16);
    v = Obj.ReadChar(0);//取得
    Obj.Free;
CStruct.ReadPChar(Pos) Posバイト目をPChar(Char*)形式で読み出します。 PCharとは、Charのポインタ型です。
サンプルコード
    1
    2
    3
    4
    Obj = CStruct.Create;
    Obj.GetMem(16);
    v = Obj.ReadDWord(0);//取得
    Obj.Free;
CStruct.WriteInt(Val,Pos) ValをPosバイト目にInt形式で書き込みます。
サンプルコード
    1
    2
    3
    4
    Obj = CStruct.Create;
    Obj.GetMem(16);
    Obj.WriteInt(100,0);//書き込み
    Obj.Free;
CStruct.WriteByte(Val,Pos) ValをPosバイト目にByte形式で書き込みます。
サンプルコード
    1
    2
    3
    4
    Obj = CStruct.Create;
    Obj.GetMem(16);
    Obj.WriteByte(1,0);//書き込み
    Obj.Free;
CStruct.WriteWord(Val,Pos) ValをPosバイト目にWord形式で書き込みます。
サンプルコード
    1
    2
    3
    4
    Obj = CStruct.Create;
    Obj.GetMem(16);
    Obj.WriteWord(100,0);//書き込み
    Obj.Free;
CStruct.WriteDWord(Val,Pos) ValをPosバイト目にDWORD形式で書き込みます。
サンプルコード
    1
    2
    3
    4
    Obj = CStruct.Create;
    Obj.GetMem(16);
    Obj.WriteDWord(100,0);//書き込み
    Obj.Free;
CStruct.WriteChar(Val,Pos) ValをPosバイト目にChar形式で書き込みます。
サンプルコード
    1
    2
    3
    4
    Obj = CStruct.Create;
    Obj.GetMem(16);
    Obj.WriteChar("a",0);//書き込み
    Obj.Free;
CStruct.WritePChar(Val,Pos) ValをPosバイト目にPChar(Char*)形式で書き込みます。
サンプルコード
    1
    2
    3
    4
    Obj = CStruct.Create;
    Obj.GetMem(16);
    Obj.WritePChar("name",0);//書き込み
    Obj.Free;
CStruct.GetMem(Size) 所持するValueにSizeバイトを確保します。
サンプルコード
1 2 3 |
    Obj = CStruct.Create;
    Obj.GetMem(16);//16バイト確保
    Obj.Free;
index

プログラム言語「Spinel」
Copyright © 2005 - gabyou All Rights Reserved.
NOTES Software.