2014-09-03 6 views
0

어떻게하면 델파이 xe6-7 OSX 어플리케이션을 통해 터미널 명령을 실행할 수 있습니까? 예를 들어 iTunes 재생 목록에서 모든 트랙 이름을 반환하는 스크립트를 실행하고 싶습니다.Delphi XE7로 터미널 명령 실행하기 FMX

나는 VCL과 WINDOWS 난에서 ShellExecute() 함수를 실행할 수 있습니다에 대한 참조,하지만 난 FMX

답변

3

에서 ShellExecute에 OSX에 대한 동등한를 찾을 수가 윈도우 OS 기능이 아닌 VCL 기능입니다 수 없습니다. 많은 다른 크로스 플랫폼 툴 (Qt, Python, 심지어 FreePascal)이 있지만, BIBCE (Borland/Inprise/Borland/CodeGear/Embarcadero)는 VCL/FMX에서 명령을 실행하는 기능을 구현하는 데 전혀 신경을 쓰지 않았습니다. 이. Stephen Ball은 블로그 게시물과 관련하여 앱이 교차 플랫폼 인 경우 각 플랫폼에 IFDEF와 기본 함수를 사용해야합니다.

: 나는 그것을 테스트하기 위해 OS X에 대한 액세스 권한이없는 동안 :-(

는 엠 바카 데로의 공의 OS X은 "_system"를 사용하여 Windows와 OS X에서 파일을 실행 설명하기 위해 다음 코드를 주었다

unit FileLauncher; 

interface 

uses 
{$IFDEF MSWINDOWS} 
Winapi.ShellAPI, Winapi.Windows; 
{$ENDIF MSWINDOWS} 
{$IFDEF MACOS} 
Posix.Stdlib; 
{$ENDIF MACOS} 

type 
TFileLauncher = class 
class procedure Open(FilePath: string); 
end; 

implementation 

class procedure TFileLauncher.Open(const FilePath: string); 
begin 
{$IFDEF MSWINDOWS} 
ShellExecute(0, 'OPEN', PChar(FilePath), '', '', SW_SHOWNORMAL); 
{$ENDIF MSWINDOWS} 

{$IFDEF MACOS} 
_system(PAnsiChar('open ' + '"' + AnsiString(FilePath) + '"')); 
{$ENDIF MACOS} 
end; 
+1

Stephens 블로그 게시물보다 2 년 빠름 http://stackoverflow.com/questions/7443264/how-to-open-an-url-with-the-default-browser-with-firemonkey-cross-platform-appli/ 7443440 # 7443440 : o) –