2011-03-10 45 views
0

就一把抓起顛覆最新消息透露,爲印10,我得到這個錯誤:最新顛覆來源德爾福XE不會建

[DCC錯誤] IdWinsock2.pas(2421):E2003未聲明的標識符: 'SIZE_T'

在IdWinsock2.pas線2421的代碼是:

{$EXTERNALSYM WSACMSGHDR} 
    WSACMSGHDR = record 
    cmsg_len: SIZE_T; // error. 
    cmsg_level: Integer; 
    cmsg_type: Integer; 
    { followed by UCHAR cmsg_data[] } 
    end; 

這似乎是一個非常基本的故障。我希望Indy的資源可以在最新的Delphi中打造,開箱即用。它在我的最終肯定是錯的,但我不知道是什麼。

它看起來像穩定的標籤來源indy10 \ Indy10 \ tags \ Indy 10.5.7工作正常。這只是Trunk的油炸。

更新:要嘗試修復它,我加了這一點:

type 
    SIZE_T = Cardinal; 

然後在同一IdWinsock2.pas去世以後,在6238:

function WSA_CMSGHDR_ALIGN(const Alength: SIZE_T): SIZE_T; 

而且它的外部符號在行3218不同的定義:

function WSA_CMSGHDR_ALIGN(const Alength: PtrUInt): PtrUInt; 

我最好的猜測是有人在下鍋月上中旬,企圖使在此工作64位FPC,並沒有注意到他們打破了在Delphi上編譯它的能力。

+0

P:我喜歡你的新圖標(我認爲)。 – 2011-03-10 21:06:51

+2

Bork bork bork。 – 2011-03-10 21:10:31

+1

我認爲你應該向Indy提交bug報告,而不是Stack Overflow。 – 2011-03-10 22:06:44

回答

2

SIZE_T支持目前正在進行中。新代碼在準備好之前已經簽入,但應該很快修復。

+0

我正在檢查這個,因爲有人問Indy 10.5.8,我認爲這意味着Indy頭修訂。這還不是一個可建立的狀態。閱讀svn日誌並看到活動水平很高是令人興奮的。 – 2011-03-11 01:25:49

0

我會在德爾福宣佈size_tCardinal

type 
    size_t = Cardinal; 
+0

不幸的是,這並不能解決它。看起來,在顛覆的最新代碼中,有一些準備好的大重構是一部分。有時,SIZE_T是一個值類型,它被用作值類型,而在其他地方,它被用作指針類型。 – 2011-03-10 21:40:10

+0

@Warren在Embarcadero論壇上看看這個[Remy回覆](https://forums.embarcadero.com/message.jspa?messageID=328760#328760),定義它的正確位置是在IdIConv.pas中。也許沒有大的重新分解,但只是一個錯誤或迴歸。我沒有自定義端口來訪問svn歷史記錄,但它值得查看發生了什麼。 – jachguate 2011-03-10 22:05:04

+0

謝謝。好信息。它看起來像64位準備(SIZE_T)的變化昨天在一箇中間提交階段。 – 2011-03-11 20:01:48