hidebun の回答履歴

全363件中21~40件表示
  • マウスを動かさないとパラパラ漫画が表示されない

    Visual studio 2008 C#で作成しているプログラムの挙動がおかしくなる理由がわからないので、質問させて頂きます。 01、02、03と順に番号を振ってあるフォルダを読み込み、フォルダ内の画像をパラパラ漫画のように続けて表示させる、読み込みと再生を同時に行えるようにスレッドを使用したプログラムを作成しています。 「再生」ボタン押下→フォルダ01内の画像を連続表示→フォルダ02内の画像を連続表示→「次へ」ボタン押下→「再生」ボタン押下→フォルダ03内の画像を連続表示→フォルダ04内の画像を連続表示→「次へ」ボタン押下→「再生」ボタン押下… という風に全ての画像をpicturebox1に表示させていきたいのですが、再生ボタンを押してもpicturebox内に表示されず、何故かマウスを動かすと表示が始まります。 また、パラパラ漫画がガクガクとして滑らかに動かない時も同様に、マウスを動かすとなめらかに表示されます。 ガクガクとして滑らかに動かない時に、マウスを動かさないと、 >> //二回目スライドショーのスレッドを開始 >> thread_show = new Thread(new ThreadStart(threadShow)); の部分で InvalidOperationExeception がハンドルされる事があります。 自分でも調べてみたのですが、マウスを動かすとするすると動く理由が分かりません。読み込みと再生スレッドのタイマがうまく咬み合っていないのかと予想しているのですが…。 アドバイス頂けると嬉しいです。     //開始 private void プログラム開始ToolStripMenuItem_Click(object sender, EventArgs e) { //画像読み込みスレッドを開始 present = 0;//present:現在参照している動画像 directory = directories[show_order[present]];//show_order[]:フォルダの再生順序 thread_read = new Thread(new ThreadStart(read_image));//画像読み込みのスレッドthread_read宣言 thread_read.Start(); //再生ボタンを有効に thread_read.Join(); button2.Enabled = true; } //「再生」ボタンを押したとき private void button2_Click(object sender, EventArgs e) { Thread.Sleep(500); //一回目スライドショーのスレッドを開始 thread_show = new Thread(new ThreadStart(threadShow)); thread_show.Start(); //二回目画像読込の設定 if (present <= douga_num - 1) { directory = directories[show_order[present + 1]]; thread_read_one = new Thread(new ThreadStart(read_one_image)); thread_read_one.Start(); } thread_read_one.Join(); //二回目スライドショーのスレッドを開始 thread_show = new Thread(new ThreadStart(threadShow)); thread_show.Start(); thread_show.Join(); button3.Enabled = true;//「次へ」ボタンの表示 } //「次へ」ボタンを押したとき private void button3_Click(object sender, EventArgs e) { //回答フォームの表示 Form3 form = new Form3(this); form.ShowDialog(); if (form.DialogResult != DialogResult.OK) { return; } button3.Enabled = false; if (present < douga_num - 2 )//全動画像-2よりも参照動画番号が小さかったら { directory = directories[show_order[present+2]]; thread_read_one = new Thread(new ThreadStart(read_one_image)); thread_read_one.Start(); thread_read_one.Join(); } //再生ボタンを有効に if (present < douga_num) { button2.Enabled = true;//再生ボタンを有効に } present = present + 2;//参照している動画番号を2増やす //実験終了 if (present >= douga_num) { //再生ボタンを無効に button2.Enabled = false; } } //画像表示のスレッド private void threadShow() { Stopwatch sw = new Stopwatch(); //リストに入っているファイルの数をfile_numbersに入れる file_numbers = img.Count; pictureBox1.Image = img[0]; //フレーム番号のリセット now_show = 1; //時間計測:開始 sw.Start(); while (now_show < file_numbers) { if (33 <= sw.ElapsedMilliseconds) { //前フレームを消去 img[0].Dispose(); img.RemoveAt(0); //画像を表示 pictureBox1.Image = img[0]; //カウントを進める now_show++; //時間計測再スタート sw.Reset(); sw.Start(); }

  • マイコン C言語 割り込み処理で変数参照

    マイコンのC言語で1つ困っています。 メイン処理である条件でグローバル変数Aを設定しています。 また、割り込み処理をタイマーとして使い、グローバル変数Aを参照しています。 このような動作の時に割り込み処理でグローバル変数Aを参照した際にエラーで動作しなくなります。 おそらく、同じデータをメイン処理での設定と割り込み処理での参照を行ったせいだと思いますが、 何かPICプログラミングとして最適な対処法はありますか? 是非、ご教授お願いします。

  • 複雑な条件の書き方

     こんにちは。c#初心者です。(今回の質問はcに近い言語ならどれでも大差ないと思います)  複雑な条件を使って処理を分岐する場合、 if ( A || (B && (C || D || E)) && F) // A~Fは条件 else  のようになったりすることもあると思いますが、それがさらに複雑化して if ( value1 < A || (B && ( (value1 = values[index]) == C || D || E)) && (value1 = values[value2]) == F ) else ( A~Fはフィールド(インスタンス)変数やstaticな変数で、それ以外はローカル )  のように代入まで入ってきているようなコードがあった場合は、さら乱雑になるので bool satisfied(ref int value, int value2, int[] values, int index) {   if ( value1 < A ) return true;   if ( !B ) return false;   value1 = values[index];   if ( value1 != C && !D && !E ) return false;   value1 = values[value2];   return value1 = F; }  のようなメソッドに抽出して if ( satisfied(ref value1, value2, values, index) ) … else … のようにしたほうが良いのでしょうか?  ちなみにこれらの条件は(初心者が見る限り多分)これ以上細かく分離できず、再利用される場所がありません。  そのためメソッドにしてしまわず、インデントなどを駆使して if ( value1 < A ||   (     B &&     (       (value1 = values[index]) == C       || D || E     )   )   && (value1 = values[value2]) == F ) else  のようにするだけでも良いのでしょうか?(何だかやりすぎて、逆に見にくくなった気が…)  この辺の事はよくわからないので皆さんのご意見を伺わせてください。

  • 複雑な条件の書き方

     こんにちは。c#初心者です。(今回の質問はcに近い言語ならどれでも大差ないと思います)  複雑な条件を使って処理を分岐する場合、 if ( A || (B && (C || D || E)) && F) // A~Fは条件 else  のようになったりすることもあると思いますが、それがさらに複雑化して if ( value1 < A || (B && ( (value1 = values[index]) == C || D || E)) && (value1 = values[value2]) == F ) else ( A~Fはフィールド(インスタンス)変数やstaticな変数で、それ以外はローカル )  のように代入まで入ってきているようなコードがあった場合は、さら乱雑になるので bool satisfied(ref int value, int value2, int[] values, int index) {   if ( value1 < A ) return true;   if ( !B ) return false;   value1 = values[index];   if ( value1 != C && !D && !E ) return false;   value1 = values[value2];   return value1 = F; }  のようなメソッドに抽出して if ( satisfied(ref value1, value2, values, index) ) … else … のようにしたほうが良いのでしょうか?  ちなみにこれらの条件は(初心者が見る限り多分)これ以上細かく分離できず、再利用される場所がありません。  そのためメソッドにしてしまわず、インデントなどを駆使して if ( value1 < A ||   (     B &&     (       (value1 = values[index]) == C       || D || E     )   )   && (value1 = values[value2]) == F ) else  のようにするだけでも良いのでしょうか?(何だかやりすぎて、逆に見にくくなった気が…)  この辺の事はよくわからないので皆さんのご意見を伺わせてください。

  • 設定ファイルを扱うライブラリについて

    Linux環境で開発をしているのですが、アプリケーションの設定ファイル(.ini)のようなものを 扱うためのライブラリとして何か標準的なものってありますでしょうか? 一番簡単な自作手順はnameとvalueを並べておいて読み込むのだと思いますが、 コメントの記載や、代入先変数型への対応や、場合によってはメンバ変数への代入の指定、 .iniファイルの暗号化・復号化などやりたいことが増えた際に、自作では手間が大きいです。 さらに、私の開発ではアプリケーション内の各モジュール毎に設定ファイルを持ち、 ハードウェアに依存して値が変わりうるといった設定ファイルの多いシステムになりそうです。 こういった場合に、皆さんはどのように対応なさっていますか? 御紹介いただければ大変ありがたいです。 ※Linux内の各アプリケーションでも、各々パラメータファイルの作りが違うように見える辺り、  標準的なライブラリや手順といったものは無いのかも、、、と薄々思っています。

  • Open CV でBitmap描画の高速化

     現在Open CVとVC++2008のC++/CLIを用いてform上のpictureBoxにカメラ画像を表示するプログラムを作成しています。  プログラムは,http://imagingsolution.blog107.fc2.com/blog-entry-91.htmlのサイトの『IplImageのPictureBoxへの描画』の項を参考にさせていただきました。 カメラ画像の描画だけでしたら,問題なく動作しますが,その他の処理を行うと,全体の動作が遅くなってしまいます。 そこで,どうにかして全体の動作速度あげようと,調べているとBitmapの描画は遅いということはわかりました。 しかし,どのようにすればBitmap描画を高速化出来るのかがわかりません... お分かりになる方がいらっしゃいましたら,何卒ご教授お願い致します。

  • C言語を始めよう!

    C言語を始めよう! http://www.forest.impress.co.jp/article/2002/10/24/cwohajimeyou.html を使用しています。 NT4/2000/XP で、16 ビットプログラムの実行結果が表示されない  と言う問題は、LSI C-86 Ver.3.30c 試食版をツールを利用して実行するプログラム共通の問題のようです。  CPad for LSI C-86でも、以下のとおり、同様の問題があり、 COMMAND  プログラムで、この問題を解決しようとしています。 phb1122  でも、以前は、 COMMAND を利用した形跡があります。今は、 PIF ファイルを作成 することで解決しています。  なぜ、このような経緯になったのか詳しく解説していただけませんでしょうか? ******************************* WindowsNT/2000上の CPad for LSI C-86 で、コンパイルはできるが、実行結果が表示されない これは LSI C-86 が16ビットアプリケーションであるために起こる現象です。 解決策は、作成した実行ファイルを実行する前に一度、Windows9xとの互換性のために用意されているcommand.comを実行することで回避できます。 CPad での設定方法は、 [設定]ダイアログ-[高度な設定]ページの[以下の設定を変更する(C)]にチェックをしてから、[実行するコマンド(B)]に %WINDIR%\system32\command.com /c exit > nul と記述して[OK]ボタンをクリックします。 これでNT/2000上でも LSI C-86で作成した実行ファイルの出力を確認できます。 また、この現象が起こらない場合もあるようですが、どういう環境で起こって、どういう環境で起こらないのかははっきりわかっていません。 *********************** C:\phb1122\phoebe.htm ★ NT4/2000/XP で、16 ビットプログラムの実行結果が表示されない場合について Windows NT4/2000/XP で、LSI C-86 試食版を使って 16 ビットプログラムを作成して実行した際に、出力結果が表示されず、空欄になってしまう場合があります。この現象についていろいろ調査してみましたが、NTVDM.EXE の動作に原因がありそうというだけで、それ以上がどうしても分かりません。しかし、強制的に MS-DOS プロンプトを起動させられればうまくいくのではと考え、PIF ファイルを作成し、それを介して実行することで、とりあえず出力結果を表示させることに成功しました。メニューの「ビルド(B)」→「PIF を作成して実行(I)」をチェックすることで設定できます。このメニューは、LSI C-86 試食版をコンパイラに設定しているときのみ有効です。 敬具

  • C言語を始めよう!

    C言語を始めよう! http://www.forest.impress.co.jp/article/2002/10/24/cwohajimeyou.html を使用しています。 NT4/2000/XP で、16 ビットプログラムの実行結果が表示されない  と言う問題は、LSI C-86 Ver.3.30c 試食版をツールを利用して実行するプログラム共通の問題のようです。  CPad for LSI C-86でも、以下のとおり、同様の問題があり、 COMMAND  プログラムで、この問題を解決しようとしています。 phb1122  でも、以前は、 COMMAND を利用した形跡があります。今は、 PIF ファイルを作成 することで解決しています。  なぜ、このような経緯になったのか詳しく解説していただけませんでしょうか? ******************************* WindowsNT/2000上の CPad for LSI C-86 で、コンパイルはできるが、実行結果が表示されない これは LSI C-86 が16ビットアプリケーションであるために起こる現象です。 解決策は、作成した実行ファイルを実行する前に一度、Windows9xとの互換性のために用意されているcommand.comを実行することで回避できます。 CPad での設定方法は、 [設定]ダイアログ-[高度な設定]ページの[以下の設定を変更する(C)]にチェックをしてから、[実行するコマンド(B)]に %WINDIR%\system32\command.com /c exit > nul と記述して[OK]ボタンをクリックします。 これでNT/2000上でも LSI C-86で作成した実行ファイルの出力を確認できます。 また、この現象が起こらない場合もあるようですが、どういう環境で起こって、どういう環境で起こらないのかははっきりわかっていません。 *********************** C:\phb1122\phoebe.htm ★ NT4/2000/XP で、16 ビットプログラムの実行結果が表示されない場合について Windows NT4/2000/XP で、LSI C-86 試食版を使って 16 ビットプログラムを作成して実行した際に、出力結果が表示されず、空欄になってしまう場合があります。この現象についていろいろ調査してみましたが、NTVDM.EXE の動作に原因がありそうというだけで、それ以上がどうしても分かりません。しかし、強制的に MS-DOS プロンプトを起動させられればうまくいくのではと考え、PIF ファイルを作成し、それを介して実行することで、とりあえず出力結果を表示させることに成功しました。メニューの「ビルド(B)」→「PIF を作成して実行(I)」をチェックすることで設定できます。このメニューは、LSI C-86 試食版をコンパイラに設定しているときのみ有効です。 敬具

  • C言語を始めよう!

    C言語を始めよう! http://www.forest.impress.co.jp/article/2002/10/24/cwohajimeyou.html を使用しています。 NT4/2000/XP で、16 ビットプログラムの実行結果が表示されない  と言う問題は、LSI C-86 Ver.3.30c 試食版をツールを利用して実行するプログラム共通の問題のようです。  CPad for LSI C-86でも、以下のとおり、同様の問題があり、 COMMAND  プログラムで、この問題を解決しようとしています。 phb1122  でも、以前は、 COMMAND を利用した形跡があります。今は、 PIF ファイルを作成 することで解決しています。  なぜ、このような経緯になったのか詳しく解説していただけませんでしょうか? ******************************* WindowsNT/2000上の CPad for LSI C-86 で、コンパイルはできるが、実行結果が表示されない これは LSI C-86 が16ビットアプリケーションであるために起こる現象です。 解決策は、作成した実行ファイルを実行する前に一度、Windows9xとの互換性のために用意されているcommand.comを実行することで回避できます。 CPad での設定方法は、 [設定]ダイアログ-[高度な設定]ページの[以下の設定を変更する(C)]にチェックをしてから、[実行するコマンド(B)]に %WINDIR%\system32\command.com /c exit > nul と記述して[OK]ボタンをクリックします。 これでNT/2000上でも LSI C-86で作成した実行ファイルの出力を確認できます。 また、この現象が起こらない場合もあるようですが、どういう環境で起こって、どういう環境で起こらないのかははっきりわかっていません。 *********************** C:\phb1122\phoebe.htm ★ NT4/2000/XP で、16 ビットプログラムの実行結果が表示されない場合について Windows NT4/2000/XP で、LSI C-86 試食版を使って 16 ビットプログラムを作成して実行した際に、出力結果が表示されず、空欄になってしまう場合があります。この現象についていろいろ調査してみましたが、NTVDM.EXE の動作に原因がありそうというだけで、それ以上がどうしても分かりません。しかし、強制的に MS-DOS プロンプトを起動させられればうまくいくのではと考え、PIF ファイルを作成し、それを介して実行することで、とりあえず出力結果を表示させることに成功しました。メニューの「ビルド(B)」→「PIF を作成して実行(I)」をチェックすることで設定できます。このメニューは、LSI C-86 試食版をコンパイラに設定しているときのみ有効です。 敬具

  • ReadFile(GPSとの通信)Win7での挙動

    はじまして。 GPS(Garmmin GPSmap 60Cx)からUSB通信でデータをインンポートするツールをViualStudio2008 C++/CLIで作っているものです。 DeviceIoControlを実行後、読み取ったバイトサイズが0になるまでReadFileを複数回実行してデータ(ウエイポイント)を取得しています。GPSには、9つのウエイポイントを登録しています。WindowsXPでは、9つすべて問題なく取得できます。しかし、Windows7(32bit,64bit両方とも)では、はじめの3つしか取得できません。デバッグ中にReadFile関数のあとにブレークポイントを置くか、または、Sleep(1)の処理を入れて実行すると9つ全て取得できます。 Sleep(1)の処理を入れる事でなぜうまく動くのかがわからず困っています。Sleep(1)の処理を入れる事で、うまく動く理由、あるいは、別の解決策がわかる方がいらっしゃいましたら、教えていただけないでしょうか。 該当箇所のソースは、以下の通りです。 typedef struct {   unsigned char mPacketType; unsigned char mReserved1; unsigned short mReserved2; unsigned short mPacketId; unsigned short mReserved3; unsigned long mDataSize; BYTE mData[MAX_BUFFER_SIZE-12]; } GetPacket_t; static std::vector<GetPacket_t> vecPacket; #define ASYNC_DATA_SIZE 64 #define IOCTL_ASYNC_IN CTL_CODE (FILE_DEVICE_UNKNOWN, 0x850, METHOD_BUFFERED, FILE_ANY_ACCESS) GetPacket_t* GarComm::GComm::GetPacket2() { GetPacket_t* thePacket = NULL; GetPacket_t* tempthePacket = NULL; DWORD theBufferSize = 0; BYTE* theBuffer = NULL; for( ; ; { // Read async data until the driver returns less than the max async data size, which signifies the end of a packet BYTE theTempBuffer[ASYNC_DATA_SIZE]; BYTE* theNewBuffer = NULL; DWORD theBytesReturned = 0; DeviceIoControl( gHandle, IOCTL_ASYNC_IN, 0, 0, theTempBuffer, sizeof( theTempBuffer ), &theBytesReturned, NULL ); theBufferSize += ASYNC_DATA_SIZE; theNewBuffer = (BYTE*) malloc( theBufferSize ); memcpy( theNewBuffer, theBuffer, theBufferSize - ASYNC_DATA_SIZE ); memcpy( theNewBuffer + theBufferSize - ASYNC_DATA_SIZE,theTempBuffer,ASYNC_DATA_SIZE ); if(theBuffer != NULL ){ free( theBuffer ); } theBuffer = theNewBuffer; if( theBytesReturned != ASYNC_DATA_SIZE ) { thePacket = (GetPacket_t*) theBuffer; break; } } // If this was a small "signal" packet, read a real packet using ReadFile if( thePacket->mPacketType == 0 && thePacket->mPacketId == 2 ) { free( thePacket ); int recCnt=0; int^ ndbg; BYTE* theNewBuffer =NULL; DWORD theBytesReturned = 0; int ret=0; for( ; ; ) { if(theNewBuffer!=NULL)free(theNewBuffer); theNewBuffer = (BYTE*) malloc( MAX_BUFFER_SIZE ); theBytesReturned = 0; // A full implementation would keep reading (and queueing) packets until the driver returns a 0 size buffer. ret=ReadFile( gHandle, theNewBuffer, MAX_BUFFER_SIZE, &theBytesReturned, NULL ); recCnt++; ndbg=recCnt; tempthePacket=(GetPacket_t*) theNewBuffer; // ベクターにパケットを保持。 vecPacket.push_back(*tempthePacket); if (theBytesReturned==0){ free(theNewBuffer); break; } // Win7 Sleep(1); } return &(vecPacket[0]); } else { return thePacket; } } ちなみに、ハンドルをCreateFileでFILE_FLAG_OVERLAPPEDを指定し、DeviceIoControl、ReadFile関数にOverlapped構造体を指定して、非同期で動くかす方法も試したのですが、結果は、同じで、ReadFile関数の処理が完了したあとに、次のReadFile関数を実行する前にSleep(1)を入れないとWindows7では、全てのデータを取得することができませんでした。 また、動作を確認したPCは、 Win7のPCは、Core i5-2500 3.3Ghz 、 WinXPのPCは、Pentium4 3Ghz(くらい) とマシンスペックには、差があります・・・。 USBは両方とも2.0です。 どうぞよろしくお願いいたします。

  • ReadFile(GPSとの通信)Win7での挙動

    はじまして。 GPS(Garmmin GPSmap 60Cx)からUSB通信でデータをインンポートするツールをViualStudio2008 C++/CLIで作っているものです。 DeviceIoControlを実行後、読み取ったバイトサイズが0になるまでReadFileを複数回実行してデータ(ウエイポイント)を取得しています。GPSには、9つのウエイポイントを登録しています。WindowsXPでは、9つすべて問題なく取得できます。しかし、Windows7(32bit,64bit両方とも)では、はじめの3つしか取得できません。デバッグ中にReadFile関数のあとにブレークポイントを置くか、または、Sleep(1)の処理を入れて実行すると9つ全て取得できます。 Sleep(1)の処理を入れる事でなぜうまく動くのかがわからず困っています。Sleep(1)の処理を入れる事で、うまく動く理由、あるいは、別の解決策がわかる方がいらっしゃいましたら、教えていただけないでしょうか。 該当箇所のソースは、以下の通りです。 typedef struct {   unsigned char mPacketType; unsigned char mReserved1; unsigned short mReserved2; unsigned short mPacketId; unsigned short mReserved3; unsigned long mDataSize; BYTE mData[MAX_BUFFER_SIZE-12]; } GetPacket_t; static std::vector<GetPacket_t> vecPacket; #define ASYNC_DATA_SIZE 64 #define IOCTL_ASYNC_IN CTL_CODE (FILE_DEVICE_UNKNOWN, 0x850, METHOD_BUFFERED, FILE_ANY_ACCESS) GetPacket_t* GarComm::GComm::GetPacket2() { GetPacket_t* thePacket = NULL; GetPacket_t* tempthePacket = NULL; DWORD theBufferSize = 0; BYTE* theBuffer = NULL; for( ; ; { // Read async data until the driver returns less than the max async data size, which signifies the end of a packet BYTE theTempBuffer[ASYNC_DATA_SIZE]; BYTE* theNewBuffer = NULL; DWORD theBytesReturned = 0; DeviceIoControl( gHandle, IOCTL_ASYNC_IN, 0, 0, theTempBuffer, sizeof( theTempBuffer ), &theBytesReturned, NULL ); theBufferSize += ASYNC_DATA_SIZE; theNewBuffer = (BYTE*) malloc( theBufferSize ); memcpy( theNewBuffer, theBuffer, theBufferSize - ASYNC_DATA_SIZE ); memcpy( theNewBuffer + theBufferSize - ASYNC_DATA_SIZE,theTempBuffer,ASYNC_DATA_SIZE ); if(theBuffer != NULL ){ free( theBuffer ); } theBuffer = theNewBuffer; if( theBytesReturned != ASYNC_DATA_SIZE ) { thePacket = (GetPacket_t*) theBuffer; break; } } // If this was a small "signal" packet, read a real packet using ReadFile if( thePacket->mPacketType == 0 && thePacket->mPacketId == 2 ) { free( thePacket ); int recCnt=0; int^ ndbg; BYTE* theNewBuffer =NULL; DWORD theBytesReturned = 0; int ret=0; for( ; ; ) { if(theNewBuffer!=NULL)free(theNewBuffer); theNewBuffer = (BYTE*) malloc( MAX_BUFFER_SIZE ); theBytesReturned = 0; // A full implementation would keep reading (and queueing) packets until the driver returns a 0 size buffer. ret=ReadFile( gHandle, theNewBuffer, MAX_BUFFER_SIZE, &theBytesReturned, NULL ); recCnt++; ndbg=recCnt; tempthePacket=(GetPacket_t*) theNewBuffer; // ベクターにパケットを保持。 vecPacket.push_back(*tempthePacket); if (theBytesReturned==0){ free(theNewBuffer); break; } // Win7 Sleep(1); } return &(vecPacket[0]); } else { return thePacket; } } ちなみに、ハンドルをCreateFileでFILE_FLAG_OVERLAPPEDを指定し、DeviceIoControl、ReadFile関数にOverlapped構造体を指定して、非同期で動くかす方法も試したのですが、結果は、同じで、ReadFile関数の処理が完了したあとに、次のReadFile関数を実行する前にSleep(1)を入れないとWindows7では、全てのデータを取得することができませんでした。 また、動作を確認したPCは、 Win7のPCは、Core i5-2500 3.3Ghz 、 WinXPのPCは、Pentium4 3Ghz(くらい) とマシンスペックには、差があります・・・。 USBは両方とも2.0です。 どうぞよろしくお願いいたします。

  • JvSystemD12R.libがみつからない。

    過去にも http://okwave.jp/qa/q7451785.html こちらで、同じような質問をさせていただきました。 http://sourceforge.net/projects/jvcl/files/ こちらのサイトから ・JVCL345CompleteJCL231-Build4197.zip このファイルをダウンロードしてきて解凍してみたところ、 ”jcl”と”jvcl”という2つのフォルダが作成されたのですが、 どちらのフォルダにも”JvSystemD12R.lib”このファイルが入っていなかったのですが、 何か必要な操作はありますでしょうか? どうぞ、教えていただきますよう、お願いいたします。

  • if文の処理部分の括弧を省略した場合の書き方

    C言語のif文の書き方についてですが、通常 if(条件) { ---処理1------- } else if(条件) { ---処理2------- } else { ----処理3------ } 括弧を使った場合は上のような動作をすると思うのですが、括弧を使った場合、 次のif文の”処理1”部分if((TEST_SENSOR & 0x03) == 0x03)は正常に動作できますでしょうか? コメント文が1行入ってしまうとダメでしょうか? コンパイラはエラーは出しませんでした。 if((TEST_SENSOR & 0x03) == 0x03) //return TEST_ERR; return T_NONE; else if((SENSOR & 0x03) == 0x01) return T_LOCK; else if((TEST_SENSOR & 0x03) == 0x02) return T_UNLOCK; return T_ERR; どうぞ、ご教授頂きますよう、お願い致します。

  • C++でメモ帳の「行へ移動」機能を作りたい

    C++でメモ帳にある「行へ移動」の機能を作ろうとしています。 行を指定するダイアログを作成して、入力した行数はとれてこれましたが、 そのあとはどのようにカーソルを移動したらよいか教えてください。 void CCypherEditorApp::OnEditGoto() { //行へ移動ダイアログを表示する CGotoDlg gotoDlg; UINT lineNo; if(gotoDlg.DoModal() == IDOK) { lineNo = gotoDlg.uintLineNo; } どうかよろしくお願いします。

    • chie3-5
    • 回答数2
  • C++でメモ帳の「行へ移動」機能を作りたい

    C++でメモ帳にある「行へ移動」の機能を作ろうとしています。 行を指定するダイアログを作成して、入力した行数はとれてこれましたが、 そのあとはどのようにカーソルを移動したらよいか教えてください。 void CCypherEditorApp::OnEditGoto() { //行へ移動ダイアログを表示する CGotoDlg gotoDlg; UINT lineNo; if(gotoDlg.DoModal() == IDOK) { lineNo = gotoDlg.uintLineNo; } どうかよろしくお願いします。

    • chie3-5
    • 回答数2
  • C言語では0は・・・

    C言語では0をif文などで判定するときに 負の値になったら・・・という問題のときに 0は負の値に入るんでしょうか? それとも単純に-1とやるべきなのでしょうか コンパイルするとif(a<0)などでは0はもちろん含まないのですが -1にすると負の値として扱っているように見えるのですが、実際のところどうなんでしょうか もし負の値を入力されたら、というときに-1でいいのか0なのか。 ご回答お待ちしております

  • WinAPIで任意のデータとデータの関連付け

    STLのコンストラクタが呼び出される前にstd::mapのような機構を使いたいと考えております。 そこでmapのように、任意のデータとデータを関連付ける関数はWinAPIにはありますか? たとえば、 "Ptr1" , 0x11111111 "Ptr2" , 0x22222222 "Ptr3" , 0x33333333 というようなデータのセットをWindows上に記憶させ、 "Ptr2"という文字列を識別子にして0x22222222という値を取り出せるようにしたいのです。 できればレジストリは使いたくないです。

  • クラスのメンバ変数の宣言方法

    現在、プロジェクト内に”class PACKAGE TNumberEdit : public TEdit”というクラスを持った”NumberEdit.h”、”NumberEdit.cpp”ファイルを追加して、 Unit1.hファイル内の”class TTestForm : public TForm”このクラス内のpublicにメンバ変数として ”TNumberEdit *NumberEdit1;” このように宣言しました。 そして、 __fastcall TTestForm::TTestForm(TComponent* Owner) : TForm(Owner) { NumberEdit1 = new TNumberEdit(this); } //--------------------------------------------------------------------------- このようなプログラムを書くと次のようなエラーが出てきます。 [ILINK32 エラー] Error: 未解決の外部参照 'TNumberEdit::' が C:\MYWORK\....\CPP_BUILDER_2009\TEST_NUBEREDIT\DEBUG\UNIT1.OBJ から参照されました [ILINK32 エラー] Error: 未解決の外部参照 '__fastcall TNumberEdit::TNumberEdit(Classes::TComponent *)' が C:\MYWORK\.....\CPP_BUILDER_2009\TEST_NUBEREDIT\DEBUG\UNIT1.OBJ から参照されました このようなエラーを回避する方法はありますでしょうか?どうぞ教えて頂きますよう、お願い致します。

  • クラスエクスプローラー

    現在エンバカデロ Code Gear C++ Builder 2009でプログラミングをしている者です。 C++ Builder 6 Vol.2 ”コンポ-ネット活用ガイド&実践プログラミング” この参考書を読み進めながら勉強しているのですが、 ”フィールドの追加”、”メソッドの新規作成”などの機能が、クラスエクスプローラーという表示箇所で右クリックを押すと出てくるとあるのですがCode Gear C++ Builder 2009では、このクラスエクスプローラーという機能が見当たらないのですが、表示される方法とかありませんでしょうか?

  • メイクするとエラーが出る。

    エンバカデロCode Gear C++ Builder 2009を使用しています。 ComPort Libraryをインストールしたく、  http://sourceforge.net/projects/comport/ このサイトからファイルをダウンロードして、 http://shinta0806be.ldblog.jp/archives/6944274.html このサイトを参考にインストール作業をしてみたのですが、メイクする際に1つのエラーがでてしまいました。 DsgnCPortCB6.bpkをC++ Builder 2009で開いて、プロジェクトをアップグレード後、メイクすると次のようなエラーがでました。 (エラー内容) リリース をメイク [ILINK32 エラー] Fatal: ファイル 'CPORTLIBCB6.BPI' を開けません 解決方法ご存じの方いらっしゃいましたら、教えて頂けませんでしょうか?