« DeleteFolderメソッドで フォルダ名も消える謎 | メイン | DeleteFolderメソッド問題の解決策(2)「new String」 » |
このブログを書く四元輝博とジョシュア清水が経営する旅行代理店スカイメリカ
ジョシュア清水 自らが操縦する、日本語でのガイドと会話を楽しみながらハワイ島を巡るセスナの旅
このブログを書く四元輝博と共にスカイメリカを経営するハワイ島在住の日本人パイロット、ジョシュア清水のブログ
スカイメリカの共同経営者、シリコンバレー在住の四元輝博によるIT情報・ベンチャー起業に関するブログ
四元輝博によるに 「組み込みJava による M2Mソリューション」に関する調査レポート・サイト
: 個別エントリー・アーカイブ :
// // フォルダ削除実験スクリプト2 WSH(JScript) // // FileSystemObject オブジェクトの作成 var FSO = WScript.CreateObject("Scripting.FileSystemObject"); // GetFolderメソッドからフォルダ名を抽出 // 実際は、きちんとリストしないといけませんが // ここでは省略して最初に見つかったひとつのサブフォルダだけを扱います。 folderNameEnu = new Enumerator( FSO.GetFolder(".").SubFolders ); var DelFolderName = folderNameEnu.item(); // 消されちゃうんであれば、もう一個 余計に準備しておく。 var DelFolderName2 = DelFolderName; // 削除前にフォルダ名の表示 WScript.Echo( "削除するフォルダは " + DelFolderName2 + " です。"); // フォルダの削除 FSO.DeleteFolder(DelFolderName, true); // 結果の表示 WScript.Echo( "削除したフォルダは " + DelFolderName2 + " です。");ご注意:このスクリプトを実行すると、カレント・フォルダの下にあるサブフォルダをひとつ、 実際に削除してしまいますので、お取り扱いには十分にご注意ください。
var DelFolderName2 = DelFolderName;の一行を加えてみた。 ところがその実行結果は前回と変わらず、やはり、 フォルダ名が消されてしまって、 フォルダ削除後のフォルダ名表示ができなかった。
値渡しによるコピーや受け渡しでは、コンピュータのメモリ内に空間が新しく確保され、元の値がそこへコピーされます。 それぞれの値は別の値と見なされるため、値渡しした後で元の値を変更しても、コピーされた値に影響は及びません (逆の場合も同様です)。一方、「参照渡し」とは、
参照渡しによるコピーや受け渡しでは、実際に作成されるのは元の項目へのポインタですが、そのポインタを、あたかもコピーされた項目であるかのように扱うことになります。この場合は、元の項目に変更を加えると、元の項目とコピーされた項目の両方が変更されます (逆の場合も同様です)。実際存在する項目は 1 つだけで、"コピーされた項目" は、データへのもう 1 つの参照に過ぎません。と説明されている。 そしてJScript の文字列の場合は
文字列の場合は、コピーや受け渡しは参照渡しで行われますが、比較は値渡しで行われます。となっている。つまり JScriptにおいて 「=」を用いて 文字列変数に文字列変数を代入したとしても それは、元の文字列へのポインタがひとつ増えただけであり、 実際に存在する文字列はひとつしかないわけである。 そのため、今回 追加した一行は全くの無駄ということになってしまう。
カテゴリー: プログラミング 2006年10月14日 22:33
このエントリーのトラックバックURL:
http://www.skymerica.com/blog/yotsumoto/mt/mt-tb.cgi/587