Вверх ↑
Ответов: 9906
Рейтинг: 351
#1: 2017-12-09 20:50:35 ЛС | профиль | цитата
Netspirit писал(а):
Нужно взглянуть на следующие файлы,

За MathParse я отвечаю, все там правильно, данные типа TData специально дублируются, потому что _ReadData портит данные "по определению".
А не как в твоем примере - в результате паразитной "обратной отдачи".
Ну да, не третий параметр в AddMTData()... Но так надо было в данном конкретном случае.

И в твоем примере, @OutDT - тоже правильно, было бы. Потому-что в данном конкретном случае это совпадает с FreeDT.
И, в конкретном случае - порой эффективней сделать цепочку "ручками", без динамических заморочек с созданием/уничтожением.
Например

Add(InlineCode,16037272,399,84)
{
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;|5:begin|15: Inc(Counter);|2: |35: // Хочу выдать в поток 2 элемента|28: dtInteger(OutDT, Counter);|36: dtString(TmpDT, Int2Str(Counter));|19: // Да на здоровье|24: OutDT.ldata := @TmpDT;|31: _hi_OnEvent(onResult, OutDT);|4:end;|0:|0:|0:|0:|4:end.|
}
карма: 9

0
Редактировалось 1 раз(а), последний 2017-12-09 20:51:09