NotesDocument 作為函式返回值的問題

2021-05-27 16:55:57 字數 1138 閱讀 8302

'some code ......

'set my doc with the return value from the function...

set recipientdoc = getdocinnab("search string")

if not recipientdoc is nothing then

'in debug i end up here

else

'when i run it i end up here....

print "error"

end if

'some code ......

function getdocinnab(y as string) as notesdocument

dim nabs as variant

dim v as notesview

dim match as notesdocument

dim i as notesitem

nabs = s.addressbooks

forall x in nabs

'get handle on directory to search

call x.open(x.server, x.filepath)

set v = x.getview("($users)")

set match = v.getdocumentbykey(y,true)

if not match is nothing then

print "found ------------> " & y

set getdocinnab = match

else

set getdocinnab = nothing

end if

end forall

end function

函式 getdocinnab 實現了乙個功能:通過引數 y 來查詢個人文件,然後將查詢結果返回。初看上去好像沒什麼問題,實際上這個函式的返回值一直是 nothing。

問題的原因是,nab 資料庫物件是在函式內定義的,當文件作為返回值傳遞給呼叫者時,其 parent 資料庫物件已經銷毀,所以這個文件也就是 nothing 了。

解決的辦法:將資料庫一起作為引數傳遞過去或者定義為全域性變數。

std的vector 作為引數傳入或者作為返回值

引數 std vector 作為引數傳入,是值傳遞,vector本身,及vector內的所有元素都會複製一遍。得不償失,可以使用引用傳遞。即建議寫成 rtype func ptype p1,vector p2,返回值 std vector作為函式返回值,是不會建立新vector物件的。函式內返回的跟...

作為文字輸入

if nchar 0x6d 小鍵盤 0x6b 小鍵盤 0x6a 小鍵盤 0x6f 小鍵盤 下面的例子以輸入日期為例,向你演示如何用加號或減號來向文字框中輸入資料。本例的關鍵是使用vb的dateadd 函式。該函式允許你加減日期 月份及年。步驟如下 建立乙個新工程 在窗體中新增乙個文字框控制項。將下面...

作為雜記001

今天是11月4號,虎年的尾巴只剩56天了,我清楚的認識到時間的緊迫性。必須再抓緊點才能完成年底前結束 寫作的預期目標,最不濟也要完成中期報告。ic設計的理論學習還是不能放鬆的,如果說 的權重佔第一位的話,那這個事情的重要性緊接其後。下午抽空找了幾個ic設計方面的論壇,都挺不錯的,留個備份 http ...