検索結果 94 件

by wasawasa
5年前
フォーラム: C言語何でも質問掲示板
トピック: malloc()でのメモリ確保が上手くいかない
返信数: 6
閲覧数: 1650

Re: malloc()でのメモリ確保が上手くいかない

お返事が遅くなりましたが、お陰様でメモリを確保できなくなる問題を解決した上で提出できました。
修正内容としてはStrReg()の構造に問題があったため、そちらを書き直して解決できました。
ありがとうございます。
by wasawasa
5年前
フォーラム: C言語何でも質問掲示板
トピック: malloc()でのメモリ確保が上手くいかない
返信数: 6
閲覧数: 1650

Re: malloc()でのメモリ確保が上手くいかない

みけCATさんのご指摘を受けて添付ファイルを確認してみたところ、ファイルを整理する過程でおかしな事になってたみたいです。
添付したファイルにわざわざ手を加えて貰っておいて難ですが、修正したファイルを貼り直しておきます。
お手数をおかけして申し訳ございませんが改めてよろしくお願いします。
by wasawasa
5年前
フォーラム: C言語何でも質問掲示板
トピック: malloc()でのメモリ確保が上手くいかない
返信数: 6
閲覧数: 1650

malloc()でのメモリ確保が上手くいかない

こんにちは、何度もお世話になっております。
学校の課題である行列計算を行うプログラムの提示を求められたため、以下に添付したプロジェクトを作ったのですが、GaussEliminationSet.cpp
の50行目で double *w に malloc() でメモリを確保するのが上手くいかないらしく、同ファイルの52行目でアクセス違反が起きてしまいます。
一体何故 double *w へのメモリの確保が上手くいかないのでしょうか?どなたかよろしくお願いします。
by wasawasa
5年前
フォーラム: C言語何でも質問掲示板
トピック: ポインタの中身が「CXX0030」になってしまう
返信数: 5
閲覧数: 2608

Re: ポインタの中身が「CXX0030」になってしまう

>>みけCATさん >>boxさん 返信ありがとうございます。 こちら側の返事が遅くなってしまい申し訳ございません。 提示して頂いたソースはこちらでも無事動作を確認できました。ありがとうございます。 ポインタを括弧で括らなかったのがいけなかったのですね。 あと、文字列の容量の確保も関数の中で出来ないかと思い、86行目を消して47行目と48行目の間に下記のようなソースを挟んでデバッグしてみましたが、やはりエラーが出てしまうというのと、お二人ともmain関数で文字列の確保をする事を前提で考えているあたり、それは難しい事なのだと判断して提示して頂いたソースを使いたいと思います。 //メモリ確保 fr...
by wasawasa
5年前
フォーラム: C言語何でも質問掲示板
トピック: ポインタの中身が「CXX0030」になってしまう
返信数: 5
閲覧数: 2608

ポインタの中身が「CXX0030」になってしまう

こんにちは、何度もお世話になっております。 int型の整数とchar型ポインタポインタとint型ポインタを入力して16進数表記のchar型文字列と文字列の長さを出力するDP_intfwrite関数と、char型のstrポインタとint型のsize変数から成るDP_STR_hashcal構造体を宣言してそれらをDP_intfwrite関数に入力して出力結果をprintfで表示するmain関数を下記のように書きました。 そうしたら、DP_intfwrite関数内で16進数表記のchar型文字列をDP_STR_hashcal.strに格納する段階で書き込み違反が起きてしまいました。 デバッガでDP_...
by wasawasa
5年前
フォーラム: C言語何でも質問掲示板
トピック: int型変数を構成する4バイトのそれぞれの数値を計算で扱いたい
返信数: 6
閲覧数: 1564

Re: int型変数を構成する4バイトのそれぞれの数値を計算で扱いたい

返信ありがとうございます。
変数型って難しいですねぇ・・・。何となくjavaが流行る理由が分かったような気がしました。
とりあえず今はint32_tを使う事も視野に入れつつchar型で扱う事にしたいと思います。
皆さんありがとうございました。
by wasawasa
5年前
フォーラム: C言語何でも質問掲示板
トピック: int型変数を構成する4バイトのそれぞれの数値を計算で扱いたい
返信数: 6
閲覧数: 1564

Re: int型変数を構成する4バイトのそれぞれの数値を計算で扱いたい

返信ありがとうございます。 boxさんにエンディアンについてご指摘頂いたので調べてみましたが、使用するCPU等によってデータの入力順が違うのですね。 私のPCではリトルエンディアンだったのでこちらを基準に考えていました。 みけCATさんに提示して頂いたシフト演算による方法は両方のエンディアンに対応できるっぽいのでこちらの方法で取り扱いたいと思います。 また、みけCATさんにintについてご指摘頂いたのでこちらも調べてみましたが、intの容量は時代に応じて2バイトから4バイトに変化したという話が見つかりました。 容量が変化し得る変数型でファイルを出力するのは不安なので、似たような話が見つからなか...
by wasawasa
5年前
フォーラム: C言語何でも質問掲示板
トピック: int型変数を構成する4バイトのそれぞれの数値を計算で扱いたい
返信数: 6
閲覧数: 1564

int型変数を構成する4バイトのそれぞれの数値を計算で扱いたい

こんにちは、何度もお世話になっております。 バイナリデータのファイルへの入出力を模索する中で、int変数を構成する4バイト分の数値の中の1~4バイト目の数値をC言語において別々に取り扱って計算する方法が無いか気になったので質問させて頂きました。 例えば、char a[5]の1~5バイト目の数値が  1 2 3 4 5 ┌─┬─┬─┬─┬─┐ │α│β│γ│δ│ε│ └─┴─┴─┴─┴─┘ となっていて、int b の1~4バイト目の数値が  1 2 3 4 ┌─┬─┬─┬─┐ │W │X │Y │Z │ └─┴─┴─┴─┘ となっている場合に、char c[5]の1~5バイト目に    1  ...
by wasawasa
5年前
フォーラム: C言語何でも質問掲示板
トピック: コモンダイアログでの上書き保存と新規保存の判定方法について
返信数: 2
閲覧数: 772

Re: コモンダイアログでの上書き保存と新規保存の判定方法について

sleepさん、返信ありがとうございます。
上書き確認メッセージの有無の確認が容易ではない事は残念ですが、提示して頂いた方法で代用できそうなので試してみたいと思います。
by wasawasa
5年前
フォーラム: C言語何でも質問掲示板
トピック: コモンダイアログでの上書き保存と新規保存の判定方法について
返信数: 2
閲覧数: 772

コモンダイアログでの上書き保存と新規保存の判定方法について

こんにちは、何度もお世話になっております。 WinAPIでGetSaveFileName()を用いてファイル保存用のコモンダイアログを使用する場合、OPENFILENAME構造体のFlagsにOFN_OVERWRITEPROMPTを指定する事で、既存のファイルと同じ名前のファイルを保存しようとした時に上書き確認用のメッセージを出す事が出来ますが、この上書き確認用のメッセージを経てファイルを保存しようとした時と上書き確認用のメッセージを出さず通常通りにファイルを保存しようとした時とで別々の動作をさせたいと思いました。(具体的にはCreateFile()の第5引数を前者ではTRUNCATE_EXI...
by wasawasa
5年前
フォーラム: C言語何でも質問掲示板
トピック: ファイルの保存ダイアログでの入力ファイル名制限について
返信数: 2
閲覧数: 646

Re: ファイルの保存ダイアログでの入力ファイル名制限について

sleepさん、返信ありがとうございます。
提示して頂いた一文を加えたら出来るようになりました。
書き込むファイルの拡張子を自分で決めてしまえばいいのですね、ありがとうございました。
by wasawasa
5年前
フォーラム: C言語何でも質問掲示板
トピック: ファイルの保存ダイアログでの入力ファイル名制限について
返信数: 2
閲覧数: 646

ファイルの保存ダイアログでの入力ファイル名制限について

こんにちは、何度もお世話になっております。 WinAPIでGetSaveFileName()の使い方を学ぶためにhttp://wisdom.sakura.ne.jp/system/winapi/common/common6.htmlから下記のソースコードを拾ってきて試したのですが、その際に気になる事があったので質問させて頂きます。 hogehoge.txtがあるフォルダにファイルを保存する場合に、「hogehoge.txt」とファイル名を指定して保存しようとすると「上書きしますか」という旨の確認をするダイアログが表示されますが、保存するファイル名を「hogehoge」と指定した時にも上書き確認...
by wasawasa
5年前
フォーラム: C言語何でも質問掲示板
トピック: メモリ解放時のヒープコラプションについて
返信数: 2
閲覧数: 5614

Re: メモリ解放時のヒープコラプションについて

すみません、見落としていました。
ヒープコラプションが出た場所が開放する処理を行う所だったのでそこしか見ていませんでした。
ご指摘頂いてありがとうございます。
by wasawasa
5年前
フォーラム: C言語何でも質問掲示板
トピック: メモリ解放時のヒープコラプションについて
返信数: 2
閲覧数: 5614

メモリ解放時のヒープコラプションについて

こんにちは、何度もお世話になっております。 親ウィンドウと子ウィンドウと孫ウィンドウがあるプログラムで、孫ウィンドウを何個作るかが未定なので「孫ウィンドウのウィンドウハンドルを受け取るHWNDをポインタにしておき、孫ウィンドウを作る直前でmallocで記憶領域を確保して孫ウィンドウを作り、プログラムを終了する際に孫ウィンドウを記憶していたポインタを開放する」という動作を期待して下記のようなソースを記述して実行をしたところ、プログラムを終了して孫ウィンドウのHWNDを開放する時に「HEAP CORRUPTION DETECTED:after Normal block(#64)at0x00134C...
by wasawasa
5年前
フォーラム: C言語何でも質問掲示板
トピック: CreateWindowでHWNDを受け取れない&最小化状態での親ウィンドウのサイズ変更に子ウィンドウが対応しない
返信数: 5
閲覧数: 1121

Re: CreateWindowでHWNDを受け取れない&最小化状態での親ウィンドウのサイズ変更に子ウィンドウが対応しな

返信ありがとうございます。 MoveWindow() API の第6引数がFALSEになっていたのは完全に失念していました。ご指摘頂いてありがとうございます。 hMainWndが受け取れていないと考えたのは、WndProcがhMainWnd にウィンドウハンドルが格納されてから処理されるものだろ思っていて、9行目にブレークポイントを設定して実行した時にhMainWndの値が0x00000000 {unused=??? }と表示されていたためです。 ですが、zeekさんの返信からWndProcが先に処理されている為に9行目の処理が上手くいかなかったという事が分かりました。 なので、次のように書き...
by wasawasa
5年前
フォーラム: C言語何でも質問掲示板
トピック: CreateWindowでHWNDを受け取れない&最小化状態での親ウィンドウのサイズ変更に子ウィンドウが対応しない
返信数: 5
閲覧数: 1121

CreateWindowでHWNDを受け取れない&最小化状態での親ウィンドウのサイズ変更に子ウィンドウが対応しない

こんにちは、何度もお世話になっております。 親ウィンドウとその子ウィンドウであるスタティックがあるプログラムで「親ウィンドウのサイズを変更した時にその時親ウィンドウに渡されたWM_SIZEメッセージを子ウィンドウに渡し、子ウィンドウは親ウィンドウからWM_SIZEを渡された時に自身のサイズを親ウィンドウのクライアント領域と同じサイズに変更する」という動作を期待して下記のようなソースを記述しました。その結果、通常のサイズ変更をした時と最大化ボタンを押した時と元のサイズに戻すボタンを押した時には子ウィンドウは期待通りの動作をするようになったのですが、親ウィンドウが生成された時と最小化した後に通常の...
by wasawasa
5年前
フォーラム: C言語何でも質問掲示板
トピック: ヘッダに宣言した構造体のサイズが参照できない
返信数: 2
閲覧数: 1498

Re: ヘッダに宣言した構造体のサイズが参照できない

>>h2so5さん
返信ありがとうございます。
先に宣言をしておけばsub.cppで定義した内容を拾ってくれるものだと思っていました。
配列の定義をするファイル内に配列のサイズを返す関数を作って対応しようと思います。
by wasawasa
5年前
フォーラム: C言語何でも質問掲示板
トピック: ヘッダに宣言した構造体のサイズが参照できない
返信数: 2
閲覧数: 1498

ヘッダに宣言した構造体のサイズが参照できない

こんにちは、前々からお世話になっています。 複数のファイルに跨った構造体の扱いについて質問があります。 下記のソース(1)のように構造体TBBTNDEFの宣言とその構造体変数配列TBBTNDT[]の定義をした後にsizeof(TBBTNDT)/sizeof(TBBTNDEF)によって構造体変数配列の配列長を求める記述を作った場合には上手くいったのですが、ソース(2)~(4)のように構造体変数配列TBBTNDT[]の定義を別ファイルで、構造体TBBTNDEFと構造体変数配列TBBTNDT[]の宣言をヘッダで行ってからsizeof(TBBTNDT)/sizeof(TBBTNDEF)によって構造体変...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 正常にファイルがincludeされないようです
返信数: 3
閲覧数: 1170

Re: 正常にファイルがincludeされないようです

あっ・・・スペルミスだったんですね。
訂正ありがとうございます。
そしてつまらない事でお手数おかけしてすみませんでした。
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 正常にファイルがincludeされないようです
返信数: 3
閲覧数: 1170

正常にファイルがincludeされないようです

こんにちは、いつもお世話になっています。 添付したソースをビルドしたところ、下記のようなエラーが発生してしまいました。 このエラーについて調べたところ、ファイルが正常にincludeされていない為に起きるエラーだという事は分かったのですが何故includeされていないのかが分かりません。 よくある失敗例としてスペルミスとプロジェクト作成時にwindowsコンソールアプリケーションを選択してしまうというものが挙げられていましたが、この二つは該当していないようです。 どうしたら正常にファイルをincludeできるのでしょうか?どなたかよろしくお願いします。 1>c:\****\mainwnd_wn...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: プログラムの設計書について
返信数: 4
閲覧数: 1840

Re: プログラムの設計書について

返信ありがとうございます。

お二人の話を聞く限りでは、記述を打ち込み始める前にはデータの流れ方やプログラム全体の構造、ファイルや関数の数や名前のルールまで詳しく決めるべきだと承りました。
TOMYさんの生々しい体験も参考にしつつ設計していきたいと思います。
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: プログラムの設計書について
返信数: 4
閲覧数: 1840

プログラムの設計書について

こんにちは、いつもお世話になっています。
設計を殆ど決めずに行き当たりばったりでウィンドウズのアプリのプログラムを組んでいたのですが、データの流れ方や関数や定義の置き場所や変数の名前といった物ががぐっちゃぐちゃになり把握しきれなくなってしまったので今度はちゃんと設計を書面に起こしてから一から作り直そうと思いました。
そこでふと思ったのですが、皆さんはプログラムを作り始める前に設計を決める時、どういった部分に重みを置いてどの程度詳しく設計をしていらっしゃるのでしょうか?
リスタートの参考にしたいのでお話を聞かせて頂ければ幸いです。
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 関数の移植によって発生した「~から~に変換できません」について
返信数: 9
閲覧数: 2635

Re: 関数の移植によって発生した「~から~に変換できません」について

皆さん返信ありがとうございます。 そしてこちらからの返信が遅れてしまって申し訳ございません。 かずまさんの詳細な説明とへにっくすさんと旅路のきのこさんの補足説明のおかげで記述の問題点とそれに付随する私の認識の間違いを把握する事が出来ました。 私が誤って認識していた点としては以下の点がありました。 ①mallocによるメモリの割り当てをループ処理を行う場合において第n回目の処理の際に第n-1回目の処理で確保したメモリがそのまま残ることを見落としていた点 ②FindFirstFileの処理を「ファイルを開く→ファイルの探索→ファイルがあるかないかの判定」という風に思っており、FindFirstFi...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 関数の移植によって発生した「~から~に変換できません」について
返信数: 9
閲覧数: 2635

Re: 関数の移植によって発生した「~から~に変換できません」について

返信ありがとうございます。 変換できないエラーはマルチバイト文字とUnicode文字の文字列を扱う方法の差異によるものだったのですね。 移植先のプログラムはUnicode文字である事を前提に記述してあったので、そちらとの兼ね合いを考えてみたいと思います。 >>かずまさん 重ね重ねの返信ありがとうございます。 かずまさんの返信を読んでいくつか疑問に思ったことがあるので質問させて頂きます。 まず、前回質問した時点で私がfree()を使って開放していたのはFileNameではなくFileName2ですが、free()をFileName2に対して使用していた理由は、質問した時点ではポインタに格納された...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 関数の移植によって発生した「~から~に変換できません」について
返信数: 9
閲覧数: 2635

関数の移植によって発生した「~から~に変換できません」について

こんにちは、いつもお世話になっています。 特定フォルダのpngファイル名を取得してそれを元に画像をロードするプログラムとして下記の記述1のように記述したところ無事動作しました。 これを受けてこのプログラムのファイルを検索する関数を抜き出し、フォルダのパスと拡張子を指定してファイルを検索してファイル名を取得する関数として下記の記述2のように一部書き換えて別のプログラムに移植したところ、こちらでは21,43,64行目にてビルド時に「'FindFirstFileW' : 1 番目の引数を 'char *' から 'LPCWSTR' に変換できません。」、「'strcpy' : 2 番目の引数を 'W...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 動的な配列の確保について
返信数: 8
閲覧数: 1043

Re: 動的な配列の確保について

返信ありがとうございます。

なるほど、free()はポインタの先にあるメモリを開放する関数なんですね。そしてポインタだけを廃棄したい場合はNULLを使う、と。
この部分を念頭に置きつつ、かずまさんの提示して頂いたコードを参考にしながら記述してみたら上手くいきました。ありがとうございます。
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 動的な配列の確保について
返信数: 8
閲覧数: 1043

Re: 動的な配列の確保について

返信ありがとうございます。

FileName2でメモリを確保してFileName=FileName2と書くと、FileName2に格納されたハンドルがFileNameに渡される上にFileName2で確保した分と同じサイズのメモリをFileNameに確保する、と思っていたのでFileName2のメモリを開放しなければリークしてしまうと思いfree(FileName2)と書いたのですが、FileName=FileName2とやった場合FileNameにはハンドルが渡されるだけなのでしょうか?
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 動的な配列の確保について
返信数: 8
閲覧数: 1043

動的な配列の確保について

こんにちは、いつもお世話になっています。 特定フォルダ内のpngファイルを検索して検索したファイル名を[ファイル数][ファイル名文字数(256と設定。後からポインタによる確保に変更予定)]という形で動的に確保するchar型のFileName配列に取得する、という構想のプログラムを下記のように記述したところ57行目でFileName[0]に対してアクセス違反が発生してしまいました。FileName配列の確保方法を動的なものにする前はアクセス違反もエラーも無かったので24~25行目か51~56行目が原因だと思うのですが、デバッガを使って変数を覗いてみてもどこがおかしいのか判断できません。(File...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: フォルダー上のファイルからデータを読み込む速度について
返信数: 16
閲覧数: 2430

Re: フォルダー上のファイルからデータを読み込む速度について

返信ありがとうございます。 >>そもそも2次元配列ではなく管理の楽な1次元配列で十分です。計算式で2次元配列と同等に扱えます。 ですよねぇ…。 分かってはいるのですがついついパッと見でデータの配分が理解しやすい多次元配列にしたくなるなーと。悪い癖みたいなものですね。 >>サイズを変えるときは、別にmallocしなおしてコピーしてもとはfreeで良いと思います。 成程、無理してreallocにする必要は無いという事ですね。 >>reallocはメモリの確保に失敗した場合,メモリを解放せずにNULLを返すため,メモリがリークします。 そうだったんですか。ご忠告ありがとうございます。 >>というか,...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: フォルダー上のファイルからデータを読み込む速度について
返信数: 16
閲覧数: 2430

Re: フォルダー上のファイルからデータを読み込む速度について

返信ありがとうございます。 >>ポインタの配列が使えます。そんなにレイヤー展開しても実用上で意味が無いので上限があっても良いんじゃないでしょうか。 >>レイヤー展開の話ですよね? いえ、私の認識に誤りが無いか確認しておきたかっただけなので問題を感じたわけでも特定の何かの話という訳でもないです。深読みさせてしまってすみません。 お二人の話を聞いて領域の確保の方針が大分固まってきました。ありがとうございます。 それでmalloc、reallocについて調べたのですが、まだ理解に自信が無いところがあるので確認させてください。 //x=y=不確定多数 とすると、 int *a; //こう宣言するとaに...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: フォルダー上のファイルからデータを読み込む速度について
返信数: 16
閲覧数: 2430

Re: フォルダー上のファイルからデータを読み込む速度について

返信ありがとうございます。 h2so5さんとsoftya(ソフト屋)さんの返信を見て配列のサイズの変更について調べてみたところ、malloc()とrealloc()という二つの関数を見つけました。これによって ・配列の存在そのものが必要になった時にmalloc()で領域を確保してあらかじめ用意しておいたポインタ変数に代入する ・必要な配列のサイズが拡大縮小した場合にはrealloc()で指定したサイズに変更する(正確には指定したサイズの配列を新たに用意してデータを移し替えた後元の配列を解放する) という風にすればあらかじめ大量確保する必要が無くなるという事が分ったのですが、ここであらかじめ用意...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: フォルダー上のファイルからデータを読み込む速度について
返信数: 16
閲覧数: 2430

Re: フォルダー上のファイルからデータを読み込む速度について

皆さん返信ありがとうございます。 >>ディスクのアクセス速度に依存しますが、少なくともメインメモリへのアクセスよりかなり遅くなります。 そうですか、であればファイルの読み込みを頻発させるのはやめた方がいいですね。 >>Yuoさん うーん、やはりメモリの使用量を減らす方針で考えた方が良さそうですね。 >>「SQLite」はデータベースです。大きなデータから絞り込んだ情報を検索して取り出し利用するためのモノですので、大きな情報をメモリに読み込むためのものではありません。 >>SQLiteはインメモリDBとしても動作させることができます。と言ってもプロセスが同じなのでメモリの上限を超えることはできま...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: フォルダー上のファイルからデータを読み込む速度について
返信数: 16
閲覧数: 2430

フォルダー上のファイルからデータを読み込む速度について

こんにちは、いつもお世話になっています。 プログラムを作成している途中でint型のデータを記憶する領域を大量に確保しなくてはいけなくなり、これを配列によって賄おうとしたら「配列サイズの合計は 0x7fffffff バイトを超えることはできません。」というエラーが出てきてしまったので、可能であれば変数以外の場所にデータを記憶する場所を用意する事を考えたいと思いました。 そこでお聞きしますが、もしフォルダーの中に空のテキストファイルを用意して記憶場所として使うとしたらデータを読み込む速度はどのくらいになるでしょうか? また、バイナリデータからデータを読み込む場合はどのくらいの速度になるでしょうか?...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: フォルダの中にあるpngファイルの数と名前を取得したい
返信数: 6
閲覧数: 3155

Re: フォルダの中にあるpngファイルの数と名前を取得したい

>>Dixq (管理人)さん
>>YuOさん

GetModuleFileName()で実行ファイルのパスを取得してから、それを元に目当てのフォルダのパスを組み立ててFindFirstFileとFindNextFileで読み込む、という方法でできるようになりました。ありがとうございます。
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: フォルダの中にあるpngファイルの数と名前を取得したい
返信数: 6
閲覧数: 3155

Re: フォルダの中にあるpngファイルの数と名前を取得したい

>>YuOさん
すみません、書き忘れていました。
OSはWindows7で、プログラミングに使用しているソフトはMicrosoft Visual C++ 2008 Express Editionです。
Windowsでのフォルダとディレクトリの違いは説明見てもよく分かりませんでした。
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: フォルダの中にあるpngファイルの数と名前を取得したい
返信数: 6
閲覧数: 3155

フォルダの中にあるpngファイルの数と名前を取得したい

こんにちは、いつもお世話になっています。 X個のpngファイルを含めたY個のファイルが入っている「Folder」という名前のフォルダがプロジェクトファイルと同じフォルダの中にあったとして、Folderフォルダの中にあるpngファイルの数をint型の変数に、Folderフォルダ内のpngファイル全ての名前をCHAR型の変数に格納するとしたらどうすればいいでしょうか? 特定のフォルダ内の全てのpngファイルを読み込むプログラムを有象無象のファイルが混ざっている状況も想定して記述したいのですが、名前も数も分からない場合はどうしたらいいのか見当が付かないので困っています。 何かいい方法は無いでしょうか...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: リストボックスに横スクロールバーを付けたい
返信数: 5
閲覧数: 1582

Re: リストボックスに横スクロールバーを付けたい

>>みけCATさん
>>naohiro19
ポインタという点を見落としていたみたいです。
&hStrSizeと指定して実行したらできました。ありがとうございます。
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: リストボックスに横スクロールバーを付けたい
返信数: 5
閲覧数: 1582

Re: リストボックスに横スクロールバーを付けたい

>>milfeulleさん
返信ありがとうございます。

hStrSizeはSIZE型で宣言するとコンパイルの時点で
「'GetTextExtentPoint32W' : 4 番目の引数を 'SIZE' から 'LPSIZE' に変換できません。(新しい機能 ; ヘルプを参照)」
というエラーが出てしまうのでLPSIZE型に変更したのですが、SIZE型で変数を宣言した場合このエラーをどう解決すればいいのでしょうか?
引数に指定するときに(LPSIZE)hStrSizeと指定しても「'SIZE' から 'LPSIZE' に変換できません。」と出てしまうので他に方法が思いつきません。
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: リストボックスに横スクロールバーを付けたい
返信数: 5
閲覧数: 1582

リストボックスに横スクロールバーを付けたい

こんにちは、いつもお世話になっています。 リストボックスhListに横スクロールバーを付けたいと思ってウィンドウスタイルにWS_HSCROLLを追加したところ、横スクロールバーは表示されませんでした。 これについて調べたところ SendMessage(hList,LB_SETHORIZONTALEXTENT,x,0); という風にxピクセル分のスクロール幅を用意させるメッセージをリストボックスに送る必要があると分かったので、文字列の幅を取得する関数を探したところ GetTextExtentPoint32(HDC hdc,LPCTSTR lpString,int cbString,LPSIZE ...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 親ウィンドウの最大化・最小化に子ウィンドウを対応させたい
返信数: 11
閲覧数: 2103

Re: 親ウィンドウの最大化・最小化に子ウィンドウを対応させたい

>>へにっくすさん 分かりました。 ちなみに本質問の件ですが、WM_SIZEの時の記述を下記のようにSendMessageを行ってから関数を起動させたらできるようになりました。ありがとうございました。 if(wp==0 || wp==1 || wp==2 ){ //メインウィンドウクライアント領域座標取得 MasureMW(&hWnd); //ステータスバー SendMessage(hStatus , msg , wp , lp); MoveStateBar(&hStatus); //共通ツールバー SendMessage(hToolbar , msg , wp , lp); MoveMast...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 親ウィンドウの最大化・最小化に子ウィンドウを対応させたい
返信数: 11
閲覧数: 2103

Re: 親ウィンドウの最大化・最小化に子ウィンドウを対応させたい

返信ありがとうございます。 気にしすぎてしまったみたいですみません。次から気を付けます。 wParamの判定が必要というご指摘を頂いたので、WM_SYSCOMMANDの場合の記述を下記のように書いて最大化・最小化時の動きを調べたところ、挙動がおかしいままでした。 PCの不調を引き起こす心配は無さそうだったのでウィンドウのボタンの動きを何回か試してみたところ、 最大化ボタンの挙動は1回目に押すと無反応で               2回目に押すと添付画像"質問用.png"のようになり    3回目以降は無反応、 最小化ボタンの挙動は1回目に押すと添付画像"質問用2.png"のようになり     ...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 親ウィンドウの最大化・最小化に子ウィンドウを対応させたい
返信数: 11
閲覧数: 2103

Re: 親ウィンドウの最大化・最小化に子ウィンドウを対応させたい

コードを書くと長文になってしまうのでzip形式で添付したのですが、不評みたいなので気になる部分のコードだけ書いておきます。 質問の内容に変更はありません。 どなたかよろしくお願いします。 Base_WndProc.cpp #include <windows.h> #include <commctrl.h> #include "MasterToolBer.h" #include "Base.h" #include "ModeZone.h" #include "ControlID.h" #include "StateBar.h" //--------------------------------...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 親ウィンドウの最大化・最小化に子ウィンドウを対応させたい
返信数: 11
閲覧数: 2103

親ウィンドウの最大化・最小化に子ウィンドウを対応させたい

こんにちは。いつもお世話になっております。 添付させて頂いたソースコードについて質問させていただきます。 親ウィンドウのサイズ変更に子ウィンドウを対応させるために 「ツールバーとステータスバーの座標とサイズをGetWindowRectで取得」  ↓ 「取得した情報を基にMoveWindowでサイズを変更する」 という記述をBase_WndProc.cppの37~47行目、MasterToolBar.cppの70~80行目、StateBar.cppの41~51行目、ModeZone.cppの37~50行目に書いて試したところ、ドラッグでのサイズ変更には対応できましたが最大化・最小化によるサイズの...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: クライアント領域の立体枠の描画方法について
返信数: 4
閲覧数: 743

Re: クライアント領域の立体枠の描画方法について

返信ありがとうございます。
皆さんに提示していただいた物を読み込むうちに、立体枠は既にあるウィンドウを縁取るようにして描画するものであり、立体枠だけを作成するような物ではないという事が理解できました。
仮に私が提示した画像のようにするならばクライアント領域のツールバー以外の部分を覆うように新しいウィンドウを描画して、それを縁取るように描画する必要があるという方針が何となく見えてきたのでやってみたいと思います。
あと、返信が遅れてしまってすみませんでした。
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: クライアント領域の立体枠の描画方法について
返信数: 4
閲覧数: 743

クライアント領域の立体枠の描画方法について

こんにちは、いつもお世話になっています。
APIを使ってウィンドウズ上で動くアプリを作ろうと今勉強中なのですが、アプリを作る中でWindows用のソフトウェアでよく使われている下図のような立体枠を使いたいと思いAPIを見て回っています。
様々なソフトで使われている以上、この枠を用意する何かしらのAPIがあると思い探しているのですが、中々見つからないので質問しました。
この立体枠を用意するAPIはあるのでしょうか?
また、この立体枠に何かしらの正式名称があればそちらも教えて頂けると幸いです。
どなたかよろしくお願いします。
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: MakeScreen関数で生成した画像を初期化し続けたい
返信数: 5
閲覧数: 1074

Re: MakeScreen関数で生成した画像を初期化し続けたい

>softyaさん、みけCATさん
大変分かり易く説明していただきありがとうございます。
私がすでに組んだいくつかの記述で思い当たる節が山ほどあるのでこれからチェックしてみたいと思います。
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: MakeScreen関数で生成した画像を初期化し続けたい
返信数: 5
閲覧数: 1074

Re: MakeScreen関数で生成した画像を初期化し続けたい

>>みけCATさん ClearDrawScreen関数は裏画面でしか使えないと思っていました。 描写先を変えてからClearDrawScreenを入れれば普通に初期化できるみたいですね。 つまらぬことにお手数おかけしました。 つまらぬ事を聞いてしまったついでにハンドルリークについて質問させてください。 「ハンドルリーク」という言葉を調べたところ「ハンドルの閉じ忘れにより、プロセス内に無駄なリソースが蓄積された状態になること」とありました。 しかし、そもそもハンドルの開け閉めという概念がよく分からないので、どういう時にハンドルが開くのか(今回提示したプログラムだと4行目で開いているのでしょうか?...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: MakeScreen関数で生成した画像を初期化し続けたい
返信数: 5
閲覧数: 1074

MakeScreen関数で生成した画像を初期化し続けたい

いつもお世話になっております。 画面の一部分を描画範囲と定めてからそこの部分だけに画像を描画するために、 MakeScreen関数でスクリーンとなる画像を作成 ↓ while(){ スクリーン画像に画像を描画→スクリーン画像を裏画面に描画→裏画面を表画面に反映→スクリーン画像を初期化 } という構想でプログラムを書いていたのですが、スクリーン画像を初期化する処理をどうやったら良いか困っています。 一応、毎フレームの初期化をMakeScreen関数で行う方針で下記のような方針の記述を書いて試してみたのですが、やはり重いと感じました。 MakeScreen関数で生成した画像をClearDrawSc...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: txtファイルから2バイト文字込の文字列を格納したい
返信数: 12
閲覧数: 1333

Re: txtファイルから2バイト文字込の文字列を格納したい

皆さん返信ありがとうございます。 かずまさんのご指摘を受けて気になったのでtxtファイルの生成方法を調べた結果、txtファイル自体に問題がある事が分かりました。 txtファイルはrgssというrubyを拡張して作られた言語によるプログラムで生成しており、rgssがデフォルトの設定で取り扱っている文字コードがutf-8であったためにtxtファイルの文字コードがutf-8になってしまったという事が分かりました。なので、rgssで取り扱う文字コードをShift-JISに変更する方法を調べてみたいと思います。 これ以上の質問はこの掲示板の意向に反してしまうと判断し、このトピックを解決済みとしたいと思い...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: txtファイルから2バイト文字込の文字列を格納したい
返信数: 12
閲覧数: 1333

Re: txtファイルから2バイト文字込の文字列を格納したい

>かずまさん 60~64行目の記述のご指摘ありがとうございます。 i = -1; をi--;に変更したところ、TileSet[n].name[0]から無事に文字列が格納されるようになりました。ありがとうございます。 そして51行目と52行目でtextcに格納される文字列についてですが、 格納しようとした文字列は「森の町 外観」、 1回目の51行目の処理でtext[0]に格納された数値は0xffffffe6、52行目の処理でtextc[0]に格納された数値は0xe6 '・'、 2回目の51行目の処理でtext[1]に格納された数値は0xffffffa3、52行目の処理でtextc[1]に格納され...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: txtファイルから2バイト文字込の文字列を格納したい
返信数: 12
閲覧数: 1333

Re: txtファイルから2バイト文字込の文字列を格納したい

>softya
ステップ実行について調べてみました。
こういう機能がある事を知りませんでした。次から活用していきたいと思います。

それで、この機能を使って文字列の格納処理を見てみたところ、51行目と52行目の処理を1回目に実行した時点で既に変な文字が格納されている事が分かりました。
2バイト文字であってもFileRead_getc関数で1バイトずつ格納していけば文字として正しい値になる筈だと思うのですが……
それともtextとtextcの方に何か問題があるのでしょうか?
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: txtファイルから2バイト文字込の文字列を格納したい
返信数: 12
閲覧数: 1333

Re: txtファイルから2バイト文字込の文字列を格納したい

>h2so5さん
ご指摘ありがとうございます。下記のように訂正しました。

コード:

				while(FileRead_getc(file)!='\n');
				i=-1;
				continue;
>softyaさん
ご返事遅れてすみません。
気になる場所にブレークポイントを設定して変数を確認するという事はやっています。
それがデバッガでの確認作業といえないならやっていないと思います。
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: txtファイルから2バイト文字込の文字列を格納したい
返信数: 12
閲覧数: 1333

txtファイルから2バイト文字込の文字列を格納したい

txtファイルからデータを取り込んで変数を初期化する関数として下記のような記述を書いたところ、79行目の記述でTileSet[n].nameに格納されるはずの2バイト文字を含む文字列が正常に代入されませんでした。恐らく48~75行目のtextcにtxtファイルの文を読み込む過程でおかしな事が起きているのだろうと思うのですが、その原因が分かりません。 何故文字列が正常に代入されないのか、どうしたら格納できるようになるのかどなたかご指摘をお願いします。 また、'\r'を読み込むことによる誤動作を防ぎたくて60~64行目の記述を加えたのですが、この部分を反映させるとtextc[0]が0になってしまう...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 文字列の操作及びFileRead_gets関数について
返信数: 5
閲覧数: 1114

Re: 文字列の操作及びFileRead_gets関数について

返信ありがとうございます。
色々と変数名の変更をし忘れていたみたいでお恥ずかしい限りです。おかげで無事実行する事が出来ました。
そしてFileRead_getc関数で2バイトの文字を正確に読み込めるとは思いませんでした。
この作業ではFileRead_getc関数を使用したいと思います。
いろいろとありがとうございました。
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 文字列の操作及びFileRead_gets関数について
返信数: 5
閲覧数: 1114

Re: 文字列の操作及びFileRead_gets関数について

>>softya(ソフト屋) さん 返信ありがとうございます。 ご指摘を受けてhoge関数内の記述を下記のように変えたところビルドは出来るようになりました。 ただ、実際に下記のような内容のTestData.txtを用意して実行してみると17行目から34行目の間で','まで文字列を読み込んでtextcに代入されると意図した筈が、全く違う文字列が読み込まれてしまいます。 トピックの題名から外れた質問となってしまいますが、どんな問題が起きていて正常に読み込むためにはどうすればいいでしょうか? TestData.txt あいuえお,かきkuけこ さしsuせそ,たちtuてと hoge関数記述 void ...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 文字列の操作及びFileRead_gets関数について
返信数: 5
閲覧数: 1114

文字列の操作及びFileRead_gets関数について

txtファイルからデータを読み込むときにtxtファイルの文に全角文字が含まれているとFileRead_getc関数では正常に読み込む事が出来ないと知ったので、txtファイルを1行ずつFileRead_gets関数でchar文字列として取り出してからデータを読み込むという構想で下記のような記述を試したところ、31行目と41行目で「error C2105: '++' には左辺値が必要です。」というエラーが発生してしまいました。 char型の文字列p[100],q[100]に対してp++としてからq[0]=p[0]とすればp++とする前のp[1]がq[0]に代入されると思っていたのですが違うのでしょ...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 初期化の途中でデータが消えてしまう
返信数: 6
閲覧数: 723

Re: 初期化の途中でデータが消えてしまう

>>みけCATさん 無事正常に初期化できるようになりました。ありがとうございます。 >>boxさん 文字列による条件分岐について調べたところ、下記のような記述でやりたい事ができると分かったので修正しました。返答が遅れてしまい申し訳ございません。 strcmp(textc,"nil")==0 >>softya(ソフト屋)さん そうですね、それは自分で弄っていてよく分かったのでこれから改善していきたいと思います。 ファイルは別途ツールで生成しているのですが、その生成方式をtxtからcsvに変更してそれに対応した#define での定義文を同時に吐き出させる事ができれば少しは楽になるかなー・・・とい...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 初期化の途中でデータが消えてしまう
返信数: 6
閲覧数: 723

Re: 初期化の途中でデータが消えてしまう

みけCATさん返信ありがとうございます。 55行目~59行目を助言された通りに変えてみたところ、n=0の時の初期化は上手くいくようになりました。 ただm==3*MapSizeMax+16からm==0になる過程でデータを一つ飛ばしてしまっているみたいでn=1以降は一つずつずれてしまっています。 丸投げしているようで非常に申し訳ないのですが、ここからは多分txtファイルの記述方式も関連した問題になっているみたいなのでデータの読み込み元となるMapData.txtとその記述方式を上げておきます。 //map行列最大値:600 マップの数:5 //Map○ NTile,ATile[0],ATile[1...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 初期化の途中でデータが消えてしまう
返信数: 6
閲覧数: 723

初期化の途中でデータが消えてしまう

下記のような、while1ループ毎に1づつ加算させる変数m=0を使ってtxtファイルや画像ファイルからデータを取り込んで構造体Mapの変数を初期化する関数を書いたのですが正常に初期化がされません。ブレークポイントを設定して変数の中身を覗いたところ、「ここから」とコメントを入れた行から「ここまで」とコメントを入れた行までの間に0<=m<=9の時に変数に入れたデータが消えてしまっているようです。 何故データが消えてしまうのでしょうか?どなたか詳しい方はよろしくお願いします。 #define MapSizeMax 600//マップ行列最大値 #define MapKindMax 5//マップの数 s...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: FPSが60に届かない
返信数: 5
閲覧数: 730

Re: FPSが60に届かない

>softya(ソフト屋) さん
ありがとうございます。参考になりました。
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: FPSが60に届かない
返信数: 5
閲覧数: 730

Re: FPSが60に届かない

>SetDrawScreen( DX_SCREEN_BACK )としたらどうなりますか? 無事FPSが60まで届きました。FPSが低下していた原因はSetDrawScreen( DX_SCREEN_FRONT )だったのですね。ありがとうございます。 >また、この行はこの行を含む2重のfor文を抜けた直後に1回だけ実行すればいいのではないですか? maketipscに何か画像を入れないとエラーが出るので・・・・・・と思っていたのですがmaketipsc = MakeScreen( TipsSqu, TipsSqu, TRUE ) ;を一文増やせばいいだけでした。次からそうしたいと思います。 後...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: FPSが60に届かない
返信数: 5
閲覧数: 730

FPSが60に届かない

数値・文字列データと画像ファイルを加工したうえで取り込む画像データの二つを格納して初期化するATile_ini関数、FPSを60に調整するfps_wait関数、FPSを文字として表示するdraw_fps関数とこれら三つの関数をmain関数で呼ぶ記述を下記のように書いたところ、表示されるFPSが43~44と60にまで届きません。その後ATile_ini関数を調べたところ、画像ファイルを加工する記述である「FPS低下の原因1」とコメントを付けた行から「FPS低下の原因2」とコメントした行までをコメントアウトして実行したらFPSが59.5~60まで上昇しました。 記述を見て分かる通りATile_in...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 自作のプログラムを起動することによるOSのフリーズについて
返信数: 4
閲覧数: 673

Re: 自作のプログラムを起動することによるOSのフリーズについて

>softya(ソフト屋)さん
分かりました。とはいえ、現時点でもフリーズが起きる頻度は低くデータを取る事は難しそうなので、これからも今まで通り使ってみて他の人のコードを扱った時にフリーズが起きたらその時の状況を記録していく方針にしたいと思います。

>みけCATさん
すみません、次からそうしたいと思います。
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 自作のプログラムを起動することによるOSのフリーズについて
返信数: 4
閲覧数: 673

自作のプログラムを起動することによるOSのフリーズについて

こんにちは。 前にhttp://dixq.net/forum/viewtopic.php?f=3&t=14793にてVC++2008Eでのプログラム実行によるOSのフリーズについて質問した時は複数のアンチウイルスソフトの競合が原因だと思ったのですが、1つを残してアンインストールしても時々OSのフリーズが発生するという状況は完全には改善せず、フリーズを引き起こした時は決まってVC++2008Eでプログラムのデバッグをした時だったので、今回は実行する事でOSのフリーズを引き起こした直近のプログラムに原因があるという仮定を前提に質問します。 下記txtファイルのような記述のプログラムを実行させると時...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 特定の箇所だけ画像が読み込めない
返信数: 4
閲覧数: 604

Re: 特定の箇所だけ画像が読み込めない

>>みけCATさん
返信ありがとうございます。改行って\nだけじゃなくて\rと\nの2文字で成り立っていたんですね……知りませんでした。
なので117行目を下記のように書き換えたら上手くいきました。ありがとうございます。

コード:

            if(text[i]==',' || text[i]=='\n' || text[i]=='\r'){
				if(i==0){i=-1;continue;}
				else{textc[i]='\0';break;}
			}
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 特定の箇所だけ画像が読み込めない
返信数: 4
閲覧数: 604

特定の箇所だけ画像が読み込めない

下記のように、txtファイルからデータを抜き出し、それを元にファイルのパスとなる文字列を組み立てて画像を読み込み表示させるATile_ini関数とNTile_ini関数をまとめて呼び出すTile_ini関数をTileData.cppに書いて、それをmain関数で呼び出して実行したところ、NTile_ini関数で表示する筈の画像が読み込ません。 デバッグ用のメッセージを見ると、ファイルが見つからないというような文が表示されていましたが、組み立てたファイルのパスは間違っていないことを確認しましたし、画像ファイルも置いてあります。そしてNTile_ini関数で画像を読み込めなかった理由を探るために様...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: VC++2008EによるOSのフリーズについて
返信数: 4
閲覧数: 964

Re: VC++2008EによるOSのフリーズについて

返信ありがとうございます。
皆さんの意見を参考にPCを調べたらセキュリティソフトが二種類インストールされており、これが原因ではないかと思ったので片方をアンインストールしてこれから使っていきたいと思います。
しばらく使ってまだフリーズが気になるようならまた別途質問させていただくという事で、ひとまずこのトピックは解決という形にしたいと思います。
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: VC++2008EによるOSのフリーズについて
返信数: 4
閲覧数: 964

VC++2008EによるOSのフリーズについて

いつもMicrosoft Visual C++ 2008 Express Editionでプログラムを書いているのですが、時々問題のないプログラムを走らせたときでもOSごとフリーズすることがあり困っています。ここでいう問題のないプログラムとは、OSがフリーズしたときに一度強制終了をして再び立ち上げた後VC++2008Eを起動してリビルド→デバッグの操作をしても何の問題も起きないプログラムの事です。体感的にはプログラム内でブレークポイントを設定するといつもよりフリーズが起きやすくなる気がします。 この時々起きるOSのフリーズを何とかしたいのですが、VC++2008Eで問題のないプログラムを実行さ...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 別ファイルで定義した関数が実行されない
返信数: 6
閲覧数: 679

Re: 別ファイルで定義した関数が実行されない

>ScreenFlipしていない、もしくは表示を見る前にreturnしてDxLib_Endで終了してしまうからではないでしょうか?
見直してみてやっと理解できました。ありがとうございます。
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 別ファイルで定義した関数が実行されない
返信数: 6
閲覧数: 679

Re: 別ファイルで定義した関数が実行されない

MessageBox関数を使ってもう一度確認してみたらATile_ini関数の中でメッセージボックスが表示される場所とされない場所が確認でき、そこから参照しているフォルダーがごっそり抜け落ちていたのが原因だという事が分かって無事解決できました。ありがとうございます。

ちなみに、みけCATさんにご指摘いただくまではprintfDX関数をATile_ini関数の随所に挿入して動作状況を確認していたのですが、こちらで確認しようとすると現状でも文字が表示されないままのようです。
お騒がせついでにこちらの理由についてもお尋ねしてよろしいでしょうか?
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 別ファイルで定義した関数が実行されない
返信数: 6
閲覧数: 679

Re: 別ファイルで定義した関数が実行されない

>>みけCATさん
すみません、文の内容を打ち間違えました。
初期化した変数のデータを表示する処理を記述したのはhoge関数ではなくてATile_ini関数です。
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 別ファイルで定義した関数が実行されない
返信数: 6
閲覧数: 679

別ファイルで定義した関数が実行されない

下記のように変数の初期化と初期化した変数のデータを表示する処理を記述したATile_ini関数をTileData.cppに書き、それをmain.cppのmain関数で呼び出す記述を書いて実行させたところ、hoge関数内で記述した初期化した変数のデータを表示する処理が実行されませんでした。おそらくATile_ini関数そのものが実行されなかったのだと思われますが、何故実行されなかったのでしょうか?どなたかよろしくお願いします。 TileData.cpp #include "DxLib.h" #include "stdio.h" #include "TileDataFrame.h" #includ...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 独自のファイル形式について
返信数: 3
閲覧数: 855

Re: 独自のファイル形式について

>>usaoさん >>ファイルに書き出したい情報を適当に決めたフォーマットで書きだす 文字列や数値などのデータならtxtファイルに書き込む時と同じ要領だろうとイメージが付くのですが、画像を他の文字列や数値等と同じファイルに書き出すというのがイメージし辛くて…… >>softya(ソフト屋) さん DXArchiveについて調べてみました。見た感じ分かり易そうだったのでdxaファイルの構造を調べてそこからアプローチしてみたいと思います。 dxaファイルを調べる中で分からない部分が出てきたらまたトピックを立てて質問させていただくということで、とりあえずこの記事は解決済みとさせて頂きます。 usao...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 独自のファイル形式について
返信数: 3
閲覧数: 855

独自のファイル形式について

自分で独自のファイル形式と拡張子を作るにはどうしたらいいでしょうか? 何故唐突にこんな質問をしようと思ったかというと、mugenというフリーの格闘ゲームエンジンに使われているsffという複数の画像を様々な情報と共に管理しているファイル形式が便利だと思ったのですが、そのファイル形式はmugen独自の形式のようであり自分のプログラムに使用するには権利方面でややこしそうだったので、では自分で都合の良いファイル形式を作ればいいと思った時にどうやって作ればいいか見当もつかなかったという次第です。 画像データと共に保存したいと思った情報は以下の通りです。 ・ID(0以上の整数) ・グループ分けのための番号...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: txtファイルからデータを格納したい
返信数: 6
閲覧数: 675

Re: txtファイルからデータを格納したい

>>boxさん、みけCATさん
記述の3~7行目のコピーを間違えていたみたいです。正しくは

コード:

struct ATileData{
	int pics[4][48];//
	int pri;//
	int pat;//
	char name[32];//画像名
};
でした。すみません。

そしてboxさんとかずまさんの記述を見て41行目の"[%s,%d,%d]"を"[%c,%d,%d]"と間違えていた事に気づき、試してみたら正常に表示されました。
お騒がせして大変申し訳ございませんでした。
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: txtファイルからデータを格納したい
返信数: 6
閲覧数: 675

txtファイルからデータを格納したい

「001-G_Water01,0,4」という文が18行並んでいるtxtファイルから文を読み込み、「001-G_Water01」という半角英数字で構成された文字列のデータと「0」「4」という数値のデータを変数に格納したいと思い、龍神録の講座の内容を参考に下記のような記述を組んで3種類のデータを読み込み表示させたところ、読み込んだ数値のデータに異常は無かったのですが文字列のデータが変な風に格納されてしまったらしく、文字化けしてしまいました。 一体何故読み込んだ文字列は破損してしまったのでしょうか?どうしたら正常に読み込むことができるのでしょうか?どなたかよろしくお願いします。 記述 #includ...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 文字列の横幅だけを縮めて描画したい
返信数: 4
閲覧数: 543

Re: 文字列の横幅だけを縮めて描画したい

>softya(ソフト屋) さん
ありがとうございます。参考になりました。
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 文字列の横幅だけを縮めて描画したい
返信数: 4
閲覧数: 543

Re: 文字列の横幅だけを縮めて描画したい

>h2so5
そんな関数があったとは知りませんでした。ありがとうございます。

ちなみに参考までにお聞きしますが、もし文字列→画像と変換して横幅を縮める方法ではなく、文字列を描画する段階でフォントに手を加えて文字自体の横幅を縮める事で文字列全体の横幅を縮める事を考えた場合は何か手段はあるでしょうか?
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 文字列の横幅だけを縮めて描画したい
返信数: 4
閲覧数: 543

文字列の横幅だけを縮めて描画したい

枠の画像の上からDrawStringToHandleで文字列を描画する時、文字列の横幅だけが長いのでフォントサイズを変えずに横幅だけ縮めて描画したい時があります。
これが画像であればDrawExtendGraphを用いて大きさを調節してやればいいのですがDrawStringToHandleで描画される文字列なのでこういった方法が使えません。
もし描画する文字列を何らかの形で背景が透過された画像を生成してint型変数に格納できれば楽なのですが……
こういう時に何か良い方法は無いでしょうか?どなたかよろしくお願いします。
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 全角半角混じりの文字列を1文字ずつ表示する記述について
返信数: 2
閲覧数: 1512

Re: 全角半角混じりの文字列を1文字ずつ表示する記述について

>みけCATさん
大変分かりやすい説明ありがとうございます。お陰で理解できました。
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 全角半角混じりの文字列を1文字ずつ表示する記述について
返信数: 2
閲覧数: 1512

全角半角混じりの文字列を1文字ずつ表示する記述について

文字列の文字を1文字ずつ全角か半角かを判定する記述について調べている途中に下記の「全角半角混じりの文字列を1文字ずつ表示する」旨の記述を拾ったのですが、これについて分からない所があったので質問させて頂きます。 この記述の中の「_mbclen((BYTE*)p)」が文字列pの先頭の文字のビット数を取得する記述、「tmp[x]=*(p++)」がp[0]をtmp[x]に格納する記述だとするなら、whileループの中のどこかで文字列pの全ての文字を一つずつ前にずらす操作が必要だと思うのですが、一体何処でその操作を行っているのでしょうか? もし「tmp[x]=*(p++)」の記述だけでp[0]をtmp[...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 「'const char ' から 'char ' に変換できません。」←この原因が分かりません
返信数: 2
閲覧数: 5175

「'const char ' から 'char ' に変換できません。」←この原因が分かりません

予め変数に格納した文字列をstrcatでつなぎ合わせてDrawStringToHandleで描画するという下記の記述を書いたのですが、文字列のパーツを変数に格納する時に「error C2440: '=' : 'const char [3]' から 'char [3]' に変換できません。」というエラーが発生してしまいます。 文字列リテラルがconst char形式でありそれをchar形式の変数に入れようとしていておかしくなっているらしいのですが、文字列リテラルの内容をchar型変数に格納する記述は他の場所でも用いており、そちらでは特にエラーは発生していないのでこれ自体が原因とは思えません。 こ...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: アクセス違反の原因が分かりません
返信数: 5
閲覧数: 1341

Re: アクセス違反の原因が分かりません

>文の後ろに文を書くのは見逃しやすいので止めたほうが良い
すみません、次から気をつけます

ソースの方は15~16行目を下記のように書き変えたら無事デバッグ出来ました。ありがとうございます。

コード:

        char rewrite[]="pic/illu/";//書き換え用
        char numeron[256];
	strcpy(numeron,rewrite);
	strcat(numeron,data[0].pic);
	img[0]=LoadGraph(numeron);//エラー発生地点
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: アクセス違反の原因が分かりません
返信数: 5
閲覧数: 1341

アクセス違反の原因が分かりません

フォルダのパスと画像ファイル名をchar変数に格納し、それらをstrcatで結合した文字列をファイルのパスとして画像を呼び出すプログラムを組んでデバッグしたところアクセス違反が発生してしまいました。 作成したプログラムの大まかな構造は以下の通りです #include "DxLib.h" int img[100]; struct card{ char *pic; };struct card data[100]; void ini(){ int i; for(i=0;i<100;i++){ img[i]=LoadGraph( "pic/null.png" );data[i].pic=""; } }...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 分割コンパイルについて
返信数: 7
閲覧数: 1497

Re: 分割コンパイルについて

>usaoさん
大変返事が遅れてすみません。
ヘッダファイルの事を検索してみたのですがヘッダファイルってcpp間の関数のプロトタイプ宣言をするだけのファイルではなくデータを格納する場所を新しく作らない記述なら何でも書けるのですね。
それでstatic Objの宣言をObj.hで行いそれ以外を提案してくれた通りにしてみたところ無事コンパイルする事が出来ました。
本当にありがとうございます。
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 分割コンパイルについて
返信数: 7
閲覧数: 1497

Re: 分割コンパイルについて

あっ・・・・・・(´・ω・`)

と思ってObj.hとAnim.hのインクルードガードの名前をDEF_OBJ_HとDEF_ANIM_Hに変えてみたところ、Anim.cppの59行目のエラーが消えただけでしたのでもっと別の理由で参照できていないのだと思われます。
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 分割コンパイルについて
返信数: 7
閲覧数: 1497

分割コンパイルについて

自作のプログラムを試験的に次のように分割してビルドしてみたら以下のようなエラーメッセージが表示されてしまいました。 main.cpp #include "DxLib.h" #include "Anim.h" //配列の生成に変数は使えない //関数の外では変数に値を代入できない //配列は定義時に値を代入する事 int TimeCount;//全体の時間カウント int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){ ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BAC...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 構造体変数の宣言と使用について
返信数: 5
閲覧数: 947

Re: 構造体変数の宣言と使用について

すみません、自己解決しました。
考えてみればこの場合のpic_inPictureRead.GrってのはSpriteAmount個並んだpic_inPictureRead構造体変数それぞれの中にあるSpriteAmount種類のGr変数であってSpriteAmount個の要素があるGr配列ではありませんね。
配列の中に画像を読み込むLoadDivGraph関数で対応できる訳ないですね。
本当にお騒がせしてすみませんでしたf(^_^;
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 構造体変数の宣言と使用について
返信数: 5
閲覧数: 947

Re: 構造体変数の宣言と使用について

24行目を次のように書き換えて動かしてみたところ、またエラーが吐き出されてしまいました。 LoadDivGraph( RFOG_inPictureRead[i].FileName , RFOG_inPictureRead[i].allnum , RFOG_inPictureRead[i].xnum , RFOG_inPictureRead[i].ynum , RFOG_inPictureRead[i].xsize , RFOG_inPictureRead[i].ysize , pic_inPictureRead->Gr + a ); エラー文 1>c:\users\aaaa\visual st...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 構造体変数の宣言と使用について
返信数: 5
閲覧数: 947

Re: 構造体変数の宣言と使用について

すみません、main関数での PictureReadでの参照時にpic全体を参照する筈が間違って.Grも入れてしまいました…、お恥ずかしい事です。 それで、PictureRead(pic.Gr,ReadForObject_Gr);をPictureRead(pic,ReadForObject_Gr);に直してコンパイルしてみたところ、次のようなエラーが出てきました。 1>c:\users\visual studio 2008\projects\tatestg_test\tatestg_test\main.cpp(24) : error C2228: '.Gr' の左側はクラス、構造体、共用体でな...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 構造体変数の宣言と使用について
返信数: 5
閲覧数: 947

構造体変数の宣言と使用について

画像を格納する為の変数int Grを含んだ構造体とその変数picを宣言した後、関数でpicのメンバとなっているGrにLoadDivGraphで画像を格納しようとしたらビルド時にエラーが発生してしまいましたが、一体どこで記述を間違っているのかが分かりません。その時のソースとエラー文は次の通りです。 #include "DxLib.h" #define SpriteAmount 12//スプライトの総数 #define PictureReadAmount 2//読み込む画像ファイルの数 struct Graph{ int Gr;//画像格納変数 double point[2];//各画像の原点 }...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 関数に必要な情報を全て引数として取り込めるようにしたい
返信数: 4
閲覧数: 733

Re: 関数に必要な情報を全て引数として取り込めるようにしたい

へにっくすさんのアドバイスを参考にして以下のように書きなおした結果無事コンパイルできました。ありがとうございます。 #include "DxLib.h" #define Anim_longest_Picture 5//最も多い枚数の画像を使うアニメの使用画像枚数 #define ObjApMax 3//ObjApの要素の数 #define ObjPalMax 3//ObjPalの要素の数 #define SpriteAmount 12//スプライトの総数 #define PictureReadAmount 2//読み込む画像ファイルの数 //配列の生成に変数は使えない //関数の外では変数に値...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 関数に必要な情報を全て引数として取り込めるようにしたい
返信数: 4
閲覧数: 733

Re: 関数に必要な情報を全て引数として取り込めるようにしたい

返信ありがとうございます。引数のややこしさは自分でやっててよく分かったので関数を別ファイルでコンパイルできた後に見直してみたいと思います。 それはそれとして、171行目と184行目のエラーは直せたのですが、104行目と145行目は(下のコードでは8行目と51行目)次のように書きなおしたところ、「'void *' から 'int *' に変換できません。」というエラー文が表示されてしまいました。 void Anim_Draw(int ObjectNumber , int AlP_inAnim_Draw , struct Obj *OA_inAnim_Draw , struct Anim *AO_...
by wasawasa
6年前
フォーラム: C言語何でも質問掲示板
トピック: 関数に必要な情報を全て引数として取り込めるようにしたい
返信数: 4
閲覧数: 733

関数に必要な情報を全て引数として取り込めるようにしたい

初めまして。 プログラムを複数のファイルに分割する為にPictureRead、Obj_Syutugen、Anim_Draw、Anim_AllDraw関数を関数の外の必要なデータを引数として取り込めるようにしたくて次のようにプログラムを書きなおした所、下記のようなエラーが吐き出されてしまいました。 #include "DxLib.h" #define Anim_longest_Picture 5//最も多い枚数の画像を使うアニメの使用画像枚数 #define ObjApMax 3//ObjApの要素の数 #define ObjPalMax 3//ObjPalの要素の数 #define Sprit...

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