Вверх ↑
Этот топик читают: Гость
Ответов: 9
Рейтинг: 0
#1: 2016-10-23 01:13:54 ЛС | профиль | цитата
Столкнулся с проблемным для меня элементом Rect. Он во вкладке конструктора: Инструменты › Геометрия.
Суть в том что он ни при каких подключениях не хочет на выходе выдавать данные.
Прикладываю свой проект SHA где видно для чего он мне нужен, чем временно заменён с частичной потерей его функций.
Буду рад если кто подскажет формулу работы Rect (а именно момент объединения площади поля по двум вершинам координат).
карма: 1

0
Ответов: 1536
Рейтинг: 176
#2: 2016-10-23 09:46:58 ЛС | профиль | цитата
Просто бросилось в глаза

Add(MainForm,2953706,21,105)
{
Width=469
Height=170
}
Add(ChildPanelRush,4086352,77,105)
{
}
BEGIN_SDK
Add(EditMultiEx,156685,84,84)
{
Width=265
Height=172
}
Add(PanelRush,609666,273,182)
{
Left=10
Top=10
Width=428
Height=109
Glyphs=[]
}
Add(StrList,2810958,175,119)
{
Strings=#180:Мне нужно решение! >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>@ А не баловаться с кнопочками)) >>>>>>>>@ Читать проблему сначала >>>>> |108:Не могу разобраться с конкретным элементом в схеме, отчего и запрашиваю совета\подсказки. |151:Почему Я в HiASM, не могу извлечь данные о координатах на выходе из элемента: Область(Rect)?@Именно этот элемент в конструкторе у меня вообще мёртвый. |178:Элемент Rect создаёт регион из левой_верхней точки,и правой_нижней точки.@Из их вершин отрисовывается условный четырёхугольник: то-есть активное поле прямоугольника или квадрата.|204:Сами-же точки - вершины будущего поля создаютсяиз переменных [X1 & Y1]- это левая_верхняя, и [X2 & Y2]-это правая_нижняя.@Переменные X & Y это координаты, но далее они конвертируются в 16-ричное значение.|137:Это действие выполняется по формуле: ((Y * 65536) + X)=Point@Для этого расчёта в HiASM создан специальный элемент:@Точка(Х,Y) Point(X,Y) |249:Получив две Point на Форме получается как-бы виртуальная диагональ будующей фигуры четырёхугольника.@Вот область площади из двух Point я не знаю как прописать.@Буду рад если подскажете эту формулу.@То-есть хочу формулу работы элемента: Область(Rect)|270:Выкладываю схему проекта для наглядности.Тут летающий кубик периодически соприкасается с другим кубиком.@Но летающий кубик по сути на данную минуту имеет активную точку только на его верхней левой вершине, а не по всей его площади. Взаимодействие кубиков увы не полное. |224:В схеме где сейчас стоит Мат-Парсер должен стоять Rect.@При всех попытках подключения Rect в проекте не подаёт признаков жизни.@Я его даже готов полностью заменить своей логикой, но не знаю как он вычисляет данные на выходе.|189:Конструктор версия HiASM 4.4 b-185 с сайта.@Имею 8.1 и ХР два компа, нигде в сборках элемент Rect не работает.@FPC компиллирование, Rect по справке по смене компиллятора не предупреждалось.|648: ......||||.........||||...............||||||||||||||||...............||||||||||||||.......................@ ........|||||........|||||...............|||......................|||.............................@ ...........||||.|||...|||.||||...............|||||||||||..................|||||||.....................@ ..............||||..|||.|||..||||...............|||.............................||||.............@ ................||||....|||...||||...............|||..............................||||........@....................||||.........||||...............||||||||||||||||.............|||||||||||||||.....|
}
Add(ArrayRW,16543616,189,182)
{
link(onRead,9189448:doReplace,[])
link(Array,2810958:Array,[])
}
Add(Replace,9189448,231,182)
{
SubStr="@"
DestStr="\r\n"
link(onReplace,609666:doCaption,[])
}
Add(CounterEx,15929388,147,182)
{
Max=10
link(onNext,16543616:doRead,[])
}
Add(ButtonRush,1993074,105,182)
{
Left=375
Top=80
Width=45
Height=20
Caption="Жми!"
Glyphs=[]
link(onClick,15929388:doNext,[])
}
END_SDK

Редактировалось 3 раз(а), последний 2016-10-23 09:49:11
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 9
Рейтинг: 0
#3: 2016-10-23 20:30:20 ЛС | профиль | цитата
ser_davkin
У меня там было так задумано: стартануть с первой страницы, пролистать их допускалось только вперёд до десятой; и уже потом разморозить возможность реверса возврата пролистывания текстов от десятой страницы до нулевой. А вот в нулевой ранее не прочитанной странице; как-раз упоминалось не баловаться кнопочками, а стараться решить тему по существу описанной проблемы. Вот сценарий задуманных направлений стрелочками: start1>2>3>4>5>6>7>8>9>outcome_restart>10<>9<>8<>7<>6<>5<>4<>3<>2<>1<>0end И кстати там внизу при запуске программы был красный указатель, изучите из чего он создан. Да! Как раз из тех самых блоков Edit которые Вы хотели заменить текстовым массивом. То что на вскидку кажется изначально лишним - бывает применяется повторно в другом месте и для других целях; в этом и есть достоинство фрагментов при работе со слоями. Итог: На Производительность и на Вес ни Ваша, ни моя схемы не имеют; и уж тем-более с первопричиной создания и в решении темы никак не связаны.
карма: 1

0
Ответов: 2059
Рейтинг: 132
#4: 2016-10-23 21:44:56 ЛС | профиль | цитата
Белиберда какая-то.
Mes, ты всё путаешь.
Чтобы были лампосины, надо чтобы лапочки и апельсины друг-друга полюбили и появилось потомство.
Что ты хочешь получить в синеньком кубке? (И что туда пуляешь? - и все остальные? - оно и тоже) ???
ser_davkin,

Попробую завтра сформулировать вопрос. Похоже, что одну и ту-же задачу решаем.(Не про многострочные... - там надо сделать концом строки - 0, а не перевод строки. Просто в *.pas - Да, не стандартно, но на один раз можно, чтобы IC не делать. )
Сегодня у меня внучка родилась!!! и вряд-ли, что я внятное буду бормотать, пока жена сына и внучка не будут дома.

Редактировалось 1 раз(а), последний 2016-10-23 21:45:40
карма: 6

0
Ответов: 1536
Рейтинг: 176
#5: 2016-10-23 22:10:03 ЛС | профиль | цитата
flint2,
я другого не могу понять, как у Mes, который уже два поста срубил на счётчике единица.
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 9
Рейтинг: 0
#6: 2016-10-23 22:37:47 ЛС | профиль | цитата
flint2 в подаваемых данных в Rect белиберды нет, и я ничего не путаю. На входы: х1 у1 х2 у2 я подал ради упрощения связей и схемы одинаковую цифру. По системе координат должна получится фигура квадрат размером в 1 пиксель. То что такие данные на входе возможны, логика того не запрещает. Я подобное проверил в собрате элемента PointInRect который в проекте без нареканий сейчас работает. Проблемный узел специально вынесен вниз. Подайте на входы в Rect свои данные которые считаете верными. Хотите отрубите все цепи и введите свои статические координаты через свойства элемента. Суть в том что на выходе в синий кубок ни при каких раскладах у меня ничего не приходит. х1=40 у1=40 х2=60 у2=20.. и т.д. Проверьте пжалуйста Rect на работоспособность со своими координатами
карма: 1

0
Разработчик
Ответов: 26158
Рейтинг: 2127
#7: 2016-10-23 22:49:28 ЛС | профиль | цитата
Mes писал(а):
Проверьте пжалуйста Rect на работоспособность со своими координатами

Mes, ошибка в твоей схеме в том, что компонент Rect имеет на выходе данные структуры TRect, которые нигде в HiAsm не применяются, тем более, в качестве строковой переменной. Те данные проходят по связям, вот только их никто читать не умеет

Редактировалось 4 раз(а), последний 2016-10-23 22:53:45
карма: 22

0
Ответов: 8926
Рейтинг: 823
#8: 2016-10-23 23:38:28 ЛС | профиль | цитата
nesco, может Dilma хотел использовать в отрисовке KOL-овские функции:
DrawFocusRect( R ) - рисует фокусную рамку вдоль заданного прямоугольника (используется Pen в режиме XOR, т.е. повторный вызов того же метода возвращает изображение в исходное состояние);
FillRect( R ) - заливает прямоугольник R используя кисть (Brush);
[b]FrameRect( R ) - рисует границу заданного прямоугольника используя кисть (Brush);
DrawText( s, R, flags ) - рисует текст в прямоугольнике, используя API-функцию DrawText и позволяя выполнить форматирование текста в соответствии с заданными флажками;
TextRect( R, X, Y, s ) - рисует текст, ограничивая область отрисовки прямоугольником R;
но отказался, а заготовленный компонент остался

Редактировалось 1 раз(а), последний 2016-10-23 23:39:34
карма: 19

0
Ответов: 2059
Рейтинг: 132
#9: 2016-10-23 23:59:37 ЛС | профиль | цитата
Так точно!
nesco дал формулировку в академических понятиях.
Леонид, ты мысли читаешь..? Я думал, что надо посмотреть нижнюю точку.

---------------------------------------------------------------------------
А компонент по образу и подобию, что X,Y, только две точки.
Просто не прижился, хотя для видео и ... вполне оправдан, чтобы не две, а одну точку сверху лепить в компонентах.

ser_davkin, я не о этом.
Я по поводу других постов.
...По поводу озвучивания текста.
(прямо не сказано, но ... Кто о чём, а голый про баню. - это я про себя.)
Не страшно, что ошибаюсь.
С неокрепшей психикой - не смотреть.

Делаю голос.

Редактировалось 3 раз(а), последний 2016-10-24 00:45:57
карма: 6

0
Ответов: 9
Рейтинг: 0
#10: 2016-10-24 00:48:57 ЛС | профиль | цитата
Логика структуры PointInRect создаёт из двух смежных вершин площадь, которая активна на отлов точки в её границах.
Логика структуры Rect так-же создаёт из двух смежных вершин площадь, которая активна габаритами в её границах.
Один проецирует чувствительную площадь на приём, а другой проецирует габариты активной площади...
Я хотел выход из Rect подать на вход PointInRect в проекте; и предполагал что эти два элемента будут работать в паре так-как заточены друг для друга.
Два элемента рядом друг с другом во вкладке Геометрии, и схожи в работе; пользователь интуитивно предполагает что они должны работать в связке
Жаль что это всё на самом деле не так, и они по заявленному функционалу несовместимы в работе в одной связке.
Но я не расстраиваюсь! В летающем кубике у меня активна и взаимодействует на событие сейчас пока только лево_верхняя вершина, я добавлю в схему ещё три мат-парсера которые со смещением создадут три недостающих вершины фигуры, не вижу в этом никаких недочётов в реалистичности траектории движения и срабатывания кубика в проекте.
Давно бы долелал узел проекта если-бы элемент Rect мне на глаза не попался-бы вообще
Советую добавить в Справку что элемент Rect к примеру не совместим со входом PointInRect. Слишком мало было вводной информации о Rect чтобы об него не споткнуться.
Всем спасибо за разъяснение Честно признаюсь я так и не понял: после обработки по входу координат в виде натуральных чисел, что за данные Rect отдаёт на своём выходе в Label Если не буквы и не цифры, то пустоту чтоли =====Ладно, Спасибо хоть за какое-то прояснение о элементе =====
карма: 1

0
Разработчик
Ответов: 26158
Рейтинг: 2127
#11: 2016-10-24 01:11:24 ЛС | профиль | цитата
Mes писал(а):
пустоту чтоли

Да, выдает пустую строку, тк метод текстовой конвертации может конвертировать в строку только типы данных data_str, data_int и data_real, а все остальные считаются пустой строкой.

Редактировалось 1 раз(а), последний 2016-10-24 01:12:03
карма: 22

0
Ответов: 9
Рейтинг: 0
#12: 2016-10-24 08:09:06 ЛС | профиль | цитата
Ёмаё Задачка: Имеем квадрат только с одной активной лево_верхней вершиной. Но если хотим добавить ещё три активных вершины, то добавляем в схему мат-парсеры и для каждой вершины прописываем свою формулу учитывая смещение каждой вершины в системе координат прибавляя или отнимая размеры сторон фигуры.
Всё расчитав мы получаем за 1-цикл 4-значения каждой из вершин. Но вот одновременно эти 4-значения в элемент-приёмник за 1-цикл не отослать, и при этом их видоизменять к примеру сложить или перемножить нельзя иначе координата изменится.
Получается что элемент-приёмник должен работать на 4-такта быстрее основного цикла, чтобы за 1-цикл принять и опросить 4-значения.
Если смотреть взглядом электротехники, то их языком получается четырёхфазное напряжение между ключами и приёмником с обязательной поддержкой синхронизации между ними.
Не удивлюсь если кто-то что-то недопонял). Добью проект раз начал, залью узел с решением.
А вообще для таких случаев должен-же быть какой-то инструмент типа ХУ-сетки или матрицы задающий активные вершины габаритов фигуры....
карма: 1

0
Разработчик
Ответов: 26158
Рейтинг: 2127
#13: 2016-10-24 09:54:17 ЛС | профиль | цитата
Mes писал(а):
А вообще для таких случаев должен-же быть какой-то инструмент типа ХУ-сетки или матрицы задающий активные вершины габаритов фигуры....

Так вроде же есть компонент Matrix
карма: 22

0
Ответов: 8926
Рейтинг: 823
#14: 2016-10-24 10:03:51 ЛС | профиль | цитата
Mes, посмотрите схемку от коллеги foksov-а, может пригодится:
Картинка в четырёхугольнике


Add(Label,5079206,567,98)
{
Left=55
Top=5
Width=55
Height=17
Caption="Исходный"
}
Add(MainForm,9551264,602,56)
{
Width=798
Height=551
Caption="Деформация"
BorderStyle=1
Position=1
link(onCreate,13822067:doEvent1,[])
}
Add(ChildPanel,5175251,686,112)
{
link(onEvent1,2572868:doLoad,[])
link(onEvent2,22670:doLoad,[(725,125)(725,167)])
}
BEGIN_SDK
Add(EditMulti,12533179,14,7)
{
EventCount=2
WorkCount=2
VarCount=1
Width=797
Height=263
link(doWork1,70937:doEvent1,[])
link(doWork2,8907202:doEvent1,[(46,20)(46,41)])
link(Var1,600467:Var1,[(20,165)])
}
Add(Panel,5118939,231,35)
{
Left=170
Width=620
Height=515
WinStyle=1
BorderStyle=1
}
Add(PaintBox,12791373,91,77)
{
Left=2
Top=2
Width=620
Height=515
Color=16777215
WinStyle=1
Point(Width)
Point(Height)
link(onBeforeDraw,7015858:doDraw,[(130,83)(130,118)(116,118)(116,181)])
}
Add(ChildPanelEx,3277863,371,98)
{
Mode=1
link(onTop,14372150:doEvent1,[])
link(onMouseUp,5824829:doEvent1,[(411,111)(411,146)])
link(wb,5034828:Var2,[])
}
BEGIN_SDK
Add(EditMultiEx,12902457,203,133)
{
WorkCount=#5:##add|0:|
EventCount=#5:onTop|9:onMouseUp|
VarCount=#12:##eventIndex|
DataCount=#2:wb|
Width=335
Height=165
Point(##add)
Point(##eventIndex)
link(##add,5772976:doRead,[(217,139)(217,209)])
}
Add(Panel,9084549,364,196)
{
Left=15
Top=10
Width=7
Height=7
Color=255
TabOrder=-1
Ctl3D=0
BevelOuter=2
Point(Handle)
Point(doLeft)
Point(doTop)
Point(Left)
Point(Top)
Point(onMouseDown)
Point(onMove)
Point(doSetFocus)
Point(onMouseMove)
link(onMouseDown,5699333:doMove,[(408,209)(408,185)(352,185)(352,153)])
link(onMove,11836548:doData,[])
link(onMouseMove,12785750:doEvent,[])
}
Add(MoveWindow,5699333,364,147)
{
link(Handle,9084549:Handle,[(370,138)(349,138)(349,236)(370,236)])
}
Add(PointXY,1383579,371,238)
{
link(X,9084549:Left,[])
link(Y,9084549:Top,[])
}
Add(ArrayRW,5772976,231,203)
{
link(onRead,11487859:doEvent1,[])
link(Array,12902457:wb,[(237,186)(209,186)])
}
Add(Math,12692509,301,203)
{
OpType=4
Op2=65535
ResultType=0
link(onResult,9084549:doLeft,[])
}
Add(Hub,11487859,273,203)
{
link(onEvent1,12692509:doOperation,[])
link(onEvent2,6195675:doOperation,[])
}
Add(Math,6195675,301,210)
{
OpType=7
Op2=65536
ResultType=0
link(onResult,9084549:doTop,[])
}
Add(IndexToChanel,12785750,469,217)
{
Count=1
link(onEvent1,12902457:onMouseUp,[(519,223)(519,146)])
}
Add(DoData,11836548,427,210)
{
link(onEventData,12902457:onTop,[(508,216)(508,139)])
link(Data,1383579:Point,[(433,201)(419,201)(419,278)(377,278)])
}
END_SDK
Add(For,9732909,308,98)
{
End=3
link(onEvent,3277863:##add,[])
link(onStop,10257296:doWork1,[(361,111)])
}
Add(InlineCode,7993286,238,217)
{
WorkPoints=#7:doDefor|
EventPoints=#10:onEventBmp|
DataPoints=#6:BmpSrc|6:BmpDst|6:dArray|
Code=#0:|15:unit HiAsmUnit;|0:|9:interface|0:|31:uses kol,Share,Debug{,Windows};|0:|4:type|28: THiAsmClass = class(TDebug)|11: private |22: FItem,eIndex:TData;|20: src,dst :PBitmap;|33: u, v: array [0..3] of integer;|9: public|15:{ Data Points }|47:BmpSrc, BmpDst, dArray, onEventBmp : THI_Event;|0:|15:{ Work Points }|48:Procedure doDefor (var _Data:TData; Index:word);|0:|5: end;|0:|14:implementation|15:{ Work Points }|31:Procedure THiAsmClass.doDefor;|4:type|29: PMultArray = ^TMultArray;|40: TMultArray = array[0..0] of integer;|4:var |34: a1,a2,b1,b2,c1,c2,d1,d2,z:real;|29: i,j,x,y,i2,j2,h,w:integer;|20: p1,p2:PMultArray;|14: Arr:PArray;|5:begin|27: Arr := ReadArray(dArray);|23: if Arr=nil then exit;|18: for i:=0 to 3 do|11: begin|32: dtInteger(eIndex, i);|35: Arr._Get(eIndex, FItem);|47: u[i] := ToInteger(FItem) and $FFFF; |43: v[i] := ToInteger(FItem) shr 16;|15: end; |2: |38: src := ReadBitmap(_Data,BmpSrc,nil);|38: dst := ReadBitmap(_Data,BmpDst,nil);|30: //dst := NewBitmap(620,512);|42: if (src = nil) or (src.Empty) then exit;|27: dst.PixelFormat:=pf32bit;|27: src.PixelFormat:=pf32bit;|2: |32: i2:=src.Width; j2:=src.Height;|30: h:=dst.Height; w:=dst.Width;|2: |11: z:=i2*j2;|39: d1:=u[0]; d2:=v[0];|47: a1:=(u[1]-d1)/i2; a2:=(v[1]-d2)/i2;|47: c1:=(u[3]-d1)/j2; c2:=(v[3]-d2)/j2;|56: b1:=(u[2]-u[3]-u[1]+d1)/z; b2:=(v[2]-v[3]-v[1]+d2)/z;|2: |73: p2:=dst.ScanLine[h]; //Через указатели|21: for y:=0 to j2-1 do|9: begin|75: p1:=src.ScanLine[y]; //Через указатели|23: for x:=0 to i2-1 do|11: begin|39: i:=trunc(a1*x+b1*x*y+c1*y+d1); |38: j:=trunc(a2*x+b2*x*y+c2*y+d2);|75: p2[(h-j)*w+i]:=p1[x]; //Через указатели|73: //dst.canvas.pixels[i,j]:=src.canvas.pixels[x,y]; //Через Pixels|10: end;|8: end;|32: _hi_OnEvent(onEventBmp,dst);|4:end;|0:|4:end.|
link(onEventBmp,12087286:doEvent1,[(557,223)(557,104)])
link(BmpSrc,600467:Var3,[(244,165)])
link(BmpDst,6258751:Var2,[])
link(dArray,5573916:getVar,[])
}
Add(For,15097577,371,175)
{
End=3
link(onEvent,279093:doWork1,[])
}
Add(Bitmap,1893649,245,98)
{
@Hint=#5:Буфер|
HWidth=620
HHeight=515
FillColor=-16777201
Point(doCreate)
Point(HWidth)
Point(HHeight)
}
Add(Img_Bmp,7015858,126,175)
{
link(onDraw,10257296:doWork2,[])
link(Bitmap,15365913:Var3,[(132,124)])
link(SourceBitmap,6258751:Var1,[(139,152)])
}
Add(LineBreakEx,15115925,56,140)
{
Caption="bmp"
Type=3
link(_Data,15365913:Var1,[(62,124)])
}
Add(GetDataEx,15365913,91,119)
{
link(Data,12791373:Bitmap,[])
}
Add(LineBreakEx,2833138,511,147)
{
Caption="bmp"
Type=2
}
Add(LineBreakEx,14324866,28,77)
{
Caption="refr"
Type=1
link(OnEvent,15077390:doWork2,[])
}
Add(LineBreakEx,4473850,455,126)
{
Caption="refr"
}
Add(ArrayRW,9578601,455,91)
{
Index=Integer(0)
link(Array,8844056:Var2,[])
link(Index,3277863:##eventIndex,[(468,80)(500,80)(500,162)(377,162)])
}
Add(MultiElement,279093,511,175)
{
link(Data1,2833138:getVar,[])
link(Data2,8844056:Var3,[(524,68)])
}
BEGIN_SDK
Add(EditMulti,2885264,259,84)
{
WorkCount=1
DataCount=2
Width=181
Height=172
link(doWork1,6508886:doEvent1,[(244,90)(244,146)])
}
Add(Img_Line,5085825,322,203)
{
Color=255
Point(Point1)
Point(Point2)
link(Bitmap,2885264:Data1,[(328,187)(265,187)])
link(Point1,14654656:Result,[])
link(Point2,1616886:Result,[(342,187)(384,187)])
}
Add(MathParse,14654656,329,140)
{
MathStr="%2[%1]"
ResultType=0
link(X2,1434546:Var2,[])
}
Add(MathParse,1616886,378,140)
{
MathStr="%2[(%1+1) mod 4]"
ResultType=0
link(X2,1434546:Var3,[(391,112)])
}
Add(Hub,6508886,287,140)
{
OutCount=3
link(onEvent1,14654656:doCalc,[])
link(onEvent2,1616886:doCalc,[(369,153)(369,146)])
link(onEvent3,5085825:doDraw,[(311,160)(311,209)])
}
Add(GetDataEx,1434546,336,107)
{
Angle=3
link(Data,2885264:Data2,[(272,112)])
}
END_SDK
Add(Hub,14372150,420,98)
{
link(onEvent1,9578601:doWrite,[])
link(onEvent2,11042403:doWork1,[(444,111)])
}
Add(Hub,70937,56,7)
{
link(onEvent1,9732909:doFor,[(70,13)(286,13)(286,104)])
link(onEvent2,14913336:doWork1,[(165,20)])
}
Add(IntegerArray,15066555,371,21)
{
@Hint=#1:u|
IntArray=['0'=327990,'0'=17695330,'0'=32768310,'0'=16384155]
}
Add(GetDataEx,5034828,371,63)
{
link(Data,15066555:Array,[])
}
Add(GetDataEx,8844056,455,63)
{
Angle=3
link(Data,5034828:Var3,[])
}
Add(Bitmap,4806727,189,35)
{
@Hint=#5:Буфер|
FillColor=-16777201
Point(Width)
Point(Height)
}
Add(GetDataEx,6258751,245,147)
{
link(Data,1893649:Bitmap,[])
}
Add(Hub,15784955,189,210)
{
InCount=2
link(onEvent1,1893649:doCreate,[(214,216)(214,118)])
link(onEvent2,7993286:doDefor,[])
}
Add(LineBreak,13405621,112,217)
{
Caption="up"
link(Out,15784955:doEvent2,[])
Primary=[14031383,343,-77]
}
Add(Hub,5824829,420,140)
{
link(onEvent1,14031383:In,[])
link(onEvent2,11042403:doWork3,[(444,153)])
}
Add(HubEx,11042403,440,126)
{
link(onEvent,4473850:doWork,[])
}
Add(GetDataEx,600467,189,160)
{
link(Data,4806727:Bitmap,[])
}
Add(InfoTip,7747766,588,280)
{
Info=#15:Взято из книги:|0:|8:Delphi 5|34:Создание мультимедийных приложений|0:|9:Н.Тюкачев|10:Ю.Свиридов|0:|21:Издательство "Нолидж"|6:Москва|5:2000 |
Font=[MS Sans Serif,8,0,16711680,1]
Transparent=1
Width=225
Height=165
Margin=10
}
Add(Hub,8907202,56,35)
{
OutCount=4
link(onEvent1,4806727:doLoad,[])
link(onEvent2,12533179:onEvent1,[(95,48)(95,27)(291,27)(291,13)])
link(onEvent3,15077390:doWork1,[(81,55)])
link(onEvent4,14913336:doWork2,[])
}
Add(HubEx,15077390,77,77)
{
link(onEvent,12791373:doRefresh,[])
}
Add(HubEx,10257296,357,175)
{
link(onEvent,15097577:doFor,[])
}
Add(LineBreakEx,969702,308,77)
{
Caption="arr"
Type=3
link(_Data,5034828:Var1,[(314,68)])
}
Add(LineBreakEx,5573916,252,189)
{
Caption="arr"
Type=2
}
Add(HubEx,14913336,161,56)
{
Angle=1
link(onEvent,15784955:doEvent1,[(165,216)])
}
Add(Hub,12087286,567,98)
{
link(onEvent1,10700511:doCalc,[])
link(onEvent2,13840374:doCopy,[(592,111)(592,174)])
}
Add(MathParse,10700511,609,98)
{
@Hint=#5:min x|
DataCount=1
MathStr="min(\r\n(%1[0] mod 65536),\r\n(%1[1] mod 65536),\r\n(%1[2] mod 65536),\r\n(%1[3] mod 65536)\r\n)"
link(onResult,8573504:doCalc,[])
link(X1,6216964:Var2,[])
}
Add(MathParse,13536548,707,98)
{
@Hint=#5:max x|
MathStr="max((%1[0] mod 65536),(%1[1] mod 65536),(%1[2] mod 65536),(%1[3] mod 65536))-%2"
link(onResult,13543022:doCalc,[])
link(X1,4016801:Var2,[])
link(X2,9499964:Var3,[(720,89)(699,89)(699,138)])
}
Add(MathParse,8573504,658,98)
{
@Hint=#5:min y|
DataCount=1
MathStr="min(\r\n(%1[0] div 65536),\r\n(%1[1] div 65536),\r\n(%1[2] div 65536),\r\n(%1[3] div 65536)\r\n)"
link(onResult,13536548:doCalc,[])
link(X1,6258061:Var2,[])
}
Add(MathParse,13543022,756,98)
{
@Hint=#5:max y|
MathStr="max(\r\n(%1[0] div 65536),\r\n(%1[1] div 65536),\r\n(%1[2] div 65536),\r\n(%1[3] div 65536)\r\n)-%2"
link(X1,4016801:Var3,[(762,82)])
link(X2,10938285:Var3,[(769,89)(748,89)(748,145)])
}
Add(LineBreakEx,8831110,609,56)
{
Caption="arr"
Type=2
}
Add(GetDataEx,6216964,609,77)
{
link(Data,8831110:getVar,[])
}
Add(GetDataEx,6258061,658,77)
{
Angle=3
link(Data,6216964:Var3,[])
}
Add(GetDataEx,4016801,707,77)
{
Angle=3
link(Data,6258061:Var3,[])
}
Add(Img_Copy,13840374,602,168)
{
Point(Width)
Point(Height)
link(onCopy,12533179:onEvent2,[(795,174)(795,20)])
link(X,9499964:Var2,[])
link(Y,10938285:Var1,[(622,145)])
link(Width,13536548:Result,[(629,152)(713,152)])
link(Height,13543022:Result,[(636,159)(762,159)])
}
Add(GetDataEx,9499964,609,133)
{
link(Data,10700511:Result,[])
}
Add(GetDataEx,10938285,658,140)
{
link(Data,8573504:Result,[])
}
Add(InfoTip,8161412,560,35)
{
Info=#26:Копирование только нужного|
Width=246
Height=193
}
END_SDK
Add(Image,2572868,749,112)
{
Left=5
Top=30
Width=160
Height=160
Ctl3D=0
link(Bitmap,5175251:Var1,[(755,100)(742,100)(742,156)(692,156)])
}
Add(Image,22670,749,161)
{
Left=5
Top=220
Width=160
Height=160
Ctl3D=0
}
Add(Button,9598790,434,140)
{
Left=20
Top=395
Width=110
Caption="Load picture"
link(onClick,6865173:doEvent1,[])
}
Add(Img_Loader,1673702,567,140)
{
link(onLoad,6029042:doWork2,[])
}
Add(ODialog,10745261,525,140)
{
Filter="Pictures|*.bmp;*.png;*.jpg;*.jpeg;*.gif;*.ico"
FileName=""
link(onExecute,1673702:doLoad,[])
}
Add(Resize,14405595,623,140)
{
Width=620
Height=515
link(onResult,5175251:doWork2,[(672,146)(672,125)])
}
Add(Label,8753854,525,98)
{
Left=55
Top=200
Width=56
Height=17
Caption="Результат"
}
Add(Button,2711093,161,245)
{
Left=20
Top=485
Width=110
Caption="Load source"
link(onClick,6975981:doWork2,[])
}
Add(StrList,5246062,427,217)
{
}
Add(Application,14021022,224,203)
{
}
Add(MultiStrPart,2286488,224,245)
{
Char="."
Count=1
Direct=1
link(onSplit,7560079:doStrCat,[])
link(Str,14021022:AppFileName,[])
}
Add(StrCat,7560079,273,245)
{
Str2=".sha"
link(onStrCat,16045027:doEvent1,[])
}
Add(Img_MultiText,7062782,483,329)
{
X=3
Font=[MS Sans Serif,10,1,8388608,1]
Orientation=[MS Sans Serif,10,1,8388608,1]
link(onDraw,15241736:doData,[])
link(Bitmap,9770793:Var2,[])
link(Text,5246062:Text,[(496,306)(433,306)])
}
Add(Hub,16045027,343,245)
{
link(onEvent1,5246062:doLoad,[])
link(onEvent2,10304141:doOperation,[(382,258)(382,300)(235,300)(235,328)])
}
Add(Bitmap,14930578,483,245)
{
HWidth=300
HHeight=200
FillColor=-16777201
Point(doCreate)
Point(onCreate)
}
Add(Math,10304141,245,322)
{
OpType=1
link(onResult,12887285:doEvent1,[])
link(Op2,7062782:TextHeight,[(258,306)(230,306)(230,369)(496,369)])
}
Add(CounterEx,11545751,427,329)
{
Max=115
Direct=1
Default=115
Point(doMin)
link(onNext,7062782:doDraw,[])
}
Add(Timer,8509903,329,322)
{
Interval=100
Enable=1
link(onTimer,10668883:doEvent1,[])
}
Add(Hub,10668883,371,322)
{
link(onEvent1,14930578:doCreate,[(396,328)(396,314)(466,314)(466,265)])
link(onEvent2,11545751:doNext,[])
}
Add(Hub,12887285,287,322)
{
link(onEvent1,8509903:doTimer,[])
link(onEvent2,11545751:doMin,[(312,335)(312,363)(389,363)(389,342)])
}
Add(HubEx,6029042,609,140)
{
link(onEvent,14405595:doResize,[])
}
Add(DoData,15241736,532,329)
{
link(onEventData,6029042:doWork3,[(613,335)])
link(Data,9770793:Var3,[(538,292)])
}
Add(GetDataEx,9770793,483,287)
{
link(Data,14930578:Bitmap,[])
}
Add(Hub,6865173,490,140)
{
link(onEvent1,10745261:doExecute,[])
link(onEvent2,8509903:doStop,[(515,153)(515,209)(319,209)(319,335)])
}
Add(Hub,13822067,644,70)
{
link(onEvent1,6975981:doWork1,[(669,76)(669,48)(207,48)])
link(onEvent2,5175251:doWork1,[(676,83)(676,118)])
}
Add(HubEx,6975981,203,245)
{
link(onEvent,2286488:doSplit,[])
}
карма: 19

0
Ответов: 2059
Рейтинг: 132
#15: 2016-10-24 10:27:47 ЛС | профиль | цитата
Прошу извинить, что пишу здесь, задам только два вопроса.
ser_davkin,

К сожалению нужного поста не нашел, по этому пишу здесь.
В какой-то теме ты писал про соответствие текста и места на звуковом файле, где этот текст озвучен.
1. Удалось-ли это сделать?
Я понял так, что при озвучивании очередного предложения записывается позиция звукового файла в какую-то таблицу под определённым индексом.
2. Озвучивал текст своим голосовым движком, или брал готовый?
3. Если брал готовый, то есть-ли наработки для SAPI5?
Я делал свой компонент, но до конца не допилил некоторые функции.
(есть законченный проект по расстановке ударений в омографах (СахАра, сахарА, сАхара) на основе морфологического и синтаксических парсеров - тоже свои.)

Редактировалось 3 раз(а), последний 2016-10-24 10:56:54
карма: 6

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