くだすれC++Builder(超初心者用)その2
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/04/06(木) 16:33:24もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
C++Builder使いが優しくコメントを返しますが、
お礼はC++Builderの布教と初心者の救済をお願いします。
Borland Home Page
http://www.borland.co.jp/
<前スレ>
くだすれC++Builder(超初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1117225464/l50
<兄弟スレ>
くだすれDelphi(超初心者用)その31
http://pc8.2ch.net/test/read.cgi/tech/1142594051/l50
0421420
2006/09/06(水) 22:09:24アドビが可愛く見えるっす。
0422デフォルトの名無しさん
2006/09/06(水) 22:55:100423Delフサギコ ◆A6VzDeLphI
2006/09/06(水) 23:17:18∧,,∧ / >>420
ミ,,゚Д゚彡< XN Resource Editor
ミ つ□) \
〜ミ ミ.  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∪''∪
0424デフォルトの名無しさん
2006/09/07(木) 00:19:18BCB6使いやすすぎ
0425デフォルトの名無しさん
2006/09/07(木) 01:14:33分厚いマニュアルは、リアル紙では付属していないけど、
ちゃんとヘルプの中に入っている。
0426デフォルトの名無しさん
2006/09/07(木) 02:05:30SP1とSP2の中にな。
しかも、紙をペラペラめくる感覚でいかんだろ。
0427420
2006/09/07(木) 02:31:29お返事ありがとうございます。
苦労したおかげで、今では充分に理解していますよ。
リソースなんていくらでも編集する手段ありますし。
ただ、製品としてツールがあるのかどうかが知りたかっただけ
なんですけどね。マニュアル嫁とでも?
>>425
DELPHI(WIN32)部分じゃ全く苦労してないです。
ずっと5を駆使してきたから。
初めて使ったとして、あのあらずじしか書いてないヘルプじゃ
いきなり理解できないですよね。
関数やらを調べるのにしてもF1とかCTRLで使うとしても、
英文でしかもサンプルの無いページに飛ばされるわけですよ。
(それでも拙い読解力で頑張って読んでますけどね)
まぁ、5の分厚い日本語マニュアルでもワケがわかなかったけど...。
0428デフォルトの名無しさん
2006/09/07(木) 05:49:46同感です。
「Delphi6 プログラミングバイブル」という良本があるが、
これを商品に標準で付ければ、開発ツールとしての価値は
断然上がると思う。
Turboシリーズの日本語化の際には、ぜひ考えてほしい。
商品価格は上がってもいいから。 >ボー様
0429デフォルトの名無しさん
2006/09/07(木) 08:55:59本屋で買うかどうか決められる方がいい。
0430デフォルトの名無しさん
2006/09/07(木) 09:23:340431デフォルトの名無しさん
2006/09/07(木) 09:40:290432デフォルトの名無しさん
2006/09/07(木) 13:52:21表示したサイトに付いているボタン押下判定がしたいのですが、
TApplicationEventsを使って出来ますか?
例
WebBrowser1->Navigate("http://www.google.co.jp")
で、Googleの検索ボタンを押した!というのをフックしたいの。
TWebBrowserで表示したサイト内のコントロール全てが子ウィンドなんてことはないでしょうか
0433デフォルトの名無しさん
2006/09/07(木) 14:37:54コントロールのメッセージの監視というのは無理。
0434デフォルトの名無しさん
2006/09/07(木) 14:45:32TApplicationEventsでは無理。
DOM使うのがノーマルなやり方だろな。
0435デフォルトの名無しさん
2006/09/07(木) 14:53:25無理ですか
DOOM?(´・ω・`)
DOMについて調べてみます。
ありがとうございました。
0436デフォルトの名無しさん
2006/09/07(木) 18:33:15TEditのOnDragOverイベントを使うのでしょうか?
0437デフォルトの名無しさん
2006/09/07(木) 20:07:49具体的にはIHTMLDocument2インタフェース
JavascriptでHTMLドキュメント内の要素を自在に操作できるスキルあるなら簡単。
0438デフォルトの名無しさん
2006/09/07(木) 22:51:50クソドキュメントのせいじゃないとしたら、
普及してないせいだね。
0439デフォルトの名無しさん
2006/09/07(木) 22:56:29試すだけでも半日掛かった。
まさか、マニュアルに書いてあるとでも?
0440デフォルトの名無しさん
2006/09/07(木) 23:13:180441デフォルトの名無しさん
2006/09/07(木) 23:21:38なになにが足りませんとか言われるからそれを持ってくるだけですよ。
>>440
口ばかり達者なのはミエミエだから黙ってろ。
0442デフォルトの名無しさん
2006/09/07(木) 23:25:000443デフォルトの名無しさん
2006/09/08(金) 00:12:55自演の初心者なのが痛々しくて、そっちはどうにも見てらんない。
0444デフォルトの名無しさん
2006/09/08(金) 02:33:32ショートカットキーのCtrl + Shift + Cによるクラスのコード補完みたいなのはないんでしょうか?
0445デフォルトの名無しさん
2006/09/08(金) 03:06:090446デフォルトの名無しさん
2006/09/08(金) 03:30:31すみません、質問が悪かったです。
そのショートカットキーを教えて下さいorz
0447デフォルトの名無しさん
2006/09/08(金) 04:09:47キーはない。
しばらく待つだけ。
設定はツール→エディタプロパティ→支援機能
0448デフォルトの名無しさん
2006/09/08(金) 06:03:24うそ書いたらあかんね。
キーはある。
0449デフォルトの名無しさん
2006/09/08(金) 11:19:10ダイナミックリンクライブラリプロジェクトをつくり、1つ適当な関数
extern "C" __declspec(dllexport) int hogehoge()
{
return 666;
}
をつくり、メイクを実行してdll,libが出来ました。
次にVCLフォームアプリケーションプロジェクトをつくり、
先ほどつくったlibファイルを追加したのですが、hogehoge関数が呼び出せません。
何が足りないのでしょうか・・・。
0450デフォルトの名無しさん
2006/09/08(金) 13:37:29呼び出し側でそのhogehogeを宣言してあるか?
0451449
2006/09/08(金) 13:42:52extern "C" __declspec(dllimport) int __stdcall hogehoge();
場所は「extern PACKAGE TForm2 *Form2;」の下です。
こうではないですか?
0452デフォルトの名無しさん
2006/09/08(金) 17:26:01それでいいはず。
tpりあえずエラーメッセージ晒してみ?
0453デフォルトの名無しさん
2006/09/08(金) 17:26:400454449
2006/09/08(金) 17:52:48__declspec(dllexport)へ変えました。
が、以下のエラーがやはり出ます。
↓出ているエラー
[リンカ エラー] Error: 未解決の外部参照 'hogehoge()' が C:\BORLAND STUDIO PROJECTS\テストDLLPJ\DEBUG_BUILD\TESTPJ.OBJ から参照されました
しかし、__stdcall を消したら実行できました・・・。
ヘルプを引いてみると、
↓↓
_stdcall と __stdcall キーワードを使うと,コンパイラは標準の呼び出し規約を使って関数呼び出しを生成します。ただし,C とは違って,関数は正しい数と型の引数を渡さなければなりません。通常,C では関数の引数の数が可変でもかまいません。
このような関数は,WIN32 の引数渡しの標準規則に従います。
↑↑
と書いてありますが、さっぱりわかりません・・・。
どなたか簡単に解説していただければ幸いです。
とりあえずありがとうございました。
0455449
2006/09/08(金) 18:22:10引数が無いhogehoge関数は正常に値が帰ってくるのですが、
新たに以下の様な関数をDLLに追加しました。
>>DLL
extern "C" __declspec(dllexport) int ShowMessageExclamationYesNo(char msg,char caption)
{
char w_msg = w_msg;
char w_caption = caption;
int w_flags = MB_ICONEXCLAMATION | MB_YESNO;
int w_int;
w_int = Application->MessageBox(PChar(w_msg),PChar(w_caption),w_flags);
return w_int;
}
これをDLLを呼んでいるtestpj.hに
extern "C" __declspec(dllexport) int ShowMessageExclamationYesNo(char msg,char caption);
でプロトタイプ宣言?し、testpj.cppのbutton2clickイベントで呼ばせる様、以下のようにコーディングしたのですが・・・
void __fastcall TForm2::Button2Click(TObject *Sender)
{
char ww_msg[5] = {'1','5','3','6','9'};
char ww_caption[6] = {'a','b','c','d','e','f'};
ShowMessageExclamationYesNo(ww_msg,ww_caption);
}
コンパイルは通り、いざボタン2を押すと
「モジュール'USER32.dll'のアドレス77D0204Fでアドレス00000010に対する読み込み違反がおきました。」
と、エラーが出てしまいます。
何がおかしいのでしょうか?
0456デフォルトの名無しさん
2006/09/08(金) 18:30:410457デフォルトの名無しさん
2006/09/08(金) 20:32:44ついでにDLLからexe側のオブジェクト呼び出しってできたっけ・・
0458デフォルトの名無しさん
2006/09/08(金) 21:33:510459デフォルトの名無しさん
2006/09/08(金) 21:39:43正解ですな。
でも442も同じヤシなのは見抜けなかったというか、
手のひらの上で踊らされてますね。
0460デフォルトの名無しさん
2006/09/08(金) 22:09:16442なんてどうでもいいレスじゃん。
0461デフォルトの名無しさん
2006/09/08(金) 22:27:18Cに移植してます。
ハードウェアの制御をスレッド作って裏でやらせてるんですが、
コントロールでHintを表示させると一瞬スレッドが停止しているように
見えます。
DELPHIでは今までそんなことは起きてませんでした。
ハードのほうは特に問題なく動いてるんですが、信頼性の面で心配です。
これはメインフォームでの見かけ上の問題なのでしょうか、
それとも本当に止まってしまっているんでしょうか。
同じような経験をされた方はいらっしゃいますでしょうか?
0462460
2006/09/08(金) 22:31:03初心者相手にしてたら本当に疲れるよな。
死ねばいいのに。
0463デフォルトの名無しさん
2006/09/08(金) 22:37:210464デフォルトの名無しさん
2006/09/08(金) 22:41:43一瞬固まることがあります。
ちょっと手間は掛かるけど、ラベルなどで代用したらどうでしょう。
普段はVisible=falseにしといて、イベントかマウス座標で、trueにするとか。
もっと簡単な方法はあるかもしれませんが。
0465デフォルトの名無しさん
2006/09/08(金) 22:56:17多分、「いわゆるメインフォーム」の見掛け上の問題かと。
今試したら、スレッドの無限ループ数をカウントしてメインに
表示させたらガクンと数字が上がったので。
そもそも俺はハード使うんだったらNT系のWINはおすすめしませんけど。
0466デフォルトの名無しさん
2006/09/08(金) 23:11:03>>463
もうバカは放っておけやw
バカ相手だと疲れるだからすルーしとけやw
ここは超初心者がくるようなところじゃないんだからw
0467デフォルトの名無しさん
2006/09/09(土) 06:08:00無いのかな。前世代のQuick Reportまではヘルプも日本語だったのに・・・
0468デフォルトの名無しさん
2006/09/09(土) 08:40:520469デフォルトの名無しさん
2006/09/09(土) 11:42:05ビジネス向けの出力はどうしてんの?
0470デフォルトの名無しさん
2006/09/09(土) 11:52:42すまんが「ビジネス向けの出力」の定義が分からん
0471デフォルトの名無しさん
2006/09/09(土) 12:13:01HISAGOの帳票に出力するときとか。
0472デフォルトの名無しさん
2006/09/09(土) 12:26:12QReportなどはドットインパクトプリンタ対応してるから楽ってこと?
0473デフォルトの名無しさん
2006/09/09(土) 18:08:41>>470
明細票など帳票の類なんだけど。
まさかWin32 APIのGDI、DCでもって描画するなんて(ry
0474デフォルトの名無しさん
2006/09/09(土) 18:13:340475デフォルトの名無しさん
2006/09/09(土) 18:56:45MS-DOSみたいにプリンタに直接コマンド送りたいってこと?
はっきりしりねーな
0476デフォルトの名無しさん
2006/09/09(土) 22:10:53普通は自前でこの辺をライブラリ化しておくだろ、ってことでは。
うちではコンポーネントにしてる。DBものをやらないんで
QuickReportとかRaveみたいに凝った機能が必要ないってこともあるけど。
0477デフォルトの名無しさん
2006/09/10(日) 03:03:05みんな送り状の印刷どうしてます?
まさか手書き?
例えばドットプリンタって、まだ普及してるのかな?
0478デフォルトの名無しさん
2006/09/10(日) 04:47:370479デフォルトの名無しさん
2006/09/10(日) 06:26:350480デフォルトの名無しさん
2006/09/10(日) 09:55:05まだドットプリンタの需要はあるよ。
スーパーなどへの納品伝票などは複写紙伝票だったりするしね。
EOS化で昔ほどの印刷量ではないけど。
0481デフォルトの名無しさん
2006/09/10(日) 12:02:320482デフォルトの名無しさん
2006/09/10(日) 12:03:58C++Builderとほぼ同等の機能を持つBorland(DevCo)の新ブランド
Borlandの説明サイト
http://bdn.borland.com/ja/article/33666
Turboのブランド復活
http://www.itmedia.co.jp/enterprise/articles/0608/08/news056.html
Turbo Explorerは、Webサイトからダウンロードして入手のほか、
雑誌や書籍等の付録CD-ROMとしても提供する計画とか。
Turbo Professionalは、9月19日より出荷を開始予定。
http://www.turboexplorer.com/jp/
http://www.borland.com/downloads/download_turbo.html
0483デフォルトの名無しさん
2006/09/10(日) 13:08:25新ブランドではなかったな orz 復活したんだから・・
新製品というべきだった
0484デフォルトの名無しさん
2006/09/10(日) 15:37:540485デフォルトの名無しさん
2006/09/10(日) 16:20:05http://www.turboexplorer.com/files/jp/turbocpp_features.pdf
0486デフォルトの名無しさん
2006/09/10(日) 17:11:00昔の国民機などでやってたものをXPで使いたいときなんか困るよって話。
データベースからの帳票印刷をしたい時に、インターフェース部分を
自分で作らなきゃならないんだけど、メーカーが潰れてて資料が無かったりする。
新しいの買えと言われればそれまでの話です。
0487デフォルトの名無しさん
2006/09/10(日) 17:26:37国民機の出力と完全に同じ汁!というおバカな要望でもない限り。
0488デフォルトの名無しさん
2006/09/10(日) 18:21:13自分で出す分には妥協すればいい話だが、
企業にはとんでもないアホ上司も居るわけだw
0489デフォルトの名無しさん
2006/09/10(日) 21:38:210490デフォルトの名無しさん
2006/09/10(日) 22:14:32まぁ確かにTPrinterでできない(けれどもほかの方法ではできるような)ことは
ないけど、PC-98時代のラインプリント主体の制御方法のままでの印刷ってのは
それなりに面倒なところがあるからね。
0491デフォルトの名無しさん
2006/09/10(日) 23:53:48>>488
だんだんスレ違いになってきたのでこれ以上はやめときます。
プログラマとして皆さんどうしてるんだろうという、
素朴な疑問だったんですが、自分の今の環境がBCBなんで、
参考になるかなと思った次第です。しかも辞めた人のお下がり。
指摘されるまでもなく同感なんですよ。
簡単におっしゃるが、凄く根っこが深いんでね。
使用者(おっさん&おばちゃん)とか、インフラ全体とか全て
考えなければならなくて、どうしたものか。
それを含めて上からGOサインが出れば苦労しないんですよ。
TPrinterいいなぁ、ブツブツ...
0492デフォルトの名無しさん
2006/09/11(月) 01:44:370493デフォルトの名無しさん
2006/09/11(月) 01:55:58初心者にでもわかりやすい説明サイトを紹介していただけないでしょうか?
0494デフォルトの名無しさん
2006/09/11(月) 02:24:25http://www.turboexplorer.com/jp/
0495デフォルトの名無しさん
2006/09/11(月) 06:30:59まぁ、あなたに理解できるのはそのパートだけだったということでw
0496デフォルトの名無しさん
2006/09/11(月) 06:51:26初心者にでもわかりやすい説明サイトを紹介していただけないでしょうか?
0497デフォルトの名無しさん
2006/09/11(月) 12:13:420498デフォルトの名無しさん
2006/09/11(月) 12:23:121/6インチ改行(だっけ?)とかにも対応できる品
0499デフォルトの名無しさん
2006/09/11(月) 13:43:52初心者にでもわかりやすい説明サイトを紹介していただけないでしょうか?
0500デフォルトの名無しさん
2006/09/11(月) 23:14:46tmediaplayerには音量を調整するような所は無いのでしょうか。
0501デフォルトの名無しさん
2006/09/11(月) 23:33:07http://cyberwing.versus.jp/pg/archives/000147.shtml
0502274
2006/09/13(水) 12:56:29その節はお世話になりました。
取り合えず、
C++Builder Personal
C++Builder6コンポーネント活用ガイド&実践プログラミング (Vol.1)
C++Builder6 コンポーネント活用ガイド&実践プログラミング(Vol.2)
を買って、勉強中です。
そこで、質問があるのですが、
文字のバイト数を気にせずにプログラミング出来るように、文字列に WideString を用いている
のですが、実行速度が目茶苦茶遅いのです。
試しに同じ物をVBで作ると半分以下の速度で実行出来ます。
やはり、WideString なんて使っては駄目なのですか?
速度を優先するなら、やはり文字は Char型 で扱うべきなのでしょうか?
0503デフォルトの名無しさん
2006/09/13(水) 13:11:25それはともかく、WideStringは、参照カウントを持たず、
コピーすると実体を必ず複製するので、WideStringでの代入をしまくるとそりゃ遅い。
ちなみにAnsiStringは、参照カウントを持っている。
0504デフォルトの名無しさん
2006/09/13(水) 13:43:29Key == "C"
↑と書いたらコンパイルで「'unsigned short' 型は 'char *' 型に変換できない」といわれ
Key == 'C'
↑と書いたらコンパイルが通りました。
"と'の違いを教えてください。
0505デフォルトの名無しさん
2006/09/13(水) 13:48:41'X'・・・文字の値
0506デフォルトの名無しさん
2006/09/13(水) 13:49:41'n'は文字
0508デフォルトの名無しさん
2006/09/13(水) 14:01:08> WideStringで何をしようとしているのかくらい書けよ
どうも失礼しました。
今は、お勉強中で何を作るというのも無いのですが、
試しに、TMemo オブジェクトMemo1にかなり長い文章貼り付け、その文字列をWideString型の変数T1
に代入し、T1から一文字ずつ取り出し、「文字コードに変換し、それをまた、文字に変換し」、
WideString型の変数T2に代入して行き、最後に、T2をMemo2に表示するという単純なものです。
Memo2->Text = Memo1->Text;
では、あまりにも味気ないので、VBとの速さを試す為に作ったのですが遅さに愕然としました。
0509504
2006/09/13(水) 14:18:25ありがとうございます。
IF文で文字列を判定する場合は'xxx'でいいと思いますが、
""はどういった時に使うものなのですか?
0510デフォルトの名無しさん
2006/09/13(水) 15:29:43?
0511デフォルトの名無しさん
2006/09/13(水) 15:44:53おまいさんは根本的にC言語から勉強し直せ
BCBを使うどころではない。
0512デフォルトの名無しさん
2006/09/13(水) 17:34:04Pascalと勘違いしてない?
'xxx'とはかけないはず
0513504
2006/09/13(水) 17:59:12Cもあまり判っていません・・。
*はポインタ
&はポインタの値
WORD &Key
'a' == Key
値 == ?!?!?!?
どういうことですか
0514デフォルトの名無しさん
2006/09/13(水) 19:26:28うん、それはわざわざ言わなくても解るよ。w
>どういうことですか
何が言いたいのやらさっぱりだw
0515デフォルトの名無しさん
2006/09/13(水) 20:58:50その辺がわからんかったらしんどいよ
やはり基本はきちんと勉強せんと
0516デフォルトの名無しさん
2006/09/13(水) 22:57:59'X'は文字リテラル サイズは1バイト
"X"文字列リテラル 文字列リテラルの末尾には自動的に'\0'が
挿入されるのでサイズは2バイト
注意が必要なのはこれらが式の中に現れた場合。
文字リテラルはそのまま文字として評価されるが、
文字列リテラルはその先頭文字へのポインタとして評価される。
char chr = 'X'; //chrの値は'X'
const char* ptr = "X" //ptrの値は"X"の先頭アドレス
んで、
if ( chr == 'X' ) ... ; // true
if ( ptr == 'X' ) ... ; // 文字とポインタの比較 不可
if ( ptr == "X" ) ... ; // ポインタ同士の比較なのでコンパイルエラーにはならない
// しかしtrueとなることは保証されていない
0517デフォルトの名無しさん
2006/09/13(水) 22:59:00最後の例が引っかかりやすいところ。
const char* ptr1 = "X";
const char* ptr2 = "X";
ptr1とptr2が同値となる(同じアドレスが格納されている)かどうかは
仕様上は保証されていない
コンパイラの仕事次第で同値のときもあればそうでないときもある
まぁ、この辺の話が良くわからなかったらきちんとしたC/C++の入門書を読んで
勉強したほうがいい。ネットで断片的な情報を集めるだけだと中々きちんとした
理解には到達できないよ。
0518デフォルトの名無しさん
2006/09/14(木) 01:44:27printf("true");
else
printf("false");
0519デフォルトの名無しさん
2006/09/14(木) 01:46:46char b[] = "abc";
if(a == b)
printf("true");
else
printf("false");
0520デフォルトの名無しさん
2006/09/14(木) 01:48:00char *b = "abc";
if(a == b)
printf("true");
else
printf("false");
■ このスレッドは過去ログ倉庫に格納されています