Вверх ↑
Ответов: 4612
Рейтинг: 746
#1: 2017-12-08 17:13:51 ЛС | профиль | цитата
Подскажите как правильно выдавать данные в MT-поток в своем коде. Этот пример постоянно жрет память после нажатия на кнопку.



Add(MainForm,2953706,21,105)
{
Width=298
Position=1
}
Add(Button,5706304,168,154)
{
Left=75
Top=15
Caption="Test!"
link(onClick,6087008:doEvent1,[])
}
Add(Edit,13453822,266,105)
{
Left=15
Top=15
Text="1000"
}
Add(For,6980961,259,161)
{
Start=1
link(onEvent,8686094:doEvent1,[])
link(End,13453822:Text,[])
}
Add(Label,7779441,406,168)
{
Left=135
Top=20
Width=10
Height=17
Caption="0"
}
Add(CounterEx,14700149,357,168)
{
Max=999999999
link(onNext,7779441:doText,[])
}
Add(Hub,8686094,315,161)
{
link(onEvent1,16037272:doWork,[])
link(onEvent2,14700149:doNext,[])
}
Add(StrCatDelim,6856616,567,161)
{
Delimiter=": "
link(onStrCatDlm,6742944:doAdd,[(615,167)(615,153)])
}
Add(InlineCode,16037272,511,161)
{
WorkPoints=#6:doWork|
EventPoints=#8:onResult|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|4:uses|28: Windows, KOL, Share, Debug;|0:|4:type|29: THiAsmClass = class(TDebug)|11: private|0:|10: public|29: onResult: THI_Event; |54: procedure doWork(var _Data: TData; Index: Word);|6: end;|0:|14:implementation|0:|3:var|19: Counter: Integer;|0:|60:procedure THiAsmClass.doWork(var _Data: TData; Index: Word);|3:var|22: OutDT, TmpDT: TData;|16: FreeDT: PData;|5:begin|15: Inc(Counter);|2: |35: // Хочу выдать в поток 2 элемента|28: dtInteger(OutDT, Counter);|36: dtString(TmpDT, Int2Str(Counter));|2: |36: AddMTData(@OutDT, @TmpDT, FreeDT);|2: |31: _hi_OnEvent(onResult, OutDT);|2: |19: FreeData(@OutDT);|4:end;|0:|0:|0:|0:|4:end.|
link(onResult,6856616:doStrCatDlm,[])
}
Add(ListBox,6742944,630,147)
{
Left=15
Top=45
Width=260
Height=215
}
Add(Hub,6087008,217,154)
{
link(onEvent1,6742944:doClear,[])
link(onEvent2,6980961:doFor,[])
}
карма: 26

0