If UBOUND returns -1 then it's not an array.

The code looks okay, so beef up the code with more erro coecing like this:
code:
Break on

Dim $aUserArray[0]

$sUserText = "users.txt"

$iUserNum = 0
If Open(2, $sUserText, 2) = 0
Dim $aUserArray[0]
While $Error = 0
$sLine = ReadLine(2)
? 'line = '+$sLine
$error = @error
if $sLine <> ""
? 'Ubound = '+ubound($aUserArray)
ReDim preserve $aUserArray[UBound($aUserArray)+1]
$aUserArray[UBound($aUserArray)] = $sLine
endif
Loop
Close(2)
Endif

MessageBox(UBound($aUserArray), "debug", 0)

for $iCurrentNum = 0 TO UBound($aUserArray)
MessageBox($aUserArray[$iCurrentNum], "debug", 0)
next

_________________________
There are two types of vessels, submarines and targets.