有一种字符串booth,它可能有以下几种形式:
1.1A01,1.2C05,1.5D35......
2.1A01,.......
10.1A01,10.4B23......
11.1A01....
20.1A01......
请问,我怎么取出小数点的前面一位或者两位啊?我的意思是:当"."前面是1时,我把小数点前面为1的字符都取出来放在一个TXT里,当小数点前面为2时,又把这样的字符取出来放在另外一个txt里,如此类推。
在这里朋友的帮助下,我得到了答案。我现在把数据窗口中的booth字段输出,.前面是1的输出到1.txt里,是2的输出到2.txt里,如此类推,小数点前面是20的就输出到20.txt里。我的代码如下:(部分)
string ls_folder,ls_ret,ls_file,ls_path,bno,line
int li_filenum1,ii,row
row=dw_1.rowcount()
getfolder("选择要保存到的文件夹",ls_folder)
for ii=1 to row
bno=dw_1.getitemstring(ii,"booth")
ls_ret=left(trim(bno),pos(trim(bno),'.')-1)
ls_file=ls_ret+".txt"
ls_path=ls_folder+ls_file
li_filenum1=fileopen(ls_path,linemode!,write!,lockwrite!,replace!)
if not isnull(bno) then
line=bno
filewrite(li_filenum1,line)
end if
next
fileclose(li_filenum1)
我希望程序运行后,会自动生成20个txt文件,之后数据窗口中的字段都输出到相应的txt中,比如所有.前面为1的booth字段都输出到1.txt中,所有.前面为12的booth字段都输出到12.txt中。
但实际上,程序运行之后,倒是会自动生成20个txt文件,不过每个文件里只有一行记录,也就是说,每个txt中输出了一条booth字段后就结束了。而事实上数据窗口中是有很多字段的,不会只有一条。
比较长,劳烦大家帮我找下原因,感激不尽!
14 个解决方案
#1
.....
li_filenum1=fileopen(ls_path,linemode!,write!,lockwrite!,Append!)
.....
li_filenum1=fileopen(ls_path,linemode!,write!,lockwrite!,Append!)
.....
#2
我试来,但结果也是一样啊。
#3
它只输出一行,按理应该是那个循环语句没有循环到,但我看不出原因来。
#4
应该用Append!
如果不行的话,你在if not isnull(bno) then之前跟踪一下变量bno,看看是不是没以行都取到了。
如果不行的话,你在if not isnull(bno) then之前跟踪一下变量bno,看看是不是没以行都取到了。
#5
我也觉得应该是用append!,因为fileopen是在循环体内。我现在试下跟踪bno看看。
#6
奇怪啊,它又没一行都循环来啊,但就是输出的时候只输出一行。
#7
会不会是fileclose那句放错地方了?但我无法判断什么时候输完了,怎么判断那些符合要求的字段已经输出完了呢?
#8
哈,你的循环只是做到了生成20个文件啊,每个文件你只filewrite了一次,当然只有一行了,要两重循环才行啊
#9
string ls_folder,ls_ret,ls_file,ls_path,bno,line
int li_filenum1,ii,row
row=dw_1.rowcount()
getfolder("选择要保存到的文件夹",ls_folder)
for ii=1 to row
bno=dw_1.getitemstring(ii,"booth")
ls_ret=left(trim(bno),pos(trim(bno),'.')-1)
ls_file=ls_ret+".txt"
ls_path=ls_folder+ls_file
li_filenum1=fileopen(ls_path,linemode!,write!,lockwrite!,append!)
if not isnull(bno) then
line=bno
filewrite(li_filenum1,line)
end if
fileclose(li_filenum1)
next
int li_filenum1,ii,row
row=dw_1.rowcount()
getfolder("选择要保存到的文件夹",ls_folder)
for ii=1 to row
bno=dw_1.getitemstring(ii,"booth")
ls_ret=left(trim(bno),pos(trim(bno),'.')-1)
ls_file=ls_ret+".txt"
ls_path=ls_folder+ls_file
li_filenum1=fileopen(ls_path,linemode!,write!,lockwrite!,append!)
if not isnull(bno) then
line=bno
filewrite(li_filenum1,line)
end if
fileclose(li_filenum1)
next
#10
我现在改用choose case .....end choose可以输出全部了,不过我也试一下你这这样。
#11
还想问下:什么函数可以生成文件夹的啊?
#12
zhanwei说的也可以实现。
#13
zhanwei(@_@,晕眩ING)的方法你参考一下吧
#14
有点疑惑:如果我是把数据窗口中的所有内容都输出到一个文本文件,以下这样又可以
:
...
li_filenum1=fileopen(ls_path,linemode!,write!,lockwrite!,replace!)
for ii=1 to row
bno=dw_1.getitemstring(ii,"booth")
if not isnull(bno) then
line=bno
filewrite(li_filenum1,line)
end if
next
fileclose(li_filenum1)
这里fileclose放在next后面又可以实现全部输出啊。
:
...
li_filenum1=fileopen(ls_path,linemode!,write!,lockwrite!,replace!)
for ii=1 to row
bno=dw_1.getitemstring(ii,"booth")
if not isnull(bno) then
line=bno
filewrite(li_filenum1,line)
end if
next
fileclose(li_filenum1)
这里fileclose放在next后面又可以实现全部输出啊。
#1
.....
li_filenum1=fileopen(ls_path,linemode!,write!,lockwrite!,Append!)
.....
li_filenum1=fileopen(ls_path,linemode!,write!,lockwrite!,Append!)
.....
#2
我试来,但结果也是一样啊。
#3
它只输出一行,按理应该是那个循环语句没有循环到,但我看不出原因来。
#4
应该用Append!
如果不行的话,你在if not isnull(bno) then之前跟踪一下变量bno,看看是不是没以行都取到了。
如果不行的话,你在if not isnull(bno) then之前跟踪一下变量bno,看看是不是没以行都取到了。
#5
我也觉得应该是用append!,因为fileopen是在循环体内。我现在试下跟踪bno看看。
#6
奇怪啊,它又没一行都循环来啊,但就是输出的时候只输出一行。
#7
会不会是fileclose那句放错地方了?但我无法判断什么时候输完了,怎么判断那些符合要求的字段已经输出完了呢?
#8
哈,你的循环只是做到了生成20个文件啊,每个文件你只filewrite了一次,当然只有一行了,要两重循环才行啊
#9
string ls_folder,ls_ret,ls_file,ls_path,bno,line
int li_filenum1,ii,row
row=dw_1.rowcount()
getfolder("选择要保存到的文件夹",ls_folder)
for ii=1 to row
bno=dw_1.getitemstring(ii,"booth")
ls_ret=left(trim(bno),pos(trim(bno),'.')-1)
ls_file=ls_ret+".txt"
ls_path=ls_folder+ls_file
li_filenum1=fileopen(ls_path,linemode!,write!,lockwrite!,append!)
if not isnull(bno) then
line=bno
filewrite(li_filenum1,line)
end if
fileclose(li_filenum1)
next
int li_filenum1,ii,row
row=dw_1.rowcount()
getfolder("选择要保存到的文件夹",ls_folder)
for ii=1 to row
bno=dw_1.getitemstring(ii,"booth")
ls_ret=left(trim(bno),pos(trim(bno),'.')-1)
ls_file=ls_ret+".txt"
ls_path=ls_folder+ls_file
li_filenum1=fileopen(ls_path,linemode!,write!,lockwrite!,append!)
if not isnull(bno) then
line=bno
filewrite(li_filenum1,line)
end if
fileclose(li_filenum1)
next
#10
我现在改用choose case .....end choose可以输出全部了,不过我也试一下你这这样。
#11
还想问下:什么函数可以生成文件夹的啊?
#12
zhanwei说的也可以实现。
#13
zhanwei(@_@,晕眩ING)的方法你参考一下吧
#14
有点疑惑:如果我是把数据窗口中的所有内容都输出到一个文本文件,以下这样又可以
:
...
li_filenum1=fileopen(ls_path,linemode!,write!,lockwrite!,replace!)
for ii=1 to row
bno=dw_1.getitemstring(ii,"booth")
if not isnull(bno) then
line=bno
filewrite(li_filenum1,line)
end if
next
fileclose(li_filenum1)
这里fileclose放在next后面又可以实现全部输出啊。
:
...
li_filenum1=fileopen(ls_path,linemode!,write!,lockwrite!,replace!)
for ii=1 to row
bno=dw_1.getitemstring(ii,"booth")
if not isnull(bno) then
line=bno
filewrite(li_filenum1,line)
end if
next
fileclose(li_filenum1)
这里fileclose放在next后面又可以实现全部输出啊。