Welcome

« t_jis2sjis::sjis 少し高速化 | メイン | Nyaryutia3 (ver3.2004.06.27) Release »

2004年06月27日

P2SC

つくったソフトとか

P2SC : %ほげ%ほげ とかいうファイル名を標準的な形式にリネームするものです。
Download file
きれいじゃないけど、カーネル公開

void CP2scDlg::OnEditchangePath()
{
UpdateData(TRUE);

unsigned char buff[MAX_FLEN+1];
unsigned char *q;

unsigned char *t1, *t2;
const unsigned char *p, *e;

const int cstep = 16;
char *cnum = "0123456789ABCDEFabcdef";
// 0123456789
// 012345
// 012345
const unsigned char nummap[] = { 0,1,2,3,4,5,6,7,8,9, 10,11,12,13,14,15, 10,11,12,13,14,15 };


p = (unsigned char *)(LPCTSTR)m_tgt;
q = buff;


// get end
for(e = p; *e != '\0' ;e++);

for(;;)
{
// Copy not %..
for(;( *p != '%' )&&( *p != '\0' ) ;)
{
*q = *p; q++; p++; // COPY CHAR
}

// check eof
if( *p == '\0' ) break;

// this is '%'!!!
// if( *p == '%' ) break;

// check end
if( (e - p) <= 2 )
{
// copy mod
for(; *p != '\0' ;)
{
*q = *p; q++; p++; // COPY CHAR
};
break;
}

t1 =(unsigned char *)strchr( cnum, (const char)*(p+1) );
t2 =(unsigned char *)strchr( cnum, (const char)*(p+2) );
if( t1 && t2 )
{

*q = (nummap[ t1-(const unsigned char*)cnum ] * cstep )
+(nummap[ t2-(const unsigned char*)cnum ] );

q++;
p+=3;

}else{
// not cmp !!!
*q++ = '%';
p++;
}

}
*q = '\0';

m_rep = buff;

UpdateData(FALSE);
}

投稿者 kata : 2004年06月27日 15:13

Trackback Pings

このエントリーのトラックバックURL:
http://katakuri.sakura.ne.jp/~kata/mt-tb.cgi/2

コメント

コメントしてください




保存しますか?