我正在調試使用Delphi 6 Pro與DSPACK代碼庫創建的DirectShow過濾器。當我設置的斷點在一個名爲BaseClass.pas的特定單元中命中時,我開始跟蹤,執行點跳轉到源代碼中的奇怪位置。這通常表示被跟蹤的源代碼與編譯到Delphi應用程序使用的其中一個包中的源代碼不匹配。奇怪的是,它只是BaseClass單元,因爲我追蹤了屬於DSPACK代碼庫的其他單元,並且它們沒有出現這個問題。我沒有使用運行時軟件包。斷點擊中時,單元源代碼與代碼執行路徑不匹配
我掃描了我的磁盤,發現只有一個修改日期等於上次構建程序的BaseClass.dcu副本。我沒有修改該單元或任何其他屬於DSPACK的源代碼。由於我的過濾器是主應用程序的一部分,因此它指示BaseClass.pas將受制於雙重使用情況,因爲它用於構建DSPACK組件包(dpk),並且也由我的主應用程序直接通過TBCSource對象引用我的過濾器從下降。請注意,我嘗試將單位PAS文件直接添加到我的項目中,但這並沒有解決任何問題。
我也回去重新打開了每個DSPACK包文件,並完成了重新構建。這些都沒有幫助。還有什麼我可以嘗試讓源與BaseClass單元的編譯圖像同步嗎?或者完全是一個不同的問題,如果是這樣,它是什麼,我該如何解決它?
謝謝你提醒我。我只是嘗試了你的建議,不幸的是沒有改變。 –
我記得很久以前我寫了一個實用工具,專門用來清理任何*垃圾字符的Delphi文件,並確保所有行尾字符都是真正的CRLF對。我找到它並在BaseClass.pas上運行,錯誤消失。所以記事本保存/重新加載在某些情況下顯然是不夠的,但它是一個垃圾郵件字符問題。不幸的是,這讓我們失去了幾個小時,但很高興它已經修復了。 –
:)這就是爲什麼我說「有時」,而不是「你可以修復」。很高興我可以幫忙,即使它有點兒。 –