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

 
Vladimir Karputov:

検索を開始し(任意の検索、任意の名前)、すぐに検索を停止します。すると、検索バーが表示され、ファイルの種類を選択することができます。


おっと...ありがとうございます。
 
Artyom Trishkin:

ビデオファイルを探す必要があるのは分かっている。すべてです。もちろんです。そして、その種類や名称は、機械自身に探させればいいのです。

マシンがどのように検索しているのか推測するのは難しいのですが、DOSで検索する方法(Win+Rを押してcmdと書く)、こんな感じです。

dir/b/s  *.3 g2 *.3 gp *.3 gp2 *.3 gpp *.3 gpp2 *.asf *.asx *.avi *.bin *.dat *.drv *.f4v *.flv *.gtp *.h264 *.m4v *.mkv *.mod *.moov *.mov *.mp4 *.mpeg *.mpg *.mts *.rm *.rmvb *.spl *.srt *.stl *.swf *.ts *.vcd *.vid *.vid *.vid *.vob *.webm *.wm *.wmv *.yuv > d:\filename.txt

最初のウェブサイトhttp://fileext.ru/video をググって、列ができるようにエクセルに貼り付け、それからメモ帳に貼り付けました。

検索データをパスとファイル名で書き込む最後のパラメータ d:\filename.txt

確認しました、動いてますね...。でも、私のバイナリーはビデオとは関係ないんです ))))

 
MQL5のクラウドプロテクションを使用したコンパイルは、インターネットがない場合、エディタがハングアップするようです。最初は静かにハングアップします(つまり、エディタは他の操作が可能ですが、コンパイルコマンドは完了を待っており、タイムアウトがある場合、どれくらい待てばいいのかが明確ではありません)。キャンセルボタンが押されると、しっかりハングアップします。
 

.dllからMQL4に文字列を戻したい(MQL5では全く問題なし)

私はすでに多くの間違いを犯しているので、知識として、メモリ内の文字列の配列とは何 ですか?- 文字列の配列とは何ですか?

string s_arr_1[];
// эти массивы чем-нибудь отличаются?
string s_arr_2[10];
 
Igor Makanu:

.dllからMQL4に文字列を戻したい(MQL5では全く問題なし)

私はすでに多くの間違いを犯しているので、知識として、メモリ内の文字列の配列とは何 ですか?- 文字列の配列とは何ですか?

文字列配列は、文字列オブジェクトの配列である。どこかの開発者が、文字列へのポインタと32ビットの割り当て済みメモリサイズの2つのフィールドがあると書いていました。一般的には、そういうことは公式のドキュメントに書いて、推測できないようにするのがいいと思うのですが。
 
Igor Makanu:

メモリ上の文字列の配列とは何ですか?- 文字列配列ってなんだ!

MASSIVEのデータ構造について。
MT5で説明していますが、MT4でも同じはずです。おそらく何かが違うでしょうが、近いものがあるはずです。

一般に、配列は説明とデータの2つの部分から構成されるが、データのみから構成される場合もある。
Dataは配列の要素に割り当てられたメモリです。
Description - 以下のフィールドを含む構造体、シーケンスは保存されない。

flags - 配列を表すフラグのセット: IsDynamic, IsSetAsSerrias, IsIndexBuffer, ....
size - 配列に作成される要素の数.
capacity - 配列の予約要素数.
コンストラクタへのポインタ - 配列の要素に対応するコンストラクタ関数へのポインタ.
destructor ポインタ - 配列の要素に対するデストラクタ関数へのポインタ.
data ポインタ - 配列の先頭へのポインタ.

string s_arr_1[];- 記述とデータ配列からなる動的配列。
string s_arr_2[10]; - 配列の型は文字列の位置に依存します。
ローカル変数 として使用する場合、スタック上に順次配置される記述とデータの配列からなる静的配列となる。
を構造体/クラスのフィールドとして使用した場合、単なるデータ配列となります(記述部分が欠落しています)。
 
Sergey Dzyublik:

データ構造MASSIVEについて。
これは記憶による記述で、MT5用ですが、MT4でも同じはずです。おそらく何かが違うでしょうが、近いはずです。

一般に、配列は説明とデータの2つの部分から構成されるが、データのみから構成される場合もある。
Dataは配列の要素に割り当てられたメモリです。
Description - 以下のフィールドを含む構造体、シーケンスは保存されません。

flags - 配列を表すフラグのセット: IsDynamic, IsSetAsSerrias, IsIndexBuffer, ....
size - 配列に作成される要素の数.
capacity - 配列の予約要素数.
コンストラクタへのポインタ - 配列の要素に対応するコンストラクタ関数へのポインタ.
destructor ポインタ - 配列の要素に対するデストラクタ関数へのポインタ.
データポインタ - 配列の先頭へのポインタ.

string s_arr_1[];- 記述とデータ配列からなる動的配列。
string s_arr_2[10]; - 配列の種類は文字列の位置に依存します。
ローカル変数 として使用する場合、スタック上に順次配置される記述とデータの配列からなる静的配列となる。
構造体/クラスのフィールドとして使用する場合は、単なるデータ配列となる(記述部分はない)。

ありがとうございました。

もしかしたらWinAPIからの標準的な構造が存在するかもしれないという期待もあったが、どうやら文字列と同じにはできないようだ

SZZ:私は、DLLとの交換を修正しましたが、以前のように2つの呼び出しで - DLLのアクションの要求と文字列に必要なバッファサイズを返し、準備されたバッファにコピー文字列と2番目の呼び出し、大丈夫、問題はローカルですが、私は、ソリューションを簡素化することを望んでいた。


ウラジミール・シマコフ
文字列の配列は、文字列オブジェクトの配列である。どこかの開発者が、文字列へのポインタと32ビットの割り当て済みメモリサイズという2つのフィールドがあると書いていました。一般に、このようなことは公式のドキュメントに書いて、推測できないようにするのがいいと思います。

主な問題は、MQL4と5が非常に異なるプログラムであることです )))) 。

MQL4の文字列は、.NetではStringBuilderClassによって 完璧にパースされますので、文字列がメモリロケーションではなく、オブジェクトであることは正しいのです。

 
что из себя представляет массив строк в памяти? - что такое массив строк?! 

データ構造 STRについて。
MT5の記憶で記述していますが、MT4でも同じはずです。おそらく、何かが違うでしょうが、近いはずです。


ラインは「説明」+「データ」で構成されています。
説明には以下の項目があります。

buffer_len - 文字列に割り当てられるバッファサイズ.
unicode_str pointer -データ構造 体の unicode_str フィールドへのポインタ(offset+8).

データには以下のフィールドが含まれます。

len - 文字列の長さ.
unicode_str - 説明から unicode_str ポインタが直接指す unicode_str 文字列.
 
Sergey Dzyublik:

データ構造 STRについて。
MT5の記憶で記述していますが、MT4でも同じはずです。おそらく、何かが違うでしょうが、近いはずです。


ラインは「説明」+「データ」で構成されています。
説明には以下の項目があります。

buffer_len - 文字列に割り当てられるバッファサイズ.
unicode_str pointer -データ構造 体の unicode_str フィールドへのポインタ(offset+8).

データには、以下のフィールドが含まれます。

len - 文字列の長さ.
unicode_str - 説明から unicode_str ポインタが直接指す unicode_str 文字列.

質問です。どこかに記載されているのでしょうか、それともご自身で解析されたのでしょうか?

 
Igor Makanu:

.dllからMQL4に文字列を戻したい(MQL5では全く問題なし)

私はすでに多くの間違いを犯しているので、知識として、メモリ内の文字列の配列とは何 ですか?- 文字列の配列とは何ですか?

文字列配列の代わりにuchar配列のみを渡す。その方が楽ですからね。
例えば、このように変換することができます。

int StringArrayToCharArray(string &stringArr[],uchar &c[]) {
   uchar temp[];
   int pos=0;
   for (int i=0; i<ArraySize(stringArr); i++) {
      ArrayFree(temp);
      StringToCharArray(stringArr[i],temp);
      ArrayCopy(c,temp,pos);
      pos+=ArraySize(temp);
   }
   return pos;
}
//+------------------------------------------------------------------+

int CharArrayToStringArray(string &stringArr[],uchar &c[]) {
   ArrayFree(stringArr);
   int pos=0;
   int j=0;
   for (; pos<ArraySize(c); j++) {
      ArrayResize(stringArr,j+1);
      stringArr[j]=CharArrayToString(c,pos);
      while(c[pos]!=0) pos++;
      pos++;
   }
   return j;
}

MQL4とMQL5で同じように動作します。