Add FOXOBJECT clause to FOR EACH to get VFP object reference instead of COM
FOR EACH loItem IN ColItensRomaneio FOXOBJECT
...
>
>I need to put in an array the properties of an object using [amembers], but the result is inconsistent. I put some code in a program just to demonstrate:
>
>LOCAL nlines
>
>ColItensRomaneio=NEWOBJECT("Collection")
>objItemRomaneio1=CREATEOBJECT("empty")
>
>ADDPROPERTY(objItemRomaneio1,'EANCODE')
>ADDPROPERTY(objItemRomaneio1,'Produto')
>ADDPROPERTY(objItemRomaneio1,'qtd')
>ADDPROPERTY(objItemRomaneio1,'preco')
>ADDPROPERTY(objItemRomaneio1,'total')
>ADDPROPERTY(objItemRomaneio1,'prodID')
>ADDPROPERTY(objItemRomaneio1,'romaneioID')
>
>produtoID="37745"
>eancode="9990000377459"
>preco=10.20
>qtd=1
>Produto="CAPRI ELEN"
>romaneioID='109871'
>
>
>ObjItemRomaneio1.EANCODE= eancode
>ObjItemRomaneio1.Produto= produto
>ObjItemRomaneio1.qtd= qtd
>ObjItemRomaneio1.preco= preco
>ObjItemRomaneio1.total=ObjItemRomaneio1.qtd*ObjItemRomaneio1.preco
>ObjItemRomaneio1.prodID=produtoid
>ObjItemRomaneio1.romaneioID=romaneioID
>ColItensRomaneio.Add(ObjItemRomaneio1,ObjItemRomaneio1.prodID)
>
>SET STEP ON
>nlines=ColItensRomaneio.Count
>
>FOR EACH loItem IN ColItensRomaneio
> n = amembers(aTeste,loItem,1)
> =MESSAGEBOX(n)
>NEXT
>
>FOR EACH loItem IN ColItensRomaneio
> =MESSAGEBOX(loItem.EANCODE)
> n = amembers(aTeste,loItem,1)
> =MESSAGEBOX(n)
>NEXT
>
>In the first FOR..EACH LOOP the value I get was 0(zero). In the next was 1(One). The difference is only a messagebox.The correct value I expect is 7(seven)
>If I use ObjItemRomaneio1 directly the result is 7(OK).
>
>Aren't loItem and ObjItemRomaneio1 references to the same thing?
>
>Could someone run this piece of code to give me the answers one gets?
>
>TIA
--sb--