phpのchmヘルプファイルの作り方(ダウンロードしたchmが 文字化 け)
執筆:2007.07.05
編集:2007.07.05
編集:2011.02.16
公式サイトのchmが文字化けして、キーワードが読めなくなったり
コンテンツが欠けていたり・・・
配布サイクルが長くて待ち遠しい?・・・
正常なときのchm上書きで消しちゃったよ!
さぁ、さくっと 自分でコンパイルしましょう。
通常はこちら
» 続きを読む
起動したプログラムが終了するまで待機するには
執筆: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 は指定しない方が無難でしょう。 作業フォルダの更新でエラーの場合は、 作業フォルダ内の 必要なファイルを別の所に移動して、チェックアウトからやり直し。 |
|
予期しないデータの破損をするおそれが高いので ・バックアップを忘れない。保存しておく。 ・説明書をよく読み理解しておく ・ |
C#コンポがなさすぎ
C#のComponentCount相当品がわからないので
続きは、Delphi.netでいってみましょう。
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
for i := 0 to ComponentCount-1 do
if (Components[i] is TButton) then
begin
Text := Components[i].GetNamePath;
(Components[i] as TButton).Caption := 'おはよう';
end;
end;
コンパイル
exeが巨大ですね!!
まぁ気楽に実行できるのできにしないでおきましょう。
"C:\Program Files\Wise Owl, Inc\Demeanor for .NET, Personal Edition\Demeanor" /report:repo.xml /names:numeric ohayou_delphi.exe
うぁ repoのサイズが9M近くあります ビビビですね。
では、実行してみましょうか
ばっちり、おはようと ボタンクラス名がでました。
では、xmlをfirefoxにポイっ
・・・・。とろんとろん
な なにごとですか!!
うわぁー システムメモリ850MB消費
タスクマネージャー firefox強制終了
なんとおそろしい ログxmlファイルでしょう
しかたがないので メモ帳で開きましょう。
(゚ロ゚)ギョェ なにも変更されていません。
ということは、delphi.netには、無意味?
疑問その1:delphi.netには使えない?
疑問その2:delphiに付属しているのはなぜ?
では、もう一度 ファイルを読み直します。
/all というのをみつけました。
再度やってみましょう。
Button1で検索
今度は、
a
kN
に変更されています。
では、実行しましょう
ohayou_delphi.exe - 共通言語ランタイム デバッグ サービス
アプリケーションで、ハンドルできない例外が発生しました。
処理 ID=0x5c8 (1480)、スレッド ID=0x6a4 (1700)
アプリケーションを終了するには [OK] をクリックしてください。
アプリケーションをデバッグするには、[キャンセル] をクリックしてください。
(゚ロ゚)ギョェ 使えないじゃん!!
おしまい。
説明書をみるとsn.exeがどうのこうのと
ということで
フォルダをじっとみるめる・・・
そんなファイル ナイヨ!!
仕方がないので
Demeanorを動かしてみる・・・
使い方の書式がたらたらと流れる
しかし、読めない。
とりあえず レポートと 一個 混ぜてみる。
ということで、
とりあえず、
exeがあるところで
"C:\Program Files\Wise Owl, Inc\Demeanor for .NET, Personal Edition\Demeanor"
/report:repo.xml /names:numeric がはは.exe
を実行してみる・・・
なに いきなり ent版 買え表示 失礼な!!
To upgrade to the Enterprise Edition,
Demeanorが下にでき、なにやらexeとreo.xmlができました。
exeはサイズは同じでした。
(゚ロ゚)ギョェ ということで、
さっそく 違うぞう を起動して調べると
バイト配列は部分的に変わっていました。
で、次にxmlを読むと あっ (こっちを先に読めヨ!!)
動かす前に
難読 NanDoKu というソフトの説明書を読んだので
だいたいの動きがわかりました。
最初からそっちつかえ という声も・・・
どうやら、/names:numeric を指定すると
panel1が_1とかに名称変更するようです。
ここで 疑問です!!
じゃあ 実行時に
nameを 直接していしたらどうなるの?みたいな?
では実験してみましょう
「その2」へ