Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 38

 
fxsaber:

Rudimentäre Funktionen (nicht erforderlich)

  • StringToDouble
  • StringToInteger
  • StringToTime
  • StringToColor
  • StringAdd
  • StringConcatenate
  • GetPointer


Warum?
 
Konstantin:
Warum?
Alles wird über die entsprechenden Betreiber abgewickelt.
 
fxsaber:
Alles wird über die entsprechenden Betreiber abgewickelt.

Ich verstehe nicht ganz, geben Sie mir ein Beispiel
 
Konstantin:

Ich verstehe nicht ganz, geben Sie mir ein Beispiel

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Eigenheiten der mql5-Sprache, Feinheiten und Tricks

fxsaber, 2017.04.26 15:16

Alle Standardtypen sind aufeinander abgestimmt
void OnStart()
{
  string Str = "1.23qwedfg";
  
  Print((int)Str);
  Print((double)Str);
}

Ergebnis

1
1.23

 
fxsaber:



ah, da haben Sie es )) lassen Sie sie haben, jetzt, wo sie sie haben )) sonst wird der Code plötzlich aufhören zu funktionieren, wie es mit den Strukturen, zumindest Union eingeführt wurde und in gewissem Sinne können wir mit einer Krücke zu bekommen ))
 
fxsaber:

Praktische Funktionen (nicht erforderlich)

  • GetPointer

Und diese Funktion wird durch was dupliziert?
 
Vasiliy Pushkaryov:
Und diese Funktion wird durch was dupliziert?
& Objekt
 

Verwendung von Gewerkschaften anstelle von Gussstrukturen

Seit Build 1596 ist die explizite Umwandlung von Strukturen unterschiedlichen Typs ineinander verboten. Ein solches Beispiel, das in alten Builds funktioniert, wird jetzt nicht mehr kompiliert:

struct struct_double
{
   double value;
}sd;

struct struct_long
{
   ulong value;
}sl;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   sl = (struct_long)sd;
}
cannot cast 'struct_double' to 'struct_long'    CastingValues.mq5       33      9

Jetzt ist es jedoch möglich, in MQL Daten in einer Vereinigungsstruktur zu kombinieren. Aus diesem Grund ist es möglich, eine Typkonvertierung mit Hilfe einer Union durchzuführen:

union struct_union
{
   double d_value;
   ulong  l_value;
}su;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   su.l_value = 0;
   su.d_value = 3.14159;
   printf((string)su.l_value);
}
2017.04.27 13:20:03.375 CastingValues (Si-6.17,M1)      4614256650576692846

Diese Struktur ist bereits in den neuen Gebäuden vorhanden.

p.s. Bitte fordern Sie die Entwickler auf, die Dokumentation in casting zu verbessern:https://www.mql5.com/ru/docs/basis/types/casting

 
Vasiliy Sokolov:

Verwendung von Gewerkschaften anstelle von Gussstrukturen

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Bibliotheken: TypeToBytes

fxsaber, 2017.04.26 10:49

Guss mit zufälliger Struktur verfügbar
struct STRUCT2
{
  MqlTick Tick;
};

// Кастинг произвольных простых структур
  STRUCT2 Struct2 = _C(STRUCT2, Tick);   // Аналог классического кастинга STRUCT2 Struct2 = (STRUCT2)Tick;
union erlaubt kein Casting für Strukturen mit benutzerdefiniertem Konstruktor und/oder Kopieroperator.
 
fxsaber:
Union erlaubt kein Casting für Strukturen mit benutzerdefiniertem Konstruktor und/oder Kopieroperator.

Es war nicht die Rede davon, die Besetzung vollständig durch eine Gewerkschaft zu ersetzen.

p.s. Ich habe mir Ihren Code angesehen:

class CASTING
  {
  public:
    template <typename T1>
    static const T Casting( const T1 &Value )
    {
  #ifdef  TYPETOBYTES_FULL_SLOW
      T Data = {0};

      const int handle = ::FileOpen("Casting.tmp", FILE_READ | FILE_WRITE | FILE_BIN);

      if (handle != INVALID_HANDLE)
      {
        ::FileWriteStruct(handle, Value);

        ::FileSeek(handle, 0, SEEK_SET);
        ::FileReadStruct(handle, Data);

        ::FileClose(handle);
      }

      return(Data);
  #else // TYPETOBYTES_FULL_SLOW
      union CAST

Beliebiges Casting durch Schreiben/Lesen von Binärdateien... Lichter aus. Lesen Sie nicht weiter...

Grund der Beschwerde: