DELPHI 7 にて、全角ひらがなを半角カタカナに変換する方法をお教えください

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/11/28 16:00:49
  • 終了:2007/12/01 15:06:52

回答(3件)

id:kujirahand No.1

kujirahand回答回数27ベストアンサー獲得回数22007/11/28 16:19:31

ポイント27pt

http://nadesi.com で使っている方法ですが、

こんな感じでどうでしょう?

var

s: string;

begin

s := 'あいうえお';

s := convToKatakana(s); // カタカナに

s := convToHalf(s); // 半角に

ShowMessage(s); // 半角カタカナになった!

end;

// 以下ライブラリ

{半角に変換}

function convToHalf(const str: string): string;

begin

Result := LCMapStringEx( str, LCMAP_HALFWIDTH );

end;

function convToKatakana(const str: string): string;

begin

Result := LCMapStringEx( str, LCMAP_KATAKANA );

end;

function LCMapStringEx(const str: string; MapFlag: DWORD): string;

var

pDes: PChar;

len,len2: Integer;

begin

if str='' then begin Result := ''; Exit; end;

len := Length(str);

len2 := len*2+2;

GetMem(pDes, len2);//half -> full

try

FillChar( pDes^, len2, 0 );

LCMapString( LOCALE_SYSTEM_DEFAULT, MapFlag, PChar(str), len, pDes, len2-1);

Result := string( pDes );

finally

FreeMem(pDes);

end;

end;

id:shochankun

回答ありがとうございます

早速、ためしてみます

2007/11/28 17:49:03
id:kyosh No.2

kyosh回答回数143ベストアンサー獲得回数52007/11/28 16:30:13

ポイント27pt

全角ひらがなを全角カタカナに変換する

http://www.wwlnk.com/boheme/delphi/tips/tec1330.htm


全角を半角に変換する

http://www.wwlnk.com/boheme/delphi/tips/tec1320.htm


この2つを応用してみたはいかがでしょうか?

id:shochankun

回答ありがとうございました

2007/11/28 17:54:34
id:sunaoka No.3

sunaoka回答回数5ベストアンサー獲得回数12007/11/28 16:19:59

ポイント26pt

LCMapString API を使う方法があります。

http://msdn.microsoft.com/library/ja/jpintl/html/_win32_lcmapstr...

フォームに Button1 と Memo1 と Memo2 を配置してください。

procedure TForm1.Button1Click(Sender: TObject);
var
  buffer: array[0..255] of char;
begin
  Windows.LCMapString(
    GetUserDefaultLCID(),
    LCMAP_HALFWIDTH or LCMAP_KATAKANA,
    PChar(Memo1.Text),
    Length(Memo1.Text) + 1,
    buffer,
    SizeOf(buffer)
    );
  Memo2.Text := buffer;
end;

Button1 をクリックすると、Memo1 に入力された「全角ひらがな」が「半角カタカナ」に変換されて、Memo2 に入ります。

Delphi 7 Pro で確認しました。

id:shochankun

回答ありがとうございました

2007/11/28 17:54:27

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません