Последние исходные коды Subversion Indy 10 не будут встроены в Delphi XE

Просто взял последние исходники из Subversion для Indy 10, и я получаю эту ошибку:

[Ошибка DCC] IdWinsock2.pas (2421): E2003 Необъявленный идентификатор: 'SIZE_T'

Код в строке 2421 IdWinsock2.pas:

  {$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 работают нормально. Это просто жареный ствол.

Обновление: чтобы попытаться исправить это, я добавил это:

type
  SIZE_T = Cardinal;

Затем он умирает позже в том же IdWinsock2.pas, по адресу 6238:

function WSA_CMSGHDR_ALIGN(const Alength: SIZE_T): SIZE_T;

И это external-sym определено в строке 3218 по-другому:

  function WSA_CMSGHDR_ALIGN(const Alength: PtrUInt): PtrUInt;

Я предполагаю, что кто-то находится в процессе взлома, пытаясь сделать эту работу в 64-битном FPC, и не заметил, что они нарушили способность компилировать его в доставке Delphi.


person Warren P    schedule 10.03.2011    source источник
comment
П: Мне нравится ваш новый значок (я думаю).   -  person Andreas Rejbrand    schedule 11.03.2011
comment
Я думаю, вам следует отправлять отчет об ошибке в Indy, а не в Stack Overflow.   -  person Rob Kennedy    schedule 11.03.2011
comment
На самом деле я сделал это, потому что кто-то еще спрашивал о стабильности Indy. Я проверил это. Ответ. Не очень стабильно. Но очень активно развивался. И это хорошо.   -  person Warren P    schedule 11.03.2011


Ответы (3)


SIZE_T в настоящее время осуществляется поддержка. Новый код был зарегистрирован до того, как был готов, но вскоре он должен быть исправлен.

person Remy Lebeau    schedule 10.03.2011
comment
Я проверял это, потому что кто-то спрашивал об Indy 10.5.8, который, как я полагал, должен означать пересмотр Indy head. Что еще не совсем готово. Приятно читать журнал svn и видеть, что уровень активности высок. - person Warren P; 11.03.2011


Я бы объявил size_t в Delphi как Cardinal:

type
  size_t = Cardinal;
person Ondrej Kelle    schedule 10.03.2011
comment
К сожалению, это не помогает мне. Похоже, что во всем последнем коде Subversion есть своего рода рефакторинг «подготовка к большому», который выполняется частично. Иногда SIZE_T является типом значения, и он используется повсюду как тип значения, а в других местах он используется как тип указателя. - person Warren P; 11.03.2011
comment
@Warren Взгляните на этот ответ Реми на форумах Embarcadero, правильное место для его определения находится в IdIConv.pas. Может быть, нет большого рефакторинга, а просто ошибка или регресс. У меня нет доступа к настраиваемым портам, чтобы посмотреть историю svn, но стоит посмотреть, что происходит. - person jachguate; 11.03.2011
comment
Спасибо. хорошая информация. Похоже, что изменения 64-битной готовности (SIZE_T) вчера находились на средней стадии фиксации. - person Warren P; 11.03.2011