This is an ideal application for an INI file, where you look for data based on a key. You can reduce the read/write to two lines of code:
 Code:
$Array = Split(ReadProfileString('MyData.ini', 'USERDATA', USERID), ';')

to read your ";" delimited string into an array, and
 Code:
$ = WriteProfileString('MyData.ini', 'USERDATA', @USERID, Join($Array, ';'))

to write the array back to a delimited string. The resulting file will look like this for user JSmith:
 Code:
[USERDATA]
JSmith=username;path to myfiles;size;networkpath;size;date last backup


Of course, you can extend this concept and write individual values by using the UserID as the section. To Write:
 Code:
$ = WriteProfileString('MyData.ini', @USERID, 'User', $UserName)
$ = WriteProfileString('MyData.ini', @USERID, 'Path', $Path2MyFiles)
$ = WriteProfileString('MyData.ini', @USERID, 'Size1', $DSize)
$ = WriteProfileString('MyData.ini', @USERID, 'NetPath', $NetPath)
$ = WriteProfileString('MyData.ini', @USERID, 'Size2', $NSize)
$ = WriteProfileString('MyData.ini', @USERID, 'Backup', $LastBackup)

which allows you to directly read the user's values with:
 Code:
$UserName = ReadProfileString('MyData.ini', @USERID, 'User')
$Path2MyFiles = ReadProfileString('MyData.ini', @USERID, 'User')
$DSize = ReadProfileString('MyData.ini', @USERID, 'User')
$NetPath = ReadProfileString('MyData.ini', @USERID, 'User')
$NSize = ReadProfileString('MyData.ini', @USERID, 'User')
$LastBackup = ReadProfileString('MyData.ini', @USERID, 'User')

In this manner, you don't need to deal with (or worry about mangling) the data from other users. Think of INI files as a simple database with records (sections) and fields (section values).

Glenn
_________________________
Actually I am a Rocket Scientist! \:D