Fehler, Irrtümer, Fragen - Seite 1741

 
typename erzeugt zur Kompilierzeit eine Zeichenkette, weshalb Sie "die Schwänze ziehen" müssen.


Möchten Sie den tatsächlichen Typ des Objekts per Zeiger ermitteln?

So etwas wie eine Funktion:

string GetPointerTypename(void *ptr);
 
Ilyas:
Der Typenname generiert zur Kompilierzeit eine Zeichenkette, weshalb Sie die "Schwänze ziehen" müssen.


Möchten Sie den tatsächlichen Objekttyp per Zeiger abrufen?

So etwas wie eine Funktion:

string GetPointerTypename(void *ptr);

Ja, hier.

Stanislav Korotky:
Ich würde es gerne subtiler gestalten. Aber wie? In MQL gibt die Methodetypename(this) in virtual base die Basisklasse zurück. In C++ gibttypeid(*this).name() in der virtuellen Basismethode die tatsächliche Objektklasse zurück.

 
fxsaber:
Gibt es diese Funktion nur bei Profilveröffentlichungen?
Das Problem wurde heute Nachmittag behoben. Jetzt ist es wieder so weit.
 

Ich kriege es einfach nicht auf die Reihe.

int a=1;//a1
int b=2;//b1
int aa(int a, int b)
{
return(a+a+b+b);
}

eines der a und b im Gegenzug sollte extern //a1 und //b1 sein. Das ist nicht der Fall.

 
Yuriy Asaulenko:

a + ::a + b + ::b

Aber im Allgemeinen sollten Sie für eine solche Praxis einen Klaps auf die Hand bekommen.

 
Комбинатор:

a + ::a + b + ::b

Aber im Allgemeinen sollten Sie für eine solche Praxis bestraft werden.

Danke) Ich habe kein C++-Buch zur Hand. Aber ich erinnere mich, dass es visuell so aussah, als ob es das enthielte. Ich muss es vergessen haben. Ich habe es noch nie für diesen Zweck verwendet. Nun, jetzt muss ich die Variable überall ändern - jetzt.

Nun, dafür wurde sie eigentlich konzipiert. Sie irren sich also. Sie sollten es nicht missbrauchen.

 

Beim Ziehen(CHARTEVENT_OBJECT_DRAG) eines grafischen Objekts OBJ_CHART mit der Maus wird das aktuelle Anzeigeintervall in OBJ_CHART zurückgesetzt.

Bitte entfernen Sie diese Rücksetzung in der nächsten Version.

 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Wanzen, Wanzen, Fragen

Ilyas, 2016.10.18 09:24

Warum fügen Sie die Initialisierungsliste nicht in den Textkörper ein? Bildlich gesprochen wird ein Klassenobjekt (einschließlich dessen this) mit dem Zeichen ':' initialisiert
Warum dann?
class A
{
  const int a;
  
  A() : this.a(0) {} // 'this' - struct member undefined && '.' - member(s) initialization expected
//  A() : a(this.a) {} // no problem
};
 

Kennung

Beschreibung

Art der Immobilie

CHART_KOMMENTAR

Text des Kommentars zum Diagramm

String

CHART_EXPERT_NAME

Name des Expert Advisors, der auf dem Chart mit der angegebenen chart_id gestartet wurde

String

CHART_SCRIPT_NAME

Name des Skripts, das auf dem Diagramm mit der angegebenen chart_id gestartet wird

String

In der Hilfe fett und schreibgeschützt hinzufügen.
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Es wurde viel Zeit in die Lokalisierung investiert. EA

class CHARTOBJECT
{
public:
  const string Name;
  const long Chart;

  int GetSubWindow( void ) const
  {
    const ulong StartTime = GetMicrosecondCount();
    
    const int Res = ObjectFind(this.Chart, this.Name);
    
    Print((string)(GetMicrosecondCount() - StartTime) + " mcs.");

    return(Res);
  }

  CHARTOBJECT( const ENUM_OBJECT object_type, const long chart_id = 0  ) :
               Name((string)MathRand()), Chart(chart_id)
  {
    ObjectCreate(this.Chart, this.Name, object_type, 0, 0, 0);
  }

  ~CHARTOBJECT( void )
  {
    if (this.GetSubWindow() != -1)
      ObjectDelete(this.Chart, this.Name);
  }
  
  long GetProperty( const ENUM_OBJECT_PROPERTY_INTEGER Property, const int Modifier = 0 ) const
  {
    return(ObjectGetInteger(this.Chart, this.Name, Property, Modifier));
  }
};

CHARTOBJECT Chart(OBJ_CHART);
CHARTOBJECT* Bitmap;

void OnInit()
{
  Bitmap = new CHARTOBJECT(OBJ_BITMAP_LABEL, Chart.GetProperty(OBJPROP_CHART_ID));
}

void OnDeinit( const int Reason )
{
  Bitmap.GetSubWindow();
  
  delete Bitmap;
}

Nachdem Sie sie aus dem Diagramm entfernt haben, wird ein Protokoll ausgegeben

2016.10.22 19:35:51.362 Test9 (AUDCAD,M1)       Abnormal termination
2016.10.22 19:35:48.351 Test9 (AUDCAD,M1)       3005619 mcs.

Drei Sekunden später war er entfernt und draußen. Wird nur in der Release-Version wiedergegeben. Während der Fehlersuche ist alles normal.

Bitte bestätigen Sie sich selbst. Im Skriptmodus funktionierte die Wiedergabe nicht. Nur der EA.