2009-02-05 18 views
1

我是新來的VB6,但我目前負責維護編輯器的恐懼像工具與大量的形式,類,模塊和第三方工具所有塊像在德克薩斯州電鋸大屠殺那個傢伙的皮膚面臨在一起...從Dev機器vs安裝時,VB6應用測試結果有什麼不同?

我不明白爲什麼我得到不同的結果,當我運行在調試模式的應用程序,vs當我編譯它,並運行它在我的開發電腦vs當我安裝在不同的電腦上。

是的,我知道我很笨,所以請指示我到哪裏我可以找到更多關於此。我希望找出像不同的鏈接,註冊表等相關的連接,我現在根本沒有得到,即蠟像,蠟:P

脖子上的主要疼痛是當我'米試圖從我的QA調試一些錯誤,我需要找到一個備用電腦來測試這個,再加上我不能直接調試,因爲我不知道代碼是在哪裏,如果我這樣做。

謝謝。

+0

相關問題:[Vb 6使調試器不同的結果](http://stackoverflow.com/questions/221502/vb-6-make-exe-different-results-to-debugger/221622#221622) – dummy 2009-02-08 10:02:30

回答

2

我運行VS當我編譯它在調試模式下應用程序和我 devevelopment PC

運行它,當你編譯你必須編譯爲本地代碼或P碼的選項。調試器僅使用pcode運行。在極少數情況下,當您編譯爲本地代碼時,行爲會發生變化。這個特別是非常罕見的。自從VB6發佈以來,我使用了VB6,並且每年可能會獲得一次或兩次。我的應用程序是一個複雜的CAD/CAM創建形狀和運行金屬切割機,並有二十幾個DLL。不是典型的情況。在家用我的愛好軟件,我從來沒有遇到過這個問題。

還有另一類由事件排序問題導致的錯誤。雖然VB6不是真正的多任務處理,但它有能力跳出當前代碼塊來處理事件。如果它重新進入新事件的相同塊,可能導致有趣的事情(至少可以說)。我認爲這是你的問題的可能來源,因爲你的軟件是一個高度交互式的軟件編輯器。

一般來說,通過對受影響區域進行重新排序來解決問題。您可以通過插入MsgBox或寫入文本文件來記錄受影響的區域以記錄您的位置。我建議記錄到一個文本文件作爲MsgBox傾向於改變時間或多任務相關的行爲。

請記住,如果事件在代碼塊中間發生VB6時觸發,並且存在一個DoEvents,那麼它將使代碼塊處理事件並返回到原始代碼塊。如果它重新進入相​​同的代碼塊,並且你不意味着發生這種情況,那麼你將遇到問題。而且在不同的計算機上你會遇到不同的問題,因爲每個計算機的時間都會不同。

處理這類問題的最簡單方法是創建一些標誌變量。按照多任務的說法,它們被稱爲信號量或互斥量。當你輸入代碼的關鍵部分時,你將它設置爲true。當你離開例程時,你將它設置爲false。如果在輸入該代碼段時已經爲真,則不執行該代碼段。

當我安裝在不同的電腦上。

這些通常是安裝錯誤DLL的結果。最有可能你有一個較舊的版本,而目標有一個更新的版本。我會下載免費的虛擬PC,並創建一個乾淨的Windows XP安裝來仔細檢查。

如果您的問題是事件時間,這也可能會在不同的計算機上有所不同。這是通過記錄(而不是MsgBox)可疑區域找到的。

如果你可以顯示一個屏幕截圖或你的具體錯誤的文字,那麼我可以幫助更好。

0

首先要檢查的是您的應用所依賴的所有dll的版本 - 包括VB6 dll的Service Pack版本。

你有任何更具體的細節,關於有什麼不同的行爲?

+0

我經常看到的一些是退出條件,就像我可以在我的開發電腦上退出一樣。但是當我退出安裝的版本時,它猛烈地死亡。 – melaos 2009-02-05 10:14:50

+0

正如'發送錯誤報告給微軟'類型的死亡?你有沒有卸下你的所有表格(並不總是必要的,但有時是)? – Ant 2009-02-05 12:46:19

相關問題