2010-11-27 37 views
1

很多年前,我爲使用VB3的客戶編寫了一個系統 - 或者VB5或6?不記得了......它很早以前就是就是如何獲取在Windows 7上工作的VB3程序?

無論如何,他們一直在愉快地使用這個程序,包括通過從Windows 95到Windows XP的辦公室範圍的升級 - 但現在他們想要將他們的辦公室計算機升級到Windows 7.明智地他們試圖升級一臺計算機首先並重新安裝我的程序 - 它不起作用。

是否有任何快速修復,以獲得這個遺留軟件在Windows 7上工作?還是他們真的需要重寫整個程序才能夠使用它?

+1

這取決於如何定義「沒有工作」。如果它運行得更高,也許它會工作。也許如果它有外部清單,或者安裝在Program Files以外的地方。也許它有一個愚蠢的檢查,就像Windows版本正好是XP,或者它依賴於一個硬編碼文件路徑...你需要更多的信息才能得到答案。該錯誤消息將是第1步。 – 2010-11-27 17:59:06

回答

4

如果您在此處聲明的是Visual Basic 3.0,那麼它可能無法在Windows 7上本地運行。如果您要運行應用程序,則需要使用Windows 7 Virtual XP Mode。另一方面VB 6.0應該在Windows 7上運行,請參閱支持聲明here

2

您可以在Windows 7,8,8.1和10上運行VB3程序,但問題相對較少。我通常在XP-SP3兼容模式下運行它們。我有很多舊的VB3程序以這種方式運行。 VB3程序雖然是16位,並且只能運行在32位版本的Windows Vista/7/8/10上,所以如果你有一個64位的窗口,那麼你不能運行它們,除非你使用XP模式(僅在Windows 7中可用)或使用VMWare Player或VirtualBox或類似軟件設置虛擬Windows XP。我已經在我自己的Win-10 64位個人電腦上完成了這個工作,我的VMWare Workstation使用XP,Win-7-32,Win-7-64,Win-8-32,Win-8-64和Win-我需要時運行10-32個虛擬機。

至於轉換Vb3程序爲VB4(32位),VB5或VB6 - 是的,你可以在新的IDE中打開它們並重新編譯它們,它們應該可以正常工作。

EXCEPT

如果您已經使用任何第三方VBX或DLL文件在您Vb3的程序,那麼你就必須讓這些控件的32位版本,雖然可能已經存在微軟標準控制類似的控制。

我使用Apex TrueGrid作爲網格綁定到一個數據控件來處理SQL查詢並返回結果。我需要升級到TrueDBGrid。不過,我現在發現標準的VB6 Microsoft MSFlexGrid具有我在舊的TrueGrid控件中使用的所有功能,所以現在我用MSFlexGrid替換了TrueDBGrid。屬性和方法是不同的,我不得不重新編碼,但大部分是用於所有網格的標準子程序,所以我只需要對所有網格進行一次大部分更改。

最大的麻煩是,當您將控件從VB3升級到VB4/5/6時,新控件通常具有相同的屬性,但具有不同的名稱和不同的參數,或者有時某些功能不存在,尋找工作。或者您可能需要使用不同的控件以及大量的代碼更改來支持新的控件。

我有幾個VB3程序與超過1,000,000行代碼共同只有JUST運行,因爲我一直用盡資源和內存等我不能添加任何更多的功能,因爲如果我做的程序將不會編譯或不會運行。

我試圖將這些從VB3轉換爲VB6,但得到了一些很多錯誤,我最終從頭開始重寫了很多。我多年來一直試圖轉換這些東西,但一旦你至少「轉換了它們」,你就必須嘗試運行它們,當你發生這種情況時,你必須嘗試編譯它們。實際上,我編寫了一個VB6程序來讀取VB3源代碼,並儘可能多地進行自動更改。您無法執行此操作的一個方面是將* .FRX文件中的控件定製數據保存爲二進制文件和未記錄文件。這是我凸輪脫鉤的地方... 加載程序,運行,得到一個錯誤,糾正一個錯誤,保存, 運行,得到一個錯誤,糾正一個錯誤,保存, 運行,得到一個錯誤,錯誤,保存, 運行,出現錯誤,糾正一個錯誤,保存,運行等。 您一次只能看到一個錯誤,並且轉換的代碼中有成千上萬的編譯器錯誤。我經常花費數天的時間試圖擺脫這些錯誤,一個接一個地放棄。我甚至可能在完成時只有一個錯誤 - 但是你不能說出來 - 你只知道什麼時候你真的完成了。

相關問題