Изменить имя переменной - страница 2

 
void aIs(sometype temp) {
 a = temp;
}
.....
aIs(X);
aIs(Z);

 Или с помощью if, switch, или опять-таки с помощью ф-ии (GetA(), например).

А вообще, вопрос поставлен нечётко и непонятно 

 
notused:

 Или с помощью if, switch, или опять-таки с помощью ф-ии (GetA(), например).

Или так

enum { varX,varY,varZ} var_name = varY;
A = (var_name==varX ? X : var_name==varY ? Y : Z);

 

 

Полагаю, автор хочет во время исполнения кода волшебным образом менять выражение "A=X" на "A=Y" и аналогичные.

Не знаю, зачем это ему. Подобные трюки я только в ассемблере проделывал, модифицируя код во время его исполнения. Преимущество было в том, что проверка условия выносилась за пределы цикла, и благодаря этому можно было получить заметное ускорение. Но это было в те времена времена, когда быстродейстие процессора не сильно опережало обмен данными с памятью, а запрещать модификацию кода на уровне системы было не принято.

А еще подобное  можно проделать в скриптовых языках.

Кстати, можно использовать глобальные переменные

source = "X";
GlobalVariableSet("A", GlobalVariableGet(source));
Правда, преимущества в скорости все равно не получим, и даже наоборот. Сильно наоборот.
И ясности кода такие конструкции не добавят.

Какие еще есть версии, господа телепаты?
 
alxm:

Полагаю, автор хочет во время исполнения кода волшебным образом менять выражение "A=X" на "A=Y" и аналогичные.
Не знаю, зачем это ему.
Какие еще есть версии, господа телепаты?

 :) Телепато-версия такова: есть три переменные int var1,var2,var3;. И есть оператор for. Хочется прогнать эти три переменные в цикле for(int i=1;i<=3;i++), чтобы цикл обрабатывал их по очереди, на каждой итерации по одной переменной. Но не понятно, как сопоставить переменную 'i', принимающую значения 1-2-3, с переменными var1-var2-var3.

Массивы не предлагать :):):) 

 

Академические изыскания конечно вещь интересная,

но всё равно в конечном счёте придёт время писать алгоритм,

а в алгоритме главное не выверт мозга,

а скорость и точность работы,

так же понятность кода для других (как было уже сказано)

"программисты удивляются когда узнаю что пишут код для других программистов"(с).

 
Yedelkin:

 :) Телепато-версия такова: есть три переменные int var1,var2,var3;. И есть оператор for. Хочется прогнать эти три переменные в цикле for(int i=1;i<=3;i++), чтобы цикл обрабатывал их по очереди, на каждой итерации по одной переменной. Но не понятно, как сопоставить переменную 'i', принимающую значения 1-2-3, с переменными var1-var2-var3.

Массивы не предлагать :):):) 

Ввести в MQL5 шаблоны (template), как в С++ ;)

Правда, то же самое можно было бы сделать и через указатели, которые есть в MQL4 и MQL5. 

 
Scriptong:

Ввести в MQL5 шаблоны (template), как в С++ ;)

Человек хочет во время исполнения код менять.

Правда, то же самое можно было бы сделать и через указатели, которые есть в MQL4 и MQL5. 

В MQL5 указатели неполноценные. Придется объекты городить. Впрочем, как очередной вариант извращений подойдет.

Urain:

а в алгоритме главное не выверт мозга

"программисты удивляются когда узнаю что пишут код для других программистов"(с).

А иногда бывает нужно удивлять других программистов. Может быть, человеку нужен доступ к полиморфик-технологиям для осложнения дизассемблирования советника.
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
alxm:

Человек хочет во время исполнения код менять.

В MQL5 указатели неполноценные. Придется объекты городить. Впрочем, как очередной вариант извращений подойдет.

А иногда бывает нужно удивлять других программистов. Может быть, человеку нужен доступ к полиморфик-технологиям для осложнения дизассемблирования советника.
А что, уже кто-то дезассемблировал?
 
notused:
А что, уже кто-то дезассемблировал?

Фактов у меня нет. Но угрозы возможны. Например https://www.mql5.com/ru/forum/21/page2#comment_491 

api:

Действительно, я имел ввиду дизассемблирование. Я, как это часто бывает со всеми, судил по своим возможностям. Для меня - это равносильно декомпиляции поскольку восстановить алгоритм из ассемблерного текста в большинстве случаев для меня раз плюнуть. Конечно, этот процесс можно сильно усложнить, взяв на вооружнение алгоритмы полиморфных вирусов, но в конечном счете, раз существуют антивирусы, значит и этот прием не дает полной гарантии. 

 
alxm:

Фактов у меня нет. Но угрозы возможны. Например https://www.mql5.com/ru/forum/21/page2#comment_491 

C тех пор много времени прошло, но декомпилятора пока нет (не отрицаю, что возможно, когда-нибудь появится). 

Зато, можно использовать OpenCL - сам не разбирался (т. к. для WinXP64 bit нет соответствующего SDK от Intel, да и не нужен он мне пока), но из отрывочных сведений помню, что код OpenCL-программы формируется в виде строки и передаётся дальше. Вот эту строку можно менять как угодно. Правда, что легче оттрейсить - ex5 или на-лету OpenCL - мне неведомо.