Delphi XE3 - 无法连接字符串

use*_*845 5 delphi concat delphi-xe3

对于我的生活,我不能连接两个(/三)字符串.这些是我尝试过的一些代码:

dir := 'C:\Users\' + Username + '\Downloads\done.txt'; //"Username" is the computer's current username.
//another example vvv
dir := 'C:\Users\' + Username;
dir := dir + '\Downloads\done.txt';
//last example vvv
dir := Concat('C:\Users\', Username, '\Downloads\done.txt');
Run Code Online (Sandbox Code Playgroud)

所有示例始终返回相同的结果:

C:\用户\ -username-

决不:

C:\ Users \用户-username- \下载\ done.txt

我在这做错了什么?

TLa*_*ama 16

我的猜测是你的Username变量在其末尾包含#0,并且你将该变量输出到某个Windows API函数.例如,以下代码将导致这种不当行为:

procedure TForm1.Button1Click(Sender: TObject);
var
  Dir: string;
  Username: string;
begin
  Username := 'Username' + #0;
  Dir := Concat('C:\Users\', Username, '\Downloads\done.txt');
  ShowMessage(Dir);
end;
Run Code Online (Sandbox Code Playgroud)

我的建议是检查Username变量的值,如果有的话,最后删除额外的#0.

  • 一个更好的选择是找出为什么`Username`首先包含一个错误的`#0`字符并修复该逻辑. (9认同)
  • ..或者让RTL删除它`Concat('C:\ Users \',PChar(用户名),......); (6认同)