Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 为什么我的ini文件的扩展名什么都没有?_File_Delphi_Load_Ini - Fatal编程技术网

File 为什么我的ini文件的扩展名什么都没有?

File 为什么我的ini文件的扩展名什么都没有?,file,delphi,load,ini,File,Delphi,Load,Ini,我有一个程序来保存一个文件,这是一个ini文件。下面的过程就是用户选择文件目录和名称的过程: procedure TForm1.SaveFile(Sender: TObject); var Dialog : TSaveDialog; begin Dialog := TSaveDialog.Create(self); try //dialog properties go here Dialog.Filter := 'Title (*.ini)|*.ini'; D

我有一个程序来保存一个文件,这是一个ini文件。下面的过程就是用户选择文件目录和名称的过程:

procedure TForm1.SaveFile(Sender: TObject);
var
  Dialog : TSaveDialog;
begin
  Dialog := TSaveDialog.Create(self);
  try
    //dialog properties go here
    Dialog.Filter := 'Title (*.ini)|*.ini';
    Dialog.Options := Dialog.Options + [ofOverwritePrompt];
    if Dialog.Execute then
    begin
      //any saving procedures go here if required

      ShowMessage('File saved: ' + Dialog.FileName);
    end 
  else
      ShowMessage('Save file was cancelled');
  finally
    Dialog.Free;
  end;
end;
如您所见,我将过滤器设置为
ini
,但根本不显示任何文件(它仍然保存) 以下步骤是用户可以选择以前保存的文件的步骤

procedure TForm1.LoadFileBtnClick(Sender: TObject);
Var
FileName, FileExtension : String;
SelectedFile : TOpenDialog;
begin
SelectedFile := TOpenDialog.Create(nil);
Try
  if SelectedFile.Execute() then     
   FileName := SelectedFile.FileName        
   else
   //Do whatever here if user doesn't select file
Finally
  SelectedFile.Free;  //Free dialog from memory

End;
  FileExtension := ExtractFileExt(FileName);

  if not (FileExtension = 'ini') then
    exit
    else
//Do whatever here if file extension matches specified type
end;
我获取文件名的扩展名并检查其ini是否正确。
ShowMessage
用于查看返回的测试值。单击ini文件时,不会返回任何内容,但单击文本文件时会返回“.txt”。当我的ini文件是ini文件时,为什么要将其保存为“File”类型


我如何更改加载文件过程以检测其是否为ini文件,如果不是,则退出?

我想您是在假设这样一个事实,即您正在指定SaveDialog的
过滤器
,从而强制SaveDialog的
文件名
具有“ini”扩展名。事实并非如此。对话框的
Filter
属性确定其中列出的文件,而不是保存的文件的扩展名

请尝试以下代码:

if SaveDialog.Execute then
begin
  SaveSeatingPlan(SaveDialog.FileName);
  Assert(SameText(ExtractFileExt(SaveDialog.FileName), '.Ini'));
  ShowMessage('File saved: ' + SaveDialog.FileName);
end else
  ShowMessage('Save file was cancelled');

当然,您可以在代码中附加“.Ini”扩展名,而不是“Assert”,或者更好的做法是按照另一个答案的建议执行。

我想您是在假设您正在指定SaveDialog的
过滤器
,这一事实迫使SaveDialog的
文件名
具有“Ini”扩展名。事实并非如此。对话框的
Filter
属性确定其中列出的文件,而不是保存的文件的扩展名

请尝试以下代码:

if SaveDialog.Execute then
begin
  SaveSeatingPlan(SaveDialog.FileName);
  Assert(SameText(ExtractFileExt(SaveDialog.FileName), '.Ini'));
  ShowMessage('File saved: ' + SaveDialog.FileName);
end else
  ShowMessage('Save file was cancelled');

当然,您可以在代码中附加“.Ini”扩展名,而不是“Assert”,或者更好地按照另一个答案的建议执行。

将SaveDialog中的属性DefaultExt设置为“.Ini”
这些将解决您的问题

将SaveDialog中的属性DefaultExt设置为“.ini”
这些将解决您的问题

我怀疑您没有将文件保存为ini文件。是否将DefaultExt属性设置为“ini”?您是否已使用资源管理器检查过文件的扩展名是否正确?为什么不调试代码?您不断地在这里提出问题,如果您愿意调试代码,这些问题可能会得到回答。除非你努力学习如何调试,否则你注定会永远被困在问这样的问题中。还有更多的bug。调试将显示它们。您没有时间学习如何调试。那是胡说八道。你没有时间不去。@not_Lucas:“我花了好几天的时间在谷歌上搜索如何解决问题”好吧,这是一个急功近利的典型案例:你本可以在更短的时间内(最多几个小时)学会如何使用调试器,然后在几分钟内解决你的问题。如果你认为在这里提问比调试更有效率,那你就大错特错了。哦,好吧。我怀疑你没有将文件保存为ini文件。是否将DefaultExt属性设置为“ini”?您是否已使用资源管理器检查过文件的扩展名是否正确?为什么不调试代码?您不断地在这里提出问题,如果您愿意调试代码,这些问题可能会得到回答。除非你努力学习如何调试,否则你注定会永远被困在问这样的问题中。还有更多的bug。调试将显示它们。您没有时间学习如何调试。那是胡说八道。你没有时间不去。@not_Lucas:“我花了好几天的时间在谷歌上搜索如何解决问题”好吧,这是一个急功近利的典型案例:你本可以在更短的时间内(最多几个小时)学会如何使用调试器,然后在几分钟内解决你的问题。如果你认为在这里提问比调试更有效率,那你就大错特错了。哦,好吧,是的,那是更好的方法,我忘了+1是的,那是更好的方法,我忘了+1我已经用您推荐的其他解决方案修复了它,但我假设它会将其保存为INI文件,因为我使用了INI.writeinteger或INI.writestring等其他代码,不是筛选器。我已经用您推荐的其他解决方案修复了它,但我假设它会将其保存为INI文件,因为我使用的是其他代码,如INI.writeinteger或INI.writestring等,而不是筛选器。