全角半角入力


小太郎  2010-01-09 15:20:00  No: 36848  IP: 192.*.*.*

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

編集 削除
ShiftJISなら  2010-01-09 15:27:27  No: 36849  IP: 192.*.*.*

LCMapString APIを使いましょうね。

編集 削除
小太郎  2010-01-09 15:47:52  No: 36850  IP: 192.*.*.*

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

編集 削除
かず  2010-01-09 19:14:45  No: 36851  IP: 192.*.*.*

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

編集 削除
スパムちゃん。  2010-01-09 19:41:55  No: 36852  IP: 192.*.*.*

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

編集 削除
 2010-01-09 22:41:52  No: 36853  IP: 192.*.*.*

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

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

編集 削除
HOta  2010-01-10 08:47:34  No: 36854  IP: 192.*.*.*

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

編集 削除
小太郎  2010-01-11 11:30:07  No: 36855  IP: 192.*.*.*

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

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

編集 削除
Null  2010-01-11 11:51:31  No: 36856  IP: 192.*.*.*

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

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

編集 削除
Null  2010-01-11 15:51:43  No: 36857  IP: 192.*.*.*

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

編集 削除
小太郎  2010-01-11 15:52:26  No: 36858  IP: 192.*.*.*

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

編集 削除
自動的に  2010-01-11 16:22:19  No: 36859  IP: 192.*.*.*

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

編集 削除
Null  2010-01-11 17:10:19  No: 36860  IP: 192.*.*.*

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

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

以上、宜しく。

編集 削除
小太郎  2010-01-11 18:01:34  No: 36861  IP: 192.*.*.*

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

編集 削除
武田  2010-01-12 02:19:52  No: 36862  IP: 192.*.*.*

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

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-12 15:58:45  No: 36863  IP: 192.*.*.*

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

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

編集 削除