bluecampus の回答履歴

全333件中41~60件表示
  • c#で(",")区切りのcsvファイルから読み込みを行うには?

    駆け出しの初心者です。 以前c言語を少々勉強していてcsvファイルの読み込み、書き出しを練習していたのですが、最近c#を使うようになり、その便利さに圧倒されております。 今回c#で読み込みたいcsvファイルは以下のようになっております "abc","123","あいうえお" ただのカンマ区切りであれば読み込みは簡単ですが、 上記のようにダブルクオーテーションでそれぞれの文字列が囲まれている場合に文字列だけを読み込み、配列に代入していくのに何かスムーズな方法はありませんでしょうか? ちなみに現在単純にカンマ区切りのcsvファイルを読み込むコードを 書いた所ですので、載せておきます これをいじってスムーズにいければうれしいのですが、いかがでしょうか? private void LoadData() { string path = "Data.csv"; string delimStr = ",";//区切り文字 char[] delimiter = delimStr.ToCharArray(); string[] strData;//分解後の文字用変数 string strLine;//1行分のデータ Boolean fileExists = System.IO.File.Exists(path); if (fileExists) { System.IO.StreamReader sr = new System.IO.StreamReader( path, System.Text.Encoding.Default); while (sr.Peek() >= 0) { strLine = sr.ReadLine(); strData = strLine.Split(delimiter); DataSet.DataTable.AddDataTableRow( DateTime.Parse(strData[0]), strData[1],    strData[2], int.Parse(strData[3]), strData[4]); } sr.Close(); } } いつも丁寧な回答で協力してくれる皆様には心から感謝しております。 どうぞよろしくお願いします。

  • 指定回数の確認?

    質問です。 テキストボックスに0~9まで数字を入れて、 5を入力してボタンを押すと、 IF関数等で5回別々な命令を出したいのですが、 どうすればいいでしょうか? 例: [5] [Button1] ←押す 00001.txt 00002.txt 00003.txt 00004.txt 00005.txt ←まで存在確認したい。場合等 00006.txt

  • _tcscpy_s(wcscpy_s)の第二引数って

    http://msdn.microsoft.com/ja-jp/library/td1esda9%28VS.80%29.aspx を見て、たとえば以下のような関数を書いたとします。 TCHAR* fn; void OMG(LPCTSTR c){ int bytes( ( _tcslen(c) + 1 )*sizeof(TCHAR) ); if ( fn = (TCHAR*)malloc( bytes ) ) _tcscpy_s( fn, bytes, c ); //実行しないでください else return; /* fnを使用 */ free(fn); fn=0; } これ、マルチバイトだと正常に出来るのですが なぜかUnicodeだと落ちてしまいました。 第2引数の説明は コピー先の文字列バッファのサイズ。 <英語版でも> Size of the destination string buffer. となっていますが、その上に numberOfElements って書いてあるのでまさかと思い サイズではなく文字数に変えたら、どうも正常に動作するようになったようです。 とくに_sがつく関数は文字数だったりバッファサイズだったりまちまちな感がもともとあるのに、しかも こういうところでこういうことがあると厳しいものがあるのですが これは本当に誤植なのでしょうか? また、かなり稀なケースであり本当に誤植だとしたら、MSDNの他の文字列操作関数には記述の誤りがあるものはありますか?

  • isalpha()関数について

    isalpha()関数について ◆開発環境 OS:Linux(Ubuntu9.10) コンパイラ:gcc4.4 IDE:eclipse 言語:C 《質問内容》 現在、char型配列A[8](最大8桁の文字列が格納されるため)に英字から始まる文字列(英字・数字)を入力し、 2文字目の文字を英字かどうか判別し、if文で分岐させようとしているのですが、 この2文字目の文字をisalpha()にかけても、英字と判別せず、思い通りの処理ができない状態で 困っています。 現状、以下のソースですと、"D0"ならelse ifに入りますが、"SM0"と入れるとifに入らずに、else ifに入ってしまいます。(2文字目は英字なのに…) 以下に、参考ソースを添付します。 どなたか、お分かりの方いらっしゃいましたら、ご教授お願いします。 できれば、isalphaの使い方等も詳しく教えていただけたら幸いです。(webで調べるとisalpha(int c)と書いてあり、文字の判別にint?とかなり疑問です。一応、ソース上ではchar型にキャストしてますが。) 《ソース》 char A[9]="";      //最大8桁の文字列(英字・数字)が入る char B[3]="";        //A,B入れ替え用バッファ char C[7]=""; //最大6桁の文字列(数字)が入る char code[2]="";      //判別用バッファ int C_val; //Cの10進値格納変数(後で使う) fscanf(stdin,"%s",&A); strncpy(code,,A+1,1);                  //code[2]に"0"をコピー if( (unsigned char)isalpha(code) != 0){          //codeが英字なら先頭2文字は英字 strncpy(B,A,2);             strncpy(C,A+2,strlen(A)-2); C_val=atoi(C); //Cの10進化 strcpy(A,"");    //Aの初期化 strcpy(A,B); strcpy(B,""); //Bの初期化 } else if( (unsigned char)isalpha(code) == 0){    //codeが英字でないなら先頭1文字が英字 strncpy(B,A,1); strncpy(C,A+1,strlen(A)-1); C_val=atoi(C);          //Cの10進化 strcpy(A,""); //Aの初期化 strcpy(A,B); strcpy(B,""); //Bの初期化 }

    • ベストアンサー
    • noname#107905
    • C・C++・C#
    • 回答数4
  • Visual C++ Express Edition でもprintf

    Visual C++ Express Edition でもprintfを使いたい 私は、Visual C++ 2008 Express Editionを使っています。  以前はVisual Studio 2005 Professionalを使っていました。 今まではプログラムを走らせている間の変数の変化を見るために、 printf関数を使って「出力」ウィンドウに数値を表示させていました。 Visual C++ 2008 Express Editionに変更してから、 同一のソースコードをコンパイル、実行しても printf文で記述した出力内容を「出力」ウィンドウに表示させることができません。 これは、Express Edition特有のものでしょうか? printfを使って変数を表示できる方法があれば教えてください。 よろしくお願いします。

  • Visual C++ Express Edition でもprintf

    Visual C++ Express Edition でもprintfを使いたい 私は、Visual C++ 2008 Express Editionを使っています。  以前はVisual Studio 2005 Professionalを使っていました。 今まではプログラムを走らせている間の変数の変化を見るために、 printf関数を使って「出力」ウィンドウに数値を表示させていました。 Visual C++ 2008 Express Editionに変更してから、 同一のソースコードをコンパイル、実行しても printf文で記述した出力内容を「出力」ウィンドウに表示させることができません。 これは、Express Edition特有のものでしょうか? printfを使って変数を表示できる方法があれば教えてください。 よろしくお願いします。

  • ダイアログ上でマウスが止まった事を認識できますか。

    ダイアログ上でマウスが止まった事を認識できますか。 MFCを駆使してダイアログに画像を出力するまでは できました。しかし,そのあと,画像上にマウスで四角の 領域を囲みたいのですが,うまくいきません。 以下にマウスが動く時のソースを記します。 void CDlgDefine::OnMouseMove(UINT nFlags, CPoint point) {  e_pt=point;  CBrush Brush;  CBrush* pBrush;  //s_ptはマウス左ボタン押下時,CPointから座標を取得しています  CRect rect(s_pt.x,s_pt.y,e_pt.x,e_pt.y);  rect.NormalizeRect();  Brush.CreateSolidBrush(RGB(0, 255, 0));  pBrush= pDC->SelectObject(&Brush);  pDC->FrameRect(rect,pBrush);  Invalidate();//これが無い場合,マウスが動くと沢山四角が描かれてしまうのです。 } これで動かすと,マウスが動く瞬間四角がでるのですが,止まると消えてしまいます。 マウスが止まった時,四角がダイアログの画像上に描かれる方法はないでしょうか?

  • ダイアログボックスのコメント

    いつもお世話になっております。 VS2005でC++を用いてWindowsアプリケーションの作成をしています。 ダイアログボックス内にラジオボタンが2つあり、 どちらかのラジオボタンにチェックを入れた時点で ダイアログ内の空いたスペースにコメント(スタティックテキスト?) を表示させたいと考えています。(ヘルプ的な感じ) このような場合、コメントとして使うのは 「スタティックテキスト」でいいのでしょうか。 またどのように表示・非表示の切り替え?をすればいいのでしょうか。 宜しければ方法を教えていただきたいです。 ご教授お願いいたします。

  • CListCtrlで行の高さを指定したい。

    お世話になります。 MFC C++6.0 で開発しております。 CListCtrlでリストを作成しているのですが、 CreateFontで16ポイントの文字を指定した行の高さが10だとすると、 12ポイントの文字を指定した行の高さが自動で5になります。 12ポイントの文字を指定しても、文字の大きさは12ポイントのままで、 行の高さだけ、10にすることは可能なのでしょうか? お手数ですが、よろしくお願いします。

  • リストコントロール内の文字の大きさ(ポイント数を)別々にしたい。

    お世話になります。 MFC C++6.0で開発しております。 オーナードローを利用して、リストを書いているのですが、 (CListCtrlで) 1列目・1行目の文字は文字の大きさが12ポイント 1列目の2行目の文字は大きさが14ポイントなどのように変更したいのですが、これは、DrawTextで実現できるのでしょうか? お手数ですが何卒よろしくお願いします。

  • テキストファイルの各行の文字列を、コンボBoxに表示させたい

    テキストファイルの各行の文字列を、コンボBoxに表示させたい 現在VC++ MFCの勉強をしております。(MFCに拘ってはおりません) 下のテキストファイル"D:\data.txt" (Shift_JIS)から (内容) 田中さん 斉藤さん 吉田さん CFile の Read で一行ずつ読み込んで、CStringArrayを使って コンボBox に Insert したいと思っています。 下記のコードについてですが。 BOOL CAddDialog::OnInitDialog() { CDialog::OnInitDialog(); // TODO: ここに初期化を追加してください TCHAR* pszFileName = L"d:\\data.txt"; CFileException fileException; CFile cFile; int ret; char buffLine[256] ; CStringArray cStrComboArr ; // リスト ret = cFile.Open( pszFileName , CFile::modeRead | CFile::shareDenyNone , &fileException ); if ( ret == false ) { AfxMessageBox( L"ファイルが読込めません。" ); return 1; } while ( (ret = cFile.Read( &buffLine , 256 )) != 0 ) { cStrComboArr.Add( buffLine ); /* ここでビルドエラー */ } cFile.Close(); // コンボboxに入れる CComboBoxEx* pCombo = (CComboBoxEx*) GetDlgItem( IDC_COMBOBOXEX1 ); COMBOBOXEXITEM cbi ; cbi.mask = CBEIF_TEXT; for ( int i = 0; i < cStrComboArr.GetCount(); i++ ) { cbi.iItem = i; cbi.pszText = (LPTSTR)(LPCTSTR) cStrComboArr.ElementAt(i) ; // 「'CString' から 'LPWSTR' に変換できません」から。 cbi.cchTextMax = 256; pCombo->InsertItem( &cbi ); } return TRUE; // return TRUE unless you set the focus to a control // 例外 : OCX プロパティ ページは必ず FALSE を返します。 } cStrComboArr.Add( buffLine ); の部分でエラー表示は、 「INT_PTR CStringArray::Add(LPCTSTR)' : 1 番目の引数を 'char [256]' から 'LPCTSTR' に変換できません。」です。 根本的にやり方が間違っているのか、もう少しのところなのか、 ズバッとご指摘いただけないでしょうか。 宜しくお願いします。 OS : Vista Home Premium VS 2008 pro

  • テキストファイルの各行の文字列を、コンボBoxに表示させたい

    テキストファイルの各行の文字列を、コンボBoxに表示させたい 現在VC++ MFCの勉強をしております。(MFCに拘ってはおりません) 下のテキストファイル"D:\data.txt" (Shift_JIS)から (内容) 田中さん 斉藤さん 吉田さん CFile の Read で一行ずつ読み込んで、CStringArrayを使って コンボBox に Insert したいと思っています。 下記のコードについてですが。 BOOL CAddDialog::OnInitDialog() { CDialog::OnInitDialog(); // TODO: ここに初期化を追加してください TCHAR* pszFileName = L"d:\\data.txt"; CFileException fileException; CFile cFile; int ret; char buffLine[256] ; CStringArray cStrComboArr ; // リスト ret = cFile.Open( pszFileName , CFile::modeRead | CFile::shareDenyNone , &fileException ); if ( ret == false ) { AfxMessageBox( L"ファイルが読込めません。" ); return 1; } while ( (ret = cFile.Read( &buffLine , 256 )) != 0 ) { cStrComboArr.Add( buffLine ); /* ここでビルドエラー */ } cFile.Close(); // コンボboxに入れる CComboBoxEx* pCombo = (CComboBoxEx*) GetDlgItem( IDC_COMBOBOXEX1 ); COMBOBOXEXITEM cbi ; cbi.mask = CBEIF_TEXT; for ( int i = 0; i < cStrComboArr.GetCount(); i++ ) { cbi.iItem = i; cbi.pszText = (LPTSTR)(LPCTSTR) cStrComboArr.ElementAt(i) ; // 「'CString' から 'LPWSTR' に変換できません」から。 cbi.cchTextMax = 256; pCombo->InsertItem( &cbi ); } return TRUE; // return TRUE unless you set the focus to a control // 例外 : OCX プロパティ ページは必ず FALSE を返します。 } cStrComboArr.Add( buffLine ); の部分でエラー表示は、 「INT_PTR CStringArray::Add(LPCTSTR)' : 1 番目の引数を 'char [256]' から 'LPCTSTR' に変換できません。」です。 根本的にやり方が間違っているのか、もう少しのところなのか、 ズバッとご指摘いただけないでしょうか。 宜しくお願いします。 OS : Vista Home Premium VS 2008 pro

  • VB6.0にてStreamReaderを使用したいのですが、

    VB6.0にてStreamReaderを使用したいのですが、 Dim Reader As New IO.StreamReader("C:\Windows\System32\eula.txt", のコードが赤字でエラーになります。 どう修正すればよろしいでしょうか? ご存知の方教えてください。よろしくお願いします。 Dim strTemp As String Dim Reader As New IO.StreamReader("C:\Windows\System32\eula.txt", System.Text.Encoding.GetEncoding("Shift-JIS")) strTemp = Reader.ReadToEnd msgobox strTemp Reader.Close

  • テキストファイルの各行の文字列を、コンボBoxに表示させたい

    テキストファイルの各行の文字列を、コンボBoxに表示させたい 現在VC++ MFCの勉強をしております。(MFCに拘ってはおりません) 下のテキストファイル"D:\data.txt" (Shift_JIS)から (内容) 田中さん 斉藤さん 吉田さん CFile の Read で一行ずつ読み込んで、CStringArrayを使って コンボBox に Insert したいと思っています。 下記のコードについてですが。 BOOL CAddDialog::OnInitDialog() { CDialog::OnInitDialog(); // TODO: ここに初期化を追加してください TCHAR* pszFileName = L"d:\\data.txt"; CFileException fileException; CFile cFile; int ret; char buffLine[256] ; CStringArray cStrComboArr ; // リスト ret = cFile.Open( pszFileName , CFile::modeRead | CFile::shareDenyNone , &fileException ); if ( ret == false ) { AfxMessageBox( L"ファイルが読込めません。" ); return 1; } while ( (ret = cFile.Read( &buffLine , 256 )) != 0 ) { cStrComboArr.Add( buffLine ); /* ここでビルドエラー */ } cFile.Close(); // コンボboxに入れる CComboBoxEx* pCombo = (CComboBoxEx*) GetDlgItem( IDC_COMBOBOXEX1 ); COMBOBOXEXITEM cbi ; cbi.mask = CBEIF_TEXT; for ( int i = 0; i < cStrComboArr.GetCount(); i++ ) { cbi.iItem = i; cbi.pszText = (LPTSTR)(LPCTSTR) cStrComboArr.ElementAt(i) ; // 「'CString' から 'LPWSTR' に変換できません」から。 cbi.cchTextMax = 256; pCombo->InsertItem( &cbi ); } return TRUE; // return TRUE unless you set the focus to a control // 例外 : OCX プロパティ ページは必ず FALSE を返します。 } cStrComboArr.Add( buffLine ); の部分でエラー表示は、 「INT_PTR CStringArray::Add(LPCTSTR)' : 1 番目の引数を 'char [256]' から 'LPCTSTR' に変換できません。」です。 根本的にやり方が間違っているのか、もう少しのところなのか、 ズバッとご指摘いただけないでしょうか。 宜しくお願いします。 OS : Vista Home Premium VS 2008 pro

  • CListCtrl の特定のセル(アイテム?)の文字だけ中央で表示したい

    お世話になります。 C++6.0 MFCで開発しております。 CListCtrlに InsertItem(行数,文字) SetItemText(行数,列数,文字) で値を入力しています。 しかしながら 文字の内容が"-"だった時だけ、中央に表示したいのです。 ※その他の文字の時は、左揃えで表示 どのようにすれば、特定のアイテムだけ中央に揃える事ができるでしょうか? 以上お手数ですがよろしくお願いします。

  • VB6.0にて、ワールド変換(ピクチャーボックスの左下を原点にする)を

    VB6.0にて、ワールド変換(ピクチャーボックスの左下を原点にする)をしたいのですが、 下記のコードを記述するとエラーとなります。 どこが駄目なのかわかりませんので、どなたか教えていただけませんでしょうか? お手数をおかけしますがどうぞよろしくお願いします。 PictureBox1のGraphicsオブジェクトを取得 Dim g As Graphics = Form1.PictureBox1.CreateGraphics() g.TranslateTransform(0, Form1.picturebox1.Height - 1) g.ScaleTransform(1, -1) g.Dispose()

  • [C#]このコードはもっと速くなると思いますか?

    フォルダ内の全ファイルを取得する、以下のようなコードを組んでみました。 このコードではFileInfoを配列に入れていますが、厳密には「ファイル名」「ファイルパス」「ファイルサイズ」「更新日時」を格納したリストが欲しいです。 using System; using System.Collections.Generic; using System.Diagnostics; static void Main(string[] args) { Stopwatch sw = new Stopwatch(); sw.Start(); //windows xpを使っています DirectoryInfo di = new DirectoryInfo(@"C:\WINDOWS"); test(di); sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); } //ファイル情報を格納する配列 static List<FileInfo> list = new List<FileInfo>(); //全ファイルの探索 static void test(DirectoryInfo di) { foreach(FileInfo fi in di.GetFiles()) list.Add(fi); foreach(DirectoryInfo ddi in di.GetDirectories()) test(ddi); } ちなみに私の環境では1000ms前後の結果になります。 このリストを取得するのに、さらにスピードアップさせる方法はあると思いますか? どんな些細な事でも良いので答えて下さるとありがたいです。

  • C# DLL エントリ ポイントが見つかりません。

    C#で作成したDLLをC#から呼出したいのですが、うまくいきません。 // トリガ private void button2_Click(object sender, EventArgs e) { string ans = DLL.moji(); MessageBox.Show(ans); } // DLL呼出し用クラス class DLL { [DllImport("LibCsharp.dll")] public static extern string moji(); } // DLL(LibCsharp.dll内容) class AddClass { public static string moji() { return ("テスト"); } } 上記で実行すると「EntryPointNotFoundException DLL 'LibCsharp.dll' の 'moji' というエントリ ポイントが見つかりません。」となります。 プロジェクトの参照設定にはLibCsharpを追加しています。 Web上で調べたのですが、解決には至っておりません。 申し訳ありませんが、よろしくお願いします。

  • C# DLL エントリ ポイントが見つかりません。

    C#で作成したDLLをC#から呼出したいのですが、うまくいきません。 // トリガ private void button2_Click(object sender, EventArgs e) { string ans = DLL.moji(); MessageBox.Show(ans); } // DLL呼出し用クラス class DLL { [DllImport("LibCsharp.dll")] public static extern string moji(); } // DLL(LibCsharp.dll内容) class AddClass { public static string moji() { return ("テスト"); } } 上記で実行すると「EntryPointNotFoundException DLL 'LibCsharp.dll' の 'moji' というエントリ ポイントが見つかりません。」となります。 プロジェクトの参照設定にはLibCsharpを追加しています。 Web上で調べたのですが、解決には至っておりません。 申し訳ありませんが、よろしくお願いします。

  • C# DLL エントリ ポイントが見つかりません。

    C#で作成したDLLをC#から呼出したいのですが、うまくいきません。 // トリガ private void button2_Click(object sender, EventArgs e) { string ans = DLL.moji(); MessageBox.Show(ans); } // DLL呼出し用クラス class DLL { [DllImport("LibCsharp.dll")] public static extern string moji(); } // DLL(LibCsharp.dll内容) class AddClass { public static string moji() { return ("テスト"); } } 上記で実行すると「EntryPointNotFoundException DLL 'LibCsharp.dll' の 'moji' というエントリ ポイントが見つかりません。」となります。 プロジェクトの参照設定にはLibCsharpを追加しています。 Web上で調べたのですが、解決には至っておりません。 申し訳ありませんが、よろしくお願いします。