最近在除錯datasnap的程式,突然發現tclientdataset打不開了,報錯為dsnap200.bpl的非法位址訪問,如下圖:
很是怪異,乾脆新建工程,只有tsqlconnection、tsqlquery、tdatasetprovider和tclientdataset,如下圖:
開clientdataset1的時候還是報上面的錯誤,執行期也報非法位址訪問錯誤。開始還以為系統遭了,於是把6月份重整系統的c盤重新恢復了,但問題依舊,有點蒙了。後來在工程檔案中加入midaslib,將datasnap加入到程式中執行,卻正常了。猛然間反應過來,應該還是midas.dll的問題。一查c盤的midas.dll檔案,還真不少,如下圖:
由於安裝的是64位win7,發現syswow64下有個midas.dll檔案,重新將安裝路徑下bin目錄中32位版midas.dll進行註冊:
regsvr32 c:\program files (x86)\embarcadero\studio\14.0\bin\midas.dll
之後一切ok。
估計問題是不知什麼時候將64位版的midas.dll註冊了,導致ide開clientdataset時呼叫了64位版,而ide環境本身仍然還是32位的,所以報錯。
又是DataSnap的問題
最近在除錯datasnap的程式,突然發現tclientdataset打不開了,報錯為dsnap200.bpl的非法位址訪問,如下圖 很是怪異,乾脆新建工程,只有tsqlconnection tsqlquery tdatasetprovider和tclientdataset,如下圖 開clientd...
datasnap的執行緒池
新的datasnap使用indy10的執行緒池。不管你知不知道,datasnap都是使用執行緒池了,這和midas不同,midas預設是沒有執行緒池的。跟蹤indy10執行緒池類tidschedulerofthreadpool的 procedure tidschedulerofthreadpool....
datasnap的前世今生
隨著xe6,xe7,以及半年以後即將發布的xe8,datasnap將順應跨平台的需要,有可能的情況是這樣的 xe8,datasnap寫的中介軟體將可以執行在linux伺服器上面。大家都知道com是windows特有的東西,為了跨平台,com將被棄用。datasnap殘留的com基因的東西統統將被棄用...