hpfileio.java
来自「一个简单的visio程序。」· Java 代码 · 共 2,123 行 · 第 1/5 页
JAVA
2,123 行
numberic = new double[1];
data_type = new int[1];
if (cc != null)
scanstr(cc, numberic, data_type);
type = vr.HcDataType();
if (type == Variant.V_VAR || type == Variant.V_EPT || type == Variant.V_NULL)
{
switch ( data_type[0] )
{
case Variant.V_EPT:
HcData emp = HcData.newEmpty();
vr.HcAssign(emp);
break;
case Variant.V_NULL:
HcData nl = HcData.newNull();
vr.HcAssign(nl);
break;
case Variant.V_BYT:
vr.HcAssign((byte)numberic[0]);
break;
case Variant.V_INT:
vr.HcAssign((short)numberic[0]);
break;
case Variant.V_LNG:
vr.HcAssign((int)numberic[0]);
break;
case Variant.V_SGL:
vr.HcAssign((float)numberic[0]);
break;
case Variant.V_DBL:
vr.HcAssign((double)numberic[0]);
break;
case Variant.V_CUR:
vr.HcAssign(new HcData((double)numberic[0],true));
break;
case Variant.V_STR:
s = new String(cc);
vr.HcAssign(s.trim());
return;
}
}
else
{
switch(type)
{
case Variant.V_STR:
case Variant.V_FIX_STR:
switch(data_type[0])
{
case Variant.V_EPT:
HcData emp = HcData.newEmpty();
vr.HcAssign(emp);
break;
case Variant.V_NULL:
vr.HcAssign("#NULL#");
break;
case Variant.V_STR:
s = new String(cc);
vr.HcAssign(s);
break;
case Variant.V_BYT:
vr.HcAssign(String.valueOf((byte)numberic[0]));
break;
case Variant.V_INT:
vr.HcAssign(String.valueOf((short)numberic[0]));
break;
case Variant.V_LNG:
vr.HcAssign(String.valueOf((int)numberic[0]));
break;
case Variant.V_SGL:
vr.HcAssign(String.valueOf((float)numberic[0]));
break;
case Variant.V_DBL:
case Variant.V_CUR:
vr.HcAssign(String.valueOf((double)numberic[0]));
break;
}
break;
case Variant.V_BOL:
switch(data_type[0])
{
case Variant.V_EPT:
case Variant.V_NULL:
case Variant.V_STR:
vr.HcAssign(new HcData(false));
break;
case Variant.V_INT:
case Variant.V_LNG:
case Variant.V_SGL:
case Variant.V_DBL:
case Variant.V_CUR:
vr.HcAssign(new HcData(true));
break;
}
break;
case Variant.V_BYT:
switch(data_type[0])
{
case Variant.V_EPT:
case Variant.V_NULL:
case Variant.V_STR:
vr.HcAssign((byte)0);
break;
case Variant.V_INT:
case Variant.V_LNG:
case Variant.V_SGL:
case Variant.V_DBL:
case Variant.V_CUR:
vr.HcAssign((byte)numberic[0]);
break;
}
break;
case Variant.V_INT:
switch(data_type[0])
{
case Variant.V_EPT:
case Variant.V_NULL:
case Variant.V_STR:
vr.HcAssign((int)0);
break;
case Variant.V_INT:
case Variant.V_LNG:
case Variant.V_SGL:
case Variant.V_DBL:
case Variant.V_CUR:
vr.HcAssign((int)numberic[0]);
break;
}
break;
case Variant.V_LNG:
switch(data_type[0])
{
case Variant.V_EPT:
case Variant.V_NULL:
case Variant.V_STR:
vr.HcAssign((long)0);
break;
case Variant.V_INT:
case Variant.V_LNG:
case Variant.V_SGL:
case Variant.V_DBL:
case Variant.V_CUR:
vr.HcAssign((long)numberic[0]);
break;
}
break;
case Variant.V_SGL:
switch(data_type[0])
{
case Variant.V_EPT:
case Variant.V_NULL:
case Variant.V_STR:
vr.HcAssign((float)0);
break;
case Variant.V_INT:
case Variant.V_LNG:
case Variant.V_SGL:
case Variant.V_DBL:
case Variant.V_CUR:
vr.HcAssign((float)numberic[0]);
break;
}
break;
case Variant.V_DBL:
case Variant.V_CUR:
switch(data_type[0])
{
case Variant.V_EPT:
case Variant.V_NULL:
case Variant.V_STR:
vr.HcAssign((double)0);
break;
case Variant.V_INT:
case Variant.V_LNG:
case Variant.V_SGL:
case Variant.V_DBL:
case Variant.V_CUR:
vr.HcAssign((double)numberic[0]);
return;
}
break;
default:
throw new HpException(13,"Type mismatch");
}
}
}
static HcData isDateTime(String s)throws HpException
{
if (s.charAt(0) == '#' && s.charAt(s.length()-1) == '#')
{
String ss = s.substring(1,s.length()-1);
String sy,sm,date=null,time=null;
int in1,year,month,day,hour,min,sec;
in1 = s.indexOf(" ");
if (in1 != -1)
{
date = ss.substring(0,in1-1);
time = ss.substring(in1,ss.length());
}
else
{
if (s.indexOf("-") != -1)
date = ss;
else if(s.indexOf(":") != -1)
time = ss;
else
return new HcData(s);
}
if (date != null && (in1 = date.indexOf("-")) != -1)
{
sy = date.substring(0,in1);
year = Integer.parseInt(sy);
if (in1+1 >= date.length())
return new HcData(s);
else
date = date.substring(in1+1,date.length());
if ((in1 = date.indexOf("-")) != -1)
{
sm = date.substring(0,in1);
ss = date.substring(in1+1,date.length());
month = Integer.parseInt(sm);
day = Integer.parseInt(ss);
if (time != null && (in1 = time.indexOf(":")) != -1)
{
sy = time.substring(0,in1);
hour = Integer.parseInt(sy);
if(in1 + 1 >= time.length())
return new HcData(s);
else
time = time.substring(in1+1,time.length());
if ((in1 = time.indexOf(":")) != -1)
{
sm = time.substring(0,in1);
ss = time.substring(in1+1,time.length());
min = Integer.parseInt(sm);
sec = Integer.parseInt(ss);
return new HcData(year,month,day,hour,min,sec);
}else
{
sm = time;
min = Integer.parseInt(sm);
return new HcData(year,month,day,hour,min,0);
}
}else
return new HcData(year,month,day);
}else
{
sm = date;
month = Integer.parseInt(sm);
if (year <= 31)
{
if (year > 12 && month <= 12)
day = year;
else
{
day = month;
month = year;
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
year = calendar.get(Calendar.YEAR);
}else
day = 1;
if (time != null && (in1 = time.indexOf(":")) != -1)
{
sy = time.substring(0,in1);
hour = Integer.parseInt(sy);
time = time.substring(in1+1,time.length());
if ((in1 = time.indexOf(":")) != -1)
{
sm = time.substring(0,in1);
ss = time.substring(in1+1,time.length());
min = Integer.parseInt(sm);
sec = Integer.parseInt(ss);
return new HcData(year,month,day,hour,min,sec);
}else
{
sm = time;
min = Integer.parseInt(sm);
return new HcData(year,month,day,hour,min,0);
}
}else
return new HcData(year,month,day);
}
}else if (time != null && (in1 = time.indexOf(":")) != -1)
{
sy = time.substring(0,in1);
hour = Integer.parseInt(sy);
if(in1 + 1 >= time.length())
return new HcData(s);
else
time = time.substring(in1+1,time.length());
if ((in1 = time.indexOf(":")) != -1)
{
sm = time.substring(0,in1);
ss = time.substring(in1+1,time.length());
min = Integer.parseInt(sm);
sec = Integer.parseInt(ss);
return new HcData(0,0,0,hour,min,sec);
}else
{
sm = time;
min = Integer.parseInt(sm);
return new HcData(0,0,0,hour,min,0);
}
}else
return new HcData(s);
}
else
return new HcData(s);
}
static void numtype(char[] buf,double[] numberic,int[] data_type)
{
//int err = 0;
double numdbl=0.0;
String s = new String(buf);
if(Double.valueOf(s).doubleValue() == Double.POSITIVE_INFINITY ||
Double.valueOf(s).doubleValue() == Double.NEGATIVE_INFINITY)
{
data_type[0] = Variant.V_STR;
return;
}
else //if ( Double.valueOf(s).doubleValue() != 34.0 ) //34 -- '\"'
{
numdbl = Double.valueOf(s).doubleValue();
if ( ( numdbl - Math.floor(numdbl) ) > 0 ) // numdbl is float
{
if ((numdbl <= 3.40282346638528860e+38 && numdbl >= 1.40129846432481707e-45)||
(numdbl >= -3.40282346638528860e+38 && numdbl <= -1.40129846432481707e-45))
{
data_type[0] = Variant.V_SGL;
numberic[0] = numdbl;
return ;
}
data_type[0] = Variant.V_DBL;
numberic[0] = numdbl;
return ;
}
else //numdbl is int or long
{
if ( numdbl >= -32768.000 && numdbl <= 32767.000 )
{
data_type[0] = Variant.V_INT;
numberic[0] = numdbl;
return ;
}
else if ( numdbl >= -2147483648.00 && numdbl <= 2147483647.00 )
{
data_type[0] = Variant.V_LNG;
numberic[0] = numdbl;
return ;
}
else if ((numdbl <= 3.40282346638528860e+38 && numdbl >= 1.40129846432481707e-45)||
(numdbl >= -3.40282346638528860e+38 && numdbl <= -1.40129846432481707e-45))
{
data_type[0] = Variant.V_SGL;
numberic[0] = numdbl;
return ;
}
data_type[0] = Variant.V_DBL;
numberic[0] = numdbl;
return ;
}
}
}
static void scanstr(char[] buf,double[] numberic,int[] data_type)
{
int err = 0,i =0,j=0;
int k = 0;
char[] inch;
String s = new String(buf);
k = s.length();
char[] ch = new char[k];
if ( buf[0] == ',' || buf[0] == '\r' || buf[0] == '\n' )
{
data_type[0] = Variant.V_EMPTY;
return ;
}
if ( k >= 3 )
{
if ( buf[0] == '+' || buf[0] == '-' )
{
ch[0] = buf[0];
if ( Character.isDigit(buf[1]) )
{
for (i=1;i<k;i++)
{
if(Character.isDigit(buf[i]))
ch[i] = buf[i];
else
break;
}
if (i<k-1 && (buf[i] == 'e' || buf[i] == 'E'))
{
ch[i] = buf[i];
i++;
if (buf[i] == '+' || buf[i] == '-')
{
ch[i] = buf[i];
for (j=i+1;j<k;j++)
{
if (Character.isDigit(buf[j]))
ch[j] = buf[j];
else
break;
}
i = j;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?