Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri - sayfa 65

 

İkili veri içeren bir dosyanın boyutunu, dosyayı silmeden yeni bir veri boyutuna nasıl küçülteceğimi söyle, yoksa yalnızca harici dll'lere yapılan bir çağrıyla uygulanabilir mi?

 
Konstantin :

İkili veri içeren bir dosyanın boyutunu, dosyayı silmeden yeni bir veri boyutuna nasıl küçülteceğimi söyle, yoksa yalnızca harici dll'lere yapılan bir çağrıyla uygulanabilir mi?

SetEndOfFile işlevinin bir analoguna ihtiyacınız var.

6 yıl önce soruldu

 
birleştirici :

SetEndOfFile işlevinin bir analoguna ihtiyacınız var.

6 yıl önce soruldu

Bunun hakkında yazıyorum)) aksi takdirde harici dll'ler aracılığıyla yapmak veya bir dosyayı silmek için koşer değil

 
birleştirici :

SetEndOfFile işlevinin bir analoguna ihtiyacınız var.

6 yıl önce soruldu

 bool SetEndOfFile( const string FileName, const uint Size, const int Commong_Flag = 0 )
{
   uchar Buffer[];
  
   return (( FileLoad (FileName, Buffer, Commong_Flag) > Size) && ArrayResize (Buffer, Size) && FileSave (FileName, Buffer, Commong_Flag)));
}
 
fxsaber :

dosya boyutunu yalnızca artış yönünde değiştirir, veri dizisi azalırsa dosya aynı boyutta kalır

 
Konstantin :

dosya boyutunu yalnızca yukarı doğru değiştirir, veri dizisi azalırsa dosya aynı boyutta kalır

İndirimler.

 
fxsaber :
Hayır, cehennem gibi bir yük
 
birleştirici :
Hayır, cehennem gibi bir yük

Şüphesiz!

 
Yine ikili konusuna

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

fxsaber , 2018.01.15 11:53

Çünkü fmod girişi çifttir. double çok sayıda tamsayı depolayamaz. Örneğin, durumunuz:

 Print ( DoubleToString (( double ) 1314725038414749 07 , 0 )); // 1314725038414749 12

böyle yap

 long fmod ( const long Value, const long Value2 )
{
   return (Value % Value2);
}


Örnek olarak float kullanarak, double özelliğini hızlıca anlayabilirsiniz.

 #define PRINT(A) Print ( #A + " = " + ( string )(A))

void OnStart ()
{
   for ( int i = 0 ; i < INT_MAX ; i++)
     if (( int )( float )i != i)
    {
      PRINT(i);
      PRINT(( float )i);
      PRINT(( double )i);
      
       break ;
    }
}


Sonuç

i = 16777217
( float )i = 16777216.0
( double )i = 16777217.0


ZY double, tüm int-aralığın bilgisini kaybetmez, uzun süre öyle değildir.

 
Konstantin :

Bunun hakkında yazıyorum)) aksi takdirde harici dll'ler aracılığıyla yapmak veya bir dosyayı silmek için koşer değil

gördüm istedim ama unuttum

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2011.08.01
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы