- PR -

リストビューの項目取得、書込みの方法を御教授願います

投稿者投稿内容
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2006-05-06 11:20
引用:

くまさんさんの書き込み (2006-05-06 10:13) より:
と括ると、: error C3274: try と一致しない finallyになるのですが
こんな場合どのように処理すればよいのでしょうか?



投稿日時: 2006-05-05 00:02の私のサンプルがどこでStreamWriterという変数が宣言
されているか良く見てください。

それと、変数の有効範囲というのはC言語の基本中の基本です。
このまま突き進んでも、また単純な文法で躓いてしまうでしょう。
きちんと、基本を勉強なされてから先に行くことを進めます。

今更ですが
引用:

Blueさんはじめましてよろしくお願い致します


はじめましてではないですよね?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-05-06 13:00
引用:

くまさんさんの書き込み (2006-05-06 10:13) より:

と括ると、: error C3274: try と一致しない finallyになるのですが


これについては Blue さんから既に回答がついていますが...
制御構造は構造化言語からの基本だと思います。

ブラケットがどう対応するかを考えてみてください。
(そのために (人間は) インデントというものをつけるんですけど)

引用:

finally
{
  sw->Close();
}


ついで言えば、null チェックも必須です。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
くまさん
会議室デビュー日: 2006/05/04
投稿数: 9
投稿日時: 2006-05-09 18:59
じゃんぬねっとさん
どうもありがとうございました、言語の学習方法など色々ご意見があるかと思いますが
もう一点だけ教えてもらえませんでしょうか

下記のコードでファイル数が54個までなら正常に開けるのですが、55個以上開こうとすると、
System.IO.endOfStreamException: ストリームの終わりを超えて読み取ることはできません。場所System.IO._Error.EndOFFile(...
となり開くことができません。
MSDN
http://msdn2.microsoft.com/ja-jp/library/system.io.endofstreamexception.aspx
等を参考に色々試して見ましたが解決にいたりません、デバッギングすると
arg_5 = binReader->ReadByte();
の所でエラーが起きているようです、有効な対処法を教えていただけないでしょうか。

コード:

#pragma endregion
private: System::Void toolStripButton1_Click(System::Object^ sender, System::EventArgs^ e) {
using ::System::Windows::Forms::DialogResult;

unsigned char arg_1, arg_2;

unsigned char arg_3, arg_4;

unsigned char arg_5;

void command_word(unsigned char arg_1, unsigned char arg_2);

void parameter(unsigned char arg_3, unsigned char arg_4);

OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog;
openFileDialog1->InitialDirectory = "C:\\data";
openFileDialog1->Filter = "全てのファイルAll files (*.*)|*.*";
openFileDialog1->FilterIndex = 2;
openFileDialog1->RestoreDirectory = true;

//複数のファイルを選択できるようにする
openFileDialog1->Multiselect = true;

if ( openFileDialog1->ShowDialog() == ::DialogResult::OK )
{
listView1->Items->Clear();
for each ( String^ file in openFileDialog1->FileNames )
{
IO::BinaryReader^ binReader = gcnew IO::BinaryReader( IO::File::OpenRead( file ) );
binReader->BaseStream->Position = 0;
try
{
arg_1 = binReader->ReadByte();
arg_2 = binReader->ReadByte();
arg_3 = binReader->ReadByte();
arg_4 = binReader->ReadByte();
arg_5 = binReader->ReadByte();
}
catch ( EndOfStreamException^ e ){MessageBox::Show( "Error: 読込エラーが起きました", e->ToString());
}
finally
{
binReader->Close();
}
command_word(arg_1, arg_2);

parameter(arg_3, arg_4);

int iomega = file->LastIndexOf( L'\\' );

String^ fname = file->Substring( iomega );

String^ com = gcnew String( command );

String^ par = gcnew String( param );

String^ ver = gcnew String( version );

String^ dev = gcnew String( device );

String^ seq = arg_5.ToString("X2") + "h";

String^ hex_1 = System::String::Format("{0:X2} ", arg_1);
String^ hex_2 = System::String::Format("{0:X2} ", arg_2);
String^ hex_3 = System::String::Format("{0:X2} ", arg_3);
String^ hex_4 = System::String::Format("{0:X2} ", arg_4);
String^ hex_5 = System::String::Format("{0:X2} ", arg_5);
String^ hex = hex_1 + hex_2 + hex_3 + hex_4 + hex_5;
array< String^ >^ item = { fname, com, par, ver, dev, seq, hex };
listView1->Items->Add( gcnew ListViewItem( item ) );
}
}
}




[ メッセージ編集済み 編集者: くまさん 編集日時 2006-05-09 19:02 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-05-09 20:39
引用:

くまさんさんの書き込み (2006-05-09 18:59) より:

下記のコードでファイル数が54個までなら正常に開けるのですが、55個以上開こうとすると、
(snip)
arg_5 = binReader->ReadByte(); の所でエラーが起きているようです


ファイル数は関係あるんでしょうか?

引用:

arg_1 = binReader->ReadByte();
arg_2 = binReader->ReadByte();
arg_3 = binReader->ReadByte();
arg_4 = binReader->ReadByte();
arg_5 = binReader->ReadByte();


arg_4 の時点で、ストリームの終端に達しているだけじゃないのですか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

スキルアップ/キャリアアップ(JOB@IT)