5

私の人生では、2 つ (または 3 つ) の文字列を連結することはできません。これらは私が試したいくつかのコードです:

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:\Users\-ユーザー名-

一度もない:

C:\Users\-username-\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 に答える