none
寫成DLL的問題 RRS feed

  • 一般討論

  • 開發工具:VS2005(VB.NET)

    請問各位大大,我寫了一個class,內容有兩個函式(GetA,GetB),程式測試都沒有問題,但是寫成dll方式編譯後,我的GetA與GetB回傳的陣列卻變成相同的內容

    class class1
        Dim Title(titleValue, titleName.Length) As String 'TITLE
        Dim item(ItemValue, ItemName.Length) As String      'ITEM
    
    
    '方法
    Public Function GetItem(ByVal App_ini As String)
            'ITEM
            Dim j, i As Integer
            For i = 0 To ItemValue - 1
                For j = 0 To ItemName.Length - 1
                    Call GetPrivateProfileString("item" + (i + 1).ToString, ItemName(j), "Error", sBuff, 256, App_ini)
                    sBuff = sBuff.Trim()
                    'If sBuff = "Error" Then
                    '    Debug.Print("item(" + i.ToString + ", " + j.ToString + ")=Error")
                    'Else
                    item(i, j) = Microsoft.VisualBasic.Left(sBuff, InStr(sBuff, vbNullChar) - 1)
                    'Debug.Print("item(" + i.ToString + ", " + j.ToString + ")=" + item(i, j))
                    'Debug.Print(" ")
                    'End If
                Next
            Next
            Return item
        End Function
        Public Function GetTitle(ByVal App_ini As String)
            'title
            Dim j, i As Integer
            For i = 0 To titleValue - 1
                For j = 0 To titleName.Length - 1
                    Call GetPrivateProfileString("title" + (i + 1).ToString, titleName(j), "Error", sBuff, 256, App_ini)
                    sBuff = sBuff.Trim()
                    If sBuff = "Error" Then
                        Debug.Print("Title(" + i.ToString + ", " + j.ToString + ")=Error")
                    Else
                        Title(i, j) = Microsoft.VisualBasic.Left(sBuff, InStr(sBuff, vbNullChar) - 1)
                        Debug.Print("Title(" + i.ToString + ", " + j.ToString + ")=" + Title(i, j))
                        Debug.Print(" ")
                    End If
                Next
            Next
            Return title
        End Function
    end class
    
        Dim Item(,) As String
        Dim title(,) As String

    sub Form1_Load
            Dim ini As New Class1
            title = ini.GetTitle(path)
            Item = ini.GetItem(path)
    end sub

    請問各位大大~為何用寫成DLL後,title與Item的內容就變成一樣了,但是我寫成class就又不同,且是正確答案
    應該DLL編譯後跟class是一樣的呀!!!  為什麼會出現這情況呢???
    IDS
    2009年12月3日 上午 10:10

所有回覆

  • 把你兩個專案合成一個解決方案,設定編譯順序跟執行專案,就可以在 dll 專案設中斷點除錯。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2009年12月3日 上午 10:22
  • dear~ 我覺得很奇怪,相同的code,但是寫成dll就會傳回相同的資料,但是寫成class就回傳不同的內容(正確的),請問為什麼會這樣呢??是我忽略了什麼嗎???
    IDS
    2009年12月4日 上午 01:19
  • 當你除錯時就會發現,應該是你某個地方寫錯了。

    我也有很多專案是這樣搞,沒有你所說的問題。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2009年12月4日 上午 02:02
  • 先不論改成DLL的問題, 你的Class寫法很怪:
    1.
     Dim Title(titleValue, titleName.Length) As String 'TITLE
     Dim item(ItemValue, ItemName.Length) As String      'ITEM

    這兩個陣列為何要宣告成該Class的全域變數 ? 如果它只用在某個方法內, 你只要在該方法內宣告就好了.

    2. 你的Function 都沒帶  As 子句表示它要傳回的型別, 雖然這在VB.NET是行的通, 但確不是一個好的寫法.


    學而不思則罔, 思而不學則殆.
    如果你一直都看不懂、不想學習看懂、抗拒看懂MSDN Library的話,那你最好放棄想要寫好程式這件事
    如果你自私地不肯回饋與分享,那別人為何要花時間回答你的問題?
    2009年12月4日 上午 02:26
    版主
  • 謝謝大大的指教,以後會修正~
    IDS
    2009年12月7日 上午 06:33