注册 登录
编程论坛 VB6论坛

VB编译错误: 要求常数表达式

leziyi 发布于 2018-11-01 12:26, 2885 次点击
Public Function GetFile(WinS As Winsock, Optional ByVal FilePath As String = App.Path + "\nn.bmp")

Dim bytData() As Byte
Dim lLenFile As Long
Dim f
f = FreeFile
Open FilePath For Binary As #f 'strFileName是文件名
lLenFile = LOF(f)
ReDim bytData(1 To bytesTotal)
WinS.GetData bytData
If lLenFile = 0 Then 'lLenFile=0表示是第一次打开文件,这里有个问题,就是'如果如果该文件存在的话,就会出错,应该在打开前检查文件是否存在。(这里我省略了)
   Put #f, 1, bytData
Else
   Put #f, lLenFile + 1, bytData
End If
Close #f

End Function
2 回复
#2
风吹过b2018-11-01 16:14
Public Function GetFile(WinS As Winsock, Optional ByVal FilePath As String)

If (FilePath) = "" Then         '如果没传入值
    FilePath = App.Path + "\nn.bmp"     '给默认值
End If

#3
ZHRXJR2018-11-02 09:48
Public Function GetFile(WinS As Winsock, Optional ByVal FilePath As String = App.Path + "\nn.bmp")
应该是这个函数有问题,第一个参数 WinS 是按地址传递,而且类型是 Winsock,但没有发现你定义过这个数据类型。
第二个参数 FilePath 是按值传递,是 String 类型,但后面的等号及变量、值在函数中是不容许的,除非你已经定义了这个参数的常数。
Public Function GetFile(WinS As Winsock, Optional ByVal FilePath As String)
一般的做法是在调用函数之前给参数 FilePath 提前赋值。


二楼 风吹过b 的回复也是不错的方法。
1