2013-01-21 9 views
5

Für das Leben von mir kann ich nicht zwei (/ drei) Strings verketten. Dies sind einige Codes ich versucht habe:Delphi XE3 - Strings können nicht verkettet werden

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

Alle Beispiele immer wieder zurückkehren das gleiche Ergebnis:

C: \ Benutzer \ -username-

Nie:

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

Was mache ich hier falsch?

+2

Delphi-String-Verkettung funktioniert. Der Code, den Sie präsentieren, gibt nicht die Ausgabe, die Sie sagen. Präsentieren Sie ein vollständiges Programm, um das Verhalten zu reproduzieren. –

Antwort

16

Meine Vermutung ist, dass Ihre Username Variable # 0 an seinem Ende enthält und Sie diese Variable auf eine bestimmte Windows API-Funktion ausgeben. Zum Beispiel führt der folgende Code zu diesem Fehlverhalten:

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; 

Mein Vorschlag ist, den Wert Ihrer Username Variable zu überprüfen und die zusätzliche # 0 am Ende entfernen, wenn es etwas ist.

+0

Danke, es war ein Null-Beendigungszeichen am Ende davon. Ich werde das als Antwort akzeptieren, wenn ich kann (2 Minuten). – user1580845

+0

Gern geschehen! – TLama

+7

Gute Arbeit @TLama! –