>>499
毎回ByteType呼ぶと重い。
1バイト文字のときに限り、ならこんな感じかね。

isSecondByte := false;
for i := 1 to Length(s) do
begin
 if isSecondByte then
  isSecondByte := false
 else
 if s[i] in LeadBytes then
  isSecondByte := true
 else
 if s[i] in ['A'..'Z', 'a'..'z', '0'..'9'] then
  s[i] := '#';
end;

重さを無視すれば WideStringに代入して回したほうがコードはシンプルになるね。