lazarus(delphi言語)にて、外部プログラムを呼び出す。 - ITservice雄飛


Lazarus PC

lazarus(delphi言語)にて、外部プログラムを呼び出す。

投稿日:2014年5月20日 更新日:

さて、数日ぶりに更新です。
今回は、久々にプログラミングの話題を。
先ず、お決まりの環境を。
  MAC OS X 10.9.2
       Lazarus 10.2.0
で、今回は何をしたのかというと、
外部プログラムの呼び出しをしました。
前回のブログ
普通、例えばwindowsだと、
ファイル選択ダイアログボックス表示して、
実行ファイルを指定し、
ShallAPIを引き数指定して走らせれば、それでokなんですが。
買って間もないMac、同じ事をしてみると、きれいに動かない。
そんなこんなで停滞していたのですが、
今日、進展がありまして。
パッケージファイルは、windowsでの実行ファイルとは異なり、
フォルダなんだそう。
で、そのフォルダをきちんと指定して、その奥に入っている、
ファイルを呼び出せば、ok、と。
それが解れば話は早い。
早速やってみました。
例えば、「デスクトップ/アプリ/パッケージファイル」
という、実行ファイルへのパスがあったとして。
くせ者はこの「パッケージファイル」で、
こいつがフォルダ。
正式なパスはこうなる。
「デスクトップ/アプリ/パッケージファイル.app」
更に、実行ファイルをプログラムから呼び出すには、こうすれば良かった。
「デスクトップ/アプリ/パッケージファイル.app/Contents/MacOS/パッケージファイル」
さて、これを、どうコードに落とすか?
こんな感じになった。
ただ、いかんせん即興ですので、そこら編はご愛嬌で。
まだ、もっと効率良いまともな書き方あるかもです。
※注:以下は実行ファイルのフルパスを取得するだけのサンプルです。※
var
  s:string;
  i:integer;
begin
 if not  Form1.OpenDialog1.Execute then
    exit;
    //ファイルパスから、パッケージファイル名だけを取得し、変数sに格納する。
    s := ExtractFileName(Form1.OpenDialog1.FileName);
    //取得したパッケージファイル名(*.app)を加工して、末尾のappを除去する。
    for i := Length(s) -3 to Length(s) do begin
      //拡張子部分の文字列がなかったかのように文字列末尾を加工する。
      s[i] := char(0);
    end;
    //取得したパスに、パッケージの中身のフォルダ名と、加工したファイル名を継ぎ足して表示。
    ShowMessage( Form1.OpenDialog1.FileName + ‘/Contents/MacOS/’ + s );
end;    
はい、強引な力技です(笑)。
個人的には、こういう書き方好きだったりする。
後は、これを、TProcessに値を渡してあげれば良いだけです。
ということで、何とか実行ファイルの呼び出し成功。
これで、sjis対応と、外部プログラム呼び出しの二つの道が開けました。
良かった良かった。

-Lazarus, PC

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

hoge.removeChild(‘要素名’)で削除が、、、でもケアレスだった件

年末の朝におはようございます、脇保です。 さて、今回は、サイトに貼るカレンダー(手書き)を作っておりまして。 夜思い立ったら吉日で頑張ったら、朝になっていたという。 で、カレンダーの再描画で、要素を消 …

メインPC再構築!

こんにちは、脇保です。 気が付いたら、あけましておめでとうからの、1月も中盤です。 さて、今日の話題は。 先月(前年末)、資金難でメインPCをバラシて、 売却するという暴挙に出まして。 で、案の定、不 …

no image

コードエディターに、流れ図作成機能とアルゴリズム生成機能を実装してみる(悪戦苦闘中。

おはようございます、脇保です。 開発中のエディター、「fEdit」が、大分完成間近になってきまして。 今は、流れ図(フローチャート)を作成したり、それを、 文章化されたアルゴリズムに落とす機能を実装し …

no image

(汗)Office 2013の電話認証が出来ない件[解決]

お久しぶりです、脇保です。 久しぶりの投稿です。 今回はタイトルの通りです。 PCを買い替えて、Office2013を再インストールしたところ・・・、 なんと、電話認証できないではないですか。 電話認 …

no image

Mac OS X(el capitan)で Makeが無くてGDBをインストールできずに困った件(解決)

おはようございます、脇保です。 朝っぱらから、PCでどんづまったのでメモ。 Macに、Lazarusをインストールしようとしたところ、 色々と躓きに躓き、結局翌朝解決となりました。 まぁ、徹夜はしなか …

Translate »