中英文和字符混合的情况下,如何定长截断字符串,比如:定长截断60位?
因为牵涉有汉字,最后一位有可能截为乱码(我实际遇到过这种情况,搞的数据
库不能查询),如何避免这种情况,当然,如果最后一个字符是汉字,截断59位
也可,请大侠指教。
因为牵涉有汉字,最后一位有可能截为乱码(我实际遇到过这种情况,搞的数据
库不能查询),如何避免这种情况,当然,如果最后一个字符是汉字,截断59位
也可,请大侠指教。
解决方案 »
- delphi 程序运行的时候在panel上自动显示当前时间,
- 一个简单的问题(送分)
- 在Delphi下如何]获得本机的主板序列号?我想请教高手!!!急!!!!!!!!(送分了!!!!)
- 急!!!如何在程序里面实现(XP系统中文发音)在线等急!!
- 我该如何选择?
- 重在WNDPROC的用法呀
- 昨天喝多了..庆幸没有吐出来..散分庆贺...
- 关于adoquery的数据统计求和!!
- Delphi的TServerSocket中OnAccept事件响应问题
- 高手请进!如何使用TWebbrowser来保存网页里验证码的图片!仅只需获取证码的图片流!谢谢
- 恶心死了,该死的access,为什么在程序中和ACCESS中SQL语句执行结果不一样?
- 这段代吗的问题在哪里,请大家指教一下
字符“Edit10000中国”,我用MidBStr(Edit1.Text, 1, 10)截
端后,借端10个字符,变成了“Edit10000[”,最后一个是乱
码,转到数据库中是个空格,其实不是个空格,是个乱码,只
是无法显示而已。
var
r1,r2:string;
w1,w2:widestring;
begin
r1:=Copy(source,1,aSize+1);
r2:=Copy(source,1,aSize); w1:=r1;
w2:=r2;
if Length(w1)=Length(w2) then
begin
result:=copy(source,1,aSize-1);
end
else
Result:=r2;
end;procedure TForm1.Button1Click(Sender: TObject);
var
s1,s2:string;
begin
s1:='Edit01000中国';
s2:=MyCopy(s1,10);
ShowMessage(s2);end;
function TForm1.get60(str: String; len: Integer): string;
var
i, n, ntotal, nstep: integer;
wstr:WideString;
begin
wstr:=WideString(str);
ntotal := 0;
result := '';
for i := 1 to length(wstr) do
begin
if WORD(wstr[i]) > 256 then nstep := 2 else nstep := 1;
if ntotal + nstep <= len then
begin
result := result + wstr[i];
ntotal := ntotal + nstep;
end
else
exit;
end;
end;procedure TForm1.BitBtn1Click(Sender: TObject);
var
st, s: string;
begin
st := 'ddd我们cvb的祖国';
s := get60(st, 13);
ShowMessage(s);
end;
要不就用widestring