Mam's WebSite

Mamの覚書Q&A検索


大項目:「 Delphi 」 - 中項目:「 API 」

「 半角カナだけを全角カナに変換する 」

半角カナだけを全角カナに変換するには


回答

半角を全角に変換するにはLCMapStringというAPI関数を呼び出せばよい。
よって、半角カナのみをLCMapString関数で変換すればよい。

ソース

function HanToZen(str:String):String;
var buf:array [0..1024] of Char;
begin
  LCMapString(GetUserDefaultLCID,LCMAP_FULLWIDTH,PChar(str),Length(Str)+1,Buf,1024);
  Result:=String(Buf);
end;
 
function KanaHanToZen(st:wideString):string;
var i:integer;
    stTmp :wideString;
    stKana:wideString;
    chKana:wideString;
begin
  stKana:='';
  stTmp:='';
  for i:=1 to Length(st) do
  begin
    chKana:=Midstr(st,i,1);
    if((ord(chKana[1]))>=65377) and ((ord(chKana[1]))<=65439) then
      stKana:=stKana+chKana;
  end
  else
  begin
    if(Length(stKana)>0 then
    begin
      stTmp:=stTmp+HanToZen(stKana);
      stKana:='';
    end;
    stTmp:=stTmp+chKana;
  end;
 
  if Length(stKana)>0 then
    stTmp:=stTmp+HanToZen(stKana);
  KanaHanToZen:=stTmp;
end;

Copyright 2019 Mam