我的信:
呵呵,要不是你來我帖子上掛了個號,還真不知道是你哩,久仰大名,偽程序員 ,原來在其他的帖子上就見到過,你和老麻一公司的吧?現在網上有一些關於什麼精簡bde的文章,根據我的個人看法,就是又一群用軟盤升BiOS的高手!他們都說只要在注冊 表中指明bde的所在路徑就可以了,據我菜鳥分析,還少了一個重要的IDAPI.CFG,如果沒這文件,系統一樣找不到程序的數據庫文件放在哪了?還是會出現別名錯誤的信息。平時我們創建一個新別名,都會提示是否要把信息保存入IDAPI.CFG中,可見此文件是相當重要的,BDE驅動是從此文件中得知數據庫的相關信息如路徑等。偽同學你是高手,你覺得是不是的,請指教,如果是的,我非上網扒下這些高手的皮不可,專害菜鳥的家伙們。還有一篇文章說只要把BDE驅動文件復到程 序目錄下就可以正常運行,真不知是怎麼一回事,這些文章到處都有轉載,如果
不真,害人不少。
回信:
早上來瞎忙一陣,剛看到郵件,不好意思您對我這麼信任!我和麻程序員確實在一個公司,不過我的確不是程序員,呵呵,人如其名。 好了,廢話不多說,其實我對BDE的認識也比較膚淺,但是BDE從我來看的確是一個比 較精密的數據庫引擎,很多程序需要共享它,這就是安裝和寫在帶有BDE程序的難點,想必你也聽說過裝了國產某程序,系統的其他程序就不能用BDE了,為什麼呢?因為borland公司設計BDE引擎時已經考慮過 多個程序同時使用BDE的問題,所以BDE文件具有自己的文件完整性和一套完整的注冊表鍵值設置,所有使用BDE的應用程序必須遵循這些規定才能正常使用BDE,在注冊表中顯示的路徑是當前系統的BDE路徑和其他設置信息,其中關鍵有幾個值:HKEY_LOCAL_MacHINESOFTWAREBorlandDatabase Engine下的UseCount指明了當前系統使用BDE的應用程序數量,也就是說borland希望在安裝BDE程序時,你要給該值+1,卸載時要給該值-1,當這個 值為零時,說明系統中已經不再有程序使用BDE,如果恰好是用installshIEld卸載時,系統會提示BDE文件已不再被任何程序使用,可以安全卸載。
上面說的是正常的情況,那麼看看我們的程序員都會做些什麼呢?要麼直接裝BDE支持文件,自己通過什麼手段網那裡一指,能用拉倒,要麼自己獨創一套鍵值等,這還不可怕,可怕的是有些程序員(麻程的前任)竟然發現了我說的上述鍵值,但是因為不會驗證BDE文件的完整性和添加別名設置,以及UseCount計數,居然在安裝時強行將BDE文件復制到一個隱蔽的地方,然後將路徑指到哪裡,並且在程序運行是動態設置別名!靠!可想而知其他用BDE的程序會死成什麼樣?說到這裡,想必你也該明白了,游戲是有規則的,遵守規則,錯不了的。直接指路徑肯定不行,所謂BDE完整性我估計是指SQL什麼的支持吧。
另外提醒你,IDAPI.CFG和IDAPI32.CFG文件是不能隨便改寫的,也是通過一些手段,否則別名是不能設置成功的。我早期做BDEruntime支持的時候用的installshield的BDE3.51模板,其機制相當嚴密,但還是會出現在98下修改別名報錯,2000和ME都沒問題,所以後來,我開始嘗試用installshIEld 6.22(已經將BDE5.11的運行支持嵌入,)和wise 8.x,效果比較好。
好了,說了這麼多,也說不太清,畢竟我對Delphi編程和BDE很不了解,隨信附上BDE4.51forinstallshIEld的白皮書(自己翻譯了一點,很蠢),你看一下也許會有更深的了解。