Вопрос по типизации - страница 8

 
Ilya Malev:

Это случайно не то же самое, чтоPrint(ColorToString(Color&(uint(-1)&65535)|(230<<16))); ?

По результату да, по действию - нет.

  Боюсь, что продолжая изучать Ваши коды я сломаю себе мозг.

  То есть я хочу сказать, что в Ваших методах все восхитительно (без шуток) кроме обилия заглавных букв с подчеркиваниями и операций разрешения контекста :)

  Думаю, что если её (операцию разрешения контекста) разрешат перегружать, то Вы вместе со своими библиотеками уйдете в астрал :lol:

Сложно не написать библиотеку, а придумать удобную в использовании.

 
fxsaber:

По результату да, по действию - нет. // ну да, по действию Print(ColorToString(Color=(Color&(uint(-1)&65535)|(230<<16))));  :)

Сложно не написать библиотеку, а придумать удобную в использовании. // Сложно и то и другое, если нет в загашнике такого опыта копания в особенностях терминалов, как у Вас :)

 
Ilya Malev:

Нет, там совсем другой алгоритм используется. Библиотеке плевать на тип переменной.

 
fxsaber:

Нет, там совсем другой алгоритм используется. Библиотеке плевать на тип переменной.

Там не тип переменной, а её имя=, т.е. присваивание. По действию и по результату получается одно - изменяется переменная.

Хотя в библиотеку далеко я не залезал, так что сори если что не так.
 
Ilya Malev:

Там не тип переменной, а её имя=, т.е. присваивание. По действию и по результату получается одно - изменяется переменная.

Хотя в библиотеку далеко я не залезал, так что сори если что не так.

Вместо целой переменной можете подставить, например, MqlTick-переменную.

 
fxsaber:

Вместо целой переменной можете подставить, например, MqlTick-переменную.

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

 
Ilya Malev:

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

К тому завел, что можно создать A(Object)[Index] = 5.

 
fxsaber:

К тому завел, что можно создать A(Object)[Index] = 5.

Разумеется если со всем работать как с одним типом - наборами байтов или битов, или интов и т.п. то можно, но это уже из другой плоскости, это не о том, чтобы делать простой интуитивный, легко воспринимаемый и изменяемый код.

 

Мне тоже нравится, когда между int, double и datetime нет никакой разницы. Вот, может кому-то идея понравится (по скорости присваивания не отличается фактически от оригинальных типов):

#property strict

class price{ public:
  int    operator| (double p){return(int)(p*100000);}
  double operator| (int p){return(double)p/100000.0;}};

class time{ public:
  int operator| (datetime p){return(int)uint(p);}
  datetime operator| (int p){return(datetime)uint(p);}};

price f;
time t;

void OnStart()
 {
  int bid = f|Bid, ask = f|Ask, time1 = t|TimeCurrent(), time2 = t|TimeLocal();
  
  Print("Bid = ", f|bid, " Ask = ", f|ask, " Current time = ", t|time1, " Local time = ", t|time2);
 }  


Будет работать гарантированно для форекса (цены не больше 21474 целой части) и даты вплоть до 2107 г.
 
Ilya Malev:

Мне тоже нравится, когда между int, double и datetime нет никакой разницы.

Т.е. если вдруг случайно перепутаешь мух с котлетами, то чтоб максимально затруднить обнаружение проблемы?