2016-08-12 127 views
0

我正在處理VB6應用程序中的表單。我有一個問題,如果有人可以幫助。VB中的布爾函數

如果我創建這樣的功能...

Public Function CheckUser(userID as integer) as boolean 
CheckUser = False 
'do stuff here 

CheckUser = True 
Exit Function 

我從另一個程序在調用這個函數(相同的形式) - 我可以在整個形式Checkuser布爾值,或僅是爲這個程序?基本上我試圖在運行這個函數後返回一個布爾值回到我的過程 - 並且不真的想聲明一個新的模塊化變量並且這樣。試圖保持整潔。

+1

是的。只要你以相同的形式調用它,它就會按原樣工作。 – cyboashu

+0

我懷疑這不是你要求的。不,它不會在超空間中創建一些神奇的CheckUser變量。正如你寫的那樣,你必須在每次你想要這個值的時候調用它。這強烈地感受到VBA問題,而不是VB6程序員甚至會問的東西。 – Bob77

+0

@ Bob77只是問。不需要粗魯。 – BobSki

回答

1

是的,你可以,如果你聲明CheckUser作爲一個全球性,否則這是不可能的,因爲在本地方法.. 這將幫助你如何聲明全局變量。 how to declare global variable

+0

好的,謝謝,我想知道,因爲這是一個公共職能。謝謝 – BobSki

+1

你可以擁有一個USER_ID格式的屬性,當設置它時可以設置public/global var,CheckUser –

1

這是範圍一個問題:

https://support.microsoft.com/en-ca/kb/141693

的一般規則是一個變量是隻在範圍爲在其被聲明的結構的後代成員。如果你在函數中聲明一個變量,就像這裏通過VB的隱式函數變量所發生的那樣,那個變量只存在於該函數中。

訪問修飾符是公開的事實與它無關。您可以在此處詳細瞭解訪問修飾符:

What is the difference between Dim, Global, Public, and Private as Modular Field Access Modifiers?

1

首先。 VB6是承載VBA語言的表單包和應用程序對象(以及打印機和剪貼板對象)。

在編程中有函數(以及對象的方法和屬性也是函數)和變量。

在您的代碼中繼續使用它,您將不得不在每次使用時都去If CheckUser("12345") then

但函數調用很慢。參數必須放在堆棧上,堆棧上創建的局部變量,放在堆棧上的返回地址,然後調用可能不在CPU高速緩存中的內存位置。

因此,如果多次使用某個東西將其存儲在一個變量中。

Dim GetCurrentUser As Boolean 
GetCurrentUser=CheckUser("12345") 

通過將Dim在模塊的頂部是可用於該模塊中的所有過程。或通過Public GetCurrentUser As Boolean訪問所有程序。

+0

與使用全局引用的附加維護問題相比,性能差異可以忽略不計。當您最小化「副作用」代碼並保持您的代碼獨立時,維護代碼會更好。我並不是說永遠不會使用全局變量,但在大多數情況下,函數調用的可維護性要好得多。 –