Converting value name into variable

Einloggen oder registrieren, um einen Kommentar zu schreiben
Christian Stern
359
Christian Stern  

Hey all !


first, i would say thank you for this great platform. I start to enjoy it. As a programmer it is easy to understand and good documented ! Sometime the translation is a bit weired but is okay. I wish i could correct it or at least mark it for correction.


Anyway, i stuck in a small problem. I like to create a list of objects which i want to load. Later i will use this objects to do a common task. In perl for example i would do like this:


#!/usr/bin/perl

# include both class files

use class1.pl;

use class2.pl;


my @classToLoad = ("class1","class2");

my @storeObject;


foreach my $loadClass ( @classToLoad ) {

     my $class = ${ $loadClass }->new();          // create a anonymous class

     push(@storeObject, \$class);                 // store class reference in array

}



I know i could create direct a none initialized object and store the reference into a CArrayObj array. But i want like a configfile where i can define which i want to use or not. This means i have a unknown list of objects.


It would be great if someone could help me

Cheers

Carl Schreiber
Moderator
9816
Carl Schreiber  
  1. This forum is in Germam -  I'll continue in German , ok?
  2. Hier sprechen wir nur über den Metatrader (4,5)  und deren Sprachen mql4, mql5.
  3. Perl ist zwar schön - aber hier außerhalb des Fokus.

Hmm, so ists...

Christian Stern
359
Christian Stern  

Hallo,


naja ich kann auch auf deutsch schreiben, kein Problem. Dachte nur das, dass hier eine internationales Forum ist und daher hab ich in englisch geschrieben. Nun gut, so gehts auch.

Also ich möchte im MQL5 über eine Variable eine Klasse aufrufen. z.B. habe ich eine Liste mit Klassen die geladen werden können und via konfiguration möchte ich sagen, das er jene und jene Klassen laden darf.


Hier das gesamte Beispiel:

#include <Arrays\ArrayObj.mqh>

// define all existing classes

string loadList[] = { "class1", "class2", "class3" };


// define which class can be used

bool class1_loadable = true;

bool class2_loadable = false;

bool class3_loadable = false;


// store class

CArrayObj *loadedClass = new CArrayObj;


for ( int i = 0; i<ArraySize(loadList); i++ ) {


  // get class name

  string class_name = loadList[i];


  // check if class is load able, create object and store in array

  if ( class_name == "class1" && class1_loadable == true ) {

      class_name *handle;

      loadedClass.Add(handle);

  }

}




1. Es gibt ein Array mit Klassennamen. z.B. Module die ich habe.

2. Über eine jeweilige Variable möchte ich definieren, ob diese Klasse ladbar ist

3. Die Klassen Objekte sollen in einem Array abgespeichert werden

4. Über eine for Schleife prüfe ich die Klassenvariable, wenn sie auf true steht, soll die Klasse initiert werden und die Reference in einem Array abgespeichert werden


Ich meinte nur, das ich dies z.B. in Perl so umsetzten würde:

my $class = ${ $loadClass }->new();


Allerdings weiss ich nicht, ob man anonymes Laden von Object auch mit MQL machen kann.

Carl Schreiber
Moderator
9816
Carl Schreiber  
Allerdings weiss ich nicht, ob man anonymes Laden von Object auch mit MQL machen kann.

Ich glaube, das geht in MQL5 nicht.

Sonst würde es wohl auch ein solches Beispiel für new geben. (Editor => Kurso auf new => F1..)
Einloggen oder registrieren, um einen Kommentar zu schreiben