TC官方合作论坛

标题: 2012.10.06第二问。为什么我的软件第一次打开会出现“文件句柄不能为空”? [打印本页]

作者: 252253494    时间: 2012-10-6 22:05
标题: 2012.10.06第二问。为什么我的软件第一次打开会出现“文件句柄不能为空”?
为什么我的软件第一次打开会出现“文件句柄的值不能为空”?   第二次打开软件就可以正常运行了。

我刚开始怀疑是第一次,文件句柄创建文件,没有创建成功。所以才会出现“文件句柄的值不能为空”的字样。//文件句柄=文件.创建("c:\\WINDOWS\\lsyz.txt","读写")
于是又加了一个如果语句。
如果 (文件句柄!=0)
         否则
继续执行代码

如果结束

可以最后还是会出现这种情况“文件句柄的值不能为空”?
以下是我的代码
功能 逻辑型 按钮0_点击()   
    整型 男,女,分数,下标,大小,文件句柄
    字符型 男符,女符,分数符,路径=系统.获取程序路径()
    文件句柄=文件.创建("c:\\WINDOWS\\lsyz.txt","读写")
         文件.关闭(文件句柄)
     如果 (文件句柄!=0)
         
         否则
            
      男符=编辑框.获得文本("编辑框0")
      女符=编辑框.获得文本("编辑框1")         
      男=字符串.长度(男符)
      女=字符串.长度(女符)
         
         如果(男<=0)||(女<=0)           
                  辅助.消息框("请输入姓名")                  
             否则
                   字符型[] 名分//此处名分指的是名字和分数的统称
                   字符型[] 分割后的值=字符型[2]                       
                   字符型   文件内容=文件.读文件("c:\\WINDOWS\\lsyz.txt")
                       如果(文件内容!="")
                 字符串.分割(文件内容,"\r\n",名分)  //   \r\n是换行符
                     数组.大小(名分,大小)//此处的大小指的是文件内容被分割成好多组。
                          //辅助.消息框("文本内共有"+转换.整型转字符型(大小)+"行数据")
                     
                             循环(下标<大小)
                                字符串.分割(名分[下标],"!",分割后的值)
                                    //辅助.消息框(字符串.格式化("文本内\r\n第%d行前半部分是:%s\r\n第%d行后半部分是:%s",下标+1,分割后的值[0],下标+1,分割后的值[1]))//测试时使用
                                      如果(男符+女符==分割后的值[0])
                                          图片框.设置图片("图片框0","rc:"+分割后的值[1]+".jpg")
                                                辅助.消息框("你娘的,这组名字你不是刚测过嘛,还测?!有病啊!")
                             
                                              跳出
                                      否则                                
                                               下标=下标+1                           
                                      如果结束                          
                              循环结束
                          如果结束                    
                  如果(男符+女符==分割后的值[0])
                       否则                  
                      男=辅助.随机数(25,50)
                      女=辅助.随机数(25,50)        
                      分数=男+女
                      分数符=转换.整型转字符型(分数)  
                      文件句柄=文件.打开("c:\\WINDOWS\\lsyz.txt")
                        文件.设置游标位置(文件句柄,"结束")
                        文件.写一行(文件句柄,男符+女符+"!"+分数符)
                        文件.关闭(文件句柄)
                         图片框.设置图片("图片框0","rc:"+分数符+".jpg")
                        //辅助.消息框("姓名配对分数"+分数符)
                  如果结束                       
          如果结束   
     如果结束
      
      
      
      
      
      
返回 真
功能结束


把它改成
   如果 (文件句柄<=0)
再在文件句柄建立的时候写入一句话??


作者: 冷月无痕    时间: 2012-10-6 22:20
亲 你打开就关闭了
文件句柄=文件.创建("c:\\WINDOWS\\lsyz.txt","读写")
         文件.关闭(文件句柄)
     如果 (文件句柄!=0)
作者: 252253494    时间: 2012-10-6 22:28
可是我刚开始也试过把 文件.关闭(文件句柄) 这一句给删掉,可以是还是会出现文件句柄的值不能为空??
作者: 冷月无痕    时间: 2012-10-6 22:42
试试先判断文件是否存在 存在就用打开 不存在就创建 再不行就创建后打开
估计有BUG 没测试过
作者: 252253494    时间: 2012-10-6 23:00
其实我刚开始也想过用判断文件是否存在的这个命令。可是我后来忽然发现,管它文件是不是否存在。 不存在,它创建一个就行了。存在的话,貌似它也不会在创建,就算它要创建的话貌似也不会覆盖里面的内容。(我也不知道这个创建命令是否自带逻辑命令:不存在就创建一个;存在就跳过?!) 还有,就是我现在回宿舍换电脑了。所以就测试不到了。只有明天早上在测试测试,看下是否有BUG存在。
作者: 冷月无痕    时间: 2012-10-6 23:40
回复 5楼252253494的帖子

创建这个命令是 不存在就创建 存在就打开
但是有没有BUG就不清楚了
作者: 252253494    时间: 2012-10-7 09:12
回复 6楼冷月无痕的帖子

还是不行了。不管怎么弄 都在这一行暂停。如果 (文件句柄<=0)
作者: 252253494    时间: 2012-10-7 10:48
求救啊。怎么才能不让文件句柄的值不能为空???
作者: 252253494    时间: 2012-10-7 10:57
以下是我新的代码。
功能 逻辑型 按钮0_点击()   
    整型 男,女,分数,下标,大小,文件句柄
    字符型 男符,女符,分数符
    文件句柄=文件.创建("c:\\WINDOWS\\lsyz.txt","读写")
       //文件.关闭(文件句柄)
                    
      男符=编辑框.获得文本("编辑框0")
      女符=编辑框.获得文本("编辑框1")         
      男=字符串.长度(男符)
      女=字符串.长度(女符)
         
         如果(男<=0)||(女<=0)           
                  辅助.消息框("请输入姓名")                  
             否则
                   字符型[] 名分//此处名分指的是名字和分数的统称
                   字符型[] 分割后的值=字符型[2]                       
                   字符型   文件内容=文件.读文件("c:\\WINDOWS\\lsyz.txt")
                       如果(文件内容!="")
                 字符串.分割(文件内容,"\r\n",名分)  //   \r\n是换行符
                     数组.大小(名分,大小)//此处的大小指的是文件内容被分割成好多组。
                          //辅助.消息框("文本内共有"+转换.整型转字符型(大小)+"行数据")
                     
                             循环(下标<大小)
                                字符串.分割(名分[下标],"!",分割后的值)
                                    //辅助.消息框(字符串.格式化("文本内\r\n第%d行前半部分是:%s\r\n第%d行后半部分是:%s",下标+1,分割后的值[0],下标+1,分割后的值[1]))//测试时使用
                                      如果(男符+女符==分割后的值[0])
                                          图片框.设置图片("图片框0","rc:"+分割后的值[1]+".jpg")
                                                辅助.消息框("你娘的,这组名字你不是刚测过嘛,还测?!有病啊!")
                             
                                              跳出
                                      否则                                
                                               下标=下标+1                           
                                      如果结束                          
                              循环结束
                          如果结束                    
                  如果(男符+女符==分割后的值[0])
                       否则                  
                      男=辅助.随机数(25,50)
                      女=辅助.随机数(25,50)        
                      分数=男+女
                      分数符=转换.整型转字符型(分数)  
                      文件句柄=文件.打开("c:\\WINDOWS\\lsyz.txt")
                        文件.设置游标位置(文件句柄,"结束")
                        文件.写一行(文件句柄,男符+女符+"!"+分数符)
                        文件.关闭(文件句柄)
                         图片框.设置图片("图片框0","rc:"+分数符+".jpg")
                        //辅助.消息框("姓名配对分数"+分数符)
                  如果结束                       
          如果结束
作者: 夏末    时间: 2012-10-7 11:29

  1. 功能 逻辑型 按钮2_点击()   
  2.     整型 男,女,分数,下标,大小,文件句柄
  3.     字符型 男符,女符,分数符,路径=系统.获取程序路径()
  4.    
  5.     逻辑型 是否存在=文件.是否存在("c:\\WINDOWS\\lsyz.txt")
  6.     如果(!是否存在)
  7.         文件句柄=文件.创建("c:\\WINDOWS\\lsyz.txt","读写")
  8.         文件.关闭(文件句柄)
  9.     如果结束
  10.    
  11.    
  12.     男符=编辑框.获得文本("编辑框0")
  13.     女符=编辑框.获得文本("编辑框1")         
  14.     男=字符串.长度(男符)
  15.     女=字符串.长度(女符)
  16.    
  17.     如果(男<=0)||(女<=0)           
  18.         辅助.消息框("请输入姓名")
  19.         返回 假                   //直接返回 结束后续操作
  20.     如果结束
  21.    
  22.     字符型[] 名分//此处名分指的是名字和分数的统称
  23.     字符型[] 分割后的值=字符型[2]                       
  24.     字符型   文件内容=文件.读文件("c:\\WINDOWS\\lsyz.txt")
  25.     如果(文件内容!="")
  26.         字符串.分割(文件内容,"\r\n",名分)  //   \r\n是换行符
  27.         数组.大小(名分,大小)//此处的大小指的是文件内容被分割成好多组。
  28.         
  29.         下标=0 //下标复位 避免重复使用时 数组越界
  30.         循环(下标<大小)
  31.             字符串.分割(名分[下标],"!",分割后的值)                                    
  32.             如果(男符+女符==分割后的值[0])                          
  33.                 跳出
  34.             否则                                
  35.                 下标=下标+1                           
  36.             如果结束                          
  37.         循环结束                           
  38.         
  39.     如果结束      
  40.    
  41.    
  42.    
  43.     如果(下标!=大小) //在正常 对比全部数据不重复的情况下  下标 是等于 大小的
  44.         图片框.设置图片("图片框0","rc:"+分割后的值[1]+".jpg")
  45.         辅助.消息框("你娘的,这组名字你不是刚测过嘛,还测?!有病啊!")   
  46.         返回 假
  47.     否则                  
  48.         男=辅助.随机数(25,50)
  49.         女=辅助.随机数(25,50)        
  50.         分数=男+女
  51.         分数符=转换.整型转字符型(分数)  
  52.         文件句柄=文件.打开("c:\\WINDOWS\\lsyz.txt")
  53.         文件.设置游标位置(文件句柄,"结束")
  54.         文件.写一行(文件句柄,男符+女符+"!"+分数符)
  55.         文件.关闭(文件句柄)
  56.         图片框.设置图片("图片框0","rc:"+分数符+".jpg")
  57.         //辅助.消息框("姓名配对分数"+分数符)
  58.          返回 真
  59.     如果结束
  60. 功能结束
复制代码



试试把  不知道行不行
作者: 252253494    时间: 2012-10-7 11:58
回复 10楼夏末的帖子

大神,可以用了。
作者: pest    时间: 2012-10-8 04:38
试试




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1