DOBON.NETプログラミング掲示板過去ログ
DragDropされたファイル名を取得したい
題名: DragDropされたファイル名を取得したい
著者: ヒトサン
日時: 2004/11/03 16:28:19
ID: 7133
この記事の返信元:
(なし)
この記事への返信:
[7134]
Re[1]: DragDropされたファイル名を取得したい
YUSK
2004/11/03 16:33:30
[7145]
Re[1]: DragDropされたファイル名を取得したい
管理人
2004/11/04 3:11:50
ツリーを表示
環境/言語:[Win2000 VB.net .Net Framworks 1.1]
分類:[.NET]
http://dobon.net/vb/dotnet/control/droppedfile.html
上記リンクのコードでファイル名を取得できるんですが、
Option Strict On にすると、
「暗黙的な変換はできません」や「遅延バインディングを使用できません」
となり、ビルドエラーが発生してしまいます。
どなたか対処法を教えてください。
題名: Re[1]: DragDropされたファイル名を取得したい
著者: YUSK
日時: 2004/11/03 16:33:30
ID: 7134
この記事の返信元:
[7133]
DragDropされたファイル名を取得したい
ヒトサン
2004/11/03 16:28:19
この記事への返信:
[7135]
Re[2]: DragDropされたファイル名を取得したい
YUSK
2004/11/03 16:42:04
ツリーを表示
>暗黙的な変換はできません
キャストしても駄目ですか?
>遅延バインディングを使用できません
このエラーはなった事がないので、後で試して見ます。
題名: Re[2]: DragDropされたファイル名を取得したい
著者: YUSK
日時: 2004/11/03 16:42:04
ID: 7135
この記事の返信元:
[7134]
Re[1]: DragDropされたファイル名を取得したい
YUSK
2004/11/03 16:33:30
この記事への返信:
[7136]
Re[3]: DragDropされたファイル名を取得したい
きいぼー
2004/11/03 17:10:00
ツリーを表示
Option Strict Onと、言うコードはhttp://dobon.net/vb/dotnet/control/droppedfile.html
にはないのですが、具体的な箇所を教えてもらえば、解決できるかもしれません(初心者なんで、かもです)。
題名: Re[3]: DragDropされたファイル名を取得したい
著者: きいぼー
日時: 2004/11/03 17:10:00
ID: 7136
この記事の返信元:
[7135]
Re[2]: DragDropされたファイル名を取得したい
YUSK
2004/11/03 16:42:04
この記事への返信:
[7137]
Re[4]: DragDropされたファイル名を取得したい
YUSK
2004/11/03 17:40:10
ツリーを表示
きいぼーです。
YUSKさんへ
> Option Strict Onと、言うコードは
クラスのファイルの先頭に記述します。
記述無しの場合は
Option Strict Off
と同じです。
ヒトサン さんへ
エラーの場合は、どの部分でエラーとなっているのか記述すると
的確な回答をもらえると思います。
※ 教えてくれる人に無駄な時間を取らせることになります。
Dim fileName() As String = _
e.Data.GetData(DataFormats.FileDrop, False)
今回は、多分この部分だと思います。この部分ですと。
e.Data.GetDataは、Object型を返します。
それを Stringの1次元配列に入れているのでエラーとなります。
Option Strict On にしていると
暗黙のキャストは実行されないので、
エラーとなります。
Option Strict Off
にしていると、キャストがなされるので、エラーにならずに実行されます。
題名: Re[4]: DragDropされたファイル名を取得したい
著者: YUSK
日時: 2004/11/03 17:40:10
ID: 7137
この記事の返信元:
[7136]
Re[3]: DragDropされたファイル名を取得したい
きいぼー
2004/11/03 17:10:00
この記事への返信:
[7138]
Re[5]: DragDropされたファイル名を取得したい
ヒトサン
2004/11/03 22:01:40
ツリーを表示
もう解決してるかもしれませんが、参考までに。
http://support.microsoft.com/default.aspx?scid=kb;ja;311329
題名: Re[5]: DragDropされたファイル名を取得したい
著者: ヒトサン
日時: 2004/11/03 22:01:40
ID: 7138
この記事の返信元:
[7137]
Re[4]: DragDropされたファイル名を取得したい
YUSK
2004/11/03 17:40:10
この記事への返信:
[7139]
Re[6]: DragDropされたファイル名を取得したい
YUSK
2004/11/03 22:06:51
ツリーを表示
YUSKさん、きいぼーさん ありがとうございます。
YUSKさんへ>
せっかくすぐに返信していただいたのに、返事が遅れてすみません。
MSDNの説明を理解する能力がなくて一人で悩んでいました。
きいぼーさんへ>
すべておっしゃる通りです。
Option Strict Off にすればDragDropでファイル名を取得する目的は果たせるんですが、
コードのメインの部分でループを多用しているので、少しでも実行速度を上げたくて
Option Strict On にしました。
エラーの箇所は画像を添付しておきます。
(この記事にはファイル"1099486900.jpg"が添付されていましたが、削除されました。)
題名: Re[6]: DragDropされたファイル名を取得したい
著者: YUSK
日時: 2004/11/03 22:06:51
ID: 7139
この記事の返信元:
[7138]
Re[5]: DragDropされたファイル名を取得したい
ヒトサン
2004/11/03 22:01:40
この記事への返信:
[7141]
Re[7]: DragDropされたファイル名を取得したい
ヒトサン
2004/11/03 22:17:47
ツリーを表示
キャストしてみましたか?
暗黙的に変換できない場合は、色々と方法があるようですが、キャストするのが一番早いと思います。
キャスト=明示的に変換する事です。
#キャストの仕方が分からない・・・?
題名: Re[7]: DragDropされたファイル名を取得したい
著者: ヒトサン
日時: 2004/11/03 22:17:47
ID: 7141
この記事の返信元:
[7139]
Re[6]: DragDropされたファイル名を取得したい
YUSK
2004/11/03 22:06:51
この記事への返信:
[7142]
Re[8]: DragDropされたファイル名を取得したい
ヒトサン
2004/11/03 22:26:32
ツリーを表示
Object型をString型にキャストする方法があるんですか?
初歩すぎてスミマセン...。
題名: Re[8]: DragDropされたファイル名を取得したい
著者: ヒトサン
日時: 2004/11/03 22:26:32
ID: 7142
この記事の返信元:
[7141]
Re[7]: DragDropされたファイル名を取得したい
ヒトサン
2004/11/03 22:17:47
この記事への返信:
[7143]
Re[9]: DragDropされたファイル名を取得したい
YUSK
2004/11/03 22:37:47
ツリーを表示
この場合の
e.Data.GetData(DataFormats.FileDrop, False)
はたぶんObject型の配列になると思います。
その配列の最初の要素のファイル名文字列を
String型変数に代入したいのです...。
題名: Re[9]: DragDropされたファイル名を取得したい
著者: YUSK
日時: 2004/11/03 22:37:47
ID: 7143
この記事の返信元:
[7142]
Re[8]: DragDropされたファイル名を取得したい
ヒトサン
2004/11/03 22:26:32
この記事への返信:
[7144]
Re[10]: DragDropされたファイル名を取得したい
ヒトサン
2004/11/04 0:21:17
ツリーを表示
オブジェクト型は、string型にキャストできないんですか?
smlFileName = (string)e.Data.GetData(DataFormats.FileDrop, False)
じゃ駄目ですか?
よく分からないんですが・・・。
これだと変換できないのかな?
#間違ってたらすいません。
題名: Re[10]: DragDropされたファイル名を取得したい
著者: ヒトサン
日時: 2004/11/04 0:21:17
ID: 7144
この記事の返信元:
[7143]
Re[9]: DragDropされたファイル名を取得したい
YUSK
2004/11/03 22:37:47
この記事への返信:
[7146]
Re[11]: DragDropされたファイル名を取得したい
ガッ……ぅ
2004/11/04 3:14:10
ツリーを表示
どうも駄目みたいです...。
Private Sub Form1_DragDrop(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DragEventArgs) Handles MyBase.DragDrop
Dim xmlFileName as String
xmlFileName = CStr(e.Data.GetData(DataFormats.FileDrop, False))
とすると、ビルドエラーはなくなるんですが、実行すると
xmlFileName = CStr(e.Data.GetData(DataFormats.FileDrop, False))
のところで無限ループにはまったようになり、次のコードに進みません。
もうあきらめてOption Strict Offにした方がいいんでしょうか?
YUSKさん、いろいろとありがとうございました。
題名: Re[1]: DragDropされたファイル名を取得したい
著者: 管理人
URL:
http://dobon.net
日時: 2004/11/04 3:11:50
ID: 7145
この記事の返信元:
[7133]
DragDropされたファイル名を取得したい
ヒトサン
2004/11/03 16:28:19
この記事への返信:
[7148]
Re[2]: DragDropされたファイル名を取得したい
ヒトサン
2004/11/04 9:16:48
[解決]
ツリーを表示
■No7133に返信(ヒトサンさんの記事)
> http://dobon.net/vb/dotnet/control/droppedfile.html
> 上記リンクのコードでファイル名を取得できるんですが、
> Option Strict On にすると、
> 「暗黙的な変換はできません」や「遅延バインディングを使用できません」
> となり、ビルドエラーが発生してしまいます。
Dim fileName() As String = CType(e.Data.GetData(DataFormats.FileDrop, False), String())
としてください。
題名: Re[11]: DragDropされたファイル名を取得したい
著者: ガッ……ぅ
日時: 2004/11/04 3:14:10
ID: 7146
この記事の返信元:
[7144]
Re[10]: DragDropされたファイル名を取得したい
ヒトサン
2004/11/04 0:21:17
この記事への返信:
(なし)
ツリーを表示
■No7144に返信(ヒトサンさんの記事)
> どうも駄目みたいです...。
>
> Private Sub Form1_DragDrop(ByVal sender As Object, _
> ByVal e As System.Windows.Forms.DragEventArgs) Handles MyBase.DragDrop
> Dim xmlFileName as String
> xmlFileName = CStr(e.Data.GetData(DataFormats.FileDrop, False))
>
> とすると、ビルドエラーはなくなるんですが、実行すると
> xmlFileName = CStr(e.Data.GetData(DataFormats.FileDrop, False))
> のところで無限ループにはまったようになり、次のコードに進みません。
>
> もうあきらめてOption Strict Offにした方がいいんでしょうか?
> YUSKさん、いろいろとありがとうございました。
VB.Net使ったことないから良く分からんが。
型キャストはCType関数なのかもしらん…
CStr関数の戻り値は、CStr関数の引数によって違うみたいだぞ。
・Boolean→"True" / "False"の文字列
・日付型→日付を表す文字列
・数値→数値を表す文字列
で、きっと"e.Data.GetData(DataFormats.FileDrop, False)"は上の三つのうちどれかに
暗黙的にキャストされていると思われる。
…ぉ
IDataObject.GetData メソッドで、いいのがあるじゃん。
Overloads Function GetData(String) As Object
とか、
Overloads Function GetData(Type) As Object
が使える見たいだぞ?(VB)
題名: Re[2]: DragDropされたファイル名を取得したい
著者: ヒトサン
日時: 2004/11/04 9:16:48
ID: 7148
この記事の返信元:
[7145]
Re[1]: DragDropされたファイル名を取得したい
管理人
2004/11/04 3:11:50
この記事への返信:
[7149]
Re[3]: DragDropされたファイル名を取得したい
java.lang.Nullpo
2004/11/04 9:50:15
[解決]
ツリーを表示
管理人さんへ>
> Dim fileName() As String = CType(e.Data.GetData(DataFormats.FileDrop, False), String())
のコードで正常にキャストできました!
CType関数は何度も使っていますが、ObjectType に String型の配列を指定しなければならないというのは完全に盲点でした。
(実は、ObjectTypeに配列ではないString型を指定して、あれれっ? と思ってました。恥ずかし〜!!)
ガッ……ぅさんへ>
実は CType(expression, String)
と CStr(expression) の違いがよく分からずに使っています。
結果は同じだと思うんですが...。
戻り値に配列が指定できる分だけ Ctype の方が高機能な気がする...。
実行速度に差があるかも...?
みなさんのおかげで無事解決しました。
ありがとうございました。
解決済み!
題名: Re[3]: DragDropされたファイル名を取得したい
著者: java.lang.Nullpo
日時: 2004/11/04 9:50:15
ID: 7149
この記事の返信元:
[7148]
Re[2]: DragDropされたファイル名を取得したい
ヒトサン
2004/11/04 9:16:48
[解決]
この記事への返信:
(なし)
ツリーを表示
■No7148に返信(ヒトサンさんの記事)
> ガッ……ぅさんへ>
> 実は CType(expression, String)
> と CStr(expression) の違いがよく分からずに使っています。
>
> 結果は同じだと思うんですが...。
> 戻り値に配列が指定できる分だけ Ctype の方が高機能な気がする...。
> 実行速度に差があるかも...?
しかし、通常は ToString() を使うべきかと思うのですが...。
解決済み!
DOBON.NET
|
プログラミング道
|
プログラミング掲示板
分類:[.NET]
http://dobon.net/vb/dotnet/control/droppedfile.html
上記リンクのコードでファイル名を取得できるんですが、
Option Strict On にすると、
「暗黙的な変換はできません」や「遅延バインディングを使用できません」
となり、ビルドエラーが発生してしまいます。
どなたか対処法を教えてください。