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

 

どうすればいいのか?データのパックとアンパックが正しく動作しない。

これはテストです

void OnStart()
  {
   uchar my_array_in[];
   uchar my_array_out[];
   uchar my_array_test[];
   const uchar key[]= {0,0,0,0};

   for(int i1=0; i1<100; i1++)
     {
      int size=777+i1*1024+i1*3+i1;
      ArrayResize(my_array_in,size);
      for(int i2=0; i2<size; i2++)
        {
         my_array_in[i2]=uchar(i2*5956);
        }
      ResetLastError();
      int size_out=CryptEncode(CRYPT_ARCH_ZIP,my_array_in,key,my_array_out);
      if(size_out==0)
        {
         Print("CryptEncode: индекс ",i1,"   ошибка ","  ",GetLastError());
         continue;
        }
      ArrayResize(my_array_out,size_out);
      ResetLastError();
      int size_test=CryptDecode(CRYPT_ARCH_ZIP,my_array_out,key,my_array_test);
      if(size_test==0)
        {
         Print("CryptDecode: индекс ",i1,"   ошибка ","  ",GetLastError());
        }
      else
         if(size_test!=size)
           {
            Print("CryptDecode: индекс ",i1,"   не верный размер");
           }
         else
           {
            for(int i2=0; i2<size; i2++)
              {
               if(my_array_in[i2]!=my_array_test[i2])
                 {
                  Print("CryptDecode: индекс ",i1,"   ошибка в данных");
                  break;
                 }
              }
           }
     }
  }

結果4001 予期せぬ内部エラー

2021.02.08 16:37:05.648 Test4 (EURUSD,M1)       CryptDecode: индекс 66   ошибка   4001
2021.02.08 16:37:05.649 Test4 (EURUSD,M1)       CryptDecode: индекс 68   ошибка   4001
2021.02.08 16:37:05.650 Test4 (EURUSD,M1)       CryptDecode: индекс 70   ошибка   4001
2021.02.08 16:37:05.650 Test4 (EURUSD,M1)       CryptDecode: индекс 72   ошибка   4001
2021.02.08 16:37:05.651 Test4 (EURUSD,M1)       CryptDecode: индекс 74   ошибка   4001
2021.02.08 16:37:05.652 Test4 (EURUSD,M1)       CryptDecode: индекс 76   ошибка   4001
2021.02.08 16:37:05.653 Test4 (EURUSD,M1)       CryptDecode: индекс 78   ошибка   4001
2021.02.08 16:37:05.654 Test4 (EURUSD,M1)       CryptDecode: индекс 80   ошибка   4001
2021.02.08 16:37:05.655 Test4 (EURUSD,M1)       CryptDecode: индекс 82   ошибка   4001
2021.02.08 16:37:05.656 Test4 (EURUSD,M1)       CryptDecode: индекс 84   ошибка   4001
2021.02.08 16:37:05.657 Test4 (EURUSD,M1)       CryptDecode: индекс 86   ошибка   4001
2021.02.08 16:37:05.658 Test4 (EURUSD,M1)       CryptDecode: индекс 88   ошибка   4001
2021.02.08 16:37:05.659 Test4 (EURUSD,M1)       CryptDecode: индекс 90   ошибка   4001
2021.02.08 16:37:05.660 Test4 (EURUSD,M1)       CryptDecode: индекс 92   ошибка   4001
2021.02.08 16:37:05.661 Test4 (EURUSD,M1)       CryptDecode: индекс 94   ошибка   4001
2021.02.08 16:37:05.662 Test4 (EURUSD,M1)       CryptDecode: индекс 96   ошибка   4001
2021.02.08 16:37:05.663 Test4 (EURUSD,M1)       CryptDecode: индекс 98   ошибка   4001
この問題を解決するために、開発者にお願いします。
 
DMITRII PECHERITSA:

一般的なケースでは、メソッドは仮想的 であり、派生クラスでは メソッドがオーバーライドされ、すでに他の何かによって占有されているため、両方とも適切ではありません。

また、特別なケースでは、クラスが全くなくても大丈夫です。

 
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

ushort a;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   a=0;
//---
   return(INIT_SUCCEEDED);
  }


式が評価されませんでした

なぜ変数が見えないのか?

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • 2021.02.08
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
ファイル:
5555.png  128 kb
 
Борис Крутов:


式が評価されませんでした

なぜ変数が見えないのか?

不要な(空っぽの、使わない)変数を積極的にカットしているからだと思います。

//+------------------------------------------------------------------+
//|                                                     Expert 1.mq5 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- input parameters
input int   Input1= 9;
//---
ushort   ushort_d = 19;
uint     uint_d   = 119;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   ushort_d=8;
   uint_d=GetTickCount();
   int d=9;
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
  }
//+------------------------------------------------------------------+

ushort_d」は計算されず使用されないのに対し、「uint_ d」は少なくとも計算されていることがわかる。


ファイル:
Expert_1.mq5  2 kb
 

おそらく、ここでは無理でしょう。

掲示板のページを閲覧し、閲覧したページにマークをつける(フォントを太字から通常へ変更する)ことが、スマホのブラウザからではうまくいかず、後からパソコンで閲覧しています。携帯電話では、後でブラウジングするときは問題なく動作します。

異なるアドレスのコンピュータでは、すべて正常にログインしています。自宅で鑑賞、村で鑑賞、そしてオフィスで鑑賞)))

パソコンではvin7、chrome。サイトにログインし、クロームも同じアカウントでログインしています。

私の携帯電話のアンドロイド6とApexランチャーと同じクロームで。サイトはログイン、クロームもパソコンと同じアカウントでログインしています。

 
Vladimir Karputov:

不要な(空っぽの、使わない)変数を積極的にカットしているからだと思います。

ushort_d'は計算されず使用されないが、'uint_d'は少なくとも計算されることがわかる。


***

それも、そういうわけにはいきません。そして、'ushort to int' を変更すると、プログラマは、変数

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • 2021.02.09
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
Boris:

***

これもダメなんです。そして、ushortをintに変更すると、変数が見える

コードを 正しく挿入してください(ボタンコード を使用してください)。

 
Vladimir Karputov:

コードを 正しく挿入してください(ボタンを使用してください)。

#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"



ushort=GetTickCount64();
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
a=GetTickCount64();
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  a=a++;
  Comment("a: ",a,"/n");
}
Исправил
 
Boris:

膨大な数のエラーが発生し、コードがコンパイルされない。コードを修正する。

 
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"



ushort a;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
a=(ushort)GetTickCount();
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  a++;
  Comment("a: ",a,"/n");
}
Vladimir Karputov:

膨大な数のエラーが発生し、コードがコンパイルされない。コードを修正する。

によって修正されました。