|
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
syntech
註冊時間: 2003-05-16 文章: 4214 來自: Taipei,Taiwan
第 16 樓
|
發表於: 星期二 一月 19, 2021 3:36 pm 文章主題: |
|
|
CPS0204 寫到: | 43
是的,在本網站或google也找不到逐步方法來製作com
我也很想學習! 希望各位前輩能賜教!謝謝 |
http://vfp.sunyear.com.tw/viewtopic.php?t=2097&postdays=0&postorder=asc&start=0
其他就 google " DEFINE CLASS Custom OLEPUBLIC FOXPRO "
我比較懶,
所以我都是做成 "function的集合" 那種 com 物件
其他就是
1.注意資料型態
2.必須考慮 "無狀態" 的情況,避免開共用cursor,檔案,......
3.prg 檔上限是 64k,要適當切割,不過我是搞 "function的集合",所以就分開就好了
4.注意 utf8 轉換
5.我只有用 utf- 8 的json 字串以json物件拆解成傳入參數,但回傳不是用 json 物件轉換為json 字串.而是自己組合自己轉換成 utf8 json 字串 _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
CPS0204
註冊時間: 2014-08-24 文章: 441
第 17 樓
|
發表於: 星期二 一月 19, 2021 4:40 pm 文章主題: |
|
|
vfp9 內寫:
DEFINE CLASS COM01 AS Custom OLEPUBLIC && 專案名稱是PHP_COM
FUNCTION getCUSDate() AS STRING
RETURN 'THIS IS A VFP COM'
ENDFUNC
ENDDEFINE
1.已做好foxpro 的 php_com.dll,及 copy 至 c:\xampp\php\ext 當中
2.也至php.ini加入 extension=php_com.dll
3. 也用 regsvr32 /s php_com.dll (用高權限開dos窗輸入執行)
4.有重啟appache
5.在php內寫如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Example.php</title>
</head>
<body>
<?php
$vfp_com =new com("PHP_COM.COM01",null,CP_UTF8);
$TableStr = $vfp_com->getCUSDate();
$vfp_com = null;
print $TableStr;
?>
</body>
</html>
結果瀏覽器去執行此php程式,還是出錯:
Fatal error: in C:\xampp\htdocs\FROM_FP.php on line 10
第10行就是 new com那行!
找不出問題在哪?真傷腦!請協助一下謝謝! |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4214 來自: Taipei,Taiwan
第 18 樓
|
發表於: 星期二 一月 19, 2021 4:52 pm 文章主題: |
|
|
第6樓的項目檢查看看
步驟1,2 感覺很奇怪,應該不是這樣用的
印象中,那是針對 "真正的以vc++撰寫的擴充dll"在用的
另外,不是只有dll檔copy過去
請依 http://vfp.sunyear.com.tw/viewtopic.php?t=7081 第二樓檢查檔案有沒有漏掉,
沒有漏掉才會正常登錄
我會在 vfp9 命令視窗
用
代碼: |
o=CREATEOBJECT('php_dcom.com01')
? o.getCUSdata()
RELEASE O
|
測試正不正常
如果看到白畫面,
可以按右鍵選擇"檢視網頁原始碼"檢查是不是有內容
或是用瀏覽器的 "開發人員工具" 檢查有無其他錯誤 _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
CPS0204
註冊時間: 2014-08-24 文章: 441
第 19 樓
|
發表於: 星期二 一月 19, 2021 6:45 pm 文章主題: |
|
|
在vfp9內執行下列正常,有秀出我要的文字
o=CREATEOBJECT('php_com.com01')
? o.getCUSdata()
RELEASE O
可是在php 呼叫,就會有錯誤如下:
Fatal error: Uncaught Error: Class 'com' not found in C:\xampp\htdocs\FOX3.php:10 Stack trace: #0 {main} thrown in C:\xampp\htdocs\FOX3.php on line 10
php如下:一樣錯在new com那行
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Example.php</title>
</head>
<body>
<?php
$vfp_com = new com('PHP_COM.COM01',null,CP_UTF8);
$TableStr = $vfp_com->getCUSDate();
$vfp_com = null;
print $TableStr;
?>
</body> |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4214 來自: Taipei,Taiwan
第 20 樓
|
發表於: 星期二 一月 19, 2021 8:36 pm 文章主題: |
|
|
檢查 php.ini
這是我的設定
代碼: |
expose_php = Off
error_reporting = E_ALL & ~E_NOTICE
extension_dir = "c:\AppServ\php7\ext"
enable_dl = On
cgi.fix_pathinfo=1 (去掉;)
extension 前頭的; 都去掉,再補上
extension=php_pdo_sqlsrv_73_ts.dll
extension=php_sqlsrv_73_ts.dll
extension=php_com_dotnet.dll <=== 注意這一行,沒有自己補進去
date.timezone = "Asia/Taipei"
|
https://stackoverflow.com/questions/37288730/enabling-dotnet-com-extension-in-php-5-6-12 _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
CPS0204
註冊時間: 2014-08-24 文章: 441
第 21 樓
|
發表於: 星期二 一月 19, 2021 9:21 pm 文章主題: |
|
|
已加上後,有重啟動appache run 得到:
Fatal error: in C:\xampp\htdocs\FOX5.php on line 9
第9行就是new com 那行,不知道為何如此?
$vfp_com = new com('PHP5.COM01',null,CP_UTF8); |
|
回頂端 |
|
|
CPS0204
註冊時間: 2014-08-24 文章: 441
第 22 樓
|
發表於: 星期四 一月 21, 2021 7:42 am 文章主題: |
|
|
php 呼叫dll 已成功,謝謝各位指導! |
|
回頂端 |
|
|
小賴
註冊時間: 2004-12-27 文章: 471
第 23 樓
|
發表於: 星期四 一月 21, 2021 10:31 am 文章主題: |
|
|
TO CPS0204 兄
恭喜!
我還在努力中 ...
您如何辦到的 ?
能否分享您的過程? |
|
回頂端 |
|
|
CPS0204
註冊時間: 2014-08-24 文章: 441
第 24 樓
|
發表於: 星期四 一月 21, 2021 10:59 am 文章主題: |
|
|
小賴 寫到: | TO CPS0204 兄
恭喜!
我還在努力中 ...
您如何辦到的 ?
能否分享您的過程? |
可以分享:,我也是前輩指導才成功!
將2TIER 升上 3TIER ...多VFP中間層處理覆雜的工作! |
|
回頂端 |
|
|
小賴
註冊時間: 2004-12-27 文章: 471
第 25 樓
|
發表於: 星期四 一月 21, 2021 3:55 pm 文章主題: |
|
|
TO CPS0204
對不起; 我沒說清楚 ..
我是問 PHP 調用 DLL ;
New Com( .... 錯誤是如何解決的 ?
我也有同樣問題 |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4214 來自: Taipei,Taiwan
第 26 樓
|
發表於: 星期五 一月 22, 2021 11:27 am 文章主題: |
|
|
我找看看有沒有以前留下來的測試資料 _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
violetlkk
註冊時間: 2003-06-21 文章: 82 來自: kaohsiung
第 27 樓
|
發表於: 星期五 一月 22, 2021 4:59 pm 文章主題: |
|
|
我的程式碼 給你參考
沒有很專業 只是能跑而已
已經運作很多年了 工具老舊 但效能不錯
1.環境 winxp+appserv
2. php.ini 印象中沒改 hpptd.conf 好像只改 DocumentRoot ServerName 讓apache可以運作
3. php
<?php
require("auth.php");
$obj = new COM("cusmf.html");
$_query="id=".$PHP_AUTH_USER."&passwd=".$PHP_AUTH_PW."&IP=".$REMOTE_ADDR;
$_query.="&t1=".$_POST["t1"];
$_query.="&submit=ok";
echo $obj->html($_query);
$obj->Release();
$obj = null;
?>
$_query 只是要傳進去的資料而已
4.vfp
define class html as session olepublic
procedure html
lparameters _query
_lcoutput=''
中間省略.....
return _lcoutput
endproc
enddefine
*_lcoutput 就是要回傳的 html 碼
*這裡傳回去的是Big5編碼 網頁是utf8編碼要處理轉碼
*project info -> servers 裡面的class name 要正確,以前用拷貝project的來改 這裡就是原來的資料 會有問題
後來的做法就是建立新的project 這樣才正確
5. 最後
*把dll上傳到相應的位置
*把dll 拖曳去regsvr32 會看到成功的訊息
*記得要把 runtime 放進來
*vfp中間省略 就是處理要產出資料的地方 不管是 dbase,foxbase,vfp,mysql,mssql,oracle 都能處理 |
|
回頂端 |
|
|
小賴
註冊時間: 2004-12-27 文章: 471
第 28 樓
|
發表於: 星期五 一月 22, 2021 7:27 pm 文章主題: |
|
|
感謝 syntech, CPS0204 與各位熱心的朋友幫助
小弟問題已解決 ;
最大的問題是換掉 xampp版本 (原來有 32/64版本問題)
再經 syntech, CPS0204 二位大大指點參數設定; 現已解決
再次感謝指教 |
|
回頂端 |
|
|
CPS0204
註冊時間: 2014-08-24 文章: 441
第 29 樓
|
發表於: 星期六 一月 23, 2021 8:24 am 文章主題: |
|
|
記錄一下:報錯原因,可能如下
1.xampp 的版本去下載到官方的最新x64版不通,但改回32 bit 版即可用!
可用 phpinfo();來查看 x64/x86
2. xampp/86位元版本,應使用c:\windows\syswow64\regsvr32.exe 來註冊您的vfp 的 dll 檔 (開dos窗需用最高權限)
3.防毒軟體或個人防火牆擋住port位
4. 80 port位不對,例: 80->8080等,或原80port已被佔用!
5.此行需加在php.ini 中 (extension=php_com_dotnet.dll)
若可開通後
原本vfp9 的大量程式可變成dll,來當網頁後台的中間層,使多年的老vfp續用10 年以上,減輕使用php開發erp的困難度!又可享用vfp的cursor rushmore技術,又可以滿足由網頁來呼叫報表的功能!(手機/pad跨平台等)好處真多!
(需搭配小量的html5+css潤飾+js+php) |
|
回頂端 |
|
|
CPS0204
註冊時間: 2014-08-24 文章: 441
第 30 樓
|
發表於: 星期六 一月 23, 2021 12:58 pm 文章主題: |
|
|
記錄一下php可取用vfp的回傳值方法:已在PHP測過OK
1.return 值....只能回傳單一值
2. 屬性empty法:
屬性bb.P02 在vfp先define class
在php內取用 $TABSTR2=$vfp_com->BB->P02
3.陣列法
在php內取用
$vfp_com->ABC(2,1); //小心不是中刮弧[]
4.collection法
在VFP內先定義好COLLECTION
$TABSTR3=$vfp_com->b2->ITEM(1) ; 取第1個ADD的ITEM值
或依查詢指標INDEX
$TABSTR4=$vfp_com->b2->ITEM('SEEK1')
$TABSTR5=$vfp_com->b2->ITEM('INDEX2'); 由 INDEX2鍵值 來找 |
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|