>>41
function GetAnsiStr(S :string) :string;
var
 i,j,L: Integer;
 P : PChar;
begin
 if S = '' then Exit;
 L := Length(S);  i := 1; j := 0;
 P := StrAlloc(L+1);
 while i <= L do
 begin
  if (S[i] in [#$81..#$9F, #$E0..#$FC]) or (S[i] = #13) then
  begin //全角文字(と改行コード)の処理
   P[j] := S[i];  P[j+1] := S[i+1];
   Inc(i,2);  Inc(j,2);
  end else //アスキー文字の処理(読み飛ばす)
   Inc(i);
 end;
 P[j] := #0;
 Result := string(P);
 StrDispose(P);
end;

使用例
 Memo1.Lines.Text := GetAnsiStr(Memo1.Lines.Text);
 いうまでもないがアスキー文字列だけの行は空行(改行コードだけ)になる。
 そういうとき空行も不要というならちょっと上記のコードを改造すればいい。