一段代码,请帮忙看看问题可能在哪里以及怎么解决。。。在线等

kevin0125 2009-05-18 12:45:14
for i = 1 to ll_rowcount

ls_name = upper(dw_song.getitemstring(i, "name"))
ls_language = trim(dw_song.getitemstring(i, "language"))
ls_singer = trim(dw_song.getitemstring(i, "singer"))

if isnull(ls_singer) then
ls_singer = ""
end if

ls_singer2 = trim(dw_song.getitemstring(i, "singer2"))

if (isnull(ls_singer2) = false) and ls_singer2 <> "" then
ls_singer = ls_singer + "^" + ls_singer2
end if

ls_code = trim(dw_song.getitemstring(i, "code"))


//如果当前行与上一行的歌曲名/语言/歌星相同,则不做处理
if ls_name = ls_name_old and ls_language = ls_language_old and ls_singer = ls_singer_old then
else
ls_bz = ls_code + "||" + ls_name + "||" + ls_singer + "||" + ls_language

//转换为unicode
lb_bz = tounicode(ls_bz)

li_write_file = filewrite(li_open_file,lb_bz)

if li_write_file < 0 then
messagebox("提示","写文件出错")
return -1
end if

ls_name_old = ls_name
ls_language_old = ls_language
ls_singer_old = ls_singer
end if
next

ll_rowcount 即数据大约是120000左右

现在每次执行 只能处理2600多条,然后windows报系统错,直接把程序给关闭了。

并且可以保证数据有效性没有问题。
怀疑是tounicode()出错,但是也不确定,因为增加调试日志记录函数,显示已执行的2600多次调用都是正确的

请主神们 指点,谢谢,在线等
...全文
90 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangyh_136 2009-05-21
  • 打赏
  • 举报
回复
if ls_name = ls_name_old and ls_language = ls_language_old and ls_singer = ls_singer_old then
else
ls_bz = ls_code + "||" + ls_name + "||" + ls_singer + "||" + ls_language
updateblob set
zhangyh_136 2009-05-21
  • 打赏
  • 举报
回复
1)数据处理时,为保证数据准确,应先转为blob,存到数据库中
2)结束后,将blob转为utf
3)定义变量时,一定要用long
kevin0125 2009-05-18
  • 打赏
  • 举报
回复
好的,我先试试
永生天地 2009-05-18
  • 打赏
  • 举报
回复
没错,试试看
[Quote=引用 3 楼 kevin0125 的回复:]
是不是先处理所有数据,然后在统一进行写文件操作???
[/Quote]
kevin0125 2009-05-18
  • 打赏
  • 举报
回复
是不是先处理所有数据,然后在统一进行写文件操作???
kevin0125 2009-05-18
  • 打赏
  • 举报
回复
是不是建议我在所有数据处理完后,再单独执行写文件操作???
永生天地 2009-05-18
  • 打赏
  • 举报
回复
建议您先全部用内存操作,执行写文件操作

743

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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