Вверх ↑
Этот топик читают: Гость
Ответов: 704
Рейтинг: 7
#76: 2011-10-21 00:39:01 ЛС | профиль | цитата
Я выждал эту ошибку, и что Вы себе думаете? Да только я ее и видел после нажатия кнопки Ok (других не было, окно ошибки как и на скрине)! Никаких отчетов не создалось почему-то. [offtop]Вырвал часть волос на голове в порыве печали.[/offtop]
------------ Дoбавленo в 00.39:
1nd1g0 писал(а):
с самоуничтожением после отработки (Mode = OnlyOnce)

А сильно накладно по производительности такие вот суицидальные действия компонентов? Имеется в виду скорость сильно падает при таков вот создании/удалении каждый раз? Можно ли такие контейнеры вызывать из потоков? Можно ли туда засунуть обработку в потоке? Можно ли вопрос в разработке...
карма: 0

0
Ответов: 3889
Рейтинг: 362
#77: 2011-10-21 00:47:48 ЛС | профиль | цитата
Neo писал(а):
Никаких отчетов не создалось почему-то.

Скорее всего это произошло потому, что у Вас сама программа в себе перехватила исключение. Возможно, есть не известный (не документированный?) мне ключ командной строки, отключающий встроенную обработку исключений , но для надёжности я запускаю программу прямо под отладчиком и исключение гарантированно будет "обработано" правильно. Надеюсь, вы после этого ещё не меняли схему. Если нет, то научу, как узнать, где именно произошла ошибка. Сам я пользуюсь сразу несколькими отладчиками и несколькими анализаторами/декомпиляторами, но для Вас нашёл метод попроще

Neo писал(а):
Можно ли вопрос в разработке...

На этот и предыдущие вопросы можно ответить только по результатам практических экспериментов. Теоретически - всё возможно, но вероятность критических ошибок вырастает на порядок, т.к. тот самый механизм "подчистки" работает и в основном потоке, и может утянуть "из-под носа" у параллельного потока нужные ему данные и объекты, или наоборот.
карма: 1

0
Ответов: 704
Рейтинг: 7
#78: 2011-10-21 02:02:49 ЛС | профиль | цитата
1nd1g0 писал(а):
метод попроще
Просим, просим...
карма: 0

0
Ответов: 3889
Рейтинг: 362
#79: 2011-10-21 11:10:31 ЛС | профиль | цитата
Neo, == Секретная техника HiAsm-кунг-фу: ==
== ==
0) Запоминаем адрес Runtime error at 000xxxxx (лидирующие нули запоминать не обязательно)
1) Открыть ту же схему (обязательно - без малейших изменений!), которая вылетала после компиляции (в идеале - запускать из HiAsm, дождаться вылета, запомнить ошибку и , не закрывая схемы провести манипуляции, описанные ниже)
2) Сервис - Компиляторы - Сами_знаете_какой_компилятор - Командная строка
3) Дописываете в конце ещё один ключик с приклееным (то есть без пробела, без лидирующих нулей) к нему адресом: "%fname%" "-U %opath%." -Q -Fxxxxx (Внимание! Теперь при компиляции среда удалит приложение из папки, а перенастроенный компилятор новое не создаст, не удивляйтесь)
4) Жмёте "Сохранить", убеждаетесь, что тот же компилятор выбран в настройках компиляции
5) Запускаете компиляцию и смотрите в панель "Отладка"
6) Видите там :
hiНАЗВАНИЕ_ЭЛЕМЕНТА.pas(НОМЕР_СТРОКИ_В_ИСХОДНИКЕ) Target address found.
   dtInteger(_Data, TDocItem(FItem)._prop_X);
  ^
6.1) Галочка снизу указывает, какой именно оператор был скомпилирован в вызвавший ошибку участок кода.
7) Открываем исходник компонента (например, по CTRL+F), если это не компонент, а библиотека, можно, конечно, посмотреть и туда, но дальнейшие пункты не помогут.
8) Ищем нужный номер строки (CTRL+G)
9) Ищем по строчкам выше указанной первую вида procedure THIИмяКомпонента._ТипТочки_НазваниеТочки;
10) Вот на точке с таким именем у Вас и вылезла проблема, для восстановления нормальной компиляции удалите -Fxxxxx из настроек компилятора.
Больше информации даст только ключ компилятора -V, T[цензура] Debugger 5.5 и знания ассемблера Хороший отладчик и дамп памяти ничего не заменит. Раз из-за обработчика паскаля
Neo писал(а):
Никаких отчетов не создалось почему-то.
, то учимся создавать дампы самостоятельно, например [burl=http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=24370]этим[/burl], [burl=http://technet.microsoft.com/en-us/sysinternals/dd996900.aspx]этим[/burl] или [burl=http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx]этим[/burl]. А если бы у Вас была NT6.x , то ещё и штатным диспетчером задач. Другой вопрос, кто и как будет эти дампы анализировать
------------ Дoбавленo в 10.56:
Neo, если не уверены в твёрдой руке и зорком глазе, делаем мини-помощника (схема универсальная, рассчитана на извлечения адреса ошибки из системных и паскалевских окон, но под FPC пришлось бы немного подпилить):
Add(MainForm,2953706,581,301)
{
Width=337
Height=104
Caption="iFoundBug v 1.01 for HiAsm4"
Position=1
Point(doVisible)
}
Add(EnumProcess,1,595,455)
{
Name="HiAsm.exe"
Point(doFindName)
Point(doTerminateApp)
Point(onEndEnum)
link(onProcess,913119:doSearch,[])
link(onEndEnum,9898452:doWork3,[(634,468)])
}
Add(Position,913119,644,455)
{
Target="HiAsm.exe"
StartPos=0
ShortSearch=1
link(onSearch,1:doKill,[(688,461)(688,504)(584,504)(584,475)])
}
Add(MathParse,6921369,420,511)
{
DataCount=1
MathStr="1 XOR ((%1 = 8) OR ((%1 < 58) AND (%1 > 47)) OR ((%1 < 71) AND (%1 > 64)) OR ((%1 < 103) AND (%1 > 96))) "
ResultType=0
link(onResult,15365421:doReadOnly,[(459,517)(459,551)(367,551)(367,461)])
}
Add(Convertor,3538249,378,511)
{
Mode=3
link(onResult,6921369:doCalc,[])
}
Add(Edit,15365421,378,441)
{
Left=190
Width=110
Height=25
Font=[MS Sans Serif,14,0,0,1]
Text=""
MaxLenField=8
ClearAfterEnter=1
Point(onChar)
Point(doReadOnly)
Point(doSetFocus)
link(onEnter,15187644:doWork2,[])
link(onChar,3538249:doConvert,[(422,461)(422,479)(373,479)(373,517)])
}
Add(Label,12751195,581,343)
{
Width=185
Height=25
Font=[MS Sans Serif,14,0,0,1]
Caption="Runtime Error xxx at"
}
Add(CheckBox,13015840,546,406)
{
Top=32
Width=329
Align=4
Caption="Close HiAsm Automatically "
}
Add(IndexToChanel,14112223,546,448)
{
Point(Index)
link(onEvent1,9898452:doWork2,[])
link(onEvent2,1:doEnum,[])
link(Index,13015840:Checked,[])
}
Add(BitBtn,8848863,7,308)
{
Left=300
Width=28
Height=26
WinStyle=1
Bitmap=[ZIP3609000078DA73F235E36400033320D600620928666450804840E591C17F7AE0FFFF69830799F9F0301D62E6E302D4301FD91C747309DA41C07C74FDD8DC8DD70E3CE63390182FA498CF40469AC5AA87CEE6134A23F8C4B0EA1966E143AFF4438FF44F8FFC4B8FF2674894CFA318111E501A240AA21B686827C86C0082C8CFF1]
Point(onMouseDown)
link(onMouseDown,13657323:doEvent1,[])
}
Add(Timer,7902216,119,322)
{
Interval=100
Enable=1
link(onTimer,3079690:doReadKey,[])
}
Add(Keyboard,3079690,168,322)
{
Key=1
link(onReadKey,8327191:doEvent,[])
}
Add(IndexToChanel,8327191,217,322)
{
Count=1
link(onEvent1,15825518:doEvent1,[])
}
Add(Hub,15825518,259,322)
{
link(onEvent1,7902216:doStop,[(282,328)(282,358)(114,358)(114,335)])
link(onEvent2,14550971:doEvent1,[])
}
Add(ChanelToIndex,8531589,525,329)
{
link(onIndex,2953706:doVisible,[])
}
Add(Hub,13657323,77,315)
{
link(onEvent1,2014895:In,[(105,321)(105,314)])
link(onEvent2,7902216:doTimer,[])
}
Add(LineBreak,7325179,511,301)
{
Caption="doHide"
link(Out,8531589:doWork1,[(571,307)(571,321)(513,321)(513,335)])
Primary=[2014895,-392,7]
}
Add(Hub,14550971,301,329)
{
OutCount=3
link(onEvent1,1915601:doData,[(385,335)(385,237)])
link(onEvent2,8531589:doWork2,[])
link(onEvent3,15365421:doSetFocus,[(344,349)(344,468)])
}
Add(MultiElementEx,1915601,392,231)
{
@Hint=#24:Error message box reader|19:SendMessage version|
link(onCopy,5992494:In,[])
}
BEGIN_SDK
Add(EditMultiEx,5756599,21,21)
{
WorkCount=#6:doData|
EventCount=#6:onCopy|
Width=412
link(doData,5834539:doData,[(35,27)(35,97)])
}
Add(MouseEvent,2701288,119,49)
{
Point(Handle)
}
Add(Position,234326,273,133)
{
Target=" at 000"
StartPos=0
ShortSearch=1
link(onSearch,13714767:doOperation,[])
link(Str,3605979:Var2,[])
}
Add(Math,13714767,322,133)
{
Op2=7
ResultType=0
link(onResult,12025091:doCopy,[])
}
Add(Copy,12025091,364,133)
{
Count=5
link(onCopy,5756599:onCopy,[(425,139)(425,27)])
link(Str,3605979:Var3,[(370,117)])
}
Add(GetDataEx,3605979,273,112)
{
Angle=3
link(Data,13155387:Value,[(256,117)(256,177)(237,177)])
}
Add(SendMessage,15421399,133,140)
{
Message=13
link(onSend,16305821:doGet,[])
link(Handle,2701288:Handle,[])
link(LParam,1164314:Memory,[(153,131)(209,131)])
}
Add(MemoryStream,1164314,189,84)
{
Point(Memory)
Point(doSize)
}
Add(DataToFile,16305821,189,133)
{
Type=6
link(onGet,13155387:doValue,[])
link(Stream,1164314:Stream,[])
}
Add(Hub,8233292,98,91)
{
OutCount=3
link(onEvent1,1164314:doClear,[])
link(onEvent2,1164314:doSize,[])
link(onEvent3,15421399:doSendMessage,[(122,111)(122,146)])
}
Add(DoData,5834539,49,91)
{
Data=Integer(128)
link(onEventData,8233292:doEvent1,[])
}
Add(Memory,13155387,231,133)
{
link(onData,234326:doSearch,[])
}
END_SDK
Add(LineBreak,6525385,308,448)
{
Caption="doTxt"
link(Out,15365421:doText2,[])
Primary=[5992494,126,-217]
}
Add(MultiElementEx,15450613,392,189)
{
@Hint=#24:Error message box reader|15:WinInfo version|
}
BEGIN_SDK
Add(EditMultiEx,569034,21,21)
{
WorkCount=#6:doData|
EventCount=#6:onCopy|
Width=412
link(doData,2459071:doWinInfo,[(109,27)(109,132)])
}
Add(MouseEvent,15165435,182,49)
{
Point(Handle)
}
Add(DoData,7830115,245,126)
{
link(onEventData,569034:onCopy,[(355,132)(355,27)])
link(Data,2459071:Caption,[(251,114)(230,114)(230,170)(209,170)])
}
Add(WinInfo,2459071,196,126)
{
link(onWinInfo,7830115:doData,[])
link(Handle,15165435:Handle,[])
}
END_SDK
Add(FormatStr,4856907,700,448)
{
DataCount=1
Mask="function run(){
sys.addcompiler("Delphi",""%fname%" "-U %opath%." -Q -F%1","%curdir%compiler\delphi\dcc32.exe","dpr");
sys.setcompiler("delphi","Delphi_DBG");
}"
link(onFString,9435683:doEvent1,[(737,454)(737,475)])
link(Str1,9456644:Var,[])
}
Add(HubEx,9898452,630,448)
{
link(onEvent,4856907:doString,[])
}
Add(StrList,9418387,770,448)
{
FileName="ifndbg.his"
}
Add(Hub,9435683,742,469)
{
OutCount=3
link(onEvent1,9418387:doText,[])
link(onEvent2,9418387:doSave,[(763,482)(763,489)])
link(onEvent3,8609104:doShellExec,[(763,489)(763,517)])
}
Add(Button,1448331,378,399)
{
Top=52
Width=329
Height=25
Align=4
Caption="Analize IT!"
link(onClick,15187644:doWork1,[(417,405)])
}
Add(LineBreak,7868499,378,483)
{
Type=1
link(Data,15365421:Text,[])
Primary=[9456644,322,-56]
}
Add(HubEx,15187644,413,448)
{
link(onEvent,14112223:doEvent,[])
}
Add(WinExec,8609104,770,504)
{
Param=" "
FileName="ifndbg.his"
}
карма: 1

1
файлы: 1noerrors.png [22.8KB] [367]
Голосовали:Neo
Ответов: 704
Рейтинг: 7
#80: 2011-10-21 17:45:32 ЛС | профиль | цитата
1nd1g0, огромное спасибо за такую развернутую инструкцию!
Но у меня она не сработала. Видимо из-за другого типа ошибки, у меня пишет в отладчике только Target address no found (По памяти).
Пробовал и с нулями и без них. У меня теперь уже ExceptionK in module - первые строки ошибки, а не Access Violation at address

------------ Дoбавленo в 17.44:
И почему-то не понял как мини-помощника юзать. Ввел ему адрес, нажал оду и другую кнопку - открылась среда и ничего
------------ Дoбавленo в 17.45:
Кстати, в окне отладки есть пару строк
C:\Program Files\HiAsm\Elements\delphi\code\hiTCP_Server.pas(207) Warning: Variable 'st' might not have been initialized

C:\Program Files\HiAsm\Elements\delphi\code\hiTCP_Server.pas(250) Warning: Variable 'st' might not have been initialized
- это нормально?
карма: 0

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#81: 2011-10-21 17:54:28 ЛС | профиль | цитата
Neo писал(а):
это нормально?

Нормально. Просто предупреждение, что переменная может быть не инициализирована
карма: 22

0
Ответов: 704
Рейтинг: 7
#82: 2011-10-21 21:39:05 ЛС | профиль | цитата
Протестировал тут на досуге МультикEX с OnlyOnce - откуда такие чудеса магические? С ним схема отрабатывает за 4 секунды в среднем, а без него (или с ним, но Standart) - 10+ секунд с неслабым подвисанием приложения?! Вызывал новым потоком в обеих случаях. Итераций одинаковое количество (считал по событию после завершения обработок). Это же недюжинный прирост к производительности на ровном месте! Где подвох?
------------ Дoбавленo в 21.33:
Правда потоки (как и нужно было полагать) внутрь ставить - зло. Мультик убивается сразу после передачи данных параллельному потоку - соответственно потеря данных. Но без потоков даже лучше по скорости. А вот после мультика потоки работаю отлично.
------------ Дoбавленo в 21.39:
Но в основную программу боюсь пока ставить. Чую, что эта скорость не берется ниоткуда...
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#83: 2011-10-22 07:57:17 ЛС | профиль | цитата
nesco писал(а):
Нормально. Просто предупреждение, что переменная может быть не инициализирована
Что запросто может превратиться при работе программы в "Access Violation at address..."
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1841
Рейтинг: 369
#84: 2011-10-22 08:50:22 ЛС | профиль | цитата
Интересный у Вас проект)
Посмотрев кусочки схем выложенные в этом топике, думаю что стоит всёже по лучше изучить пакет и по практиковать с экзотическими для вас элементами в небольших проектах, изучить поведение элементов, свойства...
карма: 1
0
Гость
Ответов: 17029
Рейтинг: 0
#85: 2011-10-22 09:01:24 правка | ЛС | профиль | цитата


Редактировалось 3 раз(а), последний 2025-01-21 14:51:41
карма: 0

0
Ответов: 1841
Рейтинг: 369
#86: 2011-10-22 09:02:11 ЛС | профиль | цитата
[offtop]опять выкинуло[/offtop]
карма: 1
0
Ответов: 3889
Рейтинг: 362
#87: 2011-10-22 12:31:31 ЛС | профиль | цитата
[offtop]Пока у меня не было доступа к сети, гляжу, обсуждение клонит в другое русло.[/offtop]
Neo писал(а):
Видимо из-за другого типа ошибки

Какой тип ошибки, дословно? Я ориентировался на
Neo писал(а):
я ее и видел после нажатия кнопки Ok (других не было, окно ошибки как и на скрине)
, что бывает при Runtime error
Neo писал(а):
Target address no found

А можно узнать полный адрес? Желательно - всю строку, что Вы прописывали, и скриншот ошибки, и саму программу без оптимизации EXE, про дампы промолчим.
Такое бывает когда 1) отладку компиляцией запускали на схеме, отличающейся от первоначальной (мельчайшие изменения, например, забыли что-то сохранить перед запуском, потом открыли старую версию и пробовали отлаживать), естественно, адреса уже сменились.
2) ошибка произошла не в схеме (то есть не в Вашей программе), а, по вине Вашей программы (например, из-за путаницы с потоками, неправильно переданных данных и т.п.) в системных или сторонних библиотеках, естественно, адрес не будет найден - его заполнял не компилятор, не ему там и искать (искать системному отладчику т.к. кто и куда загрузит какую библиотеку компилятор знать не может).
3) Вы ввели адрес не из той строчки, часто их показывается два, один больше другого на 00400000
карма: 1

0
Ответов: 704
Рейтинг: 7
#88: 2011-10-22 12:59:07 ЛС | профиль | цитата
CriDos, поддерживаю, но Лень не дает этого сделать! Она, она, коварная! Да и производительность тоже не хочет делать кучу лишних действий при записи в лог. Дебагами пользуюсь при случае, но проблема в том, что ошибка не явная, а скрытая. А так, конечно, все новые схемочки проверяю отдельно.
------------ Дoбавленo в 12.59:
1nd1g0, да все та программа и той же ошибкой (картинка или звук там, как Вы писали). Удалил все скрины - ну ее. Буду методом тыка искать. В конце-концов появилось после UDP - буду копать возле них.
А вот комментарии о такой магической производительности после МультикEX с OnlyOnce очень хотелось бы услышать Думаю, это решит большинство моих проблем со стремными кусочками схемы, инициализируя их каждый раз новыми и пушистыми без багов и мусора от предыдущих данных. Почему так быстро все работает с этим OnlyOnce? Как такое может быть? Скорость в разы больше, чем даже с выполнением в параллельном потоке! Да и прицепил еще вывод в интерфейс - почти не сказалось на скорости (чего совсем не скажешь про потоки и обычную системную очередь). Может там в коде этого мультика видно какую то особенность и потенциальную ошибку при таком использовании. Уж очень похоже на сладкий запретный плод (как с потоками у меня получилось ).
карма: 0

0
Ответов: 3889
Рейтинг: 362
#89: 2011-10-22 14:05:08 ЛС | профиль | цитата
Neo, ну, дело Ваше, навязывать помощь не буду, IRL мне за отладку и оптимизацию хотя бы деньги платят.
Что касается схем с самоуничтожением, рад, что Вам так понравилась идея, если покажете на простейшей схеме, как выясняете, что
Neo писал(а):
Скорость в разы больше
, можно будет делать какие-то предположения.
карма: 1

0
Ответов: 704
Рейтинг: 7
#90: 2011-10-22 15:09:28 ЛС | профиль | цитата
1nd1g0 писал(а):
IRL
с уважением и восторгом присвистнул... Но чувствую и MicroSoft без вас не обошлась
И постить сюда все подряд ошибки мне неудобно - я же деньги за это не плачу. Постараюсь сам разгрести, тем более, Вы подробно рассказали мне способ HiAsm-кунг-фу
Схема моего теста ниже. Топорно, но быстро.


Add(MainForm,2953706,21,105)
{
Width=487
Height=152
}
Add(MultiElementEx,415504,609,210)
{
Mode=2
link(text,6608155:doWork1,[(711,216)])
link(exit,209138:doWork1,[(653,223)(653,249)(508,249)])
}
BEGIN_SDK
Add(EditMultiEx,1041487,21,21)
{
WorkCount=#2:do|
EventCount=#4:text|4:exit|
link(do,16167708:doFor,[(39,27)(39,83)])
}
Add(For,16167708,56,77)
{
End=100
link(onEvent,6167415:doStrCat,[])
link(onStop,1041487:exit,[(204,90)(204,34)])
}
Add(StrCat,6167415,105,77)
{
link(onStrCat,1041487:text,[(229,83)(229,27)])
link(Str2,6167415:Result,[(118,65)(114,65)(114,121)(111,121)])
}
END_SDK
Add(TimeCounter,3294057,357,294)
{
link(onStop,6604442:doOperation,[])
}
Add(Button,8165898,210,196)
{
Left=10
Top=10
Caption="Тест"
link(onClick,8225656:doFor,[])
}
Add(MultiElement,5569931,329,196)
{
@Hint=#29:Новый поток с теми же данными|
@Color=0
link(onEvent1,9380117:doWork2,[])
}
BEGIN_SDK
Add(EditMulti,5876466,21,21)
{
EventCount=1
WorkCount=1
Width=258
Height=179
link(doWork1,5953483:doSafeMode,[(53,27)(53,34)])
}
Add(StackEx,5867886,161,28)
{
StackType=0
Point(Count)
Point(onEmpty)
link(onPop,11913767:doEvent1,[])
}
Add(Thread,4169880,84,154)
{
Delay=25
link(onExec,7077563:doCompare,[])
}
Add(Timer,818394,35,154)
{
Interval=50
AutoStop=1
link(onTimer,4169880:doStart,[])
}
Add(Hub,11913767,203,35)
{
OutCount=3
link(onEvent1,16252863:doData,[(229,41)(229,76)(79,76)(79,111)])
link(onEvent2,5876466:onEvent1,[(234,48)(234,27)])
link(onEvent3,7560382:doClear,[(229,55)(229,87)(128,87)(128,118)])
}
Add(Memory,7560382,140,105)
{
Default=Integer(1)
}
Add(Memory,3987989,182,105)
{
Default=Integer(1)
}
Add(If_else,7077563,175,154)
{
link(onTrue,5867886:doPop,[(219,160)(219,100)(149,100)(149,41)])
link(Op1,7560382:Value,[(181,146)(146,146)])
link(Op2,3987989:Value,[])
}
Add(DoData,16252863,91,105)
{
Data=Integer(2)
link(onEventData,7560382:doValue,[])
}
Add(SafeMode,5953483,105,28)
{
Name="3"
link(onSafeMode,5867886:doPush,[])
}
END_SDK
Add(For,8225656,259,196)
{
End=19
link(onEvent,5569931:doWork1,[])
}
Add(Label,1938024,763,259)
{
Left=15
Top=65
Width=405
}
Add(Hub,9084842,406,196)
{
OutCount=3
link(onEvent1,3294057:doStart,[(432,202)(432,251)(345,251)(345,300)])
link(onEvent2,13416350:doWork,[(434,209)(434,188)])
link(onEvent3,7393862:doWork,[])
}
Add(Math,6604442,406,301)
{
link(onResult,6378205:doText,[])
link(Op2,6604442:Result,[(419,289)(415,289)(415,345)(412,345)])
}
Add(Label,6378205,448,301)
{
Left=165
Top=95
Width=4
Height=4
Caption=""
}
Add(For,9172687,602,259)
{
End=100
link(onEvent,5397307:doStrCat,[])
link(onStop,209138:doWork2,[(646,272)(646,279)])
}
Add(StrCat,5397307,651,259)
{
link(onStrCat,6608155:doWork2,[])
link(Str2,5397307:Result,[(664,247)(660,247)(660,303)(657,303)])
}
Add(HubEx,9380117,383,196)
{
link(onEvent,9084842:doEvent1,[])
}
Add(HubEx,6608155,707,259)
{
link(onEvent,11446444:doEvent1,[(724,265)(724,286)])
}
Add(HubEx,209138,504,273)
{
Angle=2
link(onEvent,3294057:doStop,[(345,279)(345,307)])
}
Add(Check,7393862,448,210)
{
Caption="Через мультик"
link(onEvent,415504:do,[])
}
Add(Check,13416350,448,182)
{
Check=1
Caption="В систменом потоке"
link(onEvent,9172687:doFor,[(587,188)(587,265)])
}
Add(Label,10730459,252,147)
{
Left=85
Top=95
Width=79
Height=17
Caption="Выполнено за:"
}
Add(Label,1609889,602,329)
{
Left=370
Top=15
}
Add(CounterEx,1164901,560,329)
{
Max=1000000
link(onNext,1609889:doText,[])
}
Add(Hub,11446444,735,280)
{
link(onEvent1,1938024:doText,[(756,286)(756,265)])
link(onEvent2,1164901:doNext,[(754,293)(754,304)(548,304)(548,335)])
}



Брал за тест строковую операцию, т.к. с ними чаще работаю и именно они у меня тупят чаще
------------ Дoбавленo в 15.09:
У меня разница по скорости в 2 раза на этой схеме. Если убрать стек - еще быстрее будет, но пока не от всех стеков могу избавиться в основной программе.
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)