Я закончил код мат-парсера, вот:
code_23014.txt
Но теперь, я не пойму, почему мой парсер не работает элементом for, интересно то, что я уже сталкивался с этой ошибкой: Error: Undeclared identifier: 'i5' Может это ошибка самого элемента for, что он не делает доступным переменную своего счетчика i, поясните мне плиз?
Вот не рабочая схема:
code_23015.txt
А вот код Delphi:
code_23016.txt
------------ Дoбавленo в 03.15:
А вот второй вопрос, в этой схеме кодогенератор не соблюдает последовательность подключения к хабу, и печатает код наоборот. Цикл for выполняется в конце а не в начале:
Add(MainForm,2953706,21,105) { Width=306 Height=154 Caption="Test" Position=1 } Add(FTCG_Tools,5039548,217,105) { } BEGIN_SDK Add(EditMultiEx,11372400,21,21) { WorkCount=#6:doData|6:doCalc|5:doFor| Width=608 Height=326 link(doData,10594900:doEvent1,[(31,27)(31,34)]) } Add(FT_Memory,4409165,98,49) { Default=Real(6) } Add(FTMathParse,4815401,140,140) { DataCount=15 MathStr="exp(exp(%1/%2)*%3/(%2/%10))/%10" ResultType=1 link(onResult,9008319:doValue,[]) link(X1,4409165:Value,[(146,117)(104,117)]) link(X2,13600669:Value,[]) link(X3,5273271:Value,[(160,110)(202,110)]) link(X10,4177038:Value,[(209,122)(391,122)]) } Add(FT_Memory,13600669,147,49) { Default=Integer(45) } Add(FT_Memory,9008319,294,140) { Default=Real(0) link(onData,5750475:doMessage,[]) } Add(FT_Message,5750475,371,140) { } Add(FT_Memory,5273271,196,49) { Default=Integer(3) } Add(FT_For,2249134,329,28) { End=2 Start=1 link(onEvent,4177038:doValue,[]) } Add(FT_Memory,4177038,385,28) { Default=Integer(500) link(onData,7827668:doMessage,[]) } Add(FT_Hub,10594900,42,28) { link(onEvent1,2249134:doFor,[]) link(onEvent2,4815401:doCalc,[(74,41)(74,146)]) } Add(FT_Message,7827668,441,28) { } END_SDK Add(Button,11335642,154,105) { Left=100 Top=35 Width=90 Height=25 Caption="Test" link(onClick,5039548:doData,[]) } Add(Button,2054337,154,161) { Left=100 Top=65 Width=90 Height=25 Caption="Test" link(onClick,5039548:doCalc,[(202,167)(202,118)]) }
Код Delphi:
Это возможно исправить?
------------ Дoбавленo в 01.38:
Причина "несоблюдения очереди", была в выделении блоков методом: "block.select"
Не знаю почему, но если было, хоть одно, выделение блока, очередь хаба перестает работать.
|