2013-01-21 32 views
5

Đối với cuộc sống của tôi, tôi không thể nối hai (/ ba) chuỗi. Đây là một số mã tôi đã cố gắng:Delphi XE3 - Không thể nối các chuỗi

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

Tất cả những ví dụ luôn trả lại kết quả tương tự:

C: \ Users \ -username-

Không bao giờ:

C: \ Users \ -username- \ Downloads \ done.txt

Tôi đang làm gì sai ở đây?

+2

Kết nối chuỗi Delphi hoạt động. Mã bạn trình bày không cho đầu ra bạn nói. Trình bày một chương trình đầy đủ để tái tạo hành vi. –

Trả lời

16

Đoán của tôi là biến số Username của bạn có chứa # 0 ở cuối và bạn đang xuất biến đó thành một hàm API Windows nhất định. Ví dụ đoạn mã sau sẽ dẫn đến hành vi sai trái này:

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; 

Đề nghị của tôi là để kiểm tra giá trị của biến Username của bạn và loại bỏ thêm cáC# 0 ở cuối nếu có một số.

+0

Cảm ơn, đó là một ký tự chấm dứt null ở cuối nó. Tôi sẽ chấp nhận điều này như là câu trả lời khi tôi có thể (2 phút). – user1580845

+0

Bạn được chào đón! – TLama

+7

Làm việc tốt @TLama! –

Các vấn đề liên quan