如何访问lazarus中的用户目录?

时间:2014-07-27 14:19:28

标签: lazarus

我正在尝试打开文件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); 

1 个答案:

答案 0 :(得分:4)

这很正常。 “〜”是 shell 级别概念,因此需要单独的shell调用来进行评估。 Assignfile直接调用内核接口,因此不理解这一点。

使用getenvironmentvariable('HOME')从环境中获取homedir。更好的是,getuserdir允许以跨平台的方式获得主目录。