Комментарии 9
так вот ты какая… цифровая археология)
typedef struct(ushort val){
if(ReadUShort(FTell()) != val){
SetBackColor(cRed);
Printf("0f:%04X const ushort (%04Xh) != %Xh\n",
FTell(), val, ReadUShort(FTell()));
}
ushort value;
}CONST_S<fgcolor=cWhite, bgcolor=cGray, hidden=true>;
Почему не
typedef struct(ushort val){
ushort value;
if(value != val){
SetBackColor(cRed);
Printf("0f:%04X const ushort (%04Xh) != %Xh\n",
FTell()-2, val, value);
}
}CONST_S<fgcolor=cWhite, bgcolor=cGray, hidden=true>;
Никто не любит избыточный код, но любовь зла. Язык 010Editor очень похож на С, но является интерпретируемым, и выполняется построчно.
Как только интерпретатор проходит строку с объявлением переменной - всё, она уже в Variables и уже подсвечена в hex окне. Последующее задание цвета фона в следующей строке - оно будет действовать на последующие переменные (в рамках границ видимости, в данном случае - структуры).
А если есть желание менять фон переменной в зависимости от ее значения - то будь добр сначала прочитать место, где она будет, и только потом, определившись с цветом по значению - объявлять переменную.
Второй вариант - FSeek() назад на размер данных переменной и повторное её объявление при "ошибке", так, кстати, я тоже кое-где делал. Минус-появится вторая переменная в Variables с тем же именем после первой.(вернее, массив с этим именем из 2х элементов). И это еще терпимо - код ведь будет читабельнее, понятнее в Вашем примере.
Но главное contra - описание переменных через FSeek() ломает механизм синхронизации Variables и hex по <Ctrl>+<J>. Т.е. я не смогу прыгнуть в конкретный итем как раз в том случае, когда там произошла проблема.
ps: Спасибо за комментарий, не смотря на объём, я понимаю, что все равно будут очевидные для меня ситуации, но которые для читателей будут вовсе не очевидны. И я вовсе не претендую на абсолютную правильность - наверняка, могут бытьи ошибки и неоптимальные решения, здорово, когда на них указывают.
ushort value <bgcolor=(this != val ? cRed : cNone )>;
Интерпретатор. Всё, что до ```;```, выполняется, как целое. Атрибутам не можно присвоить значениев. А возможные аттрибутивные функции жестко ограничены, на цвета не повоздействуешь:
Возможно, у вас версия старая
Version 12.0 — September 17th, 2021
..The following is a list of all new features in version 12.0 of 010 Editor:
....Templates and Scripts
......fgcolor and bgcolor attributes can now be a function or expression.
Всегда поражал реверсинжиниринг, особенно программно-аппаратный. Уважуха.
02. Я уже даже не вижу код. Я вижу блондинку, брюнетку и рыжую