Вверх ↑
Этот топик читают: Гость
Ответов: 495
Рейтинг: 163
#1: 2020-07-23 19:34:26 ЛС | профиль | цитата
Всем привет. Извиняюсь за глупый вопрос , но мне интересно . Есть ли какая нибудь возможность в Hiasm 4 (пакет win) взаимодействовать с Python (т.е. некие задачи отправлять на Python и получать результат)..... ?
карма: 4

0
Ответов: 495
Рейтинг: 163
#2: 2020-08-01 11:17:46 ЛС | профиль | цитата
Всем привет. На данном этапе для себя использую вариант приведённый в примере (для поставленных задач визуализации - пригоден) В программе создается "код-скрипт" для Python , создается файл ****.py , запускается , при закрытии программы ****.py удаляется.
Пример

Add(MainForm,2953706,56,42)
{
Width=235
Height=184
Caption="TEST"
Position=1
Point(onClose)
link(onClose,2181013:doDelete,[])
}
Add(StrList,4925098,420,140)
{
FileName="TEST.py"
Point(doSave)
}
Add(WinExec,8068342,420,245)
{
FileName="TEST.py"
Mode=0
Point(doConsoleExec)
Point(onConsoleResult)
}
Add(Hub,13562740,273,161)
{
link(onEvent1,4925098:doText,[])
link(onEvent2,2039524:doData,[])
}
Add(StrList,2381567,182,105)
{
Strings=#21:from tkinter import *|11:root = Tk()|18:root.title("TEST")|0:|1: |51:c = Canvas(root, width=400, height=400, bg='white')|8:c.pack()|0:|8:#Рисуем |1: |68:c.create_oval(200, 200, 390, 390, fill='lightgrey', outline='white')|62:c.create_arc(10, 10, 190, 190, start=0, extent=45, fill='red')|67:c.create_arc(10, 10, 190, 190, start=180, extent=25, fill='orange')|80:c.create_arc(10, 10, 190, 190, start=240, extent=100, style=CHORD, fill='green')|93:c.create_arc(10, 10, 190, 190, start=160, extent=-70, style=ARC, outline='darkblue', width=5)|0:|40:c.create_line(390, 10, 10, 390, width=2)|0:|57:c.create_oval(240, 250, 330, 300, fill='green', width=10)|0:|0:|47:c.create_line(100, 380, 100, 200, fill='green',|49: width=5, arrow=LAST, dash=(10,2),|40: activefill='lightgreen',|38: arrowshape="10 20 10")|1: |0:|15:root.mainloop()|
}
Add(DoData,4233241,182,161)
{
link(onEventData,441491:doCharset,[])
link(Data,2381567:Text,[])
}
Add(Hub,1309325,140,147)
{
link(onEvent1,4925098:doClear,[])
link(onEvent2,4233241:doData,[(165,160)(165,167)])
}
Add(FileTools,2181013,119,49)
{
DelToRecycle=1
FileName="TEST.py"
}
Add(Charset,441491,231,161)
{
Type=6
link(onCharset,13562740:doEvent1,[])
}
Add(DoData,2039524,301,168)
{
link(onEventData,100489:doEvent1,[])
}
Add(Hub,100489,350,168)
{
OutCount=3
link(onEvent1,4925098:doSave,[])
link(onEvent2,6509689:doSet,[(403,181)(403,209)])
link(onEvent3,8068342:doShellExec,[(392,188)(392,258)])
}
Add(FileAttributes,6509689,420,196)
{
FileName="TEST.py"
Attr=2
}
Add(Button,6588684,56,147)
{
Left=50
Top=45
Width=110
Height=40
Caption="PYTHON"
link(onClick,1309325:doEvent1,[])
}

Для полноценной работы примера необходима установка Python
Пример использования.jpg

Вопрос следующий , как скрыть создаваемый файл ****.py на время выполнения программы ?

Редактировалось 6 раз(а), последний 2020-08-01 12:03:38
карма: 4

0
Ответов: 2059
Рейтинг: 132
#3: 2020-08-02 20:08:33 ЛС | профиль | цитата
tig-rrr, А читать скрипт из строки, а не из файла разве нельзя?
карма: 6

0
Ответов: 495
Рейтинг: 163
#4: 2020-08-02 23:02:28 ЛС | профиль | цитата
flint2 писал(а):
А читать скрипт из строки, а не из файла разве нельзя?

Простите ,а можно примерчик как? Никакой мысли и не приходит на ум,даже не понимаю про что речь...
карма: 4

0
Ответов: 2059
Рейтинг: 132
#5: 2020-08-03 12:19:53 ЛС | профиль | цитата
tig-rrr, Я не совсем понимаю, как:
В программе создается "код-скрипт" для Python , создается файл ****.py ,

Очевидно у тебя создаётся пустышка и туда пишется текст из ресурсов программы.
Не заметил примера, теперь понял.
Не важно, как сделаны эти ресурсы: через StrList, строку в IC, или PChar.
(Кстати, если сделать список из PChar, то каждый элемент этого списка может быть отдельной программой.)
В любом скриптовом движке ест функция прочитать и выполнить из файла и прочитать и выполнить из строки! И не важно, как сделан интерпретатор: В виде exe, dll, или он написан в кодах основного языка в программе, если он встроенный.
В виду того, что для примера на Python надо тянуть весь язык за собой, я покажу на LUA.
Практически это одно и тоже, в каком-то смысле, и во многих приложениях есть возможность писать на том и на другом (даже одновременно).
https://yadi.sk/d/ptXnsLWz19gv6Q

Редактировалось 3 раз(а), последний 2020-08-03 14:00:42
карма: 6

0
Ответов: 2059
Рейтинг: 132
#6: 2020-08-03 13:55:12 ЛС | профиль | цитата
tig-rrr, вот пример на Python "Hello world". Но мне совсем не нравится как сделан компонент!!!
https://yadi.sk/d/tynGsAJWTuzO7A
Надо свой делать!!!

Попробуй так:

Add(Pipe,10477605,777,266)
{
link(DataIN,4925098:Text,[])
}
Add(MainForm,7451496,294,112)
{
Width=235
Height=184
Caption="TEST"
Position=1
Point(onClose)
}
Add(StrList,4925098,777,182)
{
Point(doSave)
}
Add(Hub,13562740,630,203)
{
OutCount=3
link(onEvent1,4925098:doText,[])
link(onEvent2,10477605:doCreatePipe,[(710,216)(710,272)])
link(onEvent3,10477605:doIN,[(710,223)(710,279)])
}
Add(StrList,2381567,539,147)
{
Strings=#21:from tkinter import *|11:root = Tk()|18:root.title("TEST")|0:|1: |51:c = Canvas(root, width=400, height=400, bg='white')|8:c.pack()|0:|8:#Рисуем |1: |68:c.create_oval(200, 200, 390, 390, fill='lightgrey', outline='white')|62:c.create_arc(10, 10, 190, 190, start=0, extent=45, fill='red')|67:c.create_arc(10, 10, 190, 190, start=180, extent=25, fill='orange')|80:c.create_arc(10, 10, 190, 190, start=240, extent=100, style=CHORD, fill='green')|93:c.create_arc(10, 10, 190, 190, start=160, extent=-70, style=ARC, outline='darkblue', width=5)|0:|40:c.create_line(390, 10, 10, 390, width=2)|0:|57:c.create_oval(240, 250, 330, 300, fill='green', width=10)|0:|0:|47:c.create_line(100, 380, 100, 200, fill='green',|49: width=5, arrow=LAST, dash=(10,2),|40: activefill='lightgreen',|38: arrowshape="10 20 10")|1: |0:|15:root.mainloop()|
}
Add(DoData,4233241,539,203)
{
link(onEventData,441491:doCharset,[])
link(Data,2381567:Text,[])
}
Add(Hub,1309325,497,189)
{
link(onEvent1,4925098:doClear,[])
link(onEvent2,4233241:doData,[(522,202)(522,209)])
}
Add(Charset,441491,588,203)
{
Type=6
link(onCharset,13562740:doEvent1,[])
}
Add(Button,6588684,413,189)
{
Left=50
Top=45
Width=110
Height=40
Caption="PYTHON"
link(onClick,1309325:doEvent1,[])
}

В FileName, компонента Pipe надо прописать с чем у тебя ассоциируется *.py (python.exe).

P.S.
Одно время пользовался https://bellard.org/tcc/
Для C++ тоже такая фигня есть, где-то валяется.
Все параметры, туда и обратно, передаются из Паскаля и из СИ.

Редактировалось 7 раз(а), последний 2020-08-03 15:41:49
карма: 6

0
Ответов: 495
Рейтинг: 163
#7: 2020-08-04 20:43:08 ЛС | профиль | цитата
flint2, огромное спасибо за поддержку (пояснения)!
flint2 писал(а):
Попробуй так:
Ваш пример в архиве РАБОТАЕТ , а вот как его применить пока не знаю
pipe.png
карма: 4

0
Ответов: 2059
Рейтинг: 132
#8: 2020-08-06 17:37:25 ЛС | профиль | цитата
tig-rrr писал(а):
pipe.png

https://yadi.sk/d/Co-fjDG_6fBeIw
https://yadi.sk/d/y_1Pq0fSAD-hKg
карма: 6

1
Голосовали:tig-rrr
8
Сообщение
...
Прикрепленные файлы
(файлы не залиты)