[Gambas-user] #11 and a bug in the editor

Benoit Minisini gambas at ...1...
Sun Aug 6 08:54:05 CEST 2006


On Sunday 06 August 2006 07:49, mike-nought at ...17... wrote:
> Hi Benoit, hi all.
>
> I am currently writing a quite large project (an ID3-Tagger) with the
> development version and discovered Gambas not to behave as it should at two
> points. Here is the function I wanted to use for merging several objects
> (of the same type), keeping those values which are same and resetting all
> others:
>
> PUBLIC FUNCTION merge(values AS Object[]) AS Object
>
>   DIM o AS Object
>   DIM i AS Variant
>   DIM x AS Boolean
>   DIM result AS Object
>   DIM t AS String
>   DIM v1 AS Variant
>   DIM v2 AS Variant
>
>   IF values.Count = 0 THEN RETURN NULL
>   t = Object.Type(values[0])
>
>   ' (1) this SELECT CASE should be replacable with result=New(t)
>   SELECT CASE t
>     CASE "CMPEGHeader"
>       result = NEW CMPEGHeader
>     CASE "CTag"
>       result = NEW CTag
>     CASE "CTagv1"
>       result = NEW CTagv1
>     CASE "CTagv2"
>       result = NEW CTagv2
>   END SELECT
>
>   FOR EACH i IN Classes[t].Symbols
>     FOR EACH o IN values
>       IF NOT x THEN
>         TRY Object.SetProperty(result, i, Object.GetProperty(o, i))
>         x = TRUE
>       ELSE
>         v1 = NULL
>         v2 = NULL
>         TRY v1 = Object.GetProperty(result, i)
>         TRY v2 = Object.GetProperty(o, i)
>         IF NOT (v1 = v2) THEN
>           TRY Object.SetProperty(result, i, "")
>         END IF
>       END IF
>     NEXT ' (2) interpreter jumps here after RETURN
>     x = FALSE
>   NEXT
>
>   RETURN result
>
> END
>
> I marked the location of both bugs(?) with (1) and (2).
>
> (1): Here a new instance of the type of the passed objects should be
> created, which was formerly possible through result=New(t) in this case.
> But now this doesn't work anymore, because the editor replaces New([...])
> with NEW ([...]) which I cannot use here.
>
> (2): This is an interesting bug. It causes a #11-error during runtime.
> Debugging this function stepwise, I discovered that everything works nicely
> until RETURN is reached. Instead of now returning the stuff, the
> Interpreter jumps back to the first NEXT (which I marked above), producing
> this #11-error.
>
> I don't know, if this bug is reproducable in any project, is anyone able to
> reproduce it? If not, I'll send you my application.
>
> Regards,
> Franz
>
> P.S. I'm from germany, please forgive me my bad english.

Please send the application (not on the mailing-list, directly to me). This 
way, I will be able to debug!

Regards,

-- 
Benoit Minisini





More information about the User mailing list