聊天室中,如何把sever端要傳出去的訊息,轉換成unicode格式傳送出去 |
答題得分者是:RaynorPao
|
leeli
初階會員 發表:57 回覆:55 積分:27 註冊:2003-06-25 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 小弟我寫了一個類似聊天室功能的程式。在接收及發送訊息功能都很正常。 現在小弟我有個小問題,因為這支程式主要是接收由硬體端傳回來的資料,以及下指令給硬體。但是硬體,也就是client端只接受unicode格式的字串。 請問各位,在BCB中有沒有能直接將字串轉成unicode格式的語法呢?或是,該如何處理呢?leeli 你好: 請參考以下的連結文章
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
leeli
初階會員 發表:57 回覆:55 積分:27 註冊:2003-06-25 發送簡訊給我 |
再請問一下:
像那篇文章中:
char sz[256]="我們大家都是中國人";
AnsiString asz=(AnsiString)sz;
int iWCBuf=asz.WideCharBufSize();
wchar_t wsz[512]={0};
asz.WideChar(wsz, iWCBuf); 如果要在Edit中顯現出轉換過的字串,該下那個指令呢?
還有,上面那個例子轉換過的字串是什麼呢?
因為,如果用Edit-Text=...;的話,他顯現出來的好像還是AnsiString的格式 還有一個問題,
在聊天室當中,該如何把轉換過的字串給send出去呢?
因為用SendText()傳的話,他好像還是會傳送AnsiString的格式 因為,小弟我是個超級新手,而且對於AnsiString並不瞭解,而對於unicode更是以前都沒有聽過,希望各位先進能給小弟我多指教!
------
小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。 對於各位的大力協助,感激不盡! |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 再請問一下: 像那篇文章中: char sz[256]="我們大家都是中國人"; AnsiString asz=(AnsiString)sz; int iWCBuf=asz.WideCharBufSize(); wchar_t wsz[512]={0}; asz.WideChar(wsz, iWCBuf); 如果要在Edit中顯現出轉換過的字串,該下那個指令呢? 還有,上面那個例子轉換過的字串是什麼呢? 因為,如果用Edit-Text=...;的話,他顯現出來的好像還是AnsiString的格式 還有一個問題, 在聊天室當中,該如何把轉換過的字串給send出去呢? 因為用SendText()傳的話,他好像還是會傳送AnsiString的格式 因為,小弟我是個超級新手,而且對於AnsiString並不瞭解,而對於unicode更是以前都沒有聽過,希望各位先進能給小弟我多指教! leeli 你好: (1)據我所知 VCL 元件目前是不支援 UNICODE 的,因此你要先把 UNICODE 轉回 ANSI 才能顯示在 VCL 元件 (2)你如果轉成 UNICODE 的話,要用 SendBuf 的方式傳送-- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
leeli
初階會員 發表:57 回覆:55 積分:27 註冊:2003-06-25 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 那再請教一下: 像上面的例子,如果我要把轉換過的"我們大家都是中國人"用SendBuf傳送出去,該如何下這個指令呢? 就以這個例子解說給我明白一下,感激不盡~leeli 你好: 我不太清楚你是利用什麼元件來寫的 假設你是使用 TServerSocket/TClientSocket 元件的話 請先參考以下的範例 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=25914 只需要把傳輸的 structure 裡面改成你要傳的 UNICODE 即可 -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
leeli
初階會員 發表:57 回覆:55 積分:27 註冊:2003-06-25 發送簡訊給我 |
RaynorPao你好:
小弟我是使用TServerSocket的元件來寫的。
以下是我要send訊息所使用的程式碼: void __fastcall TForm1::Button2Click(TObject *Sender)
{
mode=1;
AnsiString sz=Edit4->Text;
AnsiString asz=(AnsiString)sz;
int iWCBuf=asz.WideCharBufSize();
wchar_t wsz[512]={0};
asz.WideChar(wsz, iWCBuf);
ServerSocket1->Socket->Connections[0]->SendText(sizeof(wsz));
Edit4->Clear();
}
能否幫小弟我看看,是否這樣就能把我要傳的訊息轉成unicode傳出去呢?
感激不盡!
------
小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。 對於各位的大力協助,感激不盡! |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: RaynorPao你好: 小弟我是使用TServerSocket的元件來寫的。 以下是我要send訊息所使用的程式碼: void __fastcall TForm1::Button2Click(TObject *Sender) { mode=1; AnsiString sz=Edit4->Text; AnsiString asz=(AnsiString)sz; int iWCBuf=asz.WideCharBufSize(); wchar_t wsz[512]={0}; asz.WideChar(wsz, iWCBuf); ServerSocket1->Socket->Connections[0]->SendText(sizeof(wsz)); Edit4->Clear(); } 能否幫小弟我看看,是否這樣就能把我要傳的訊息轉成unicode傳出去呢? 感激不盡!leeli 你好: 請參考以下的寫法 < class="code"> AnsiString sz="測試傳送字串abcdefg"; wchar_t wsz[512]={0}; int iwLen=0; MultiByteToWideChar(CP_ACP, 0, sz.c_str(), -1, wsz, 512); iwLen=(wcslen(wsz) 1)*2; ServerSocket1->Socket->Connections[0]->SendBuf(wsz, iwLen); -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
leeli
初階會員 發表:57 回覆:55 積分:27 註冊:2003-06-25 發送簡訊給我 |
大大:
今天用此方式測試了一下,又發現了一個奇怪的問題,如果傳送的是一串英文或數字的字串,只會傳送第一個字元。如果是中文字就沒關係。
以下是我的程式碼,能否幫我看看,感激不盡~ void __fastcall TForm1::Button2Click(TObject *Sender)
{
mode=1;
AnsiString sz=Edit4->Text;
int iwLen=0;
wchar_t wsz[512]={0};
MultiByteToWideChar(CP_ACP, 0, sz.c_str(), -1, wsz, 512);
iwLen=(wcslen(wsz) 1)*2;
ServerSocket1->Socket->Connections[j]->SendBuf(wsz, iwLen);
Edit4->Clear();
}
------
小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。 對於各位的大力協助,感激不盡! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |