日記帳
本ページはプロモーションが含まれています
カテゴリー
Links
blog(ブログ)マスター
アンドロイドの巣
ゼロから始めるベランダ菜園
タイトル
2024年11月
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

アーカイブ

2007年01月 のアーカイブ

起動したプログラムが終了するまで待機するには


執筆:2007.01.22
編集:2007.01.22


起動したプログラムが終了するまで待機するには

関数、オブジェクト、クラス 言語 OS 関連関数
System.Diagnostics.Process .NET   Start()
WaitForExit()
Shell関数 VB.NET   Shell
WshShellオブジェクト    ?  Exec
Status
Sleep

System.Diagnostics.Process

Start(command)
Start(command, コマンド ライン引数)
WaitForExit()
WaitForExit(最大指定したミリ秒間待機)
[VB.NET]
Dim p as System.Diagnostics.Process
p = System.Diagnostics.Process.Start("notepad.exe")
p.WaitForExit()
 
[C#][C++]
System.Diagnostics.Process p;
p = System.Diagnostics.Process.Start("notepad.exe");
p.WaitForExit();
 
[Delphi .NET]
uses System.Diagnostics
// ..
   var p : System.Diagnostics.Process;
begin
  p := System.Diagnostics.Process.Start('notepad.exe');
  p.WaitForExit(); // 終了するまで待機します
end;
 

WshShellオブジェクト

[Delphi 32]
uses comobj;

procedure TForm1.Button1Click(Sender: TObject);
 var  WshShell , oExec : Variant;
begin
  try
    WshShell := CreateOleObject('WScript.Shell');
    oExec := WshShell.Exec('notepad.exe');
    // [Status]  WshRunning : 0 , WshFinished : 1
    while oExec.Status = 0 do Sleep(100);
  except
    WshShell := Unassigned;
  end;
end;
 
[VBScript]
Dim WshShell, oExec
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec("notepad.exe")
Do While oExec.Status = 0
  WScript.Sleep 100
Loop

 ' msgbox "OK?"
 


参考

起動したプログラムの終了を待たない関数は
 ShellExec関数(Win32API)
などがあります。

バージョン管理 win編 Subversion(Quick Start)


執筆:2007.01.10


忘れっぽいので、覚え書きです。

※ Windowsで使う用途で記述していますが、Linux系なら標準で利用できるようです。

※ インストール後、試用20分間程度のまとめです。

インストールした経緯:
  StarTeamだと比較的最新のDelphi(BDS)以外管理できないし
 Winのソフトなどをcvsでバージョン管理しようとおもっていたのですが、
 cvsサイトにいっても、うまくファイルを揃えることができませんでした。
   そして偶然、Subversionという類似品を発見し、インストールしました。

下記の3つをそろえると、とても操作性がいいです。very good!

Subversionの構成
サーバー Subversion 本体です

管理データが
外部PCの場合は、いりません。
(たぶん)
クライアント TortoiseSVN エクスプローラーで
操作できるようになります
TortoiseSVN Language Packs 日本語言語ファイルを
もらいましょう。
自動インストーラーをお勧めします。

の3つをダウンロードします。

インストール直後の要点
環境変数の設定 インストーラーだと自動設定されていると思います。

手動の場合は。
マイコンピューター:プロパティから設定しましょう。
SET APR_ICONV_PATH="C:\Program Files\Subversion\iconv"
 

tortoisesvnのヘルプを見ながらテストしてみます。
日本語パックをインストールしてからのほうがいいと思います。

基本的に、tortoisesvnのヘルプを読むだけで操作できるようです。

データが消えると困るので
テストは、フラッシュメディアでやってみました。

同一PCで、管理と両方使う場合

1. リポジトリの root フォルダとして SVN という空のフォルダ (例: D:\SVN\) を作成します。
2. D:
cd D:\SVN
svnadmin create --fs-type bdb MyNewRepository
クライアント用途の場合は、ここからはじめます。

ここから下は、
使い方を誤ると、悲惨なことになりますので
消えても痛手を受けないような
フラッシュメディアなどのディスクでテストすることをお勧めします。

よーく 付属の説明書を読んでからにしましょう。
3. フラッシュメディアなどに
適当?にフォルダを作成します
MyProject\trunk
MyProject\branches
MyProject\tags

  5.2.1. リポジトリレイアウトを参照のこと
4. MyProjectフォルダを右クリックして、
 インポート をクリックします。
file:///D:/svn/MyNewRepository/MyProject

リポジトリブラウザでみてみましょう。
しっかりできていますね?
5. 適当な作業フォルダで
フォルダを右クリックして、
SVNチェックアウト
をクリックします。

作業フォルダにファイルがでてきましたか?
(.svnフォルダが隠し属性で作られています。)
  あとは、
付属の説明書をみながら、
楽しく、試用します。
そして、保存する構造を決定して運用します。

[tT]humbs.db    */[tT]humbs.db
*.[tT][mM][pP]  */*.[tT][mM][pP]
は共通の除外ファイルに設定していた方がいいでしょう?

Linux系にアクセスする場合は、大文字小文字を区別するので注意しましょう。

リポジトリのコピーの仕方。(バックアップ)
svnadmin hotcopy path/to/repository path/to/backup --clean-logs
詳しくは、説明書を参照。

【Tios】

誤登録などのデータの完全削除
 
tortoisesvnでは、できないそうです。
(B.4.3. svndumpfilter の使用)

svndumpfilter を利用します。
 svnadmin dump
 svnadmin load
を使います
:後述


【ここがいまいち】

変更差分を表示するで、EUCだと文字化けする
(ブラウザみたいに表示する文字コード変更がない)

SJISとutf8でテストした限りは大丈夫っぽかった。
一度登録すると、削除しても変更履歴として残り 閲覧可能。
保護する面では、ある意味そうあるべきですが、

指定したリビジョンの完全削除くらいほしいところ
無視リストにファイルを入れて更新した後、
無視リストから削除をしても コミットできない。
(バグかもしれない)

ほかの更新と合わせると適用される。
  変更単位は、リビジョン毎(コミット単位)

従って、不要なリビジョンを削除した時に
更新チェック時の問題が発生します。

ファイル単位でやって欲しい気が・・・
リポジトリブラウザの
 右クリックメニューに
ここを 圧縮して保存が欲しい!!

自分で作ってもいいが・・・

機能要望にだそうヨ!!

【最後に】
 古いバージョンも同時に、修正したりしたかったので
 いいツールが無料で見つかってよかったです。

自動バックアップは、.vbsに処理を書くからいいとして

 いままで、古いプロジェクトをlzhかzipに圧縮してたので、
いままでどうり、
ソースとかを zip,lzh,gzのどれかで、自動保存もしてくれると非常にありがたいのですが・・・
イベントが登録できるようなので
やり方は、おぉおぃ探すことにしましょう。


【削除と再構築編】
 完全に消したいデータが、でてきた場合には避けられない。

手順 完全削除には、リポジトリの作り直しが必要?
  パイプ | でつなげるのも可。
リダイレクト ><
(詳しくはヘルプ MSDOSを参照)

?作業がおわるまで、ロックする?。

svnadmin dump D:/svn/oldrepo > repos-dumpfile

上記のでは、infile-dumpfileには、repos-dumpfileを指定します。
 注意:後述の説明をみましょう。
svndumpfilter exclude --drop-empty-revs "/削除するパス" < infile-dumpfile > outfile-dumpfile

svnadmin create --fs-type bdb D:/svn/newrepo1

svnadmin load D:/svn/newrepo1 < outfile-dumpfile

D:/svn/oldrepoフォルダの名称変更または、削除します。

次にnewrepo1の名称を変更します
newrepo1をoldrepoに名称変更
rename D:/svn/newrepo1 D:/svn/oldrepo
  構築後の問題

--drop-empty-revs を指定すると
・リビジョン番号の番号詰めが行われます。
・バグツールと連携している場合、番号が照合しなくなる可能性があります。

一般公開している場合は、--drop-empty-revs は指定しない方が無難でしょう。


作業フォルダの更新でエラーの場合は、
作業フォルダ内の
必要なファイルを別の所に移動して、チェックアウトからやり直し。
予期しないデータの破損をするおそれが高いので
・バックアップを忘れない。保存しておく。
・説明書をよく読み理解しておく

 



PR

[PR]