none
如何在同個function內, 以變數區別不同的type statement宣告? RRS feed

  • 問題

  • 例如c裡面的:

    #if defined( variable_A )

    BYTE A_Tag;

    #elif defined( variable_B )

    BYTE B_Tag;

    #endif

     

    我想要做到(下列為錯誤VB6語法):

    #if defined( variable_A )

    Dim bA_CB as A_CB

    #elif defined( variable_B )

    Dim bB_CB as B_CB

    #endif

     

    或是 是否有其它更好的方法, 可以快速解決這個問題呢??

    2011年11月11日 上午 09:02

解答

  • 小朱貼的就是。

    但是那個要在編譯前就決定,編譯時寫死,不能執行時期決定。

    因為 VB6 這裡已經寫死,可能你要用自訂 Class 配合 Variant 物件變數。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    • 已標示為解答 kylie.c 2011年11月13日 下午 12:00
    2011年11月12日 下午 03:46

所有回覆

  • 請問是vb6嗎?

    如果用定義成variant的話,就可以接任何type

    dim a as variant

    if ... then

    set a = new typea

    else

    set a = new typeb

    end if


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    2011年11月11日 上午 09:46
  • VB6 Conditional Compilation: http://msdn.microsoft.com/en-us/library/aa240847(VS.60).aspx

    VB.NET Conditional Compilation: http://msdn.microsoft.com/en-us/library/9ae6e432(VS.80).aspx


    小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
    雲端學堂Facebook: http://www.facebook.com/studyazure
    2011年11月11日 上午 10:34
    版主
  • 亂馬兄,

    是VB6沒錯, 只是我傷腦筋的是2個不同的byte type statement, 要塞到同一個function去,

    但是這兩個byte type statement的長度不一樣, 結果短的那個在執行後會有錯誤發生(out of memory),

    ex:

     type A

     ID as byte

     Name as byte

     end type

     

     

     type B

     ID as byte

     end type

     

     

    public sub Execute()

    Dim tType as A

    Dim size as long

    Dim Result as boolean

     

    size=len(tType)

    Result=SetFunction( VarPtr(tType),size)

    end sub

     

    如上例, 我想把tType可以在宣告前, 

    可以用變數決定as A或是as B,

     

    現在看起來好像不太符合邏輯, 只是我也不知道怎麼改了~~

    再找不出辦法...我只能砍掉重練了....
    • 已編輯 kylie.c 2011年11月11日 下午 05:09
    2011年11月11日 下午 05:06
  • 可以厚臉皮的跟版主要第二解決方法嗎~~呵..

    我自認用#if...這個方法好像不太可行...

     


    • 已編輯 kylie.c 2011年11月11日 下午 05:16
    2011年11月11日 下午 05:15
  • 小朱貼的就是。

    但是那個要在編譯前就決定,編譯時寫死,不能執行時期決定。

    因為 VB6 這裡已經寫死,可能你要用自訂 Class 配合 Variant 物件變數。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    • 已標示為解答 kylie.c 2011年11月13日 下午 12:00
    2011年11月12日 下午 03:46