![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
リストジェネリッククラスを使って、テキストファイルから取得したたくさんのデータ(数がわからない)を整理しながらWireless_ID_str02というデータの中に整理しながら入れていきたいんです。
下のプログラムでビルドはできるのですが、デバッグで見ていくと、i=20000ぐらいまで行くのですが、すべてのデータが全く同じデータで、決まって、テキストファイル内の一番最後の行のデータになってしまってました。
どうして、全く同じデータが収納されてしまうのか教えて頂けないでしょうか?
どうぞ、よろしくお願いします。
List<Wireless_unit_sig^>^ Wireless_ID_str02 = gcnew List<Wireless_unit_sig^>();
Wireless_unit_sig^ Wireless_unit_sig_temp = gcnew Wireless_unit_sig();
i=0;
while(( data = reader->ReadLine()) != nullptr ) {
// カンマ区切りで分解
array<String^>^ split = data->Split( separator );
#if 1
Wireless_unit_sig_temp->day_name = split[0];
Wireless_unit_sig_temp->month = split[1];
Wireless_unit_sig_temp->day = split[2];
Wireless_unit_sig_temp->time = split[3];
Wireless_unit_sig_temp->year = split[4];
Wireless_unit_sig_temp->cmd1 = split[5];
Wireless_unit_sig_temp->cmd2 = split[6];
Wireless_unit_sig_temp->ID = split[7];
Wireless_unit_sig_temp->sig1 = split[8];
Wireless_unit_sig_temp->sig2 = split[9];
Wireless_unit_sig_temp->batt_mount = split[10];
Wireless_unit_sig_temp->m_rssi = split[11];
Wireless_unit_sig_temp->s_rssi = split[12];
Wireless_unit_sig_temp->version = split[13];
#endif
Wireless_ID_str02->Add(Wireless_unit_sig_temp);
i++;
}
No.2ベストアンサー
- 回答日時:
>どうして、全く同じデータが収納されてしまうのか教えて頂けないでしょうか?
そのように処理するように、あなたが書いてるから。
同じインスタンス使い回してるんだから、そうなって当然。
>List<Wireless_unit_sig^>^ Wireless_ID_str02 = gcnew List<Wireless_unit_sig^>();
私はいったい何度「この意味を理解していますか」と書けばいいんだろう。
あなたが書いてるものを配列で書き直すと
Wireless_unit_sig^ Wireless_ID_str02[20000];
Wireless_unit_sig^ Wireless_unit_sig_temp = gcnew Wireless_unit_sig();
i = 0;
while ((data = reader->ReadLine()) != nullptr) {
array<String^>^ split = data->Split(separator);
Wireless_unit_sig_temp->day_name = split[0];
Wireless_unit_sig_temp->month = split[1];
Wireless_unit_sig_temp->day = split[2];
Wireless_unit_sig_temp->time = split[3];
Wireless_unit_sig_temp->year = split[4];
Wireless_unit_sig_temp->cmd1 = split[5];
Wireless_unit_sig_temp->cmd2 = split[6];
Wireless_unit_sig_temp->ID = split[7];
Wireless_unit_sig_temp->sig1 = split[8];
Wireless_unit_sig_temp->sig2 = split[9];
Wireless_unit_sig_temp->batt_mount = split[10];
Wireless_unit_sig_temp->m_rssi = split[11];
Wireless_unit_sig_temp->s_rssi = split[12];
Wireless_unit_sig_temp->version = split[13];
Wireless_ID_str02[i] = Wireless_unit_sig_temp;
i++;
}
になるんですが、これで何がおかしいのかわからないのであれば
「基本を勉強しなおしてこい」レベル(Listの使い方がわからないとか以前の話)
No.6
- 回答日時:
#5 へ
>ネイティブ配列にマネージ型を含むことはできません。
>コンパイルエラーです。
>C++/CLIを使ったことがあれば、一発で見抜けるデタラメです。
でたらめなのはわかってます。
できるだけ、わかりやすいように無理矢理、配列にしてるんですから。
C++/CLI使ってないのは認めますけどね
マネージ型使うならC#使う方が楽だし。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_09.png?e8efa67)
No.5
- 回答日時:
#2
>あなたが書いてるものを配列で書き直すと
>
>
>Wireless_unit_sig^ Wireless_ID_str02[20000];
>Wireless_unit_sig^ Wireless_unit_sig_temp = gcnew Wireless_unit_sig();
>i = 0;
>while ((data = reader->ReadLine()) != nullptr) {
>array<String^>^ split = data->Split(separator);
>
>Wireless_unit_sig_temp->day_name = split[0];
>Wireless_unit_sig_temp->month = split[1];
>Wireless_unit_sig_temp->day = split[2];
>Wireless_unit_sig_temp->time = split[3];
>Wireless_unit_sig_temp->year = split[4];
>Wireless_unit_sig_temp->cmd1 = split[5];
>Wireless_unit_sig_temp->cmd2 = split[6];
>Wireless_unit_sig_temp->ID = split[7];
>Wireless_unit_sig_temp->sig1 = split[8];
>Wireless_unit_sig_temp->sig2 = split[9];
>Wireless_unit_sig_temp->batt_mount = split[10];
>Wireless_unit_sig_temp->m_rssi = split[11];
>Wireless_unit_sig_temp->s_rssi = split[12];
>Wireless_unit_sig_temp->version = split[13];
>
>Wireless_ID_str02[i] = Wireless_unit_sig_temp;
>i++;
>}
>
> になるんですが、
なりません。理由は簡単です。
>Wireless_unit_sig^ Wireless_ID_str02[20000];
ネイティブ配列にマネージ型を含むことはできません。
コンパイルエラーです。
C++/CLIを使ったことがあれば、一発で見抜けるデタラメです。
>「基本を勉強しなおしてこい」
まあ、あなたも同じ穴の狢でしょうなあ。
うっひゃっひゃ。
No.4
- 回答日時:
#3で完璧に補足されちゃってますが、「作ったオブジェクトを使い回す」のが問題なのだから使い回さないためには「その都度オブジェクトを作る」だけ。
#2でも言われてますが基本レベルのことなのでコードはいちいち書きません。書いてもらわなきゃわからないというなら「基本からやり直してこい」というだけのことです。
No.3
- 回答日時:
「使い回さないようにすればいいと思っている」という認識は, いつできましたか?
#1 の回答をよく読んでください. ちゃんと
「『最初に一回だけオブジェクトを作って』使い回している」のが問題だ
と書かれていますよ. この文章から「どうすれば使いまわさないようにできるのか」を読み取ってください.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- 英語 ”Toyota unit Hino” のunitの使い方を教えてください 2 2022/08/26 13:36
- エアガン・モデルガン P210 carry には、マガジンが2つ入っている(装着されている)のでしょうか? 2 2023/02/02 14:33
- 北アメリカ P210 carry には、マガジンが2つ装着される(装着できる)のでしょうか? 1 2023/02/07 14:39
- エアガン・モデルガン P210 carry には、マガジンが2つ入っている(装着されている)のでしょうか? 1 2023/02/01 16:11
- 英語 P210 carry には、マガジンが2つ装着される(マガジンが2つ装着できる)のでしょうか? 3 2023/02/06 14:57
- イヤホン・ヘッドホン・補聴器 Beatsのヘッドホンをstockxで買おうと思ったんですが ・Beats by Dr. Dre I 0 2022/12/11 01:08
- 据え置き型ゲーム機 Xbox Series X を買ったら、Xbox One の Xbox ワイヤレス コントローラー… 3 2023/04/28 10:50
- Ruby パイソンエラーについて 1 2022/12/24 14:07
- Wi-Fi・無線LAN パソコンのWireless LAN adapterで、Wi-Fiと、ローカル エリア接続 3 2022/04/21 10:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
どのようなプログラムをつくれ...
-
csvで順番の入れ替え
-
perlでの三次元配列の作り方
-
配列の中に重複文字列があるか...
-
要素を削除する最適な方法
-
perlで複数行のデータを自由に...
-
pushをすると行ができる
-
ファイルから読み込んで配列へ
-
Perlの初歩的な質問・・・
-
行・列の整理! perl
-
C言語のバイナリモードでのfsca...
-
perl-cgi 文字の長さでソートし...
-
C言語でバイナリファイルの読み...
-
Pythonの再帰関数の動作の流れ...
-
CSVデータ「","」と「,」混在読...
-
perlで読み込んだURLを配列に入...
-
perlの無名配列の使い方を教え...
-
ソートのテクニックについて
-
ランダムでかぶらないように4...
-
頻度表の作成(Perl初心者です)
おすすめ情報