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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■15215  Re[17]: std::ofstream とCFileの書き込み速度
□投稿者/ セイン -(2008/03/07(Fri) 10:19:27)
    No15210 (アキラ さん) に返信
    > ■No15209 (セイン さん) に返信
    > 
    >>自分なりにofstreamの中を追いかけてみたところ、
    >>以下の関数を使って書き込みをしていました。
    >>C言語のfputsじゃなかったんですね^^;
    >>basic_streambuf::sputn
    >>basic_streambuf::sputc
    >>
    > 
    > いえ、VC++8.0のofstreamはfwrite, fputcを使ってます
    
    あうぅ。ごめんなさい僕の力不足です。そうなんですね。
    
    以下ソースになるのですが、速度にそれぞれ差が出ました。
    一番下に書いてあるのが、fputcになります。
    ofstreamよりfputcのほうが僕の環境では遅くなります。
    
    
    
    メイン関数側
    	CLogHlp m_Log;
    	m_Log.CreateWriteFile("C:\\tmp.txt");
    
    	CString str;
    	for(int i = 0; i < 100000; i++) {
    		str.Format("%10d\t", i);
    		m_Log.Write(str);
    	}
    
    	m_Log.WirteFileUnload();
    
    
    
    
    ログ書き込みクラス
    #pragma once
    #include <fstream>
    
    class CLogHlp
    {
    public:
    	CLogHlp() 
    	{
    	}
    
    	~CLogHlp() 
    	{
    		try {
    			WirteFileUnload();
    		} catch(...) {}
    	}
    
    	/** ファイル読み込み @return TRUE:オープン成功 FALSE:失敗 */
    	BOOL CreateWriteFile
    	(
    		LPCSTR path					///< [I]ファイルパス
    	)
    	{
    		int ret = TRUE;
    		try{
    			// ファイル作成
    			if(mWriteFile.Open(path, CFile::modeCreate|CFile::modeWrite) != TRUE) {
    				ret = FALSE;
    			}
    		}catch(...) {
    			ret = FALSE;
    		}
    		return ret;
    	}
    
    	/* オープン中のファイルクローズ */
    	void WirteFileUnload()
    	{
    		if(mWriteFile.m_hFile != CFile::hFileNull) {
    			mWriteFile.Close();
    		}
    	}
    
    	/* 書き込み */
    	BOOL Write
    	(
    		CString str					///< [I]保存内容
    	)
    	{
    		int ret = TRUE;
    		try {
    			mWriteFile.Write(str, str.GetLength());
    		}
    		catch(...) {
    			ret = FALSE;
    		}
    		return ret;
    	}
    
    private:
    	// 書き込み用ファイル
    	CFile mWriteFile;
    };
    
    
    
    class CLogHlp
    {
    public:
    	CLogHlp() 
    	{
    	}
    
    	~CLogHlp() 
    	{
    		try {
    			WirteFileUnload();
    		} catch(...) {}
    	}
    
    	/** ファイル読み込み @return TRUE:オープン成功 FALSE:失敗 */
    	BOOL CreateWriteFile
    	(
    		LPCSTR path					///< [I]ファイルパス
    	)
    	{
    		try {
    			setlocale(LC_ALL, "Japanese"); 
    			// ファイルオープン
    			fsm.open(path, std::ios::trunc | std::ios::out);
    			if(fsm.is_open() == false)
    			{
    				// 既にオープン中
    				return FALSE;
    			}
    		}
    		catch(...) {
    			return FALSE;
    		}
    		return TRUE;
    	}
    
    	/* オープン中のファイルクローズ */
    	void WirteFileUnload()
    	{
    		if(fsm.is_open() == true)
    		{				
    			// ファイルのクローズ
    			fsm.close();
    		}
    	}
    
    	/* 書き込み */
    	BOOL Write
    	(
    		CString str					///< [I]保存内容
    	)
    	{
    		int ret = TRUE;
    		try {
    			fsm << (LPCSTR)str;
    		}
    		catch(...) {
    			ret = FALSE;
    		}
    		return ret;
    	}
    
    private:
    	// ファイルストリーム
    	std::ofstream	fsm;
    };
    
    
    
    class CLogHlp
    {
    public:
    	CLogHlp() 
    	{
    	}
    
    	~CLogHlp() 
    	{
    		try {
    			WirteFileUnload();
    		} catch(...) {}
    	}
    
    	/** ファイル読み込み @return TRUE:オープン成功 FALSE:失敗 */
    	BOOL CreateWriteFile
    	(
    		LPCSTR path					///< [I]ファイルパス
    	)
    	{
    		try {
    		  if((fopen_s( &fp, path, "w" )) != 0 ){
    			  return FALSE;
    		  }
    
    		}
    		catch(...) {
    			return FALSE;
    		}
    		return TRUE;
    	}
    
    	/* オープン中のファイルクローズ */
    	void WirteFileUnload()
    	{
    		try {
    			fclose(fp);
    		}
    		catch(...) {
    		}
    	}
    
    	/* 書き込み */
    	BOOL Write
    	(
    		CString str					///< [I]保存内容
    	)
    	{
    		int ret = TRUE;
    		try {
    			fputs(str, fp);
    		}
    		catch(...) {
    			ret = FALSE;
    		}
    		return ret;
    	}
    
    private:
    	// ファイルストリーム
    	FILE *fp;
    };
    
記事No.14968 のレス /過去ログ31より / 関連記事表示
削除チェック/

■23318  Re[5]: エラーメッセージ表示時の音の差異について
□投稿者/ もょもと -(2008/08/12(Tue) 16:54:36)
    2008/08/12(Tue) 17:28:51 編集(投稿者)

    ???
    先ほどのコードでは一般の警告音は消音されなかったということでしょうか?
    テキストボックス内でEnterキーが押下された場合、警告音を消音、という記述なのですが…。


    Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
    If e.KeyCode = Keys.Enter Then
    [共通関数呼出]
    End If
    End Sub

    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
    If e.KeyChar = Chr(Keys.Enter) Then
    'Beep音を消音
    e.Handled = True
    End If
    End Sub


    上記のようにKeyPressイベントで本来の警告音を消音し、
    Enterキー押下時の共通関数を呼び出す処理はKeyDownイベントで行ってみても駄目ですか?
記事No.23278 のレス /過去ログ44より / 関連記事表示
削除チェック/

■85276  Re[4]: カメラ台数を増やす
□投稿者/ しろ -(2017/09/30(Sat) 12:37:54)
    説明が間違ていてすみません
    開始とビデオデバイス取得画像表示のところが
    カメラを増やした時の設定方法がわかりません。
    ビデオデバイス一覧を表示する部分は多分これで
    いいともうのですが間違っているでしょうか?

    'ビデオデバイス一覧を表示する
    _videoDevices = New FilterInfoCollection(FilterCategory.VideoInputDevice)

    ComboBox1.Items.Clear()
    If _videoDevices.Count <> 0 Then
    For Each device In _videoDevices
    ComboBox1.Items.Add(device.Name)
    Next
    ComboBox1.SelectedIndex = 0
    End If
    End Sub

    Dim _videoSource As VideoCaptureDevice = Nothing

    'ビデオデバイス一覧を表示する
    _videoDevices = New FilterInfoCollection(FilterCategory.VideoInputDevice)

    ComboBox2.Items.Clear()
    If _videoDevices.Count <> 0 Then
    For Each device In _videoDevices
    ComboBox2.Items.Add(device.Name)
    Next
    ComboBox2.SelectedIndex = 0
    End If
    End Sub

    Dim _videoSource As VideoCaptureDevice = Nothing
    '[開始]
    Private Sub StartButton_Click(sender As Object, e As EventArgs) Handles StartButton.Click
    If ComboBox1.Items.Count = 0 Then
    Return
    End If

    Dim MonikerString = _videoDevices(ComboBox1.SelectedIndex).MonikerString '最初のビデオデバイスを使用

    _videoSource = New VideoCaptureDevice(MonikerString)
    AddHandler _videoSource.NewFrame, AddressOf Me.Video_NewFrame
    _videoSource.Start()
    End Sub
    'ビデオデバイス取得画像表示
    Private Sub Video_NewFrame(sender As Object, eventArgs As NewFrameEventArgs)
    Dim img = DirectCast(eventArgs.Frame.Clone(), Bitmap)
    PictureBox1.Image = img
    End Sub


記事No.85265 のレス /過去ログ146より / 関連記事表示
削除チェック/

■85277  Re[5]: カメラ台数を増やす
□投稿者/ みい -(2017/09/30(Sat) 15:04:20)
    No85276 (しろ さん) に返信
    Jittaさんが書かれているように「あなたが期待することなんですか。」
    > 開始とビデオデバイス取得画像表示のところが
    > カメラを増やした時の設定方法がわかりません。
    1つの開始ボタンで同時に開始したいのか、
    それぞれの開始ボタンでそれぞれ開始したいのか…
    文章、ソースから読み取れません。
記事No.85265 のレス /過去ログ146より / 関連記事表示
削除チェック/

■85278  Re[6]: カメラ台数を増やす
□投稿者/ しろ -(2017/09/30(Sat) 19:02:20)
    No85277 (みい さん) に返信
    > ■No85276 (しろ さん) に返信
    > Jittaさんが書かれているように「あなたが期待することなんですか。」
    >>開始とビデオデバイス取得画像表示のところが
    >>カメラを増やした時の設定方法がわかりません。
    > 1つの開始ボタンで同時に開始したいのか、
    > それぞれの開始ボタンでそれぞれ開始したいのか…
    > 文章、ソースから読み取れません。


    開始ボタンを押したらカメラに接続し表示させたいのですが
記事No.85265 のレス /過去ログ146より / 関連記事表示
削除チェック/

■85281  Re[7]: カメラ台数を増やす
□投稿者/ あんぴん -(2017/10/02(Mon) 09:24:19)
    >>■No85276 (しろ さん) に返信

    お言葉ですが、自分の意図を上手く伝えられない、相手の意図を上手く読めないというのはプログラマとして致命的だと思います。
    何故お二方の忠告を徹底的に無視されているのでしょうか?上手くいかなくて焦る気持ちは分かりますが、あなたがその姿勢では答えられる回答も出すことが出来ません。
    ボタンを押して接続したいというのは分かります。ボタン一つで2台接続したいのか、カメラごとにそれぞれボタンを用意したいのか、これすらこちらに伝えるのは困難ですか?
    回答をされる方々は神様ではありません。パソコンの画面の内容もエラー内容もあなたの文章からしか読み取ることが出来ません。
    本当に回答が欲しいのであれば、もう一度トピック内の書き込みを読み直してあなたの状況が正しく伝わるように説明をお願いします。
記事No.85265 のレス /過去ログ146より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -