Kbelo Posted August 26, 2011 Report Share Posted August 26, 2011 Amigos Boa tarde. Seguinte tenho 7 classes e elas tem o mesmo metodo :SetCampo() Cada setCampo tem sua particularidade. eu estava tentando fazer um negocio com menos codigo e fiz assim. Resumindo if verdadeiro x:= "::nota:" else x:= "::total:" endif y := x + "setCampo()" // aqui ficaria "::nota:setCampo()" a := &y // aqui da erro. id=code>id=code>Variavel Self não existe Como posso resolver? Marcelo Michels E-mail:marcelo@folksistemas.com.br Msn/E-mail:celo.michels@hotmail.com xHarbour 1.2 + Fwh 106 + Bcc 5.82 + SQLRDD + Mate. Editado por - Kbelo on 29/08/2011 11:57:22 Quote Link to comment Share on other sites More sharing options...
Kbelo Posted August 26, 2011 Author Report Share Posted August 26, 2011 Amigos Boa tarde. Seguinte tenho 7 classes e elas tem o mesmo metodo :SetCampo() Cada setCampo tem sua particularidade. eu estava tentando fazer um negocio com menos codigo e fiz assim. Resumindo if verdadeiro x:= "::nota:" else x:= "::total:" endif y := x + "setCampo()" // aqui ficaria "::nota:setCampo()" a := &y // aqui da erro. id=code>id=code>Variavel Self não existe Como posso resolver? Marcelo Michels E-mail:marcelo@folksistemas.com.br Msn/E-mail:celo.michels@hotmail.com xHarbour 1.2 + Fwh 106 + Bcc 5.82 + SQLRDD + Mate. Editado por - Kbelo on 29/08/2011 11:57:22 Quote Link to comment Share on other sites More sharing options...
Erciley Junior Posted August 26, 2011 Report Share Posted August 26, 2011 testei o que disse, e realmente dá erro isso não deu: obj:=::nota variavel:='obj' ?&a tente isso ^^ Erciley Junior FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY Quote Link to comment Share on other sites More sharing options...
sambomb Posted August 26, 2011 Report Share Posted August 26, 2011 X:= "Self:Nota:" Ou Method SeuMetodo( cNomeObj ) x := cNomeObj+":Nota:" RCA Sistemas - Itaocara - RJ Quote Link to comment Share on other sites More sharing options...
SAOliveira Posted August 26, 2011 Report Share Posted August 26, 2011 Experimente a := &(y) "Me interessa o futuro porque é o lugar onde vou passar o resto da minha vida." Quote Link to comment Share on other sites More sharing options...
Erciley Junior Posted August 26, 2011 Report Share Posted August 26, 2011 num consegui editar o post testei o que disse, e realmente dá erro isso deu certo: variavel:='obj'+':metodo()' &variavel id=code>id=code>Erciley Junior FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY Quote Link to comment Share on other sites More sharing options...
Kbelo Posted August 26, 2011 Author Report Share Posted August 26, 2011 obj:= ::nota x := "obj:setCampo()" y := &x id=code>id=code>Dessa forma funciona. Mas ai tem outro problema. Mas o prblema é aqui. ::nota:SetCampo(::xml:cName, ::xml:cData) // Aqui o cName é caracter. //ai que ta o "pobrema" METHOD setCampo(campo, Valor) Class NfeNota local x := "" x := "::" + campo + " := " + valor //::nota:cUF := "SC" y := &x aqui da erroid=red> return id=code>id=code>Marcelo Michels E-mail:marcelo@folksistemas.com.br Msn/E-mail:celo.michels@hotmail.com xHarbour 1.2 + Fwh 106 + Bcc 5.82 + SQLRDD + Mate. Editado por - Kbelo on 26/08/2011 17:49:27 Quote Link to comment Share on other sites More sharing options...
sambomb Posted August 26, 2011 Report Share Posted August 26, 2011 Coloque as declarações completas RCA Sistemas - Itaocara - RJ Quote Link to comment Share on other sites More sharing options...
Kbelo Posted August 26, 2011 Author Report Share Posted August 26, 2011 citação:Coloque as declarações completas RCA Sistemas - Itaocara - RJ id=quote>id=quote>Bom ta tudo ali ::xml:cName := "cUF" ::xml:cData := "SC" ::nota:SetCampo(::xml:cName, ::xml:cData) *************** METHOD setCampo(campo, Valor) Class NfeNota local x := "" x := "::" + campo + " := " + valor y := &x //aqui da erro id=code>id=code>Marcelo Michels E-mail:marcelo@folksistemas.com.br Msn/E-mail:celo.michels@hotmail.com xHarbour 1.2 + Fwh 106 + Bcc 5.82 + SQLRDD + Mate. Quote Link to comment Share on other sites More sharing options...
CleitonSH Posted August 26, 2011 Report Share Posted August 26, 2011 ::xml:cName := "cUF" ::xml:cData := "SC" ::nota:SetCampo(::xml:cName, ::xml:cData) *************** METHOD setCampo(campo, Valor) Class NfeNota local x := "" ***** x := "::" + campo + " := " + valor x := campo + " := " + valor y := &x //aqui da erro Cleiton FWH906+xHarbour, MySql, WorkShop, PellesC, FW20d+Clipper5.2+Clip53b Quote Link to comment Share on other sites More sharing options...
Kbelo Posted August 26, 2011 Author Report Share Posted August 26, 2011 tem que ter :: propriedade da classe. Marcelo Michels E-mail:marcelo@folksistemas.com.br Msn/E-mail:celo.michels@hotmail.com xHarbour 1.2 + Fwh 106 + Bcc 5.82 + SQLRDD + Mate. Quote Link to comment Share on other sites More sharing options...
Erciley Junior Posted August 27, 2011 Report Share Posted August 27, 2011 kbelo, não dá pra usar :: com o macro & jogue o :: em uma variável, assim: var_kbelo:=Self -------------------- ::xml:cName := "cUF" //cUF é uma propriedade da sua classe? achei estranho isso ::xml:cData := "SC" ::nota:SetCampo(::xml:cName, ::xml:cData) *************** METHOD setCampo(campo, Valor) Class NfeNotalocal LOCAL obj LOCAL x LOCAL y obj:=Self //Isso dá certo x := "obj:" + campo + " := " + valor //cUF receberá SC aqui y := &x //Y acabará recebendo "SC", o mesmo conteúdo que está em ::cUF eu acho que isso dá certo, é só você jogar o :: em uma variável (var_kbelo:=Self) e depois utilizar esta variável como quiser (utilizando macro). Opinião: não sei oq está fazendo, mas ACHO que você está inventando demais, tente simplificar isso cara, sei lá ^^ Erciley Junior FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY Quote Link to comment Share on other sites More sharing options...
Kbelo Posted August 27, 2011 Author Report Share Posted August 27, 2011 cara bão to inventando não. Vi todo mundo fazer importação de xml e faz um monte de voltas. Criando varias funções e tal. ta complicado agora mas veja que uso 3 linhas e atribuo todos os campos sem duplicidade. Fica muito mais enxuto. Mas quanto a sua dica eu sonhei com isso hoje. KKKKK Ja to sonhando com a solução to ficando é doido. Mas só pra constar funciona. Vlw. Marcelo Michels E-mail:marcelo@folksistemas.com.br Msn/E-mail:celo.michels@hotmail.com xHarbour 1.2 + Fwh 106 + Bcc 5.82 + SQLRDD + Mate. Quote Link to comment Share on other sites More sharing options...
sambomb Posted August 29, 2011 Report Share Posted August 29, 2011 Quando citei todas as declarações é de todas as chamadas do primeiro ponto até o resultado final... Pelo visto você tem várias chamadas de objetos diferentes para chegar ao resultado final... Lembre que :: é traduzido para Self e não pode ser utilizado fora da classe de origem, então você teria que utilizar o Self e passar ele por parâmetro. RCA Sistemas - Itaocara - RJ Quote Link to comment Share on other sites More sharing options...
qiinfo Posted August 29, 2011 Report Share Posted August 29, 2011 Bom dia Marcelo, Talvez usando "eval" você consiga fazer isto. Veja um exemplo abaixo funcionando em harbour. function main local a, b, c := 10 a := &( "{ |x| b := x }" ) ? eval( a, c ) ? a ? b ? c return NIL id=code>id=code>T+ Rossine Harbour, Harbour, Harbour -> 3 vezes Harbour Quote Link to comment Share on other sites More sharing options...
Kbelo Posted August 29, 2011 Author Report Share Posted August 29, 2011 citação:Quando citei todas as declarações é de todas as chamadas do primeiro ponto até o resultado final... Pelo visto você tem várias chamadas de objetos diferentes para chegar ao resultado final... Lembre que :: é traduzido para Self e não pode ser utilizado fora da classe de origem, então você teria que utilizar o Self e passar ele por parâmetro. RCA Sistemas - Itaocara - RJ id=quote>id=quote>é tudo dentro da classe. Por isso :: resumindo o que queria era fazer &variavel e essa variavel ser uma propriedade da classe, ou seja, possuir o :: Marcelo Michels E-mail:marcelo@folksistemas.com.br Msn/E-mail:celo.michels@hotmail.com xHarbour 1.2 + Fwh 106 + Bcc 5.82 + SQLRDD + Mate. Quote Link to comment Share on other sites More sharing options...
Kbelo Posted August 29, 2011 Author Report Share Posted August 29, 2011 citação:Bom dia Marcelo, Talvez usando "eval" você consiga fazer isto. Veja um exemplo abaixo funcionando em harbour. function main local a, b, c := 10 a := &( "{ |x| b := x }" ) ? eval( a, c ) ? a ? b ? c return NIL id=code>id=code>T+ Rossine Harbour, Harbour, Harbour -> 3 vezes Harbour id=quote>id=quote>Tentei dessa forma tambem mas deu o mesmo problema de self não existe. Mas como viram se atribuir ante funciona. Marcelo Michels E-mail:marcelo@folksistemas.com.br Msn/E-mail:celo.michels@hotmail.com xHarbour 1.2 + Fwh 106 + Bcc 5.82 + SQLRDD + Mate. Quote Link to comment Share on other sites More sharing options...
sambomb Posted August 29, 2011 Report Share Posted August 29, 2011 não passe :: use Self RCA Sistemas - Itaocara - RJ Quote Link to comment Share on other sites More sharing options...
Kbelo Posted August 29, 2011 Author Report Share Posted August 29, 2011 Galera é mais facil que pensei. campo := "cUF" valor := "29" //aqui é o codigo. ::&campo := &valor id=code>id=code>Marcelo Michels E-mail:marcelo@folksistemas.com.br Msn/E-mail:celo.michels@hotmail.com xHarbour 1.2 + Fwh 106 + Bcc 5.82 + SQLRDD + Mate. 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.