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
或类似。
首先,点击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
或类似。