Delphi Tinifile.ReadString 和 PromptDataSource

Delphi Tinifile.ReadString and PromptDataSource

首先,点击button1,可以得到[section].[Key].Value

但如果通过 PromptDataSource()

的第二页 [...] 更改路径

然后下一次,点击button1,获取不到[section].[Key].Value

为什么???


Awe.dat

[Options]
DBConnection=Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=D:00.mdb;

Button1Click 的代码

procedure TForm1.Button1Click(Sender: TObject);
var
  Filename:string;
  DatFile:TiniFile;
  str:WideString;
  ConnectStr:WideString;
begin
  DatFile:=Tinifile.Create('.\Awe.dat');
  str:=DatFile.ReadString('Options','DBConnection','');
    ShowMessage(str+'-----------------');
  ConnectStr:=PromptDataSource(handle,str);
    ShowMessage(str+'-----------------'+ConnectStr);
  DatFile.Free;
end;

看来问题与你使用的相对路径有关。您的路径是相对于进程工作目录的。

如果工作目录在您的完全控制之下,那么您的代码就没问题了。但工作目录通常不在您的完全控制之下。该过程可能从意外的工作目录开始。文件对话框可能会更改工作目录。

您最好明确说明并提供文件的完整路径。看起来您的文件与可执行文件位于同一目录中。所以你可以使用:

ExtractFilePath(Application.ExeName) + FileName

或类似。