Jump to content
Fivewin Brasil

& da erro com Classe(resolvido)


Kbelo

Recommended Posts

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites


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

Link to comment
Share on other sites

citação:

Coloque as declarações completas

sambomb.jpg

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.

Link to comment
Share on other sites

::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

FotoCleitonForun.jpg

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

sambomb.jpg

RCA Sistemas - Itaocara - RJ

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

sambomb.jpg

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...