StructToCharArray

Kopiert eine POD Struktur in ein Array des Typs uchar.

bool  StructToCharArray(
   const void&  struct_object,     // Struktur
   uchar&       char_array[],      // Array
   uint         start_pos=0        // Anfangsposition im Array
   );

Parameter

struct_object

[in]  Referenz auf eine POD Struktur irgendeines Typs (nur mit einfachen Datentypen).

char_array[]

[in] uchar Typ des Arrays.

start_pos=0

[in]  Position im Array, ab der die kopierten Daten eingetragen werden.

Rückgabewert

Gibt true im Erfolgsfall zurück, andernfalls false.

Hinweis

Beim Kopieren werden dynamische Arrays automatisch erweitert (ArrayResize), sollte die Größe nicht ausreichen. Wenn der Array nicht bis zu der benötigten Größe erweitert werden kann, gibt die Funktion einen Fehler zurück.

 

Beispiel:

uchar    ExtCharArray[];
MqlRates ExtRates[1];
 
//+------------------------------------------------------------------+
//| Skript Programm Start Funktion                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Kopieren der Daten des aktuellen Balkens in die Struktur MqlRates
   if(CopyRates(Symbol(), PERIOD_CURRENT01ExtRates)!=1)
     {
      Print("CopyRates() failed. Error code: "GetLastError());
      return;
     }
 
//--- die in der MqlRates-Struktur empfangenen Daten in das Journal drucken
   Print("Data in the structure immediately after receiving it:");
   MqlRatesPrint(ExtRates[0]);
 
//--- Kopieren der Struktur in das Array vom Typ uchar
   ResetLastError();
   if(!StructToCharArray(ExtRates[0], ExtCharArray))
     {
      Print("StructToCharArray() failed. Error code: "GetLastError());
      return;
     }
 
//--- Löschen der Struktur
   ZeroMemory(ExtRates[0]);
//--- die Daten in der Struktur nach dem Löschen ausgeben
   Print("\nData in the structure after ZeroMemory():");
   MqlRatesPrint(ExtRates[0]);
 
//--- Kopieren der Daten aus dem uchar-Array in die MqlRates-Struktur
   if(!CharArrayToStruct(ExtRates[0], ExtCharArray))
     {
      Print("CharArrayToStruct() failed. Error code: "GetLastError());
      return;
     }
//--- die Daten in der MqlRates-Struktur ausgeben, nachdem sie aus dem uchar-Array kopiert wurden
   Print("\nData in the MqlRates structure after copying it from a uchar array:");
   MqlRatesPrint(ExtRates[0]);
 
   /*
  Ergebnis:
 
   Data in the structure immediately after receiving it:
   MqlRates data:
    Time = 2024.02.21 07:00;
    Open = 1.08143;
    High = 1.08158;
    Low = 1.08122;
    Close = 1.08137;
    Tick volume = 1341;
    Spread = 4;
    Real volume = 0
 
   Data in the structure after ZeroMemory():
   MqlRates data:
    Time = 0;
    Open = 0.00000;
    High = 0.00000;
    Low = 0.00000;
    Close = 0.00000;
    Tick volume = 0;
    Spread = 0;
    Real volume = 0
 
   Data in the MqlRates structure after copying it from a uchar array:
   MqlRates data:
    Time = 2024.02.21 07:00;
    Open = 1.08143;
    High = 1.08158;
    Low = 1.08122;
    Close = 1.08137;
    Tick volume = 1341;
    Spread = 4;
    Real volume = 0
   */
  }
//+------------------------------------------------------------------+
//| Ausdruck der Felder der Struktur MqlRates in das Journal         |
//+------------------------------------------------------------------+
void MqlRatesPrint(MqlRates &rates)
  {
//--- Erstellen der auszugebenden Zeichenkette
   string text=StringFormat(" Time = %s;\n"
                            " Open = %.*f;\n"
                            " High = %.*f;\n"
                            " Low = %.*f;\n"
                            " Close = %.*f;\n"
                            " Tick volume = %I64u;\n"
                            " Spread = %d;\n"
                            " Real volume = %I64u",
                            TimeToString(rates.time),
                            _Digitsrates.open,
                            _Digitsrates.high,
                            _Digitsrates.low,
                            _Digitsrates.close,
                            rates.tick_volume,
                            rates.spread,
                            rates.real_volume);
//--- Druck der Kopfzeile und der Ausgabezeichenfolge in das Journal
   Print("MqlRates data:\n"text);
  }

Siehe auch

StringToCharArray, ShortArrayToString,CharArrayToStruct, Verwenden von Codepages, FileWriteStruct, Unions (union), MathSwap