2013-01-21 34 views
5

对于我的生活,我不能连接两个(/三相)字符串。这些都是一些代码我曾尝试:德尔福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'); 

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

C:\用户\ -username-

从不:

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

我在这里做错了什么?

+2

德尔福字符串连接工程。您提供的代码不会提供您所说的输出。提出完整的方案来重现行为。 –

回答

16

我的猜测是,你Username变量包含#0于其终端及你outputing变量一定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结束时,如果有一些。

+0

谢谢,它在它的末尾是一个空终止符。我可以接受这个答案(2分钟)。 – user1580845

+0

不客气! – TLama

+7

好工作@TLama! –