Dizi referansları - sayfa 3

 

Vay be -- bu yapının boyutu sizeof --

 struct ArrayStore
{
   long reserved;
   double x[];
};

60 bayt) ancak kalay. Bu 52 bayt seçiyor...

İlgilenenler için, işte kazı için ilk kod

 #import "msvcrt.dll"
   long memcpy( long &dst, long &src, int cnt);
   long memcpy( uchar &dst[], long &src, int cnt);
#import

struct ArrayStore
{
   long reserved;
   double x[];
};

#define N 60
// sizeof(ArrayStore) == 60

void OnStart ()
{
   ArrayStore store;
   ArrayResize (store.x, 0x11 , 0x22 );
   store.reserved = 0xFF ;
   
   uchar array[N];
   ArrayInitialize (array, 0 );
   
   memcpy(array, store.reserved, N);
   
   string s;
   for ( int i = 0 ; i < N; i++)
   {
      s = s + " " + StringFormat ( "%.2X" , array[i]);
   }
   Print (s);
}
 
ArrayStore:: double x[];
Bu ayarın amacını anlamadım ...
 
sergeev :
Bu ayarın amacını anlamadım ...

Dizinin ilk öğesinin adresini almaya ne dersiniz:

long ArrPtr = memcpy(Arr[0], Arr[0], 1);


çalışmıyor?

 
MetaDriver :

Dizinin ilk öğesinin adresini almaya ne dersiniz:

long ArrPtr = memcpy(Arr[0], Arr[0], 1);


çalışmıyor?

essno çalışır.

ama yine de yapışma - neden

ArrayStore:: double x[];
 
sergeev :

essno çalışır.

ama yine de yapışma - neden

ben de takmıyorum. :)
 
MetaDriver :
ben de takmıyorum. :)

Evet tamam.

Görevi tekrar edeyim. Zamanla, O(1) zaman serisi boyutuna göre bir bağlantı yapın. Onlar. dizi kopyalama a priori yasaktır.

Tek yol bir dizi yapısını ele geçirmektir. Onlar. yapının her şeyin yolunda olduğunu düşünmesi için yeterli parametrelerle birlikte bir dizi işaretçisi yerine bir zaman serisi işaretçisini kaydırın.

Dizi yapısının boyutu, 8'i (muhtemelen) işaretçinin kendisi olan 52 bayttır, geri kalanı ayarlar, boyut türü, rezerv, AsSeries özellikleri vb. (Win7x64)

Şimdi görev, yapıyı ayrıştırmak ve içine yeterli verinin nasıl kaydırılacağını öğrenmek.

Документация по MQL5: Основы языка / Операции и выражения / Другие операции
Документация по MQL5: Основы языка / Операции и выражения / Другие операции
  • www.mql5.com
Основы языка / Операции и выражения / Другие операции - Документация по MQL5
 
sergeev :

essno çalışır.

essno çalışır, ancak verilere bir işaretçiyi bu şekilde alırız, işaretçiyi değiştirmek için çalışmaz, yalnızca verileri değiştirmek için çalışır, bu yüzden ... daha derine inmemiz gerekiyor (c)
 

ya etrafta dolaşıyor ya da neye ihtiyaç olduğunu anlamıyorum

İlk gönderinizde görevi siz belirlersiniz:

Bunun gibi bir tür dizi referansı:

Size memcpy'nin bir diziye işaretçiyi başarıyla aldığını gösterdim.

aynı memcpy'yi kullanın ve verileri alın.


peki yine de neye ihtiyacın var? neden burada bir tür yapı şekillendiriyorsun? sen de onu ayrıştıracaksın. bir diziye işaretçi ile ne ilgisi var?

 
sergeev :

aynı memcpy'yi kullanın ve verileri alın.

Yavaşça. Tüm dll işlevleri sarmalayıcı aracılığıyla çağrılır.

Kopyalamadan normal bir diziye ihtiyacım var.

İlk mesaja bakın. Kodda tam olarak ne istediğimi söylüyor.

 
TheXpert :

Yavaşça. Tüm dll işlevleri sarmalayıcı aracılığıyla çağrılır.

Kopyalamadan normal bir diziye ihtiyacım var.

İlk mesaja bakın. Kodda tam olarak ne istediğimi söylüyor.

Çok basit :) Dörtte (kendin - dokuzuncu) tam teşekküllü bir zaman serisi dizisi ve cebinde altın bir anahtar yap :)

Sana yardım edecekler, imhenko. Kutsal bir ineği hackleyemezsin.

Neden: