2013-01-21 55 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! –