MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 481

 
STARIJ :

Bir dosyayı yazmak için açarken TXT veya CSV'yi belirlediniz. Bu senin metin dosyan. Dize olarak okuyun, StringSubstr'ı çıkarın ve ihtiyacınız olana dönüştürün

 void Write_File()
{
     int handle;
     static double BlueL,RedL;
     string B_level= DoubleToStr (BlueLine, Digits );
     string R_level= DoubleToStr (RedLine, Digits );
     string f_name = " (" + Symbol () + ")\\" + TimeToStr ( LocalTime (), TIME_DATE ) + ".txt" ;
     
    
       if (BlueLine!=BlueL||RedLine!=RedL)
       {
       Sleep ( 10000 ); //подождем 10 сек, пока оператор меняет уровни
       
       // Открытие или создание файла и перемещение указателя в конец
      handle= FileOpen (f_name, FILE_CSV | FILE_READ | FILE_WRITE , " " );
       if (handle == - 1 ) {   Alert ( "Ошибка при открытии файла " ,handle);   return ; }
       FileSeek (handle, 0 , SEEK_END );

       // Если новый файл - записать имя файла и строку заголовков колонок
       if ( FileSize (handle)== 0 )
      {
         FileWrite (handle,f_name);
         FileWrite (handle, "Изменение Уровней   BlueLine   RedLine" );
      }
       // Сбор информации и запись в файл
       FileWrite (handle, TimeToStr ( TimeCurrent ()), "  " ,B_level, "  " ,R_level);
       FileClose (handle);
      BlueL=BlueLine;RedL=RedLine;
      }
       return ;
   }

İşte böyle yazdı! TXT

Bağışlayın beni, şimdi B_level ve R_level'i nasıl çıkaracağımı anlamıyorum. Tarih ve saate ihtiyacım yok! Ama onları yazmak istiyorum

 
Rewerpool :

İşte böyle yazdı! TXT

Bağışlayın beni, şimdi B_level ve R_level'i nasıl çıkaracağımı anlamıyorum. Tarih ve saate ihtiyacım yok! ama yazmak istiyorum

Dize olarak okuyun, StringSubstr'ı ayırın ve ihtiyacınız olana dönüştürün. Dize olarak okuyun, StringSubstr'ı çıkarın ve ihtiyacınız olana dönüştürün

 
STARIJ :

Dize olarak okuyun, StringSubstr'ı ayırın ve ihtiyacınız olana dönüştürün. Dize olarak okuyun, StringSubstr'ı çıkarın ve ihtiyacınız olana dönüştürün

Ah ah ah ah, anladım!! Her şey !!! @STARİJ'e teşekkürler! Deneyeceğim)

 

@STARİJ çalışmıyor, nerede hata yaptığımı henüz çözemedim! Yardım!

 double BlueLine,RedLine;

void Read_File()
{
     int handle;
     string B_level;
     string R_level;
     static double BlueL= StrToDouble (B_level);
     static double RedL= StrToDouble (R_level);
    
     string f_name = " (" + Symbol () + ")\\" + TimeToStr ( LocalTime (), TIME_DATE ) + ".txt" ;
     
     if (BlueL!=BlueLine||RedL!=RedLine)
     {
       // Открытие или создание файла и перемещение указателя в конец
      handle= FileOpen (f_name, FILE_CSV | FILE_READ | FILE_WRITE , " " );
       if (handle == - 1 ) {   Alert ( "Ошибка при открытии файла " ,handle);   return ; }
       FileSeek (handle, 0 , SEEK_END );
      
       // Чтение информации из файла
       FileReadString (handle,B_level= StringSubstr (f_name, 16 , 7 ),R_level= StringSubstr (f_name, 23 , 7 ));
       FileClose (handle);
      
      BlueLine=BlueL;RedLine=RedL;
      }
       return ;
   }
1 Bu bir hata, ama neyi yanlış yaptım?
 

Bunu neden sevmiyor?

2

 
Rewerpool :

Bunu neden sevmiyor?


İşleve hangi parametreleri ilettiğinize, kaç tane ve ne döndürdüğüne bakın.

f1'e tıklayın, imleci önce bu işlevin üzerine getirin

 
Rewerpool :

@STARİJ çalışmıyor, nerede hata yaptığımı henüz çözemedim! Yardım!

Bu bir hata, ama neyi yanlış yaptım?
Önce son satırı oku
   int handla = FileOpen ( "1111.txt" , FILE_TXT | FILE_READ , " " );   // TXT !!!!!!!
   string s;
   while (! FileIsEnding (handla))  s= FileReadString (handla, 100 );
   Alert (s);
   FileClose (handla);

2018.02.26 12:49 1.24368 1.22581 Şimdi... StringSubstr'ı çıkarın ve istediğiniz şeye dönüştürün. Her şey adım adım yapılmalıdır. Acele programcının düşmanıdır

   double Синяя= StrToDouble ( StringSubstr (s, 20 , 7 ));
   double Красн= StrToDouble ( StringSubstr (s, 31 , 7 ));
   Alert ( DoubleToStr (Синяя, 5 ), "   " , DoubleToStr (Красн, 5 ));

Dize olarak okuyun, StringSubstr'ı ayırın ve ihtiyacınız olana dönüştürün. Dize olarak okuyun, StringSubstr'ı ayırın ve ihtiyacınız olana dönüştürün

 
STARIJ :
Önce son satırı oku

2018.02.26 12:49 1.24368 1.22581 Şimdi... StringSubstr'ı çıkarın ve istediğiniz şeye dönüştürün. Her şey adım adım yapılmalıdır. Acele programcının düşmanıdır

Dize olarak okuyun, StringSubstr'ı ayırın ve ihtiyacınız olana dönüştürün. Dize olarak okuyun, StringSubstr'ı çıkarın ve ihtiyacınız olana dönüştürün

STARIJ : Analiz için teşekkürler!

Yeniden yapıldı! Şimdi nedense sayılar artmıyor!

Dosyadaki sayılar şunlardır:

 2018.02 . 26 17 : 44      1.24938      1.22771

Ve aynı Uyarı aşağıdakileri verir:

1.2'den sonraki sıfırları nereden buldu? normalleştirmeye çalıştım. Hayır!

1

Kod şöyle yazılır:

 void Read_File()
{
     int handle;
     string str;
     static double BlueL;
     static double RedL;
     string f_name = " (" + Symbol () + ")\\" + TimeToStr ( LocalTime (), TIME_DATE ) + ".txt" ;
     
     if (BlueL!=BlueLine||RedL!=RedLine)
     {
       // Открытие или создание файла и перемещение указателя в конец
      handle= FileOpen (f_name, FILE_READ | FILE_TXT , " " );
       if (handle == - 1 ) {   Alert ( "Ошибка при открытии файла " ,handle);   return ; }
      
       while (! FileIsEnding (handle)) //Читаем последнюю строку
       str= FileReadString (handle, 60 ); //Чтение строки из файла
       FileClose (handle);
       BlueL= StrToDouble ( StringSubstr (str, 16 , 7 ));
       RedL= StrToDouble ( StringSubstr (str, 23 , 7 ));
       Alert ( DoubleToStr (BlueL, 5 ), "   " , DoubleToStr (RedL, 5 ));
       ObjectSet ( "BlueLine" , OBJPROP_PRICE1 ,BlueL);
       ObjectSet ( "RedLine" , OBJPROP_PRICE1 ,RedL);
      }
       return ;
   }
 
Rewerpool :

STARIJ : Analiz için teşekkürler!
Yeniden yapıldı! Şimdi nedense sayılar artmıyor!
Dosyadaki sayılar şunlardır:
Ve aynı Uyarı aşağıdakileri verir:
1.2'den sonraki sıfırları nereden buldu? normalleştirmeye çalıştım. Hayır!
Kod şöyle yazılır:

Ben StringSubstr (str, 20,7) yazdım ve sen StringSubstr(str, 16,7) yazdın. 1.24938'den son 4 haneyi bırakın ve size yazdığım 1.2'yi alın - her şeyi sırayla yapın. Uyarılarım vardı; - doğru olduğundan emin olmak için okuma satırını görüntüleyin ve ObjectSet(.Programlama sabır, ileriye doğru küçük adımlar) yazmak için aceleniz var - ve forumda çığlık atıyorsunuz. Cevap beklerken - kaç küçük atabileceğiniz emin adımlar !!!
 
Rewerpool :

STARIJ : Analiz için teşekkürler!

Yeniden yapıldı! Şimdi nedense sayılar artmıyor!

Dosyadaki sayılar şunlardır:

Ve aynı Uyarı aşağıdakileri verir:

1.2'den sonraki sıfırları nereden buldu? normalleştirmeye çalıştım. Hayır!

Kod şöyle yazılır:

böyle dene


 void Read_File()
{
     int handle;
     string str;
     static double BlueL;
     static double RedL;
     string f_name = " (" + Symbol () + ")\\" + TimeToStr ( LocalTime (), TIME_DATE ) + ".txt" ;
     
     if (BlueL!=BlueLine||RedL!=RedLine)
     {
       // Открытие или создание файла и перемещение указателя в конец
      handle= FileOpen (f_name, FILE_READ | FILE_TXT , " " );
       if (handle == - 1 ) {   Alert ( "Ошибка при открытии файла " ,handle);   return ; }
      
       while (! FileIsEnding (handle)) //Читаем последнюю строку
       str= FileReadString (handle, 60 ); //Чтение строки из файла
       FileClose (handle);
       BlueL= StrToDouble ( StringSubstr (str, 20 , 7 ));   
       RedL= StrToDouble ( StringSubstr (str, 31 , 7 ));    
       Alert ( DoubleToStr (BlueL, 5 ), "   " , DoubleToStr (RedL, 5 ));
       ObjectSet ( "BlueLine" , OBJPROP_PRICE1 ,BlueL);
       ObjectSet ( "RedLine" , OBJPROP_PRICE1 ,RedL);
      }
       return ;
   }