Delphi の TDdeClientConv と TDdeServerConv 間の文字列受け渡しでデフォルトコートページ以外の文字を含むとデータが破損して渡されてしまう (Unicodeにしか存在しない文字を使用したファイルパスを受け渡す等) 原因は Vcl.DdeMan が Unicode化されておらず ExecuteMacro関数の引数が PAnsiChar となっているため、UTF-8 の文字列を AnsiChar へ変換してから送信している Unicode版へ書き直すのが正しいのだろうが 自身のアプリケーション間であれば base64 でエンコードして送信、受信してデコードすればよい System.NetEncoding の TNetEncoding.Base64.Encode TNetEncoding.Base64.Decode デフォルトコートページ内で収まらない文字列のときだけエンコードする場合は、判定後に送信文字列にヘッダなどを付与する 判定関数(デフォルトエンコードして戻して比較) function IsDefaultCodePageCompatible(const S: string): Boolean; var EncodedBytes: TBytes; begin try EncodedBytes := TEncoding.default.GetBytes(S); Result := (S = TEncoding.default.GetString(EncodedBytes)); except on E: Exception do begin Result := False; end; end; end;