pchar - указатель, который может быть неявно преобразован в строку
array of char - массив char, который тоже может быть неявно преобразован в строка (неявных переход от array [] of char к строке был придуман именно в delphi, в TP такое нельзя было делать).
как итог - выражение само по себе скорее сравнение строк, а не работа с указателями! 
или в FPC есть приоритет выборки "неявных" типов? =)
теперь я понимаю, почему TC вызывает подсознательное отторжение и я пользуюсь FAR-ом  
 
 кстати, Gishler пишет "I have many 100s of these constructs in my code, so I can't simply convert them all.", то скорее всего такая проблема возникнет, только с неявными строками. А другие места заработают правильно. и потом, раз уж он по $100 за плагин платит! мог бы финансы на коррекцию кода направить  

 ... хотя легко чужие деньги считать  
 
 имхо, правильный код такой:
- Код: Выделить всё
- var i:integer; 
 buffer:array[0..259] of char;
 begin
 strcopy(buffer,'this is a test');
 i:=0;
 while (i<length(buffer)) and (buffer[i]<>#0) do begin
 // do something, e.g. if buffer[i]=' ' then buffer[i]:=#9;
 inc(i);
 end;
 end;
 
2 Nik,  отпишись пожалуйста про sellexecute