Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26163
Рейтинг: 2127
#16: 2008-04-09 10:04:03 ЛС | профиль | цитата
Андрей. писал(а):
Пообщаться бы с автором, жаль не вспомню его..

Это не ХЭМ, случаем
карма: 22

0
Ответов: 8928
Рейтинг: 823
#17: 2008-04-09 10:27:31 ЛС | профиль | цитата
nesco, конечно он.
карма: 19

0
Ответов: 3851
Рейтинг: 159
#18: 2008-06-01 14:20:06 ЛС | профиль | цитата
Можно ли использовать CallDLL для вызова функций например mmsystem.dll ?
карма: 0
начавший
0
Ответов: 2125
Рейтинг: 159
#19: 2008-06-01 14:42:12 ЛС | профиль | цитата
Вряд-ли. Каждая функция имеет свой набор параметров, таким образом вызов любой фукции практически невозможно учесть в компоненте.
Вызов функций из API можно делать пока только в InlineCode, задекларировав соответственно нужные функции.

Если хорошо подумать, то можно, наверное, сделать в GodeGen автогенерацию InlineCode для функций API, описание которых имеется в каком-либо .pas файле.
------------ Дoбавленo:

Dilma, опять глючит правка ответа. Я исправлял этот пост (буквально через пару секунд, после того как отправил, других постов не исправлял), после чего прицепился чей-то аттач.
карма: 1

0
файлы: 1otvet.js [516B] [327]
Ответов: 3851
Рейтинг: 159
#20: 2008-06-01 14:42:58 ЛС | профиль | цитата
tsdima писал(а):
вызов любой фукции практически невозможно учесть в компоненте
А если не любой? Мне много не надо ..
карма: 0
начавший
0
Главный модератор
Ответов: 2999
Рейтинг: 396
#21: 2008-06-01 23:19:11 ЛС | профиль | цитата
tsdima писал(а):
Вызов функций из API можно делать пока только в InlineCode


ну почему же только?

http://hiasm.com/forum.html?q=3&p=5185#p5185
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#22: 2008-06-02 00:24:23 ЛС | профиль | цитата
Nic, компонент VBJScript -- это своего рода IC на другом языке, правильнее даже -- IC+Bridge. Но а tsdima писал про законченные компоненты пакета
tsdima писал(а):
таким образом вызов любой фукции практически невозможно учесть в компоненте

Действительно, у нас нет компонента, позволяющего напрямую вызывать API-функции и именно из-за того, что
tsdima писал(а):
Каждая функция имеет свой набор параметров

А значит, разный набор входных и выходных точек

Мне представляется создание такого компонента как некоего доп элемента (которого пока нет), к которому цепляются входные точки с названием констант и переменных (константы сверху, переменные в потоке + doResult) и выходные точки, а также указывается имя API-функции. Дальше CodeGen анализирует точки а порядке слева-направо и сверху-вниз, а затем подставляет их в порядке очередности в указанную функцию, там где нужна переменная, берется переменная из списка переменных, там где нужна константа -- из списка констант. Количество выходов должно совпадать c количеством переменных + onResult.

Но это все так -- размышления на тему

карма: 22

0
Ответов: 8928
Рейтинг: 823
#23: 2008-06-02 00:32:58 ЛС | профиль | цитата
nesco, а если текстом в компонент и из него?
карма: 19

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#24: 2008-06-02 00:55:24 ЛС | профиль | цитата
Леонид писал(а):
а если текстом в компонент и из него

Ты имеешь ввиду функцию вводить в поле компонента, где и будут анализироаться входные переменыые на тип
Вообще-то есть довольно сложные функции, где помимо простых типов есть еще и составные, с ними вообще непонятно. Получится, что вместо одного вызова API-фукнкции, потребуется применить еще какой-то набор методов, для подготовки параметров этой самой функции.
Вообще, все это начинает смахивать на отдельный пакет со своим набором компонентов, коими будут являться API-функции (а может быть и наборы функций)
------------ Дoбавленo:

Интересная получается тема -- создание API-пакета, который можно интегрировать куда угодно, имея соответствующие Bridg'ы
карма: 22

0
Ответов: 8928
Рейтинг: 823
#25: 2008-06-02 09:48:48 ЛС | профиль | цитата
nesco, для начала можно ориентироваться на функции, имеющие не более одного входного параметра, для пробы
карма: 19

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#26: 2008-06-02 10:16:27 ЛС | профиль | цитата
Леонид писал(а):
не более одного входного параметра, для пробы

Таких функций не так много, да и нужны ли они нам, это -- еще тот вопрос
карма: 22

0
Ответов: 3851
Рейтинг: 159
#27: 2008-06-02 10:47:37 ЛС | профиль | цитата
Вопрос от пешехода - а нельзя ли привязываться не к функции, а к dll, то есть когда впишешь в элемент название, то автоматом появится и список функций и всё остальное (как в UseHiDLL)?

tsdima/otvet.js писал(а):
покажи, что ты делаешь и что не получается
Я хочу иметь возможность использовать аудио запись с настраиваемыми параметрами (или фиксированными - 8000/16/mono) и не иметь проблем с коммерческой лицензией BASS (или чего другого), а денег у меня не много..
карма: 0
начавший
0
Ответов: 2125
Рейтинг: 159
#28: 2008-06-02 11:32:19 ЛС | профиль | цитата
Андрей. писал(а):
когда впишешь в элемент название, то автоматом появится и список функций и всё остальное

DLL не предоставляет информации о параметрах экспортируемых функций. Некоторые DLL, написанные на C++ и предназначенные для использования в C++ имеют имена функций, которые сформированы из имени, используемом в C++, и сигнатуры параметров, но использовать это как стандарт нельзя. Как правило, если DLL предназначена для разработчика, вместе с ней передаются дополнительные файлы (для C++ это .lib и .h, для паскаля .pas), в которых и указаны типы параметров и всё остальное, которое требуется для компиляции той программы, где будет использована эта DLL.
карма: 1

0
Ответов: 8928
Рейтинг: 823
#29: 2008-06-02 11:49:41 ЛС | профиль | цитата
Андрей., достаточно всего две ссылки: на MSDN и на Google переводчик
"А у нас было!" - у нас и правда есть IC и Script
карма: 19

0
Ответов: 5227
Рейтинг: 587
#30: 2009-03-02 18:45:17 ЛС | профиль | цитата
nesco писал(а):
Мне представляется создание такого компонента как некоего доп элемента


nesco, можно надеятся

Вопрос по синтаксису VBScript.

Почему не работает такая конструкция

#bas
Sub doWork(Data, Index)
If CStr(Data) = "Hello" or "Word" Then
MsgBox Data
End If
End Sub

а такая работает


#bas
Sub doWork(Data, Index)
If Data = 1 or 2 or 3 Then
MsgBox Data
End If
End Sub

Вышел из положения с помощью такой

#bas
Sub doWork(Data, Index)
Select Case CStr(Data)
Case"Hello", "Word"
MsgBox Data
End Select
End Sub

Схема для проверки

Add(MainForm,2953706,119,140)
{
Width=277
Height=196
}
Add(Button,5961507,203,140)
{
Left=10
Top=10
Width=45
TabOrder=-1
Layout="horiz"
HeightScale=100
Caption="Hello"
Data=String(Hello)
link(onClick,12018249:doWork2,[])
}
Add(VBJScript,8330421,294,140)
{
WorkPoints=#6:doWork|
Script=#10:' Работает|11:'----------|0:|23:Sub doWork(Data, Index)|26: Select Case CStr(Data)|27: Case"Hello", "Word"|19: MsgBox Data|18: End Select |7:End Sub|0:|13:' Не работает|13:'------------|0:|24:'Sub doWork(Data, Index)|44:' If CStr(Data) = "Hello" or "Word" Then |16:' MsgBox Data|11:' End If|8:'End Sub|0:|10:' Работает|12:'-----------|0:|24:'Sub doWork(Data, Index)|32:' If Data = 1 or 2 or 3 Then |16:' MsgBox Data|11:' End If|8:'End Sub|
UseName=0
}
Add(Button,14328000,203,224)
{
Left=10
Top=70
Width=45
TabOrder=-1
Layout="horiz"
HeightScale=100
Caption="1"
Data=Integer(1)
link(onClick,14101656:doWork2,[])
}
Add(HubEx,12018249,266,133)
{
link(onEvent,8330421:doWork,[])
}
Add(Button,6708381,203,266)
{
Left=10
Top=100
Width=45
TabOrder=-1
Layout="horiz"
HeightScale=100
Caption="2"
Data=Integer(2)
link(onClick,14101656:doWork3,[(270,272)])
}
Add(Button,6591399,203,182)
{
Left=10
Top=40
Width=45
TabOrder=-1
Layout="horiz"
HeightScale=100
Caption="Word"
Data=String(Word)
link(onClick,12868799:doWork2,[])
}
Add(HubEx,12868799,266,175)
{
Angle=3
link(onEvent,12018249:doWork3,[])
}
Add(HubEx,14101656,266,217)
{
Angle=3
link(onEvent,12868799:doWork3,[])
}


карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)