在Delphi中,我想在OS X中打开一个文件。我的方法如下:
const
Filename = 'test.bmp';
procedure SaveAndOpen;
begin
Chart.SaveToBitmapFile(Filename);
{$IFDEF MSWINDOWS}
ShellExecute(0, 'open', Filename, '', '', SW_Normal);
{$ELSE}
_System(Filename);
{$ENDIF}
end;
但没有任何反应。我做错了什么?
答案 0 :(得分:3)
Embarcadero的Malcolm Groves的这篇文章涵盖了这个主题:Opening files and URLs in default applications in OS X。
总之,您只需要:
uses
Macapi.Appkit, // for NSWorkspace
Macapi.Foundation; // for NSSTR
....
var
Workspace: NSWorkspace; // interface, no need for explicit destruction
....
Workspace := TNSWorkspace.Create;
Workspace.openFile(NSSTR(FileName));
为了完整起见,如果您希望打开网址而不是文件,请改为拨打openURL
:
Workspace.openURL(NSSTR(URL));
关于您的Windows代码,我建议不要使用ShellExecute
。该函数没有合理的错误报告。在其位置使用ShellExecuteEx
。
最后,你应该抽象出这个功能,以便它可以被程序的其他部分重用。您希望尽可能少地写出IFDEF
。
答案 1 :(得分:2)
您必须添加open
动词,如此
_System(PAnsiChar('open ' + Filename));