我正在尝试打开文件changelog.txt
,无论用户打开它,我都需要打开它。但它始终位于~/
目录中。访问该文件。这是我的代码:
procedure TForm1.FormCreate(Sender: TObject);
var myFile : TextFile;
line : string;
begin
AssignFile(myFile, '~/changelog.txt');
Reset(myFile);
while not Eof(myFile) do
begin
ReadLn(myFile, line);
Label3.Caption := (Label3.Caption + line + #13#10);
end;
CloseFile(myFile);
end;
它不起作用。但是,如果我用实际的用户名替换~
,它就可以了。但是,我无法知道将运行我的程序的每个用户的用户名。任何想法如何获得启动该程序的用户的用户名?谢谢!
Edit1:我试过这个,但它还包括一个新行:
RunCommand('/bin/bash',['-c','whoami'],user);
答案 0 :(得分:4)
这很正常。 “〜”是 shell 级别概念,因此需要单独的shell调用来进行评估。 Assignfile直接调用内核接口,因此不理解这一点。
使用getenvironmentvariable('HOME')从环境中获取homedir。更好的是,getuserdir允许以跨平台的方式获得主目录。