DelFusa Blog 総本山

プログラミングの話題とかです。

NEW | PAGE-SELECT | NEXT

≫ EDIT

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

| スポンサー広告 | --:-- | comments(-) | trackbacks(-) | TOP↑

≫ EDIT

DSHでレッツラゴー


   ∧,,∧  レッツラレッツラ
   ミ,,゚Д゚彡
   ミ⊃ ミ
  ~ミ  ,,0
   し'´

すいません。MIFESの話とか。Linux嫌いの話しとか。

ききたくないかしら~

Linux仕事で使い慣れりゃあ、面白くなるのかしら。とけっこう触って1年以上。

TeraTermとかは好きになってきましたが
viとemacsは慣れない漏れには相当つらいっす。
あれが、Win系になってくれたら、どれだけ....と思ってましたが
同じニーズがあるものですね。

viとemacsが嫌いだから、『坊主憎けりゃ袈裟まで憎い』で
Linux嫌いになってるのかしら。やだわぁ。

MIFESか...数千円なら即買いなんだけどな。

やっぱし、Windowsが馴染みあるし気楽です。

ということで、そんな話題はパスでして

DSHの事を検討してみました。


DSHを考えるとどうしてもコマンドライン処理の弱さが目につくもんですね。>>Delphi VCL
と、軽く文句も混ぜながら、
その分、すんばらしい事を教えてくれるユーザーさんがいて、本当に助かります。

[Delphi] GUI アプリからコンソールアプリを実行するには - Autch.net
http://www.autch.net/page/tips/delphi_anonymous_pipe.html

この処理をみると漏れのCommandResultDump関数なんてちょっと涙無しにはみれませんよね。むしろ泣ケ!

ただ、ここで紹介されている関数。
ちょっと前に試してみてたんですがなぜか誤動作していて採用してなかったっす。
調べたらApplication.ProcessMessage部分で結果がしっかり受け取れないまま処理が進む
のが原因だったので改造させてもらったらうまく動くようでした。

次はこっち。
スペースの入ったパス名を渡すには?
http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200611/06110023.txt

だれか、CreateProcessとかShellExecuteとか、ShellExecuteExとか
elegantな上手なラッピングしてくれんかしら。

いちいち調べるのは不便でかなわん...
だから、CommandBatExec関数なんて堕関数をつくっちまう必要性があるんだわさ。まつたく。まあいいか。今後の漏れの楽しみにしておこう。


◆DSHに求められるもの。

・ dsファイル起動時のDrag&Dropなどの
→とりあえず難しそうなのでいまはパスります。(今は他人任せでスマソコ)

・ dsファイルをCompileだけして実行しない呼び出し方法
・ dsファイルのCompile結果をカレントに出力する方法

→ dsh.exeの引数付き呼び出しへの対応
dsh.exe -ne test.ds という呼び出し方法に対応する
dsh.exe -ne -nc -oc test.ds
neはNoExecute、ncはNoCompile、ocはOutputCurrentの略

起動引数を考えると、 dsh.exe test.ds -ne -oc
とかに対応する事を考えるとめんどくせーな!
これも誰かラッピングしてないかい?
引数列に"-ne"が含まれているか田舎とか
一撃で条件判断する関数とか。
車輪の再発明とかいいますが、発明した人はいないかしら~~


→ Sourceコード内でDSH自体を操作するクラスを作成する事
DSH.Execute(DS等のPaslcaファイル名, [cfCompile, cfExecute, cfOutputCurrent]);
Compileフラグを集合型で持つ。
Compileせずに目標となるExeを起動することも可能にする。
デフォルトは[cfCompile, cfExecute]

→ SW_SHOWやSW_HIDE指定も引数に指定する。

→ 戻り値は、標準出力を得るようにする。


→ これを実現しておけば、通常のDelphiソースを
DSH.Execute(Unit1.pas, [cfCompile]
DSH.Execute(Project1.pas, [cfCompile, cfExecute]
とすれば、普通のVCLFormアプリケーションが動いてしまう。


・ 関連づけのアンインストール方法
→関連づけとともに、AssociationFunction.dsと似たようなものを
もう一つつくるか、installプログラムに取り込んでしまいましょう。

・ dsファイルを実行しても、SW_SHOWで起動しない(SW_HIDEで起動する)呼び出し方法

→ dsh.exe -he test.ds
heはHideExecuteの略
※また、コマンドライン引数が増えそうだ…


・ コマンドラインの処理が甘いので修正
→function ExecuteFilePath: String; の中身でParamStr(1)固定はよくない。
パラメータ内のファイルがあるものに関して限定するか。
→ParameterTextの処理が甘いので修正
ParamStr(0)に、"Exeフルパス"で入るとは限らない。

コマンドラインの処理はParamStrでとりあえずやってみよう。
ParamStr(1~Count)までで、先頭にハイフン(or スラッシュ)がついていればオプション
そうでなければファイル名としてリストを作って対応する。
複数ファイル名にも対応してみる。

・ Currentをわかりやすく移動させるメソッド準備
BinDCC32EXEフォルダ
Outputフォルダ
呼び出しもとのDSファイルフォルダ

こんな感じで妄想中です。



|,,∧   実装は...
|Д゚彡
| U
| ミ    
| U


漏れより、素早さのアビリティーが高い方。


|∧,,∧  ビシッ!!
ミ*゚Д゚ミ   
| ○m
|  ミ   募集中
|''∪



コマンドライン引数のこねくり回し、綺麗処理くらい
皆さん、やっとるでしょ~~が!(w

教えてくださいな。

くれなきゃ、漏れがやっちゃいますよ!
スポンサーサイト

| 未分類 | 01:18 | comments:4 | trackbacks:0 | TOP↑

COMMENT

パラメータ判別

FindCmdLineSwitch関数かな?SysUtilsに入っとります。

| とおりすがり | 2007/07/25 13:59 | URL | ≫ EDIT

すんばらしい!全然しらなくて自前実装をエーコラヒーコラやってしまうところでした。

DelphiMLの検索でも1件、
ぐぐると、TOBY SOFT wikiとDEKOさんところがヒット。
トップクラスの希少価値Tipsですね。
いやあ、助かります。教えていただいてありがとうです。

| ミ・д・彡 | 2007/07/26 00:08 | URL | ≫ EDIT

CreateProcessのラップ

CreateProcess系のラップはJVCLのTJVCreateProcessなんていかがでしょう。
見事にCreateProcessをコンポーネント化しています。
参考になるか判りませんが、僕用の覚え書きとして/.の日記に書いた奴を晒しておきます。
http://slashdot.jp/~A7M/journal/333470

| A7M | 2007/07/26 23:59 | URL | ≫ EDIT

うひゃう。いつもありがとうございます。
知識は力。って感じっっすね!

もうそろそろ、MLやTipsサイトでは
めったに載っていないテクニックが目白押しです。
ほんと、ありがとうございます。大変勉強になります。

| ミ・д・彡 | 2007/07/27 00:17 | URL | ≫ EDIT















非公開コメント

TRACKBACK URL

http://delfusa.blog65.fc2.com/tb.php/68-dea37c85

TRACKBACK

PREV | PAGE-SELECT | NEXT

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。