- 注册时间
- 2005-6-25
- 最后登录
- 1970-1-1
|

楼主 |
发表于 2006-1-14 00:05:00
|
显示全部楼层
怎么上传啊?只好粘代码了
以下是大版本的
char Esign[65]=
". , ; - / ? ! $ % ( ) : ` ' < > { } [ ] # ~ @ ^ & * + = _ | ";
char Csign[85]="。,、:;?!…‘’〔〕《》“”〖〗【】#~●※○◎□⊙+-×÷№☆★$¥§℃‰.—";
int Cindex[20]={0xa1a1,0xfea1,0xb1a2,0xfca2,0xa1a3,0xfea3,0xa1a4,0xf3a4,0xa1a5,0xf6a5,0xa1a6,0xd8a6,0xa1a7,0xf1a7,0xa1a8,0xbaa8,0xc5a8,0xe9a8,0xa4a9,0xefa9};
char num[80]={
0x08,0x18,0x38,0x18,0x18,0x18,0x18,0x3c,0x3c,0x42,0xc3,0xc3,0x06,0x3c,0x60,0xff,0x3c,0xc3,0xc3,0x1c,0x03,0xc3,0xc3,0x3c,0x04,0x0c,0x1c,0x2c,0x6c,0xff,0x0c,0x1e,0xc0,0xff,0xc0,0xfc,0x03,0xc3,0xc3,0x3c,0x3c,0x42,0xc1,0xdc,0xe2,0xc3,0x42,0x3c,0x7f,0xc6,0xc4,0x08,0x18,0x18,0x18,0x18,0x3c,0xc3,0xc3,0x7e,0xc3,0xc3,0xc3,0x3c,0x3c,0x42,0xc3,0x43,0x3f,0x83,0x42,0x3c,0x3c,0x42,0xc7,0xdb,0xe3,0xe3,0x42,0x3c};
char mode,isup;
int getword(char type)
{
char py[7],key,i;
int list[10],ta,tb,now;
long ret;
memset(py,0,7);
now=0;ret=0;
Box(13,60,160,80,1,0);
if(type!=2)mode=type;
while(1)
{
if(!mode)
{
Box(0,62,50,77,0,1);Line(0,62,0,77,0);
TextOut(1,64,"英",0x42);
while(1)
{
if(isup)
TextOut(13,64,"[大写]",0x41);
else
TextOut(13,64,"[小写]",0x41);
key=getchar();
if(key=='-')
{
now=0;
TextOut(13,64,"[符号]",0x41);
while(1)
{
memcpy(list,Esign+now*18,19);
Box(52,60,160,80,1,0);
TextOut(52,60,list,0x41);
for(i=0;i<strlen(list)/2;i++)
WriteBlock(52+i*12,72,8,8,0x41,num+i*8);
key=getchar();
if(key==20||key==23)
{
if(now>0)now--;
}
else
if(key==21||key==22||key=='-')
{
if(now<3)now++;
}
else
if(isdigit(key))
{
if(key!='0'&&(now!=3||key<'6'))
return list[key-'1']&0xff;
}
else
break;
}
if(key==27)key=0;
Box(52,60,160,80,1,0);
}
if(key==18)
isup=(!isup);
else
if(key!=26)
{
if(isup)
key=toupper(key);
return key&0xff;
}
else
{
mode=1;
break;
}
}
}
Box(0,60,160,80,1,0);
Box(0,62,50,77,0,1);
Line(0,62,0,77,0);
TextOut(1,64,"拼",0x42);
while(1)
{
key=getchar();
if(key=='-')
{
now=ta=tb=ret=0;
TextOut(13,64,"[符号]",0x41);
while(1)
{
if(!ret)
memcpy(list,Csign+now*18,19);
else
{
ta=Cindex[(ret-1)*2];
tb=Cindex[(ret-1)*2+1];
for(i=0;i<9&&ta+((now*9+i)<<8)<=tb;i++)
list=ta+((now*9+i)<<8);
list=0;
}
Box(52,60,160,80,1,0);
TextOut(52,60,list,0x41);
for(i=0;i<strlen(list)/2;i++)
WriteBlock(54+i*12,72,8,8,0x41,num+i*8);
key=getchar();
if(key==20||key==23){
if(ret==0)
{
if(now>0)now--;
}
else
{
if(now>0)now--;
else
{
ret--;
if(ret==0)now=4;
else
{
ta=Cindex[(ret-1)*2];
tb=Cindex[(ret-1)*2+1];
now=((tb>>8)-(ta>>8))/9;
}
}
}
}
else
if(key==21||key==22||key=='-')
{
if((ret==0&&now==4)||(ret&&ret<10&&now==((tb>>8)-(ta>>8))/9))
{
ret++;
now=0;
}
else
if(ret<10||now<((tb>>8)-(ta>>8))/9)
now++;
}
else
if(key==14)
{
if(ret<10)
{
ret++;
now=0;
}
}
else
if(key==19)
{
if(ret>0)
{
ret--;
now=0;
}
}
else
if(isdigit(key))
{
if(key!='0'&&((!ret&&(now<4||key<'7'))||(ret&&((ta>>8)+now*9+key-'1'<=(tb>>8)))))
return list[key-'1']&0xffff;
}
else break;
}
if(key==27)key=0;
Box(52,60,160,80,1,0);
}
if(isalpha(key)&&strlen(py)<6)
py[strlen(py)]=key;
else
if(key==20&&now>0)
now--;
else
if(key==21&&now<(ta-1)/9)
now++;
else
if(key==22&&py[0]!=0)
{
now=0;
memset(py,0,7);
}
else
if(key==23&&strlen(py)>0)
{
py[strlen(py)-1]=0;
now=0;
}
else
if(key==26)
{
mode=0;
Box(13,60,160,80,1,0);
break;
}
else
if(isdigit(key))
{
if(key!='0'&&key-'1'<tb)
return list[key-'1']&0xffff;
}
else
if(*py==0)
return key&0xff;
if((ret=System.PY2GB(now*9,py,list))==-1)
*list=0;
ta=ret>>16;
tb=ret;
Box(13,60,160,80,1,0);
Box(13,62,50,77,0,1);
Line(13,63,13,76,0);
TextOut(13,64,py,0x41);
TextOut(52,60,list,0x41);
if(*list!=0)
for(i=0;i<strlen(list)/2;i++)
WriteBlock(54+i*12,72,8,8,0x41,num+i*8);
}
}
}
以下是小版本的
char Esign[65]=
". , ; - / ? ! $ % ( ) : ` ' < > { } [ ] # ~ @ ^ & * + = _ | ";
char Csign[85]="。,、:;?!…‘’〔〕《》“”〖〗【】#~●※○◎□⊙+-×÷№☆★$¥§℃‰.—";
int Cindex[20]={0xa1a1,0xfea1,0xb1a2,0xfca2,0xa1a3,0xfea3,0xa1a4,0xf3a4,0xa1a5,0xf6a5,0xa1a6,0xd8a6,0xa1a7,0xf1a7,0xa1a8,0xbaa8,0xc5a8,0xe9a8,0xa4a9,0xefa9};
char num[80]={ 0x40,0x40,0x40,0x40,0xe0,0x20,0x40,0xe0,0xe0,0x40,0x20,0xe0,0x60,0xa0,0xe0,0x20,0xe0,0x80,0x60,0xc0,0x60,0x80,0xa0,0xe0,0xe0,0x20,0x20,0x20,0xe0,0x40,0xa0,0xe0,0xe0,0xa0,0x20,0xc0};
char mode,isup;
int getword(char type)
{
char py[7],key,i;
int list[10],ta,tb,now;
long ret;
memset(py,0,7);
now=0;ret=0;
Box(0,64,160,80,1,0);
if(type!=2)mode=type;
while(1)
{
if(!mode)
{
Box(0,64,50,79,0,1);Line(0,64,0,79,0);
TextOut(1,66,"英",0x42);
while(1)
{
if(isup)
TextOut(13,66,"[大写]",0x41);
else
TextOut(13,66,"[小写]",0x41);
key=getchar();
if(key=='-')
{
now=0;
TextOut(13,66,"[符号]",0x41);
while(1)
{
memcpy(list,Esign+now*18,19);
Box(52,64,160,79,1,0);
TextOut(52,68,list,0x41);
for(i=0;i<strlen(list)/2;i++)
WriteBlock(52+i*12,64,8,4,0x41,num+i*4);
key=getchar();
if(key==20||key==23)
{
if(now>0)now--;
}
else
if(key==21||key==22||key=='-')
{
if(now<3)now++;
}
else
if(isdigit(key))
{
if(key!='0'&&(now!=3||key<'6'))
return list[key-'1']&0xff;
}
else
break;
}
if(key==27)key=0;
Box(52,63,160,79,1,0);
}
if(key==18)
isup=(!isup);
else
if(key!=26)
{
if(isup)
key=toupper(key);
return key&0xff;
}
else
{
mode=1;
break;
}
}
}
Box(0,64,160,79,1,0);
Box(0,64,50,79,0,1);
Line(0,64,0,79,0);
TextOut(1,66,"拼",0x42);
while(1)
{
key=getchar();
if(key=='-')
{
now=ta=tb=ret=0;
TextOut(13,66,"[符号]",0x41);
while(1)
{
if(!ret)
memcpy(list,Csign+now*18,19);
else
{
ta=Cindex[(ret-1)*2];
tb=Cindex[(ret-1)*2+1];
for(i=0;i<9&&ta+((now*9+i)<<8)<=tb;i++)
list=ta+((now*9+i)<<8);
list=0;
}
Box(52,64,160,80,1,0);
TextOut(52,67,list,0x41);
for(i=0;i<strlen(list)/2;i++)
WriteBlock(54+i*12,64,8,4,0x41,num+i*4);
key=getchar();
if(key==20||key==23){
if(ret==0)
{
if(now>0)now--;
}
else
{
if(now>0)now--;
else
{
ret--;
if(ret==0)now=4;
else
{
ta=Cindex[(ret-1)*2];
tb=Cindex[(ret-1)*2+1];
now=((tb>>8)-(ta>>8))/9;
}
}
}
}
else
if(key==21||key==22||key=='-')
{
if((ret==0&&now==4)||(ret&&ret<10&&now==((tb>>8)-(ta>>8))/9))
{
ret++;
now=0;
}
else
if(ret<10||now<((tb>>8)-(ta>>8))/9)
now++;
}
else
if(key==14)
{
if(ret<10)
{
ret++;
now=0;
}
}
else
if(key==19)
{
if(ret>0)
{
ret--;
now=0;
}
}
else
if(isdigit(key))
{
if(key!='0'&&((!ret&&(now<4||key<'7'))||(ret&&((ta>>8)+now*9+key-'1'<=(tb>>8)))))
return list[key-'1']&0xffff;
}
else break;
}
if(key==27)key=0;
Box(52,60,160,80,1,0);
}
if(isalpha(key)&&strlen(py)<6)
py[strlen(py)]=key;
else
if(key==20&&now>0)
now--;
else
if(key==21&&now<(ta-1)/9)
now++;
else
if(key==22&&py[0]!=0)
{
now=0;
memset(py,0,7);
}
else
if(key==23&&strlen(py)>0)
{
py[strlen(py)-1]=0;
now=0;
}
else
if(key==26)
{
mode=0;
Box(13,64,160,80,1,0);
break;
}
else
if(isdigit(key))
{
if(key!='0'&&key-'1'<tb)
return list[key-'1']&0xffff;
}
else
if(*py==0)
return key&0xff;
if((ret=System.PY2GB(now*9,py,list))==-1)
*list=0;
ta=ret>>16;
tb=ret;
Box(13,64,160,79,1,0);
Box(13,64,50,79,0,1);
Line(13,64,13,79,0);
TextOut(13,66,py,0x41);
TextOut(52,68,list,0x41);
if(*list!=0)
for(i=0;i<strlen(list)/2;i++)
WriteBlock(54+i*12,64,8,4,0x41,num+i*4);
}
}
}
|
|