DOBON.NET DOBON.NETプログラミング掲示板過去ログ

BASP21のGetDirメソッドの使い方について

分類:[.NET]

かずです。

DBサーバ上に置いてあるファイルの作成日時を取得しようと思っています。

現在は、BASP21オブジェクトのGetDirメソッドを利用して、ファイルの情報を取得させようと思っているのですが、エラーが出てしまいます。
エラーは※部分で、「指定されたキャストは有効ではありません。」と出ます。

    Private aFtp As BASP21Lib.FTPClass
aFtp = New BASP21Lib.FTPClass
※ Dim list As Array = aFtp.GetDir("サーバ上のディレクトリ", 2)
flInfo = list(0)

どの型で宣言するとうまくいくのかがわかりません。
どなたかおしえていただけませんか??

もしくは、他にもっといい方法があれば教えてください。

よろしくお願いします。
環境はVB.NETで、Windowsアプリケーションです。
■No1245に返信(かずさんの記事)
> ※ Dim list As Array = aFtp.GetDir("サーバ上のディレクトリ", 2)

Dim list() As String = aFtp.GetDir("サーバ上のディレクトリ", 2)

だとどうでしょうか?
■No1248に返信(よねKENさんの記事)
> ■No1245に返信(かずさんの記事)
>>※ Dim list As Array = aFtp.GetDir("サーバ上のディレクトリ", 2)
>
> Dim list() As String = aFtp.GetDir("サーバ上のディレクトリ", 2)
>
> だとどうでしょうか?
>
かずです。

同じ結果になってしまいます。
Dim list As String()
や、
Dim list As String
でもダメでした。

BASP21のライブラリではあまり詳しくかかれていなくて・・・。
http://www.hi-ho.ne.jp/babaq/basp21f.html
> >>※ Dim list As Array = aFtp.GetDir("サーバ上のディレクトリ", 2)
>>
>>Dim list() As String = aFtp.GetDir("サーバ上のディレクトリ", 2)
>>
>>だとどうでしょうか?
>>
> かずです。
>
> 同じ結果になってしまいます。
> Dim list As String()
> や、
> Dim list As String
> でもダメでした。

そうですか。だめでしたか。
As Objectで宣言しておけば、たぶん、受け取るのは受け取れると思いますが、
その場合にlist(0)のようにそのままアクセスできるかどうかはわかりません。

Object型で受けて、GetTypeメソッドで受け取った戻り値の型を調べてみてはどうでしょう。

> BASP21のライブラリではあまり詳しくかかれていなくて・・・。
> http://www.hi-ho.ne.jp/babaq/basp21f.html

GetDir関数の戻り値の型が書かれていませんが、
戻り値の使用から言って、内部に配列を持つVariant型になっていると思います。
.NETにはVariant型はないので、.NETでこの戻り値をどう扱えばよいかは私もよく知りません。

Googleでざっくりと調べた範囲では2件ほどVariant型の扱いについての
質問がありましたが、2件ともレスなしでした。。。。

> As Objectで宣言しておけば、たぶん、受け取るのは受け取れると思いますが、
> その場合にlist(0)のようにそのままアクセスできるかどうかはわかりません。
>
> Object型で受けて、GetTypeメソッドで受け取った戻り値の型を調べてみてはどうでしょう。
Object型でやってみました。
通るのですが、結果が空白で返ってきてしまったので、
ほかにもいろいろ直してみます。


> GetDir関数の戻り値の型が書かれていませんが、
> 戻り値の使用から言って、内部に配列を持つVariant型になっていると思います。
> .NETにはVariant型はないので、.NETでこの戻り値をどう扱えばよいかは私もよく知りません。
>
> Googleでざっくりと調べた範囲では2件ほどVariant型の扱いについての
> 質問がありましたが、2件ともレスなしでした。。。。
ですね。
わたしも調べてみましたが、見つかりませんでした。

よねKEN様、どうもありがとうございます。
何かわかり次第またカキコしに来ます。
よろしくお願いします。
続報(?)です。

というか、すみません。
できていたのにわたしの勘違いで、別の部分に原因がありました。
ファイル情報取得に関しては、

Dim list As Array = aFtp.GetDir("サーバ上のファイルのフルパス", 2)
flInfo = list(0)

でOKでした。

ここから、日付部分のみを切り出すと、ファイル作成日時が取得できるようです。

(原因としては、BASP21を同じクラス内で2度インスタンス化していたというものでした・・・)

丁寧に回答くださってありがとうございました。(&すみませんでした・・・)
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板