Delphi實現AnsiString與WideString的轉換函數 轉


Delphi實現AnsiString與WideString的轉換函數

分類: Delphi   460人閱讀   評論(0)   收藏   舉報
[delphi]   view plain copy
  1. 在Delphi下,AnsiString 和 WideString 的存儲與管理各有不同,這里提供互相轉換的函數一對。  
  2. /// Wide String -> Ansi String  
  3. function WideStringToAnsiString(const strWide: WideString; CodePage: Word): AnsiString;  
  4. var  
  5.   Len: integer;  
  6. begin  
  7.   Result := '';  
  8.   if strWide = '' then Exit;  
  9.    
  10.   Len := WideCharToMultiByte(CodePage,  
  11.     WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR,  
  12.     @strWide[1], -1nil0nilnil);  
  13.   SetLength(Result, Len - 1);  
  14.   
  15.   if Len > 1 then  
  16.     WideCharToMultiByte(CodePage,  
  17.       WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR,  
  18.       @strWide[1], -1, @Result[1], Len - 1nilnil);  
  19. end;  
  20.   
  21. /// Ansi String -> Wide String  
  22. function AnsiStringToWideString(const strAnsi: AnsiString; CodePage: Word): WideString;  
  23. var  
  24.   Len: integer;  
  25. begin  
  26.   Result := '';  
  27.   if strAnsi = '' then Exit;  
  28.   
  29.   Len := MultiByteToWideChar(CodePage, MB_PRECOMPOSED, PChar(@strAnsi[1]), -1nil0);  
  30.   SetLength(Result, Len - 1);  
  31.    
  32.   if Len > 1 then  
  33.     MultiByteToWideChar(CodePage, MB_PRECOMPOSED, PChar(@strAnsi[1]), -1, PWideChar(@Result[1]), Len - 1);  
  34. end;  
  35.   
  36. 調用時需要傳入 CodePage 參數,如果是簡體中文環境,則 CodePage = 936(可以使用API函數GetACP獲取系統默認CodePage)  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM