# Testing for Nil

**URL:** <https://forum.xojo.com/t/testing-for-nil/57262>\
**Category:** General\
**Created:** [September 21, 2020, 4:34pm UTC](https://forum.xojo.com/t/testing-for-nil/57262 "2020-09-21T16:34:43Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Clifford\_Coulter](https://forum.xojo.com/user_avatar/forum.xojo.com/clifford_coulter/32/711_2.png) [@Clifford\_Coulter](https://forum.xojo.com/u/Clifford_Coulter)\
**Post date:** [September 21, 2020, 4:34pm UTC](https://forum.xojo.com/t/testing-for-nil/57262/1 "2020-09-21T16:34:43Z")

</div>

Looks like I’m starting out in the ditch this morning. What might be wrong with testing for nil in this code. Test array is a property TestArry(10)

var day as integer

For day = 1 To 10  
If TestArray(day) = Nil Then  
// do something  
End  
Next

---

<div class="post-metadata">

**Author:** ![Mike\_Cotrone](https://forum.xojo.com/user_avatar/forum.xojo.com/mike_cotrone/32/19940_2.png) [@Mike\_Cotrone](https://forum.xojo.com/u/Mike_Cotrone)\
**Post date:** [September 21, 2020, 4:37pm UTC](https://forum.xojo.com/t/testing-for-nil/57262/2 "2020-09-21T16:37:29Z")

</div>

What type is TestArray()?

---

<div class="post-metadata">

**Author:** ![Clifford\_Coulter](https://forum.xojo.com/user_avatar/forum.xojo.com/clifford_coulter/32/711_2.png) [@Clifford\_Coulter](https://forum.xojo.com/u/Clifford_Coulter)\
**Post date:** [September 21, 2020, 4:37pm UTC](https://forum.xojo.com/t/testing-for-nil/57262/3 "2020-09-21T16:37:58Z")

</div>

Integer. The error is :  
Type mismatch error. Expected Integer, but got Nil  
'If TestArray(day) = Nil Then

---

<div class="post-metadata">

**Author:** ![Mike\_Cotrone](https://forum.xojo.com/user_avatar/forum.xojo.com/mike_cotrone/32/19940_2.png) [@Mike\_Cotrone](https://forum.xojo.com/u/Mike_Cotrone)\
**Post date:** [September 21, 2020, 4:39pm UTC](https://forum.xojo.com/t/testing-for-nil/57262/4 "2020-09-21T16:39:33Z")

</div>

Integer won’t / can’t be nil.

Are you pre-populating this array? If so then use -1 as a (nil as the original intended target) so you can test for -1 instead of NIL.

Something like this?

```
    Var testArray() as Integer = Array(0,0,2,3,4,5,6,7,8,9)
    var day as integer

    For day = 0 to TestArray.LastRowIndex
      
      Var thisEntryInt as Integer = TestArray(day)
      
      If thisEntryInt <> 0 Then
        Txt_Output_Stream.WriteLine “0”
      Else
        Txt_Output_Stream.WriteLine Str(RainSensorArray(day))
      End

    Next

```

NIL is a state that an object (class) when you instantiate it.  
[https://documentation.xojo.com/api/language/nil.html](https://documentation.xojo.com/api/language/nil.html)

HTH,  
Mike

---

<div class="post-metadata">

**Author:** ![Kem\_Tekinay](https://forum.xojo.com/user_avatar/forum.xojo.com/kem_tekinay/32/154_2.png) [@Kem\_Tekinay](https://forum.xojo.com/u/Kem_Tekinay)\
**Post date:** [September 21, 2020, 4:46pm UTC](https://forum.xojo.com/t/testing-for-nil/57262/5 "2020-09-21T16:46:45Z")

</div>

Or make it a Variant array where the elements can be Nil.

(But I like Mike’s suggestion better if there is some value you can test against that would adequately represent “nil”.)

---

<div class="post-metadata">

**Author:** ![Clifford\_Coulter](https://forum.xojo.com/user_avatar/forum.xojo.com/clifford_coulter/32/711_2.png) [@Clifford\_Coulter](https://forum.xojo.com/u/Clifford_Coulter)\
**Post date:** [September 21, 2020, 4:53pm UTC](https://forum.xojo.com/t/testing-for-nil/57262/6 "2020-09-21T16:53:37Z")

</div>

Interesting.

You read my mind. I wanted to save 365 elements in a text file which are rain totals for each day. Then I could associate the position in the array with a day of year. Some days would be blank. This was my thinking which can often be flawed:

For day = 1 To 365  
If RainSensorArray(day)= Nil Then  
Txt\_Output\_Stream.WriteLine “0”  
Else  
Txt\_Output\_Stream.WriteLine Str(RainSensorArray(day))  
End  
Next

---

<div class="post-metadata">

**Author:** ![Clifford\_Coulter](https://forum.xojo.com/user_avatar/forum.xojo.com/clifford_coulter/32/711_2.png) [@Clifford\_Coulter](https://forum.xojo.com/u/Clifford_Coulter)\
**Post date:** [September 21, 2020, 4:57pm UTC](https://forum.xojo.com/t/testing-for-nil/57262/7 "2020-09-21T16:57:38Z")

</div>

Kim, your Idea was the easy fix for my situation. Both thoughts mentioned were important to understand the error I was getting. Thanks

---

<div class="post-metadata">

**Author:** ![Mike\_Cotrone](https://forum.xojo.com/user_avatar/forum.xojo.com/mike_cotrone/32/19940_2.png) [@Mike\_Cotrone](https://forum.xojo.com/u/Mike_Cotrone)\
**Post date:** [September 21, 2020, 4:58pm UTC](https://forum.xojo.com/t/testing-for-nil/57262/8 "2020-09-21T16:58:02Z")

</div>

The issue will be for you that if it’s a blank string or something it will be converted to an integer of 0.

Is the original source of your data a String or integer 100% end to end?

---

<div class="post-metadata">

**Author:** ![Tim\_Parnell](https://forum.xojo.com/user_avatar/forum.xojo.com/tim_parnell/32/161_2.png) [@Tim\_Parnell](https://forum.xojo.com/u/Tim_Parnell)\
**Post date:** [September 21, 2020, 4:58pm UTC](https://forum.xojo.com/t/testing-for-nil/57262/9 "2020-09-21T16:58:42Z")

</div>

Arguably, shouldn’t a day with no value actually have “0” rainfall? That seems to make sense to me.

---

<div class="post-metadata">

**Author:** ![Clifford\_Coulter](https://forum.xojo.com/user_avatar/forum.xojo.com/clifford_coulter/32/711_2.png) [@Clifford\_Coulter](https://forum.xojo.com/u/Clifford_Coulter)\
**Post date:** [September 21, 2020, 5:00pm UTC](https://forum.xojo.com/t/testing-for-nil/57262/10 "2020-09-21T17:00:31Z")

</div>

> [@Mike\_Cotrone](#):
>
> Integer won’t / can’t be nil.
> 
> Are you pre-populating this array? If so then use -1 as a (nil as the original intended target) so you can test for -1 instead of NIL.
> 
> Something like this?
> 
> ```auto
> Var testArray() as Integer = Array(0,-1,2,3,4,5,6,7,8,9)
> var day as integer
> 
> For day = 0 to TestArray.LastRowIndex
>   
> Var thisEntryInt as Integer = TestArray(day)
>   
> If thisEntryInt <> -1 Then
> // do something
> End
> Next
> 
> ```

Yes, and that is why I’m setting the element to “0” if no value is found.

---

<div class="post-metadata">

**Author:** ![Mike\_Cotrone](https://forum.xojo.com/user_avatar/forum.xojo.com/mike_cotrone/32/19940_2.png) [@Mike\_Cotrone](https://forum.xojo.com/u/Mike_Cotrone)\
**Post date:** [September 21, 2020, 5:00pm UTC](https://forum.xojo.com/t/testing-for-nil/57262/11 "2020-09-21T17:00:56Z")

</div>

Excellent then! I also updated my example above to match that.

---

<div class="post-metadata">

**Author:** ![Clifford\_Coulter](https://forum.xojo.com/user_avatar/forum.xojo.com/clifford_coulter/32/711_2.png) [@Clifford\_Coulter](https://forum.xojo.com/u/Clifford_Coulter)\
**Post date:** [September 21, 2020, 5:16pm UTC](https://forum.xojo.com/t/testing-for-nil/57262/12 "2020-09-21T17:16:02Z")

</div>

I think there would be a flaw with that code. I do not wish to overwrite any good values in the array with “0” since I save/update the array every day to the HD. It needs to maintain all existing values. I need to test it yet but changing the array to a variant may be answer for my code.

---

<div class="post-metadata">

**Author:** ![Mike\_Cotrone](https://forum.xojo.com/user_avatar/forum.xojo.com/mike_cotrone/32/19940_2.png) [@Mike\_Cotrone](https://forum.xojo.com/u/Mike_Cotrone)\
**Post date:** [September 21, 2020, 5:20pm UTC](https://forum.xojo.com/t/testing-for-nil/57262/13 "2020-09-21T17:20:12Z")

</div>

Just set to -1 if not valid – Then you will be solid unless that is an issue then the Variant route is solid also.

---

<div class="post-metadata">

**Author:** ![Clifford\_Coulter](https://forum.xojo.com/user_avatar/forum.xojo.com/clifford_coulter/32/711_2.png) [@Clifford\_Coulter](https://forum.xojo.com/u/Clifford_Coulter)\
**Post date:** [September 21, 2020, 5:24pm UTC](https://forum.xojo.com/t/testing-for-nil/57262/14 "2020-09-21T17:24:34Z")

</div>

Thanks Mike, it’s all good to help with the steep learning curve I’m on.

---

<div class="post-metadata">

**Author:** ![Emile\_Schwarz](https://forum.xojo.com/letter_avatar_proxy/v4/letter/e/90ced4/32.png) [@Emile\_Schwarz](https://forum.xojo.com/u/Emile_Schwarz)\
**Post date:** [September 21, 2020, 6:02pm UTC](https://forum.xojo.com/t/testing-for-nil/57262/15 "2020-09-21T18:02:11Z")

</div>

…and do not forget the leap year… day !

---

<div class="post-metadata">

**Author:** ![Clifford\_Coulter](https://forum.xojo.com/user_avatar/forum.xojo.com/clifford_coulter/32/711_2.png) [@Clifford\_Coulter](https://forum.xojo.com/u/Clifford_Coulter)\
**Post date:** [September 21, 2020, 6:15pm UTC](https://forum.xojo.com/t/testing-for-nil/57262/16 "2020-09-21T18:15:04Z")

</div>

Trouble maker! 🤨

---

<div class="post-metadata">

**Author:** ![Mike\_Cotrone](https://forum.xojo.com/user_avatar/forum.xojo.com/mike_cotrone/32/19940_2.png) [@Mike\_Cotrone](https://forum.xojo.com/u/Mike_Cotrone)\
**Post date:** [September 21, 2020, 6:17pm UTC](https://forum.xojo.com/t/testing-for-nil/57262/17 "2020-09-21T18:17:38Z")

</div>

Convenient 🙂

> [@How to check for leap year](https://forum.xojo.com/t/how-to-check-for-leap-year/57263/16):
>
> Well, depending on the application you can have historical dates before 1901, and future dates of 2100+. So very much depends on the application. I plan on retiring before worrying about years beyond 9999, so will let @Kem Tekinay resolve those. As somebody once said, “I plan on being immortal. So far, so good.”

---

<div class="post-metadata">

**Author:** ![Clifford\_Coulter](https://forum.xojo.com/user_avatar/forum.xojo.com/clifford_coulter/32/711_2.png) [@Clifford\_Coulter](https://forum.xojo.com/u/Clifford_Coulter)\
**Post date:** [September 21, 2020, 6:25pm UTC](https://forum.xojo.com/t/testing-for-nil/57262/18 "2020-09-21T18:25:52Z")

</div>

Actually, I don’t think it’s an issue since the array will be 366 days and a new array is only triggered when the system clock changes the year. I am only interested in daily totals to override my watering system and a yearly total for grins. Not a 366th day, who cares it’s “0”

---

<div class="post-metadata">

**Author:** ![Emile\_Schwarz](https://forum.xojo.com/letter_avatar_proxy/v4/letter/e/90ced4/32.png) [@Emile\_Schwarz](https://forum.xojo.com/u/Emile_Schwarz)\
**Post date:** [September 21, 2020, 6:29pm UTC](https://forum.xojo.com/t/testing-for-nil/57262/19 "2020-09-21T18:29:58Z")

</div>

No, experienced oldster who forgot things everytime 😉

---

<div class="post-metadata">

**Author:** ![Emile\_Schwarz](https://forum.xojo.com/letter_avatar_proxy/v4/letter/e/90ced4/32.png) [@Emile\_Schwarz](https://forum.xojo.com/u/Emile_Schwarz)\
**Post date:** [September 21, 2020, 6:37pm UTC](https://forum.xojo.com/t/testing-for-nil/57262/20 "2020-09-21T18:37:50Z")

</div>

> [@Clifford\_Coulter](#):
>
> Trouble maker!

Now, think at the Jewish Calendar (new year occured to them (Roch Hachana ended yesterday) and at the muslim calendar. I do not even talk about the different dates in use in India.

That would be trouble making 😉

[Next page](https://forum.xojo.com/t/testing-for-nil/57262.md?page=2)
