Problem with Harbour Class scopes
Posted: Fri Jul 01, 2011 9:35 am
Hi Everyone,
Please test the following code and see if you can perhaps identify what is wrong.
Please test the following code and see if you can perhaps identify what is wrong.
#include "minigui.ch"
#include "hbclass.ch"
*------------------------------------------------------------------------------*
Function Main()
*------------------------------------------------------------------------------*
DEFINE WINDOW Win_1 ;
AT 0,0 ;
WIDTH 400 ;
HEIGHT 400 ;
TITLE 'Test' ;
MAIN
DEFINE MAIN MENU
DEFINE POPUP 'File'
MENUITEM 'Test' ACTION Test()
END POPUP
END MENU
END WINDOW
MAXIMIZE WINDOW Win_1
ACTIVATE WINDOW Win_1
Return
*------------------------------
FUNCTION test
local oVar:=tVar():new(),aTemp,n
oVar:add("a",1)
oVar:add("b",1)
oVar:add("c",1)
oVar:add("d",1)
atemp:=ovar:list()
msgInfo(str(len(aTemp)),"a 4 Expected")
ovar:delete("c")
atemp:=ovar:list()
msgInfo(str(len(aTemp)),"Why a 3?")
return
*------------------------------
CREATE CLASS tVar
DATA aVars INIT {}
EXPORT:
Method init()
METHOD add(cVar,xVal)
METHOD delete(cVar)
METHOD list() INLINE ::aVars
ENDCLASS
METHOD init() CLASS tVar
return self
METHOD add(cVar,xVal) CLASS tvar
aAdd(::aVars,{upper(allTrim(cVar)),xVal})
return self
METHOD delete(cVar)
local n,lDeleted:=.f.
cVar:=upper(allTrim(cVar))
for n:=1 to len(::aVars)
if ::aVars[n,1]==cVar
aDel(::aVars,n)
lDeleted:=.t.
exit
endif
next n
if ldeleted
aSize(::aVars,len(::aVars)-1)
endif
return lDeleted
*--------------