首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

实时异常52 文件名或号码异常?

2013-04-02 
实时错误52 文件名或号码错误???本帖最后由 JLorchid 于 2013-03-26 21:52:26 编辑主要代码和注释如下,我

实时错误52 文件名或号码错误???
本帖最后由 JLorchid 于 2013-03-26 21:52:26 编辑 主要代码和注释如下,我在另一个程序里也用过这段代码,但是发送过来的数据时byte类型的,没有问题;这里发送过来的是string类型,收到后再转换成byte类型,就出现错误了,为什么啊????

Winsock1.GetData sdata
t = Left$(sdata, 2)
Select Case t
Case "wj"    '收到的是文件数据
strdata = Mid(sdata, 3, Len(sdata))  把“wj”这两个标志字符去掉
data() = StrConv(strdata, vbFromUnicode)    因为发送过来的文件数据是字符串类型,现在转换成字节数组
formaccept.fstatus.Caption = "正在接收"
filename = formaccept.fname.Caption
If flag = True Then
'建立文件
Open filename For Binary As #1   这句显示错误52,为什么啊????
flag = False
Else
'设置缓冲区
ReDim data(bytesTotal)
'接收数据并写入文件
For j = received + 1 To received + bytesTotal
Put #1, j, data(j - received - 1)
Next
'更新接收到的数据
received = received + bytesTotal
formaccept.proreceive.Value = Int((received / filesize) * 100)
If formaccept.proreceive.Value >= 100 Then Close #1
End If

[解决办法]

错误的文件名或号(错误 52)
   

此错误发生在访问某指定文件时。此错误有以下的原因和解决方法: 

语句引用到如下的文件号或文件名: 
Open 语句中没有指定或虽有指定但已经关闭。 
用 Open 语句中指定此文件名。注意,如果调用 Close 语句时没有参数,就会不小心关闭当前所有打开的文件,使所有的文件号无效。

超出文件号范围(1 – 511)。 
如果代码中会产生文件号的话,请确保产生的文件号应正确。

无效的文件名或文件号。 
文件名必须遵循操作系统约定。在 Microsoft Windows 中,可使用以下的约定:

文件或目录名称可以有两部分:文件名和任选性的扩展名。两部分以圆点隔开,例如,myfile.new。


文件名可达 255 字符。


文件名必须以字母或数字开头。它可以包含大小写字符(文件名不分大小写),但以下的字符除外:双引号(")、撇号(') 、斜杠(/)、反斜杠(\)、冒号(:)、垂直条(
[解决办法]
)。


文件名可以包含空格。


以下的名称将保留,且不能用在文件或目录上:CON、AUX、COM1、COM2、COM3、COM4、LPT1、LPT2、LPT3、PRN、NUL。例如,如果要在 Open 语句中将文件名设为 PRN 的话,那么 Print # 和 Write # 语句中的缺省打印机,将会指向 Open 语句中的文件号。


以下是正确的 Microsoft Windows 文件名; 
LETTER.DOC
My Memo.Txt
BUDGET.92
12345678.901
Second Try.Rpt

详细信息,可选取有问题的项目,并按下 F1 键。

[解决办法]
filename 的内容是什么?



[解决办法]
如果文件名没问题的话,就是 #1 号文件已经打开。
可能的原因
1)前一次调用 Open ... #1 后没有 Close #1
2)其他过程已经用 Open ... #1 打开文件正在操作,然后进入了这个过程,也要 Open ... #1。

热点排行