如题
解决方案 »
- VB中如何用GetFileSize或者GetFileSizeEx获得大于4GB的文件的大小?
- 高手过来帮我看看这段程序 急!
- 鼠标和键盘
- 0ralce连接问题,vb连接网络中的oracle 数据库
- 关于打包的问题。
- db.OpenRecordset()语句出错请高手指教
- “未指定的错误”是什么错误?
- 请问在Excel中如何实现套打功能?解决了一定给分
- DefineDosDevice总是用不好,帮忙!!!
- vb,dataenvironment,command,datareport求救???
- [求助]为什么Picture的Height明明与form1的Height不一样 但是两个框还是一样大
- vb 把access中每行数据输出时调用自定义函数?
我知道[out,retval]可以作为函数返回值
[out]是何用?
有out属性的参数必须是指针[id(1), helpstring("method TestMethod")] HRESULT TestMethod([out] BSTR* outstr, [out] double* outdbl, [out] IDispatch** outobj);STDMETHODIMP CTestClass::TestMethod(BSTR *outstr, double *outdbl, IDispatch **outobj)
{
*outstr = _bstr_t("你好!").copy();
*outdbl = 3.1415926;
_COM_SMARTPTR_TYPEDEF(IDispatch, __uuidof(IDispatch));
IDispatchPtr p;
p.CreateInstance("scripting.dictionary");
*outobj = p;
p.AddRef();
return S_OK;
}Private Sub Form_Load()
Dim outstr As String
Dim outdbl As Double
Dim outobj As Object
Dim tc As New TestClass
Call tc.TestMethod(outstr, outdbl, outobj)
MsgBox outstr
MsgBox outdbl
MsgBox TypeName(outobj)
End Sub
那再麻烦下
Dim eee As New DDDLib.GetFile
Dim file_count As Long
Dim right_file_count As Long
file_count = 0
right_file_count = 0
Call eee.GetFilePath(App.Path & "\winstd\1", App.Path & "\06204073", file_count, right_file_count)
MsgBox file_count
MsgBox right_file_count
这样调用是没问题的
我后来自己试 GetFilePath 他后面不带括号也可以调用 为什么要用call 呢
还有如果是返回两个带参数的 定义却不可以这样写
Dim file_count,right_file_count As Long
以后要增加接收返回值的功能也比较容易,直接把"Call"替换为"x="即可函数定义:
function Function(byval a as long) as long
end function不接收返回值的写法:
Func a
Call Func(a)
=>
接收返回值的写法:
x = Func(a)如果直接写过程式调用的话,还要补括号
用Call的话,是否接收返回值,切换很方便.
如果某个变量后边没有直接跟类型,会被定义为Variant类型,其效果就像这样:
Dim file_count As Variant, right_file_count As Long正确的声明方式为:
Dim file_count As Long, right_file_count As Long建议不要在一行声明多个变量.
一行一个,这样比较清楚,也便于阅读和维护.返回参数是ByRef的时候,要求类型严格一致,参数声明的是什么类型,传递的变量就必须是什么类型.
如果声明的是Long类型,而传递的是Variant类型,在编译时则会提示类型不匹配的错误.