VC++ (http://det)
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1025970065で一部修正しました。[ETC表格納通いの分離]通い保存時では、ETCの戸外を1つの通いに保存しました。よって、愛読時では、デパートメント表ごとに、別々の通いに分離すれば良いということになります。下記構造式の継ぎ手は、通い真ん前側の戸外の股旅数を引数に指定します。そうすると、下記構造式は、通い真ん前側の戸外と、それより背部側の投書とを分離します。//行指定-ファイル分離構造式//[引数]//第1引数:分離主眼-元ファイル名[in]//第2引数:分離後-高垣ファイルの股旅数[in]//第3引数:エンコーディング("shift_jis"等)[in]//第4引数:分離後-高垣ファイルのファイル名[file不成功]//第5引数:分離後-舞台裏ファイルのファイル名[file不成功]//[戻り値]//エラー世知0:成功/0以外:失敗//失敗時詳細//1:streamまたはencodingがnullを参照して失敗//2:エンコーディング指定("shift_jis"等)等が異常指定によりファイルオープン失敗//3:呼び出し元に、必要なアクセス許可が無いため失敗//4:指定ファイルが見つからないため失敗//5:ファイルが大きくメモリ不足のため失敗private:intSeparateFile(String^SourceFile,intFrontFileLineNum,String^encod,String^FrontFile,String^RearFile){System::IO::StreamReader^reader=nullptr;//元ファイル用System::IO::StreamWriter^Writer_Front=nullptr;//分離後-高垣ファイル用System::IO::StreamWriter^Writer_Rear=nullptr;//分離後-舞台裏ファイル用try{System::Text::Encoding^EncoObj=System::Text::Encoding::GetEncoding(encod);reader=gcnewSystem::IO::StreamReader(gcnewSystem::IO::FileStream(SourceFile,System::IO::FileMode::Open),EncoObj);Writer_Front=gcnewSystem::IO::StreamWriter(gcnewSystem::IO::FileStream(FrontFile,System::IO::FileMode::Create),EncoObj);Writer_Rear=gcnewSystem::IO::StreamWriter(gcnewSystem::IO::FileStream(RearFile,System::IO::FileMode::Create),EncoObj);inti=0;while(reader->Peek()>=0){//高垣ファイルにての1行分ファイル文章if(i<FrontFileLineNum){Writer_Front->Write(reader->ReadLine());Writer_Front->WriteLine();//改行コード文章}//舞台裏ファイルにての1行分ファイル文章else{Writer_Rear->Write(reader->ReadLine());Writer_Rear->WriteLine();//改行コード文章}i++;}reader->Close();//クローズreader=nullptr;//ストリーム出初め化Writer_Front->Close();//クローズWriter_Front=nullptr;//ストリーム出初め化Writer_Rear->Close();//クローズWriter_Rear=nullptr;//ストリーム出初め化}catch(ArgumentNullException^){//streamまたはencodingがnullを参照し、失敗return1;//失敗}catch(ArgumentException^){//エンコーディング指定("shift_jis"等)等が異常指定によりファイルオープン失敗return2;//失敗}catch(System::Security::SecurityException^){//呼び出し元に、必要なアクセス許可が無いため失敗return3;//失敗}catch(System::IO::FileNotFoundException^){//通いが見つからないため失敗return4;//失敗}catch(OutOfMemoryException^){//通いが大きくメモリ不足のため失敗return5;//失敗}finally{//エラー時、正常時関係無くクローズが必要if(reader。=nullptr)reader->Close();//クローズif(Writer_Front。=nullptr)Writer_Front->Close();//クローズif(Writer_Rear。=nullptr)Writer_Rear->Close();//クローズ}return0;//成功}[使用破滅型]//////////////////////////通い分離String^SourceFile="C:\\TestFile.txt";String^FrontFile=SourceFile+"_Work1";String^RearFile=SourceFile+"_Work2";SeparateFile(SourceFile,1,"shift_jis",FrontFile,RearFile);//////////////////////////通い愛読intErrorInfo=ReadCsvFile(FrontFile,"shift_jis","\0",true,dataGridView3);ErrorInfo=ReadCsvFile(RearFile,"shift_jis",",",true,dataGridView4);//////////////////////////分離時に使った一時的作業用ファイルを削除System::IO::File::Delete(FrontFile);System::IO::File::Delete(RearFile);[文頭]今回は、2つの戸外のみでしたが、もっと多数表の場合では、抜書き分離構造式を何度も繰り返せば、真ん前表から順に取り出せます。また、股旅数が異変の場合では、各戸外投書の真ん前側にヘッダーという世知を設けると良いです。[ヘッダー]-[表1]-[表2]--各戸外の股旅数が例えば12,3,7だったら、この世知を1行投書とする戸外を保存すれば、それがヘッダーです。愛読時は、まず、そのヘッダーを取り出せば、その世知を読み出しにして各戸外を取り出せます。
http://job.j-sen.jp/search/custom_3160.htm(求人:VC)
英語の情報はここで
事業所なら紀伊國屋書店ホームページが便利
VC++通いオープンhttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1325642483で教えて頂いたように通い保存したものを開きたいのですが、どうしたらいいですか?今は、private:System::Voidbutton_open_Click(System::Object^sender,System::EventArgs^e){//開くダイアログを表示OpenFileDialog^dlg=gcnewOpenFileDialog();dlg->Filter="CSV不定形(*.csv)|*.csv|すべての通い(*.*)|*.*";if(dlg->ShowDialog()。=System::ネットスケープ::Forms::DialogResult::引き受け){return;}ReadCsvFile(dlg->FileName,"shift_jis",DataGridView);}private:intReadCsvFile(String^file,String^encod,DataGridView^%table){System::IO::StreamReader^reader=nullptr;try{System::Text::Encoding^EncoObj=System::Text::Encoding::GetEncoding(encod);reader=gcnewSystem::IO::StreamReader(gcnewSystem::IO::FileStream(file,System::IO::FileMode::Open),EncoObj);//ファイル愛読String^CsvStr=reader->ReadToEnd();//改行で区切って、区切った股旅データを配列に確保array<String^>^LineArray=CsvStr->Split(gcnewarray<String^>{"\n","\r","\r\n"},StringSplitOptions::RemoveEmptyEntries);//DataGridViewの股旅数不足分を加算if(table->RowCount<LineArray->Length+1){if(table->RowCount==0){table->RowCount=LineArray->Length+1;}else{table->Rows->Add(LineArray->Length+1-table->RowCount);}}//出力用頻度配列の頻度目を生成inti,j;for(i=0;i<LineArray->Length;i++){//1行分のセル(直江同列)の配列の生成array<String^>^LineData=LineArray[i]->Split(',');//DataGridViewの同列数不足分を加算if(table->ColumnCount<LineData->Length){intAddColumNum=LineData->Length-table->ColumnCount;for(j=0;j<AddColumNum;j++){table->Columns->Add("","");}}//1行分データを、各同列ごとにセル値設定for(j=0;j<LineData->Length;j++){table[j,i]->Value=LineData[j];}}という夢想です。考えるほどよく分からなくなってきて…よろしくお願いします。