kowala's home

kowala's home
這裡是我的學習筆記,陸續增加中。
http://kowala21.blogspot.com

2016-03-07

BCB6 - 在 Windows8.1 安裝 mscomm32.ocx

很多時候,我們會需要與 RS232 通訊,這時我們就需要 com 通訊元件。
通訊元件有很多第三方元件及微軟的 mscomm32,
本例是在Wwindows8.1下取得 mscomm32 與手動安裝元件。

下載  mscomm32.ocx
http://originaldll.com/file/mscomm32.ocx/7698.html



上圖右下角按鈕,兩個都可以,按下後輸入隨機碼下載。


解壓縮可得到一個元件,只有一個。

mscomm32.ocx

接著是安裝 mscomm32 元件到 Windows8.1

1.複製 mscomm32.ocx
開檔案總管,複製 mscomm32.ocx 到 C:\Windows\SysWOW64


2.安裝 mscomm32.ocx
在視窗中,開啟目錄 C:\Windows\SysWOW64
找到 cmd.exe ,右鍵,以管理員身分執行,
一定要用管理員身分,否則權限不夠,會失敗。

執行下列命令
cd C:\Windows\SysWOW64

先移除註冊
regsvr32 /u MSCOMM32.OCX
再註冊
regsvr32 MSCOMM32.OCX
完成,試一下,OK

Dropbox 下載 mscomm32.ocx

2016-02-13

BCB6 EditorLineEnds.ttr issue

今天看到一個不錯的小程式範例 ColorFormat,可以查顏色代碼,很方便,哪裡知道,windows8.1很不給力,BCB一直出問題,最後,終於解決了,雖不滿意,尚可接受。

可愛的小程式  ColorFormat (click to see source code)
http://www.functionx.com/bcb/applications/colorformat.htm


上面附上已完成的 ColorFormat,調好顏色,按下按鈕,就會把顏色代碼複製到剪貼簿,然後按 Ctrl + v就可以叫出來貼上,也可以右邊 Numeric 數值輸入,0-255,真的很方便。

My Question
好了,推完這支程式之後,來說說我遭遇到甚麼困難,搞了一整天。
我先安裝 BCB 在 Win8.1,完成之後,開個專案,關掉 BCB,要再開啟時,悲劇了,一直錯誤,無法開啟,跳出如下對話。



重新開機又可執行一次 BCB,經過 Google 查詢,發現很多人都有這問題,指向微軟更新包的錯誤,而且到現在還沒改善。

BCB執行時會建立一個檔 EditorLineEnds.ttr,在 windows temp 目錄中,奇怪的是,它會被 System 開啟,然後就不放手,以至於 BCB 要再次執行時,無法再建立該檔,就一直產生錯誤,刪也刪不掉,因為 INUSE。


這很可惡,總不能執行一次就重開機一次吧,後來繼續找解決方案,發現大家的解法就是改檔名,但仍然刪不掉,不過卻可以執行 BCB 而不用重開機了。

國外有人是寫成批次檔來改檔名,也有寫成執行檔供人下載,但我試過,改檔名部分有一些日期會產生非法字元" / "會失敗,所以繼續研究一下,在批次檔中如何改檔名可以不重複,還是要取日期+時間,到分鐘就好,改寫如下,它主要就是把那個作怪的檔

C:\Users\myCon\AppData\Local\Temp\EditorLineEnds.ttr

改檔名

EditorLineEnds2016-2-13.4.33.ttr

然後做一個目錄,全部集中丟裏頭,這樣 BCB 就可以重複執行了,就是執行前,先執行這個批次檔,處理掉這個作怪的檔,然後再執行 BCB。

批次檔 bcb.bat 請自行存成 bcb.bat,並用最高權限執行
SET /A yy=%date:~0,4%
SET /A mm=%date:~5,2%
SET /A dd=%date:~8,2%
SET dt=%yy%-%mm%-%dd%
@echo %date% = %dt%

SET /A Hou=%time:~0,2%
SET /A Min=%time:~3,2%
SET /A Sec=%time:~6,2%
SET /A Ms=%time:~9,2%*10
SET tt=%Hou%.%Min%
@echo 時間 %time% = %tt%

SET dttt=%dt%.%tt%
@echo 日期+時間 %dttt%

C:
cd %Temp%

if exist "EditorLineEnds.ttr" (
   ren EditorLineEnds.ttr EditorLineEnds%dttt%.ttr
) else (  
   goto runbcb  
)
if exist "dzEditorLineEndsFix" (
   MOVE "EditorLineEnds%dttt%.ttr" "dzEditorLineEndsFix"
) else (
   md "dzEditorLineEndsFix"
   MOVE "EditorLineEnds%dttt%.ttr" "dzEditorLineEndsFix"
)
:runbcb
mshta "javascript:alert('SUCCESS MOVE EditorLineEnds.ttr that you can run BCB fine.');close()"


這是在 Win8.1環境下測試,其他板沒測過。

說明:

SET /A yy=%date:~0,4%
SET /A mm=%date:~5,2%
SET /A dd=%date:~8,2%
SET dt=%yy%-%mm%-%dd%
@echo %date% = %dt%

這是取系統日期,然後改成合法字元組合
/A 表示數值,這樣可以解決空白問題

date = 2016/02/13 週六

經過重新組合後,會變成

2016-2-13

接著是時間

SET /A Hou=%time:~0,2%
SET /A Min=%time:~3,2%
SET /A Sec=%time:~6,2%
SET /A Ms=%time:~9,2%*10
SET tt=%Hou%.%Min%
@echo 時間 %time% = %tt%

time =   5:40:29.85

經過重新組合後,會變成

5.40

再把這兩個合起來

SET dttt=%dt%.%tt%

2016-2-13.5.40

然後改檔名

EditorLineEnds.ttr

EditorLineEnds2016-2-13.5.40.ttr

接著檢查存放目錄是否存在?不存在就做一個
然後搬移進去,這樣就完成了。

不過,還是刪不掉,不曉得要怎麼把 inuse 解除,如果你知道的話,請留言告訴我怎麼做,謝謝!