TC官方合作论坛

 找回密码
 立即注册
查看: 1176|回复: 11
打印 上一主题 下一主题

[已解决] 2012.10.06第二问。为什么我的软件第一次打开会出现“文件句柄不能为空”?

[复制链接]
跳转到指定楼层
楼主
发表于 2012-10-6 22:05:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
为什么我的软件第一次打开会出现“文件句柄的值不能为空”?   第二次打开软件就可以正常运行了。

我刚开始怀疑是第一次,文件句柄创建文件,没有创建成功。所以才会出现“文件句柄的值不能为空”的字样。//文件句柄=文件.创建("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)
再在文件句柄建立的时候写入一句话??

回复

使用道具 举报

10#
发表于 2012-10-7 11:29:52 | 只看该作者

  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. 功能结束
复制代码



试试把  不知道行不行
回复 支持 反对

使用道具 举报

沙发
发表于 2012-10-6 22:20:20 | 只看该作者
亲 你打开就关闭了
文件句柄=文件.创建("c:\\WINDOWS\\lsyz.txt","读写")
         文件.关闭(文件句柄)
     如果 (文件句柄!=0)
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2012-10-6 22:28:25 | 只看该作者
可是我刚开始也试过把 文件.关闭(文件句柄) 这一句给删掉,可以是还是会出现文件句柄的值不能为空??
回复 支持 反对

使用道具 举报

地板
发表于 2012-10-6 22:42:44 | 只看该作者
试试先判断文件是否存在 存在就用打开 不存在就创建 再不行就创建后打开
估计有BUG 没测试过
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2012-10-6 23:00:07 | 只看该作者
其实我刚开始也想过用判断文件是否存在的这个命令。可是我后来忽然发现,管它文件是不是否存在。 不存在,它创建一个就行了。存在的话,貌似它也不会在创建,就算它要创建的话貌似也不会覆盖里面的内容。(我也不知道这个创建命令是否自带逻辑命令:不存在就创建一个;存在就跳过?!) 还有,就是我现在回宿舍换电脑了。所以就测试不到了。只有明天早上在测试测试,看下是否有BUG存在。
回复 支持 反对

使用道具 举报

6#
发表于 2012-10-6 23:40:40 | 只看该作者
回复 5楼252253494的帖子

创建这个命令是 不存在就创建 存在就打开
但是有没有BUG就不清楚了
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 2012-10-7 09:12:12 | 只看该作者
回复 6楼冷月无痕的帖子

还是不行了。不管怎么弄 都在这一行暂停。如果 (文件句柄<=0)
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 2012-10-7 10:48:12 | 只看该作者
求救啊。怎么才能不让文件句柄的值不能为空???
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2012-10-7 10:57:32 | 只看该作者
以下是我新的代码。
功能 逻辑型 按钮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")
                        //辅助.消息框("姓名配对分数"+分数符)
                  如果结束                       
          如果结束
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18043773号

GMT+8, 2025-10-10 17:43 , Processed in 0.409685 second(s), 24 queries .

Powered by 海安天坑软件科技有限公司

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表