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

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

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

Re[22]: 配列について


(過去ログ 65 を表示中)

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

■37625 / inTopicNo.1)  配列について
  
□投稿者/ Sak-Tak (3回)-(2009/06/26(Fri) 11:03:09)

分類:[C#] 

配列について教えてください。

St="a-b-c";
string[] array = St.Split('-');

上記の記述ではもちろん文法はあっていると思うのですが、

string[] array;
St="a-b-c";
array = St.Split('-');

と記述すると、自分のPCでは正常に動作するのに人のPCだと例外が発生します。
PC環境の何が違うのでしょうか?
よろしくお願いいたします。

[VS2008+XP]
引用返信 編集キー/
■37627 / inTopicNo.2)  Re[1]: 配列について
□投稿者/ επιστημη (1993回)-(2009/06/26(Fri) 11:16:02)
επιστημη さんの Web サイト
> string[] array;
> St="a-b-c";
> array = St.Split('-');
>
> と記述すると、自分のPCでは正常に動作するのに人のPCだと例外が発生します。

んー...なんの問題もなさげなんですけどねー...
で、どの行でどんな例外が出るんです?

引用返信 編集キー/
■37628 / inTopicNo.3)  Re[1]: 配列について
□投稿者/ カドルドエグ (92回)-(2009/06/26(Fri) 11:16:08)
No37625 (Sak-Tak さん) に返信
>自分のPCでは正常に動作するのに人のPCだと例外が発生します。
> PC環境の何が違うのでしょうか?

お相手のPC環境を書いて頂かないとなんともいえませんが……^^;
ぱっと浮かぶのは.NET Frameworkのバージョンの違いだったり
サービスパックが当たってるか否かetc...
ではないかと。

引用返信 編集キー/
■37631 / inTopicNo.4)  Re[2]: 配列について
□投稿者/ Sak-Tak (5回)-(2009/06/26(Fri) 11:33:18)
No37627 (επιστημη さん) に返信
>>string[] array;
>>St="a-b-c";
>>array = St.Split('-');
>>
>>と記述すると、自分のPCでは正常に動作するのに人のPCだと例外が発生します。
>
> んー...なんの問題もなさげなんですけどねー...
> で、どの行でどんな例外が出るんです?
>
早速の返信ありがとうございます。
例外に書かれていることは、”アプリケーションのコンポーネントでハンドルされていない例外が発生しました。”そして”インデックスが配列の境界外です。”
です。
詳細ボタンを押すとJITデバッガについて書かれています。

例外が発生するPCには.NET3.5がインストールされています。(WinXP+SP3)
引用返信 編集キー/
■37632 / inTopicNo.5)  Re[3]: 配列について
□投稿者/ .SHO (899回)-(2009/06/26(Fri) 11:50:08)
別の場所で例外が発生してるんじゃないでしょうか?

書かれているソースがすべてじゃないですよね。
(St だって string St じゃないとコンパイルできないし…)

Split した結果を確認しようとして array[3] にアクセスしたとか。。。
引用返信 編集キー/
■37633 / inTopicNo.6)  Re[4]: 配列について
□投稿者/ επιστημη (1995回)-(2009/06/26(Fri) 11:52:34)
επιστημη さんの Web サイト
> Split した結果を確認しようとして array[3] にアクセスしたとか。。。

だとすると「自分のPCでは正常に動作する」の説明がつかねー。
引用返信 編集キー/
■37634 / inTopicNo.7)  Re[5]: 配列について
□投稿者/ .SHO (900回)-(2009/06/26(Fri) 11:57:09)
> だとすると「自分のPCでは正常に動作する」の説明がつかねー。

同じソースじゃないとか。

スレ主が問題としてる箇所は同じなんだけど
確認のために入れたソースは、ほかの人独自のものとか。
引用返信 編集キー/
■37638 / inTopicNo.8)  Re[5]: 配列について
□投稿者/ よねKEN (363回)-(2009/06/26(Fri) 13:39:47)
No37633 (επιστημη さん) に返信
>>Split した結果を確認しようとして array[3] にアクセスしたとか。。。
>
> だとすると「自分のPCでは正常に動作する」の説明がつかねー。

「St="a-b-c";」のような固定値を変数にセットしているところから想像するに、
提示のコードはこんな感じというのを示しているだけなのではないですかね。

自分のPCと他人のPCとで変数Stにセットされるデータが異なっているのでは?

引用返信 編集キー/
■37639 / inTopicNo.9)  Re[6]: 配列について
□投稿者/ επιστημη (1996回)-(2009/06/26(Fri) 13:47:13)
επιστημη さんの Web サイト
> 自分のPCと他人のPCとで変数Stにセットされるデータが異なっているのでは?

んむ。たとえば他人のPCでは ST="a-bc" だったとすれば、
Splitされた配列の[2]番目をアクセスしたらふっ飛びますわな。

引用返信 編集キー/
■37640 / inTopicNo.10)  Re[6]: 配列について
□投稿者/ みきぬ (494回)-(2009/06/26(Fri) 13:48:26)
No37638 (よねKEN さん) に返信
> 「St="a-b-c";」のような固定値を変数にセットしているところから想像するに、
> 提示のコードはこんな感じというのを示しているだけなのではないですかね。
>
> 自分のPCと他人のPCとで変数Stにセットされるデータが異なっているのでは?
>
例えば日付を取得して年月日に切り出すような処理で、OSの日付と時刻の設定が異なるために
うまくいく/いかないのような違いが出たのかなーと妄想したりしました。


でも元の質問を読むと、↓だと大丈夫で、↓↓だとダメだったというふうにもとれるのですが、どうなんでしょね。

> St="a-b-c";
> string[] array = St.Split('-');


> string[] array;
> St="a-b-c";
> array = St.Split('-');
引用返信 編集キー/
■37641 / inTopicNo.11)  Re[7]: 配列について
□投稿者/ επιστημη (1997回)-(2009/06/26(Fri) 13:54:13)
επιστημη さんの Web サイト
> でも元の質問を読むと、↓だと大丈夫で、↓↓だとダメだったというふうにもとれるのですが、どうなんでしょね。
>
>>St="a-b-c";
>>string[] array = St.Split('-');
>
>
>>string[] array;
>>St="a-b-c";
>>array = St.Split('-');

にもとれますね。
んなら ↑ を ↑↑ に書き換えれば双方でちゃんと動くことになるですね。

引用返信 編集キー/
■37647 / inTopicNo.12)  Re[7]: 配列について
□投稿者/ .SHO (902回)-(2009/06/26(Fri) 14:35:34)
> でも元の質問を読むと、↓だと大丈夫で、↓↓だとダメだったというふうにもとれるのですが、どうなんでしょね。
>
>>St="a-b-c";
>>string[] array = St.Split('-');
>
>
>>string[] array;
>>St="a-b-c";
>>array = St.Split('-');

とれますね。
でも、多分説明が下手なだけじゃないかと。。
↑は文法はあってる。って説明、いらないんじゃないのかな?
引用返信 編集キー/
■37648 / inTopicNo.13)  Re[7]: 配列について
□投稿者/ Sak-Tak (6回)-(2009/06/26(Fri) 14:43:34)
2009/06/26(Fri) 14:45:54 編集(投稿者)
2009/06/26(Fri) 14:45:50 編集(投稿者)

みなさんありがとうございます。
PCをひたすら行き来して検証してみました。

String Stはある配列A(FileData)の1要素づつ取り出したデータです。
その配列の1要素(St)を"-"で分解し配列B(array) に入れてました。

その際for文で
string St;
string[] array;
for (int i = 0; i < FileData.Length; i++) {
St=FileData[i];
array = St.Split('-');
}
としていました。

配列arrayの要素数がiの値によって変動するのが原因なのでしょうか?
たぶん、それ以外に考えられないです。

string St;
for (int i = 0; i < FileData.Length; i++) {
St=FileData[i];
string[] array = St.Split('-');
}

このようにしたら、大丈夫のようです。
初歩的な事かもしれません。そうだとしたらすいません。
しかし、PCによって動作が異なるというのは・・・。

引用返信 編集キー/
■37649 / inTopicNo.14)  Re[8]: 配列について
□投稿者/ επιστημη (1998回)-(2009/06/26(Fri) 14:49:21)
επιστημη さんの Web サイト
> PCをひたすら行き来して検証してみました。

こっちPC と あっちPC とで、FileDataは同じもんなんですよね?

引用返信 編集キー/
■37650 / inTopicNo.15)  Re[9]: 配列について
□投稿者/ Sak-Tak (7回)-(2009/06/26(Fri) 14:52:04)
No37649 (επιστημη さん) に返信
>>PCをひたすら行き来して検証してみました。
>
> こっちPC と あっちPC とで、FileDataは同じもんなんですよね?
>

はい、もちろん一緒です。
引用返信 編集キー/
■37651 / inTopicNo.16)  Re[10]: 配列について
□投稿者/ よねKEN (364回)-(2009/06/26(Fri) 14:55:04)
>>こっちPC と あっちPC とで、FileDataは同じもんなんですよね?
>
> はい、もちろん一緒です。

それはどのように確認されましたか?

> ”インデックスが配列の境界外です。”

という例外が発生しているというお話からは、
実際は配列FileDataの中身が異なっていると考えられます。
引用返信 編集キー/
■37652 / inTopicNo.17)  Re[11]: 配列について
□投稿者/ gtk2k (10回)-(2009/06/26(Fri) 14:59:18)
なんか、一方は最後が改行のみという可能性が十分考えられる。

// ('-')
// てか、これ妙にかわいいんだが。
引用返信 編集キー/
■37653 / inTopicNo.18)  Re[11]: 配列について
□投稿者/ Sak-Tak (8回)-(2009/06/26(Fri) 15:01:49)
No37651 (よねKEN さん) に返信
> >>こっちPC と あっちPC とで、FileDataは同じもんなんですよね?
>>
>>はい、もちろん一緒です。
>
> それはどのように確認されましたか?
>
>>”インデックスが配列の境界外です。”
>
> という例外が発生しているというお話からは、
> 実際は配列FileDataの中身が異なっていると考えられます。

FileDataの配列はあるファイルから1行づつ読み込みFileDataに代入しております。
そのファイルは、ライブラリファイルとして使用しておりますので、変更することはないのです。
念のため、確認しましたが一緒でした。

引用返信 編集キー/
■37654 / inTopicNo.19)  Re[12]: 配列について
□投稿者/ Sak-Tak (10回)-(2009/06/26(Fri) 15:10:34)
No37652 (gtk2k さん) に返信
> なんか、一方は最後が改行のみという可能性が十分考えられる。
>
> // ('-')
> // てか、これ妙にかわいいんだが。

改行はありませんでした。
引用返信 編集キー/
■37656 / inTopicNo.20)  Re[13]: 配列について
 
□投稿者/ みきぬ (495回)-(2009/06/26(Fri) 15:29:54)
2009/06/26(Fri) 15:30:34 編集(投稿者)

// [壁]*'-') ジー

「どこで」例外が起きているか、我々には結局わかってないのよねぇ。
String.Split() では発生しないはずだ(よね?)から、その結果を使っている何かしらの処理で起こってるだろうとは思うんだけど。


簡単なプログラムをこしらえて、そこで再現させることはできるかしら? ファイルから読み込むかわりに、

string[] stArray = new string[] { "a-b-c", "a-b-c-d", ... };

のような配列から1要素ずつ取り出して処理を行うような感じで。

# typo修正
引用返信 編集キー/

次の20件>
トピック内ページ移動 / << 0 | 1 >>

管理者用

- Child Tree -