Вверх ↑
Этот топик читают: Гость
Ответов: 3889
Рейтинг: 362
#241: 2012-05-10 16:34:17 ЛС | профиль | цитата
Nic, Последняя версия кодогенератора, пакета, среды, .NET, плагин синтаксического редактора, NT5.x x86.
Пытаясь написать простейшее приложение из нескольких элементов поймал семью тараканов и пару малозаметных плодовых мушек. Ниже только начало списка, остальные добавятся когда (если) будет свободное время.
  • Например, в текстовые свойства элементов нельзя записывать символы, используемые в синтаксисе целевого языка. После первых же двойных кавычек получается инъекция кода code_27861.txt Похоже, целесообразнее решить это сразу на уровне кодогенератора, настраивымими механизмами автоэкранирования строк в зависимости от целевого языка.
  • Плагин не может найти код в папке code, встаёт на первом же пробеле в пути (Could not find file 'C:\Program');
  • Окно редактора по CTRL+W не помнит старого положения и размера; ------------ Дoбавленo в 14.55:
  • Включен режим сохранения исходников. Складывается впечатление, что кодогенератор не очищает\удаляет файл исходного текста (буфер?) перед новой записью и, если убираем какие-либо элементы, сокращая тем самым исходный код, он пишется прямо поверх старого, оставляя "хвостик" из мусора от предыдущей компиляции с вытекающими. Сперва думал, что файл блокируется от удаления, скажем, плагином просмотра текста, но повторная попытка компиляции проходит успешно, т.е. мусора не остаётся, даже если открыт плагин со старым текстом. ------------ Дoбавленo в 15.02:
  • Путём по умолчанию (рабочей папкой) запущенное из конструктора приложение считает не папку со своим SHA, а корневую директорию HiAsm; ------------ Дoбавленo в 16.33:


    Когда будут вводиться элементы кодирования строк в URI, есть идея НЕ использовать HttpUtility.UrlEncode, HttpUtility.UrlPathEncode и прочие Server.UrlEncode. Как это не редко бывает, у M$ некорректная реализация, нарушающая все RFC. То пробелы плюсами заменяют, то неправильно перекодируют или вообще не перекодируют знаки пунктуации, например, могут оставить в строке пробел или пару слипшихся процентов. В соответствии с RFC следует брать текст в UTF-8, фильтровать символы выражением [^a-zA-Z0-9\\.\\-_~], если код символа имеет старшую часть (больше 255), то вместо него конструируем строку из двух шестнадцатиричных представлений байт кода символа.
  • карма: 1

    0
    файлы: 1code_27861.txt [382B] [382]
    Ответов: 5446
    Рейтинг: 323
    #242: 2012-05-10 17:03:09 ЛС | профиль | цитата
    По поводу первого пункта - "це не баг, це фыча". Dilma где-то в ранних темах писал, что в кодах элементов не должно быть никаких проверок на валидность - все проврерки должен делать сам Разработчик.
    карма: 1

    0
    Ответов: 3889
    Рейтинг: 362
    #243: 2012-05-10 19:00:40 ЛС | профиль | цитата
    iarspider, сомневаюсь, что он имел в виду именно этот (низкоуровневый) вид ошибок. Перебирая условные кубики, искать в чём проблема по логам компилятора, нашедшего ошибку в коде, созданном генератором на основе ещё одного кода - мазохизм для гуру, и полный идиотизм для конечного пользователя. Так целевой аудиторией навечно останутся крутые разработчики, которым конструктор - игрушка и повод потусоваться на форуме
    карма: 1

    1
    Голосовали:Konst
    Главный модератор
    Ответов: 2999
    Рейтинг: 396
    #244: 2012-05-11 04:38:47 ЛС | профиль | цитата
    1nd1g0 писал(а):
    Плагин не может найти код в папке code, встаёт на первом же пробеле в пути (Could not find file 'C:\Program');

    Поправил

    1nd1g0 писал(а):
    Окно редактора по CTRL+W не помнит старого положения и размера;


    добавил

    1nd1g0 писал(а):
    "хвостик" из мусора от предыдущей компиляции


    исправил на SVN

    1nd1g0 писал(а):
    Путём по умолчанию (рабочей папкой) запущенное из конструктора приложение считает не папку со своим SHA, а корневую директорию HiAsm


    исправил на SVN
    карма: 6
    Дорогу осилит идущий. Install/Update HiAsm.NET
    0
    файлы: 1texteditor.exe.rar [16.6KB] [238]
    Ответов: 3889
    Рейтинг: 362
    #245: 2012-05-11 08:43:24 ЛС | профиль | цитата
    Nic, теперь проекты запускаются через проводник и дважды блокируются службой безопасности (как не доверенные и с неизвестным производителем), конструктор не может отслеживать и влиять на их работу. Схема может остаться скрыто работать, а конструктор будет показывать останов (проводник закрылся). При повторной попытке компиляции останется старый файл, который теперь будет запущен дважды.
    Nic писал(а):
    Всегда так было.

    Сужу по аналогии. В пакете Windows, при наличии папки с SHA, текущей будет именно она.
    карма: 1

    0
    Главный модератор
    Ответов: 2999
    Рейтинг: 396
    #246: 2012-05-11 10:02:37 ЛС | профиль | цитата
    1nd1g0 писал(а):
    при наличии папки с SHA, текущей будет именно она


    поправил на SVN

    карма: 6
    Дорогу осилит идущий. Install/Update HiAsm.NET
    0
    Ответов: 3889
    Рейтинг: 362
    #247: 2012-05-11 13:42:14 ЛС | профиль | цитата
  • Веб-запросы, создаваемые в 33-й строке HTTP_Get:
    blk.println('HttpWebRequest ', this.hr, ' = WebRequest.Create(', d("URI"), ') as HttpWebRequest;')
    
    не доступны из контекста, скажем, обработчиков событий:
    Add(HTTP_Get,13566987,105,84)
    {
    URI="http://ya.ru"
    }
    Add(Button,14245245,63,91)
    {
    Left=40
    Top=140
    ImageList=[]
    Point(onClick)
    link(onClick,13566987:doStop,[])
    }
    Add(Button,12774355,63,56)
    {
    Left=40
    Top=140
    ImageList=[]
    Point(onClick)
    link(onClick,13566987:doDownload,[(100,62)(100,90)])
    }
    error CS0103: The name 'hr2' does not exist in the current context
    А вот из своего контекста, естественно, без проблем:
    
    Add(HTTP_Get,13566987,105,84)
    {
    URI="http://ya.ru"
    link(onDownload,13566987:doStop,[(149,90)(149,94)(93,94)(93,97)])
    }
    Add(Button,12774355,56,84)
    {
    Left=40
    Top=140
    ImageList=[]
    Point(onClick)
    link(onClick,13566987:doDownload,[])
    }
  • карма: 1

    0
    Главный модератор
    Ответов: 2999
    Рейтинг: 396
    #248: 2012-05-11 13:49:33 ЛС | профиль | цитата
    fixed
    карма: 6
    Дорогу осилит идущий. Install/Update HiAsm.NET
    2
    Голосовали:1nd1g0, Konst
    Ответов: 3889
    Рейтинг: 362
    #249: 2012-05-11 16:49:09 ЛС | профиль | цитата
  • HTTP_Get (да и не только ему) требуется зачаточный структурный обработчик исключений(с точкой onError?). Так, если сервер выдаёт ошибку HTTP (например, любимую всеми 404), приложение благополучно вылетает в штатный обработчик, предлагая отметить опечатку в адресе или безвременную кончину web-страницы аварийным завершением приложения. К сожалению, пока в целевом языке я - "минус один", могу ткнуть пальцем в небо, но может пока изобразить один обрабочик на всех, в виде элемента или точки основной формыконсолибиблиотеки, порождающих события, из которых можно будет понять где и какое исключение произошло Естественно, речь о тех элементах, которые не мирно возвращают свои состояния, а именно порождают исключения.
  • карма: 1

    0
    Главный модератор
    Ответов: 2999
    Рейтинг: 396
    #250: 2012-05-11 22:03:54 ЛС | профиль | цитата
    Try
    карма: 6
    Дорогу осилит идущий. Install/Update HiAsm.NET
    3
    Голосовали:1nd1g0, foksov, Konst
    Ответов: 3889
    Рейтинг: 362
    #251: 2012-05-11 23:42:14 ЛС | профиль | цитата
  • Что-то теперь, после обновления с SVN (724), make_CNET.dll не запускает полученный exe под NT6.x x64 (вручную запускается). Меняю на старую (не скажу точно, какая ревизия SVN) - запускает. Я смотрю, у разработчиков в компиляторах лежит MiniGW, используемый при сборе кодогенераторов.
  • карма: 1

    0
    Главный модератор
    Ответов: 2999
    Рейтинг: 396
    #252: 2012-05-12 01:16:02 ЛС | профиль | цитата
    Не подтвердилось:
    x64_cnet.png
    карма: 6
    Дорогу осилит идущий. Install/Update HiAsm.NET
    0
    файлы: 1x64_cnet.png [52KB] [717]
    Ответов: 3889
    Рейтинг: 362
    #253: 2012-05-12 10:50:33 ЛС | профиль | цитата
    Nic, Глюк пропал после полной переустановки конструктора. Видимо, с чем-то был конфликт, кнопка запуска компилировала, но приложение не показывалось (то ли не стартовало, то ли сразу завершалось). Причём в шпионахмониторах никаких ошибок доступа к файлу приложения не наблюдалось. Стоило сменить библиотеку - начинало запускать. Ладно, практика дальнейших наблюдений покажет.
    ------------ Дoбавленo в 10.37:
    NT5.x x86 HiAsm4 SVN724. Опять перестал работать запуск, вернее - сами приложения. Теперь ещё веселее. Перестал работать он во время игр с цветом фона формы. Сперва цвет устанавливался нормально (чёрный и разные виды серого). Но стоило поставить clWindow (у меня это - белый 0xFFFFFF), среда компилирует нормально, но получается самоубивающийся файл, причина, вероятно, вот в таком интересном "белом":

    
    #cpp
    this.BackColor = Color.FromArgb(5,0,-256);
    Возможно, это же было причиной проблем на NT6.x, но там у меня хотя бы вручную запускалось, тут же получаем абсолютно неработоспособные exe. Проверил на .NET 2, 3.5, 4
    ------------ Дoбавленo в 10.49:
    При этом цвет clWhite = 0xFFFFFF (255,255,255) - работает, не работает именно clWindow (который, по идее, численно тот же). Вообще проблемы со всеми системными цветами, являющимися ссылками на цвета темы. Работают символьные имена цветов типа clRed, clBlack и т.п. Не работают имена цветовых констант темы типа clWindowFrame, clScrollBar.
    карма: 1

    0
    Гость
    Ответов: 17029
    Рейтинг: 0
    #254: 2012-05-12 12:37:44 правка | ЛС | профиль | цитата


    Редактировалось 4 раз(а), последний 2022-09-20 02:36:30
    карма: 0

    0
    Главный модератор
    Ответов: 2999
    Рейтинг: 396
    #255: 2012-05-12 13:14:14 ЛС | профиль | цитата
    Вечером поправлю.
    карма: 6
    Дорогу осилит идущий. Install/Update HiAsm.NET
    0
    Сообщение
    ...
    Прикрепленные файлы
    (файлы не залиты)