:: Visual Foxpro, Foxpro for DOS
Re: VFP и Python
ssa
Автор

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
Taran
И опять не понял.
С чем тебя и поздравляю.
Цитата:
Нужен вебсервер на клиентской машине
А можно узнать с чего такое упорство с веб-сервером? Питон когда-то где-то заявлен исключительно как веб-сервер?
Цитата:
или достаточно dll зарегать?
Достаточно.
Цитата:
Смогу ли я всё запихать в свой Setup.exe чтоб домохозяйка могла сама установить себе все необходимое?
Захочешь - сможешь.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: VFP и Python
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
ssa
Taran
И опять не понял.
С чем тебя и поздравляю.
Цитата:
Нужен вебсервер на клиентской машине
А можно узнать с чего такое упорство с веб-сервером? Питон когда-то где-то заявлен исключительно как веб-сервер?
Цитата:
или достаточно dll зарегать?
Достаточно.
Цитата:
Смогу ли я всё запихать в свой Setup.exe чтоб домохозяйка могла сама установить себе все необходимое?
Захочешь - сможешь.

Ну твоя язвительность вполне предсказуема.
Не проще было сказать: кидаешь 2-3-5 dll на клиента, регишь и в путь.

Про веб сервер у меня ассоциации исключительно с сайтов поиска работы.

Вопрос снимаю. Проще где в другом месте поискать ответ по мере надобности.
Ratings: 0 negative/0 positive
Re: VFP и Python
ssa
Автор

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
Taran
Не проще было сказать: кидаешь 2-3-5 dll на клиента, регишь и в путь.
Кладешь рядом с прогой папочку с питоном или используешь уже установленный питон. Питону dll мало, он еще много чего из своей папки использует.
Цитата:

Про веб сервер у меня ассоциации исключительно с сайтов поиска работы.
Питон - язык общего применения. На котором, в частности, можно и веб-сервер сваять. Но можно и не ваять.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: VFP и Python
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
Сколько весит папочка?
Сам питон стартует вместе с системой?
Как из фоксы вызывается код на Питоне?
Ratings: 0 negative/0 positive
Re: VFP и Python
ssa
Автор

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
Taran
Сколько весит папочка?
Свежеустановленный 3.10 - 32 занимает ~ 150 метров. Но из них можно выкинуть документацию и прочую мелочь и останется около 130. Самое большое место занимает папочка Lib - более 120 метров. Но если точно знаешь какие модули не используются в твоей проге, то такие модули можно из этой папочки удалить.
Цитата:
Сам питон стартует вместе с системой?
Зачем?
Цитата:
Как из фоксы вызывается код на Питоне?
Вот тебе кусок кода:
SET PROCEDURE TO python ADDITIVE
start_python()
args = CREATEOBJECT('PythonTuple', 'arg1', 2)
?args.repr()
retval = PythonFunctionCall('example_module', 'swap_args', args)
?retval.repr()
r1 = retval.getitem(0)
r2 = retval.getitem(1)
?r1, r2
RELEASE r1, r2, retval
args = CREATEOBJECT('PythonTuple', 'arg1')
kwargs = CREATEOBJECT('PythonDictionary')
kwargs.setItem('arg2', 2)
?args.repr()
?kwargs.repr()
retval = PythonFunctionCall('example_module', 'swap_args', args, kwargs)
?retval.repr()
r1 = retval.getitem(0)
r2 = retval.getitem(1)
?r1, r2
RELEASE kwargs, r1, r2, retval
example_dict = CREATEOBJECT('PythonDictionary')
example_dict.setItem('key1', .NULL.)
example_dict.setItem('key2', .T.)
example_dict.setItem('key3', 3.5)
example_dict.setItem('key4', DATE())
?example_dict.repr()
?example_dict.getitem('key4')
RELEASE example_dict
example_list = CREATEOBJECT('PythonList')
example_list.callMethod('append', CREATEOBJECT('PythonTuple', .NULL.))
example_list.callMethod('append', CREATEOBJECT('PythonTuple', .T.))
example_list.callMethod('append', CREATEOBJECT('PythonTuple', 3.5))
example_list.callMethod('append', CREATEOBJECT('PythonTuple', DATETIME()))
?example_list.repr()
?example_list.getitem(3)
example_list.setitem(2, 3.6)
?example_list.repr()
?example_list.getitem(2)
RELEASE example_list
&&generate an error
example_list = CREATEOBJECT('PythonList')
?example_list.getitem(0)
?example_list.setitem(0, 5)
RELEASE example_list
stop_python()
RELEASE PROCEDURE python
RETURN


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: VFP и Python
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
2 Ssa

Ну вот можешь же...
Ещё бы piton.prg вкратце.
Ratings: 0 negative/0 positive
Re: VFP и Python
ssa
Автор

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
Taran
Ещё бы piton.prg вкратце.
Ну, если только вкратце...
Clear Dlls GetProcessHeap, HeapAlloc, Py_SetPythonHome, Py_GetPythonHome, Py_Initialize
Declare Py_IncRef In (PythonDll) Integer
Declare Py_DecRef In (PythonDll) Integer
Declare Integer PyErr_Occurred In (PythonDll)
Declare PyErr_Fetch In (PythonDll) Integer @, Integer @, Integer @
Declare PyErr_NormalizeException In (PythonDll) Integer @, Integer @, Integer @
Declare Integer PyImport_ImportModule In (PythonDll) String
If PyMajorVersion == 2
Declare Integer PyUnicodeUCS2_FromStringAndSize In (PythonDll) As PyUnicode_FromStringAndSize String, Integer
Declare Integer PyString_AsString In (PythonDll) As PyBytes_AsString Integer
Declare Integer PyString_Size In (PythonDll) As PyBytes_Size Integer
Declare Integer PyString_FromStringAndSize In (PythonDll) As PyBytes_FromStringAndSize String, Integer
Else
Declare Integer PyUnicode_FromStringAndSize In (PythonDll) String, Integer
Declare Integer PyBytes_AsString In (PythonDll) Integer
Declare Integer PyBytes_Size In (PythonDll) Integer
Declare Integer PyBytes_FromStringAndSize In (PythonDll) String, Integer
Endif
Declare Long PyLong_AsLong In (PythonDll) Integer
Declare Integer PyLong_FromLong In (PythonDll) Long
Declare Integer PyBool_FromLong In (PythonDll) Long
Declare Double PyFloat_AsDouble In (PythonDll) Integer
Declare Integer PyFloat_FromDouble In (PythonDll) Double
Declare Integer PyObject_Repr In (PythonDll) Integer
Declare Integer PyObject_GetAttrString In (PythonDll) Integer, String
Declare Integer PyObject_SetAttrString In (PythonDll) Integer, String, Integer
Declare Integer PyObject_Type In (PythonDll) Integer
Declare Integer PyObject_Call In (PythonDll) Integer, Integer, Integer
Declare Integer PyObject_GetItem In (PythonDll) Integer, Integer
Declare Integer PyObject_SetItem In (PythonDll) Integer, Integer, Integer
Declare Integer PyObject_DelItem In (PythonDll) Integer, Integer
Declare Integer PyObject_GetIter In (PythonDll) Integer
Declare Integer PyIter_Next In (PythonDll) Integer
Declare Integer PyDict_New In (PythonDll)
Declare Integer PyList_New In (PythonDll) Integer
Declare Integer PyTuple_New In (PythonDll) Integer
Declare Integer PyTuple_SetItem In (PythonDll) Integer, Integer, Integer


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: VFP и Python
akvvohinc

Сообщений: 4201
Откуда: Москва
Дата регистрации: 11.11.2008
ssa
Есть возможность вызвать питоновский код из VFP с передачей ему параметров и получением от него возвращаемого результата, в том числе и его исключений с трассировкой.
Но я пока не вижу пока задач, для решения которых можно/нужно было бы применить сию возможность.

Сергей, у меня есть одна программа, создающая и вызывающая крохотный код на Питоне (v 3.2.1), создающий PUBLIC и PRIVATE ключи:
TEXT TO s TEXTMERGE NOSHOW
import rsa
pub, priv = rsa.newkeys(512)
pub = pub.save_pkcs1('PEM').decode('utf8')
priv = priv.save_pkcs1('PEM').decode('utf8')
file = open('<<m.keysfile>>', 'w', encoding='cp1251')
file.write(pub+'\n'+priv)
file.close()
ENDTEXT

py-код вызываю сейчас обычным ShellExecute;
= ShellExecute(0, "open", m.py_file, '', m.curpath, 0)

То есть всё общение "Питон -> Фокс" идёт через внешний файл.

Хотел бы попробовать сделать то же анонсируемым тобой способом.

PS
А, понял - это видимо VFP-Embedded-Python с github?



Исправлено 2 раз(а). Последнее : akvvohinc, 20.10.21 22:37
Ratings: 0 negative/0 positive
Re: VFP и Python
ssa
Автор

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
akvvohinc
Хотел бы попробовать сделать то же анонсируемым тобой способом.
test_RSA.prg
SET PROCEDURE TO python ADDITIVE
start_python("c:\Program Files (x86)\Python310-32")
retval = PythonFunctionCall('RSA_module', 'WriteRSAFile', CREATEOBJECT('PythonTuple', 'KeysFile.txt'))
?retval
RSA_module\RSA.py
import rsa
def WriteRSAFile(keysfile: str):
pub, priv = rsa.newkeys(512)
pub = pub.save_pkcs1('PEM').decode('utf8')
priv = priv.save_pkcs1('PEM').decode('utf8')
file = open(keysfile, 'w', encoding='cp1251')
file.write(pub+'\n'+priv)
file.close()
return 0
RSA_module\__init__.py
from __future__ import absolute_import
from .RSA import *
Запускаем, тестируем.

Цитата:
PS
А, понял - это видимо VFP-Embedded-Python с github?
Он самый.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: VFP и Python
akvvohinc

Сообщений: 4201
Откуда: Москва
Дата регистрации: 11.11.2008
ssa
Запускаем, тестируем.
Большое спасибо!
Попробую на досуге.
Ratings: 0 negative/0 positive
Re: VFP и Python
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
ssa
Ydin
Интересно очень, конечно!
И? Интерес то чисто спортивный или таки есть какая-то конкретная задача?

Есть, мой коллега по фирме занимается ей. Web-сервер. Оплата за воду. Еще что-то.
У него вместо PHP Фокс. Приглашает вместе делать.
Пока отказываюсь.
Старость. Я ему писал Иксел без Иксел больше 2-х месяцев, долго.
А стартовал с его кода. Новое уже плохо дается



Исправлено 2 раз(а). Последнее : Ydin, 21.10.21 08:52
Ratings: 0 negative/0 positive
Re: VFP и Python
ssa
Автор

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
akvvohinc
ssa
Запускаем, тестируем.
Большое спасибо!
Попробую на досуге.
Попробуй. По крайней мере у меня это работает, файлик создает и заполняет ключиками, возвращает в фокс нолик.
А я пока подумаю об автоматическом определении установленного питона дабы не вписывать его в программу.


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: VFP и Python
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
> Питон - язык общего применения. На котором, в частности, можно и веб-сервер сваять.

Это означает, что проги на Питоне могут исполнять некоторые хосты-серверы, или это уже "де факто" как ПХП - язык "общего применения" ?
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 23 alex;  (Гостей: 22)

© 2000-2024 Fox Club 
Яндекс.Метрика