标题:VB编译错误: 要求常数表达式
只看楼主
leziyi
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2016-10-30
结帖率:85.71%
 问题点数:0 回复次数:2 
VB编译错误: 要求常数表达式
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
搜索更多相关主题的帖子: VB 常数 表达式 Dim 文件 
2018-11-01 12:26
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
Public Function GetFile(WinS As Winsock, Optional ByVal FilePath As String)

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


授人于鱼,不如授人于渔
早已停用QQ了
2018-11-01 16:14
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
得分:0 
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 的回复也是不错的方法。

请不要选我!!!
2018-11-02 09:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-490879-1-1.html




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

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