5

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

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');

所有示例总是返回相同的结果:

C:\用户\-用户名-

绝不:

C:\Users\-用户名-\Downloads\done.txt

我在这里做错了什么?

4

1 回答 1

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;

我的建议是检查Username变量的值,如果有的话,最后删除多余的#0。

于 2013-01-21T18:26:23.413 回答