kowala's home

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

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 解除,如果你知道的話,請留言告訴我怎麼做,謝謝!

沒有留言:

張貼留言

請提供您的寶貴意見 ;-)