全角半角入力


小太郎  2010-01-10 00:20:00  No: 36848

TEDITに文字を入力し、自動的にすべての文字が全角になる方法をご存じの方はいますか?また、逆に全角をすべて半角にする方法も教えてもらえませんか?


ShiftJISなら  2010-01-10 00:27:27  No: 36849

LCMapString APIを使いましょうね。


小太郎  2010-01-10 00:47:52  No: 36850

実際にどのように書けばいいのですか?すみません、ど素人なもので。


かず  2010-01-10 04:14:45  No: 36851

ド素人です、初心者です、と書けば許されると思ってるのが頭にくるわ。
簡単なことなんだから少しは調べろ。
甘えるな。


スパムちゃん。  2010-01-10 04:41:55  No: 36852

英数文字なら、こんなのもありますよ。
http://www.wwlnk.com/boheme/delphi/vbtodel/daf0610.html


  2010-01-10 07:41:52  No: 36853

>英数文字なら、こんなのもありますよ。
>http://www.wwlnk.com/boheme/delphi/vbtodel/daf0610.html

これ、全角半角じゃなくて大文字小文字の変換のようですが…


HOta  2010-01-10 17:47:34  No: 36854

JConvert.pasを調べたら、幸せになれるかも。


小太郎  2010-01-11 20:30:07  No: 36855

情報ありがとうございます。
私自信、調べてみました。情報はあるのですが、それぞれがなにを示しているのか読み取るのに苦労しています。LCMapStringをつかっったものですが、LCMAP_FULLWIDTHの個所以外わかりません。知っている方、ちょっとアドバイスいただけないでしょうか?

LCMapString(GetUserDefaultLCID, LCMAP_FULLWIDTH, PChar(Str), Length(Str)+1, Buf, 1024);
  Result:=String(Buf);


Null  2010-01-11 20:51:31  No: 36856

こちらの記事は参考になりませんか?。

http://mrxray.on.coocan.jp/Delphi/plSamples/881_ToHankakuKana.htm


Null  2010-01-12 00:51:43  No: 36857

先に伝えておくことを忘れていてのですが、Delphiのversionは6です。


小太郎  2010-01-12 00:52:26  No: 36858

先に伝えておくことを忘れていてのですが、Delphiのversionは6です。


自動的に  2010-01-12 01:22:19  No: 36859

変換したいなら、TEditのOnExitイベントで変換すればいいんじゃない?


Null  2010-01-12 02:10:19  No: 36860

小太郎さん。
ハンドルネームを使う場合はご注意ください。

これ(↓)はNullでは有りません。
> Null 2010/01/11(月) 15:51:43 
> 先に伝えておくことを忘れていてのですが、Delphiのversionは6です。

以上、宜しく。


小太郎  2010-01-12 03:01:34  No: 36861

nullさん、ご迷惑をおかけして、すみませんでした。


武田  2010-01-12 11:19:52  No: 36862

理屈も知らずに使っていますが・・・
以前私が教えてもらった方法でよければどうぞ。

http://www.wwlnk.com/boheme/delphi/vbtodel/vbfaq/vbd0050.htm
を参考にして以下のようにして使っています。

//全角を半角に変換する
function  MapString(const Source: string; Flag: integer): string;
var
  Chr : array [0..255]  of  char;
begin
  Windows.LCMapString(
    GetUserDefaultLCID(),
    Flag,
    PChar(Source),
    Length(Source) + 1,
    chr,
    Sizeof(chr)
    );
  Result  :=  chr;
  Result := Stringreplace(Result,'¥', '\',  [rfReplaceAll]);//\はどちらの方向へも変換しないので
end;

function ZenToHan(const Source: string) : string;
begin
  Result  :=  MapString(Source, LCMAP_HALFWIDTH);
end;

procedure TForm1.Button1Click(Sender: TObject);
var str:string;
begin
  str:= ZenToHan(ComboBox3.Text);
end;


Fusa  2010-01-13 00:58:45  No: 36863

http://delfusa.main.jp/delfusafloor/opensource/delfusalibrary/20070828160200/StringUnit/StringUnitLight.pas.txt

そのあたり、独自実装もLCMapString実装もSJIS系なら全部実装しているんですが、、、検索エンジンにひっかからないのかな…


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加