TEDITに文字を入力し、自動的にすべての文字が全角になる方法をご存じの方はいますか?また、逆に全角をすべて半角にする方法も教えてもらえませんか?
LCMapString APIを使いましょうね。
実際にどのように書けばいいのですか?すみません、ど素人なもので。
ド素人です、初心者です、と書けば許されると思ってるのが頭にくるわ。
簡単なことなんだから少しは調べろ。
甘えるな。
英数文字なら、こんなのもありますよ。
http://www.wwlnk.com/boheme/delphi/vbtodel/daf0610.html
>英数文字なら、こんなのもありますよ。
>http://www.wwlnk.com/boheme/delphi/vbtodel/daf0610.html
これ、全角半角じゃなくて大文字小文字の変換のようですが…
JConvert.pasを調べたら、幸せになれるかも。
情報ありがとうございます。
私自信、調べてみました。情報はあるのですが、それぞれがなにを示しているのか読み取るのに苦労しています。LCMapStringをつかっったものですが、LCMAP_FULLWIDTHの個所以外わかりません。知っている方、ちょっとアドバイスいただけないでしょうか?
LCMapString(GetUserDefaultLCID, LCMAP_FULLWIDTH, PChar(Str), Length(Str)+1, Buf, 1024);
Result:=String(Buf);
こちらの記事は参考になりませんか?。
> http://mrxray.on.coocan.jp/Delphi/plSamples/881_ToHankakuKana.htm
先に伝えておくことを忘れていてのですが、Delphiのversionは6です。
先に伝えておくことを忘れていてのですが、Delphiのversionは6です。
変換したいなら、TEditのOnExitイベントで変換すればいいんじゃない?
小太郎さん。
ハンドルネームを使う場合はご注意ください。
これ(↓)はNullでは有りません。
> Null 2010/01/11(月) 15:51:43
> 先に伝えておくことを忘れていてのですが、Delphiのversionは6です。
以上、宜しく。
nullさん、ご迷惑をおかけして、すみませんでした。
理屈も知らずに使っていますが・・・
以前私が教えてもらった方法でよければどうぞ。
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;
そのあたり、独自実装もLCMapString実装もSJIS系なら全部実装しているんですが、、、検索エンジンにひっかからないのかな…
ツイート | ![]() |