VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

VFP 9.0 FIX - LARGE PROCEDURE IN THE FORM

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
CCB2000



註冊時間: 2009-03-25
文章: 97


第 1 樓

發表發表於: 星期日 四月 08, 2012 4:40 pm    文章主題: VFP 9.0 FIX - LARGE PROCEDURE IN THE FORM 引言回覆

Hello everyone:

In vfp9, the procedure size can greater than 64KB.
But if there is a large procedure in the form, sometimes the form can't run correctly.

There is a program for test:

*PROC testlargeform

SET STEP OFF
SET ECHO OFF
SET DEBUG OFF
SET ESCAPE OFF
SET TALK OFF
SET SAFETY OFF

_SCREEN.VISIBLE=.T.
_SCREEN.WINDOWSTATE=2

PRIVATE m.x2
m.x2=""

COMPILE FORM testlargeform.scx
=MESSAGEBOX("Now the form file testlargeform.scx is good."+CHR(13)+;
"We will run DO FORM testlargeform.scx and there is no problem.",0,"TEST LARGEFORM")
DO FORM testlargeform.scx

=MESSAGEBOX("Please make some changes."+CHR(13)+;
"For example, Comment or Uncomment some statements.",0,"TEST LARGEFORM")
MODIFY FORM testlargeform.scx method INIT

COPY FILE testlargeform.scx TO testlargeform_bad.scx
COPY FILE testlargeform.sct TO testlargeform_bad.sct
USE testlargeform_bad.scx
LOCATE FOR objname="Form1"
=STRTOFILE(objcode,"testlargeform_bad.fxp")
USE

COPY FILE testlargeform.scx TO testlargeform_good.scx
COPY FILE testlargeform.sct TO testlargeform_good.sct
COMPILE FORM testlargeform_good.scx
USE testlargeform_good.scx
LOCATE FOR objname="Form1"
=STRTOFILE(objcode,"testlargeform_good.fxp")
USE

USE testlargeform.scx
LOCATE FOR objname="Form1"
PRIVATE m.q_com
m.q_com=methods
PRIVATE m.q_procedures
m.q_procedures=""
DO WHILE AT("PROCEDURE ",m.q_com)>0
m.q_com=SUBS(m.q_com,AT("PROCEDURE ",m.q_com))
m.q_procedures=m.q_procedures+LEFT(m.q_com,AT(CHR(13),m.q_com))
m.q_com=SUBS(m.q_com,AT(CHR(13),m.q_com)+1)
ENDDO
USE
m.q_procedures=STRTRAN(m.q_procedures,"PROCEDURE Init","PROCEDURE Init (LARGE PROCEDURE)")

IF FILETOSTR("testlargeform_bad.fxp")==FILETOSTR("testlargeform_good.fxp")
=MESSAGEBOX("It seems the form file testlargeform.scx is good."+CHR(13)+;
m.q_procedures+;
"We will run DO FORM testlargeform.scx and there is no problem.",0,"TEST LARGEFORM")
DO FORM testlargeform.scx
ELSE
=MESSAGEBOX("Now the form file testlargeform.scx is bad."+CHR(13)+;
m.q_procedures+;
"If we run DO FORM testlargeform.scx then VFP will crash.",16,"TEST LARGEFORM")
DO FORM testlargeform.scx
ENDIF

RETURN

* END OF PROC TESTLARGEFORM.

In the testlargeform.scx:

PROCEDURE Load
SET TALK OFF
?"Load"
ENDPROC

PROCEDURE Init
* Please make some changes.
* For example, Comment or Uncomment some statements.
SET TALK OFF
SET TALK OFF
SET TALK OFF
?"Init"
PRIVATE m.x2
m.x2="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
m.x2="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
...
m.x2="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
m.x2="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
ENDPROC

PROCEDURE Destroy
SET TALK OFF
?"Destroy"
ENDPROC

The size of the procedure Init is about 100KB, it is a large procedure.


More details please refer to:

VFP 9.0 FIX - LARGE PROCEDURE IN THE FORM
http://www.baiyujia.com/vfpdocuments/default.asp

source code download:
http://www.baiyujia.com/f_download.asp

_________________
VFP C++編譯軟件 (VFP C++ Compiler): http://www.baiyujia.com/vfpcompiler
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站
CCB2000



註冊時間: 2009-03-25
文章: 97


第 2 樓

發表發表於: 星期日 四月 22, 2012 7:26 pm    文章主題: 引言回覆

Please refer to the project on codeplex.com:
http://vfp9fix.codeplex.com/

_________________
VFP C++編譯軟件 (VFP C++ Compiler): http://www.baiyujia.com/vfpcompiler
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作