Вверх ↑
Этот топик читают: Гость
Ответов: 1088
Рейтинг: 112
#1: 2016-08-10 18:05:57 ЛС | профиль | цитата
Во время переделки схемы от nesco(http://forum.hiasm.com/forum.html?q=3&p=286685#p286685) что-то пошло не так и перестали меняться картинки.
локализовал схему до 14 элементов, но всё равно не понял причину такого поведения
видимо я тупой
wtf.sha
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1wtf.sha [605.4KB] [538]
Разработчик
Ответов: 26155
Рейтинг: 2127
#2: 2016-08-10 19:09:22 ЛС | профиль | цитата
Sniper36 писал(а):
но всё равно не понял причину такого поведения

Картинка подается по ##add раньше, чем происходит инициализация элементов. Я же специально сделал точку Data в схеме для добавления данных. Те экземпляры в моей схеме уже гарантированно созданы и инициализированы первой отрисовкой.
карма: 22

0
Ответов: 1088
Рейтинг: 112
#3: 2016-08-11 17:28:57 ЛС | профиль | цитата
тогда надо поправить описание элемента DocumentTemplate, doDraw инициализирует шаблон, затем отрисовывает элемент.
не понятно что содержимого шаблона не существует до первого вызова отрисовки.
------------ Дoбавленo в 16.15:
хотя на самом деле меня смутило что текстовые значения устанавливаются нормально. как-то не логично получается.
------------ Дoбавленo в 17.28:
Нет, всё-таки не понимаю
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Разработчик
Ответов: 26155
Рейтинг: 2127
#4: 2016-08-11 23:04:19 ЛС | профиль | цитата
Sniper36 писал(а):
Нет, всё-таки не понимаю

Я пока сам не очень понимаю, тк занялся капитальной доработкой этого набора компонентов и уже нарыл несколько подводных камней, и этот один из них. Я все равно вернусь к этому вопросу с элементом контроллера картинок, но все последовательно и не быстро. Тч над подождать, а пока он работает, как работает, те для установки картинок надо проинициализировать элемент печати картинок, а это пока делается только полной отрисовкой. В будущем можно будет отрисовать любой элемент шаблона по его имени.
карма: 22

0
Ответов: 1088
Рейтинг: 112
#5: 2016-08-12 18:27:26 ЛС | профиль | цитата
костыль, но вроде работает нормально.
code_37640.txt
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1code_37640.txt [5.2KB] [507]
Разработчик
Ответов: 26155
Рейтинг: 2127
#6: 2016-08-12 18:35:06 ЛС | профиль | цитата
Sniper36 писал(а):
костыль, но вроде работает нормально.

Солидно , но я бы лучше подождал апгрейд, там уже исправлен этот косяк. Хотя можно и так потренироваться, оно все равно будет работать и после апгрейда.

Я че-то телодвижений только не пойму -- тебе что, надо загружать картинку сразу при создании, те ты все данные хочешь грузить при создании экземпляров контейнера? А смысл?
карма: 22

0
Ответов: 1088
Рейтинг: 112
#7: 2016-08-13 13:21:49 ЛС | профиль | цитата
nesco писал(а):
тебе что, надо загружать картинку сразу при создании, те ты все данные хочешь грузить при создании экземпляров контейнера? А смысл?

да. а смысл создавать пустые контейнеры, а потом заполнять, если перед созданием известно что в нем будет?

Вот тут тоже непонятно, почему таймер ломает передачу данных?
code_37643.txt
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1code_37643.txt [4KB] [475]
Разработчик
Ответов: 26155
Рейтинг: 2127
#8: 2016-08-13 14:21:33 ЛС | профиль | цитата
Sniper36 писал(а):
Вот тут тоже непонятно, почему таймер ломает передачу данных?

Потому, что картинка внутри компонента жива только в пределах одной очереди событий. Таймер же разрывает очередь событий. Внутри компонента код считает, что картинка уже передана и благополучно ее чистит, и затем отдает управление системе. А псле сработки таймера присходит попытка считать уже пустую картинку.
карма: 22

0
Ответов: 1088
Рейтинг: 112
#9: 2016-08-13 14:38:29 ЛС | профиль | цитата
почему чистятся только бинарные данные и как это обойти?
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Разработчик
Ответов: 26155
Рейтинг: 2127
#10: 2016-08-13 16:38:05 ЛС | профиль | цитата
Sniper36 писал(а):
почему чистятся только бинарные данные и как это обойти?

Что бы не занимать выделенную под них память, и что бы потом не было воплей -- а что это у меня прога сожрала всю память и вылетела.

Как обойти -- передавать указатель на стрим, и заниматься чисткой стрима самому (те не забывать очищать накопитель перед каждым использованием) и преобразовывать стрим уже на входе.

Add(MainForm,13475043,42,189)
{
link(onCreate,10148634:doWork1,[])
}
Add(Timer,14745376,462,245)
{
Enable=1
AutoStop=1
link(onTimer,11202744:doWork3,[(501,251)])
}
Add(MultiElement,10148634,112,203)
{
link(onEvent1,8593708:doEvent1,[])
}
BEGIN_SDK
Add(EditMulti,15494728,21,21)
{
EventCount=1
WorkCount=1
VarCount=1
Width=594
Height=340
link(doWork1,1959568:doCreate,[(123,27)(123,48)])
}
Add(GetDataEx,194253,273,123)
{
Angle=3
link(Data,31785:Position,[(174,128)])
}
Add(PointXY,47468,322,154)
{
link(X,14370786:Var2,[])
link(Y,14370786:Var3,[(335,128)])
}
Add(MathParse,56984,322,77)
{
DataCount=1
MathStr="(255 - %1) *2"
ResultType=0
link(onResult,775:doDraw,[(361,83)(361,293)(284,293)(284,258)])
}
Add(Img_Ellipse,775,294,252)
{
Point2AsOffset=0
Style=1
Point(BgColor)
Point(Point1)
Point(Point2)
link(Bitmap,3001651:Var3,[(300,198)])
link(Color,15429529:Var1,[(307,205)])
link(BgColor,15429529:Var2,[])
link(Point1,89528:Point,[(321,195)(279,195)])
link(Point2,47468:Point,[])
}
Add(GetDataEx,3001651,224,193)
{
link(Data,8267678:Var2,[])
}
Add(Img_Text,28603,224,252)
{
X=50
Y=475
Font=[Courier New,11,1,65280,1]
Text="Отрисовка эллипсов с убывающей R составляющей цвета"
Point(Orientation)
link(Bitmap,3001651:Var2,[])
link(Orientation,6652827:Value,[])
}
Add(GetDataEx,14370786,322,123)
{
link(Data,56984:Result,[])
}
Add(PointXY,89528,273,154)
{
link(X,194253:Var2,[])
link(Y,10895933:Var2,[])
}
Add(For,31785,168,77)
{
End=255
link(onEvent,56984:doCalc,[])
link(onStop,12303137:doData,[(342,90)(342,104)])
}
Add(GetDataEx,10895933,280,123)
{
Angle=3
link(Data,194253:Var3,[])
}
Add(GetDataEx,15429529,308,200)
{
link(Data,10895933:Var3,[(314,128)])
}
Add(Memory,6652827,238,203)
{
Default=Integer(0)
}
Add(Bitmap,1959568,224,28)
{
HWidth=33
HHeight=33
FillColor=657930
Point(doCreate)
Point(onCreate)
link(onCreate,31785:doFor,[(268,34)(268,58)(156,58)(156,83)])
}
Add(DoData,12303137,483,98)
{
link(onEventData,15494728:onEvent1,[(565,104)(565,27)])
link(Data,8267678:Var3,[(489,68)])
}
Add(GetDataEx,8267678,224,63)
{
link(Data,1959568:Bitmap,[])
}
END_SDK
Add(InfoTip,4460978,98,175)
{
Info=#19:это просто картинка|
Height=95
}
Add(BitmapStream,7526153,217,203)
{
link(Stream,354201:Var1,[(223,187)])
}
Add(MemoryStream,11319442,280,133)
{
Point(doPosition)
}
Add(Hub,8593708,168,203)
{
OutCount=4
link(onEvent1,11319442:doClear,[(193,209)(193,146)])
link(onEvent2,7526153:doWrite,[])
link(onEvent3,11319442:doPosition,[(203,223)(203,153)])
link(onEvent4,2427717:doValue,[(207,230)(207,244)])
}
Add(BitmapStream,6608486,686,224)
{
link(Stream,12620579:Var1,[(692,208)])
}
Add(MemoryStream,8422438,749,133)
{
Point(doPosition)
}
Add(Hub,9266151,637,224)
{
OutCount=3
link(onEvent1,8422438:doClear,[(662,230)(662,146)])
link(onEvent2,6608486:doWrite,[])
link(onEvent3,9470540:doConvert,[(662,244)(662,265)])
}
Add(StreamConvertor,9470540,749,259)
{
Mode=4
link(onResult,7197686:doAdd,[])
link(Data,12620579:Var2,[])
}
Add(Check,4855911,385,203)
{
Check=1
Caption="Direct"
link(onEvent,11202744:doWork1,[(501,209)])
}
Add(HubEx,11202744,497,224)
{
link(onEvent,10333123:doData,[])
}
Add(Memo,7197686,805,259)
{
Left=770
Top=370
Align=5
ScrollBars=2
}
Add(BitmapStream,8904274,581,224)
{
link(onRead,9266151:doEvent1,[])
}
Add(Hub,14421879,343,238)
{
link(onEvent1,4855911:doWork,[(368,244)(368,209)])
link(onEvent2,8106454:doWork,[])
}
Add(GetDataEx,354201,280,182)
{
link(Data,11319442:Stream,[])
}
Add(Check,8106454,385,245)
{
Caption="Timer"
link(onEvent,14745376:doTimer,[])
}
Add(DoData,10333123,525,224)
{
link(onEventData,8904274:doRead,[])
link(Data,2427717:Value,[(531,215)(517,215)(517,285)(286,285)])
}
Add(Memory,2427717,280,238)
{
Point(Data)
link(onData,14421879:doEvent1,[])
link(Data,354201:Var2,[])
}
Add(GetDataEx,12620579,749,203)
{
link(Data,8422438:Stream,[])
}


карма: 22

1
Голосовали:Sniper36
Разработчик
Ответов: 26155
Рейтинг: 2127
#11: 2016-08-13 16:40:34 ЛС | профиль | цитата
Можно использовать еще компоненты Pack и UnPack, и передавать одним стримом кучу данных

Add(MainForm,13475043,91,224)
{
Height=343
link(onCreate,10148634:doWork1,[])
}
Add(Timer,14745376,462,245)
{
Enable=1
AutoStop=1
link(onTimer,11202744:doWork3,[(501,251)])
}
Add(MultiElement,10148634,161,238)
{
link(onEvent1,13094686:doAdd,[])
}
BEGIN_SDK
Add(EditMulti,15494728,21,21)
{
EventCount=1
WorkCount=1
VarCount=1
Width=594
Height=340
link(doWork1,1959568:doCreate,[(123,27)(123,48)])
}
Add(GetDataEx,194253,273,123)
{
Angle=3
link(Data,31785:Position,[(174,128)])
}
Add(PointXY,47468,322,154)
{
link(X,14370786:Var2,[])
link(Y,14370786:Var3,[(335,128)])
}
Add(MathParse,56984,322,77)
{
DataCount=1
MathStr="(255 - %1) *2"
ResultType=0
link(onResult,775:doDraw,[(361,83)(361,293)(284,293)(284,258)])
}
Add(Img_Ellipse,775,294,252)
{
Point2AsOffset=0
Style=1
Point(BgColor)
Point(Point1)
Point(Point2)
link(Bitmap,3001651:Var3,[(300,198)])
link(Color,15429529:Var1,[(307,205)])
link(BgColor,15429529:Var2,[])
link(Point1,89528:Point,[(321,195)(279,195)])
link(Point2,47468:Point,[])
}
Add(GetDataEx,3001651,224,193)
{
link(Data,8267678:Var2,[])
}
Add(Img_Text,28603,224,252)
{
X=50
Y=475
Font=[Courier New,11,1,65280,1]
Text="Отрисовка эллипсов с убывающей R составляющей цвета"
Point(Orientation)
link(Bitmap,3001651:Var2,[])
link(Orientation,6652827:Value,[])
}
Add(GetDataEx,14370786,322,123)
{
link(Data,56984:Result,[])
}
Add(PointXY,89528,273,154)
{
link(X,194253:Var2,[])
link(Y,10895933:Var2,[])
}
Add(For,31785,168,77)
{
End=255
link(onEvent,56984:doCalc,[])
link(onStop,12303137:doData,[(342,90)(342,104)])
}
Add(GetDataEx,10895933,280,123)
{
Angle=3
link(Data,194253:Var3,[])
}
Add(GetDataEx,15429529,308,200)
{
link(Data,10895933:Var3,[(314,128)])
}
Add(Memory,6652827,238,203)
{
Default=Integer(0)
}
Add(Bitmap,1959568,224,28)
{
HWidth=33
HHeight=33
FillColor=657930
Point(doCreate)
Point(onCreate)
link(onCreate,31785:doFor,[(268,34)(268,58)(156,58)(156,83)])
}
Add(DoData,12303137,483,98)
{
link(onEventData,15494728:onEvent1,[(565,104)(565,27)])
link(Data,8267678:Var3,[(489,68)])
}
Add(GetDataEx,8267678,224,63)
{
link(Data,1959568:Bitmap,[])
}
END_SDK
Add(InfoTip,4460978,147,210)
{
Info=#19:это просто картинка|
Height=95
}
Add(BitmapStream,6608486,637,224)
{
link(Stream,12620579:Var1,[(643,208)])
link(Bitmap,7214892:Beetmap,[(650,215)(678,215)(678,271)(545,271)])
}
Add(MemoryStream,8422438,700,133)
{
Point(doPosition)
}
Add(Hub,9266151,588,224)
{
OutCount=4
link(onEvent1,8422438:doClear,[(613,230)(613,146)])
link(onEvent2,6608486:doWrite,[])
link(onEvent3,9470540:doConvert,[(627,244)(627,265)])
link(onEvent4,1611795:doText,[(620,251)(620,314)])
}
Add(StreamConvertor,9470540,700,259)
{
Mode=4
link(onResult,7197686:doAdd,[])
link(Data,12620579:Var2,[])
}
Add(Check,4855911,385,203)
{
Check=1
Caption="Direct"
link(onEvent,11202744:doWork1,[(501,209)])
}
Add(HubEx,11202744,497,224)
{
link(onEvent,7214892:doUnPack,[])
}
Add(Memo,7197686,756,259)
{
Width=384
Height=262
ScrollBars=2
}
Add(Hub,14421879,343,238)
{
link(onEvent1,4855911:doWork,[(368,244)(368,209)])
link(onEvent2,8106454:doWork,[])
}
Add(Check,8106454,385,245)
{
Caption="Timer"
link(onEvent,14745376:doTimer,[])
}
Add(GetDataEx,12620579,700,203)
{
link(Data,8422438:Stream,[])
}
Add(StreamPack,974364,287,238)
{
DataCount=#7:Beetmap|4:Text|
link(onPack,14421879:doEvent1,[])
}
Add(StreamUnPack,7214892,539,224)
{
DataCount=#7:Beetmap|4:Text|
link(onUnPack,9266151:doEvent1,[])
link(Stream,974364:ResultStream,[(545,215)(531,215)(531,285)(293,285)])
}
Add(MT_AddData,13094686,231,238)
{
InputMT=0
link(onAdd,974364:doPack,[])
link(Data1,14335824:Value,[])
}
Add(Edit,1611795,672,308)
{
Left=10
Top=270
Width=370
Text=""
link(Str,7214892:Text,[(678,299)(552,299)])
}
Add(Memory,14335824,231,168)
{
Default=String(Test! Test! Test!)
AddHint(62,-25,103,13,Default)
}

карма: 22

0
Ответов: 497
Рейтинг: 16
#12: 2016-08-14 02:10:53 ЛС | профиль | цитата
ну если уж зацепили тему MemoryStream думаю не будет лишним поделиться одной моей старой доработкой
http://forum.hiasm.net/forum_serv.php?q=56&id=4422
карма: 1
        ]  
0
Разработчик
Ответов: 26155
Рейтинг: 2127
#13: 2016-08-14 02:38:05 ЛС | профиль | цитата
RAWY_EX писал(а):
ну если уж зацепили тему MemoryStream думаю не будет лишним поделиться одной моей старой доработкой

Мдааа... Уж. Что только лень не делает
карма: 22

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