Erro 12029 ao utilizar Delphi com Kinvey

Situação: Servidor de aplicação desenvolvido em Delphi (Berlin), usando o Kinvey para envio de Push Notifications para celulares Android e iOS.

Problema: De uma hora para outra, não foi mais possível enviar as notificações. O erro retornado era “REST request failed: Error sending data (12029). Uma conexão com o servidor não pode ser estabelecida“.

Ambiente: Windows Server 2012 (100% atualizado através do Windows Update)

Para encurtar a história, depois de muito bater a cabeça, descobri que o problema estava no fato do servidor de aplicação não conseguir conectar o Kinvey usando TLS 1.2. Obs: Nas configurações de Internet do Windows, TLS 1.1 e 1.2 estavam ativas.

Aparentemente o Kinvey passou a exigir TLS 1.2 nas conexões (não sei exatamente em que data isso se tornou obrigatório, possivelmente em 04/Setembro/2018). Olhando nas DLLs carregadas pela aplicação Delphi, percebi que ela faz uso do WinHttp para comunicação. Sendo assim, vasculhando a internet, encontrei esse artigo, da própria Microsoft: Atualização para ativar o TLS 1.1 e o TLS 1.2 como um protocolos de segurança padrão no WinHTTP no Windows.

Após instalar o EasyFix do link acima, tudo voltou a funcionar!

Fica a dica, e também a reclamação do “por que” o WindowsUpdate não ter instalado isso por padrão!

Rad Studio XE2 vem aí!

A Embarcadero, atual “dona” do Delphi, começou a anunciar as novidades da próxima versão do Rad Studio, e também uma turnê mundial de apresentação do novo produto, que passará por algumas cidades do Brasil.

Entre as novidades, está o tão aguardado (pelo menos por alguns) suporte a 64bits (o Delphi poderá compilar aplicações para rodar em 64bits no Windows), além da possibilidade de criar aplicações nativas tanto para Windows como para MacOSX! Os controles VCL aparentemente também foram “modernizados” com a possibilidade de se utilizar “temas” a fim de alterar a aparência dos mesmos.

Uma nova tecnologia, chamada de FireMonkey, possibilitará a criação de aplicações gráficas, aproveitando os recursos de GPUs, possibilitando o uso de efeitos de transição, etc, em HD e 3D.

Apesar de não fornecer detalhes, o RadPHP (antigo Delphi for PHP) aparentemente vai possibilitar o desenvolvimento de aplicações para iOS e Android.

Após uma quase “morte” (enquanto estava nas mãos da falecida Borland), é muito bom ver que a Embarcadero está investindo e modernizando o produto, inserindo novos recursos e tecnologias e atendendo alguns anseios dos desenvolvedores.

Não esqueça de se cadastrar para concorrer a 3 cópias do Rad Studio.

Registrando o Help do Jedi no Delphi

Para quem possa interessar, segue os passos para integrar o help do JVCL (Jedi VCL) no Help do Delphi 2007.

Primeiro, baixe o help do site do SourceForge. O arquivo que eu usei foi o JVCL333Help-Help2.zip

No prompt de comando, com direitos de administrador, rode a linha abaixo:

h2reg.exe -u "cmdfile="JVCL333_h2reg.ini"

Obs: o h2reg.exe está gravado na pasta Help\Doc do Delphi 2007. Talvez você tenha que especificar o path completo para o arquivo JVCL333_h2reg.ini.

Edite o arquivo JVCL333_h2reg.ini adicionando a linha abaixo tanto na seção [Reg_Plugin] como na [UnReg_Plugin].

borland.bds5|_DEFAULT|Jedi.JVCL|_DEFAULT|

Pronto!

Virus ataca desenvolvedores Delphi!

Atenção! Você que programa em Delphi ou utiliza softwares compilados com ele, fique atento pois apareceu um vírus que troca uma das dcus do Delphi, fazendo com que seja carregado toda vez que a IDE é iniciada, ou que alguma aplicação feita em Delphi (que esteja contaminada) é executada. Não se sabe exatamente o que o vírus faz, ou sele prejudica alguma coisa. Aparentemente o vírus não compromete o sistema, apenas checa qual a versão do Delphi instalada e se propaga, sem “estragar” nada.

Mais informações aqui e aqui.

Informações detalhadas, inclusive de como remover o “virus” podem ser lidas aqui.

PS: É a primeira vez que leio sobre virus no formato “dcu”.

DLLs estáticas ou dinâmicas no Delphi

Se você não faz a menor idéia das diferenças entre carregar uma DLL estaticamente ou dinamicamente, leia o artigo publicado no site About Delphi. Muito simples, ele mostra as diferenças, vantagens e desvantagens de cada método.

Basicamente, DLLs estáticas são carregadas assim que sua aplicação é iniciada. Se a DLL não existir, o programa não roda. Já as dinâmicas, são carregadas quando “você mandar”, mas isso exige algumas chamadas na API do Windows, o que pode “assustar” alguns desenvolvedores iniciantes ;-).

1 2