C cAkk Unregistered / Unconfirmed GUEST, unregistred user! 1999-12-16 #2 我觉得,既然你要限制字段长度,那么在输入数据的时候就应该限制,而不是等到 保存的时候才截断--这样不是会把有用的东西截断了吗?
H hubdog Unregistered / Unconfirmed GUEST, unregistred user! 1999-12-16 #3 用widestring(yourstring)来代替他可以保证不会有半个汉字
小 小马哥 Unregistered / Unconfirmed GUEST, unregistred user! 1999-12-16 #4 关键问题是因为已经入好的数据在文本里让我转到库里呀!十万火急!
小 小马哥 Unregistered / Unconfirmed GUEST, unregistred user! 1999-12-16 #5 由于我是初次使用DELPHI,hubdog,请详细说一下好吗?非常感谢,解决问题了,200分送你!
C cAkk Unregistered / Unconfirmed GUEST, unregistred user! 1999-12-16 #7 hubdog是对的. 不过我还有一点疑问: 如果database的字段宽度是5,而widestring("大富翁论坛")的长度也是5,那么 5个汉字是否会超出字段的宽度? 也就是说,是不是数据库也要支持unicode才行?
hubdog是对的. 不过我还有一点疑问: 如果database的字段宽度是5,而widestring("大富翁论坛")的长度也是5,那么 5个汉字是否会超出字段的宽度? 也就是说,是不是数据库也要支持unicode才行?
H hubdog Unregistered / Unconfirmed GUEST, unregistred user! 1999-12-16 #8 length('我1'):=3; length(widestring('我1')):=2; 也就是说widestring能正确的把汉字和英文字母,当成一个字符 注意一个string的单位长度为1byte,而widestring的单位长度为2byte 为了避免出现半个汉字,如果汉字很多的话可以先widestring(memo1.lines.strings[n]),再写库。原来写256的长度,现在写128. 希望对你有用
length('我1'):=3; length(widestring('我1')):=2; 也就是说widestring能正确的把汉字和英文字母,当成一个字符 注意一个string的单位长度为1byte,而widestring的单位长度为2byte 为了避免出现半个汉字,如果汉字很多的话可以先widestring(memo1.lines.strings[n]),再写库。原来写256的长度,现在写128. 希望对你有用
小 小马哥 Unregistered / Unconfirmed GUEST, unregistred user! 1999-12-16 #9 现在是这样的,string里面是中英文混杂在一起的,如果我用widestring的话,它会把截掉很多的有用的信息,假如是全英文的话,我可能就只入进去128个字节,浪费掉很多的信息!
C cAkk Unregistered / Unconfirmed GUEST, unregistred user! 1999-12-16 #10 那么你希望是怎么处理呢? 截掉多余字符并且不损失内容??????????? 实在不行你自己判断最后一个字节是不是半个中文吧!
W www Unregistered / Unconfirmed GUEST, unregistred user! 1999-12-16 #12 中文的每一位ascii都>127 否则 为E文。 var a:string; a:='时'; begin if (ord(a[1])>127) or (ord(a[2])>127 ) then 中文 else 英文 end;
中文的每一位ascii都>127 否则 为E文。 var a:string; a:='时'; begin if (ord(a[1])>127) or (ord(a[2])>127 ) then 中文 else 英文 end;
R raider Unregistered / Unconfirmed GUEST, unregistred user! 1999-12-16 #13 当初我在看Delphi 源码时,有一个函数可以判断取的是双字 高字节还是低字节, 这样就不会出现半个字了,可惜我刚才 找了半天也没再发现, 不知道有谁知道?
小 小马哥 Unregistered / Unconfirmed GUEST, unregistred user! 1999-12-16 #16 我也没有找到isleap函数,只有一个isleapyear的! 怎么判断半个汉字呢?因为我的程序有很多的循环,我不想编的太复杂了!
H hubdog Unregistered / Unconfirmed GUEST, unregistred user! 1999-12-16 #17 那个函数一点用都没有,不要想了。 不如记数,从最后一个字符往前边历,每一个大于127的字符记数加1,碰到小于127的字符停下来,若记数为奇,有半个汉字,把最后的一个字符cut就行了。
小 小马哥 Unregistered / Unconfirmed GUEST, unregistred user! 1999-12-16 #18 我写了一个测试的程序: teststr:='就地方今年89kdk打开'; a:=pchar(teststr); for i:=0 to length(teststr)do begin k:=ord(a[0]); end; 到取asc的时候就不执行了,跳了过去,为什么?
我写了一个测试的程序: teststr:='就地方今年89kdk打开'; a:=pchar(teststr); for i:=0 to length(teststr)do begin k:=ord(a[0]); end; 到取asc的时候就不执行了,跳了过去,为什么?
W www Unregistered / Unconfirmed GUEST, unregistred user! 1999-12-16 #19 应该这样: teststr:='就地方今年89kdk打开'; for i:=1 to length(teststr)do begin //从1开始 k:=ord(a); end;
小 小马哥 Unregistered / Unconfirmed GUEST, unregistred user! 1999-12-16 #20 我写了一个测试的程序: teststr:='就地方今年89kdk打开'; a:=pchar(teststr); for i:=1 to length(teststr)do begin k:=ord(a); end; 到取asc的时候就不执行了,跳了过去,为什么
我写了一个测试的程序: teststr:='就地方今年89kdk打开'; a:=pchar(teststr); for i:=1 to length(teststr)do begin k:=ord(a); end; 到取asc的时候就不执行了,跳了过去,为什么