Spread控件從ActiveX向.NET升級的自動化移植處理方法
【專利摘要】本發(fā)明涉及一Spread控件從ActiveX向.NET升級的自動化移植處理方法,包括:(1)讀取Spread的移植處理規(guī)則文件;(2)讀取Spread移植前的.NET代碼,判斷代碼中是否有Spread控件■’(3)當(dāng)代碼中不存在Spread控件,并且.NET代碼中還有未處理文件時,讀取未處理代碼文件;(4)讀入一個移植處理規(guī)則定義信息,根據(jù)移植處理規(guī)則以及所讀入的.NET代碼來判斷是否需要執(zhí)行該項(xiàng)Spread的移植處理規(guī)則;(5)根據(jù)Spread移植規(guī)則定義信息中的具體處理規(guī)則,調(diào)用該具體處理規(guī)則進(jìn)行代碼的移植處理等步驟。與現(xiàn)有技術(shù)相比,本發(fā)明具有移植效率高,準(zhǔn)確率局等優(yōu)點(diǎn)。
【專利說明】Spread控件從Act i veX向.NET升級的自動化移植處理方 法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種升級移植的方法,尤其是涉及一種Spread控件從ActiveX向.NET 升級的自動化移植處理方法。
【背景技術(shù)】
[0002] 隨著.NET技術(shù)的出現(xiàn),越來越多的用ActiteX控件開發(fā)的VisualBasic6. 0程序 需要進(jìn)行升級移植。在升級移植過程中,如果程序中的控件只是利用Microsoft公司的標(biāo) 準(zhǔn)控件開發(fā)的時候,利用Visual Studio2008自帶升級工具能夠很方便高效率地進(jìn)行升級 移植。由于第三方控件進(jìn)行的應(yīng)用軟件開發(fā)的成本低,功能比Microsoft公司提供的標(biāo)準(zhǔn) 控件的機(jī)能強(qiáng)大等因素,在舊有的商用軟件中廣泛使用第三方控件開發(fā)。像這種用第三方 控件開發(fā)的程序在.NET升級移植時候,存在移植效率低下,操作處理不方便等現(xiàn)象。
[0003] 對于GrapeCity公司開發(fā)的表格處理控件Spread,從ActiveX版的Spread7. 0 控件向.NET版的Spread升級時,由于不存在自動化升級移植工具,Spread表格處理控件 的.NET升級移植效率以及準(zhǔn)確性一直是軟件開發(fā)業(yè)界的課題。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的目的就是為了克服上述現(xiàn)有技術(shù)存在的缺陷而提供一種Spread控件從 ActiveX向.NET升級的自動化移植處理方法。
[0005] 本發(fā)明的目的可以通過以下技術(shù)方案來實(shí)現(xiàn):
[0006] -種Spread控件從ActiveX向.NET升級的自動化移植處理方法,其特征在于,包 括如下步驟:
[0007] (1)讀取Spread的移植處理規(guī)則文件,初始化文件中定義的具體處理信息;
[0008] (2)讀取Spread移植前的· NET代碼,判斷代碼中是否有Spread控件,若存在 Spread控件,執(zhí)行步驟(4),否則執(zhí)行步驟(3);
[0009] (3)當(dāng)代碼中不存在Spread控件,并且.NET代碼中還有未處理文件時,讀取未處 理代碼文件,然后返回步驟(2),否則結(jié)束;
[0010] (4)讀入一個移植處理規(guī)則定義信息,根據(jù)移植處理規(guī)則以及所讀入的.NET代碼 來判斷是否需要執(zhí)行該項(xiàng)Spread的移植處理規(guī)則;如果需要執(zhí)行移植規(guī)則,執(zhí)行步驟(5); 否則循環(huán)執(zhí)行本步驟,讀取下一個移植處理規(guī)則定義信息,直至所有的移植規(guī)則處理完畢 后,執(zhí)行步驟(6);
[0011] (5)根據(jù)Spread移植規(guī)則定義信息中的具體處理規(guī)則,調(diào)用該具體處理規(guī)則進(jìn)行 代碼的移植處理,并更新.NET代碼;處理完畢該項(xiàng)移植規(guī)則后,返回步驟(4);
[0012] (6)讀取經(jīng)移植處理后.NET代碼中的Spread持久狀態(tài)數(shù)據(jù),利用.NET的反射機(jī) 制將Spread持久狀態(tài)數(shù)據(jù)映射成.NET控件可解析的文件流,然后執(zhí)行步驟(7);
[0013] (7)通過VisualStudio2008編輯器啟動該Spread的· NET控件的設(shè)計器,自動導(dǎo) 入步驟¢)中保存的可解析的文件流;然后刪除臨時可解析的文件流,執(zhí)行步驟(8);
[0014] (8)刪除.NET代碼中的Spread持久狀態(tài)數(shù)據(jù);判斷.NET代碼中是否還有其他的 Spread控件,如有返回步驟(3);若不存在,則執(zhí)行步驟(9);
[0015] (9)將Spread升級移植完畢的代碼寫出到新的.NET工程中,如果代碼中存在移植 處理規(guī)則中未能對應(yīng)的移植內(nèi)容,則將信息寫入Log文件,以備在后續(xù)的升級處理中,通過 追加移植規(guī)則,再次進(jìn)行移植升級處理。
[0016] 所述的Spread的移植規(guī)則定義文件為一個XML文件,定義Spread的ActiveX控 件與.NET控件的變換移植信息以及具體處理信息。
[0017] 所述的移植規(guī)則包括聲明規(guī)則、屬性規(guī)則和方法規(guī)則。
[0018] 該方法作為Visual Studio2008開發(fā)工具的插件,或作為單獨(dú)的Spread升級移植 工具。
[0019] 與現(xiàn)有技術(shù)相比,本發(fā)明具有如下優(yōu)點(diǎn):
[0020] (1)移植效率高,準(zhǔn)確率高;
[0021] (2)采用自己定義升級移植規(guī)則模式,可以方便的對應(yīng)Spread控件版本間差異, 也可以方便的對移植規(guī)則進(jìn)行修改以對應(yīng)不同的系統(tǒng)程序要求,具有良好的擴(kuò)展性。
【專利附圖】
【附圖說明】
[0022] 圖1為本發(fā)明的處理流程圖。
【具體實(shí)施方式】
[0023] 下面結(jié)合附圖和具體實(shí)施例對本發(fā)明進(jìn)行詳細(xì)說明。
[0024] 實(shí)施例
[0025] Spread的移植規(guī)則定義文件為一個XML文件,定義Spread的ActiveX控件與.NET 控件的變換移植信息以及具體處理信息。針對不同的移植系統(tǒng),可以通過修改本移植定義 文件以及擴(kuò)展變換移植處理,達(dá)到客戶指定的移植要求。
[0026] 以下對圖1中的各步驟進(jìn)行詳細(xì)描述:
[0027] 在步驟101中,讀取Spread的移植處理規(guī)則文件,初始移植處理規(guī)則文件中定義 幾個具體處理信息;
[0028] 在步驟102中,讀取Spread移植前的.NET代碼,判斷代碼中是否有Spread控件, 若存在Spread控件,那么執(zhí)行201,否則執(zhí)行步驟103 ;
[0029] 在步驟103中,當(dāng)代碼中不存在Spread控件,并且.NET工程中還有未處理文件 時,讀取未處理代碼文件,然后執(zhí)行步驟102 ;
[0030] 在步驟201中,讀入一個移植處理規(guī)則定義信息,根據(jù)移植處理規(guī)則以及所讀入 的.NET代碼來判斷是否需要執(zhí)行該項(xiàng)Spread的移植處理規(guī)則,如果需要執(zhí)行移植規(guī)則,執(zhí) 行步驟202 ;否則循環(huán)執(zhí)行本步驟,直至所有的移植規(guī)則確認(rèn)完畢后,執(zhí)行步驟301 ;
[0031] 在步驟202中,根據(jù)Spread移植規(guī)則定義文件中"Actor"所定義的具體處理,調(diào) 用該處理進(jìn)行代碼的移植處理,并更新.NET代碼,處理完畢該項(xiàng)移植規(guī)則后,循環(huán)執(zhí)行步 驟 201 ;
[0032] 在步驟301中,讀取.NET窗口 FORM的資源文件(*. resX)中關(guān)于Spread的 ActiveX控件的持久狀態(tài)數(shù)據(jù),利用.NET的反射機(jī)制將Spread的窗口控件信息寫入到臨時 文件,然后執(zhí)行步驟302;
[0033] 在步驟302中,通過VisualStudio2008編輯器啟動該Spread的· NET控件的設(shè)計 器,自動導(dǎo)入301步驟中保存的臨時文件;然后刪除臨時文件,執(zhí)行步驟303 ;
[0034] 在步驟303中,刪除窗口 FORM的資源文件(*· resX)中該Spread的ActiveX控件 的持久狀態(tài)二進(jìn)制數(shù)據(jù);判斷代碼中是否還有其他的Spread控件定義,如有繼續(xù)執(zhí)行步驟 201 ;若不存在,則執(zhí)行步驟401 ;
[0035] 在步驟401中,將Spread升級移植完畢的代碼寫出到新的.NET工程中,如果代碼 中存在規(guī)則中未能對應(yīng)的移植內(nèi)容,則將信息寫入Log文件,以備在后續(xù)的升級處理中,通 過追加移植規(guī)則,再次進(jìn)行移植升級處理。
[0036] 基于· Net Framework3. 5版本運(yùn)行的Spread控件的移植升級處理工具,可作為單 獨(dú)的執(zhí)行工具,也可以作為Visual Studio2008的開發(fā)插件。在實(shí)際項(xiàng)目的Spread控件升 級移植實(shí)施過程中,通過本工具能夠正確地自動完成約90 %的Spread的機(jī)能,屬性,事件 處理,控件定義等的升級移植,大大提高了舊系統(tǒng)的升級效率和準(zhǔn)確度。
【權(quán)利要求】
1. 一種Spread控件從ActiveX向.NET升級的自動化移植處理方法,其特征在于,包括 如下步驟: (1) 讀取Spread的移植處理規(guī)則文件,初始化文件中定義的具體處理信息; (2) 讀取Spread移植前的.NET代碼,判斷代碼中是否有Spread控件,若存在Spread 控件,執(zhí)行步驟(4),否則執(zhí)行步驟(3); (3) 當(dāng)代碼中不存在Spread控件,并且.NET代碼中還有未處理文件時,讀取未處理代 碼文件,然后返回步驟(2),否則結(jié)束; (4) 讀入一個移植處理規(guī)則定義信息,根據(jù)移植處理規(guī)則以及所讀入的.NET代碼來判 斷是否需要執(zhí)行該項(xiàng)Spread的移植處理規(guī)則;如果需要執(zhí)行移植規(guī)則,執(zhí)行步驟(5);否則 循環(huán)執(zhí)行本步驟,讀取下一個移植處理規(guī)則定義信息,直至所有的移植規(guī)則處理完畢后,執(zhí) 行步驟(6); (5) 根據(jù)Spread移植規(guī)則定義信息中的具體處理規(guī)則,調(diào)用該具體處理規(guī)則進(jìn)行代碼 的移植處理,并更新.NET代碼;處理完畢該項(xiàng)移植規(guī)則后,返回步驟(4); (6) 讀取經(jīng)移植處理后.NET代碼中的Spread持久狀態(tài)數(shù)據(jù),利用.NET的反射機(jī)制將 Spread持久狀態(tài)數(shù)據(jù)映射成.NET控件可解析的文件流,然后執(zhí)行步驟(7); (7) 通過VisualStudio2008編輯器啟動該Spread的· NET控件的設(shè)計器,自動導(dǎo)入步 驟(6)中保存的可解析的文件流;然后刪除臨時可解析的文件流,執(zhí)行步驟(8); (8) 刪除.NET代碼中的Spread持久狀態(tài)數(shù)據(jù);判斷.NET代碼中是否還有其他的 Spread控件,如有返回步驟(3);若不存在,則執(zhí)行步驟(9); (9) 將Spread升級移植完畢的代碼寫出到新的.NET工程中,如果代碼中存在移植處理 規(guī)則中未能對應(yīng)的移植內(nèi)容,則將信息寫入Log文件,以備在后續(xù)的升級處理中,通過追加 移植規(guī)則,再次進(jìn)行移植升級處理。
2. 根據(jù)權(quán)利要求1所述的一種Spread控件從ActiveX向.NET升級的自動化移植處 理方法,其特征在于,所述的Spread的移植規(guī)則定義文件為一個XML文件,定義Spread的 ActiveX控件與.NET控件的變換移植信息以及具體處理信息。
3. 根據(jù)權(quán)利要求1所述的一種Spread控件從ActiveX向.NET升級的自動化移植處理 方法,其特征在于,所述的移植規(guī)則包括聲明規(guī)則、屬性規(guī)則和方法規(guī)則。
4. 根據(jù)權(quán)利要求3所述的一種Spread控件從ActiveX向.NET升級的自動化移植處理 方法,其特征在于,該方法作為Visual Studio2008開發(fā)工具的插件,或作為單獨(dú)的Spread 升級移植工具。
【文檔編號】G06F9/445GK104216722SQ201310211137
【公開日】2014年12月17日 申請日期:2013年5月30日 優(yōu)先權(quán)日:2013年5月30日
【發(fā)明者】陳文生, 張立宇 申請人:步覽捷信息科技(上海)有限公司