線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:5493
推到 Plurk!
推到 Facebook!

對於一個unicode的欄位要如何下trim,才不會得到亂碼?

答題得分者是:Stallion
joana
一般會員


發表:35
回覆:70
積分:21
註冊:2005-09-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-06-22 22:59:28 IP:122.124.xxx.xxx 訂閱
請教各位大德,對於一個unicode的欄位(nchar),要如何下trim,才不會得到亂碼 "?"
trim(ADOQuery1['thd_mark']

謝謝幫忙!
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-06-23 10:00:46 IP:211.22.xxx.xxx 未訂閱
之前討論過這類主題,我認為問題絕對不是Trim造成的!而是在ADOQuery取回資料時,已經將Unicode欄位裡面的編碼打亂了,還是找找之前TNT改寫的ADOQuery比較實在!可以馬上解決你的問題。
joana
一般會員


發表:35
回覆:70
積分:21
註冊:2005-09-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-06-23 12:22:56 IP:122.124.xxx.xxx 訂閱
謝謝stallion大德的回覆
1. 只要安裝TNT改寫的ADOQuery再下trim就ok 嗎? 還是要用 TNT 的字串函式才OK? 在程式中常用字串 函式如 TRIM / COPY 等...,是要用 DELPHI 自帶的,還是用 TNT的字串函式?

2. 我有下載舊版的 TNT 2.1.11版,Packages 裡有好多東東, 我已安裝 tntUnicodeVcl_D50,還有其他如
TntUnicodeVcl_R50, TntUnicodeVcl_D70_DATASNAP, TntThdmeManager5 之package,請問這些是
幹什用?
3. TntEx 好像 D7 以後才有的元件, D5沒看到此元件

4.其中有一支 TntsysUtilsD5Fix.pas ,這支是幹什用? 要安裝嗎?
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-06-23 12:34:47 IP:211.22.xxx.xxx 未訂閱
===================引 用 joana 文 章===================
謝謝stallion大德的回覆
1.只要安裝TNT改寫的ADOQuery再下trim就ok 嗎? 還是要用 TNT 的字串函式才OK? 在程式中常用字串 函式如 TRIM / COPY等...,是要用 DELPHI 自帶的,還是用 TNT的字串函式?
是的,我用TNT改寫的ADOQuery,這個VCL要單獨安裝,想想!如果原來的ADOQuery沒問題,TNT為何要改寫?我用這個元件解決過萬國碼資料庫的問題。

2. 我有下載舊版的 TNT 2.1.11版,Packages 裡有好多東東, 我已安裝 tntUnicodeVcl_D50,還有其他如
TntUnicodeVcl_R50, TntUnicodeVcl_D70_DATASNAP, TntThdmeManager5 之package,請問這些是
幹什用?
3. TntEx 好像 D7 以後才有的元件, D5沒看到此元件
TntEx也是TNT改寫的ADO元件,不是Delphi內建的。

4.其中有一支 TntsysUtilsD5Fix.pas ,這支是幹什用? 要安裝嗎?
抱歉,我也沒用過,自己看看裡面的函數應該就能瞭解。TNT改寫的VCL也附上很多公用程式,這支程式看檔名好像是某支公用程式的的更新檔。
joana
一般會員


發表:35
回覆:70
積分:21
註冊:2005-09-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-06-23 22:37:35 IP:122.124.xxx.xxx 訂閱
謝謝stallion大德的回覆
1.只要安裝TNT改寫的ADOQuery再下trim就ok 嗎? 還是要用 TNT 的字串函式才OK?

2.我下載的TNT for Delphi5 沒有 TntEX (ADO元件), 是否 TNT for Delphi7 才會有 ADO元件?
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-06-23 22:49:02 IP:211.22.xxx.xxx 未訂閱
謝謝stallion大德的回覆
1.只要安裝TNT改寫的ADOQuery再下trim就ok 嗎? 還是要用 TNT 的字串函式才OK?
TNT改寫的ADOQuery抓回來的編碼保持WideString的型態,抓回來後就看你怎麼處理了,先轉換成你要的Locale即可,何必一定急得先Trim呢?
2.我下載的TNT for Delphi5 沒有 TntEX (ADO元件), 是否 TNT for Delphi7 才會有 ADO元件?
TntEx是個別安裝的元件跟D5與D7沒關係吧!難道ADO與WideString類別在D5沒有支援?D5我不確定可不可以裝?我是在D7實作的,先抓回來安裝再你的Compiler看看,我認為問題應該不大。
joana
一般會員


發表:35
回覆:70
積分:21
註冊:2005-09-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-06-25 10:32:13 IP:122.124.xxx.xxx 訂閱
謝謝stallion大德的回覆,我現在有點搞不清楚,到底應該下載packages 目錄底下的 dpk, 還是 TntEx 目錄底下所有的 pas,但 packages 底下明明是 D7, 但我的是 D5


編輯記錄
joana 重新編輯於 2007-06-25 10:47:51, 註解 無‧
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-06-25 11:31:55 IP:211.22.xxx.xxx 未訂閱
1.當然是TntEx底下所有的目錄及檔案啊!你沒裝過VCL元件嗎?裡面有的是Package專案檔,其他的是範例,以及Package所需的檔案,另外也附上改寫的QR Unicode VCL。
2.我前面提過,該Package的確是D7適用,只不過我建議你下載下來安裝看看,說不定D5也可以用。
===================引 用 joana 文 章===================
謝謝stallion大德的回覆,我現在有點搞不清楚,到底應該下載packages 目錄底下的 dpk, 還是 TntEx 目錄底下所有的 pas,但 packages 底下明明是 D7, 但我的是 D5

ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-06-25 16:17:34 IP:61.30.xxx.xxx 訂閱
JOANA 你好:
你可以參考 UNICODE完補計畫(WIN2000 以後的OS 才能用)安裝完後重新開機2次!!
應該可以不用裝TNT元件~就可以支援大部分的UNICODE字型了
------
======================
昏睡~
不昏睡~
不由昏睡~
joana
一般會員


發表:35
回覆:70
積分:21
註冊:2005-09-02

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-06-25 16:44:41 IP:122.124.xxx.xxx 訂閱
回覆stallion,不好意思,我的確沒安裝過3thirty party
1. stallion 大德的意思是要安裝pakages 目錄底下的 6個 dpk檔, 及 TntEx目錄底下所有的
PAS檔(delphi source file)嗎? 如果裝錯就毁了


2. QR Unicode VCL是什麼東東?

回覆ko大德,UNICODE補完計畫可以支援 簡体的UNICODE嗎? 因我須要在顯示元件上秀出 簡/繁體中文
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#11 引用回覆 回覆 發表時間:2007-06-25 17:05:15 IP:211.22.xxx.xxx 未訂閱
1. stallion 大德的意思是要安裝pakages 目錄底下的 6個 dpk檔, 及 TntEx目錄底下所有的
PAS檔(delphi source file)嗎? 如果裝錯就毁了
裝dpk就好,那些PAS是組成VCL的元件,放心啦~裝不起來不會毀的!只不過VCL元件的安裝很奇怪,有些要先裝Design Time元件,有些要先安裝Run Time元件,有些只有一支DPK就幫你安裝的好好的,端視設計的人怎麼安排的(如果有Readme看看裡面最好)。
2. QR Unicode VCL是什麼東東?
Quick Report Unicode VCL.
3.個人不建議安裝補完計畫,因為程式寫完了不是給自己用,是給客戶用,難道你還要幫客戶一一安裝補完字型檔嗎?另外,補完計畫安裝後進入某些網站,中文字會看不到或變成亂碼,還好補完計畫可以移除。
joana
一般會員


發表:35
回覆:70
積分:21
註冊:2005-09-02

發送簡訊給我
#12 引用回覆 回覆 發表時間:2007-06-26 22:50:43 IP:122.124.xxx.xxx 訂閱
回覆stallion大, TntUnicodeControlEx_D7.dpk 無法安裝在 D5,我轉安裝到 D7, TntUnicodeVcl_D70
可以安裝,但安裝 TntEx 的 TntUnicodeControlEx _D7.dpk 無法安裝,出現如下訊息,請幫忙看看,謝謝!
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#13 引用回覆 回覆 發表時間:2007-06-27 14:51:34 IP:211.22.xxx.xxx 未訂閱
1.雖然你沒貼出來錯誤訊息,我大概可以想見,應該是函數名稱找不到的錯誤訊息。先看一下這篇:http://delphi.ktop.com.tw/board.php?cid=30&fid=69&tid=81078
2.如果你沒有上述的版本,那按照小弟的敘述改一下一樣可以重新Compile,只不過麻煩一點,免費版本的函數名稱功能一樣,往往名稱都不一樣
2.1將找不到函數名稱如StrMoveW,StrLenW等等的檔案,uses TntWideStrUtils.pas ,其後將函數名稱一一按照相對的名稱改過來如 WStrMove, WStrLen等等,請自行檢視 TntWideStrUtils.pas 對照更改。
2.2另外在 TntDBUtils 裡面會有一個 WideStringRelpace 也同樣找不到,請將該檔案 uese TntSysUtils.pas ,然後函數名稱改為 Tnt_WideStringRelpace。
3.如此你的TntExVCL就可以掛上去了,你就可以用TntADOQuery以及TntADOStoreProc。
4.TntExUpdate我沒有安裝,因為看說明要安裝其他一些Third party的元件,我就懶了!
===================引 用 joana 文 章===================
回覆stallion大, TntUnicodeControlEx_D7.dpk 無法安裝在 D5,我轉安裝到 D7,TntUnicodeVcl_D70
可以安裝,但安裝 TntEx 的TntUnicodeControlEx _D7.dpk 無法安裝,出現如下訊息,請幫忙看看,謝謝!
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#14 引用回覆 回覆 發表時間:2007-06-27 16:34:46 IP:61.30.xxx.xxx 訂閱
小弟開發的是D6版的 安裝完 "完補計畫" 之後一般的元件也可以支援雙字元!!
由於客戶的需求在以前有win98或者winme系統所以不適用~
但是對於這類的防杜小弟是做在封裝檔的check也就是其實在使用者第一次安裝的時候!!
一併將完補計畫也安裝進去~
在設計成二段的完成程序 就是讓使用者必須開機二次!!
讓他不知覺的完成完補計畫!!

小弟認為這是最快也最完整的解決unicode的問題!!



至於你的簡體字的顯示並不是單純在"元件",也在db的儲存語言的預設值上~
------
======================
昏睡~
不昏睡~
不由昏睡~
編輯記錄
ko 重新編輯於 2007-06-27 16:43:00, 註解 無‧
joana
一般會員


發表:35
回覆:70
積分:21
註冊:2005-09-02

發送簡訊給我
#15 引用回覆 回覆 發表時間:2007-06-27 22:59:54 IP:122.124.xxx.xxx 訂閱
回覆stallion大, 我已把Tnt Unicode Controls - 2.1.11 版的 TntSysUtils.PAS 拷貝到 TntEx目錄下
選 TntUnicodeControlEx_D7.dpk Compile ,還是踢到鐵版, 找不到 TntSysUtilsEx.dcu,但我找遍了所有的 dcu,也找不到這支 dcu Y,
報告 stallion大,先前 TntUnicodeVcl_D70.dpk 我是用比較新的版本, TntSysUtils.PAS 是用 2.1.11版,
這新舊版本不一樣,有沒有關係? 出現訊息如下,不好意思,又要麻煩您了



報告stallion大, 先前 TntUnicodeVcl_D70.dpk 我是用比較新的版本, TntSysUtils.PAS是用 2.1.11版
不曉得這版本新舊不一樣,有沒有關係,出現訊息如下,真不好意思,又要麻煩您了
編輯記錄
joana 重新編輯於 2007-06-27 23:00:57, 註解 無‧
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#16 引用回覆 回覆 發表時間:2007-06-27 23:19:52 IP:211.22.xxx.xxx 未訂閱
1.先下載這個TNT Unicode Controls 吧~
2.完成前面的安裝,再安裝之前的說明安裝TntEx。
joana
一般會員


發表:35
回覆:70
積分:21
註冊:2005-09-02

發送簡訊給我
#17 引用回覆 回覆 發表時間:2007-06-28 11:37:53 IP:122.124.xxx.xxx 訂閱
B.TntEx,?
2.2另外在 TntDBUtils 裡面會有一個 WideStringRelpace 也同樣找不到,請將該檔案
uese TntSysUtils.pas ,然後函數名稱改為 Tnt_WideStringRelpace。
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#18 引用回覆 回覆 發表時間:2007-06-28 11:47:44 IP:211.22.xxx.xxx 未訂閱
A.回覆stallion大,我之前已有安裝TntUnicodeVcl_D70.dpk,可以再用這版本重新安裝一次,不須將之前的拿掉嗎?
當然要將之前版本的TntUnicodeControls先移除。
B.
.安裝步驟
c1.TntUnicodeQR3_R70.dpk---------->Compile
c2.TntUnicodeQR3_D70.dpk----------->Install
c3.TntUnicodeControlsEx_R70.dpk--->Compile
c4.TntUnicodeControlsEx_D70.dpk---->Install

C注意事項
c.1將找不到函數名稱如StrMoveW,StrLenW等等的檔案,uses TntWideStrUtils.pas ,其後將函數名稱一 一按照相對的名稱改過來如 WStrMove, WStrLen等等,請自行檢視TntWideStrUtils.pas 對照更改。
c.2另外在 TntDBUtils 裡面會有一個 WideStringRelpace 也同樣找不到,請將該檔案uese TntSysUtils.pas ,然後函數名稱改為 Tnt_WideStringRelpace。
編輯記錄
Stallion 重新編輯於 2007-06-28 11:53:14, 註解 無‧
joana
一般會員


發表:35
回覆:70
積分:21
註冊:2005-09-02

發送簡訊給我
#19 引用回覆 回覆 發表時間:2007-06-30 23:28:45 IP:122.124.xxx.xxx 訂閱
回覆stallion大,按照您的指導,已安裝妥當,真是太辛苦您了,也謝謝您那麼耐心細心的教導,
謝謝...
還有幾個問題,想再請教stallion大

1.關於印表,因我們公司是用別家的印表程式Visurl Report(不支援UNICODE),現在又多了
TntQReport的4個元件,只用這4個元件就能印表嗎?
2.TntQReport頁面下的TntQRsysdata 元件有何作用?
3.TntQReport頁面下的TQRDBText元件,有指定DataField 及DataSet,但資料卻顯現不出來,
執行程式時,所顯示的卻是欄位名稱?
4.TntEx只有TntADOQuery1,TntStocProc,沒有TntADOConnection,那TntADOQuery1的Connection
還是得指到 Delphi自帶的ADOConnection,這樣資料會不會有問題?
5.TntDBGrid元件 跟 TntDBGridEx元件 有何差別?
6.為何TntUnicodeControlsEx_R70.dpk 只要 Compile 而不 Install?
而TntUnicodeControlsEx_D70.dpk 卻只要Install 而不 Compile?
7.之前您曾提過的ADOMemo部分,要下載TntWideAdoMemoField,這個ADOMemo是個欄位名稱嗎?

還有分享一下,trim(TntADOQuery1['name'],還是會得到一個亂碼,要先宣告一個 WideString
的變數 ss:WideString
ss:=TntADOQuery1['name']
trim(ss) -->這樣才能正確截掉後面空白的部份

Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#20 引用回覆 回覆 發表時間:2007-06-30 23:40:57 IP:211.22.xxx.xxx 未訂閱
1.Tnt改寫的Quick Report元件我都沒用過,你必須要自己試看看。
2.當然用原來的Connection連線即可,他只是負責與伺服器的連結。
3.有的Package是Runtime有的是DesignTime,為何如此這牽扯到Package的設計,可以去察看一下Package如何設計,當然也牽扯到Package設計者的設計方向。
joana
一般會員


發表:35
回覆:70
積分:21
註冊:2005-09-02

發送簡訊給我
#21 引用回覆 回覆 發表時間:2007-07-01 11:06:43 IP:122.124.xxx.xxx 訂閱
真是感謝stallion大,謝謝您的耐心與教導,您得這個分真是太辛苦了,應該給您雙倍得分才對
系統時間:2024-04-26 9:08:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!