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

BASP21のRcvMail

  • 題名: BASP21のRcvMail
  • 著者: ArAy
  • 日時: 2004/02/11 22:56:08
  • ID: 2456
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[Windows XP, VS.NET2003 C#]
分類:[.NET]

BASP21を使ってC#でプログラミングしているのですが、
戻り値がObject型なのは、なぜでしょうか?
ヘルプには配列って書いてあるんですけど、(多分String型だと思います。)
どうやって戻り値を取得すればいいかわかりません。
(キャストでもできませんでした。)

どうか教えてください。
補足ですがヘルプは
http://www.hi-ho.ne.jp/babaq/basp21.html
にあります。

よろしくお願いします
ArAyさん、こんばんは。深山と申します。

> BASP21を使ってC#でプログラミングしているのですが、
> 戻り値がObject型なのは、なぜでしょうか?
 なぜでしょうと言われても‥‥(^_^;)
 え〜と、それは多分この BASP21 が汎用コンポーネントだからではないでしょうか?
VBScript など、変数の型というものが存在しない(と言い切っちゃうと語弊があるかなぁ/汗)
ものもありますから。

> ヘルプには配列って書いてあるんですけど、(多分String型だと思います。)
> どうやって戻り値を取得すればいいかわかりません。
>(キャストでもできませんでした。)
 ヘルプは拝見してませんけど、これは単純にキャストの仕方を間違えているからでは?
配列の次元数が異なっているとか。
 一度デバッグして変数の値を確認されることをオススメします。


 蛇足かとは思いますが、以下配列へのキャスト例になります。
# 直打ちしてるのでタイプミスがあるかも。

    object o = new string[,] {{"1", "2", "3"}, {"4", "5", "6"}};
    Console.WriteLine(((string [,])o)[0, 1]);
    // 2 が出力される
■No2458に返信(深山さんの記事)
>  ArAyさん、こんばんは。深山と申します。
>
>>BASP21を使ってC#でプログラミングしているのですが、
>>戻り値がObject型なのは、なぜでしょうか?
>  なぜでしょうと言われても‥‥(^_^;)
>  え〜と、それは多分この BASP21 が汎用コンポーネントだからではないでしょうか?
> VBScript など、変数の型というものが存在しない(と言い切っちゃうと語弊があるかなぁ/汗)
> ものもありますから。
>
>>ヘルプには配列って書いてあるんですけど、(多分String型だと思います。)
>>どうやって戻り値を取得すればいいかわかりません。
> >(キャストでもできませんでした。)
>  ヘルプは拝見してませんけど、これは単純にキャストの仕方を間違えているからでは?
> 配列の次元数が異なっているとか。
>  一度デバッグして変数の値を確認されることをオススメします。
>
>
>  蛇足かとは思いますが、以下配列へのキャスト例になります。
> # 直打ちしてるのでタイプミスがあるかも。
>
> object o = new string[,] {{"1", "2", "3"}, {"4", "5", "6"}};
> Console.WriteLine(((string [,])o)[0, 1]);
> // 2 が出力される

ありがとうございます。
変数は1次元だと思われます。
しかし、キャストがうまくいきません。

string[] maillist = ((string[])(basp21.RcvMail(pop3svname, pop3user, pop3pass, "LIST", temppath)));

上のようにやってはいけないのでしょうか。
何卒よろしくお願いします。
> string[] maillist = ((string[])(basp21.RcvMail(pop3svname, pop3user, pop3pass, "LIST", temppath)));
>
> 上のようにやってはいけないのでしょうか。

例外のメッセージは何と出ているのでしょう?
また、
basp21.RcvMail(pop3svname, pop3user, pop3pass, "LIST", temppath).GetType()
で戻り値のTypeを調べてみて下さい。
■No2479に返信(よねKENさんの記事)
>>string[] maillist = ((string[])(basp21.RcvMail(pop3svname, pop3user, pop3pass, "LIST", temppath)));
>>
>>上のようにやってはいけないのでしょうか。
>
> 例外のメッセージは何と出ているのでしょう?
---------------------------------------------------------
'System.InvalidCastException' のハンドルされていない例外が csMailer.exe で発生しました。

追加情報 : 指定されたキャストは有効ではありません。
---------------------------------------------------------
と出ています。どうすればよいのでしょうか。
途方にくれています。

> basp21.RcvMail(pop3svname, pop3user, pop3pass, "LIST", temppath).GetType()
> で戻り値のTypeを調べてみて下さい。
TypeはSystem.Object[]でした。
>
> >>string[] maillist = ((string[])(basp21.RcvMail(pop3svname, pop3user, pop3pass, "LIST", temppath)));

GetTypeメソッドで調べていただいた結果からすると

Object[] maillist = ((Object[])(basp21.RcvMail(pop3svname, pop3user, pop3pass, "LIST", temppath)));

これが正解だと思います。
さらに、
maillist[0]〜maillist[maillist.Lengh-1]のそれぞれについて、
GetTypeメソッドを呼んでTypeを調べてください。調べたら、今度は配列の各要素をその型にキャストするコードを書きましょう。

>>例外のメッセージは何と出ているのでしょう?
> ---------------------------------------------------------
> 'System.InvalidCastException' のハンドルされていない例外が csMailer.exe で発生しました。
>
> 追加情報 : 指定されたキャストは有効ではありません。
> ---------------------------------------------------------
> と出ています。どうすればよいのでしょうか。

そのメッセージの中にxxxx型からyyyy型へはキャストできません・・・といったような
補足情報ってありませんでした?なかったなら、ないで構わないですけどね。
先にGetTypeメソッドでTypeを調べて下さいと書いたのは、そうすることで、
本当は何の型にキャストしないといけないか判断できるからです。
> GetTypeメソッドで調べていただいた結果からすると
>
> Object[] maillist = ((Object[])(basp21.RcvMail(pop3svname, pop3user, pop3pass, "LIST", temppath)));
>
> これが正解だと思います。
わかりました。

> さらに、
> maillist[0]〜maillist[maillist.Lengh-1]のそれぞれについて、
> GetTypeメソッドを呼んでTypeを調べてください。調べたら、今度は配列の各要素をその型にキャストするコードを書きましょう。
foreachでやればよいのですね。
>
> >>例外のメッセージは何と出ているのでしょう?
>>---------------------------------------------------------
>>'System.InvalidCastException' のハンドルされていない例外が csMailer.exe で発生しました。
>>
>>追加情報 : 指定されたキャストは有効ではありません。
>>---------------------------------------------------------
>>と出ています。どうすればよいのでしょうか。
>
> そのメッセージの中にxxxx型からyyyy型へはキャストできません・・・といったような
> 補足情報ってありませんでした?なかったなら、ないで構わないですけどね。
ありませんでした。
本当にありがとうございます。また後で挑戦してみます。
  • 題名: Re[8]: BASP21のRcvMail
  • 著者: ArAy
  • 日時: 2004/02/14 0:12:43
  • ID: 2505
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示

> 本当にありがとうございます。また後で挑戦してみます。
できました!(感激)
本当に本当にありがとうございました。!!
解決済み!

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