Skip to content

fix(core): fix Delphi compilation error E2026 caused by FPC_FULLVERSION - #537

Merged
regyssilveira merged 1 commit into
HashLoad:masterfrom
regyssilveira:fix/issue-536
Jul 24, 2026
Merged

fix(core): fix Delphi compilation error E2026 caused by FPC_FULLVERSION#537
regyssilveira merged 1 commit into
HashLoad:masterfrom
regyssilveira:fix/issue-536

Conversation

@regyssilveira

Copy link
Copy Markdown
Contributor

Descrição

Corrige a issue #536.

Este Pull Request corrige uma falha de compilação no Delphi que ocorria na unit Horse.Core.Param.Header.pas em decorrência da avaliação de FPC_FULLVERSION pelo pré-processador do Delphi.

Causa do Problema

Mesmo quando o bloco externo {$IF DEFINED(FPC)} resulta em False sob o compilador Delphi, o pré-processador do Delphi continua inspecionando e avaliando a expressão condicional aninhada {$IF FPC_FULLVERSION >= 30301} enquanto faz a busca pelo seu {$ENDIF} correspondente. Como o símbolo FPC_FULLVERSION não é definido no Delphi, a avaliação sintática e semântica falha gerando o erro de compilação E2026 Constant expression expected.

Solução Aplicada

Para contornar essa limitação do pré-processador do Delphi, isolamos as diretivas de verificação de versão do Free Pascal em um arquivo de inclusão separado (src/Horse.FPC.inc), o qual é condicionalmente carregado apenas quando o compilador em uso é o FPC:

{$IFDEF FPC}
  {$MODE DELPHI}{$H+}
  {$MACRO ON}
  {$I Horse.FPC.inc}
{$ENDIF}

Dessa forma, como o símbolo FPC não é definido sob Delphi, o compilador do Delphi ignora completamente o bloco aninhado (inclusive a diretiva de inclusão {$I}), evitando que o arquivo Horse.FPC.inc seja lido ou processado. Isso soluciona o erro E2026 sem alterar em nada o comportamento esperado nas diferentes versões dos compiladores Delphi ou FPC/Lazarus.

@regyssilveira
regyssilveira merged commit 670686e into HashLoad:master Jul 24, 2026
@regyssilveira
regyssilveira deleted the fix/issue-536 branch July 24, 2026 21:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant