Nein, es würde nur das erste Vorkommen von "&" löschen.
Jup, du hast recht.
s := s.Replace('&&', #1).Replace('&', '').Replace(#1, '&')
Das ist schon richtig gut

, aber die doppelten sollten ja erhalten bleiben.
also :
s := s.Replace('&&', #1).Replace('&', '').Replace(#1, '&&')
.
Beachten, #1 ist kein String!
Sondern
ASCII Nummer 1. Also unwahrscheinlich dass das jemand aus versehen eingetippt hat.