お薦め ページ


メニュー

ハワイ島 遊覧飛行ツアー

ハワイ島 B&B・ホテル

ハワイ島 不動産情報

ハワイ島 情報・観光ガイド

ブログ(Blog)

その他

関連サイト

: 日付別 アーカイブ :

2006年10月15日

2006年10月15日

DeleteFolderメソッド問題の解決策(2)「new String」

前回ブログからの続きで、 DeleteFolderメソッドを実行すると フォルダ名までも消されてしまう 問題の解決策 第2弾。

消されるフォルダ名の控えを作っておくために 文字列変数を別の文字列変数に代入しただけでは、 いわゆる「参照渡し」になってしまい、 結局のところ文字列の実態はひとつしか存在していないので、 DeleteFolderメソッドによって その実態が消されてしまうと、あとには何も残っていないことになってしまう。

この問題を解決するためには、 完全な文字列のコピーを別のメモリ領域に作ってしまえばよいことになる。 そのための変更を前回ブログのスクリプトに加えたのがこちら。
//
//  フォルダ削除実験スクリプト3 WSH(JScript)
//
// FileSystemObject オブジェクトの作成
var FSO = WScript.CreateObject("Scripting.FileSystemObject");

// GetFolderメソッドからフォルダ名を抽出
//   実際は、きちんとリストしないといけませんが
//   ここでは省略して最初に見つかったひとつのサブフォルダだけを扱います。
folderNameEnu = new Enumerator( FSO.GetFolder(".").SubFolders );
var DelFolderName = folderNameEnu.item();

// 消されちゃうんであれば、もう一個 余計に準備しておく。
//  「参照渡し」にならないように 新たなオブジェクトを作成
var DelFolderName2 = new String( DelFolderName );

// 削除前にフォルダ名の表示
WScript.Echo( "削除するフォルダは " + DelFolderName2 + " です。");

// フォルダの削除
FSO.DeleteFolder(DelFolderName, true);

// 結果の表示
WScript.Echo( "削除したフォルダは " + DelFolderName2 + " です。");
ご注意:このスクリプトを実行すると、カレント・フォルダの下にあるサブフォルダをひとつ、 実際に削除してしまいますので、お取り扱いには十分にご注意ください。

このように「new」演算子を用いて 新たな String オブジェクト を作成してやるようにしてみた。 こうすると、フォルダ削除後にも、 そのフォルダ名を表示することができるようになった。

【参考リンク】

カテゴリー: プログラミング     22:20 | コメント (0) | トラックバック (0)

 
ハワイ島での遊覧飛行ツアーとB&Bのスペシャリスト、スカイメリカ
Copyright © 2003,2009 Skymerica Corp. All rights reserved.