File 为什么我的ini文件的扩展名什么都没有?
我有一个程序来保存一个文件,这是一个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
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等,而不是筛选器。