Эхех... думать надо как следует перед тем как давать советы. Или не давать советов. Прошу прощения.

names.fields[i]: POINTER TO ARRAY OF CHAR
name: ARRAY ? OF CHAR

При сравнении ARRAY OF CHAR, выборка строки $ применяется не явно:
names.fields[i]^ = nameвместоnames.fields[i]^$ =name$

Выборка строки подразумевает разыменовывание:names.fields[i]$вместоnames.fields[i]^$.

Но не то и другое сразу... Подробнее см. Сообщение о языке, 8.1