2010-01-21 58 views
2

在過去的幾天裏,我們發現在加載一個XML塊時,Delphi2006在使用ClientDataSet時引發了隨機訪問衝突,但在使用CodeGear 2007 rad Studio時,這些錯誤消失了。如何儘可能地調試delphi 2006 clientDataSet

我有一種奇怪的感覺,這將在未來回來並困擾着我們。

那麼,如何調試clientdataset.LoadFromStream方法的xml加載過程?

我可以看到它在dbclient.pas中定義,但我似乎無法找到xml處理部分。

JD

+0

那麼爲什麼不將這件東西移植到2007年並留在那裏呢? – 2010-01-21 21:54:30

回答

5

我不知道你是否已經嘗試過這一點,但它完全合法(並且支持)使用德爾福2006年應用程序的Delphi 2007版本的midas.dll。由於Embarcadero確實修復了Delphi 2007中的一些DataSnap錯誤,因此您看到的錯誤可能是由Delphi 2006錯誤引起的。值得一試的是用您的Delphi 2006應用程序替換2007版的midas.dll,並查看錯誤是否消失。它可能無法解決問題,但如果它確實會爲您節省很多麻煩和挫折。

+0

感謝Craig的信息。當我們運送產品時,我們不附帶midas.dll。我很好奇我們如何調試clientdataset(供將來參考)。 – 2010-01-21 14:33:03

+0

那麼,你可以通過DBClient.pas進行調試,正如其他人所建議的那樣。但大多數ClientDataSet *是* midas.dll。調試*的唯一方法是獲取D2010,其中包含其(C++!)源代碼或使用反彙編程序。 – 2010-01-21 14:36:53

+0

如果我們不分發midas.dll,delphi是否只將必要的代碼鏈接到exe中? – 2010-01-21 15:41:27

0

它已經有一段時間我一直在2006年,但如果我記得調試包權

反過來,那麼你就應該能夠踏進去

+0

嗨,我有調試dcus檢查,並沒有運行包與exe文件。我可以進入DbClient.pas,但我似乎無法找到xml加載發生的地方。 – 2010-01-21 11:35:39

+4

它發生在Midas.dll,正如其他人所說,直到2010年德爾福(然後,我認爲,只有某些SKU)你才能得到源代碼。由於無法在沒有源代碼的情況下跟蹤到Midas.dll,並且沒有可用源代碼,因此無法調試XML加載代碼。 – 2010-01-21 15:09:52

0

據我所知LoadFromStream不能用於加載XML文件,流中的數據應該採用客戶端數據集使用的內部格式。嘗試設置XMLData屬性。

+0

對不起,這就是我的意思。我正在嘗試查找內部格式的加載位置,以便我可以進行調試。 – 2010-01-21 14:28:38