Сбой компиляции Indy 10 с включенной директивой компилятора FASTMM - PullRequest
0 голосов
/ 04 июля 2018

Я использую Delphi 7. Я скачал последнюю версию Indy (10.5462) со страницы Фулгана вчера.

Существует пакетный файл (Full_d7.bat), который обычно успешно компилирует Indy.

Теперь, если я определю USE_FASTMM4 в IdCompilerDefines.inc в каталоге Core, Protocols и System, при компиляции возвращается следующая ошибка:

IdGlobal.pas(2229) Error: Declaration of 'GetBytes' differs from declaration in
interface 'IIdTextEncoding'
IdGlobal.pas(2229) Error: Declaration of 'GetCharCount' differs from declaration
 in interface 'IIdTextEncoding'
IdGlobal.pas(2229) Error: Declaration of 'GetChars' differs from declaration in
interface 'IIdTextEncoding'
IdGlobal.pas(2229) Error: Declaration of 'GetChars' differs from declaration in
interface 'IIdTextEncoding'
IdGlobal.pas(2229) Error: Declaration of 'GetChars' differs from declaration in
interface 'IIdTextEncoding'
IdGlobal.pas(2229) Error: Declaration of 'GetString' differs from declaration in
 interface 'IIdTextEncoding'
IdGlobal.pas(3500) Error: Incompatible types: 'Char' and 'Integer'
IdGlobal.pas(3502) Error: Incompatible types: 'Char' and 'Integer'
IdGlobal.pas(3527) Error: Incompatible types: 'Byte' and 'Char'
IdGlobal.pas(3592) Error: Incompatible types: 'Char' and 'Byte'
IdGlobal.pas(3594) Error: Incompatible types: 'Char' and 'Byte'
IdGlobal.pas(3617) Error: Incompatible types
IdGlobal.pas(3620) Error: Incompatible types: 'Word' and 'Char'
IdGlobal.pas(3663) Error: Incompatible types: 'Char' and 'Byte'
IdGlobal.pas(3665) Error: Incompatible types: 'Char' and 'Byte'
IdGlobal.pas(3687) Error: Incompatible types: 'Word' and 'Char'

Это ошибка в версии D7 или я что-то упустил? Есть ли что-то, что должно быть также определено в файле конфигурации при использовании FastMM?

1 Ответ

0 голосов
/ 06 июля 2018

FastMM объявляет свою собственную версию нескольких собственных типов данных Delphi (Native(U)Int, (U)IntPtr и т. Д.) При поддержке более старых компиляторов, которые не имеют этих типов.

Однако также объявляет PByte во всех версиях Delphi до D2009, что НЕ ДОЛЖНО (поскольку PByte доступно в модуле System RTL, работающем до конца вернуться как минимум к Delphi 5). Это повторное объявление PByte мешает использованию Indy PByte в устройстве IdGlobal - но только в версиях Delphi до D2006 (поскольку Indy не использует FastMM напрямую в более поздних версиях Delphi).

Я установил патч для Indy, чтобы решить эту проблему (SVN rev 5463), и отправил отчет об ошибке в FastMM.

...