請問Unicode相關函式? |
尚未結案
|
ying0515
中階會員 發表:90 回覆:168 積分:81 註冊:2003-01-04 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
|
ying0515
中階會員 發表:90 回覆:168 積分:81 註冊:2003-01-04 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言:ying0515 你好: 你可以先參考以下這篇文章中的範例程式碼(Delphi) 先把中文字由 ANSI 轉成 UNICODE http://delphi.ktop.com.tw/topic.php?TOPIC_ID=28163 然後再取出 UNICODE 的碼 -- Enjoy Researching & Developing --RaynorPao先進: Sorry!您提的文章,在下實在有點看不懂C 程式 可否有Delphi的範例可參考!謝謝!Delphi Man
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
ying0515
中階會員 發表:90 回覆:168 積分:81 註冊:2003-01-04 發送簡訊給我 |
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var w1: String; w2: String; s1: LPCSTR; s2: LPWSTR; begin w1 := '明'; s1 := pchar(w1); MultiByteToWideChar(CP_ACP, 0, s1, -1, s2, 3); w2 := s2; end; end. 執行後出現access violation at address 0x44....之錯誤訊息 請問如何解決?及如何取出Unicode?Delphi Man
------
Delphi |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言:unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var w1: String; w2: String; s1: LPCSTR; s2: LPWSTR; begin w1 := '明'; s1 := pchar(w1); MultiByteToWideChar(CP_ACP, 0, s1, -1, s2, 3); w2 := s2; end; end. 執行後出現access violation at address 0x44....之錯誤訊息 請問如何解決?及如何取出Unicode?Delphi Man ying0515 你好: (1)s2 要配置記憶體,最好給它大一點的記憶體,例如: 8 個 bytes,最後一個 參數也要用 8 (2)如果已經轉成了 UNICODE,你可以利用一個 WORD 的指標,指向 s2,得到的 值就是 UNICODE 的數值了-- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
ying0515
中階會員 發表:90 回覆:168 積分:81 註冊:2003-01-04 發送簡訊給我 |
procedure TForm1.Button1Click(Sender: TObject); var w1: String; s1: LPCSTR; s2: LPWSTR; p1: ^Word; begin w1 := '明'; s1 := pchar(w1); GetMem(s2,8); MultiByteToWideChar(CP_ACP, 0, s1, -1, s2, 8); p1 := @s2; ShowMessage(IntToStr(p1^)); end; 請問為何p1求出的值是14408而不是26126 ?Delphi Man 發表人 - ying0515 於 2003/04/18 16:33:15
------
Delphi |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言:ying0515 你好: 改成這樣寫,看看可不可以呢?? < class="code"> procedure TForm1.FormClick(Sender: TObject); var s1: string; p1: Pchar; w1:array[0..1] of WideChar; begin s1 := '明'; p1 := pchar(s1); try MultiByteToWideChar(CP_ACP, 0, p1, -1, @w1[0],sizeof(WideChar) ); except end; ShowMessage(IntToStr(integer(w1[0]))); end; -- Enjoy Researching & Developing --procedure TForm1.Button1Click(Sender: TObject); var w1: String; s1: LPCSTR; s2: LPWSTR; p1: ^Word; begin w1 := '明'; s1 := pchar(w1); GetMem(s2,8); MultiByteToWideChar(CP_ACP, 0, s1, -1, s2, 8); p1 := @s2; ShowMessage(IntToStr(p1^)); end; 請問為何p1求出的值是14408而不是26126 ?Delphi Man
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
ying0515
中階會員 發表:90 回覆:168 積分:81 註冊:2003-01-04 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |