FileWriteInteger

Dosya işaretçisinin geçerli konumundan başlayarak int tipindeki parametrenin değerini ikili dosyaya yazar.

Dosya işaretçisinin geçerli konumundan başlayarak int tipindeki parametrenin metne dönüştürülmüş değerini CSV veya metin dosyasına yazar.

uint  FileWriteInteger(
   int  file_handle,        // Dosya tanıtıcı değeri
   int  value,              // Yazılacak değer
   int  size=INT_VALUE      // Bayt bazında boyut
   );

Parametreler

file_handle

[in] FileOpen() fonksiyonunun dönüş yaptığı dosya tanımlayıcısı.

value

[in] Tamsayı değeri.

size=INT_VALUE

[in] Yazılması gereken baytların sayısı (en fazla 4). Karşılık gelen sabitler verilmiştir: CHAR_VALUE = 1, SHORT_VALUE = 2 ve INT_VALUE = 4, böylece fonksiyon, char, uchar, short veya int tipli bir değeri yazabilir.

Dönüş değeri

Başarılı olursa fonksiyon yazılan bayt sayısını döndürür. Dosya işaretçisi aynı bayt sayısı kadar hareket eder.

Not

İkili dosyaya yazma durumunda, int tipinde bir parametreyle FileWrite fonksiyonunu çağırmaya eşdeğerdir

int int_value;
FileWrite(file_handle,int_value);

Örnek:

//+------------------------------------------------------------------+
//|                                        Demo_FileWriteInteger.mq5 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- script çalıştığında giriş parametrelerinin penceresini göster
#property script_show_inputs
//--- terminalden veri alımı için parametreler
input string             InpSymbolName="EURUSD";           // döviz çifti
input ENUM_TIMEFRAMES    InpSymbolPeriod=PERIOD_H1;        // zaman aralığı
input datetime           InpDateStart=D'2013.01.01 00:00'; // veri kopyalama için başlangıç tarihi
//--- verinin dosyaya yazılması için gereken parametreler
input string             InpFileName="Trend.bin"; // dosya ismi
input string             InpDirectoryName="Data"; // dizin ismi
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   datetime date_finish=TimeCurrent();
   double   close_buff[];
   datetime time_buff[];
   int      size;
//--- hata değerini sıfırla
   ResetLastError();
//--- her bir çubuğun kapanış fiyatını kopyala
   if(CopyClose(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,close_buff)==-1)
     {
      PrintFormat("Kapanış fiyatlarının değerleri kopyalanamadı. Hata kodu = %d",GetLastError());
      return;
     }
//--- her bir çubuk için zamanı kopyala
   if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,time_buff)==-1)
     {
      PrintFormat("Zaman değerleri kopyalanamadı. Hata kodu = %d",GetLastError());
      return;
     }
//--- tampon büyüklüğünü al
   size=ArraySize(close_buff);
//--- değerlerin yazılacağı dosyayı aç (dosya mevcut değilse, otomatik olarak oluşturulacak)
   ResetLastError();
   int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_BIN);
   if(file_handle!=INVALID_HANDLE)
     {
      PrintFormat("%s dosyası yazma için hazır",InpFileName);
      PrintFormat("Dosya yolu: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
      //--- 
      int   up_down=0; // trend bayrağı
      int   arr_size;  // arr dizisinin büyüklüğü
      uchar arr[];     // uchar tipi dizi
      //--- zaman değerlerini dosyaya yaz
      for(int i=0;i<size-1;i++)
        {
         //--- mevcut ve bir sonraki kapanış fiyatlarını karşılaştır
         if(close_buff[i]<=close_buff[i+1])
           {
            if(up_down!=1)
              {
               //--- FileWriteInteger fonksiyonu ile tarih değerini dosyaya yaz
               StringToCharArray(TimeToString(time_buff[i]),arr);
               arr_size=ArraySize(arr);
               //--- önce, dizideki sembol sayısını yaz
               FileWriteInteger(file_handle,arr_size,INT_VALUE);
               //--- sembolleri yaz
               for(int j=0;j<arr_size;j++)
                  FileWriteInteger(file_handle,arr[j],CHAR_VALUE);
               //--- trend bayrağını değiştir
               up_down=1;
              }
           }
         else
           {
            if(up_down!=-1)
              {
               //--- FileWriteInteger kullanarak tarih değerini dosyaya yaz
               StringToCharArray(TimeToString(time_buff[i]),arr);
               arr_size=ArraySize(arr);
               //--- önce, dizideki sembol sayısını yaz
               FileWriteInteger(file_handle,arr_size,INT_VALUE);
               //--- sembolleri yaz
               for(int j=0;j<arr_size;j++)
                  FileWriteInteger(file_handle,arr[j],CHAR_VALUE);
               //--- trend bayrağını değiştir
               up_down=-1;
              }
           }
        }
      //--- dosyayı kapat
      FileClose(file_handle);
      PrintFormat("Veri yazıldı, %s dosyası kapatıldı",InpFileName);
     }
   else
      PrintFormat("%s dosyası açılamadı, Hata kodu = %d",InpFileName,GetLastError());
  }

Ayrıca Bakınız

IntegerToString, StringToInteger, Tamsayı tipleri