while(i > 0)and(p[i] in ['a'..'y','A'..'?','a'..'z','A'..'Z'])do
...
while(i < Length(p))and(p[i] in ['a'..'y','A'..'?','a'..'z','A'..'Z'])do
...
while(i > 0)and(p[i] in ['а'..'я','А'..'Я','a'..'z','A'..'Z'])do
...
while(i < Length(p))and(p[i] in ['а'..'я','А'..'Я','a'..'z','A'..'Z'])do
...
Проверил дома на Win10x64 -- работает. А вот на работе, на Win7x64 -- не работает, хотя я добавил в оригинал только твои подписанные правки, а вот диапазоны не менял.