5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

くだすれC++Builder(超初心者用)その4

1 :デフォルトの名無しさん: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


2 :デフォルトの名無しさん:2009/10/24(土) 04:05:23
C++Builderは64ビットWindows7に対応していますか?

3 :デフォルトの名無しさん:2009/10/24(土) 11:17:02
2010ならOK。2007/2009はIDEのデバッガ周りにバイナリパッチが必要。

4 :デフォルトの名無しさん:2009/10/25(日) 11:26:23
TurboC++6.0で使えるDirectXって7版?

5 :デフォルトの名無しさん:2009/10/26(月) 14:07:46
TChartのTPointSeriesで各々のポイントのマーカーの値を任意の文字で表示したいのですが
どうやってやればいいのですか?

6 :デフォルトの名無しさん:2009/10/26(月) 22:58:46
完全に任意に、ってのはできなさそうに見えるけど。それらしいイベントもプロパティもないんで。

7 :デフォルトの名無しさん:2009/10/27(火) 09:41:01
64ビットプログラムが作れるようになるのは次のバージョンからですか?

8 :デフォルトの名無しさん:2009/10/27(火) 10:00:53
>>6
そうなんですよね、プロパティ等がみつからなかったので
ちなみにAddXYする時にラベルを指定できるんですが
これ指定しちゃうと確かにマーカーは指定したのになるんですが
軸もしれになっちゃうんですよね・・・
そこさえなんとかできればいいんですが・・・

9 :デフォルトの名無しさん:2009/10/28(水) 17:05:39


10 :デフォルトの名無しさん:2009/10/31(土) 00:04:03
c++builder6のstdoutはどういう扱いなのでしょうか?
配布されているライブラリ内で結果をstdoutに出力する関数があり、
その結果をc++builder側で受け取りたいのですが方法がわかりません。
(stdoutへの出力を横取りしたい。)
どなたかアドバイスお願いします。

11 :デフォルトの名無しさん:2009/10/31(土) 00:13:33
パイプかなんかを使うんじゃなかったっけ?delphi stdoutかなんかでぐぐれ。

12 :デフォルトの名無しさん:2009/11/03(火) 00:09:05
int a[100]という配列を用意して、実際に使っているのは20個だとします。
この場合何個使ってるか調べる方法はありますか?

13 :デフォルトの名無しさん:2009/11/03(火) 00:13:40
調べるも何も20個だろ

14 :デフォルトの名無しさん:2009/11/03(火) 00:15:31
あ、書き方が変でした。。
int a[100]という配列があってその内何個使っているか調べたいときです。
20個とかはわからないと仮定してです。。

15 :デフォルトの名無しさん:2009/11/03(火) 00:19:21
立て続けで申し訳ないのですが、
sizeof(a)だと100個になってしまうのでしょうか?

16 :デフォルトの名無しさん:2009/11/03(火) 00:20:18
何個使うかはプログラム次第だろ
カウンタで使用している数を記録させるか、別にフラグ用の配列を用意するかだろ

17 :デフォルトの名無しさん:2009/11/03(火) 00:25:21
vector

18 :デフォルトの名無しさん:2009/11/04(水) 09:53:40
v

19 :デフォルトの名無しさん:2009/11/04(水) 09:55:42
>>15
それだとintはOSに依存すっし
個数だけなら
count = sizeof(a) / sizeof(int);
まあこうだろうな
何個使ってるとかっつーのをカウントするのは不可

20 :デフォルトの名無しさん:2009/11/04(水) 10:37:57
使用している使用していないの基準て何なの?

21 :デフォルトの名無しさん:2009/11/04(水) 17:39:40
「プロジェクトオプション」の「バージョン番号を含める」ってとこで
「ビルド番号の自動更新」て項目にチェックを入れたところ、
ブレークポイントで止めたとき「ソースが変更されました。再構築しますか?」
って必ず一回聞かれるようになっちゃうんだけど、同じ症状出てる人いない?
バージョンは RAD Studio 2010で。

22 :デフォルトの名無しさん:2009/11/04(水) 17:43:58
TChartで印刷するときPrintPartialCanvasを使ってるんですが
これ背景が黒でもラインによってはちゃんと背景を白で印刷してくれる時があるんですが
強制的に白にするにはどうしたらいいですか?
さすがに真っ黒だとインクがエロい事になるので・・・

23 :デフォルトの名無しさん:2009/11/05(木) 15:08:16
>>21
ああ、そうなるな。これ、ウゼェ。

24 :デフォルトの名無しさん:2009/11/05(木) 15:24:49
無限ループwww

25 :デフォルトの名無しさん:2009/11/05(木) 15:33:20
>>21
QCに書いとけ
そうじゃないと次のUpdateに反映されんぞ

26 :21:2009/11/06(金) 14:42:16
みんな再現するようだね、サンクス。
>>25
QC…、おぅこんな機能用意されてんだな、ありがとう。
英語の復習から始めるとして…
つかメニューの箇所を説明すんのに日本語版のメニュー名じゃダメだよな?
投稿までに何日掛かるかわからんが空いた時間に調べてみるか…(汗)

27 :デフォルトの名無しさん:2009/11/08(日) 21:28:15
ちょっと前に無料で配られていたTurboC++BuilderExplorerでは
Windows7 64bitでデバッガを使うのはもはや無理ですか?

28 :デフォルトの名無しさん:2009/11/14(土) 20:53:58
BDS2006にて
フォームにTWebBrowserを貼り付けただけの、ごくごく単純なプログラム
http://contents.shopping.yahoo.co.jp/points/campaign/pointlot01/
上記をNavigateして開いて
「ポイントくじに今すぐチャレンジ」をクリックすると
画面表示が99%くらいで、必ずプログラムが終了してしまう。
これって、どうにかならないでしょうか


29 :デフォルトの名無しさん:2009/11/14(土) 22:11:27
デバッガでデバッグ。

30 :28:2009/11/14(土) 22:20:48
IEコンポの内部で何かが発生して
プログラムが強制終了になってしまうので
デバッグしょうがないのです。


31 :デフォルトの名無しさん:2009/11/15(日) 00:09:39
なんか根本的なところが間違ってる、とまではいわないまでも、考え違いをしているような気がする。
もういちどスタートラインに戻って考え直してみてはいかが?

32 :28:2009/11/15(日) 00:25:49
プログラムは
フォームにTWebBrowserを貼り付けて
WebBrowser1->Navigate(ぱらーめーた);しているだけです。
ただこれだけなのですよ
何を考え直すのでしょうか???BDS2006を使うなとかですか?
「ポイントくじに今すぐチャレンジ」をクリックすると落ちてしまい
それ以外だと、無問題です。
IEでブラウズすると問題なく動きます。


33 :デフォルトの名無しさん:2009/11/15(日) 00:33:15
>32
コピペにマジレス

34 :デフォルトの名無しさん:2009/11/15(日) 01:22:05
それだけではなんなので。
つ ttp://www33.ocn.ne.jp/~takoyakusi/delphi/InternetProg.html

35 :デフォルトの名無しさん:2009/11/17(火) 17:46:38
おい、質問するぞ、誰かいねーのか!!

36 :デフォルトの名無しさん:2009/11/17(火) 19:02:49
<>

37 :デフォルトの名無しさん:2009/11/17(火) 23:08:04
質問どうぞ

38 :デフォルトの名無しさん:2009/11/19(木) 22:07:33
自作コンポーネントを使うと #pragma link が必要になるんだけど
通常のコンポーネントのように #pragma link なしでいいようにパッケージを作るにはどうしたら良いんですか?

39 :デフォルトの名無しさん:2009/11/22(日) 21:16:45
BCBのメーリングリストってもうなくなっちゃったんですか?

↓は登録したけど全然投稿がないみたいだし...
http://ns8.sfdata.ne.jp/cgi-bin/mailman/listinfo/cbuilder

40 :デフォルトの名無しさん:2009/11/24(火) 08:48:45
unicode対応のプログラムはどのようにして作ればよいのでしょうか?


41 :デフォルトの名無しさん:2009/11/24(火) 09:06:36
もっと具体的に質問してください

42 :デフォルトの名無しさん:2009/11/24(火) 09:16:51
日本語版C++Builderでコンパイルした場合、
そのソフトを英語版Windowsで実行すると、エラーメッセージダイアログなどが
文字化けします。どのWindowsで実行しても文字化けしないようunicode対応で
プログラムを組みたいのですが、その方法を教えてください。

43 :デフォルトの名無しさん:2009/11/24(火) 09:31:53
ttp://journal.mycom.co.jp/articles/2009/06/05/Windowsapi/index.html


44 :デフォルトの名無しさん:2009/11/24(火) 18:45:43
TBitmapをDIB(ヘッダ無しで色データ配列のみ)に変換する方法を教えてください。。

45 :デフォルトの名無しさん:2009/11/25(水) 01:40:37
C++Builder 2007で作ったexeをWindows7で実行していますが問題が発生しています。

処理内容は、TCustomControlから派生したコントロールをTScrollBox内に設置して、上下左右に
スクロールさせています。

XP,Vistaでは、コントロールのHeightに65536以上の値を設定しても問題ない
のですが、Windows 7では65536以上を指定しても65535になってしまいます。

これはWindows7の非互換の問題でしょうかね。それとも65536以上を指定して
動いていた今までの動作が例外的だったのでしょうか。

悩んでます。よろしくです。

46 :デフォルトの名無しさん:2009/11/25(水) 03:45:02
C++Builderを始めようと思いますが、未来はありますか?

47 :デフォルトの名無しさん:2009/11/25(水) 06:44:12
あるんじゃない?
2009じゃなくて2010にしたほうが良いよ

48 :デフォルトの名無しさん:2009/11/25(水) 07:10:18
>45
互換モードで動作させたらどうなるの?とはいえ
> これはWindows7の非互換の問題でしょうかね。
だろうね。

49 :デフォルトの名無しさん:2009/11/25(水) 15:41:52
TGA形式の画像をTBitmapに変換する方法を教えてください

50 :デフォルトの名無しさん:2009/11/25(水) 15:51:58
つ ttp://www.efg2.com/Lab/Library/Delphi/Graphics/FileFormatsAndConversion.htm

51 :デフォルトの名無しさん:2009/11/25(水) 16:15:57
何この糞見づらいページは

怪しいライブラリを使わないで変換する方法を教えてください

52 :デフォルトの名無しさん:2009/11/25(水) 18:18:07
自分で作れ

53 :デフォルトの名無しさん:2009/11/25(水) 20:01:24
Susie pluginって手もある。

54 :デフォルトの名無しさん:2009/11/25(水) 23:31:03
>>48
 XP互換モードでもダメでした。

スクロールビューの中にコントロールを置いて、上下左右スクロールをさせる作りのアプリは
多そうだけど、非互換でいいのだろうか・・

Vistaからの最適化の中で切られたんだろなぁ。Windows7 SP1で直ればいいけど。

55 :デフォルトの名無しさん:2009/12/05(土) 11:30:08
>>28
カメだがBCB6でもTurboCでもXPなら落ちる
2000なら落ちない
Silverlightとの相性が悪いとおもっているが原因不明

56 :デフォルトの名無しさん:2009/12/07(月) 19:22:33
すいません、素人くさい質問ですが

TStringList *plist[100] ;

for ( int i = 0 ; i < 100 ; i ++ )
plist[i] = new TStringList ;

とやった場合は、delete [] を使うの?
それとも delete plist[i] のループを回すべき?

plist 配列はその時々に応じて確保される配列数が 50 だったり、20 だったりするのですが、どっちで delete すべきでしょうか?

57 :デフォルトの名無しさん:2009/12/07(月) 20:53:21
boost::shared_ptrで包んでstd::vectorにでも放り込んでおけ

もしくは普通にnewしてboost::ptr_vectorな

58 :デフォルトの名無しさん:2009/12/07(月) 21:31:41
>>56
delete plist[i] のループを回す

59 :デフォルトの名無しさん:2009/12/08(火) 03:12:34
ここはくだすれ...

>plist 配列はその時々に応じて確保される配列数が 50 だったり、20 だったりするのですが、どっちで delete すべきでしょうか?
ならば、plist 自体を動的に確保したら?

olist = new TStringList[50];

そうすれば

delete [] plist;

で、plist のメモリ解放を行う直前に、個々の TStringList のデストラクタも呼ばれる。

ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1317759688
ttp://www.sist.ac.jp/~suganuma/learn/2-bu/6-sho/6-4/6-4.htm


60 :デフォルトの名無しさん:2009/12/08(火) 11:24:25
C++ Builder 2009 Pro (Electronic Software Delivery)
$98.98 安いよー
http://www.journeyed.com/item/Embarcadero/C%2B%2B+Builder/100964379

61 :デフォルトの名無しさん:2009/12/08(火) 12:22:03
>>60
>Academic Proof Required

安くない

62 :デフォルトの名無しさん:2009/12/08(火) 18:06:56
BCB6から2010へプロジェクトを移行したのですが、
↓文字を扱っている箇所でエラー(const char*はconst wchar_t*に変換できない)が発生します。

Application->MessageBox("AAA");

試した事は
1,プロジェクトオプションの「_TCHARマップ先」をwchar_tに変更
2,#define USTRING_AS_WCHART としてみた。

他に何か必要なのでしょうか?
アドバイスお願いします。

63 :デフォルトの名無しさん:2009/12/08(火) 18:50:24
L"AAA"

64 :62:2009/12/08(火) 20:23:03
>>63

アドバイス有り難うございます。
L"AAA"で修正できましたが、個別に該当する箇所を修正する方法では無く、
プロジェクト全体にまとめて適用できる様な方法はないでしょうか?

65 :デフォルトの名無しさん:2009/12/09(水) 03:25:38
>プロジェクト全体にまとめて適用できる様な方法はないでしょうか?
ありません。

C / C++ 言語では文字型リテラルには型が付いています。
コード上で明示的に char か wchar_t (最近のだと wchar16_t と wchar32_t もあります) で有ることを指定する必要が有ります。
文字列リテラルがメモリの初期化の簡便記法でしかなかったころの歴史的名残です。

対するに Delphi の文字リテラルは評価するときに型が決まるので記法上は一種類しか有りません。


66 :デフォルトの名無しさん:2009/12/09(水) 05:04:03
文字列置換ツールで置換してしまえば、いいじゃん。



67 :デフォルトの名無しさん:2009/12/09(水) 06:42:05
無条件に全置換すると、char* を必要としているところでエラーとなるよ。
2010 になってもデフォルトでは UNICODE マクロが付かないので(過去との互換性の問題かな)
_T マクロは役に立たないし。

このコンパイルエラーが出るところが、BCB6 からの一番の変更点なので、
手を抜かずに全部確認した方が、後でバグが出て泣くより正しい道だと思います。



68 :62:2009/12/09(水) 10:10:02
アドバイス有り難うございます。
手を抜かずに個別に修正したいと思います。


69 :62:2009/12/10(木) 16:45:46
またまた教えてください。

外部DLLの関数を呼び出す時にchar*を渡すのですが、
2010ではエラー(const char*はconst wchar_t*に変換できない)が出ます。
2番目の引数にこれはcharだよと明示しないといけないと思うのですがどうすれば良いのでしょうか?

//BCB6で動作している記述
Tcl_CreateCommand( interp, "ABC", ( Tcl_CmdProc * )ABC_Proc, ( ClientData )NULL, ( void (*)())NULL );

//関数宣言
Tcl_Command Tcl_CreateCommand( Tcl_Interp interp,
char *cmdName,
Tcl_CmdProc proc,
ClientData clientData,
Tcl_CmdDeleteProc deleteProc);


70 :デフォルトの名無しさん:2009/12/10(木) 18:57:08
つうか、第3引数の型は、[ Tcl_CmdProc ] ? それとも [ Tcl_CmdProc* ] ?

71 :デフォルトの名無しさん:2009/12/10(木) 22:02:24
Visual c++でプログラムを書いて、コンパイルしました。
Unixでいうscriptで実行結果を出力したいのですが、どうしたらいいでしょうか?

72 :デフォルトの名無しさん:2009/12/10(木) 22:18:11
頑張ってください。


73 :デフォルトの名無しさん:2009/12/11(金) 05:42:43
C/C++ コンパイラとしての機能は 6 も 2010 も同じなので、
VCL が絡まなければ、違いは出てこないはずです。
少なくとも char と wchar_t に関しては変更は有りません。

提示されているコードではエラーは出るはずが無いので、何とも解説/回答できませぬ。

エディタ上で Tcl_CreateCommand と打った後コード支援で出てくる引数のプロトタイプを
確認することを勧めます。
もしそこで表示される第二引数 cmdName の型が char * ではなく wchar_t * だとしたら、
ヘッダファイルや関数定義を見直してください。

74 :デフォルトの名無しさん:2009/12/11(金) 06:07:05
>C/C++ コンパイラとしての機能は 6 も 2010 も同じ
これはウソでしょう


75 :デフォルトの名無しさん:2009/12/11(金) 07:44:09
くだすれだから勘弁してくれな > 74

バグ修正や C++0X 規格の一部先取り以外で
C/C++ コンパイラとしてどこら辺が変わったのかまとめてくれるとありがたいぞ > 74

76 :62:2009/12/11(金) 10:16:16
>>73

御指摘頂いたように宣言を見直したら第2引数ではなく第5引数に誤りがありました。
思い込みで作業していたようで大変助かりました。
有り難うございました。


77 :デフォルトの名無しさん:2009/12/11(金) 15:51:15
いえいえ。お礼はいりませんよ。

78 :デフォルトの名無しさん:2009/12/16(水) 14:10:13
TBitmapにOutTextで文字を書いた時に
この文字に指定ドット数で輪郭をつけたいのですがどうやったらいいですか?
元の文字はそのままで文字の外側につけたいので文字が指定ドット分大きくなるイメージなのですが。。

79 :デフォルトの名無しさん:2009/12/18(金) 21:54:01
ウインドウの大きさが可変なダイアログを作ろうとして
BorderStyle=bsSizeable; にしました。
これで、大きさは変更できるようになったのですが
ウインドウの右下の角に、サイズ変更可の印が出てくれません。
印を出すには、どうすれば良いでしょうか。


80 :デフォルトの名無しさん:2009/12/19(土) 08:44:20
>>79
TStatusBarを配置する

81 :デフォルトの名無しさん:2009/12/19(土) 12:31:51
TStatusBarを配置しました。
マークが出ましたが
とても間抜けなダイアログボックスになりました。


82 :デフォルトの名無しさん:2009/12/22(火) 04:00:09
できたのだからよいではないか

83 :デフォルトの名無しさん:2010/01/07(木) 20:51:36
getlineでファイルから
商品名,2009/11/2
にのようになってる行を読み取り、商品名、西暦、月、日をそれぞれ別の変数に格納したいです。
getlineでどのように書けばできるのでしょうか?

84 :デフォルトの名無しさん:2010/01/07(木) 22:21:41
俺なら','をstrchrで探して前半を切り出し
後半はsscanfでまとめて取得するかな。

85 :デフォルトの名無しさん:2010/01/08(金) 08:20:45
>>83
俺ならstd::tr1::regexで取得するかな。

86 :デフォルトの名無しさん:2010/01/08(金) 18:50:47
例外の発生したアドレスをExceptionクラスから受け取ることってできないんですか?
そのような情報を取得する方法ってないのでしょうか?

87 :デフォルトの名無しさん:2010/01/13(水) 14:43:58
C++builder2010って64ビットに対応してる?

88 :デフォルトの名無しさん:2010/01/13(水) 16:07:54
してない。
2011年夏の予定

89 :デフォルトの名無しさん:2010/01/13(水) 16:19:10
そんなあ><

90 :デフォルトの名無しさん:2010/01/13(水) 19:26:30
 ま た お ま え か 


91 :デフォルトの名無しさん:2010/01/19(火) 02:01:43
.resを作った後、そのリソースをexeにくっつけて
コンパイルするにはどう記述すればいいの?

92 :デフォルトの名無しさん:2010/01/19(火) 06:25:38
>ilink32.exe
と打ってコマンドラインのヘルプを確認しましょう。

bcc32.exe の引数に、.res ファイルを書く事もできます。できるはず。


93 :デフォルトの名無しさん:2010/01/19(火) 13:14:02
つーか、プロジェクトにres放りこんどけと

94 :デフォルトの名無しさん:2010/01/19(火) 14:26:28
知らないならレスしないで下さい><

95 :デフォルトの名無しさん:2010/01/19(火) 20:46:18
 ま た お ま え か 

96 :デフォルトの名無しさん:2010/01/23(土) 08:24:17
ActiveXに関する質問なんですが、
VCのMFCでtypelib追加ウィザードで作成されたクラスには
LPDISPATCH型をパラメータにしたコンストラクタがあって、
そこにVARIANT変数のpdispVal等を使用して作成していたのですが、

BCB6でタイプライブラリの取り込みを行った際、
そのLPDISPATCH型をパラメータにしたコンストラクタがなくなって
コンストラクタには「TComponent* owner」になってしまいました。

LPDISPATCHをそのクラスに設定するにはどのようにすればいいでしょうか?


97 :デフォルトの名無しさん:2010/01/23(土) 11:05:26
10年前の BCB6 だとサポートできない機能があると思いますが
たぶん何とかなるとおもいます。

取り込み元 ActiveX の Typelib の定義を見せてください

あと、BCB 側のプロジェクトディレクトリに、インポートのログファイルが落ちていませんかね?

98 :デフォルトの名無しさん:2010/01/23(土) 11:25:09
初歩的な質問で恐縮です。
BCB6のプログラム中でフォントを指定したいのですが,例えば
Image1->Canvas->Font->Name="CourierNew";
Image1->Canvas->TextOutA(10, 10, "ABC") ;
と書いても,デフォルトのフォントのままの文字が現れて,変ってくれま
せん。となたか解決方法をお教え下されば幸です。
因みにフォントのサイズやスタイルは,
Image1->Canvas->Font->Size=16;
Image1->Canvas->Font->Style=TFontStyles() << fsBold;
Image1->Canvas->Font->Style=TFontStyles() << fsItalic;
で変えられます。

99 :デフォルトの名無しさん:2010/01/23(土) 11:43:49
Image1->Canvas->Font->Charsetを変えてみる

100 :デフォルトの名無しさん:2010/01/23(土) 12:02:21
BDS2006を使っています。
TSimpleEvent *event=new TSimpleEvent();
とするとエラーになります。
ヘルプを見ると、コンストラクタは引数なしなので
これで良さそうなのですが、どうも原因がわかりません。
TSimpleEventはどう使えばいいのでしょうか。


101 :デフォルトの名無しさん:2010/01/23(土) 12:28:36
それでいいはずだから、
#include <SyncObjs.hpp>
か?必ずエラーの内容書こうぜ。

102 :98:2010/01/23(土) 13:12:43
>>99
有難うございました。
解決しました。


103 :100:2010/01/23(土) 13:25:51
[C++ エラー] Main.cpp(1917): E2285 'TSimpleEvent::TSimpleEvent()' に一致するものが見つからない
となります。
#include <Syncobjs.hpp> はしています。


104 :デフォルトの名無しさん:2010/01/23(土) 14:54:05
ヘルプが更新されてないのかね。今は↓らしい。Syncobjs.hppの中を見て確認したほうがいいかもしれない。

Syncobjs::TSimpleEvent * __fastcall TSimpleEvent(_SECURITY_ATTRIBUTES * EventAttributes,
 bool ManualReset, bool InitialState, System::UnicodeString Name, bool UseCOMWait);

105 :デフォルトの名無しさん:2010/01/23(土) 15:34:26
TSimpleEvent メソッドは,システムのイベントオブジェクトを作成し,TSimpleEvent オブジェクトをインスタンス化してそのイベントを表します。

__fastcall TSimpleEvent(void);

となってるね
Update全部当てたけどこのまま

106 :100:2010/01/23(土) 16:03:16
見てみました。
Syncobjs.hpp の定義に
__fastcall TSimpleEvent(void);が無いですね。
でも、
Syncobjs::TSimpleEvent * __fastcall TSimpleEvent(_SECURITY_ATTRIBUTES * EventAttributes,
 bool ManualReset, bool InitialState, System::UnicodeString Name, bool UseCOMWait);
これって、TEventと同じ引数じゃないですか。
TEventと同じならTSimpleEventの意味がないですよね。
というかTSimpleEventは名無しのハズですから
もしかしたら、バグでしょうか。
あと、最後の引数 bool UseCOMWait これが謎です。



107 :デフォルトの名無しさん:2010/01/23(土) 16:16:11
http://www.mombu.com/programming/c/t-bds2006-syncobjshpp-header-not-recognised-799965.html

にもあるけどhppの生成バグかね。

108 :デフォルトの名無しさん:2010/01/24(日) 12:31:07
ちなみにC++Builder2010のヘルプでは

C++ の情報

ファイル SyncObjs.hpp

TSimpleEvent = class(TEvent)

[edit] C++ の情報

ファイル SyncObjs.hpp

TEvent = class(THandleObject)

となってるからまた仕様が変更されているようですね
いつから変わったんだろう

109 :デフォルトの名無しさん:2010/01/24(日) 12:32:13
と思ったらちゃんと書いてあった

SyncObjs.TSimpleEvent のコンストラクタFrom RAD Studio VCL Reference
[edit] C++ の情報

Syncobjs::TSimpleEvent * __fastcall TSimpleEvent(_SECURITY_ATTRIBUTES * EventAttributes,
bool ManualReset, bool InitialState, System::UnicodeString Name,

bool UseCOMWait);
virtual void __fastcall ~TSimpleEvent(void);

これはさすがにバグが取れているようだ

110 :デフォルトの名無しさん:2010/01/27(水) 15:14:53
TRichEditで質問ですが。
SelAttributesで一部の色を変更した時に
何処が何色に変更されてるかを調べる方法を教えてください。

111 :デフォルトの名無しさん:2010/02/01(月) 16:38:07
早く教えて

112 :デフォルトの名無しさん:2010/02/03(水) 17:27:06
C++ Builder 2010でZlibを使いたいんですけど
Boostの中にすでに入っているようで
これを使うにはどうしたらいいでしょうか?

113 :デフォルトの名無しさん:2010/02/03(水) 17:58:58
CBuilder では使えません。
必要なファイルが足りないようですね

114 :デフォルトの名無しさん:2010/02/04(木) 15:54:09
112です
Boostのを使えない場合
普通にZlibの最新版をダウンロードして
ソースコードをプロジェクトに加えれば使えるんでしょうか?

115 :デフォルトの名無しさん:2010/02/04(木) 16:01:32
この頃のオープンソースでは CBuilder/BCC 用の設定をつけていない物も多いので
「がんばってください」と言うしかないです。

Delphi 側の実装である zlib ユニットを利用するというてもあると思います。
zlib.hpp をインクルードしてみてください。

116 :デフォルトの名無しさん:2010/02/04(木) 21:46:04
Win32DLL版のzlibと必要なヘッダを落とし
DLLからimplibするだけだろ

117 :デフォルトの名無しさん:2010/02/05(金) 09:11:19
112です
ZlibのDLL版のimplibでうまくいきました
ありがとうございました

118 :デフォルトの名無しさん:2010/02/08(月) 11:24:36
C++Builderのエディタ部分でタブとEnterキーが効かず。スペースが一文字削除になるんですが。
これってどうすれば治りますか?

119 :118:2010/02/08(月) 11:29:22
>>118すいません、とても恥ずかしい理由で治りました。


もう一つ質問させて頂きたいのですが
C++Builder(のソケット)でネットワークプログラミングをする場合、書籍はwinsock2のモノでも
大丈夫でしょうか?

120 :デフォルトの名無しさん:2010/02/08(月) 21:05:35
C++Builderのソケットって何を指していってる?まぁどの方法でもWinSock2で当たりを
つけておく必要があることに変わりはないけど。TServerSocket/TClientSocketは
SMP上のマルチスレッドではうまくいかない、という報告を見たことがあるので注意して。
Indyならマルチスレッド必須(基本ブロッキングなので)。自前で実装するならご自由に。
ICSはよくわからん。

121 :デフォルトの名無しさん:2010/02/08(月) 22:14:13
Qt は C++Builder でも使えた?

122 :デフォルトの名無しさん:2010/02/10(水) 10:52:00
特定部分をCUDAを使って計算させたいのですが、C++BuilderでCUDAを使うには
どのような設定が必要なのでしょうか?

123 :デフォルトの名無しさん:2010/02/10(水) 11:15:52
できません。

124 :デフォルトの名無しさん:2010/02/10(水) 12:33:59
できないって、DLLとかでもだめなのかい?

125 :デフォルトの名無しさん:2010/02/10(水) 16:49:05
マイナー環境を使ってる者の宿命です。

126 :デフォルトの名無しさん:2010/02/10(水) 16:54:11
うるさいだまれぶた

127 :デフォルトの名無しさん:2010/02/12(金) 15:37:10
時間がかかるループ中にプログレスバーを別スレッドで進めたいと思い
ヘルプどおりにTThreadの派生クラスを作りました
Executeの中でForm1->ProgressBar1->StepIt()を呼ぶだけのシンプルな
もので、これ自体が正常に動作することは確認しました

しかし、肝心の時間がかかるループになるとこのスレッドに制御がこないため
プログレスバーが進みません。ループに入る前にnewで作った時に1回よばれ
ループが終わった時にもう1回よばれるだけです。コンストラクタの引数はfalse
にしてあります。Priorityプロパティも変えてみましたけど変わりません。

どうやったらループの中で並行してスレッドが動くようにできるでしょうか?

128 :デフォルトの名無しさん:2010/02/12(金) 15:52:49
つーかそれスレッドから呼んだら落ちるんじゃね?
もしくは、落ちなくても正常にアレされなさそう。

void Execute( void )
{
 while( !Terminated ){
  Synchronize( Unko );
  Sleep(1);
 ]
}
void Unko( void )
{
 Form1->ProgressBar1->StepIt();
}

これでどうよ?

129 :デフォルトの名無しさん:2010/02/12(金) 16:09:46
>>128
それもやってみましたけど変わりませんでした

時間がかるループ以外のところでやると正常にプログレスバーは進みます
ループに入るとその間だけ呼ばれなくなります

130 :デフォルトの名無しさん:2010/02/12(金) 16:11:35
んじゃむしろそっちのループにSleepいれたらどう?

131 :デフォルトの名無しさん:2010/02/12(金) 16:26:19
それなら直接 StepIt を呼んだ方が効率がいいような気がします

ループの方は細かいループがたくさんよばれるのでそれらに1つ1つStepIt入れるの
がいやでなんとか別スレッドでできないものかと悩んでいます

132 :デフォルトの名無しさん:2010/02/12(金) 16:43:13
それCPU負荷100%になってるだろ

133 :デフォルトの名無しさん:2010/02/12(金) 16:50:52
リソースモニターでみると「応答なし」になってます
これが原因でしょうか?

134 :デフォルトの名無しさん:2010/02/12(金) 16:56:18
スレッドにSleepを入れるのは当然として
他のループにもいれないとまずいだろ

135 :デフォルトの名無しさん:2010/02/12(金) 17:04:25
ようやく分かってきました
SleepかStepItかProcessMessages
あたりをループの中で呼ぶしかないんですね

ループの部分のソースコードはMacと共有してるんで
あまりやりたくなかったんですけど
#ifdef使って入れてみます

アドバイスありがとうございました

136 :デフォルトの名無しさん:2010/02/14(日) 04:21:42
失礼します。
抽象的な質問で申し訳無いのですが、BCB6と2009や2010の互換性ってどのくらいあるのでしょうか?
BCB6で作成したソフトをいじろうと思っているのですが、BCB6の購入は難しいようなので、2010を購入するか悩んでいます。
Unicodeになるなど、100%はありえないのはわかっていますが、コンポーネントの動作等はある程度使える物なのでしょうか?
よろしくお願いします。

137 :デフォルトの名無しさん:2010/02/14(日) 04:33:07
ある程度使える
共通の部分だけ使えば互換性は確保出来る
きっとそのうち萎えると予想

138 :デフォルトの名無しさん:2010/02/15(月) 08:31:16
BCB2010でウェブブラウザ作りたいんですが
TWebBrowserとTCppWebBrowserの違いが分かりません
後者の方はヘルプにも何もでてないし
エンバカデロのサイトを検索しても何もヒットしません
TCppWebBrowserはもう使うなということでしょうか?

139 :デフォルトの名無しさん:2010/02/15(月) 11:32:57
先週末からAboutDelphi の過去ログ検索のリンクが死んでるんですけど
消息とか代替とかご存じの方おられませんか?

140 :デフォルトの名無しさん:2010/02/15(月) 22:16:09
Delphi-MLか公式フォーラムか、武内さんが見てそうなところで聞くのが吉かと。
単にサーバが落ちてて気がついていないだけでは?

141 :デフォルトの名無しさん:2010/02/16(火) 14:45:47
2010って64ビットに対応してるか?

142 :デフォルトの名無しさん:2010/02/16(火) 14:55:10
してない
64bit正式対応は2011からだぞなもし

143 :デフォルトの名無しさん:2010/02/16(火) 15:31:58
まじですか
2011ていつでるんだい?

144 :デフォルトの名無しさん:2010/02/16(火) 15:43:31
今年6〜7月頃じゃねーの?

145 :デフォルトの名無しさん:2010/02/16(火) 15:57:28
あ、今年ですか
んじゃそれまで待ってみようかな
ありがとうブタ君

146 :デフォルトの名無しさん:2010/02/16(火) 16:02:45
2011はLinux対応 その後改善を2012でやって  64はその後の2013の筈

147 :デフォルトの名無しさん:2010/02/16(火) 16:04:05
不完全なくりっくす復活されてもなぁ。

148 :デフォルトの名無しさん:2010/02/16(火) 16:09:20
TRichEditで文字属性ごと他のTRichEditにコピーする方法を教えてください

149 :デフォルトの名無しさん:2010/02/16(火) 17:08:58
>>136
2007はまだ買えるよ。BCB6はVistaで起動しなかったので慌てて2007にしてコンパイルし直したけど,
比較的苦労せずに済んだ。ただ,いつものことながら2007はパッチ当てないと使い物にならない。
パッチ当てても,時々不可解なことが起こる。何も悪いことしてないのにアプリをExitするとアクセス違反
で落ちたり,アプリケーションアイコンが消えたり...

何とか逃げ道を探して使ってるけどね。

150 :136:2010/02/17(水) 00:59:21
>>137
>>149
ありがとうございます。
普通に想定できる範囲での修正でなんとか出来そうですね。
どうせコンパイルし直すなら、最新にしようかなと。

151 :デフォルトの名無しさん:2010/02/17(水) 08:43:41
>>149
Unicodeコンポでつまずいたり、吸収するライブラリとか作ったりされましたか?
これから同じ状況を迎えるのでw

152 :デフォルトの名無しさん:2010/02/18(木) 14:42:20
>>149
BCB6はVistaで起動できるようだけど?
ttp://yoshidastyle.net/Blogs/program/2009/02/16/builder6binbcbdro

153 :デフォルトの名無しさん:2010/02/18(木) 15:30:43
TRichEditにAddするとキャレットが消えるんだけど
これを表示される方法を教えてください

154 :デフォルトの名無しさん:2010/02/18(木) 15:33:52
ちなみにShowCaret( RichEdit->Handle );じゃ表示されませんですた

155 :デフォルトの名無しさん:2010/02/19(金) 15:57:45
TListBoxで選択が変わったことを検出したいのですが、

TForm1::TForm1(TComponent* Owner)
{
ListBox1->WindowProc = MyWindowProc;
}

void __fastcall TForm1::MyWindowProc(TMessage &Message)
{
if (Message.Msg == WM_COMMAND) { // 0
if (Message.WParamHi == LBN_SELCHANGE) { // 1
return; // 2
}
}
}

としてみたのですが0の部分までは描画要求などで頻繁によばれますが
セルをクリックして選択を変えたときにはMyWindowProc自体が呼ばれません
(1ではなくて0の部分もよばれない)
なにがいけないんでしょうか?

156 :155:2010/02/19(金) 19:48:48
理由がわかりました
TListBoxはWM_COMMANDを送らないんですね
どうしてもとりたければ派生クラス自分で作れってことですね

157 :デフォルトの名無しさん:2010/02/19(金) 21:05:38
>>155
矢印キーによる選択でも、OnClickイベントが発生するけど
解決できない処理なのか

158 :デフォルトの名無しさん:2010/02/19(金) 21:15:11
すでに選択されていたものが再びクリックされたのか
選択されていなかったものが新たにクリックされたのか
で処理を切り分けたいんです

159 :デフォルトの名無しさん:2010/02/19(金) 22:36:17
>>158
フラグ用の変数を用意して、現在選択している項目と同じ項目を再度クリックされたかを判定する事になると思う。
ListBox->Tagプロパティを使ってなければ、これを使うとお手軽。

別の意味で、1度選択された項目は2度と処理したくない場合は
ListBox->Itemsを使うのはどうか?
Itemsの正体はTStringListである
TStringListは文字列とセットでポインターを1つ保持できる
これがListBox->Items->Objects[index] である
このポインターを収めるところをフラグに使う
NULLはゼロ。NULL以外はアドレスで、アドレスは数値。
だから数値を1個保存すると、NULLと区別できる

void __fastcall TForm1::ListBox1Click(TObject *Sender)
{
TListBox* ListBox = dynamic_cast<TListBox*>(Sender);
int index; AnsiString s;
if (ListBox == NULL) { return; }
index = ListBox->ItemIndex;
if (index < 0) { return; }
if (ListBox->Items->Objects[index] == NULL) {
s.printf("未処理[%d]", index);
// 処理済フラグON
ListBox->Items->Objects[index] =(TObject*) 1;
} else {
s.printf("処理炭[%d]", index);
}
Memo1->Lines->Add(s);
}


160 :デフォルトの名無しさん:2010/02/20(土) 14:33:54
2007を使っています。
TRichEditのSelStartは全角の1バイト目を指定したら
SelLengthは自動的に2となって2バイト目を指定したらSelStartは自動で次文字の1バイト目にいってました
それが突然2ならなくなってしまいました。
どこかでプロジェクトのランタイムテーマが無効でこうなるって書いてた気がしたのですが・・・
確かにランタイムテーマのチェックを外してからおかしくなったとおもうのですが
再度これにチェックを入れてコンパイルしても以前の動作にもどってくれません・・
どうしたらもどっれくれますか?

161 :デフォルトの名無しさん:2010/02/20(土) 15:09:10
テーマが有効だと、そうなるのですが。
無効にし、かつプロジェクトのあるディレクトリに自動生成されている .res ファイルを
削除してみてください

162 :デフォルトの名無しさん:2010/02/20(土) 15:43:05
XPのビジュアルスタイルにするためのマニフェストファイルをリソースに埋込み
brc32でコンパイルしても、コンパイルは正常にできるんですが、スタイルが変わりません
どうしたらいいの?

163 :デフォルトの名無しさん:2010/02/20(土) 15:45:45
>>161
できました!!!
でも・・・
res削除するとアイコンが消えて読み込みもできなくなったんですが
これアプリのアイコンはどうやってしていしたらいいでしょうか?

それともう1つ。。。
TRichEditでSelStart=0にして、SelLength=RichEdit->Lines->Text.Length();として
RichEdit->SetAttributes->Color = clRed;として
全文字を赤(色はデフォ以外ならなんでもいいみたい)にしたときに
行間がつまって表示されてしまいます。
更にこの時にSelStartとSelLength位置の色が正常に取得できなくなってしまうのですが
何が原因なのでしょうか?
これは先ほどのテーマがONでもOFFでも現象は同じでした

164 :163:2010/02/22(月) 16:11:12
ちなみに、RichEditのフォントが変わってるような感じがします
フォントはMSゴシックを指定しているのですが
正常な時もおかしいい時もフォント名はMSゴシックだったのですが
おかしい時は文字間が詰まっています(MSPゴシックみたいな感じに)
これTRichEditのバグですか?


165 :デフォルトの名無しさん:2010/02/24(水) 16:08:46
Variant::CreateObjectで作成したOLEオブジェクトにある
プロパティの有無を何か検出する方法は無いでしょうか?

本来NULLを返すはずのプロパティがあるのですがどうも
プロパティ名自体が無いようで例外が発生しています
例外処理でひっかけてはいるのですがデバックしている時は
毎度そこで止まるので困っています

166 :デフォルトの名無しさん:2010/02/24(水) 17:16:59
デバッグが不便だというなら@Delphi7

例外が出る前の行にブレークポイントを仕掛けて、ブレークポイントの設定→拡張でブレークのチェックをクリア
+この後の例外を無視するにチェック

例外が出る後の行(ry
+この後の例外を処理するにチェック

167 :165:2010/02/25(木) 08:59:24
ブレークポイントで例外を無視ってのに気が付きませんでした
これでずいぶん楽になりました、ありがとうございます

168 :デフォルトの名無しさん:2010/02/25(木) 09:22:08
あ、そんな風に設定するんだ。
設定方法知らなかったので今まで一度も使わなかったorz
IDEとかプロジェクトの設定ダイアログで無視する例外を選んでおくのかと思ってた。

169 :デフォルトの名無しさん:2010/02/25(木) 10:23:20
>IDEとかプロジェクトの設定ダイアログで無視する例外を選んでおくのかと思ってた。
もし適切にフィルタできるなら、ふつうはそちらを使うべきでしょう。

166 のテクニックは、特定の時だけ特定の例外を無視したいときに使います


170 :168:2010/02/25(木) 10:50:10
いや、”特定の例外”ってソースいじる必用があるかもしれないし、例外クラス作ったりしなきゃならないので、
”特定の時だけ”のんが超便利。

171 :デフォルトの名無しさん:2010/02/25(木) 13:30:07
なんだ。しつこいな

ブレークポイントでの操作は IDE 終了したら消えちゃうから、可能なら無視例外を登録するほうが良いでしょう。

もちろんキャッチしたい例外と区別できないと意味がないので、ソースを書き換えなければいけない場合も
あるかと思います。
そこは手間とメリットをはかることになります。
ソースを変更できない(例外クラスを変更できない)場合も多々あるのでそのばあいは
ブレークポイントによる対応と成るでしょうね


172 :168:2010/02/25(木) 13:55:39
いや別に読み流してもらえばおk、だったんだけど。。。

173 :デフォルトの名無しさん:2010/02/25(木) 14:29:22
TStringGridで文字列の一部を選択してるとき
TMemoのSelStartとSelLengthみたいにわかる方法を教えてください

174 :デフォルトの名無しさん:2010/02/25(木) 14:52:13
ヒント: TInplaceEdit

175 :デフォルトの名無しさん:2010/02/25(木) 14:59:30
StringGridからどやってTInplaceEditにアクセスすんの?
さっさと教えやがってください

176 :デフォルトの名無しさん:2010/02/25(木) 15:14:22
できた。
TInplaceEdit *ie = dynamic_cast<TInplaceEdit *>(StringGrid->Components[0]);
確かにこれでOKだったんだけどー
これComponents[0]固定になってるけど大丈夫なの??


177 :デフォルトの名無しさん:2010/02/25(木) 15:56:52
不安ならforで回せば?

178 :デフォルトの名無しさん:2010/02/25(木) 17:08:05
>>177
それやってみたんですが、どうやらStringGridのあれは1つしかなかったので
[0]固定でもOKじゃね?みたいな結論になりますた。
将来的にはどうなるかわからないですがばかとりあえず今はこれで大丈夫なので^^

179 :デフォルトの名無しさん:2010/02/25(木) 19:39:45
>>178
dynamic_cast使っているんだから戻り値がNULLだったらインデックス増やすようにすれば良いじゃん

180 :デフォルトの名無しさん:2010/02/26(金) 10:16:56
>>179
それちがうだろ
forで回すってことはStringGridのアレカウントが1以上あるってことなんだから
NULLが返らずにTInplaceEdit以外のポインタが来るだろJK
だからインデックスをただ増やすんじゃなくてクラスをチェックせにゃいかん
そうなったら結局forでまわしてアレするのと同じ

181 :デフォルトの名無しさん:2010/02/26(金) 19:27:23
>>180
TInplaceEditでdynamic_castしているのにTInplaceEdit *ieにTInplaceEdit以外のポインタが入ることがあるのか?

182 :デフォルトの名無しさん:2010/02/27(土) 11:34:27
TEditとその他のコントロールがあるフォームでTEdit以外にフォーカスがある時にキーボードが押されたら
自動的にTEditにフォーカスを移動して文字を入力したいと思い、以下のようにしました。これで正常に動く
のですが、TWebBrowserにフォーカスがあってIMEがオンの時のみ、例えば「ka」を入力すると「kあ」になって
しまいます。他のコントロールの場合はちゃんと変換中の下線付きで「か」になるので悩んでいます。TWebBrowser
に対してフォーカスを離させるような何かの処理が必要なのでしょうか?一応WM_KILLFOCUSを送ってみましたが
変化はありませんでした。

void __fastcall Form1::ApplicationEventsMessage(tagMSG &Msg, bool &Handled)
{
if (Msg.message == WM_KEYDOWN) {
Handled = false;

if (!Edit1->Focused()) {
Edit1->SetFocus();
Msg.hwnd = Edit1->Handle;
}
}
}

183 :デフォルトの名無しさん:2010/03/01(月) 09:08:30
182です

どうやらDHTMLのkeydownイベントをフックすればよさそうな気がするんですが
TWebBrowser* からどうやってそのイベントをフックすればいいのか分かりません
documentプロパティでDHTMLオブジェクトにはアクセスできそうですが
そっから先はどうやったらいいんでしょうか?

184 :デフォルトの名無しさん:2010/03/01(月) 19:26:01
これからC++はじめようと思っているんですけど
VC++とどちらが人口が多いのでしょうか?
あと、初心者がとっつきやすいのはどちらでしょうか?
仕事じゃなくて趣味でやる程度です

185 :デフォルトの名無しさん:2010/03/02(火) 20:51:53
>VC++とどちらが人口が多いのでしょうか?
VC++

>初心者がとっつきやすいのはどちらでしょうか?
C++Builder

186 :デフォルトの名無しさん:2010/03/02(火) 20:55:28
C++BuilderはMSみたいに無料配布してないんですね。がっかり。

187 :デフォルトの名無しさん:2010/03/02(火) 22:03:20
趣味で無料がいいならC#にしとけ。

188 :デフォルトの名無しさん:2010/03/03(水) 00:37:27
>>183
ttp://msdn.microsoft.com/en-us/library/bb508508%28VS.85%29.aspx

189 :デフォルトの名無しさん:2010/03/03(水) 03:11:45
VC++の無料はC++/CLIを無理矢理使わされるぞ

190 :デフォルトの名無しさん:2010/03/03(水) 09:24:42
趣味で金出したくないなら
Qt Creator

191 :デフォルトの名無しさん:2010/03/03(水) 10:35:04
test

192 :デフォルトの名無しさん:2010/03/05(金) 17:27:20
TJPEGImageで1920x1080の画像をSaveToFileすると10秒くらいかかってしまうのですが・・・
これって仕方がないのでしょうか?
それと、SaveToFileをしてる間はOSごと固まってしまいます
せめて固まるのはアプリだけにしたいのですがどうしたらいいでしょうか?

193 :デフォルトの名無しさん:2010/03/05(金) 18:20:23
圧縮前の bitmap イメージでも
1920x1080 * 4byte = 8Mbyte 程度か。

少し古い/遅い CPU を使っているとか?

OS/Driver の組み合わせだと、ディスク書き込み中に OS が反応なくなる場合があります。
もし搭載メモリに余裕があるのなら(といってもいまどき 1Gbyte 位は搭載しているだろうけど)
いったん 別のストリームへ SaveToStream で保存し、それから保存してみたら?

それでも OS が固まるなら、少し別の原因か


194 :デフォルトの名無しさん:2010/03/06(土) 04:09:07
BCB6を使用しています。
SSDに載せ替えたので、インストールしなおしたところ、コンパイル時に必ず以下のメッセージが出て止まるようになってしまいました。

Windows - ディスクがありません
Exception Processing Message c0000013 Parameters 764cbf7c 4 764cbf7c 764cbf7c

ググっても常駐ソフトを見直せとかの情報しか無く、困っています。
使用許諾コードは取得してあります。
よろしくお願いします。

195 :デフォルトの名無しさん:2010/03/06(土) 10:51:09
BCB2010でタイプライブラリの使い方を勉強しています
.ridlファイルで基本的な情報を設定すると
xxx_TLB.cpp と xxx_TLB.hができてひな形が作られるらしい
ということはわかったのですが
そっから先にどうすれば実際のインスタンスが作れるのかが
わかりません
どなたか基本的な使い方の手順を教えてもらえないでしょうか?

196 :デフォルトの名無しさん:2010/03/06(土) 12:07:35
>194
c0000013で検索した結果はちゃんと見て追試してそれでも何も問題となるようなものはない、
という状況なの?

>195
コンポーネントとしてインストールしてそれをフォームに貼ればいいんじゃない?

197 :デフォルトの名無しさん:2010/03/06(土) 16:55:48
>>193
なんとなく原因がわかりました
BitBlt等にBitmap->Canvas->Handleを渡してビットマップを作るとSaveToFile時に10秒くらいかかるようになってた
これSaveToFileで以前に保存したファイルをLoadFromFileしてからSaveToFileをすると
200msでくらいで終わってたんですが
なんでAPIでアレするとこんなに遅くなりますかね?
しかもOSごとって・・・

198 :194:2010/03/06(土) 19:19:50
>>196
物凄く不安定で、どうしたらいいのやら・・・。
セーフモードで立ち上げた後は動いたりするのですが、しばらくするとまた同じエラーが出たりします。

199 :デフォルトの名無しさん:2010/03/06(土) 19:34:02
そもそも環境的な説明はなしか

200 :194:2010/03/06(土) 20:48:25
環境はXPsp3。
常駐はAntiVirとSpybotとp2proxyくらいです。

201 :デフォルトの名無しさん:2010/03/06(土) 22:15:51
たぶん>>197に対するものだと思うけどな


202 :デフォルトの名無しさん:2010/03/07(日) 10:29:34
>>194
IncludeかLibのパスに存在しない場所が指定されてるんじゃない?
以前作ったプロジェクトファイルには存在した場所がSSD環境では消えているとか


203 :デフォルトの名無しさん:2010/03/07(日) 10:32:37
そのパスがリムーバブルメディアだったら出るみたいだね
再現できた
元FDやCDのドライブ名であたってみてくれ

204 :194:2010/03/07(日) 17:27:07
>>202-203
空のプロジェクトでは発生しなかったので、それっぽいです。
ありがとうございました。

205 :デフォルトの名無しさん:2010/03/08(月) 13:33:54
BCBとVC++のそれぞれの最新版で比べた場合
同じようなアプリを作った場合
実行速度は変わらないでしょうか?

206 :デフォルトの名無しさん:2010/03/08(月) 15:56:01
ずっとBCB使ってきてたんだけど
Visual Studio 2010のベータを試してみたら
ポトペタとか簡単にできてBCBとあまり変わらない

BCBの優位ってもうないんでしょうか?

207 :999:2010/03/08(月) 16:46:57
それはC丼だろ。
Visual Studio のC++って相変わらずの原始的レベルだろ。
C丼でいいのならVisual Studio使えばイイじゃん。


208 :デフォルトの名無しさん:2010/03/08(月) 17:04:50
>>207
.NETならば、C++でも、出来の悪いBCBっていう感じだよ

209 :999:2010/03/08(月) 18:57:13
VC++のDialogEditorのことを言っているのかね?
DialogEditorならC++Builderとは根本的に異なる訳だが。
ちがうのかな?


210 :デフォルトの名無しさん:2010/03/08(月) 21:15:53
C++/CLIなんて使い物にならんしな

211 :デフォルトの名無しさん:2010/03/08(月) 22:22:48
>>210
どこがダメなの?
重いの?

212 :デフォルトの名無しさん:2010/03/09(火) 08:52:43
C++/CLIって、元はmanaged C++であってポインタとか局所的にしか許さんでしょ。
だから、C++の標準STLでさえ、STL.CLIっていう特殊なライブラリが必要なんじゃね?
ましてやboostが動作するわけないし、C/C++系のライブラリ混ぜよう、とすると頓挫でしょ。
スタンスはC丼じゃんw

213 :デフォルトの名無しさん:2010/03/09(火) 09:12:37
>>212
Managed型を使わなければSTLも普通に使えるし、
ネイティブにコンパイルしたobjや静的ライブラリもリンクできるぞっと。
ただWinFormまわりは完全に.NETの世界なので、
GUIを手軽に扱うことを目的にC++/CLIを使いたいなら
GUI記述専用の言語が別にあると思ったほうが早い。

214 :デフォルトの名無しさん:2010/03/09(火) 10:23:03
結論:
VC++は使えねーヤシwwwww

215 :デフォルトの名無しさん:2010/03/09(火) 11:20:52
ということはネイティブC++でポトペタしたければ
やっぱりBCBが一番って信じていいんですね

216 :デフォルトの名無しさん:2010/03/09(火) 14:58:16
Windows7にC++Builder5をインスコしたら起動してくれないんだけど。。。
エラー内容は
'Debugger'の設定に失敗しました。
このエラーダイアログが出てOKボタンを押しても起動が途中で止まっていて
強制終了するしかないのですが、
これどうしたらちゃんと設定できますか?

217 :デフォルトの名無しさん:2010/03/09(火) 19:10:24
互換モードを設定したら?

218 :デフォルトの名無しさん:2010/03/09(火) 21:50:50
7は64?

219 :デフォルトの名無しさん:2010/03/10(水) 13:39:26
BCB(2010)で文字列リテラルのコードページをUTF8にする方法はないでしょうか?
例えば char* p = "あ"; とするとpにはシフトJISのコードが入り
wchar_t* wp = L"あ";とするとwpにはUCS2のユニコードが入ります
後者の方は当然だと思いますが、前者の方はソースコードをUTF8で保存しても
強制的にシフトJISにされてしまいます。他のコンパイラで使っていたUTF8の
コードをコンパイルしたら出力が文字化してしまって困っています。

220 :219:2010/03/10(水) 14:40:51
プロジェクトオプションの
C++コンパイラ→拡張でコードページが指定できるのですね
しかしこれだと全部のソースコードの一括指定みたいです
ソースコードごとに指定するのは無理なんでしょうか?

221 : [―{}@{}@{}-] デフォルトの名無しさん:2010/03/10(水) 15:32:47
ファイルごとにローカルオプションが指定できるよ。
またはソースごとに
#pragma option -CP65001
を指定かな。

222 : [―{}@{}@{}-] デフォルトの名無しさん:2010/03/10(水) 15:34:22
ソースコードのエンコーディングと
char 型のエンコーディングは独立することが C/C++ 言語規格で規定されているので、
まぁしょうがないね。


223 :219:2010/03/10(水) 17:10:40
>>221
ありがとうございました
#pragma option -CP65001
でうまくいきました

224 :デフォルトの名無しさん:2010/03/10(水) 18:30:45
>>216
Windows7 professional 32bitにBCB6だけど、Windows2000互換モードで動いてる
参考までに。

225 :デフォルトの名無しさん:2010/03/10(水) 18:55:40
2010のTo-Doリスト初めて使ったんだけど、
項目を追加しても、リストに反映されなくて、「完了した項目を表示」のチェックをON/OFFすると
表示が更新される

To-Doリストちゃんと使えてる?

226 :デフォルトの名無しさん:2010/03/14(日) 15:55:51
TDBGridでスクロールするとデフォルトではカレントレコードも同時にスクロールしますが
これをカレントレコードはそのままにしておく方法はあるでしょうか?

227 :デフォルトの名無しさん:2010/03/15(月) 09:44:28
ppp

228 :デフォルトの名無しさん:2010/03/15(月) 17:22:05
当時BCB6への移行を見送ってしまい2005移行への移行に躊躇したために
未だにBCB5を使っていたのですがunicodeへの対応が必須になり移行を考えています

質問なのですが現時点で購入するとすればC++Builder2010がベストなのでしょうか?
またProfessional版の場合にはVCLのソースが付属するのでしょうか?

229 :デフォルトの名無しさん:2010/03/15(月) 21:12:22
>228
C++Builderなら2010だな。当然VCLのソースもついてる。ただしdbExpress/DataSnapは
Pro版ではネットワーク上にデータを流してはいけないというEULA上の制約があるので気をつけて。

230 :デフォルトの名無しさん:2010/03/16(火) 09:29:21
VCL/ANSIとVCL/UNICODEを吸収してくれる良いクラスは無いでつか?
BCB6でも2010でも両方ともコンパイルできるようにしておきたい。

231 :228:2010/03/16(火) 11:58:38
>>229
情報ありがとう御座います、購入の方を進めてみます

長らく移行出来なかった理由の一つにLightReport2で複雑な帳票を作っていることもあるのですが
LightReport2をC++Builder2009又は2010で使用されている方はおられるでしょうか?
他言語文字がうまく印刷出来るのかどうかを知りたいです

232 :デフォルトの名無しさん:2010/03/16(火) 22:19:53
>230
それがライブラリなら頑張って#ifdefで共通ソース化する。そうではなくアプリケーションなら
ソースの共通化はすっぱりあきらめる。人間諦めが肝心。


233 :デフォルトの名無しさん:2010/03/20(土) 11:02:58
>>230
MECSUtils
http://homepage1.nifty.com/ht_deko/tech021.html
> Delphi 2007 / 2009 / 2010 で同名の関数を使って同等の処理可能にするのが MECSUtils です。

234 :デフォルトの名無しさん:2010/03/20(土) 11:28:12
コンポーネントや RTL の文字列エンコーディングを変える訳では無いので
ソースコードの共通化にはあまり向かない。
けれど、かなり特殊なことをしない限りは、シングルソースで対応できるのでまずは移植してみたら?

と書いていて、ここは CBuilder であることに気づいたよ。

tchar の問題とかあるからなぁ。
まず、手持ちのコードを _TCHAR 使うように書き換えて ANSI のままでデバッグ。
wchar_t や tcsXXXX 関数は CBuilder だと大昔からある。

C++ で書いたコンポーネントなの?


235 :デフォルトの名無しさん:2010/03/24(水) 10:57:05
PopupMenuのMenuItemのClickイベントでMenuItemからPopupMenuを識別する方法を教えてください

236 :デフォルトの名無しさん:2010/03/24(水) 11:00:49
GetParentMenuで取れた
おまえらほんと役にたたねーゴミだなw

237 :デフォルトの名無しさん:2010/03/29(月) 15:29:14
TLabelのCaptionは\nで改行できますが
TPanelのCaptionはどうやったら改行できますか?

238 :デフォルトの名無しさん:2010/03/29(月) 20:50:52
複数行は自前で描画する必要がある。DrawTextなので本来#13#10で改行して
描画されているのだが、高さ方向が常に1行分しか確保されていないので。

239 :デフォルトの名無しさん:2010/04/01(木) 16:21:39
教えてください。
AnsiString FileName = ExtractFilePath( Application->ExeName ) + "hoge.mdb";
Variant cat = Variant::CreateObject("ADOX.Catalog");
cat.Exec(Function("Create")<<"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FileName + ";");

上記のコードはC++Builder5なら問題なく動作して正常にmdbファイルが作成されるのですが
C++Builder2007で行うとcat.Execで例外が発生してしまいます。。。
両方同じPCでコンパイルしてるのでOSの問題ではないとおもいます。
2007ではどうしたら正常に動作させることができますか?


240 :デフォルトの名無しさん:2010/04/02(金) 11:59:12
TStringGridで入力可にしてる時にセルを選択したらそのセルの文字列が
全部選択状態になっているのですが、これを選択状態にしない方法を教えてください

241 :デフォルトの名無しさん:2010/04/02(金) 16:55:56
タイムゾーンの取得する方法を教えてください

242 :デフォルトの名無しさん:2010/04/03(土) 13:36:09
なんつーか、回答する気も起こらないつまらん質問ってあるよね。

243 :デフォルトの名無しさん:2010/04/03(土) 13:48:36
回答する気にならないのなら、黙っていなさい。無理にコメントを書くことは無い。

244 :デフォルトの名無しさん:2010/04/03(土) 14:02:03
>>243
かっこいい

245 :243:2010/04/03(土) 16:25:18
俺は神様だ
俺の言う事には必ず従え

246 :デフォルトの名無しさん:2010/04/08(木) 18:16:46
TDateTimePickerで▼を押されたときに出てくるカレンダーのマウスカーソルを変える方法を教えてください。

DateTimePicker->Cursor =crCross;
だとコンボボックスしか変更されなかったので・・

247 :デフォルトの名無しさん:2010/04/14(水) 20:36:41
p

248 :デフォルトの名無しさん:2010/04/14(水) 20:38:17
C++Builder2007でTRichEditで特殊記号("§"等 )を追加すると
行挿入エラーが出るバグがあるのですが
これを回避する方法を教えてください

249 :デフォルトの名無しさん:2010/04/19(月) 09:45:37
p

250 :デフォルトの名無しさん:2010/04/19(月) 10:37:43
TUdpSocketで送信はできるのですが受信ができません。
どうしたら受信できますか??

251 :デフォルトの名無しさん:2010/04/19(月) 12:18:12
http://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200707/200707_07070028.html

252 :250:2010/04/19(月) 15:45:25
いやそれは見たんですけど、イベントは必要ありません。
ただ受信さえできばいいんですが、
BytesReceivedやselectしても全然きてないんです

253 :デフォルトの名無しさん:2010/04/19(月) 18:26:52
ひとつは、送信と受信でポートが一致しているか確認する
もうひとつは、ファイアウォールなどでブロックされてないか調べる

254 :250:2010/04/19(月) 18:27:34
他よろしく

255 :デフォルトの名無しさん:2010/04/19(月) 19:10:49
NICのジャンボフレームの設定が双方で食い違ってないか確認する

256 :デフォルトの名無しさん:2010/04/19(月) 19:13:07
ていうか、「送信が出来た」のはどうやって確認したんだ?

257 :250:2010/04/19(月) 19:38:51
相手PCにターミナルソフトで受けたんだ
んで、逆にそのターミナルソフトから送信してやっても受信できない
ちなみにC++Builder2007
ごちゃごちゃほざいてないで、お前等もTUdpSocketで受信を試してみろ

258 :デフォルトの名無しさん:2010/04/19(月) 20:03:47
おもしろい奴だな

259 :デフォルトの名無しさん:2010/04/19(月) 20:35:04
Wiresharkで確認すれ。

260 :デフォルトの名無しさん:2010/04/19(月) 20:44:07
C++Builder5のNMUDPでなら受信できたよ

261 :250:2010/04/20(火) 11:36:58
>>260
まじですか
とりあえず2007はバグって受信すらできないので
俺もBuilder5のNMUDPでやってみたんですが、やっぱ送信できても受信ができなかった。
チラっとコード教えて。
ちなみにWindowsのFWはOFFってるしPFWも入れてない。

262 :260:2010/04/20(火) 11:58:58
こんな感じで

void __fastcall TADataModule::NMUDP1DataReceived(TComponent *Sender, int NumberBytes, AnsiString FromIP, int Port)
{
  scoped_array<char> buf(new char[NumberBytes+1]);
  int s = 0;
  TNMUDP& aNMUDP = dynamic_cast<TNMUDP&>(*Sender);
  aNMUDP.ReadBuffer(buf.get(), NumberBytes+1, s);
  buf[s] = 0;
  // ...
}

263 :250:2010/04/20(火) 12:52:21
>>262
あ、どうもありがとう。
むしろ、それ以前にDataReceivedイベントが入らないので
その前のポート設定とかを教えてくださ。
これってbindしなくても勝手に受信できる状態になってるんですかね?

264 :260:2010/04/20(火) 13:11:15
TADataModuleのコンストラクタで LocalPort にポート番号設定
ReportLevel は 1 にしてる
それだけだよ

265 :250:2010/04/20(火) 13:27:32
>>264
あ、ありがとうありがとう。でけますた。
RemotePortとLocalPortの設定が逆でした馬鹿でした俺はゴミです。

2007のTUdpSocketもそれがアレで受信できなかったのかなあ
とりあえず試してみまふ

266 :250:2010/04/20(火) 13:37:01
う〜ん、やっぱ2007はダメかあ。
2007でもLocalPortとRemotePortを逆にしてやってみたりはしてたんだが
こっちの場合はRemotePortに目的のポート番号を指定しないと出力もできなくなる
だから5のNMUDPでもRemotePortに指定してたんですが・・・

ちなみに、俺は昨日から何をほざいてるかと言うと、
最初はWinsocket APIでUDPで通信していて、相手から受信してから
返答を返す時に、相手が受け取ってくれない(SNMPのアレ)
勿論こっちはちゃんと返答を返しているのはターミナルソフトやWiresharkで確認済み。
んで、WiresharkでよくよくみるとSrcポートとDstポートがどうも逆っぽいみたいな
Winsocket APIでこれを逆にできれば一番いいのだが、調べたがやり方がわからない
そこでVBのうんこコンポで試してみたらLocalPortとRemotePortがあったので
それでアレしてみたら見事にちゃんとなってくれたので
それならBuilderのコンポでやってみるかってことで、



267 :250:2010/04/20(火) 13:55:15
あ、ちなみなんだこれNMUDP
これ送信するときはLocalPort=0、RemotePort=目的ポート番号で
受信するときはLocalPort=目的ポート番号、RemotePort=0
じゃないとダメなのかこれ
つーことはこれって送信と受信したいなら2つNMUDPを使えってことか!!
なんじゃこの糞仕様はw

268 :250:2010/04/20(火) 14:05:36
あ、違った。
送受信するならLocalPorとRemotePortにポート番号をぶち込めってことだったぽ。。

いろいろすまんこったい

269 :250:2010/04/20(火) 14:09:05
あ、ダメだ。
LocalとRemoteポートを同じにしたら結局APIでやてtるのと同じだこれ。

うんこしてくる

270 :デフォルトの名無しさん:2010/04/20(火) 14:10:11
>>267
ひとつで送受信は一応できると思う。
LocalPort : 待ち受けポート番号
RemotePort: 送信先ポート番号
っていうことで、送信元ポート番号や受信元ポート番号を
指定できない糞仕様だったと思う。


271 :250:2010/04/20(火) 15:13:44
>>270
VBのアレが同じLocalPort、RemotePortって名前で
向こうはしっかりとSrcポートとDstポートがアレできてたから
こっちもてっきり出来ると思っていたんですが、どうやらうんこだったようで・・・

272 :260:2010/04/20(火) 15:25:32
ついでにNMUDPはbroadcastもできないよ
なのでググりながらwinsock使ったことあるけど
難しくはないと思うよ

273 :250:2010/04/20(火) 15:30:37
>>272
ええええ!!
winsockでは普通に送受信はしてたんですがー
それでSrcポートとDstポートって制御できましたか??
その辺を是非教えて頂きたいです

274 :デフォルトの名無しさん:2010/04/21(水) 16:37:04
マイナー製品使うと、クソ品質、クソ仕様だらけで、結局そういうクソな部分の
解決なり時間費やすはめになる。


275 :デフォルトの名無しさん:2010/04/21(水) 17:41:18
>>274
マイナーかどうかは余り関係がないと思う。

それを補って余りあると考えている人間が使っているのだから
以下略



276 :デフォルトの名無しさん:2010/04/26(月) 10:53:03
Builder2007で
ListView1->SortType = stData;
ってすると、stDataが曖昧だってコンパイルエラーがでます。
これどうやってキャストしたら馬鹿な2007は納得してくれますか?

277 :デフォルトの名無しさん:2010/04/26(月) 10:59:51
namespace::

278 :デフォルトの名無しさん:2010/04/26(月) 11:01:57
>>277
今度は馬鹿な僕が理解できませんでした。
それでキャストしたらエラーでましたが、どやって記述しますか?

279 :デフォルトの名無しさん:2010/04/26(月) 11:09:09
いやマジでC++の入門書くらい読んだ方が良いって。

今回の件に関してだけなら
stDataが定義されているComctrls::stDataとかで足りるかもしれないけどな。

280 :デフォルトの名無しさん:2010/04/26(月) 11:13:18
C++の入門書にComctrls::って載ってる?
まあお前が答えるより先に解決したから礼なんて言わないし役立たずとかしおもってないし

281 :デフォルトの名無しさん:2010/04/26(月) 11:21:02
おまえのヘルプには載ってないのか。

ホント、バカは何をやってもバカなんだな。

282 :デフォルトの名無しさん:2010/04/26(月) 11:35:33
ん?

283 :2068:2010/04/26(月) 14:27:01
このスレのタイトルは
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4


284 :2068:2010/04/26(月) 14:28:05
>このスレッドは、他のスレッドでは書き込めない超低レベル、
>もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
>C++Builder使いが優しくコメントを返しますが、
>お礼はC++Builderの布教と初心者の救済をお願いします。


285 :デフォルトの名無しさん:2010/04/28(水) 11:08:33
質問ですが。。。
Builder2007では↓のような関数を呼ぶときに
void hoge( const char *buff )
{
}
↓のコードでよかったのですが
hoge( Edit1->Text.c_str( ) );
Builder2010で同じコードだと
E2034 'wchar_t *' 型は 'const char *' 型に変換できない
ってエラーがでます・・・
これどうやってキャストしたらいいですか?

286 :デフォルトの名無しさん:2010/04/28(水) 11:13:46
AnsiStringでキャストしたらできました・・・

けどこれって全部AnsiStringでキャストしないとダメですかね。。。

はぁ・・・何この糞仕様・・・

287 :デフォルトの名無しさん:2010/04/28(水) 11:27:20
っていうか・・・・
2007で作ったのを2010でコンパイルすると
2010で作ったexeは2007のよりサイズが倍になってるんだが・・・
これ以前にBuilder5で同じバグがあってアップデートで多少小さくなったんですが
これ2010もひょっとして同じバグ?
それとも単純に無駄な機能が増えまくってexeが肥大化しただけですか?
うーむどっちみち気持ちいいものではないなあ。

288 :デフォルトの名無しさん:2010/04/28(水) 11:35:12
2010はUnicode対応になってるので、その分ライブラリが肥大してると
思われる

吐いたコードを逆アセンブルで見てみな

289 :デフォルトの名無しさん:2010/04/28(水) 11:58:02
うるせえこのぶたやろう

290 :デフォルトの名無しさん:2010/04/28(水) 12:03:07
>>289
なんだとこのぶた

291 :デフォルトの名無しさん:2010/04/28(水) 12:50:48
やめんか豚ども

292 :デフォルトの名無しさん:2010/04/28(水) 13:56:42
とんかつウマー

293 :デフォルトの名無しさん:2010/04/28(水) 16:08:51
どたどうしなかよくしようぜぶた

294 :デフォルトの名無しさん:2010/04/28(水) 18:11:44
なんで、超初心者用スレが荒れているんだ。
超初心者用でない質問スレがなくて、ここが超初心者用だと認識していなかった阿呆のせいか?


295 :デフォルトの名無しさん:2010/04/29(木) 00:19:57
>285
2010ではString=UnicodeString(UTF-16)となった。hogeがconst char *をパラメータで
受け取る仕様とは食い違いがある。Stringを一旦ANSI(Shift_JIS)に変換してから受け取るか、
const wchar_t *を受け取るように変えるか、どっちかが必要。

>287
2010の新機能である属性(Attribute)の影響かと。

296 :デフォルトの名無しさん:2010/04/30(金) 14:10:19
すんません
wchar_t filename[256];
::lstrcpy( filename, ExtractFilePath( Application->ExeName ).c_str( ) );
普通にコピーしたいんですがエラー出ます
これwchar用の関数かなにかあるんですか?

297 :デフォルトの名無しさん:2010/04/30(金) 15:44:38
lstrcpy は Windows Kernel API だから lstrcpyW があるな。
lstrcpy が lstrcpyA にマッピングされている。ということは
UNICODE モードでコンパイルされていないようだから、
よい機会なのでアプリケーション全体を UNICODE モードでコンパイルしてみたら?

ANSI 規格準拠で書きたければ wcscpy で。

C/C++ 言語は10年以上まえから UNICODE サポートを行っているので、必要なものは
そろっていると思ってよいですよ

298 :デフォルトの名無しさん:2010/04/30(金) 15:47:57
>>297
ありがとうございます。
この機会にアレするとして今後の事を考えると
どういう書き方がいいですかね?

299 :デフォルトの名無しさん:2010/04/30(金) 16:09:34
プロジェクトの設定ダイアログに
「TCHAR を wchar_t にする」みたいなオプションがあるから
それを有効に。
これで Windows API と関連する部分が UNICODE に切り替わるので
コンパイルエラーが出てきたところを _T 系マクロでラップ。

T マクロを使う分には、ANSI/WIDE 両方で動くコードを作れる「はず」なので
「WIDE モードでエラーをつぶす」
「ANSI に戻して動作チェック」
「WIDE にして動作チェック」
を繰り返す。

最終的に ANSI/WIDE 両方で動く(C/C++)コードができて
WIDE モードでコンパイルすれば UNICODE-VCL との親和性も高くなる。

というところ。



300 :デフォルトの名無しさん:2010/04/30(金) 16:24:31
>>299
あ、プロジェクトオプションのそれをアレしたら普通にlstrcpyでもコンパイル通った。
基本的にTCHARの設定はアレしないほうがいいんですかね?
これから新たに作るとかのときは

301 :デフォルトの名無しさん:2010/04/30(金) 16:46:13
なぜコンパイルが通ったかを理解していないと、ちょっと危ないかも。

lstrcpy (を含む Windows API で、文字を扱うもの)は、
lstrcpyA と lstrcpyW が実体として定義、提供されていて、
Windows.H とその配下がマクロ(単純な #define)で plain な lstrcpy にマップしているのです。

296 で提示されているコードでは wchar_t (と c_str())を直に使っているので、
WIDE 版の API である lstrcpyW を明示的に呼ぶほうが素直かも知れません。
ここら辺は各自の判断でよいかと。


302 :デフォルトの名無しさん:2010/04/30(金) 16:52:31
>>301
色々とありがとうございます。
ちょっとwchar_t等の知識が乏しいのでまずはその辺を勉強してみます。
ご教授ありがとう。

303 :デフォルトの名無しさん:2010/04/30(金) 16:59:40
「TCHARの設定」は、影響範囲とかがわからない場合には、むやみに変更しないほうがよいでしょう。

以下のコードなら、ANSI でも WIDE でも動きますよ。

TCHAR filename[256];
_tcscpy( filename, ExtractFilePath( Application->ExeName ).t_str( ) );



304 :デフォルトの名無しさん:2010/04/30(金) 17:00:15
おっと、<tchar.h> を追加するのを忘れずに

305 :デフォルトの名無しさん:2010/04/30(金) 17:28:33
>>303-304
確かにそれでコンパイル通りましたが・・・
filenameの中身をみてみると??になってました・・・

ちなみにTCHARって1バイトなんですねこれ。

306 :デフォルトの名無しさん:2010/04/30(金) 17:36:38
CBuilder5では以下のコードはOKでちゃんとmdbファイルが作成されるのですが
CBuilder2010でやるとコンパイルエラーはでないのですが、実行するとアクセス違反エラーが出ます。
Variant cat = Variant::CreateObject("ADOX.Catalog");
cat.Exec(Function("Create") << "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\\test.mdb");

これ、どうしたら正常にmdbファイルを作成することができますか?

307 :デフォルトの名無しさん:2010/05/01(土) 05:57:24
>実行するとアクセス違反エラーが出ます。
どこで?


308 :219:2010/05/01(土) 09:06:17
HTMLの特殊記号をUnicodeに変換(&を&に変換する)してくれるような
機能はVCLにありますか?

309 :デフォルトの名無しさん:2010/05/01(土) 10:23:40
>>305
TCHARはマクロ

#ifdef UNICODE
typedef wchar_t TCHAR;
#else
typedef char TCHAR;
#endif


310 :デフォルトの名無しさん:2010/05/01(土) 10:28:01
>>305
http://docwiki.embarcadero.com/RADStudio/ja/TCHAR_%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0

311 :デフォルトの名無しさん:2010/05/04(火) 11:50:15
初心者ですお勧め参考書教えてください

312 :デフォルトの名無しさん:2010/05/05(水) 17:01:47
TRegistryのWriteDateTimeとWriteTimeって同じ動作をするような気がするんですが...
WriteTimeにしたからといって引数の日付値が消えるわけではないんでしょうか?

313 :デフォルトの名無しさん:2010/05/06(木) 10:42:27
>>311
プログラミング初心者かC++初心者かC++Builder初心者かで違う。
前ふたつはできて、C++Builder初心者ならDelphiの参考書とマニュアルのC++拡張見れば十分。

314 :デフォルトの名無しさん:2010/05/06(木) 21:50:24
C++Builder使ってる参考書ってあんの?

315 :デフォルトの名無しさん:2010/05/06(木) 22:22:25
>312
WriteDateTimeとWriteDate/WriteTimeは同一の動作。つまり
> WriteTimeにしたからといって引数の日付値が消えるわけではない
で正解。

316 :デフォルトの名無しさん:2010/05/06(木) 23:12:34
>>314
Amazonで検索してみれば?

317 :デフォルトの名無しさん:2010/05/07(金) 20:33:39
p

318 :デフォルトの名無しさん:2010/05/07(金) 20:34:21
>>307
やっとあくきんがとけた
cat.Execの行でエラーでます。
これ何とかなる方法はありますか?

319 :デフォルトの名無しさん:2010/05/08(土) 02:40:30
アクセス違反エラーを出しているモジュールを知りたかったので、
表示されているアドレス等、一式が欲しかったんだな。

多くのダイアログは、Ctrl-C でテキスト部分がコピーできるので、
気楽に保存できるよ

320 :デフォルトの名無しさん:2010/05/10(月) 12:22:32
>>319
エラーはEAccessViolationって書いてあるダイアログが出るだけです・・・

321 :デフォルトの名無しさん:2010/05/11(火) 11:07:17
C++Builder2007か2010でODBCを経由せずに直接DBアクセスする方法教えてください。
あ、DBはアクセスのmdbでいいです。

322 :デフォルトの名無しさん:2010/05/11(火) 11:13:48
ADOならいいのか

323 :デフォルトの名無しさん:2010/05/11(火) 11:24:26
dbgo とか ADOTable とか使ってみたら > 321

324 :デフォルトの名無しさん:2010/05/12(水) 09:49:17
ppp

325 :デフォルトの名無しさん:2010/05/12(水) 10:59:49
mdbファイル操作について質問ですが
Variant::CreateObject("ADOX.Catalog");を利用して
フィールドの型とサイズを取得する方法を教えてください


326 :デフォルトの名無しさん:2010/05/12(水) 12:37:07
TMaskEdit の EditMask プロパティを実行時に変更すると
スタックオーバーフローとか例外を吐かれたので解決方法調べてたんだが
AutoSelect = false にすると収まったんで、とりあえずここにチラ裏していく。

ブレークポイント&ステップ実行使うと再現しなくなる例外でしたよ

327 :デフォルトの名無しさん:2010/05/12(水) 13:28:04
      for col in rs.Fields:
        col.name, col.type, col.size


328 :デフォルトの名無しさん:2010/05/12(水) 16:28:43
そんなバグだらけな製品よく使う気になるよな。


329 :デフォルトの名無しさん:2010/05/12(水) 21:32:42
VCやGCCよりは遥かに少ないけどな

330 :デフォルトの名無しさん:2010/05/12(水) 22:06:45
2011が出る前に2010買っておいた方がいいのかな

331 :デフォルトの名無しさん:2010/05/13(木) 15:33:35
>>325を教えて

332 :デフォルトの名無しさん:2010/05/13(木) 16:15:57
64bit対応版が安定するまでは6Pro使い続ける

333 :デフォルトの名無しさん:2010/05/14(金) 12:17:12
bcb2007使用しています。
Memo1にAnsiStringに貯めこんだ改行含みの文字列を表示させて計算結果を表示しています。
数が多くなると処理が遅くなっています。高速化の定石があれば教えてください。

Ansi

334 :デフォルトの名無しさん:2010/05/14(金) 12:20:47
enter押したら投稿してしまいました。

bcb2007使用しています。
Memo1にAnsiStringに貯めこんだ改行含みの文字列を表示させて計算結果を表示しています。
数が多くなると処理が遅くなっています。高速化の定石があれば教えてください。

AnsiString s="";
for(){

s+=文字
}

for(){

s+=文字
}

for(){
s+=文字

}

Memo1->Text=str;

このような形です。
Memoにはこだわっていません。sのサイズがわからないので、
とりあえず、AnsiStringを使っています。
よい文字格納変数型とよい表示コンポーネントはあるでしょうか?

335 :デフォルトの名無しさん:2010/05/14(金) 16:26:25
IdUDPServerでいいからsrcポートとdstポートを逆にして送信する方法教えてよ

336 :デフォルトの名無しさん:2010/05/14(金) 18:11:42
>>334
std::string str;
str.reserve(64*1024);
...
Memo1->Text = str.c_str();
でどうかね。

337 :デフォルトの名無しさん:2010/05/14(金) 18:18:44
ああそうか
C++BuilderにはStringBuilderがないからか

338 :デフォルトの名無しさん:2010/05/14(金) 18:28:43
>数が多くなると処理が遅くなっています。
どれくらいの量の文字列を扱っていますか?

文字列処理が遅いのか、描画が遅いのか。をまず分けたほうがよいですね。

Memo1->Text=str;

をコメントアウトして
あと、速度の話をするときは、ちゃんと時間を計りましょう。

LARGE_INTEGER _start, _end;
QueryPerformanceCounter(&_start);
QueryPerformanceCounter(&_end);

__int64 lap = _end.QuadPart - _start.QuadPart;

こんなんで、CPU のクロック単位の経過時間が計れます。

339 :デフォルトの名無しさん:2010/05/14(金) 21:32:23
334です。
レスありがとうございます。
std::string str; を検討してみたいと思います。(BCBではつかえない?)
時間に関しては、文字蓄積時はあちこちなので、
時間がはかりづらいですが、

コンポーネントへの表示処理とそれまでの計算時間を
指標にして表示処理を時間的に評価してみたいと思います。

計算結果をテキストに表示する手法の常套手段が
知りたいのもありました。

なお計算は動的計画法なるもので、計算量はピンからキリまでありますので、
組み合わせが多い状態の高速化を図る予定です。

340 :デフォルトの名無しさん:2010/05/15(土) 03:19:55
一般論として。
「速度をあげたい」と思ったら、まずそれを測定することを考えましょう。
測定するために対象を調査していく過程で、問題点そのものが分かってしまう場合があります。
定期的に速度を計測、比較することで、少なくとも、改造の結果かえって遅くなった。ということは
避けられるでしょう。

テストするときは単一データではなく、複数のデータを使うこと。テストデータの量を変えること。
10, 20, 50, 100, 200, 500.... といった (1, 2, 5) パターンがおすすめ。
時間がかかるので端折るときでも、桁が異なる複数のデータ量での計測を忘れずに。

ある程度、対象データ構造、アルゴリズムの癖が分かったら、本質的にどこまで速くなるのか。
を考えてみること。データが(毎回)ディスクから読み取られるなら、ディスクアクセス速度より
速くはできない。(キャッシュとか考えないと)
CPU のキャッシュを超える量のデータを扱うなら、メインメモリのアクセススピードを超えることはできない。
まぁ、ここら辺は厳密に計算する必要はなく、桁合わせ程度の概算で十分ですが、
原理上不可能な速度を追求して時間を浪費するのは避けたいですし、
逆に「もう一桁速くできるはずだ」となるかもしれません。




341 :デフォルトの名無しさん:2010/05/15(土) 12:27:07
>>334
TStringStreamを使ってみてはどうだろうか?

342 :デフォルトの名無しさん:2010/05/17(月) 22:05:25
TStringStream
ありがとうございます。
検討中なので結果報告できないですが、ご容赦ください

343 :デフォルトの名無しさん:2010/05/26(水) 11:40:30
早く>>325を教えろつってんだ!!

344 :デフォルトの名無しさん:2010/05/26(水) 21:21:46
調査中ですので、あと10年ほどお待ちください。

345 :デフォルトの名無しさん:2010/05/27(木) 11:04:13
うるせー!

346 :デフォルトの名無しさん:2010/06/02(水) 14:01:19
HDCをTBitmapにする方法教えて

347 :デフォルトの名無しさん:2010/06/02(水) 17:25:05
SQLConnectionでmdbファイルをアクセスする方法とかを教えてくださいよ

348 :デフォルトの名無しさん:2010/06/02(水) 22:59:11
>346
TImagePicture.Bitmap.HandleもHDCなので、ここに向かってBitBltすればいいんじゃない?

349 :デフォルトの名無しさん:2010/06/03(木) 09:41:54
>>348
できました

350 :デフォルトの名無しさん:2010/06/04(金) 15:55:05
2007でデスクトップのサイズ(横幅)を超えるフォームを作っても
実行するとデスクトップの横幅と同じサイズになってしまうのですが
これちゃんと指定したサイズになる方法を教えてください

351 :デフォルトの名無しさん:2010/06/04(金) 18:06:02
さっさと教えやがれ

352 :350:2010/06/04(金) 19:11:01
はよ、教えろや
役にたたん奴らばぁじゃのぉ
ウンコでも食うとれや

353 :デフォルトの名無しさん:2010/06/04(金) 22:27:33
ウィンドウはデスクトップサイズを越えることができなかったはず。Windowsの制限。
クレームはゲイツかカトラーにどうぞ。

354 :350:2010/06/05(土) 05:35:49
>>352
で?

355 :デフォルトの名無しさん:2010/06/07(月) 10:03:47
VMなんかでホスト側の解像度を超えられないのは馬鹿じゃねとかおもう

356 :デフォルトの名無しさん:2010/06/11(金) 19:36:52
C++Builderでバージョン情報の自動更新などもない状態で全く同じファイルを
コンパイルするとその都度違うファイルが出来ますがこれは何故なんでしょうか?

357 :デフォルトの名無しさん:2010/06/12(土) 00:01:15
インクリメンタルリンクしてるからじゃね?
フルビルドすると同じになるはず

358 :デフォルトの名無しさん:2010/06/12(土) 00:26:02
ビルドの日付が埋め込まれるから異なるとかそんな話か?

359 :356:2010/06/12(土) 00:56:43
ありがとうございます
インクリメンタルリンクは切ってあります
ステートファイルの作成をしないにチェックが入っていて/Gnオプションがオプションソースに書かれています
でも毎回違うファイルになってしまいます

>>358
そういうことなのでしょうか?
どこかにオプションはありますか?

360 :デフォルトの名無しさん:2010/06/12(土) 12:26:33
>>359
プロジェクト→オプション→バージョン情報とかじゃね?
ビルドの日付を埋め込むオプションは見つからんなあ

361 :デフォルトの名無しさん:2010/06/12(土) 13:54:38
>>360
そうですか
バージョン情報のチェックは入ってない状態です

何で微妙に違うファイルが毎回出力されるんだろう
というかこれってうちだけの現象なんでしょうか

362 :デフォルトの名無しさん:2010/06/12(土) 14:00:13
diffってみたら?

363 :デフォルトの名無しさん:2010/06/12(土) 16:18:13
WindowsはPEヘッダにタイムスタンプ入るから同じEXEはできない
オプションはない
それでも2バイト前後だから10バイト以上異なるならデバッグ情報ジャマイカ?

364 :デフォルトの名無しさん:2010/06/12(土) 20:30:52
成る程そういうことでしたか
大体10バイト程度ですが近くにPE\0の文字も確認できるのでそれで間違いなさそうです
勉強になりました
どうもありがとうございます

365 :デフォルトの名無しさん:2010/06/13(日) 16:08:55
ようやく64bitに対応したね

366 :デフォルトの名無しさん:2010/06/13(日) 16:12:43
あとはデバッガが動けばねぇ

367 :デフォルトの名無しさん:2010/06/13(日) 17:11:23
すみませんが、BCB6でfastmmのフルデバッグモードを使うには
どのような設定が必要かご教示お願いします。
FastMM4.pasやFastMM4BCB.cppをプロジェクトに組み込んだのですが、
終了時にメモリリークのダイアログしかでてこないので、どこでリークしているのか
良く分かりません。


368 :デフォルトの名無しさん:2010/06/13(日) 21:19:22
C++Builder使いじゃないからよくわからんけど、プロジェクトオプションでFullDebugModeを
定義済の状態にしてFastMM関係のソースをコンパイルすればいいはず(*.objか*.dcuを
一旦削除することで)。FastMM_FullDebugMode.dllを配置するのも忘れずに。

369 :デフォルトの名無しさん:2010/07/02(金) 20:18:11
わかりました。

370 :デフォルトの名無しさん:2010/07/28(水) 10:55:56
BCB2010を使ってるんですが
これのSTLのfstreamって
4GB超えるファイルは扱えないんでしょうか?

ifstream in(file_path, ios::binary);
in.seekg(0, ios::end);
int64_t file_size = in.tellg();

とやると
小さなファイルでは正しくファイルサイズが返ってきますが
4GB超えるファイルを開くと file_size には0xFFFFFFFFFFFFFFFFが返ってきます

371 :デフォルトの名無しさん:2010/07/28(水) 20:52:19
>>370
std::ifstream::tellg()はstd::pos_typeを返す

従ってstd::pos_typeの内部表現次第と言うしかない
つまり処理系依存

これを避けるのはWin32を直接触るしかなかろう

372 :デフォルトの名無しさん:2010/07/28(水) 21:32:11
確か、stdioも同じなはず。
シーケンシャルに4G超えを読み取ることは出来る(はず)が
seekは出来ない(_lseeki64とかを使う)。
また、tellで得られる値も32bit。

VC++がそういう仕様になっているので
他の処理系もそれに合わせてるんじゃないかとも思う。

86 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)