[Gambas-user] How to use the WITH / END WITH safe
ron
ronstk at ...239...
Thu Apr 8 14:07:13 CEST 2004
May be a silly question
Example :
WITH hButton
.Text = Cstr("Cancel" & 1/0 )
END WITH
is equivalent to
hButton.Text = Cstr( "Cancel" & 1/0 )
It is the bug VB has in my point of view.
The WITH creates a reference to the hButton and allocate memory for it
The END WITH stops the dot reference (.Text) and removes the reference
and free the memory used for it.
In the case of VB a error leaves the procedure and did
not free the memory. Here for the example forced by divide by zero
In VB you should use a construction like next to trap this miss behavior.
ON Error Goto WithAbort
WITH hButton
.Text = Cstr("Cancel" & 1/0 )
WithAbort::
' free memory with next END
END WITH
I like to use the WITH a lot for example to set up controls in code.
WITH Columnview1
.color
.columns
.Height
. the other position and dimensions
END WITH
It is now easy to change the object name instead without the WITH
or even use the same code for a stack of ColumnViews
Second pro is you do not need to type the name over and over.
My question is: does gambas free used WITH references on exit of the procedure
or must I use the same trick as VB needs?
Ron
More information about the User
mailing list