ansi開頭的function與沒有的差別 |
尚未結案
|
airwei
一般會員 發表:19 回覆:7 積分:5 註冊:2002-12-20 發送簡訊給我 |
大家好:我只知道ansi開頭的是處理multi byte的,但是我以AnsiCompareStr 測試但是看不出來哪裡的差別,可能我不了解multi byte的定義吧?
是否有誰可以給我asni與沒有ansi的範例,知道差別在哪裡?
下面是我用AnsiCompareStr 來比較,
edit1.text 與edit2.text-->我都輸入相同的字(如"a" 或是 "我" 或是"A")
出來的結果都是相等,不知道什麼時候 相同的字才會不一樣 procedure TForm1.Button1Click(Sender: TObject);
var
result : Integer;
begin
// Compare some strings
result := AnsiCompareStr(edit1.text, edit2.text); if result < 0 then ShowMessage(edit1.text ' < ' edit2.text);
if result = 0 then ShowMessage(edit1.text ' = ' edit2.text);
if result > 0 then ShowMessage(edit1.text ' > ' edit2.text);
end;
|
wyndog
資深會員 發表:7 回覆:362 積分:348 註冊:2004-10-12 發送簡訊給我 |
AnsiCompareStr 看不出差別的
看看底下的 UpperCase 與 AnsiUpperCase 就知道有差了
test := #$A4 #$61; // #$61 就是小寫 a // 你可以很明顯發現 UpperCase 出來的結果不一樣 // 因為 UpperCase 不支援 MultiByte 所以,a 被變成 A,組合出來的中文就不對了 ShowMessage(test ':' UpperCase(test)); // 二者皆相等,所以 AnsiUpperCase 支援 MultiByte ShowMessage(test ':' AnsiUpperCase(test)); |
airwei
一般會員 發表:19 回覆:7 積分:5 註冊:2002-12-20 發送簡訊給我 |
|
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
妳在鑽牛角尖
multibyte 充其量 不過就是 「兩個」 byte
就是這樣而已
用一個 byte 來代表「符號」
跟兩個 bytes 來代表「符號」
沒什麼不同,都是將「符號」加以編排,給以編好而已
所以一個 byte 可以編 255 個符號
兩個 bytes 可以編 65535 個符號
就是這樣,不會很難
至於要怎麼編,就看編的人怎麼去處理,所以才有 ASCII , BIG5 , Unicode 等不同的編排方式
妳不會想要一一瞭解其中細節的,因為種類太多了,妳不過要寫個程式,又不是要發明新的編碼法
所以當妳使用 unicode 時,就必需使用 支援 multibyte 的函示,而當妳使用 Big5 時就使用一般函示即可
至於使用哪種,可以在 Font 的 property 中 CharSet 設定
不用想太多
至於何時會錯,就是當妳將兩個 byte 格式的字,擠進只能處理一個 byte 的函示時,就會出錯
當然 支援 multibyte 的函示一定不會出錯,所以都用他就好了
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |