26 10月 2018
26 10月 2018
#import "TestLib.dll" //+------------------------------------------------------------------+ //| スクリプトプログラム開始関数 | //+------------------------------------------------------------------+ void OnStart() { int x=41; TestClass::Inc(x); Print(x); }TestClassのInc関数のC#コードは下記のとおりです。
public class TestClass { public static void Inc(ref int x) { x++; } }実行されると、スクリプトは42を返します。
struct MqlTick
{
datetime time; // 最後の価格更新時刻
double bid; // 現在の売値
double ask; // 現在の買値
double last; // 現在の最終約定値
ulong volume; // 現在の最終約定ボリューム
long time_msc; // 最後の価格更新時刻(ミリ秒単位)
uint flags; // ティックフラグ
double volume_real; // 高精度の現在の最終約定ボリュー
};
struct MqlBookInfo { ENUM_BOOK_TYPE type; // ENUM_BOOK_TYPE列挙体からの注文タイプ double price; // 価格 long volume; // ボリューム double volume_real; // 高精度ボリューム };
//+------------------------------------------------------------------+ //| デフォルトのパッキング | //+------------------------------------------------------------------+ struct A { char a; int b; }; //+------------------------------------------------------------------+ //| パッキングの指定 | //+------------------------------------------------------------------+ struct B pack(4) { char a; int b; }; //+------------------------------------------------------------------+ //| スクリプトプログラム開始関数 | //+------------------------------------------------------------------+ void OnStart() { Print("sizeof(A)=",sizeof(A)); Print("sizeof(B)=",sizeof(B)); } //+------------------------------------------------------------------+結論:
sizeof(A)=5 sizeof(B)=8構造体内のアラインメントについての詳細は、MSDNをご覧ください。
enum Main { PRICE_CLOSE_, PRICE_OPEN_ }; input Main Inp=PRICE_CLOSE; //+------------------------------------------------------------------+ //| 開始関数 | //+------------------------------------------------------------------+ void OnStart() { }コンパイラは下記の警告を表示します。
class X { }; void f(int) { } template<typename T> void a(T*) { new T(2); } // 以前はコンパイラがここでエラーを生成した template<typename T> void a() { f(0); } void OnInit() { a<X>(); }
ドキュメントを更新しました。