nesco писал(а):
Assasin, а тебе вот такая реализация кабеля на старых компонентах известнаКонечно, а почему нет? Об этом был уже разговор, я даже вертикальные элементы MT делал, которые сейчас заменены на вертикальные кабели, оставили кабели, так как они быстрее работают
------------ Дoбавленo в 12.43:
Вот как я представлял себе, как должны бы были работать кабели (не стал заморачиваться с освобождением памяти в МТ-потоках):
Add(InlineCode,711157,280,266)
{
VarPoints=#6:Cable1|6:Cable2|
DataPoints=#5:Cable|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|21: Cable:THI_Event;|5: |51: procedure Cable1(var _Data:TData; Index:word);|51: procedure Cable2(var _Data:TData; Index:word);|5: end;|0:|14:implementation|0:|29:procedure THiAsmClass.Cable1;|13:var dt:TData;|5:begin|18: dtInteger(dt,0);|21: dt.ldata := @_Data;|22: _ReadData(dt,Cable);|14: _Data := dt;|4:end;|0:|29:procedure THiAsmClass.Cable2;|13:var dt:TData;|5:begin|18: dtInteger(dt,1);|21: dt.ldata := @_Data;|22: _ReadData(dt,Cable);|14: _Data := dt;|4:end;|0:|4:end.|
link(Cable,1899:GetData,[])
}
Add(FormatStr,15702459,280,315)
{
link(onFString,3954939:doMessage,[])
link(Str1,711157:Cable1,[])
link(Str2,711157:Cable2,[])
}
Add(Button,12054623,231,315)
{
Left=125
Top=100
link(onClick,15702459:doString,[])
}
Add(Message,3954939,329,315)
{
}
Add(MathParse,6232363,329,217)
{
MathStr="4 + 2"
link(onResult,340925:doWork2,[])
}
Add(MathParse,4622757,329,266)
{
MathStr="4 * 2"
link(onResult,340925:doWork3,[(373,272)])
}
Add(HubEx,340925,369,217)
{
Angle=3
link(onEvent,1899:doData,[(373,211)(268,211)(268,223)])
}
Add(InlineCode,1899,280,217)
{
WorkPoints=#6:doData|
EventPoints=#10:onSetData1|10:onSetData2|
VarPoints=#7:GetData|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|15: dt1:TData;|15: dt2:TData;|17: idx:integer;|9: public|37: onSetData1,onSetData2:THI_Event;|5: |51: procedure doData(var _Data:TData; Index:word);|52: procedure GetData(var _Data:TData; Index:word);|5: end;|0:|14:implementation|0:|29:procedure THiAsmClass.doData;|5:begin|39: if idx = 0 then CopyData(@dt1,@_Data)|29: else CopyData(@dt2,@_Data);|4:end;|0:|30:procedure THiAsmClass.GetData;|5:begin|26: idx := ToInteger(_Data);|23: if idx = 0 then begin|41: _hi_onEvent(onSetData1,_Data.ldata^);|26: CopyData(@_Data,@dt1);|16: end else begin|41: _hi_onEvent(onSetData2,_Data.ldata^);|26: CopyData(@_Data,@dt2);|6: end;|4:end;|0:|4:end.|
link(onSetData1,6232363:doCalc,[])
link(onSetData2,4622757:doCalc,[(320,230)(320,272)])
}