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:
#pas
unit hiFTCG_Tools_8EA8B00;
interface
uses windows,kol,Share,hiFTCG_Tools_EM,ftcg_share;
type
TClassFTCG_Tools_8EA8B00 = class(TFTCG_Tools_EM)
private
val3:integer;
resultat5:real;
val9:real;
function readData(index:word):TData;
function readDataInt(index:word):integer;
function readDataStr(index:word):string;
function readDataReal(index:word):real;
public
constructor Create(_Control:PControl);
destructor Destroy; override;
procedure event_doData(var Data:TData; index:word);
procedure event_doCalc(var Data:TData; index:word);
procedure event_doFor(var Data:TData; index:word);
end;
function Create_hiFTCG_Tools_8EA8B00(Control:PControl):TFTCG_Tools_EM;
implementation
uses hiFTCG_Tools;
function Create_hiFTCG_Tools_8EA8B00;
begin
Result := TClassFTCG_Tools_8EA8B00.Create(Control);
end;
constructor TClassFTCG_Tools_8EA8B00.Create;
begin
inherited Create(_Control);
SetLength(doWork, 3);
SetLength(getVar, 0);
doWork[0] := event_doData;
doWork[1] := event_doCalc;
doWork[2] := event_doFor;
val3 := 500;
val9 := 0;
end;
destructor TClassFTCG_Tools_8EA8B00.Destroy;
begin
inherited Destroy;
end;
function TClassFTCG_Tools_8EA8B00.readData;
begin
dtNull(Result);
_ReadData(Result, THIFTCG_Tools(FParent).Datas[index]);
end;
function TClassFTCG_Tools_8EA8B00.readDataInt;
var dt:TData;
begin
dtNull(dt);
_ReadData(dt, THIFTCG_Tools(FParent).Datas[index]);
Result := ToInteger(dt);
end;
function TClassFTCG_Tools_8EA8B00.readDataStr;
var dt:TData;
begin
dtNull(dt);
_ReadData(dt, THIFTCG_Tools(FParent).Datas[index]);
Result := ToString(dt);
end;
function TClassFTCG_Tools_8EA8B00.readDataReal;
var dt:TData;
begin
dtNull(dt);
_ReadData(dt, THIFTCG_Tools(FParent).Datas[index]);
Result := ToReal(dt);
end;
procedure TClassFTCG_Tools_8EA8B00.event_doData(var Data:TData; index:word);
var
i2:integer;
begin
resultat5 := exp(exp(6/45)*3/(45/val3))/val3;
val9 := resultat5;
MessageBox(0, PChar(double2str(val9)), PChar(''), MB_OK);
for i2 := 1 to 2 do
begin
val3 := i2;
MessageBox(0, PChar(int2str(val3)), PChar(''), MB_OK);
end;
end;
procedure TClassFTCG_Tools_8EA8B00.event_doCalc(var Data:TData; index:word);
begin
end;
procedure TClassFTCG_Tools_8EA8B00.event_doFor(var Data:TData; index:word);
begin
end;
end.
Это возможно исправить?
------------ Дoбавленo в 01.38:
Причина "несоблюдения очереди", была в выделении блоков методом: "block.select"
Не знаю почему, но если было, хоть одно, выделение блока, очередь хаба перестает работать.