实时错误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 键。