SetThreadContext failed Delphi 2007/2009
Por Anderson Luis Ferreira - janeiro/2010
Após instalar o Windows 7/64bits e instalar o CodeGear Delphi 2009 tive um desagradável problema na depuração de meus projetos.
Não importava o projeto ao depurar surgia uma mensagem SetThreadContext failed, especificamente na biblioteca bordbk105N.dll para Delphi 2007 e bordbk120N.dll para Delphi 2009.
Algumas pesquisas no Google mostrou que o problema acontece por ser realizada uma chamada invalida para API SetThreadContext. Em um blog encontrei uma solução que basicamente desabilita a verificação de um possível erro retornado pelo SetThreadContext, ou seja, o depurador ignora o erro não exibindo-o.
Não é uma solução muito elegante, pois o depurar pode não trabalhar de maneira correta.
Com os testes realizados por mim, não notei nenhuma diferença na depuração após aplicar esta correção.
Para efetuar a correção deste problema, proceda da seguinte maneira:
1. Fechar Delphi
2. Localize bordbk105N.dll ou bordbk120N.dll (C:\Program Files (x86)\CodeGear\RAD Studio\ 6.0\bin\)
3. Faça uma cópia de backup
4. Abra em um editor hexadecimal (HexEditor funciona bem) - http://www.physics.ohio-state.edu/~prewett/hexedit/
5. Acesse o menu Find, marque a opção HEX e Procure por "01 00 48 74 47 80 3D"
6. Substitua "74", por "EB"
9. Acesse o menu File, Salve As...
10. Abra o Delphi. Erro deve ter sumido.
Este procedimento deve funcionar em versões anteriores do Delphi também, mas eu não testei ainda.
Encontrei também uma ferramenta que faz toda a correção acima de forma automática para o Delphi 2007 e 2009. Basta clicar em “Apply Patch” e está feito.
Pegue o patcher aqui: Delphi_Debugger_Fix.zip (169 KB)
Nota: As correções explicadas neste artigo devem ser aplicadas por sua conta e risco.
Referência em inglês: http://dmagin.wordpress.com/2009/07/21/windows-7-64bit-delphi-debugger-fix-workaround/