回车符的ASCII 是多少?

zfsusu 2001-10-23 01:38:16
在这个帖子里http://www.csdn.net/expert/topic/307/307022.shtm 我提了自动折行的问题,照NetColorWolf(NCW)所说 的函数f_cr(bz, long(describe('compute_bz.width')))(考虑一大段文字没有空格情况下),而实际情况是又有空格又有回车符。我改了一点,就是非到指定的长度,忽略空格,但我不知道回车的 ASCII,所以……,望告之,多谢!
********************************8
对于没有加空格或者回车的列:可以这样处理
在SQL中选中该列,在DW painter中将该列(比如叫bz)删除,加入一计算列(比如叫compute_bz)代替原来的列,此计算列的表达式为:
f_cr(bz, long(describe('compute_bz.width')))
然后设置此计算列的Autosize Height为true(也就是取消此复选框),设置DW的detail带Autosize Height为true
然后,就没有了。对了,这儿是我写的函数(必须是全局的)string f_cr(string as_text, integer ai_w)

代码参考如下:
///////////////////////////////////
//为报表中汉字自动换行提供回车
///////////////////////////////////
long i, j, ll_count, ll_len, ll_pos
string ls_ret, ls_line

ll_pos = 1
//取一行所能容纳的字符数(宋体,9号)
ll_len = ai_w / 30 //(我是宋体,12号,取值40)
//估算需要的行数
ll_count = len(as_text) / ll_len + 1
for i = 1 to ll_count
//得到一行的字符
ls_line = mid(as_text, ll_pos, ll_len)

//返回一行中倒序非汉字的位置或者空格的位置,回车???
for j = ll_len to 1 step -1
if asc(mid(ls_line, j, 1)) < 128 or asc(mid(ls_line, j, 1))=3 &
then exit
next

//如果为半个汉字,就加一个字符
if mod(ll_len - j, 2) = 0 then
ls_ret += mid(as_text, ll_pos, ll_len) + '~r'
ll_pos += ll_len
else
ls_ret += mid(as_text, ll_pos, ll_len + 1) + '~r'
ll_pos += ll_len + 1
end if
next

return ls_ret
还有个问题,即使设置了计算列的Autosize Height为true,还是要手工设置多长才是多长。

...全文
3080 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zfsusu 2001-10-23
  • 打赏
  • 举报
回复
NetColorWolf(NCW) ,你是什么意思呢?你不知道我是很笨的,还是请你明说吧,多谢你。你看,几百年的问题了,我竟然还有这么多问题。
zfsusu 2001-10-23
  • 打赏
  • 举报
回复
我改成如下代码,没管用。
//返回一行中倒序非汉字的位置或者空格的位置,回车???
for j = ll_len to 1 step -1
if asc(mid(ls_line, j, 1)) < 128 or asc(mid(ls_line, j, 1))=32 &

or asc(mid(ls_line, j, 1))=13 or asc(mid(ls_line, j, 1))=10 &
then exit
next
是这样的情况,我检索出俩条记录,一条的备注内容是正常显示,另外一条在半行处就自动折行了,我设置了一定的长度的,用一样的函数的。那不是很奇怪吗?还有别的什么原因使自动折行?或者上面的代码有错误了?万望高手指点迷津!

NetColorWolf 2001-10-23
  • 打赏
  • 举报
回复
'~r' + '~n'
beatles_mylove 2001-10-23
  • 打赏
  • 举报
回复
Char(13) + Char(10)
iamfancy 2001-10-23
  • 打赏
  • 举报
回复
回车 13 换行 10 十进制
回车 0D 换行 0A 十六进制
在文本中,回车换行通常是连在一起的,即 0D0A
tridust 2001-10-23
  • 打赏
  • 举报
回复
在windows里是 0x0D 0x0A
zfsusu 2001-10-23
  • 打赏
  • 举报
回复
asc(mid(ls_line, j, 1))=3 这个地方少打了一个 2,抱歉!

1,079

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧