FileWriteArray

Bu fonksiyon string tipli olmayan herhangi bir diziyi BIN dosyasına yazar (dizgi ve dinamik dizi içermeyen bir yapı dizisi olabilir).

uint  FileWriteArray(
   int          file_handle,         // Dosya tanıtıcısı
   const void&  array[],             // Dizi
   int          start=0,             // Dizideki başlangıç indisi
   int          count=WHOLE_ARRAY    // Eleman sayısı
   );

Parametreler

file_handle

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

array[]

[out] Kayı yapılacak dizi.

start=0

[in]  Dizideki başlangıç indisi (ilk kaydedilen elemanların sayısı).

count=WHOLE_ARRAY

[in]  Kaydedilecek elemanların sayısı (WHOLE_ARRAY, start sayısından başlayarak dizinin sonuna kadar kayıt yapılacağını belirtir).

Dönüş değeri

Kaydedilen elemanların sayısı.

Not

Dizgilerden oluşan diziler TXT dosyasına kaydedilebilir. Bu durumda, dizgiler otomatik olarak "\r\n" satır sonu karakterleri ile sonlandırılır. Dosya tipine bağlı olarak ANSI veya UNICODE, dizgiler ansi-kodlamasına dönüştürülür yada dönüştürülmez.

Örnek:

//+------------------------------------------------------------------+
//|                                          Demo_FileWriteArray.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"
//--- giriş parametreleri
input string InpFileName="data.bin";
input string InpDirectoryName="SomeFolder";
//+------------------------------------------------------------------+
//| Fiyat verisini depolamak için bir yapı                           |
//+------------------------------------------------------------------+
struct prices
  {
   datetime          date; // tarih
   double            bid;  // satış fiyatı
   double            ask;  // alış fiyatı
  };
//--- global değişkenler
int    count=0;
int    size=20;
string path=InpDirectoryName+"//"+InpFileName;
prices arr[];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- dizi için bellek tahsis et
   ArrayResize(arr,size);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- count<n ise kalan count dizgiyi yaz
   WriteData(count);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- veriyi diziye yaz
   arr[count].date=TimeCurrent();
   arr[count].bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
   arr[count].ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
//--- mevcut veriyi göster
         Print("Tarih = ",arr[i].date," Satış = ",arr[i].bid," Alış = ",arr[i].ask);
//--- sayacı artır
   count++;
//--- Dizi doldurulmuşsa, veriyi dosyaya yaz ve sıfırla
   if(count==size)
     {
      WriteData(size);
      count=0;
     }
  }
//+------------------------------------------------------------------+
//| Dizinin n elemanını dosyaya yaz                                  |
//+------------------------------------------------------------------+
void WriteData(const int n)
  {
//--- dosyayı aç
   ResetLastError();
   int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
   if(handle!=INVALID_HANDLE)
     {
      //--- dizideki veriyi dosyanın sonuna yaz
      FileSeek(handle,0,SEEK_END);
      FileWriteArray(handle,arr,0,n);
      //--- dosyayı kapat
      FileClose(handle);
     }
   else
      Print("Dosya açma başarısız, hata ",GetLastError());
  }

Ayrıca Bakınız

Değişkenler, FileSeek