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

Unicode的文件讀入

 
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-05 19:39:37 IP:61.221.xxx.xxx 未訂閱
引言: http://homepage3.nifty.com/m-and-i/tips/unicode.htm Unicode的文件讀入 Unicode的文本文件引入、Shift-JIS的文本作為歸還函數。 DOS或Windows的手續(Little Endian)事情與、Big Endian事情的二有。文件Unicode或是怎麼樣簡易確切判別在……中、那個文件的前頭2byte研究、$FFFE如果Little Endian的Unicode,$FEFF如果Big Endian的Unicode與判定(以來規章、二進制文件的前頭上述的井領著那個時在……中當然錯誤啟動有)。 // Unicode(Little Endian)的文件讀擁擠Shift-Jis的文本歸還 // 文件的前頭2byte$FFFE如果Little Endian function LoadUniLi(const FileName: string): string; var Fs: TFileStream; Sz: integer; Pc: PChar; begin Result :=''; Fs := TFileStream.Create(FileName, fmOpenRead); try Fs.Position := 0; sz := Fs.Size; try Pc := AllocMem(sz 10); Fs.Seek(0, soFromBeginning); try if Fs.Read(Pc^, sz) = sz then begin Result := WideCharToString(PWideChar(Pc 2));//前頭2byte版頭畫 end; finally FreeMem(Pc); end; except raise Exception.Create('內存確保不能.'); end; finally Fs.Free; end; end; // Unicode(Big Endian)的文件讀擁擠Shift-Jis的文本歸還 // 文件的前頭2byte$FEFF如果Little Endian function LoadUniBi(const FileName: string): string; var Fs: TFileStream; Sz, n: integer; Pc: PChar; Tc: char; begin Result := ''; Fs := TFileStream.Create(FIleName, fmOpenRead); try Fs.Position := 0; sz := Fs.Size; try Pc := AllocMem(sz 10); Fs.Seek(0, soFromBeginning); try if Fs.Read(Pc^, sz) = sz then begin n := 0; // Word的Low, High調換凍僵(什麼原始的的方法) while n < sz do begin Tc := (Pc n)^; (Pc n)^ := (Pc n 1)^; (Pc n 1)^ := Tc; Inc(n, 2); end; Result := WideCharToString(PWideChar(Pc 2));//前頭2byte版頭畫 end; finally FreeMem(Pc); end; except raise Exception.Create('內存確保不能.'); end; finally Fs.Free; end; end; 這單位的使用改變或部分挪用也包含自由。
系統時間:2024-03-29 18:26:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!