エラー、バグ、質問 - ページ 2580 1...257325742575257625772578257925802581258225832584258525862587...3185 新しいコメント Roman 2019.09.29 05:16 #25791 Koldun Zloy: 1.MQLでは、ポインタではなく文字列がコピーされます。 _DLLAPI void fnReplaceString(wchar_t * text, wchar_t *from, wchar_t * to) { wchar_t * cp; //проверка параметров if(text==NULL || from==NULL || to==NULL) return; if(wcslen(from)!=wcslen(to)) return; //поищем подстроку if((cp=wcsstr(text,from))==NULL) return; //заменим memcpy(cp,to,wcslen(to)*sizeof(wchar_t)); } #import "MQL5DLLSamples.dll" void fnReplaceString(string & text, string from, string to); #import 第3.3項 Roman 2019.09.29 05:50 #25792 Koldun Zloy: 2.MQLで200字の行を強調表示しました。そして、そこに164文字をコピーしたのですね。その後、MQLで文字列の大きさを調べます。200のままです。 サイズではなく、長さ!長さは文字単位、サイズはバイト単位。 確認したところ、164文字の文字列を取得した後、はい、長さは200のままです。 何か感想はありますか? Koldun Zloy 2019.09.29 07:15 #25793 Roman: そこで、正しく作るためにmemcpyをあきらめ、wcscpyやwcsncpyを使うようにしました。結果、上の投稿。 sizeof( wchar_t* ) のことです。 Koldun Zloy 2019.09.29 07:16 #25794 Roman: 第3.3項 反論しないで、この記事をもっとよく読んだほうがいい。そして、そこで何が起こっているのかを把握すること。 そうすれば、何の問題も起きないでしょう。 やりたいことは、実はそんなに複雑なことではないんです。 Koldun Zloy 2019.09.29 07:17 #25795 Roman: サイズではなく、長さ!長さは文字単位、サイズはバイト単位。 確認したところ、164文字の文字列を取得した後、はい、長さは200のままです。 何か感想はありますか? なぜそうなるかは、すでに上記で説明したとおりです。 Roman 2019.09.29 10:11 #25796 Koldun Zloy: やりたいことは、実はそんなに難しくないんです。 では、そんなに難しくないか教えてください。それとも、これが普通の行動だと思いますか? Koldun Zloy 2019.09.29 12:31 #25797 Roman: では、そんなに難しくないか教えてください。それとも、これが普通の行動だと思いますか? 何も理解するつもりもなく、ただ出来合いのレシピを渡して終わりですか? 負担になるならプログラミングをやりたいという気持ちもわからなくはないですが、それは本人の自由です。 質問をするときに、詳細な再現性のあるコードを見せないと、誰も助けてくれないと思いませんか? とか読まないとか、もっと詳しい人に反論するとか? そのため、レシピが用意されているわけではありません。DLLから文字列を取得する一般的な原理を書きます。自分がプログラマーだと思えば、自分でコードを書くことができます。 1.MQLでは、ushort配列を作成します。 初期化する。 3.DLLに配列とそのサイズを渡します。 4.DLLでは、wmemcpy_s()関数を用いて、この配列に文字列をコピーしてください。 5.DLL からコピーされた文字列の長さを返します。 6.MQLでは、ShortArrayToString()関数を使用して配列から文字列を作成します。 Vladimir Karputov 2019.09.29 16:50 #25798 このトピックに関連しないコメントは、「MQL4 MT4 MetaTrader 4初心者からの質問」に移動しました。 Stanislav Korotky 2019.09.29 22:29 #25799 あるサーバー(MQではない)では、MT5が異常な状態になり、CPUに100%の負荷がかかり、さまざまな商品についてこれらのメッセージが集中的に記録されます。 チャートが点滅しています。仕事ができないのです。 それとも、サーバーがゲームを終了するのを待つしかないのでしょうか? Roman 2019.09.29 23:24 #25800 Koldun Zloy: 何も理解するつもりもなく、ただ出来合いのレシピを渡して終わりですか? 負担になるならプログラミングをやりたいという気持ちもわからなくはないですが、それは本人の自由です。 質問をするときに、詳細な再現性のあるコードを見せないと、誰も助けてくれないと思いませんか? を読まないのか、もっと詳しい人たちと議論しないのか? そのため、レシピが用意されているわけではありません。DLLから文字列を取得する一般的な原理を書きます。自分がプログラマーだと思えば、自分でコードを書くことができます。 1.MQLでは、ushort配列を作成します。 初期化する。 3.DLLに配列とそのサイズを渡します。 4.DLLでは、wmemcpy_s()関数を用いて、この配列に文字列をコピーしてください。 5.DLL からコピーされた文字列の長さを返します。 6.MQLでは、ShortArrayToString()を使用して、配列から文字列を作成します。 どこに論点があるんだ?これは社会人としての議論であり、傲慢なパトスで、意味を鶏小屋にねじ込む必要はないのです。 既成のものは頼まなかったんですね。ポインターで解決するのかと思いきや、そうでもないんですね。 この話題を読んでいないのはあなたです。ここではもうずっとアレイについて議論されていて、みんなよく分かっていることです。 そして、私はずっとアレイに傾いていました。しかし、mqlには文字列があるので、それを直接使うのはどうでしょう? ここで議論しているのは、まさにこのmqlの文字列のバグ、つまりポインタをコピーしてしまうことなのです。 もっと言うと、ユーショートだけですべてが解決するわけではありません。配列には様々なオプションがあります。 しかし、私の場合、コード構造上合理的とは言い難いので、配列は使いたくありません。 直接作業できるmqlの文字列があればなおさらですが、正しく動作しなければなりません。 1...257325742575257625772578257925802581258225832584258525862587...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
1.MQLでは、ポインタではなく文字列がコピーされます。
第3.3項
2.MQLで200字の行を強調表示しました。そして、そこに164文字をコピーしたのですね。その後、MQLで文字列の大きさを調べます。200のままです。
サイズではなく、長さ!長さは文字単位、サイズはバイト単位。
確認したところ、164文字の文字列を取得した後、はい、長さは200のままです。
何か感想はありますか?
そこで、正しく作るためにmemcpyをあきらめ、wcscpyやwcsncpyを使うようにしました。
結果、上の投稿。
sizeof( wchar_t* ) のことです。
第3.3項
反論しないで、この記事をもっとよく読んだほうがいい。そして、そこで何が起こっているのかを把握すること。
そうすれば、何の問題も起きないでしょう。
やりたいことは、実はそんなに複雑なことではないんです。
サイズではなく、長さ!長さは文字単位、サイズはバイト単位。
確認したところ、164文字の文字列を取得した後、はい、長さは200のままです。
何か感想はありますか?
なぜそうなるかは、すでに上記で説明したとおりです。
やりたいことは、実はそんなに難しくないんです。
では、そんなに難しくないか教えてください。
それとも、これが普通の行動だと思いますか?
では、そんなに難しくないか教えてください。
それとも、これが普通の行動だと思いますか?
何も理解するつもりもなく、ただ出来合いのレシピを渡して終わりですか?
負担になるならプログラミングをやりたいという気持ちもわからなくはないですが、それは本人の自由です。
質問をするときに、詳細な再現性のあるコードを見せないと、誰も助けてくれないと思いませんか?
とか読まないとか、もっと詳しい人に反論するとか?
そのため、レシピが用意されているわけではありません。DLLから文字列を取得する一般的な原理を書きます。自分がプログラマーだと思えば、自分でコードを書くことができます。
1.MQLでは、ushort配列を作成します。
初期化する。
3.DLLに配列とそのサイズを渡します。
4.DLLでは、wmemcpy_s()関数を用いて、この配列に文字列をコピーしてください。
5.DLL からコピーされた文字列の長さを返します。
6.MQLでは、ShortArrayToString()関数を使用して配列から文字列を作成します。
あるサーバー(MQではない)では、MT5が異常な状態になり、CPUに100%の負荷がかかり、さまざまな商品についてこれらのメッセージが集中的に記録されます。
チャートが点滅しています。仕事ができないのです。
それとも、サーバーがゲームを終了するのを待つしかないのでしょうか?
何も理解するつもりもなく、ただ出来合いのレシピを渡して終わりですか?
負担になるならプログラミングをやりたいという気持ちもわからなくはないですが、それは本人の自由です。
質問をするときに、詳細な再現性のあるコードを見せないと、誰も助けてくれないと思いませんか?
を読まないのか、もっと詳しい人たちと議論しないのか?
そのため、レシピが用意されているわけではありません。DLLから文字列を取得する一般的な原理を書きます。自分がプログラマーだと思えば、自分でコードを書くことができます。
1.MQLでは、ushort配列を作成します。
初期化する。
3.DLLに配列とそのサイズを渡します。
4.DLLでは、wmemcpy_s()関数を用いて、この配列に文字列をコピーしてください。
5.DLL からコピーされた文字列の長さを返します。
6.MQLでは、ShortArrayToString()を使用して、配列から文字列を作成します。
どこに論点があるんだ?これは社会人としての議論であり、傲慢なパトスで、意味を鶏小屋にねじ込む必要はないのです。
既成のものは頼まなかったんですね。ポインターで解決するのかと思いきや、そうでもないんですね。
この話題を読んでいないのはあなたです。ここではもうずっとアレイについて議論されていて、みんなよく分かっていることです。
そして、私はずっとアレイに傾いていました。しかし、mqlには文字列があるので、それを直接使うのはどうでしょう?
ここで議論しているのは、まさにこのmqlの文字列のバグ、つまりポインタをコピーしてしまうことなのです。
もっと言うと、ユーショートだけですべてが解決するわけではありません。配列には様々なオプションがあります。
しかし、私の場合、コード構造上合理的とは言い難いので、配列は使いたくありません。
直接作業できるmqlの文字列があればなおさらですが、正しく動作しなければなりません。