くだすれC++Builder(超初心者用)その4
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
2009/10/23(金) 09:06:16もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
C++Builder使いが優しくコメントを返しますが、
お礼はC++Builderの布教と初心者の救済をお願いします。
Embarcadero Home Page
http://www.codegear.com/jp/
<過去スレ>
くだすれC++Builder(超初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1117225464/l50
くだすれC++Builder(超初心者用)その2
http://pc10.2ch.net/test/read.cgi/tech/1144308804/l50
くだすれC++Builder(超初心者用)その3
http://pc11.2ch.net/test/read.cgi/tech/1171219191/
<兄妹スレ>
くだすれDelphi(超初心者用)その50
http://pc12.2ch.net/test/read.cgi/tech/1246340765/l50
0805デフォルトの名無しさん
2011/07/28(木) 23:45:07.350806デフォルトの名無しさん
2011/07/29(金) 00:59:27.92オブジェクト公開されてるからそれから、辿っていってみて。
0807デフォルトの名無しさん
2011/07/29(金) 11:44:01.13HTTPEncodeを使っても正常にUTF-8になってないみたいなので
0808デフォルトの名無しさん
2011/07/29(金) 13:44:29.96UTF-8にURLエンコード
の意味が分からない
0809デフォルトの名無しさん
2011/07/29(金) 20:12:08.80ウザいだけです。
0810デフォルトの名無しさん
2011/07/30(土) 17:38:44.670811デフォルトの名無しさん
2011/08/01(月) 17:24:56.85辿ってみましたがフィールドのコメントを取得するようなのを発見できませんでした。
ぶっちゃけコードを教えてください
0812801
2011/08/03(水) 20:43:32.920813デフォルトの名無しさん
2011/08/03(水) 21:07:55.33V
_____
/::::::::::::::::::::::::::\ _
/::::::::::::::::::::::::::::::::::::::\ /  ̄  ̄ \
|:::::::::::::::::|_|_|_|_| /、 ヽ はぁ?黙ってろデブw
|;;;;;;;;;;ノ \,, ,,/ ヽ |・ |―-、 |
|::( 6 ー─◎─◎ ) q -´ 二 ヽ |
|ノ (∵∴ ( o o)∴) ノ_ ー | |
/| < ∵ 3 ∵> \. ̄` | /
::::::\ ヽ ノ\ O===== |
:::::::::::::\_____ノ:::::::::::\ / |
0814デフォルトの名無しさん
2011/08/04(木) 06:27:21.250815デフォルトの名無しさん
2011/08/04(木) 09:48:01.540816デフォルトの名無しさん
2011/08/04(木) 10:47:18.890817デフォルトの名無しさん
2011/08/08(月) 19:06:57.41#include "ABCDEFGH.h" ←空のファイル
#include "ABCDEFGHI.h" ←存在しないファイル
上のようなCPPをコンパイルするとエラーもなく通るんですが、
これって基本先頭8文字しか確認していないってことでしょうか?
また、C++の仕様上では正しいのでしょうか?
0818デフォルトの名無しさん
2011/08/08(月) 23:18:23.60仕様上問題ない
0819デフォルトの名無しさん
2011/08/09(火) 12:28:32.918文字ってことでDOS形式のファイル名か何かが
絡んでいるだろうとは思っていましたが、仕様上
問題ないというのは驚きです。
となると、ヘッダーファイル名は先頭8文字をユニ
ークにしなければいけないんですね。
0820デフォルトの名無しさん
2011/08/09(火) 14:01:34.810821801
2011/08/11(木) 17:05:51.550822デフォルトの名無しさん
2011/08/11(木) 20:26:49.25V
_____
/::::::::::::::::::::::::::\ _
/::::::::::::::::::::::::::::::::::::::\ /  ̄  ̄ \
|:::::::::::::::::|_|_|_|_| /、 ヽ はぁ?黙ってろデブw
|;;;;;;;;;;ノ \,, ,,/ ヽ |・ |―-、 |
|::( 6 ー─◎─◎ ) q -´ 二 ヽ |
|ノ (∵∴ ( o o)∴) ノ_ ー | |
/| < ∵ 3 ∵> \. ̄` | /
::::::\ ヽ ノ\ O===== |
:::::::::::::\_____ノ:::::::::::\ / |
エラーを英語で表示するにはどうしたらいいのでしょうか?独島は日本の領土
0824デフォルトの名無しさん
2011/08/16(火) 03:24:59.36BCB5の場合だけど
0825801
2011/08/16(火) 16:26:08.120826デフォルトの名無しさん
2011/08/24(水) 15:20:16.08pragmaでインクルードファイルのパスは指定できるのでしょうか?
0827デフォルトの名無しさん
2011/08/24(水) 15:57:39.79つ ttp://docwiki.embarcadero.com/RADStudio/ja/Pragma
0828デフォルトの名無しさん
2011/08/24(水) 16:03:16.21#pragma option で使用できないオプションは以下のとおりです。
のところに
-Ifilename
0829デフォルトの名無しさん
2011/08/24(水) 16:22:12.53有り難うございます。
すっぱり諦めます。
0830デフォルトの名無しさん
2011/08/27(土) 14:02:57.71データ入力値や計算結果・図示などの
印刷を行いたいのですが、
ページは数ページから数十ページ程度の出力となりうるもので
ビルダーでするにはどのコンポーネントをつかう必要が
あるのでしょうか?
QuickReportを検索したのですが、
フリーであればよいのですが、
有償問わず教えてもらえたらと。
0831デフォルトの名無しさん
2011/08/28(日) 00:13:46.140832デフォルトの名無しさん
2011/08/28(日) 00:52:22.100833デフォルトの名無しさん
2011/09/09(金) 16:50:07.99void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString str1 = "test1";
AnsiString str2 = Caption;
AnsiString dummy1;
AnsiString dummy2;
AnsiString dummy3;
AnsiString dummy4;
#if 1
AnsiString tmp = (str1.Length() ? str1:Caption );//EAccessViolation
#else
AnsiString tmp = (str1.Length() ? str1:str2 );//OK
#endif
}
↑で、EAccessViolation が発生するのは、なぜなんだろ?
コンパイラが腐ってるという噂もありつつ...
0834デフォルトの名無しさん
2011/09/09(金) 18:57:56.44?の右(どちらか)にデストラクタが必要なオブジェクトを置いたとき
変なコードを吐いたのを覚えてる。
危険と認識したので、俺的には
?の右に置くものは組み込み型のみで、かつ2つの型を統一にするようにしている。
0835デフォルトの名無しさん
2011/09/09(金) 19:01:09.08暗黙の型変換とデストラクタとで
どちらが原因でバグにぶつかるのか深く追求しなかったから、
両方を避けるようにしてる、ってこと。
特にコンストラクタを介する暗黙の型変換は確実にとぶだろうと。
0836デフォルトの名無しさん
2011/09/10(土) 05:22:23.39さすがに XE2 では正しく動いた。テンポラリのオブジェクトを適切に破棄しておる
>コンパイラが腐ってるという噂もありつつ...
それが正解
0837833
2011/09/10(土) 19:35:16.92マシン語がよめれば、確信がもてたんだろけど、
よめないので、吐かれたコードが怪しいとおもいつつ、確信がもてなかただ
やっぱ、最後はマシン語よめないとなぁ...勉強しろよ>自分
if文に書き換えりゃいいだけだから、まぁ、大した話ではないんだけど、
失った時間が...
↑のは、dummy をはさんでるから、当該文で、例外がおきるけど、
スタックの状況によっては、全然離れたところが壊されて、
意味不明の動作になるから、けっこうたちがわるい...
0838デフォルトの名無しさん
2011/09/10(土) 19:55:35.09思えない。ただ、バグを回避するコーディングもテクだとは思うが。
0839デフォルトの名無しさん
2011/09/11(日) 10:18:11.848086の時代じゃあるまいし、バカかよ。
32bitのあのやたら長いバイナリを読める奴なんいるんかよ。
アセンブラ読めれば十分だろ、阿呆。
0840デフォルトの名無しさん
2011/09/11(日) 10:31:35.14「C3がRETだ」とかそういうレベルで機械語が読めるとでも思ったのか??コンパイラが
吐くコードがイメージできないと辛いってことだと思うが。
0841デフォルトの名無しさん
2011/09/11(日) 13:34:30.72http://e-words.jp/w/E6A99FE6A2B0E8AA9E.html
マイクロプロセッサが直接解釈・実行できる言語。数字の列で表現され、人間が簡単に理解できるような形式にはなっていない。
0842デフォルトの名無しさん
2011/09/12(月) 06:25:03.340843デフォルトの名無しさん
2011/09/12(月) 12:23:43.920844デフォルトの名無しさん
2011/09/12(月) 20:42:14.380845833
2011/09/17(土) 21:24:46.26ちなみに私も、アセンブラのつもりでマシン語とつかてた
0846デフォルトの名無しさん
2011/09/17(土) 21:27:26.21また、BCB5update1 でのお話
//---------------------------------------------------------------------------
class TTest1
{
protected:
#if 1
AnsiString __fastcall GetTest(){return GetTest(1);}//<== E2247 アクセスできない
#else
AnsiString __fastcall GetTest(){return "1";}//<== OK
#endif
public:
__property AnsiString Test ={read=GetTest};
AnsiString __fastcall GetTest(int x){return AnsiString(x);}
};
//---------------------------------------------------------------------------
class TTest2
{
private:
TTest1 * Test1;
protected:
AnsiString __fastcall GetTest(){return Test1->Test;}
public:
__property AnsiString Test ={read=GetTest};
};
//---------------------------------------------------------------------------
これで、コンパイルエラーが出るのはなぜなんでしょ?
0847デフォルトの名無しさん
2011/10/10(月) 15:44:24.190848デフォルトの名無しさん
2011/10/10(月) 15:48:15.920849デフォルトの名無しさん
2011/10/10(月) 16:30:47.920850デフォルトの名無しさん
2011/10/10(月) 19:51:01.56あまり使わないからよく覚えてないし
0851デフォルトの名無しさん
2011/10/20(木) 15:22:19.51C++なら参照で済むところまでポインタ使ってる
0852デフォルトの名無しさん
2011/10/20(木) 17:27:05.35StringGridにフォーカスがあるとWM_MOUSEWHEELが入ってこなくなるので
StringGridのMouseWheelを無視してWM_MOUSEWHEELにイベントが入ってくるようにする方法を教えてください
0853デフォルトの名無しさん
2011/10/20(木) 17:36:51.160854デフォルトの名無しさん
2011/10/20(木) 17:50:10.42Enabledをfalseにする如くに。
しかし、グリッド操作もするのでそれはできない
0855デフォルトの名無しさん
2011/10/20(木) 18:06:40.770856デフォルトの名無しさん
2011/10/20(木) 18:26:34.410857デフォルトの名無しさん
2011/10/20(木) 20:55:25.380858デフォルトの名無しさん
2011/10/22(土) 19:07:24.72マウス位置がStringGrid内かを判断して
StringGrid内だったら、処理したい関数にメッセージを転送すればいい。
これはわりと普通に行われている処理で
ぐぐれば、いくらでも例が出てくる。
0859デフォルトの名無しさん
2011/10/24(月) 06:37:15.09std::vector使えばテンプレートでキャストしなくてもいいですが、
VCLで統一したくて、でもTObjectListだとキャストいぱーいでいやーんです。。。
0860デフォルトの名無しさん
2011/10/26(水) 14:16:12.70グローバルでcs1,cs2を,Form1のpublicにchar buf[20]を宣言して、
Form1にEdit1,Edit2,Button1を貼って実行すると、競合させたbufの内容が
Edit2側にゴミとして表示されてしまいます。
ttp://ideone.com/Tk5g9
下の2つがスレッド側です。
使い方が根本的に違うのでしょうか。
0861デフォルトの名無しさん
2011/10/26(水) 14:49:16.04家(buf)には鍵(cs)が1つだけあって、それを先に取ったものが家に入れる。
「家とは関係のない鍵(cs1,cs2)」をそれぞれが持っててるだけでは意味ない。
0862デフォルトの名無しさん
2011/10/27(木) 01:07:21.50作成するタイミングも間違い。コンストラクタか、FormCreate()でnewすべき。
競合するオブジェクトにアクセスしたいときにAcquire()する。
0863860
2011/10/27(木) 13:24:14.00やってみたのですが、上手くいきません。
スレッド側のSleepがロックを解除してしまうとかはなさそうだし。
Sleepがないと、クリティカルセクションを使わなくても見た目では
競合していなかったので入れてみたのですが。
本来のやりたい事は、buf[]を介してUSB-I/O基板を繋いで、
メインスレッド側:
・Timer1で定期アクセス
・特定の処理で単発アクセス
サブスレッド側:
・特定の処理で連続アクセス
だったので、実験的に競合させるサンプルプログラムを作って動作を
試したかったのです。
(ググっても、見た目で効果がわかるようなサンプルプログラムはなかったので)
タイマイベントの中でフラグを立てて、それを監視して競合を避ける方法も試してみます。
0864デフォルトの名無しさん
2011/10/27(木) 13:45:51.12タイマイベントの中でフラグ云々は、クリティカルセクションそのもののような気が。
0865デフォルトの名無しさん
2011/10/27(木) 13:59:33.250867デフォルトの名無しさん
2011/10/27(木) 17:23:54.69丸ごとSynchronizeするならスレッドの意味ないんじゃ…。
0868デフォルトの名無しさん
2011/10/27(木) 20:22:24.18デッドロックしそうなんだけど。
基本は競合するところに最小限のロックをかけるだから、テストといえどもまずい。
0869デフォルトの名無しさん
2011/10/28(金) 06:54:34.72Timer1Timer はメインスレッドのメッセージループ内で動作するよ。
Synchronizeを使って呼び出されたSyncDebugはメインスレッドのメッセージループ内で動作するよ。
TCriticalSectionやMutexみたいなことをメッセージループで実現するのがTThreadのSynchronizeなのでどちらかにしたほうがいいよ。
0870デフォルトの名無しさん
2011/10/28(金) 11:41:44.21Mutexは違うな
0871デフォルトの名無しさん
2011/10/28(金) 13:00:04.950872デフォルトの名無しさん
2011/10/28(金) 16:31:44.78用途の違いというかそんな感じ
0873デフォルトの名無しさん
2011/10/28(金) 22:25:37.51実際に正しく動作する例を見れば、理解できるんじゃないかな。
0874860
2011/10/29(土) 10:27:45.71最初はUnit2.cppのExecute()の中で競合させようと、
あれこれ試したのが、上手く競合した状態を作れなくて
Synchronizeを使い出してしまったんですが、本末転倒ですね。
Synchronizeがメインスレッドで実行されるということは、
全く意識していませんでした。
>>869-872
Mutexはプログラム自体の二重起動防止では使っていますが、スレッドに対しても
使えるということでしょうかね。
>>873
TCriticalSectionはググってDelphiの例も読んでみたのですが、局所的な部分の
例しか見つけられませんでした。
クリテクカルセクションは、私には効果を確認する能力がないので諦めて、
フラグで処理しようと思います。
長々と付き合ってもらい、ありがとうございました。
0875デフォルトの名無しさん
2011/10/29(土) 11:15:49.57いや、・・・TCriticalSectionは、そのフラグだから。
マルチスレッドでもちゃんと調停してくれることを保証するフラグ。
0876デフォルトの名無しさん
2011/10/29(土) 11:54:06.06それは解りましたが、”私の能力では”効果が確認できないので
TCriticalSectionで書くのを止めるということです。
Synchronizeでも使ってメインスレッド側で調停させる
ことにします。
0877デフォルトの名無しさん
2011/10/29(土) 15:35:02.010878デフォルトの名無しさん
2011/10/29(土) 16:24:53.78何逆ギレしてんの?カルシウムとっとけよー
0879デフォルトの名無しさん
2011/10/31(月) 10:11:38.770880デフォルトの名無しさん
2011/11/01(火) 10:05:20.79Corsorの形状を変えているのですが
この時にマウスボタンを離さないとカーソルが変わってくれません。
これマウスボタンを押したままでマウスカーソルを変更する方法を教えてください
0881デフォルトの名無しさん
2011/11/01(火) 16:40:12.410882デフォルトの名無しさん
2011/11/01(火) 17:10:17.79それやったけどダメですた。
ちなみにSleepもやったけどダメですた
何か強制的にカーソル変えるアレないですかね?
ちなみにScreenのカーソルなら一発で変わるんですけどね
0883デフォルトの名無しさん
2011/11/01(火) 17:26:33.21カーソルが来たときのデフォルトのカーソル形状を設定するもの。なので通常は
Screen.Cursorを変更するんだけど。
0884デフォルトの名無しさん
2011/11/17(木) 23:18:33.47改行を含むAnsiString型の文字列(中身=AA\r\nBB\r\nCC)をiniファイルに書く。
これでiniファイルを覗いてみると、
[Test]
Test1=AA
BB
CC
のように正しく書き込まれている。
でも、それをReadStringで読み込むと、AAまでしか読めず
BBやCCの部分は読めない。
どうしたらいい?
ちなみにTest1に書きたい文字は行数が決まっていない(改行が何回あるかわからない)
0885デフォルトの名無しさん
2011/11/18(金) 00:13:38.10Test1_Lines=3
Test1_Line1=AA
Test1_Line2=BB
Test1_Line3=CC
じゃだめ?
0886デフォルトの名無しさん
2011/11/18(金) 08:47:52.86\r\nをあらかじめ別の文字あるいは文字列に置換して書き込む
読み出し時に、置換部分を\r\nに戻す
その2
複数行に対応した関数(例:ReadStrings)を作成する
0887デフォルトの名無しさん
2011/11/18(金) 09:41:37.18以下のデータがあった場合
AA\r\nzz=1\r\nCC
[Test]
Test1=AA
zz=1
CC
と書き込まれますが、884 は、ReadString で何が読めたらよい?
まぁ簡単には HTTPApp.HTMLEncode/HTMLDecode を使うことを考えたらどうだろうか
C++Builder でも(バージョンにもよるだろうけど)使えると思う。
0888デフォルトの名無しさん
2011/11/21(月) 06:26:05.410889デフォルトの名無しさん
2011/11/21(月) 10:50:31.61C++98 の亜種として、「Borland C++」という独自規格だと思ったほうがよいでしょう。
C++03 すら満足していません。
0890デフォルトの名無しさん
2011/11/21(月) 14:21:43.73高速C++「もどき」コンパイラだと思っておけばいいよ
でもXE→Update→XE2→Updateの度にbcc32.exeのサイズが少しずつ大きくなっている
まあ多分SSE4.2とかSSE4a、AVXのインラインアセンブラを拡充しただけだと思うけど
0891デフォルトの名無しさん
2011/11/21(月) 14:27:49.030892デフォルトの名無しさん
2011/11/21(月) 15:55:10.13それはすばらしい
0893デフォルトの名無しさん
2011/11/21(月) 16:16:06.30どちらにしろx64ではインラインアセンブラは禁止されちゃったしCompiler Intrinsicsを
使うしかないわけだが
今回C++Builderの64bit化が見送られたのもここら辺に関係ありそう
0894デフォルトの名無しさん
2011/11/21(月) 16:51:10.99動的に値を変更するにはどうしたらいいですか?
EndXValues->XValue[0]=0;
とやっても値が変わらないみたいなので・・
0895デフォルトの名無しさん
2011/11/22(火) 15:56:01.89書いてあったりするのになあ。
BCB5の頃は最新ANSI C/C++に対応って謳ってたのになあ。
インラインアセンブラはMSが勝手に自粛してるんじゃなくて、
コンパイラメーカーは64-bitでインラインアセンブラ実装しちゃ
いけないってことなのかな。
0896デフォルトの名無しさん
2011/11/22(火) 16:30:10.660897デフォルトの名無しさん
2011/11/22(火) 16:57:46.520898デフォルトの名無しさん
2011/11/22(火) 17:13:03.04アセンブリ言語まで抽象化されちまった
そのCPUが持つ最高の命令を使うわけだ
気持ち悪いな
レジスタが見えないとか
0899デフォルトの名無しさん
2011/11/22(火) 17:16:11.65http://msdn.microsoft.com/ja-jp/library/26td21ds(v=vs.80).aspx
>The intrinsics are required on 64-bit architectures where inline assembly is not supported.
禁止は別にされてないが、VCでAMD64用のコンパイラはインラインアセンブラを
サポートしなくなったってだけの話だろ
Embarcaderoがどのようにしようと勝手
でもCompiler Intrinsicsが主流になりそうな予感
0900デフォルトの名無しさん
2011/11/23(水) 03:34:04.450901デフォルトの名無しさん
2011/11/24(木) 13:25:04.980902デフォルトの名無しさん
2011/11/25(金) 12:15:27.640903デフォルトの名無しさん
2011/11/25(金) 21:45:22.420904デフォルトの名無しさん
2011/11/25(金) 22:51:40.65いや、なんでもない
レス数が900を超えています。1000を超えると表示できなくなるよ。