Delphi7,保存用户的更改或其他用户的信息/注释

use*_*565 -2 delphi exists save

在我的程序中,用户完成一个表单然后按下Submit.然后,创建文本文件或随机扩展文件,其中写入所有用户的信息.因此,每当用户运行应用程序表单时,它将检查是否存在具有所有信息的文件,然后复制信息并将其粘贴到表单中.但是,它由于某种原因不起作用(没有语法错误):

procedure TForm1.FormCreate(Sender: TObject);
var
  filedest: string;
  f: TextFile;
  info: array[1..12] of string;
begin
  filedest := ExtractFilePath(ParamStr(0)) + 'User\Identity\IdentityofMyself.txt';

  if FileExists(filedest) then
  begin
    AssignFile(f,filedest);
    Reset(f);

    ReadLn(info[1], info[2], info[3], info[4], info[5], info[6], info[7],
      info[8], info[9], info[10], info[11], info[12]);     

    Edit1.Text := info[1];
    Edit2.Text := info[2];
    ComboBox1.Text := info[3];            
    ComboBox5.Text := info[4];
    ComboBox8.Text := info[4];
    ComboBox6.Text := info[5];
    ComboBox7.Text := info[6];
    Edit3.Text := info[7];
    Edit4.Text := info[8];
    Edit5.Text := info[11];
    Edit6.Text := info[12];
    ComboBox9.Text := info[9];
    ComboBox10.Text := info[10];     

    CloseFile(f);                                           
  end
  else
  begin
    ShowMessage('File not found');
  end;

end;
Run Code Online (Sandbox Code Playgroud)

该文件存在,但它显示该消息File not found.我不明白.

And*_*and 5

我冒昧地为你格式化代码.你看到了差异(之前,之后)?另外,如果我是你,我会更好地命名控件.相反的Edit1,Edit2,Edit3等你可以使用eFirstName,eLastName,eEmailAddr等,否则就会成为PITA维护的代码,你将有可能混淆如ComboBox7ComboBox4.

您的代码的一个具体问题是这一行:

readln(info[1], info[2], info[3], info[4], info[5], info[6], info[7],
  info[8], info[9], info[10], info[11], info[12]);  
Run Code Online (Sandbox Code Playgroud)

你忘了指定文件f!

此外,在我格式化代码之前,end程序的最后一个缺失.您的实际代码中的块可能不正确,因此ShowMessage即使文件存在也会显示?(正确格式化代码的另一个原因......)

如果我遇到这个问题并想做一些快速调试,我会插入

ShowMessage(BoolToStr(FileExists(filedest), true));
Exit;
Run Code Online (Sandbox Code Playgroud)

就行了

filedest := ...
Run Code Online (Sandbox Code Playgroud)

只是为了看看返回的值FileExists(filedest)是什么.(当然,您也可以设置断点并使用调试器.)

如果你得到了false,你可能想知道世界上filedest究竟包含了什么:好吧,用上面这个替换上面的'调试代码':

ShowMessage(filedest);
Exit;
Run Code Online (Sandbox Code Playgroud)

然后使用Windows资源管理器(或者更好的是:命令提示符)来查看文件是否真的存在.