検索結果 27 件

by can110
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 画像のように3D っぽい2Dの9マスA~I上をキャラにキー入力で移動させたい
返信数: 14
閲覧数: 5589

Re: 画像のように3D っぽい2Dの9マスA~I上をキャラにキー入力で移動させたい

Ouxiy さんが書きました:
10ヶ月前
https://teratail.com/questions/edit/207686
こちらでマルチポストをしていました。
皆様のいいアイディアどうもありがとうございます。
https://teratail.com/questions/edit/207686
は開けません。
by can110
4年前
フォーラム: C言語何でも質問掲示板
トピック: 配列方文字変数の初期値として複数の文字列定数を置きたい
返信数: 2
閲覧数: 510

Re: 配列方文字変数の初期値として複数の文字列定数を置きたい

以下であればコンパイルは通りますが

コード:

#define NUL "\x00"
const char buf[] = {"\x01" NUL "ABC" NUL "\x02" NUL "DEF" NUL "\xFF" };
okの方法とあまり変わりませんね。
by can110
4年前
フォーラム: C言語何でも質問掲示板
トピック: fread関数で2回目から意図しない処理に
返信数: 9
閲覧数: 1844

Re: fread関数で2回目から意図しない処理に

テキストモードで開いているようですが、読込時に、改行コードの変換など意図しない処理がされる可能性があります。
バイナリモードで開きましょう。

コード:

    if ((*fp = fopen(av[1], "rb")) == NULL) { // バイナリモードで開く
by can110
4年前
フォーラム: C言語何でも質問掲示板
トピック: 自作関数のセグメントエラー
返信数: 5
閲覧数: 867

Re: 自作関数のセグメントエラー

count関数内で宣言された未初期化の変数x、yを参照しているのが原因だと思われます。 そもそもcount関数には「どのマスを基準にして」周囲を探すのか引数で指定すべきでは? ちなみに、以下のように範囲内か判定する関数を用いれば、簡潔に記述できます。 // 範囲内か int isRange( int x, int y) { if( (x >= 0) && (x < xgrid) && (y >= 0) && (y < ygrid) ){ return 1; } // printf( "x=%d, y=%d is out of range.\n", x, y); return 0; } // ト...
by can110
4年前
フォーラム: C言語何でも質問掲示板
トピック: バッチファイルと同等のことをするプログラム
返信数: 8
閲覧数: 1499

Re: バッチファイルと同等のことをするプログラム

Minecraftについては知りませんが、件のバッチファイルは単に.jarのサーバプログラムを起動しているだけでしょうか? であれば、以下の方法で、サーバプログラムの標準出力をリダイレクトすることができます。 [C#] 非同期で標準出力(コンソールアプリケーション)の内容をプログラムで受け取る 以下は、上記を参考にしたWindowsフォームアプリケーションの例です。 適当なサーバ(Sv.jar)を起動し、サーバの標準出力をテキストボックスに追記します。 using System; using System.Windows.Forms; using System.Diagnostics; nam...
by can110
4年前
フォーラム: C言語何でも質問掲示板
トピック: ソースコードの理解ができません
返信数: 2
閲覧数: 598

Re: ソースコードの理解ができません

「Range-based for loop」 foreach文のようなもののようですね。

Range-based for loop (since C++11)
range-based for loopsの要素の型について
by can110
4年前
フォーラム: C言語何でも質問掲示板
トピック: vba 実行時エラー 48 ファイルが見つかりません
返信数: 14
閲覧数: 8104

Re: vba 実行時エラー 48 ファイルが見つかりません

Yuoさんのおっしゃる通り、今回のケースはExcel(VBA)のため、的外れな回答でした。
失礼しました。

64bit版のDLLを作成するには、以下に説明あるように、プロジェクトの構成にてプラットフォームを追加する必要があります。
方法 : Visual C++ プロジェクトを 64 ビット プラットフォーム用に設定する

VC6のプロジェクトをVS2010にコンバートしただけでは追加されませんので、意識的に上記の作業を行っていないのであれば
DLLは32bit版ではないかと思います。
by can110
4年前
フォーラム: C言語何でも質問掲示板
トピック: vba 実行時エラー 48 ファイルが見つかりません
返信数: 14
閲覧数: 8104

Re: vba 実行時エラー 48 ファイルが見つかりません

件のDLLは、プロジェクト設定を特に変更しない限り32bit版として作成されます。
一方、64bitOS上では、デフォルトでは64bit版のVBSが実行され、64bit動作上では32bit版DLLは利用できません。
32bit版のVBS実行EXE(C:\Windows\SysWOW64\WScript.exe)を明示的に指定して起動することで、動作するかと思います。

詳細は以下を参照ください。
VBS(VBScript/Visual Basic Script)を使用する方法
(32/64bit)
by can110
4年前
フォーラム: C言語何でも質問掲示板
トピック: 【SendMessage】関数【PostMessage】関数についてご教授下さい。
返信数: 3
閲覧数: 3845

Re: 【SendMessage】関数【PostMessage】関数についてご教授下さい。

つまり、SendMessage でWM_KEYDOWN は使えないということですね? 使えないというわけではありません。 送信したメッセージは受信側ウインドウが処理をしますが ウインドウの種類やタイミングなどにより適切なメッセージを送信しないといけません。 任意のウインドウのメッセージを取得する「SPY++」というツールがVisual Studioに付属しています。 このツールでメモ帳を操作したときどのようなメッセージが送受信されているか確認することができます。 「ctrl+Sを押す」といった事は、 おそらくやりたいことは「名前を付けて保存」だと思いますが、以下のコードで保存ダイアログを表示...
by can110
4年前
フォーラム: C言語何でも質問掲示板
トピック: 【SendMessage】関数【PostMessage】関数についてご教授下さい。
返信数: 3
閲覧数: 3845

Re: 【SendMessage】関数【PostMessage】関数についてご教授下さい。

VS2015以下コードにて動作しました。 エディットコントロールに対して送信するようにしています。 HWND hWnd = ::FindWindow( _T("Notepad"), NULL ); if( !hWnd) return; HWND hEdit = ::FindWindowEx( hWnd, NULL, _T("Edit"), NULL ); if( !hEdit) return; ::SendMessage( hEdit, WM_CHAR, _T('a'), 0 ); ::SendMessage( hEdit, WM_CHAR, _T('b'), 0 ); ::SendMessa...
by can110
4年前
フォーラム: C言語何でも質問掲示板
トピック: DxLib前の環境で動いたものが動かない。
返信数: 7
閲覧数: 2088

Re: DxLib前の環境で動いたものが動かない。

DxLibが最新であれば、ソースに問題はないので、プロジェクト設定に原因があると思われますが…

以下の類似のケースでは、プラットフォームツールセット を「v120」に変更することで解消できるようです。
VisualStudio2015Preview

VS2015でソリューションを作成しなおして、ソース、リソースなどを移行したほうが早いかもしれません。
by can110
4年前
フォーラム: C言語何でも質問掲示板
トピック: DxLib前の環境で動いたものが動かない。
返信数: 7
閲覧数: 2088

Re: DxLib前の環境で動いたものが動かない。

こちらの環境(Win10, VS2015Community, DxLib3.16)にてプロジェクト新規作成して提示されたソースのビルドは成功しました。 ソースに問題はないと思います。 ちなみに、そちらの環境ではライブラリのパスはD:\forDxLib\BUILD1\のようですが こちらではC:\DxLib_VC\プロジェクトに追加すべきファイル_VC用\としています。 以下を試してみる&確認してみてはいかがでしょうか? ・リビルドする。 ・ライブラリは最新か確認する →D:\forDxLib\BUILD1下にDxDrawFunc_vs2015_x64_d.libなどが存在するか? ・プロジェク...
by can110
4年前
フォーラム: C言語何でも質問掲示板
トピック: scriptファイルの開き方
返信数: 26
閲覧数: 5816

Re: scriptファイルの開き方

解決して何よりです。
原因は何だったのでしょうか?(ファイルの配置場所の間違い?拡張子の非表示がらみ?…など)
by can110
4年前
フォーラム: C言語何でも質問掲示板
トピック: C++ OpenCV 詳しい方お力をお貸しください
返信数: 7
閲覧数: 3394

Re: C++ OpenCV 詳しい方お力をお貸しください

OpenCVはほとんど触ったことないので具体的なコードは提示できませんが、以下の関数で取得できるような気がします。
MinAreaRect2(与えられた2次元点集合を囲む最小の矩形を求める)
by can110
4年前
フォーラム: C言語何でも質問掲示板
トピック: DxLib前の環境で動いたものが動かない。
返信数: 7
閲覧数: 2088

Re: DxLib前の環境で動いたものが動かない。

開発環境の違い(VS2013→VS2015)のみであれば、以下と同様の原因かもしれません。
DXライブラリを使おうとしたら・・・
最新のDXライブラリに置き換えるとよいようです。
by can110
4年前
フォーラム: C言語何でも質問掲示板
トピック: scriptファイルの開き方
返信数: 26
閲覧数: 5816

Re: scriptファイルの開き方

コマンドプロンプトでdir c:\users\user\documents /S /B > c:\users\user\documents\files.txt と実行したのですが、「無効なスイッチです "users"」と出ました。 1点お聞きしたいのですが、dirの後ろをスペースで1回分空けました。  そのほかは詰めて書きました。無効となってしまうのは書き方のせいでしょうか? おそらくそうだと思いますが、なぜ例示したとおりに入力しないのでしょうか? また、意図した結果にならなかった場合、まずは自分が理解でき、確実に成功する簡単な手順から試してみるようにしましょう。 今回のトピック全体にいえる...
by can110
4年前
フォーラム: C言語何でも質問掲示板
トピック: scriptファイルの開き方
返信数: 26
閲覧数: 5816

Re: scriptファイルの開き方

スクリプトファイルの正確なフルパスを確認することをお勧めします。

コマンドプロンプトにて以下を実行すると、サブフォルダも含めた当該フォルダ下の全ファイルのフルパスがfiles.txtに記録されます。
dir c:\users\user\documents /S /B > c:\users\user\documents\files.txt
この中からあなたの言われる「スクリプトファイル」のパスを特定してみてください。
オフトピック
エクスプローラの表示オプションで拡張子を非表示にしていて「script.txt.txt」になっているという落ちだったりして。
by can110
4年前
フォーラム: C言語何でも質問掲示板
トピック: シリアル通信
返信数: 10
閲覧数: 1370

Re: シリアル通信

まずはみけCAT様のおっしゃる通り、現状確認が先決ですが 送信側PCからは、確実に6バイト単位でデータが送信されていますか? Tera Termやハイパーターミナルでは、たしかデフォルト動作ではデータ末尾にCR(\r)1バイトが付加されます。 もしかして以下のような状況になっているかもしれません。 以下の"r"はCR(\r)です。 受信 -> 色 FF0000 -> FF0000 1回目のデータ。赤 rFF000 -> 0FF000 1回目の残りCRと2回目のデータ。ほぼ緑 0rFF00 -> 00FF00 2回目の残りと3回目のデータ。緑 00r -> 3回目の残り。受信待ち状態
by can110
4年前
フォーラム: C言語何でも質問掲示板
トピック: 2点間の最短距離について
返信数: 7
閲覧数: 1636

Re: 2点間の最短距離について

ロジックは問題ないように見えますが、t, min disなどの型が intなどだと誤差が発生するため、正しい結果は得られないでしょう。 型に問題がない場合、具体的におかしなケースはあげられますか? >あるいは他のアルゴリズムを教えていただけると助かります。 「円の中心と内部の点を結ぶ線分」と「円の中心と円周上の点を結ぶ線分」のなす角度が最小の点が最短距離になるかと思います。 つまり、もし円の中心がわかるのなら、角度の差だけを見ればよくなります。 さらに、円周上の各点は等間隔に並んでいる つまり、outcordの添え字位置だけから円周上の座標が決定できるなら Nを円周の分割数(1026など)とす...
by can110
4年前
フォーラム: C言語何でも質問掲示板
トピック: MFC 関連付けされたファイルを起動中のアプリで開く方法
返信数: 4
閲覧数: 1034

Re: MFC 関連付けされたファイルを起動中のアプリで開く方法

WM_COPYDATAメッセージを使うと、他プロセスのウインドウに任意のデータを送ることができます。

参考:他のウィンドウにデータを渡す
http://www.crimson-systems.com/tips/t018a.htm
by can110
5年前
フォーラム: C言語何でも質問掲示板
トピック: 連立方程式の解法に用いるピボット選択のアルゴリズム
返信数: 2
閲覧数: 1064

Re: 連立方程式の解法に用いるピボット選択のアルゴリズム

max_eleとeleはintではなくdoubleにすべきです。
intに代入すると、丸めのため正しく最大値が判定できません。
by can110
5年前
フォーラム: C言語何でも質問掲示板
トピック: 1順ループで再現する方法
返信数: 11
閲覧数: 1897

Re: 1順ループで再現する方法

みけCAT さんの手法は勉強になりました。 後のために一般化してみました。 #include <cstdio> // 多重→1重ループ int main(void) { // 各次元長=L0...Ln, 位置=v0...vnの場合 // 1次元位置 = (L1*...*Ln)*v0 + (L2*...*Ln)*v1 +...+ (Ln)*vn-1 + vn // ※L0は作用しない const int aL[] = { 4, 3, 2, }; const int N_DIM = sizeof(aL)/sizeof(aL[0]); // 総長 int nTotalLen(1); for( in...
by can110
5年前
フォーラム: C言語何でも質問掲示板
トピック: 1順ループで再現する方法
返信数: 11
閲覧数: 1897

Re: 1順ループで再現する方法

まずは多重ループで実現できているコードを提示しないと回答がつきにくいと思いますが、いかがでしょう? たとえば以下のように再帰を使えば見た目のループ数は1つにできます。 #include <stdio.h> const int aLOOP[] = { 3, 2, 4, }; // 各次元のループ数 const int N_DIM = sizeof(aLOOP)/sizeof(aLOOP[0]); // 次元数 int aVal[N_DIM] = {0}; // 表示用 // 表示 void print( void){ for( int j = 0; j < N_DIM; j++){ printf...
by can110
5年前
フォーラム: C言語何でも質問掲示板
トピック: inline メンバー関数の中身定義位置について
返信数: 6
閲覧数: 1366

Re: inline メンバー関数の中身定義位置について

以下の状況でしょうか。リンクエラーが発生しますね。 test.h class CIntArray{ private: int* m_pnum; // 動的配列 public: bool MF(); // メモリの確保が成功したか }; test.cpp #include "test.h" inline bool CIntArray::MF(){ return m_pnum != 0; } main.cpp #include "test.h" int main( void){ CIntArray a; a.MF(); // error LNK2019 return 0; } 下記にも記載されてい...
by can110
5年前
フォーラム: C言語何でも質問掲示板
トピック: inline メンバー関数の中身定義位置について
返信数: 6
閲覧数: 1366

Re: inline メンバー関数の中身定義位置について

宣言時に戻り値の型(bool)が抜けています。指定するとよいかと思います。

コード:

public:
bool MF(); // メモリの確保が成功したか
by can110
5年前
フォーラム: C言語何でも質問掲示板
トピック: unionについて
返信数: 7
閲覧数: 1682

Re: unionについて

VS2013での動作は確認していませんが、おそらくデフォルト4バイトでアライメントされています。
一般的に、外部と構造体データをやりとりする場合は、#pragma pack(1)にて明示的にアライメント指定(パディングをなくす)べきです。

詳細は以下など参考にしてください。
ロベールのC++教室 - 第14章 前へならえ -

詳細検索ページへ移動する