初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 525

 
-Aleks-:
文字列a="true "とする。

または、カスタム関数

bool StrToBool(string text)
{
 if(text=="true")return(true);
 if(text=="false")return(false);
}

ファイルから文字列を読み込んだ場合は

bool  FileReadBool( 
   int  file_handle      // handle файла 
   );
 
Sergey Gritsay:

または、カスタム関数

ファイルから文字列を読み込んだ場合は

ありがとうございます!面白い解決策ですね。

ファイルから読み込む必要があるのですが、カスタムクラスを作ってもらったので、bool値用の関数を作りたかったのですが、FileReadBoolは 類推して動かないという理解でよろしいでしょうか?

列とセル番号で値を返すクラスです。抜粋

//+------------------------------------------------------------------+

//| GetDoubleValue                                                   |

//+------------------------------------------------------------------+

double CSVReader::GetDoubleValue(int row,int column)

  {

   if(CheckIndexes(row,column)==false) return(0.0);

//---

   int index=m_total_columns*row+column;

   if((index>=0) && (index<ArraySize(m_cells)))

     {

      return(StringToDouble(m_cells[index]));

     }

   return(0.0);

  }

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| GetBoolValue                                                   |

//+------------------------------------------------------------------+

double CSVReader::GetBoolValue(int row,int column)

  {

   if(CheckIndexes(row,column)==false) return(0.0);

//---

   int index=m_total_columns*row+column;

   if((index>=0) && (index<ArraySize(m_cells)))

     {

      return(FileReadBool(m_cells[index]));

     }

   return(0.0);

  }

//+------------------------------------------------------------------+

 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

バグ、バグ、質問

ニコライ72 さん 2016.02.29 13:56

このような問題に直面している人がいるかもしれないので、アドバイスしてください。私は 何の問題もなく私のコンピュータWin7x32の作品に顧問を書いて いるが、私は別のコンピュータ、Win8x64にそれを入れて、それは動作しません。 私はMT4が第八にインストールされていることを確信するまで、すべての厄介なインストール、3回再インストールするだけでなく、データベースを通じてのみ顧問はフラッシュドライブから所定の位置にスローされ、それはまだ働くことができる。

 
-Aleks-:

ありがとうございます!面白い解決策ですね。

私はファイルから読み取る必要がある - 私は順序に作られたクラスを持っていた、私はそこにbool値のための関数を作りたかったが、私はFileReadBoolが類推して動作しないことを理解する?

列とセル番号で値を返すクラスです。抜粋

//+------------------------------------------------------------------+

//| GetDoubleValue                                                   |

//+------------------------------------------------------------------+

double CSVReader::GetDoubleValue(int row,int column)

  {

   if(CheckIndexes(row,column)==false) return(0.0);

//---

   int index=m_total_columns*row+column;

   if((index>=0) && (index<ArraySize(m_cells)))

     {

      return(StringToDouble(m_cells[index]));

     }

   return(0.0);

  }

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| GetBoolValue                                                   |

//+------------------------------------------------------------------+

double CSVReader::GetBoolValue(int row,int column)

  {

   if(CheckIndexes(row,column)==false) return(0.0);

//---

   int index=m_total_columns*row+column;

   if((index>=0) && (index<ArraySize(m_cells)))

     {

      return(FileReadBool(m_cells[index]));

     }

   return(0.0);

  }

//+------------------------------------------------------------------+

return(FileReadBool(m_cells[index]));
このように書くと、当然ながらファイルハンドルを渡す必要があるため、コンパイルエラー になります。
 

ニコライ72 さん 2016.02.29 13:56

Добрый день господа.Может кто сталкивался с такой проблемой,подскажите.私はEAを書いた、私のコンピュータWin7x32は何の問題もなく動作します。 私は別のコンピュータ、Win8x64にそれを置くと、それは動作しません。 それは面倒なインストールであるだけでなく、私はMT4が8、データベースを通じてのみEAにそれをインストールすることを確信するまで、それを3回再インストールしましたが、私はフラッシュドライブから所定の位置にそれを置くことができる、それは動作しません。 テストではすべて、注文が置かれ。 仕事ではそれは野郎を笑顔で、仕事を拒否します。 どうすればそれが動作するか?

フラッシュ・ドライブは、NTFSでフォーマットする必要があります。
 
Sergey Gritsay:
もちろん、そのように書くと、ファイルハンドルを渡さなければならないので、コンパイルエラーに なります。

なぜboolの標準的な文字列から値への変換を作らなかったのか、その理由は不明である。

ファイルに0と1を書き込んで、チェックをする。

if ( StringToDouble(m_cells[index])==1 ) return (true);

else return (false);

うまくいくのか?

 
-Aleks-:

なぜboolの標準的な文字列から値への変換を作らなかったのか、その理由は不明である。

ファイルに0と1を書き込んで、チェックをする。

if ( StringToDouble(m_cells[index])==1 ) return (true);

else return (false);

はたしてうまくいくのだろうか?

は、この行をここに置き換える必要があります。

double CSVReader::GetBoolValue(int row,int column)

にも変更します。

bool CSVReader::GetBoolValue(int row,int column)
 
Sergey Gritsay:

は、このラインです。

この行も次のように置き換えます。

ありがとうございました。試してみます。
 
Karputov Vladimir:

ニコライ72 さん 2016.02.29 13:56

フラッシュ・ドライブはNTFSでフォーマットする必要があります。
フラッシュドライブはフォーマットされ、ターミナルは自動取引に設定され、EAがオンになっています - それは取引しません。