ResourceFree

Fonksiyon dinamik olarak oluşturulmuş kaynağı (bunun için ayrılmış hafızayı boşaltarak) siler.

bool  ResourceFree(
   const string  resource_name      // kaynak ismi
   );

Parametreler

resource_name

[in] Kaynak ismi "::" ile başlamalıdır.

Dönüş değeri

Başarılı ise 'true', aksi durumda 'false'. Hata hakkında bilgi almak için GetLastError() fonksiyonunu çağırın.

Not

ResourceFree() fonksiyonu kaynaklarla aktif olarak çalışılırken, MQL5 uygulama geliştiricilerinin bellek tüketimini kontrol etmelerini sağlar. Bellekten silinen kaynağa bağlı grafiksel nesneler silinme bittikten sonra düzgün şekilde gözükecektir. Ama yeni oluşturulan grafiksel nesneler (OBJ_BITMAP ve OBJ_BITMAP_LABEL) silinmiş kaynağı kullanamayacaklardır.

Fonksiyon, sadece program tarafından oluşturulmuş dinamik kaynakları siler.

Örnek:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- grafiksel kaynağın parametrelerini bildir
   string rc_name="Resource";
   uint   rc_width=100;
   uint   rc_height=100;
   uint   rc_data[];
   uint   rc_size=rc_width*rc_height;
 
   ResetLastError();
//--- piksel dizisinin büyüklüğünü ayarla
   if(ArrayResize(rc_data,rc_size)!=rc_size)
     {
      Print("ArrayResize() failed. Error code: ",GetLastError());
      return;
     }
//--- piksel dizisini saydam bir renkle doldur ve buna dayalı bir grafiksel kaynak oluştur
   ArrayInitialize(rc_data,0x00FFFFFF);
   if(!ResourceCreate(rc_name,rc_data,rc_width,rc_height,0,0,0,COLOR_FORMAT_ARGB_NORMALIZE))
     {
      Print("ResourceCreate() failed. Error code: ",GetLastError());
      return;
     }
   Print("Size of created recource array: ",rc_data.Size());
 
//--- oluşturulan grafiksel kaynağı kontrol et
//--- geçerli çubuğun zaman ve fiyat verilerini al
   MqlTick tick={};
   if(!SymbolInfoTick(Symbol(),tick))
     {
      Print("SymbolInfoTick() failed. Error code: ",GetLastError());
      return;
     }
//--- son tik fiyatının ve zamanının koordinatlarını kullanarak bir bitmap nesnesi oluştur
   string obj_name="Bitmap";
   if(!ObjectCreate(0,obj_name,OBJ_BITMAP,0,tick.time,tick.bid))
     {
      Print("ObjectCreate() failed. Error code: ",GetLastError());
      return;
     }
//--- oluşturulan bitmap nesnesinin genişlik ve yüksekliğini grafiksel kaynağın genişlik ve yüksekliğine eşit olarak ayarla
//--- nesne çapa noktasını merkezine ayarla
   ObjectSetInteger(0,obj_name,OBJPROP_XSIZE,rc_width);
   ObjectSetInteger(0,obj_name,OBJPROP_YSIZE,rc_height);
   ObjectSetInteger(0,obj_name,OBJPROP_ANCHOR,ANCHOR_CENTER);
//--- önceden oluşturulmuş grafiksel kaynağı bitmap nesnesi için bir görüntü dosyası olarak belirt
//--- bu durumda, kullanılan grafiksel kaynağın adını belirtmek için adının önüne "::" eklememiz gerekir
   ObjectSetString(0,obj_name,OBJPROP_BMPFILE,"::"+rc_name);
   
//--- DodgerBlue rengini 200 şeffaflık ile ayarla
   uint clr=ColorToARGB(clrDodgerBlue,200);
//--- grafiksel kaynağın tüm piksel dizisini ayarlanan renkle doldur
   ArrayInitialize(rc_data,clr);
//--- grafiksel kaynak verisini güncelle
   Update(rc_name,rc_data,rc_width,rc_height,true);
   
//--- üç saniye bekle ve görüntü rengini değiştir
   Print("Wait 3 seconds before changing color");
   Sleep(3000);
//--- OrangeRed rengini 200 şeffaflık ile ayarla
   Print("Change color");
   clr=ColorToARGB(clrOrangeRed,200);
//--- grafiksel kaynağın tüm piksel dizisini ayarlanan renkle doldur
   ArrayInitialize(rc_data,clr);
//--- grafiksel kaynak verisini güncelle
   Update(rc_name,rc_data,rc_width,rc_height,true);
   
//--- üç saniye bekle ve grafiksel kaynağı serbest bırak
   Print("Wait 3 seconds before ResourceFree()");
   Sleep(3000);
   bool res=ResourceFree("::"+rc_name);
   Print("ResourceFree: ",res);
 
//--- kaynağı serbest bıraktıktan sonra rengi değiştirmeyi dene
   Print("Trying to change color to GreenYellow after ResourceFree()");
//--- GreenYellow rengini 200 şeffaflık ile ayarla
   clr=ColorToARGB(clrGreenYellow,200);
//--- grafiksel kaynağın tüm piksel dizisini ayarlanan renkle doldur
   ArrayInitialize(rc_data,clr);
//--- grafiksel kaynak verisini güncelle (görüntü kalır, ancak renk değiştirilemez)
   Update(rc_name,rc_data,rc_width,rc_height,true);
   Print("The color has not changed because the resource has been released");
   
//--- üç saniye bekle ve bitmap nesnesini sil
   Print("Wait 3 seconds before deleting the Bitmap object");
   Sleep(3000);
   Print("Delete Bitmap object");
   ObjectDelete(0,obj_name);
  }
//+------------------------------------------------------------------+
//| Grafiksel kaynak verisini güncelle                               |
//+------------------------------------------------------------------+
void Update(const string res_name,const uint &pixel_data[],const uint width,const uint height,const bool redraw)
  {
//--- sıfır boyut iletilirse bırak
   if(width==0 || height==0)
      return;
//--- kaynak verisini güncelle ve grafiği yeniden çiz
   if(ResourceCreate(res_name,pixel_data,width,height,0,0,0,COLOR_FORMAT_ARGB_NORMALIZE) && redraw)
      ChartRedraw();
  }

Ayrıca Bakınız

Kaynaklar, ObjectCreate(), PlaySound(), ObjectSetString(), OBJPROP_BMPFILE