freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

arcengine開發(fā)個(gè)人手冊(cè)-資料下載頁

2025-06-29 06:03本頁面
  

【正文】 四、COM數(shù)據(jù)類型(COM data types)二十五、使用組件目錄(Using ponent categories) 如何使用組件目錄第三節(jié) VB環(huán)境 本章適合VB6和VBA開發(fā)人員。不同之處已作標(biāo)記一、用戶界面標(biāo)準(zhǔn) 預(yù)載窗體時(shí)不要載入太多,以3到4個(gè)為宜;使位圖文件、圖標(biāo)和相關(guān)文件時(shí)利用資源文件(.res)而不是外部文件; 當(dāng)變量引用只在類加載才設(shè)置時(shí),使用創(chuàng)建器和銷毀器設(shè)置。VB函數(shù)有:Class_Initialize() 、Class_Terminate() 或Form_Load() 、 Form_Unload(),銷毀對(duì)象時(shí)設(shè)置所有對(duì)象變量為Nothing;確保窗體的tab順序正確,不要把滾動(dòng)條加入到tab順序中,這樣會(huì)很麻煩;對(duì)窗體上標(biāo)識(shí)特別重要的控件的標(biāo)簽(labels),設(shè)置訪問鍵;盡量使用系統(tǒng)顏色,而不要使用hardcoded顏色。 上表為VB工程中各種要素命名標(biāo)準(zhǔn)的建議。模塊根據(jù)其提供的功能來命名,不要使用系統(tǒng)默認(rèn)的名字(如Form1, Class 1)。另外用上表建議的暗示模塊類型三個(gè)字母作為前綴為窗體(forms)、類(classes)、標(biāo)準(zhǔn)模塊(standard modules)。在模塊中,根據(jù)控件提供的功能為其命名,不要使用系統(tǒng)默認(rèn)的名字。使用左表提供的三個(gè)字母為前綴暗示控件類型。二、變量聲明(Variable declaration) 使用“Option Explicit”(或在VB選項(xiàng)對(duì)話框中設(shè)置)強(qiáng)制需要變量聲明。 使用Public和Private聲明模塊級(jí)別變量,用Dim聲明局部變量。(Dim和Private同樣可以聲明模塊級(jí)別變量,但使用Private更常見)。任何時(shí)候都不要使用Global。 盡量為變量、參數(shù)和函數(shù)設(shè)置明確的類型,否則系統(tǒng)默認(rèn)為Variant類型,這樣會(huì)降低效率。 盡量每行只聲明一個(gè)變量,除非為每個(gè)變量指定了類型 下面一行使得count變量被聲明為Variant類型,和期望的不一樣:Dim count,max As Long 下面一行聲明count和max變量為期望的Long類型:Dim count As Long, max As Long 下面兩行同樣聲明count和max為L(zhǎng)ong類型,而且更具易讀性:Dim count As LongDim max As Long三、括號(hào)(Parentheses) 用括號(hào),使操作符優(yōu)先,使比較語句更易讀 Result=((x*24)/(y/12))+42 If ((Not pFoo Is Nothing) And (Counter 200)) Then四、條件語句順序(Order of conditional determination) VB和C、C++等語言不一樣,它會(huì)判斷條件的所有部分,即使第一部分為False。也就是說在條件句的前一部分,不能對(duì)必須具有效性的對(duì)象和接口進(jìn)行條件判斷。 ‘當(dāng)pFoo值為Null時(shí),下面一句會(huì)導(dǎo)致錯(cuò)誤 If ((Not pFoo Is Nothing) And (TypeOf Is Ibar)) Then End If ‘正確的測(cè)試代碼如下 If (Not pFoo Is Nothing) Then If (TypeOf Is IBar) Then ‘Perform action on Ibar thing of Foo End If End If五、縮進(jìn)(Indentation) 用兩個(gè)空格或兩個(gè)空格的制表符寬度縮進(jìn)六、默認(rèn)屬性(Default properties) 除非最通用情況下,最好不要使用默認(rèn)屬性,這樣會(huì)降低靈活性七、模塊調(diào)用中的引用(Intermodule referencing) 訪問調(diào)用模塊中的數(shù)據(jù)或函數(shù)時(shí),最好用模塊名限定其引用,這樣代碼更具有易讀性,運(yùn)行時(shí)綁定效率也更高。八、多屬性操作(Multiple property operations) 同時(shí)操作同一對(duì)象的多個(gè)不同屬性時(shí),用With…End With語句,這比每次指定對(duì)象更高效。 With frmHello .Caption = “Hello world” .Font = “Playbill” .Left = ( .Width) / 2 .Top = ( .Height) / 2 End With九、矩陣(Arrays)使用矩陣時(shí),不要改變其基數(shù)0(系統(tǒng)默認(rèn)值)為其它值。用LBound和UBound循環(huán)矩陣中的每項(xiàng)。MyArray = GetSomeArrayFor I = LBound(myArray) To UBound(myArray) MsgBox cstr(myArray(i))Next I十、位邏輯操作符(Bitwise operations) And,Or和Not都是邏輯操作符,確保其判斷條件都是Boolean值(當(dāng)然,正確的邏輯語句除外)十一、類型后綴(Type suffixes) 除非為了從32位數(shù)中區(qū)分16位數(shù),盡量不要在變量或函數(shù)名中使用類型后綴(如myString$或者Right$(myString))。十二、變量命名方法 用下面的方法來命名變量:[libraryName][scope_]typename,name描述變量用作什么或包含什么,scope和type部分小寫,name部分應(yīng)該大小寫混合。十三、模糊類型匹配(Ambiguous type matching) 對(duì)于模糊類型匹配,用顯式轉(zhuǎn)換操作符(如CSng,CDbl,CStr)進(jìn)行轉(zhuǎn)換,不要依靠VB系統(tǒng)決定使用什么類型。十四、簡(jiǎn)單圖象顯示(Simple image display) 對(duì)于簡(jiǎn)單的圖象顯示,用ImageControl控件,不要用PictureBox控件,這樣更高效。十五、錯(cuò)誤處理(Error handling) 使用OnError處理錯(cuò)誤,對(duì)每個(gè)函數(shù)中的錯(cuò)誤檢查,用OnError跳轉(zhuǎn)到單個(gè)錯(cuò)誤處理處,處理運(yùn)行過程中可能遇到的所有異常。錯(cuò)誤處理后(通常顯示一個(gè)消息),應(yīng)該用下表中顯示的恢復(fù)語句繼續(xù)處理。 VB中的錯(cuò)誤處理不同COM中一般的錯(cuò)誤處理(參考“Working with HRESULTs’”部分)。十六、事件函數(shù)(Event functions) 不要在事件函數(shù)中放置過多的代碼,以免代碼雜亂無章。事件函數(shù)是在其它地方簡(jiǎn)單派發(fā)以達(dá)到重用功能。十七、內(nèi)存管理(Memory management) 要確保高效使用內(nèi)存資源,應(yīng)注意以下幾點(diǎn):正常卸載窗體。在要保留太多不可視的窗體,因?yàn)榇绑w會(huì)消耗系統(tǒng)資源;注意引用一個(gè)窗體級(jí)別變量時(shí)會(huì)裝載窗體;設(shè)置不用的對(duì)象值為Nothing,以釋放占用的內(nèi)存;使用Class_Initialize() 和 Class_Terminate()分配、回收資源。十八、While…Wend結(jié)構(gòu)(While Wend constructs) 避免使用While…Wend語句。用Do While…Loop和Do Until…Loop代替,因?yàn)檫@樣可以有條件地跨出結(jié)構(gòu)。 Set pFoo = Do While (Not pFoo Is Nothing) If ( = “Done”) Then Exit Loop Set pFoo = Loop十九、VB虛擬機(jī)(The Visual Basic Virtual Machine) VB虛擬機(jī)包括了VB內(nèi)部控制和服務(wù),如開始和終止VB程序,它是執(zhí)行所有VB開發(fā)代碼所必須的。 VB虛擬機(jī)以DLL形式封裝,在要執(zhí)行VB代碼的機(jī)器上必須安裝,即使已將代碼編譯成本地代碼。,它貯存了虛擬機(jī)。二十、與IUnknown接口交互 關(guān)于VB中的接口機(jī)制二十一、訪問AO(Accessing ArcObjects) 下面是關(guān)于AO中創(chuàng)建實(shí)例和查詢接口操作的一些特殊用法。要在VB或VBA中使用AO對(duì)象,首先要引用包含該對(duì)象的ESRI文件庫。如果使用ArcMap或ArcCatalog中內(nèi)置的VBA,則系統(tǒng)已經(jīng)引用了大多數(shù)通用的ESRI對(duì)象庫。在獨(dú)立的VB程序或組件中,則必須手工引用需要的文件庫。 現(xiàn)在以Point對(duì)象和IPoint接口為例,設(shè)置點(diǎn)坐標(biāo)的一種方法是調(diào)用IPoint接口的PutCoords方法,并傳入坐標(biāo)值。 Dim pPt As IPoint Set pPt = New Point 100,100 這段簡(jiǎn)短代碼的第一行顯示了如何用一個(gè)變量引用對(duì)象支持的接口,從ESRI對(duì)象庫中讀取IPoint接口的GUID值。這段代碼很清晰,如果在同一工程中引用其它的對(duì)象庫時(shí)用庫名加接口名就更清晰了,如: Dim pPt As 用這種方式,即使在工程中又引用了另外一個(gè)IPoint接口,也不會(huì)混淆引用的是哪一個(gè)。 第二行創(chuàng)建了一個(gè)對(duì)象或可實(shí)例化類,然后對(duì)IPoint接口執(zhí)行了QI操作,并對(duì)其賦值。對(duì)于像Point這樣通用的可實(shí)例化類,也可以用文件庫名加類名的方式,如 Set pPt = New 最后一行調(diào)用了PutCoord方法。如果在接口中無法定位該方法,編譯時(shí)就會(huì)出錯(cuò)。 (Coclass是ponent object class的縮寫)二十二、使用HRESULTs(Working with HRESULTs) 所有的COM方法都通過其返回的HRESULT值暗示調(diào)用是否成功,接口以外不會(huì)發(fā)生任何異常。在VB中,當(dāng)遇到錯(cuò)誤時(shí)也會(huì)產(chǎn)生異常。在VB中調(diào)用的方法不會(huì)返回HRESULTs值,那么VB是如何產(chǎn)生異常的呢?答案就在于VB虛擬機(jī)。VB虛擬機(jī)接收了HRESULT值,如果結(jié)果不是S_OK,那么虛擬機(jī)就產(chǎn)生異常。如果能從COM錯(cuò)誤對(duì)象中獲得任何有價(jià)值的錯(cuò)誤信息,虛擬機(jī)就將該信息存儲(chǔ)在VB的Err對(duì)象中。通過這種方法VB虛擬機(jī)處理了客戶返回的所有HRESULTs值。 在VB中實(shí)現(xiàn)接口時(shí),好的習(xí)慣是當(dāng)遇到錯(cuò)誤時(shí)就產(chǎn)生一個(gè)HRESULT錯(cuò)誤通知調(diào)用者遇到了一個(gè)錯(cuò)誤。通常這個(gè)在一個(gè)方法完成之前做完。 ‘Defined in Module Const E_NOTIMPL = amp。 H80004001 ‘Constant that represents HRESULT ‘Added to any method not implemented On Error GoTo 0 E_NOTIMPL 此外,還要編寫處理HRESULT返回非S_OK值時(shí)的代碼。這種情況下應(yīng)該調(diào)用一個(gè)錯(cuò)誤處理函數(shù)處理該錯(cuò)誤。也就是說簡(jiǎn)單地告訴用戶,或者自動(dòng)處理錯(cuò)誤然后繼續(xù)運(yùn)行函數(shù)。下面是一段簡(jiǎn)單的錯(cuò)誤處理代碼,能捕捉到函數(shù)中的任何錯(cuò)誤,并通知用戶。注意Err對(duì)象的使用,它給用戶提供了一些對(duì)錯(cuò)誤的描述。 Private Sub Test() On Error GoTo ErrorHandler ‘Do something here Exit Sub ‘Must exti sub here before error handler ErrorHandler: MsgBox “Error In Application – Description” amp。 End Sub二十三、使用屬性(Working with properties) 有些屬性引用了ESRI對(duì)象庫中一些特別的接口,還有一些屬性則是標(biāo)準(zhǔn)數(shù)據(jù)類型的值,如strings、numeric expressions、Boolean values等。對(duì)于接口引用,要聲明一個(gè)接口變量,并用Set語句將接口引用賦給屬性。對(duì)于其它的值,則聲明明確數(shù)據(jù)類型的一個(gè)變量或用VB的Variant數(shù)據(jù)類型,然后,用一個(gè)簡(jiǎn)單的賦值語句將值賦給變量。 對(duì)屬性是接口的,可以用引用賦值,也可以用值賦值。對(duì)于值賦值,可以不用Set語句。 Dim pEnv As IEnvelope Set pEnv = ‘Get extent property of view , , True ‘Shrink envelope = pEnv ‘Set By Value extent back on IactiveView Dim pFeatureLayer as IFeatureLayer Set pFeatureLayer = New FeatureLayer 39。Create New Layer Set = pClassv 39。Set ByRef a class into layer 有些屬性是只讀(readonly)的,有些是只寫(writeonly)的,有些則是可讀寫(readwrite)的。所有的對(duì)象瀏覽器和ArcObjects類幫助文件(在ArcGIS開發(fā)幫助系統(tǒng)中可以找到)都提供了這些信息。如果試圖使用一個(gè)屬性,但忘記使用Set關(guān)鍵字,那VB編譯將失敗,或者顯示數(shù)據(jù)成員未找到的消息。當(dāng)對(duì)一個(gè)只讀屬性賦值時(shí)也會(huì)產(chǎn)生這樣的錯(cuò)誤。二十四、使用方法(Working with methods) 方法執(zhí)行了一些動(dòng)作,可能返回值也可能不返回。在有些實(shí)例中,返回值的方法是一個(gè)接口。例如,下面的代碼中,EditSelection返回了一個(gè)枚舉特征的接口。 Dim pApp As IApplication Dim pEditor As IEditor Dim pEnumFeat As IEnumFeature 39。Holds the selection Dim pID As New UID 39。Get a handle to the Editor extension pID = Set pApp = Application Set pEditor = (pID) 39。Get the sel
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1