using the array of object, as you suggested, seems to have fixed it. I'll do some more testing and let you know. Thank you very much.
Bear in mind that, whilst the array element is an object that is a string, it could potentially be any other type of object too. At compile time, the compiler does not know what type the array element object is, and if you want to use a string method on it, then you will need to cast it to a String first, eg:
'BoatList.Get(1) 'returns the second array of objects (index 1) from the list of boats
'BoadList.Get(1)(2) 'returns third object (index 2) from the array of objects
'BoatList.Get(1)(2).ToUpperCase.Contains("DIESEL") 'won't compile because the compiler does not know what type of Object it is and thus what methods are available
Dim S2 As String = BoatList.Get(1)(2) 'B4A/Java can/will convert Object to String (especially if Object is a String... but it could be an Int, Float, Boolean etc too)
Log( S2.ToUpperCase.Contains("DIESEL") ) 'no worries - compiler knows what methods are available for a String
Some languages can leave the
what-methods-does-this-object-have question* to be resolved when the program runs, but there is a performance hit, especially if the type of the object can change from loop to loop.
*closely followed by the and-where-the-heck-are-they question ;-)