Esse artigo faz parte da revista Clube Delphi edição 7. Clique aqui para ler todos os artigos desta edição


Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML. 

Paradox Resistirá ao Bug do Milênio?

 

Aproveitando a época e a euforia geral sobre o assunto, acabei por decidir realizar esta matéria. Apesar de nós, técnicos de informática, minimizamos as conseqüências que a mídia está atribuindo ao bug, estou com um pouco de preocupação sobre o problema. Afinal de contas, estamos num país onde a infra-estrutura tecnológica é precária e mal-resolvida, e qualquer pequeno inconveniente causa problemas sérios, como blackouts de nível nacional, transferências bancárias e outras anomalias. Quem não se lembra do preview de nosso bug do milênio, o das telefônicas. O simples fato de acrescentar dois dígitos aos códigos de telefone causou a paralisia total no sistema telefônico nacional, durante praticamente uma semana. É ou não é para ficar receoso?

Mas vamos ao que interessa. Nos últimos meses recebemos alguns e-mails sobre a possibilidade do paradox estar vulnerável ao bug-show-mídia do milênio. Alguns detectores do bug realmente apontam o ingênuo .DB como ameaça global. No início não tinha dado muita importância ao tema, mas como o volume de e-mails sobre o assunto aumentou, decidi estudar o fato e descobrir se o problema realmente existia.

Comecei com procedimentos básicos. Configurei corretamente o meu windows para data com oito dígitos e coloquei-me a testar. Aparentemente, tudo OK. Digitei algo como 01/01/2000, salvei, fechei e abri a tabela. O 2k estava lá. Fiz o mesmo com várias datas, e nenhuma foi alterada. Aí resolvi ir mais a fundo: como o help do Database Desktop não informa a quantidade de bytes necessários para um campo do tipo data, decidi dar uma olhada no arquivo com um visualizador hexadecimal, para enxergar o que realmente estava sendo gravado. Na preguiça de criar o meu próprio visualizador em Delphi, pluguei o micro na grande teia e perdi algumas horas procurando o meu favorito, o XTGold. Após instalá-lo, abri o arquivo .DB e constatei o fato: a data é gravada com quatro bytes, e portanto, armazena fisicamente os quatro dígitos do ano. Fiz o teste com várias datas. As informações a seguir exemplificam melhor:

 

A data – 01/01/1900, é gravada como 80-0A-95-5C.

 

A data  01/01/200, foi gravado como 80-0B-24-08. Completamente diferente do ano de 1900.

Outros testes também foram realizados – datas do século XV apresentaram valores diferentes. A próxima geração está livre de problemas – o ano 3000 foi salvo como 80-10-B6-C3.

Certamente, para que a segurança possa ser garantida ao cliente, o sistema operacional deverá estar livre de problemas. O hardware também, pois ele será o fornecedor da data para o SO. Existem vários programas de detenção de problemas com o hardware e SO disponíveis na Internet. A versão do paradox utilizada foi a 7, com BDE 5.10, sobre Windows NT. Para quem quiser simular os testes realizados, o XTGold está disponível para Download em nossa Homepage, no endereço http://www.clubedelphi.com.br/revista/edicao7/xtgold.zip.

Agradeço os que nos acompanharam e desejo um ótimo natal e ano novo para todos. E para quem vai ficar de plantão na virada e resolver dar uma rápida saída do escritório para acompanhar o estouro de fogos, não se esqueça: só desça o prédio utilizando a escada.