我用Harbour/Fivewin寫了一個工作現場用的系統
在ubuntu 用wine來跑.exe它,
除了M$專利字型'標楷,細明' 不能列印要換字型以外
大致都没有問題,列印也很都正常(Epson没linux driver算bug嗎?全部改用hp印表機)
十幾台電腦順利上線幾個月了。
因為現場不用輸入中文,
有天要改參數才發現
中文輸入没有問題,
但是中文字的移動和刪除都異常
游標移動都是跳整個中文字
然而實際上卻是半個字
[一二參四五六七八|]
假設游標八後面,
Left Arrow 3次
游標看起來在五後面,實際按空白鍵會發現是在七的後半字
在windows下執行卻是正常的
廖大有没問試過用wine跑看看fivewin的程式
debug這個問題有没有建議的方向?
--
我的Tget.prg是從你那來的
日期2013-10-23
ubuntu 用wine跑Harbour/Fivewin
Re: ubuntu 用wine跑Harbour/Fivewin
寫的很醜,但終於解決用Wine跑fivewin程式
中文移動及位置錯亂的問題:
1.Wine下,SendMessage(hWnd, EM_SETSEL | EM_GETSEL, nStart , nEnd)
會把中文字算成1格
Ex: "中文字型123" 位置是 0,1,2,3 and 4,5,6
一般window則是 01,23,45,67 and 8,9,10
如果把游置位置定在 1,3,5,7這四個中文字的後半部
win api 不會有任何動作。
所以寫了兩個函數去互換。
並用 If '(Wine)'$os() 來判斷是否在Wine裡面。
2.Clipper/Harbout位置是從1開始,檢查所有tget的位置和winai的置互換時, 記得+1 / -1
3.順便把中文字第一格被覆蓋時,順更清掉第二格,免得亂碼。( ::oGet:OverStrike() )
4.避免擾亂fivewin原有功能 TGET.PRG 改名 JGET.PRG
CLASS 亦從 TGET 改名成 JGET
於是我的程式,終於可以完全不用修改同時在windows和linux下執行了。
--
鵝~似乎没有開放上傳明白了功能![Shocked :shock:](./images/smilies/icon_eek.gif)
中文移動及位置錯亂的問題:
1.Wine下,SendMessage(hWnd, EM_SETSEL | EM_GETSEL, nStart , nEnd)
會把中文字算成1格
Ex: "中文字型123" 位置是 0,1,2,3 and 4,5,6
一般window則是 01,23,45,67 and 8,9,10
如果把游置位置定在 1,3,5,7這四個中文字的後半部
win api 不會有任何動作。
所以寫了兩個函數去互換。
並用 If '(Wine)'$os() 來判斷是否在Wine裡面。
2.Clipper/Harbout位置是從1開始,檢查所有tget的位置和winai的置互換時, 記得+1 / -1
3.順便把中文字第一格被覆蓋時,順更清掉第二格,免得亂碼。( ::oGet:OverStrike() )
4.避免擾亂fivewin原有功能 TGET.PRG 改名 JGET.PRG
CLASS 亦從 TGET 改名成 JGET
於是我的程式,終於可以完全不用修改同時在windows和linux下執行了。
--
鵝~似乎没有開放上傳明白了功能
![Shocked :shock:](./images/smilies/icon_eek.gif)