Leledumbo, Thank you very much, your code works perfectly, I made a stupid mistake which prevented it working.
I think I understand how your code works now; strscan returns a pointer to the first occurence of a null, this then gets copied to the stringlist, and the line P:= T+1 reassigns P to the point after where the first null was found? thus throwing away the bit already copied?
What I don't understand is, why does the line Result.Add(StrPas(P)); not copy the whole of P to the string? is it because strpas just copies the characters upto where the first null is found?
Many thanks to everybody else for your help and suggestions.
Albert