汎用クラスライブラリ - バグ、説明、質問、使用上の特徴、提案 - ページ 34

 
Edgar Akhmadeev:
同志毛沢東が言ったように、百花繚乱である。
uuidが一致するかな?

uuidは出力されません。ボードのシリアル番号のみ。経験上、SMBIOSはすべてのボードのシリアル番号を教えてくれませんが、uuidは常に存在し、ハードウェア解析ソフトウェア(HWiNFOなど)が教えてくれるものと一致します。ソーサラーシリアルナンバーバリアントがどのように機能するかは、確認が必要です。

 

UUIDを取得する方法を発見しました。

#define _WIN64  // Only for a 64-bit terminal!

#include <WbemCli.mqh>
//+-----------------------------------------------------------------------------------------------+
//| Script program start function                                                                 |
//+-----------------------------------------------------------------------------------------------+
void OnStart()
{
   HRESULT result = CoInitialize( 0 );
   if( result == S_OK ){
      lpWbemLocator pLoc;
      result = CoCreateInstance( CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, pLoc.mInterface );
      if( result == S_OK ){
         lpWbemServices pSvc;
         result = pLoc.ConnectServer( "root\\CimV2", "", "", "", pSvc );
         if( result == S_OK ){
            result = CoSetProxyBlanket( pSvc.mInterface, RPC_C_AUTHN_WINNT, RPC_C_AUTHZ_NONE, 0, RPC_C_AUTHN_LEVEL_CALL, RPC_C_IMP_LEVEL_IMPERSONATE, 0, EOAC_NONE );
            if( result == S_OK ){
               lpEnumWbemClassObject pEnumerator;
               // Получаем UUID.
               result = pSvc.ExecQuery( "SELECT * FROM Win32_ComputerSystemProduct", pEnumerator );
               if( result == S_OK ){
                  uint uReturn = 0;
                  while( result == S_OK ){
                     lpWbemClassObject pclsObj;
                     result = pEnumerator.Next( pclsObj, uReturn );
                     if( uReturn == 0 ){
                        result = S_OK;
                        break;
                     }
                     Variant vtProp;
                     result = pclsObj.Get( "UUID", vtProp );
                     if( result == S_OK ){
                        Print( "UUID", ": ", vtProp.toString() );
                     }
                     pclsObj.Release();
                  }
               }
               
            }
            pSvc.Release();
         }
         pLoc.Release();
      }
      CoUninitialize();
   }
   if( result != S_OK ){
      ushort shortArray[256];
      uint len = FormatMessageW( FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS, 0, result, Lcid, shortArray, 256, 0 );
      string strError = ShortArrayToString( shortArray );
      Print( strError );
   }
}
//+-----------------------------------------------------------------------------------------------+
 
Koldun Zloy:

オフトピックですが、せっかくなので。マーケットウォッチウィンドウと現在のオープンポジション/注文が 表示されているウィンドウを閉じましたか?

 
fxsaber:

オフトップですが、せっかくなので。マーケットウォッチウィンドウと現在のオープンポジション/注文が 表示されているウィンドウのクローズを行いましたか?

いいえ、そんなことはありません。

その窓の取っ手の取り方を知っているのでしょう。

WM_CLOSEメッセージを送ってみましたか?

 
Koldun Zloy:

いいえ、そうではありません。

この窓の取っ手の取り方、わかると思うんですけどね。

WM_CLOSEメッセージを送信してみましたか?

いろいろなバリエーションを試したが、残念ながらなぜかうまくいかなかった。

 
メソッドにconstモディファイアを追加してください。
   bool              TryGetValue(TKey key,TValue &value) const;
 

コリジョンに関する質問です。このような場合、ぶつかる可能性はあるのでしょうか?

#include <Generic\HashMap.mqh>

CHashMap<ulong, int> Index;

27,000件の応募があった場合。

 
fxsaber:

コリジョンに関する質問です。このような場合、ぶつかる可能性はあるのでしょうか?

ulongがチケットの場合、はい、しかし、非常に低い確率で

 
Andrei Trukhanovich:

ulongがチケットである場合、はい、しかし非常に小さな確率で。

チケットなんです。情報をありがとうございました。

 
fxsaber:

コリジョンに関する質問です。このような場合、ぶつかる可能性はあるのでしょうか?

27,000件の応募があった場合。

ほとんど不可能で、もしできたとしても、アクセスは超効率的です。

これは、実質的に最も効率的なアドレス指定方法です。アクセステーブルをモンスター級の値で成長させるリスクを負って。