| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1005 人关注过本帖
标题:[求助]文件写入的问题(仍然没解决)
只看楼主 加入收藏
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
结帖率:100%
收藏
 问题点数:0 回复次数:10 
[求助]文件写入的问题(仍然没解决)

下面这个工程是我在学文件读写的时候写的。。。有两个问题要请教。。

下面的这个是保存的代码
--------------------------
Private Sub save_Click()
Dim i As Integer, inputdata As String
CommonDialog1.Filter = "文本文件(*.txt)|*.txt"
CommonDialog1.ShowSave
Open CommonDialog1.FileName For Output As #1
Print #1, Text1.Text
Close #1
End Sub
---------------------------

下面这个是打开读入文件的代码:
---------------------------
Private Sub open_Click()
Dim inputdata As String
Text1.Text = ""
CommonDialog1.ShowOpen
Open CommonDialog1.FileName For Input As #1
Do While Not EOF(1)
  Line Input #1, inputdata
  Text1.Text = Text1.Text & inputdata & vbCrLf
Loop
End Sub

---------------------------

问题1:
当我自己在文本框里面输入字符时,然后保存,可以正常保存,但是当我先打开读入一个文本文件,把里面的内容读入text1.text。。。。然后再保存就会出错。。。请问这个是怎么回事?不明白。。。

问题2:
我调用lof函数来测试文件的字节数,假如文本框中没有内容,为空,按书上说lof(1)则返回○,但是我调用则返回2
假如文本模框中有n个西文字符,则返回n+2个,也就是说始终多两字节。。。为什么?
-------------------------------
下面是工程文件。

b2f0Rnvh.rar (1.77 KB) [求助]文件写入的问题




[此贴子已经被作者于2006-12-22 21:15:59编辑过]

搜索更多相关主题的帖子: 文件 
2006-12-22 15:31
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
因为你在打开文件的代码中...Open了一个文件..却没有Close却它.

我的msn: myfend@
2006-12-22 15:54
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 
谢谢版主帮我找出了第一个问题。。。

但是第二个问题怎么回事呢?

这个社会太复杂。。。
2006-12-22 16:10
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
不太清楚..没什么留意这些..

我的msn: myfend@
2006-12-22 16:15
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 
还是谢谢版主。。。

有没有人知道第二个怎么回事啊?

这个社会太复杂。。。
2006-12-22 16:22
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
收藏
得分:0 
我来看看

第一个:
楼上的说的很好,就是因为你前面打开的文件没有关闭,后面再次使用时就会出错。
下面是你的代码,我加了几句:
Private Sub open_Click()
Dim inputdata As String
Dim filenum As Integer
Text1.Text = ""
CommonDialog1.ShowOpen
If CommonDialog1.FileName = "" Then Exit Sub '这里加一句,防止用户点了"取消"
filenum = FreeFile '文件号最好用系统分配的,不要自己乱用
Open CommonDialog1.FileName For Input As #filenum
MsgBox LOF(filenum)
Do While Not EOF(filenum)
Line Input #filenum, inputdata
Text1.Text = Text1.Text & inputdata & vbCrLf
Loop
MsgBox Len(Text1.Text)
Close #filenum '打开的文件用完后要关闭
End Sub

问题二:
我用你的程序试了一下,的确和你说的一样多出来两个字节。我用16进制编辑器看了一下,内容如下示图片:
我用系统自带的记事本又实验了一下,结果人家的是正常的,即显示0个字节。
我又实验了一下别人写的一个文本编辑器,又和你一样。
换FileSystemObject试试,代码如下:

Private Sub save_Click()
Dim fso As New FileSystemObject
Dim txtf As TextStream
CommonDialog1.Filter = "文本文件(*.txt)|*.txt"
CommonDialog1.ShowSave
If CommonDialog1.FileName = "" Then Exit Sub
Set txtf = fso.OpenTextFile(CommonDialog1.FileName, ForWriting, True)
txtf.Write Text1.Text
txtf.Close
这到正常了。为什么会这样呢?那多出来的两个字节是什么呢?
我同样希望有高手能解决这个问题。
End Sub

图片附件: 游客没有浏览图片的权限,请 登录注册


鲲鹏数据 - 专业Web数据采集服务提供者
http://www.
2006-12-24 13:29
youhm
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2006-5-25
收藏
得分:0 

呵呵,那不是回车+换行吗

2006-12-24 21:58
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 

不会吧。。。。。0D好像是回车,0A呢?是换行吗?

[此贴子已经被作者于2006-12-25 22:07:45编辑过]


这个社会太复杂。。。
2006-12-25 22:05
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 
但为什么又有这东西呢。。。根本没写任何东西进去啊

是不是文本框控件本来就有这个问题?

[此贴子已经被作者于2006-12-25 22:09:01编辑过]


这个社会太复杂。。。
2006-12-25 22:08
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
收藏
得分:0 

十六进制中A代表10,也就是asc(10)换行符,十六进制中D代表13,asc(13)是回车呀,这几个字符来自哪里呢?


鲲鹏数据 - 专业Web数据采集服务提供者
http://www.
2006-12-25 22:51
快速回复:[求助]文件写入的问题(仍然没解决)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018211 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved