C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[8]: ドライブ情報取得アプリを他のパソコンに移すとエラーが出る


(過去ログ 19 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■7632 / inTopicNo.1)  ドライブ情報取得アプリを他のパソコンに移すとエラーが出る
  
□投稿者/ 中野美奈子大好き (1回)-(2007/09/11(Tue) 21:57:05)

分類:[C#] 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
            listBox1.Items.Add("DRIVE\tREADY?\tTYPE\tFREESPACE\tTOTALSPACE\tFORMAT");
            listBox1.Items.Add("--------------------------------------------------------------------------");

            foreach (System.IO.DriveInfo dInfo
                in System.IO.DriveInfo.GetDrives())
            {
                listBox1.Items.Add
                    (
                    dInfo.Name + "\t"
                    + dInfo.IsReady + "\t"
                    + dInfo.DriveType.ToString() + "\t"
                    + dInfo.TotalFreeSpace.ToString() + "\t"
                    + dInfo.TotalSize.ToString() + "\t"
                    + dInfo.DriveFormat.ToString()
                    );
            }
        }
    }
}
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
書籍を見ながらドライブ情報を取得する簡単なプログラム(ボタンとリストボックス各1個ずつのプロクラム)を作成したのですが,
作成したパソコンでは問題がなくうまく行くのに,
別のパソコンに,実行ファイル等もしくはソルーション一式を移して,実行すると,エラーが出ます
(なお,VisualStudio2005で作成しました。)

これでは,アプリの意味がありません


どうしたらよいか,ご教授お願いできませんでしょうか。

どうぞ宜しくお願いいたします。


引用返信 編集キー/
■7633 / inTopicNo.2)  Re[1]: ドライブ情報取得アプリを他のパソコンに移すとエラーが出る
□投稿者/ επιστημη (579回)-(2007/09/11(Tue) 22:07:28)
επιστημη さんの Web サイト
> 別のパソコンに,実行ファイル等もしくはソルーション一式を移して,実行すると,エラーが出ます

どんなエラーが出たんか書いてくれんと判断/推測できませんて。

引用返信 編集キー/
■7635 / inTopicNo.3)  Re[2]: ドライブ情報取得アプリを他のパソコンに移すとエラーが出る
□投稿者/ 渋木宏明(ひどり) (353回)-(2007/09/11(Tue) 23:12:03)
渋木宏明(ひどり) さんの Web サイト
>>別のパソコンに,実行ファイル等もしくはソルーション一式を移して,実行すると,エラーが出ます
>
> どんなエラーが出たんか書いてくれんと判断/推測できませんて。

そして、どんな時にエラーが出たのかも重要。
起動もしないのか、起動時なのか、なんかの操作を行った時なのか、とか。
引用返信 編集キー/
■7638 / inTopicNo.4)  Re[3]: ドライブ情報取得アプリを他のパソコンに移すとエラーが出る
□投稿者/ 中野美奈子 (1回)-(2007/09/12(Wed) 07:56:35)
No7635 (渋木宏明(ひどり) さん) に返信
> >>別のパソコンに,実行ファイル等もしくはソルーション一式を移して,実行すると,エラーが出ます
>>
>>どんなエラーが出たんか書いてくれんと判断/推測できませんて。
>
> そして、どんな時にエラーが出たのかも重要。
> 起動もしないのか、起動時なのか、なんかの操作を行った時なのか、とか。


すみません。

ドライブが準備できていませんとかです。
エラーの詳細は,以下のとおりです。


−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Just-In-Time (JIT) デバッグを呼び出すための詳細については、
ダイアログ ボックスではなく、このメッセージの最後を参照してください。

************** 例外テキスト **************
System.IO.IOException: デバイスの準備ができていません。

場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.__Error.WinIODriveError(String driveName, Int32 errorCode)
場所 System.IO.DriveInfo.get_TotalSize()
場所 WindowsApplication1.Form1.button1_Click(Object sender, EventArgs e)
場所 System.Windows.Forms.Control.OnClick(EventArgs e)
場所 System.Windows.Forms.Button.OnClick(EventArgs e)
場所 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
場所 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
場所 System.Windows.Forms.Control.WndProc(Message& m)
場所 System.Windows.Forms.ButtonBase.WndProc(Message& m)
場所 System.Windows.Forms.Button.WndProc(Message& m)
場所 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
場所 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
場所 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** 読み込まれたアセンブリ **************
mscorlib
アセンブリ バージョン: 2.0.0.0
Win32 バージョン: 2.0.50727.832 (QFE.050727-8300)
コードベース: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
WindowsApplication1
アセンブリ バージョン: 1.0.0.0
Win32 バージョン: 1.0.0.0
コードベース: file:///C:/Documents%20and%20Settings/Highest/My%20Documents/DriveInfo/WindowsApplication1.exe
----------------------------------------
System.Windows.Forms
アセンブリ バージョン: 2.0.0.0
Win32 バージョン: 2.0.50727.832 (QFE.050727-8300)
コードベース: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
アセンブリ バージョン: 2.0.0.0
Win32 バージョン: 2.0.50727.832 (QFE.050727-8300)
コードベース: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
アセンブリ バージョン: 2.0.0.0
Win32 バージョン: 2.0.50727.832 (QFE.050727-8300)
コードベース: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
アセンブリ バージョン: 2.0.0.0
Win32 バージョン: 2.0.50727.832 (QFE.050727-8300)
コードベース: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
アセンブリ バージョン: 2.0.0.0
Win32 バージョン: 2.0.50727.832 (QFE.050727-8300)
コードベース: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Windows.Forms.resources
アセンブリ バージョン: 2.0.0.0
Win32 バージョン: 2.0.50727.42 (RTM.050727-4200)
コードベース: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_ja_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
mscorlib.resources
アセンブリ バージョン: 2.0.0.0
Win32 バージョン: 2.0.50727.832 (QFE.050727-8300)
コードベース: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------

************** JIT デバッグ **************
Just-In-Time (JIT) デバッグを有効にするには、このアプリケーション、
またはコンピュータ (machine.config) の構成ファイルの jitDebugging
値を system.windows.forms セクションで設定しなければなりません。
アプリケーションはまた、デバッグを有効にしてコンパイルされなければ
なりません。

例:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

JIT デバッグが有効なときは、このダイアログ ボックスで処理するよりも、
ハンドルされていない例外はすべてコンピュータに登録された
JIT デバッガに設定されなければなりません。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

どうぞ宜しくお願いします。



引用返信 編集キー/
■7639 / inTopicNo.5)  Re[4]: ドライブ情報取得アプリを他のパソコンに移すとエラーが出る
□投稿者/ 中野美奈子大好き (2回)-(2007/09/12(Wed) 08:00:50)
言い忘れました。
別のパソコンに移してもアプリの起動はできます。
そして,前記コードの
      listBox1.Items.Add("DRIVE\tREADY?\tTYPE\tFREESPACE\tTOTALSPACE\tFORMAT");
listBox1.Items.Add("--------------------------------------------------------------------------");
部分までは,実行できます。表示がされます。

その後,上記エラーが出ます。ドライブのインフォが獲得表示できません。


宜しくお願いします。


引用返信 編集キー/
■7641 / inTopicNo.6)  Re[4]: ドライブ情報取得アプリを他のパソコンに移すとエラーが出る
□投稿者/ はつね (268回)-(2007/09/12(Wed) 08:46:46)
はつね さんの Web サイト
No7638 (中野美奈子 さん) に返信
> ドライブが準備できていませんとかです。
> エラーの詳細は,以下のとおりです。

実行マシンに媒体を入れていないドライブがあるとか?
例えば、CDとかMDとかFDとかDVDとか。
文字通りドライブの準備を行うか、アプリの機能としてその状態のドライブを読み飛ばすとかの配慮をする必要がありそうですね。

System.IO.DriveInfo("C").IsReady

引用返信 編集キー/
■7666 / inTopicNo.7)  Re[5]: ドライブ情報取得アプリを他のパソコンに移すとエラーが出る
□投稿者/ 中野美奈子大好き (3回)-(2007/09/12(Wed) 20:06:48)
No7641 (はつね さん) に返信
> ■No7638 (中野美奈子 さん) に返信
>>ドライブが準備できていませんとかです。
>>エラーの詳細は,以下のとおりです。
>
> 実行マシンに媒体を入れていないドライブがあるとか?
> 例えば、CDとかMDとかFDとかDVDとか。
> 文字通りドライブの準備を行うか、アプリの機能としてその状態のドライブを読み飛ばすとかの配慮をする必要がありそうですね。
>
> System.IO.DriveInfo("C").IsReady
>

ありがとうございます。
確かに作ったノートパソコンでは,Aドライブがなく,CD−ROMドライブも通常はオフになっているので,つまりHDDしかない
状態に近いため,エラーは出ませんでしたが
CD−ROMをオンにした状態で,メディアが入っていないときはエラーになりました。
CとDは認識できて,E(CD−ROM)は認識できませんでした。
デスクトップのパソコンは,Aディスクがあり,Aから読み取りに行きますので,最初からエラーが発生してしまい
それ以後のドライブは何一つとして認識できませんでした。
それで全く動かないと勘違いしてしまいました。


原因がわかりましたので例外処理を組んでみたいと思います。
ありがとうございました。




解決済み
引用返信 編集キー/
■7669 / inTopicNo.8)  Re[6]: ドライブ情報取得アプリを他のパソコンに移すとエラーが出る
□投稿者/ 中野美奈子大好き (4回)-(2007/09/12(Wed) 20:48:29)
はつね様,ありがとうございました。
お聞きして良かったです。


以下のとおりで,上手くいきました。
メッセージボックスに,dInfo.Nameを引っ張ってくれば,どのドライブが準備できていないかも表示できました。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
            listBox1.Items.Add("DRIVE\t\tREADY?\t\tTYPE\t\tFREESPACE\t\tTOTALSPACE\t\tFORMAT");
            listBox1.Items.Add("-------------------------------------------------------------------------------------------------------------------");

            foreach (System.IO.DriveInfo dInfo
                in System.IO.DriveInfo.GetDrives())
            {
                try
                {
                double ts = Math.Round((double) dInfo.TotalSize / 1000000, 2);
                double tfs = Math.Round((double)dInfo.TotalFreeSpace / 1000000, 2);
                    listBox1.Items.Add
                        (
                        dInfo.Name + "\t\t"
                        + dInfo.IsReady + "\t\t"
                        + dInfo.DriveType.ToString() + "\t\t"
                        + tfs.ToString() + "MB \t\t"
                        + ts.ToString() + "MB \t\t"
                        + dInfo.DriveFormat.ToString()
                        );
                }
                catch (Exception)
                {
                    MessageBox.Show(dInfo.Name + "ドライブの準備ができていません。", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }

            }
        }
    }
}

引用返信 編集キー/
■7740 / inTopicNo.9)  Re[7]: ドライブ情報取得アプリを他のパソコンに移すとエラーが出る
□投稿者/ Jitta (420回)-(2007/09/13(Thu) 22:19:52)
> 原因がわかりましたので例外処理を組んでみたいと思います。
え?いや、あの。。。

if (dInfo.IsReady == true) {
  全部出す
} else {
  Name だけ出す
}

で良いんじゃないの?
つか、MSDN にまんまなサンプルがあるんだけど?

引用返信 編集キー/
■7822 / inTopicNo.10)  Re[8]: ドライブ情報取得アプリを他のパソコンに移すとエラーが出る
□投稿者/ 中野美奈子大好き (6回)-(2007/09/16(Sun) 22:50:15)
No7740 (Jitta さん) に返信
>>原因がわかりましたので例外処理を組んでみたいと思います。
> え?いや、あの。。。
>
> if (dInfo.IsReady == true) {
>   全部出す
> } else {
>   Name だけ出す
> }
>
> で良いんじゃないの?
> つか、MSDN にまんまなサンプルがあるんだけど?
>


ありがとうございました。
まだずぶの素人なもので,ご迷惑おかけしました。

あれから,Listにも該当ドライブに“準備できてません”と表示したり,最後にまとめて,E:F:J:のドライブは準備ができてませんと
メッセージボックスに出すようにしましたけど,
やはりこっちの方がずっとSmartですよね。
メディアを装着していないドライブは注意表示する必要ありませんよね。

ありがとうございました。遠回りでしたが,勉強になりました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -