文字列を変換するサンプルです。
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include <mbstring.h>
//---------------------------------------------------------------------------
AnsiString HanToZen(AnsiString str)
{
AnsiString strw;
char *c1;
c1 = (char*)GlobalAlloc(GPTR, str.Length() * 2);
LCMapString(GetUserDefaultLCID(),LCMAP_FULLWIDTH,
str.c_str(),str.Length(),
c1,str.Length()*2);
strw = c1;
GlobalFree(c1);
return strw;
}
AnsiString ZenToHan(AnsiString str)
{
AnsiString strw;
char *c1;
c1 = (char*)GlobalAlloc(GPTR, str.Length());
LCMapString(GetUserDefaultLCID(),LCMAP_HALFWIDTH,
str.c_str(),str.Length(),
c1,str.Length());
strw = c1;
GlobalFree(c1);
return strw;
}
AnsiString HiraToKata(AnsiString str)
{
AnsiString strw;
char *c1;
c1 = (char*)GlobalAlloc(GPTR, str.Length());
LCMapString(GetUserDefaultLCID(),LCMAP_HIRAGANA,
str.c_str(),str.Length(),
c1,str.Length());
strw = c1;
GlobalFree(c1);
return strw;
}
AnsiString KataToHira(AnsiString str)
{
AnsiString strw;
char *c1;
c1 = (char*)GlobalAlloc(GPTR, str.Length());
LCMapString(GetUserDefaultLCID(),LCMAP_KATAKANA,
str.c_str(),str.Length(),
c1,str.Length());
strw = c1;
GlobalFree(c1);
return strw;
}
AnsiString HanKToZen(AnsiString str)
{
AnsiString strw;
char *c1;
char c2[3];
char c3[3];
c1 = (char*)GlobalAlloc(GPTR,str.Length()*2);
strcpy(c1,str.c_str());
for (unsigned int i=0;i<strlen(c1);i++){
if (IsDBCSLeadByte(c1[i])){
c3[0] = c1[i];
c3[1] = c1[i+1];
c3[2] = '\0';
i++;
}else if (_ismbbkana(c1[i])){
if (i+1<strlen(c1) && ((unsigned char)c1[i+1]==0xde || (unsigned char)c1[i+1]==0xdf)){ //半角カナの濁点
c2[0] = c1[i];
c2[1] = c1[i+1];
c2[2] = '\0';
i++;
}else{
c2[0] = c1[i];
c2[1] = '\0';
}
LCMapString(GetUserDefaultLCID(),LCMAP_FULLWIDTH,
c2,strlen(c2)+1,
c3,sizeof(c3));
}else{
c3[0] = c1[i];
c3[1] = '\0';
}
strw += c3;
}
GlobalFree(c1);
return strw;
}
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit1->Text = HanKToZen(Edit1->Text);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Edit2->Text = HanToZen(Edit2->Text);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Edit3->Text = ZenToHan(Edit3->Text);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
Edit4->Text = HiraToKata(Edit4->Text);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
Edit5->Text = KataToHira(Edit5->Text);
}
//---------------------------------------------------------------------------
DownLoad bcbtips085.lzh 4KB(BCB5)