fbpx

Manipulação de string {$ZEROBASEDSTRINGS}

Delphi ZEROBASEDSTRINGS

A manipulação de string no mobile difere do desktop em alguns aspectos, um deles é exposto com a diretiva de compilação {$ZEROBASEDSTRINGS}.

Compatibilidade

Quando a Embarcadero começou a adotar no Delphi os novos compiladores, em primeiro lugar uma das grandes preocupações foi a compatibilidade. Da mesma forma, a compatibilidade dos novos recursos para com os antigos e também o desafio de manter o Delphi compatível com as novas plataformas.

No caso específico das strings, as plataformas móveis por padrão são dotadas de indexação iniciada por ZERO, portanto a primeira letra de uma string no mobile ocupa a posição 0. Quando falamos de desktop a indexação é iniciada por UM, em outras palavras, as strings no desktop se iniciam na posição 1.

Flexibilidade

Imagine um cenário que você tenha em seu sistema, já em uso, algumas rotinas de manipulação de string. Posteriormente, precisa utilizar essas rotinas no App que começou a desenvolver para estender o sistema já existente, por exemplo uma rotina de criptografia.

Como resultado da diretiva de compilação {$ZEROBASEDSTRINGS}, é possível você atribuir flexibilidade ao código de seu App tornando as strings baseadas em indexação 1 apenas onde você desejar.

Manipulação de string {$ZEROBASEDSTRINGS}

Conclusão

Em suma {$ZEROBASEDSTRINGS} tem como valor padrão {$ZEROBASEDSTRINGS OFF}  para compiladores Desktop ( DCC32, DCC64, DCCOSX, DCCLINUX64 ) . Por outro lado, tem valor padrão {$ZEROBASEDSTRINGS ON}  para compiladores mobile (DCCIOSARM, DCCIOSARM64, DCCIOS32, DCCAARM)

Vídeo

Exemplificando utilização deste recurso, como resultado criei o vídeo abaixo demonstrando como desativar o ZEROBASEDSTRINGS em dispositivos móveis.

Até a próxima!

Fontes:  
http://docwiki.embarcadero.com/RADStudio/Rio/en/Zero-based_strings_(Delphi) 
http://docwiki.embarcadero.com/RADStudio/Rio/en/Delphi_Compiler_Directives_(List)_Index 
http://docwiki.embarcadero.com/RADStudio/Rio/en/Conditional_compilation_(Delphi) 

,

Comente