如何将换行符放入 PChar 字符串中

How can I get line feed character into a PChar string

我正在使用 ShellExecute 调用本地电子邮件客户端并在电子邮件客户端中填充 mailto 地址、主题和正文。这是我用过的代码...

  HdrBdy := 'mailto: support@positonstudio.co.uk' +
                '?Subject=Test Message Subject' +
                '&Body=Positron Studio ' + fmIDEAbout.lblIDEVersion.caption +' '+ fmIDEAbout.lblBuildTarget.caption + #13+
                 CompInfo.SystemManufacturer + ' Model No. ' + CompInfo.SystemProductName  +#13+
                 'Processor ' + CompInfo.ProcessorName + ' OS Version ' + OSInfo.Description  +#13+
                '----------------------------------------------------------------------------------';

  ShellExecute(Self.Handle,
               nil,
               PChar(HdrBdy),
               nil,
               nil,
               SW_NORMAL);

这有效,但正文文本在电子邮件客户端中显示为单行。如何在邮件客户端中插入多行。

你快到了,你需要同时使用回车 return 和换行。

所以你需要 +#13+#10+ 而不是 +#13+ 或者你可以使用 +#13#10+

我怀疑您还需要对设置为 Body 值的字符串进行百分比编码,以便在 URL.

中正确传递它

您可以为此使用 TURLEncoding.Encode()

HdrBdy := 'mailto: support@positonstudio.co.uk' +
                '?Subject=Test Message Subject' +
                '&Body='+TURLEncoding.Encode('Positron Studio ' + fmIDEAbout.lblIDEVersion.caption +' '+ fmIDEAbout.lblBuildTarget.caption + #13#10+
                 CompInfo.SystemManufacturer + ' Model No. ' + CompInfo.SystemProductName  +#13#10+
                 'Processor ' + CompInfo.ProcessorName + ' OS Version ' + OSInfo.Description  +#13#10+
                '----------------------------------------------------------------------------------');