pauloaraujo Posted March 20, 2008 Report Share Posted March 20, 2008 citação: citação:O que estou contestando é a tua afirmação de que "" é igual a NIL. Não é, nem a pau, Juvenal. id=quote>id=quote>C ta doido é se for isso mesmo vou ter que fazer um recall dos meus sistemas tudo. Não, não. Eh tudo como o vagner ta falando, pelo menos deveria senão to ferrado. Marcelo Michels marcelo@infototal.com.br celo.michels@hotmail.com xHarbour 1.1 + Fwh 8.01 + WorkShop + Bcc 5.82 + WvwTools + SQLRDD + xMate. Editado por - kbelo on 20/03/2008 13:10:46 id=quote>id=quote>Marcelo, Acho que você não foi muito claro. O Vagner está dizendo que "" = NIL. Eu estou dizendo que é diferente. Se você achar que o Vagner está certo, pode iniciar o recall. Para começar, nem do mesmo tipo essas variáveis são. Você costuma comparar IF 999 == "ANIMAL" ???? É a mesma coisa. A única necessidade de checar se uma váriavel é NIL, é para ver se ela foi somente declarada e não inicializada. FUNCTION MAIN() PRIVATE WTESTE WTESTE:=NIL ? VALTYPE(WTESTE) // retornará U (indefinido) WTESTE="" // retornará C (caracter) ? VALTYPE(WTESTE) RETURN( NIL ) id=code>id=code> Quote Link to comment Share on other sites More sharing options...
pauloaraujo Posted March 20, 2008 Report Share Posted March 20, 2008 citação:Quando a variavel for Nil Valtype(cTeste) // U Quando a variavel for caracter mesmo se for "" Valtype(cTeste) // C Giovany Vecchi - Jales - SP FWH 2.8 /Clipper 5.3b /Blinker 5.0 / Harbour 0.99 / xHarbour 99.71/ Bcc 5.6 / Ads 7.1 /PellesC id=quote>id=quote>Boa, Giovany Estava digitando quando você postou. Um abraço Quote Link to comment Share on other sites More sharing options...
Kbelo Posted March 20, 2008 Report Share Posted March 20, 2008 citação: citação: citação:O que estou contestando é a tua afirmação de que "" é igual a NIL. Não é, nem a pau, Juvenal. id=quote>id=quote>C ta doido é se for isso mesmo vou ter que fazer um recall dos meus sistemas tudo. Não, não. Eh tudo como o vagner ta falando, pelo menos deveria senão to ferrado. Marcelo Michels marcelo@infototal.com.br celo.michels@hotmail.com xHarbour 1.1 + Fwh 8.01 + WorkShop + Bcc 5.82 + WvwTools + SQLRDD + xMate. Editado por - kbelo on 20/03/2008 13:10:46 id=quote>id=quote>Marcelo, Acho que você não foi muito claro. O Vagner está dizendo que "" = NIL. Eu estou dizendo que é diferente. Se você achar que o Vagner está certo, pode iniciar o recall. Para começar, nem do mesmo tipo essas variáveis são. Você costuma comparar IF 999 == "ANIMAL" ???? É a mesma coisa. A única necessidade de checar se uma váriavel é NIL, é para ver se ela foi somente declarada e não inicializada. FUNCTION MAIN() PRIVATE WTESTE WTESTE:=NIL ? VALTYPE(WTESTE) // retornará U (indefinido) WTESTE="" // retornará C (caracter) ? VALTYPE(WTESTE) RETURN( NIL ) id=code>id=code> id=quote>id=quote>Puts quase me borrei tudo agora. Bom eu ate uso em alguns lugares isso mas na comparação faço IF !EMPTY(VARIAVEL) Marcelo Michels marcelo@infototal.com.br celo.michels@hotmail.com xHarbour 1.1 + Fwh 8.01 + WorkShop + Bcc 5.82 + WvwTools + SQLRDD + xMate. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 20, 2008 Report Share Posted March 20, 2008 citação:Quando a variavel for Nil Valtype(cTeste) // U Quando a variavel for caracter mesmo se for "" Valtype(cTeste) // C Giovany Vecchi - Jales - SP FWH 2.8 /Clipper 5.3b /Blinker 5.0 / Harbour 0.99 / xHarbour 99.71/ Bcc 5.6 / Ads 7.1 /PellesC id=quote>id=quote>ESTE MULEKE, É INFERNAL!! GENTE INTELIGENTE, É OUTRA COISA! SÓ FALTA ELE SER CORINTHIANO, AI, EU MORRO DE ALEGRIA! kkkk. EU VOU PRA GALERA... João Santos - São Paulo. kmt_karinha@pop.com.br kapiaba@brfree.com.br Fone: (11) 3106-2832 FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe Quote Link to comment Share on other sites More sharing options...
Eric.Developer Posted March 20, 2008 Report Share Posted March 20, 2008 citação:Olá Pessoal, Bom, estava eu tentando montar um programinha e me deparei com um erro gravÃssimo no xHarbour, perdi +- uns 30 min. para tentar entender o que aconteceu, pois estava tudo certo, sem erro de lógica nem nada Se alguém puder testar, pode ser no xharbour puro ou com fw Teste Simples de Tudo cTeste := ",QualquerCoisa" ? cTeste,cTeste # "",cTeste != "",cTeste == "",cTeste = "" cTeste := ".QualquerCoisa" ? cTeste,cTeste # "",cTeste != "",cTeste == "",cTeste = "" Nos dois casos, irá aparecer uma tela de alert dessa maneira : ,QualquerCoisa .F. .F. .F. .T. ou seja, se alguma var começar com vÃrgula ou ponto (não testei com outros), não irá fazer a comparação ,QualquerCoisa - cTeste .F. - cTeste # "" .F. - cTeste != "" .F. - cTeste == "" .T. - cTeste = "" Nesse último é ainda pior o caso pois ele afirma que cTeste é = a "" (Nil) Por favor, me reportem qual xharbour estão usando para eu passar para o Culik Vagner Wirts VI Encontro está chegando , não perca id=quote>id=quote>Não é problema na linguagem, consultem: xharbour\xdiff.txt ? 'A' + 1 // 'B' Isso até acho aceitável ? 1 = 'X' // .F. Mas isso, acho um exagêro, descaracteriza a origem Clipper, além de mascarar erros em sistemas antigos. Quote Link to comment Share on other sites More sharing options...
siscat Posted March 20, 2008 Report Share Posted March 20, 2008 só pra constar... "" não é nil feliz Pascoa para todos!... []s.. Marllon Figueiredo Analista de Sistemas ERP/CRM Porto Alegre - RS siscatsoftware@hotmail.com SigLCS Sistema Integrado de Gestão App Siscat Serverid=green> FWH for xHarbour + SQL + SQLRDD + xDevStudio Quote Link to comment Share on other sites More sharing options...
pauloaraujo Posted March 20, 2008 Report Share Posted March 20, 2008 citação:só pra constar... "" não é nil feliz Pascoa para todos!... []s.. Marllon Figueiredo Analista de Sistemas ERP/CRM Porto Alegre - RS siscatsoftware@hotmail.com SigLCS Sistema Integrado de Gestão App Siscat Serverid=green>FWH for xHarbour + SQL + SQLRDD + xDevStudio id=quote>id=quote>Marllon, tudo bem?? Acontece o seguinte, o Vagner ficou com muito medo dos 2 pinguelos (""), porque, da próxima vez, virão gêmeos (hehe). Além da pérola ""=NIL, ele ficou tão fixado nisso (""), que só fez testes somente com eles e não percebe que: SET EXACT OFF ? "abc" # "a" // retornará .F. SET EXACT ON ? "abc" # "a" // retornará .T. Se não me engano, com o SEEK ocorre a mesma coisa. Feliz Pascoa para você também. Quote Link to comment Share on other sites More sharing options...
tiaoFW Posted March 20, 2008 Report Share Posted March 20, 2008 O importante é que não vou ter que passar a páscoa fazendo um recall dos meus sistemas. Bom feriado a todos! FW 2.5/CLIPPER 5.3b, BLINKER 7 Belzonte - Minas Gerais Quote Link to comment Share on other sites More sharing options...
Vitor Reis Posted March 20, 2008 Report Share Posted March 20, 2008 nunca vou comparar usando "" sempre uso empty() pra saber se existe qquer atribuição de valor dentro da variavel ou campo. pois "" ou nil realmente dá diferença.. sempre soube disto, entao melhor ir para o mais pratiko vitor s.b.c. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 26, 2008 Report Share Posted March 26, 2008 citação:nunca vou comparar usando "" sempre uso empty() pra saber se existe qquer atribuição de valor dentro da variavel ou campo. pois "" ou nil realmente dá diferença.. sempre soube disto, entao melhor ir para o mais pratiko vitor s.b.c. id=quote>id=quote>Putz!! Não tinha visto, ´tirou´ o Vagner Wirts de boa?? Taiz evoluindo em muleke?? Parabéns, absolutamente correto. Abraços. João Santos - São Paulo. kmt_karinha@pop.com.br kapiaba@brfree.com.br Fone: (11) 3106-2832 FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe Quote Link to comment Share on other sites More sharing options...
SHARK Posted March 29, 2008 Report Share Posted March 29, 2008 Uma observação interessante. No clipper e versões anteriores do xHarbour SET EXACT por default era definida como .T. SET EXACT ON Não sei em qual versão do xHarbour algum cabeção resolveu mudar o valor default de SET EXACT para .F. SET EXACT OFF O SET EXACT afeta diretamente o resultado de comparações feitas com "=" o mesmo não acontece usando "==" (que significa exatamente igual) se testar "Amor" = "Amo" e SET EXACT estiver OFF retorna .T. testando "Amor" = "Amo" e SET EXACT estiver ON retorna .F. porém, independente de SET EXACT ON ou OFF o teste: "Amor" == "Amo" sempre retornará .F. Pois usamos "==" (exatamente igual) Refaça o programinha da seguinte maneira: cTeste := ",QualquerCoisa" ? cTeste,cTeste # "",cTeste != "",cTeste == "",cTeste = "" cTeste := ".QualquerCoisa" ? cTeste,cTeste # "",cTeste != "",cTeste == "",cTeste = "" Retornará ,QualquerCoisa .F. .F. .F. .T. depois: .QualquerCoisa .F. .F. .F. .T. Agora acrescentando a linha SET EXACT ON: SET EXACT ON cTeste := ",QualquerCoisa" ? cTeste,cTeste # "",cTeste != "",cTeste == "",cTeste = "" cTeste := ".QualquerCoisa" ? cTeste,cTeste # "",cTeste != "",cTeste == "",cTeste = "" Retornará ,QualquerCoisa .T. .T. .F. .F. depois: .QualquerCoisa .T. .T. .F. .F. Que é supostamente o correto. Em resumo: SET EXACT ON no inÃcio do programa encerra esta discusão e faz com que o "==" e "=" se comportem da forma habitual. Abraços. Shark - FWH 8.01 / xharbour 1.1.0 / xMate 1.15 / Resource WorkShop Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.