Amiguinhos,
Chegamos a conclusão que temos uma diferenciação no que se refere a um NUMERAL e que ao usar 0 entre aspas estariámos dizendo a função que "0" é uma palavra assim como "ZERO", "Zero", "NONE", etc.
A função dbSelectArea taca um
dane-se se for 0 ou 2874376, não retornando para nós um simples: "idiota, não tá vendo que esta área não existe", porque se é previsto um número máximo de área que podemos abrir deverá ocorrer erro ao ultrapassar o limite ao usar com 0 ou até sem valor.
Tentei examinar os resultados e cheguei a conclusão com base neste teste:
Código: Selecionar todos
#include "fivewin.ch"
function main()
for nArea = 1 to 10
dbSelectArea( nArea-1 )
? "Passo 1", nArea-1, Select()
// Obtive 0,1 1,1 2,2 3,3 4,4 5,5 6,6 7,7 8,8 9,9
next
for nArea = 1 to 10
dbSelectArea( 0 )
? "Passo 2", nArea-1, Select()
// Obtive 0,1 1,1 2,1 3,1 4,1 5,1 6,1 7,1 8,1 9,1
next
for nArea = 1 to 10
dbSelectArea( "0" )
? "Passo 3", nArea-1, Select()
// Obtive 0,1 1,1 2,1 3,1 4,1 5,1 6,1 7,1 8,1 9,1
next
return .t.
Se dbSelectArea( 0 ) ou dbSelectArea( "0" ) criasse uma nova área não haveria tantos 1 repetidos.
Como sempre usei NEW nas aberturas este problema nunca me afetou e creio que a todos nós. Nem sei se poderia ser exposto como
bug pois se tentar resolver ou contornar seria como
mudar a natureza da chave de fenda só porque um prego não tem rosca.