Codificação de arquivo na compilação usando TDS no Mac

apple-logo_318-40184Amigos. Recentemente migrei meu TDS para um macOS e estou me adaptando bem.

Contudo, existem alguns pulos de gato para acelerar a sua adaptação.

Vou te passar todos que aprendi. Assim você levará menos tempo que eu para solucionar os problemas de compatibilidade.

Um dos problemas que podem ocorrer com você ao compilar um fonte, pode ser que o Developer Studio interrompa o procedimento e apresente a seguinte mensagem de erro:

Input Length = 1

Esse erro ocorre quando caracteres especiais do arquivo editado não estão sendo devidamente convertidos para a codificação correta durante a compilação. Já percebi que nem sempre esse erro ocorre, e também não identifiquei um padrão do erro pois já ocorreu comigo tanto em arquivos UFT-8 quanto em Latin1. Contudo, faça a configuração abaixo pra se ver totalmente livre disso.

  1. Acesse a pasta da instalação do TDS
  2. Clique com o botão direito em “developerStudio.app” (pode ser que esteja sem a extensão dependendo da configuração do seu macOS).
  3. Selecione a opção “Mostrar Conteúdo do Pacote”.
  4. Entre em “Contents”, em seguida “macOS”.
  5. Edite o arquivo “developerStudio.ini” e inclua ao final do arquivo a seguinte linha:
-Dfile.encoding=CP1252

Pronto. Feche seu TDS e abra novamente. Problema resolvido.

Vou postar uma série de dicas sobre TDS de modo geral e TDS no Mac. Até breve 😉

Anúncios

Controle de Semáforo no Protheus

O controle de semáforo no Protheus é feito utiizando-se duas funções:

LockByName (para criar um semáforo)
http://tdn.totvs.com/pages/releaseview.action?pageId=6814894

UnlockByName (para liberar o semáforo criado)
http://tdn.totvs.com/pages/releaseview.action?pageId=6814897

O conceito é o seguinte. Quando for iniciar a rotina verifique se pode criar um semáforo dessa forma:

If !LockByName("NOME_DA_SUA_ROTINA",.F.,.F.,.T.)
    MsgAlert("Rotina está sendo executada por outro usuário.")
    Return
EndIf

Ao final da rotina desative o semáforo. Senão não vai conseguir rodar mais a rotina. Dessa forma:

UnLockByName("NOME_DA_SUA_ROTINA",.F.,.F.,.T.)

Em caso de queda de conexão e travamento dos semáforos, existe a pasta semaforo no Protheus_Data. Será necessário parar o serviço, apagar os arquivos e iniciar novamente o serviço. Isso resolve qualquer problema de semáforos padrões do sistema inclusive.

Essa dica foi enviada pelo amigo, consultor e programador Bruno Sobral, que pediu para não colocar os créditos, mas eu sou teimoso. Abraços 😉