Вверх ↑
Ответов: 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