エラー、バグ、質問 - ページ 867

 

こんにちは。

システムを再インストールした。MT5を一からインストールしました。結論から言うと、デモサーバーが変更になりました。今はFXCM-MT5Demo01ですが、以前は何だったのでしょうかね。だから、私の古いデモ口座は機能しなかった。

新規にデモ口座を登録しました。以前は、ストーリーの左側にスクロールすると、それが終了していました。このサーバーには、まったく何もありません。タイムフレームを切り替えても、履歴がダウンロードされない。

2012年10月2日より前のものはありません。複合機の標準Expert Advisorの一部をテストする際、タイムフレームを1年に設定するとダウンロードされない。

ストーリーをダウンロードする方法、または旧デモサーバーのアドレスを教えてください。

Win 7 Max Rus SP1 x64、標準ファイアウォールは無効、Avast free 7.0.1466 (スイッチオン/オフ) MT5 v.5.00 Build 712 (10/12/2012)

MT5で「バージョン情報」ウィンドウを開くと、Alt+Tabができない。

 
Vladon:

サイトプロファイルで、いっぱいになっていて、触らなかったのに、今日、仕事をしていたら、タブレットが無音になっているのです。

どうしたのかな~と思ってサイトに行ったら、IDがないんです。

新しいものを記入しましたが、変わったかどうかはわかりません、私の意見では、数字は同じです。

現在、何か通知を受け取っていますか?
 
PVOID:
今現在、通知は来ているのでしょうか?
はい、Webサイトで再入力後です。
 

誰が理解するのか、これが正しい結果なのか。

コード

   ushort Var=1040;
   Alert("1: "+StringFormat("%c",Var));
   
   uchar Var2=192;
   Alert("2: "+StringFormat("%C",Var2));   
   
   Alert("3: "+ShortToString(Var)+" "+CharToString(Var2));

その結果、こうなりました。

ShortToString(Var) とCharToString(Var2) は正しく動作し、両方ともロシア語の "A" を出力しました。

しかし、なぜStringFormat("%C",Var2) はロシア語の "A" を出力しないのでしょうか?

ヘルプに書いてあります。

c

イント

短い(Unicode)文字タイプ

C

イント

Char (ANSI)文字型

 
Integer:

しかし、なぜ StringFormat("%C",Var2) はロシア語の "A" を出力しないのでしょうか?

おそらく、StringFormat は UTF-7 で動作し、CharToString は現在の Windows charset で動作すると思われます。だから、こんな結果になるんです。

例えば、こんな感じです。

uchar ar[1];
ar[0]=192;
Print(CharArrayToString(ar,0,WHOLE_ARRAY,CP_UTF7)," ",CharArrayToString(ar,0,WHOLE_ARRAY,CP_ACP));
À À

なぜ、CharArrayToStringには コードページを選択するオプションがあるのに、CharToStringにはないのか、という疑問が生じます。

 
avoitenko:

StringFormatはUTF-7で動作している可能性が高いので、このような結果になります。

例えば、こんな感じです。

À À

問題は、なぜCharArrayToStringには文字セット選択オプションがあるのに、CharToStringにはない のか、ということです。


そうらしいのですが、ANSIについてはヘルプに書いてあります。

C intChar(ANSI)文字。

つまり、ヘルプに書かれていることは、「C 言語の char (ANSI) 型の int 文字だが、UTF テーブルのままである」と理解すればよいのですね。そんなことに意味があるのか、それこそ不明です。

 
Integer:

つまり、書かれているヘルプは、「C 言語の char (ANSI) 型の int 文字だが、UTF テーブルのまま」と理解すればよいのですね。どういうことなのか、それはよくわからない。

もし私が開発者なら、%CのStringFormatをUTF-7ではなく、現在のWindowsのエンコーディングに置き換えるでしょう。

というように、CharToStringを呼び出した ときと同じ結果になるようにします。

 
avoitenko:

もし私が開発者なら、%CのStringFormatをUTF-7ではなく、現在のWindowsのエンコーディングに設定するでしょう。

で、CharToStringを呼び出した ときと同じ結果になるようにします。

と思っていたら、もしかしてバグ?
 
Integer:

誰が理解するのか、これが正しい結果なのか。


パラメータを適切なCRT関数に変換するだけです(致命的なエラーチェック付き)。
 
Integer:

誰が理解するのか、これが正しい結果なのか。

問題提起をありがとうございました。この挙動は、今後のビルドで修正する予定です。CP_ACPに 準じた変換が行われます。