くだすれC++Builder(超初心者用)その2
レス数が950を超えています。1000を超えると書き込みができなくなります。
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
0896デフォルトの名無しさん
2007/01/10(水) 14:35:55用途は趣味のゲーム製作なのですが、挫折する事も考えると安価なPersonalが
魅力的です。
DirectXを使うようなゲームを作る場合、Personalでも問題ありませんか? 両
者の大きな違いとは、単に商業的に使えないという事だけでしょうか?
ちなみにBCBを選んだのは仕事でDelphiを使っているので、VCよりもとっつき
易いかかもしれないと思ったからです。
0897888
2007/01/10(水) 14:43:14最初、TextWidthがCaptionの表示幅より小さい値になってたんですが、
FormのFontのSizeを大きくしたらうまくいきました。
これでいきます。
0898888
2007/01/10(水) 16:12:48自分で作ったメッセージボックスは、アプリケーション起動時にCreateFormしないで
動的にフォームを作成、削除するようにしたいのですが、どうやればよいのでしょうか?
0899デフォルトの名無しさん
2007/01/10(水) 20:34:29まあリファレンスはCのが多いからどちみちCを読めなきゃならないけど。
0900デフォルトの名無しさん
2007/01/10(水) 22:33:08はげどう
0901デフォルトの名無しさん
2007/01/10(水) 22:38:22WinMainにあるApplication->CreateForm(__classid(Txxxx), &xxxx);を消して
必要な時にnewしたらどうだね
(xxxxはフォームのクラス名ね)
0902デフォルトの名無しさん
2007/01/11(木) 00:07:22られず困っています。
FormのButtonクリック・イベントでlex.yy.cで実装されたyylex()をコー
ルさせたいのですが、未解決の外部参照だとリンクエラーが発生します。
*.cから別の*.c内定義の関数コールはできているのですが、*.c内で定義
されたラベルを*.cppで参照するには何か特別な記述が必要なのでしょうか?
0903デフォルトの名無しさん
2007/01/11(木) 00:15:25.dcuをプロジェクトに放り込めばいけそうな気が‥‥
>>896
DirectGraphicsベースのアプリだとVCLフレームワークの大半が無意味になるからVC2005Expressでいいとおもうぞ。
取っつきやすいだけならVC#2005Express+XNA GameStudio Expressの選択肢も。
0904デフォルトの名無しさん
2007/01/11(木) 00:17:32extren "C"
0905デフォルトの名無しさん
2007/01/11(木) 00:18:44extern "C"
0906デフォルトの名無しさん
2007/01/11(木) 00:29:22ありがとうございます。
職場のPCにしか環境が無く、すぐに試せなくて申し訳ないのですが、
コードの意味を調べておいて、明日試してみます。
0907895
2007/01/11(木) 02:26:09Midaslib.dcuをプロジェクトに追加しても駄目でした。
ソースに
#pragma link "Midaslib.dcu"
と書くと、
[リンカ エラー] Error: 'MIDASLIB.DCU' に無効な OMF レコード (タイプ 0x23) が含まれています
となります。
0908896
2007/01/11(木) 10:24:25DirectXを使う場合、そのうち限界を感じるようになると知り合いに言われまし
て・・・。
>>903
なるほど。
では、VC2005Expressを試しに使ってみます。 ありがとうございました。
0909デフォルトの名無しさん
2007/01/11(木) 17:56:48現在表示中のサイトのバックグラウンドカラーや表示中のテキストを取得することは
できませんでしょうか?
0910デフォルトの名無しさん
2007/01/11(木) 19:46:29マウスでクリックした点からマウスを放したところまでの四角形や円を描きたいのですが
(↑Wordみたいに・・・)どのようなプログラムにしたらいいのでしょうか?
0911デフォルトの名無しさん
2007/01/11(木) 20:57:27TCppWebBrowser::DocumentからIHTMLDocument2インタフェース取得すればDOM使って読み書きできる
>>910
OnMouseDownで始点設定
OnMouseUpで終点設定してそれに収まる図形を描画するだけ
0912デフォルトの名無しさん
2007/01/11(木) 20:58:01開発者ガイドの「dbExpress データベースアプリケーションの配布」の所には、
Midaslib.dcuを含めろ的なことが書いてあるようだが、よくわからんな。
dcuってデルファイ版のobjファイルみたいのか。
C++Builderからdcuのリンクってできるんか?
分かる奴教えてやれ。
>>909
COMインターフェイス理解できんと分からんと思うから、初心者には敷居高いと思われ。
>>910
LBUTTONDOWN、LBUTTONUP、MOUSEMOVEメッセージを補足
WM_LBUTTONDOWNとUPはBuilder標準のイベントにないから、BEGIN_MESSAGE_MAPで補足。
onLButtonDownで始点を記録
onLButtonUpで終点としてCanvas->FrameRect(円ならElipse)で描画
途中の状態を表示したかったら、onMouseMoveでCanvasのBrushをXORモードにして、
前回の描画をもう一度書いて消して、新しい位置に描画
0913909
2007/01/12(金) 09:08:23ありがとうございます
IHTMLDocumentを取得してからのサンプルコードは色々見つけたんですが
肝心のTCppWebBrowser::DocumentからIHTMLDocumrntを取得する方法がわかりませn
検索でコード探したり、色々キャストしてみたんですがエラーがでます
そこのところだけでもサンプル教えていただけないでしょうか?
0914902
2007/01/12(金) 09:16:48C++の基本を質問してすみませんでした。
おかげで様で作業を進めることができました。ありがとうございました。
0915デフォルトの名無しさん
2007/01/12(金) 11:06:19void __fastcall TForm1::Button2Click(TObject *Sender)
{
IHTMLDocument2* html = NULL;
www->Document->QueryInterface(IID_IHTMLDocument2, (void**)&html);
IHTMLElement* elem;
html->get_body(&elem);
wchar_t *text = new wchar_t[10000];
if (S_OK == elem->get_innerHTML(&text))
ShowMessage(AnsiString(text));
delete [] text;
elem->Release();
html->Release();
}
0916デフォルトの名無しさん
2007/01/12(金) 11:11:330918デフォルトの名無しさん
2007/01/12(金) 11:56:16ありがとうございます、さっそく試してみます
QueryInterfaceも引数いろいろいれて試してみてたんですが・・・
助かりました
0919デフォルトの名無しさん
2007/01/12(金) 16:13:02あるアプリケーションが実行中ならそのアプリケーションに
マウスの左クリックイベントを送出するというのを実現したいのですが、
実行中アプリ取得の方法と、他のアプリにイベントを送出する方法がわかりません。
どなたかご教授願います。
0920デフォルトの名無しさん
2007/01/13(土) 02:24:56・FindWindow
・SendMessage
何作るのか知らんがnProとかPBには無効ですよ
0921デフォルトの名無しさん
2007/01/19(金) 20:43:09例えば、円を3つ、四角形を5つ描いた後に、一番最初に描いた円を指定してマウスでドラックした分、その円を移動させたいのですが、どのようにしたらいいのかわかりません。
簡単なプログラム付で解説していただけると、なお助かります。
ずうずうしい質問ですが、ご教授、お願いします。
0922デフォルトの名無しさん
2007/01/19(金) 22:08:21くたばれと書いてあるのかと思ってびっくりした。
0923デフォルトの名無しさん
2007/01/19(金) 23:19:00くたばれ
0924デフォルトの名無しさん
2007/01/19(金) 23:36:33丁寧に 頼んだつもりが 赤っ恥
0925デフォルトの名無しさん
2007/01/19(金) 23:43:000926デフォルトの名無しさん
2007/01/20(土) 00:34:18別に悩むようなことじゃなかろう
マウスイベントで処理すればいいだけじゃないか
0927921
2007/01/20(土) 02:49:38申し訳ないのですが、もう少し詳しくお願い致します。
コードとかメソッドなど、何でもいいので。。。
本当に初心者で、お手数おかけします。。。
0928デフォルトの名無しさん
2007/01/20(土) 11:04:14図形を指定するやりかたがわからん?
マウスでドラッグの方法?
移動?
もしかして,設計から教えろとでもいうのか?
0929デフォルトの名無しさん
2007/01/20(土) 11:34:02現在、Comboboxで検索項目を選び、Editで検索語を入力する
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TQuery *theQuery=DataModule2->Query1;
DataModule2->DataSource1->DataSet=theQuery;
AnsiString sqlStmt="SELECT * FROM ファイル名.db WHERE "+kensaku+" LIKE";
AnsiString whereStmt=Edit1->Text;
theQuery->SQL->Text=sqlStmt+"'%"+whereStmt+"%'";
theQuery->Active=true;
}
このようなプログラムで中間一致検索できるようになっています。
さらにここからComboboxとEditを1つずつ増やして複数検索を出来るように
したいのですが、どうすればいいかわかりません。
もし、分かる方がいれば教えてください。
0930921
2007/01/20(土) 11:36:30かなりアバウトな質問をしてしまって、すみませんでした。
図形を指定する方法がわからんのです。。。
よろしくお願い致します。
0931デフォルトの名無しさん
2007/01/20(土) 11:52:28BCBよりSQLの領域じゃないか?
0932デフォルトの名無しさん
2007/01/20(土) 12:25:12どこから持ってきたソースか知らんけど、もし仕事なら、上司なり依頼元に『自分のスキルじゃできません』て
はっきり言うか、こんな掲示板で質問なんかしてないで、もっと基礎からちゃんと勉強した方が良いんじゃないの。
0933デフォルトの名無しさん
2007/01/20(土) 13:36:55From1->Hide();
From2->Show();
が行われ、Unit2.cpp内でN1をクリックすると
Form1->show();
Form2->Close();
ということを行いたいのですが、それぞれのFormの宣言の仕方がわかりません。
Unit1には
#include "Unit1.h"
#include "Unit2.h"
TForm1 *Form1;
TForm1 *Form2;
Unit2には
#include "Unit1.h"
#include "Unit2.h"
TForm2 *Form1;
TForm2 *Form2;
としています。
ポインタの宣言の仕方が悪いと思われるのですが、
問題解決できなくて困っています。
どなたか、お手柔らかに教えていただけないでしょうか。
0934デフォルトの名無しさん
2007/01/20(土) 13:43:38Unit1
#include "Unit1.h"
#include "Unit2.h"
TForm1 *Form1;
Unit2
#include "Unit1.h"
TForm2 *Form2;
------------------
Unit1
void __fastcall TForm1::BitBtnClick(TObject *Sender){
Form1->Hide();
Form2->Show();
}
Unit2
void __fastcall TForm2::N1Click(TObject *Sender){
Form1->Show();
Form2->Close();
}
0935デフォルトの名無しさん
2007/01/20(土) 21:58:14TApplicationでやってるように不可視のフォーム作ってそこから制御した方がいいんじゃないか?
ちょっとメモリ余計に食うけど。
0936デフォルトの名無しさん
2007/01/21(日) 00:35:33モジュールのロード、モジュールのアンロードが延々と表示されるんですが
とめる方法はないのですか?
0937デフォルトの名無しさん
2007/01/21(日) 01:11:24自己レスです
解決しました。ウイルスバスターの迷惑メールツールバーを無効にするで出来ました。
0938デフォルトの名無しさん
2007/01/21(日) 05:58:18DBGridで、指定した列を一番左に表示するにはどうしたらよいでしょうか?
ヘルプを見るとLeftColというのがそれにあたるっと思うんですが、
DBGrid1->LeftCol = i;
とするとコンパイルでエラーになってしまって・・
よろしくお願いいたします。
0939デフォルトの名無しさん
2007/01/21(日) 12:04:50DBGrid右クリック->カラムエディタ->すべての項目追加->カラムをマウスでD&Dして順番を移動
0940938
2007/01/21(日) 20:06:44すいません。説明不足でした。
もともとの順番は変えないで、表示位置だけ左端にもって行きたいのです。
たとえば項目「A,B,C,D,E,F」があった時に、今表示されている項目が「A,B,C」だったとします。
項目の一覧を表示してあるListBoxで「D」をクリックした場合、DBGridの表示を
「D,E,F」という風に「D」から表示したいんです。
さらにListBoxで「B」をクリックすると「B,C,D」と表示することになります。
こういうことは不可能でしょうか?
0941デフォルトの名無しさん
2007/01/23(火) 07:31:25if (SetCurrentDir("\\")) {
if (RemoveDir(E:\\AAAAA\\BBBB\\CCCCC)) {
ListBox1->Items->Add("D削除完了");
} else {
ListBox1->Items->Add("D削除失敗!!");
}
}
CCCCCはフォルダです。
としていますがフォルダの削除に失敗してしまいます。フォルダの中は空です。
どうして消せないのでしょう?
0942デフォルトの名無しさん
2007/01/23(火) 07:44:13if (RemoveDir("E:\\AAAAA\\BBBB\\CCCCC")) {
0943デフォルトの名無しさん
2007/01/23(火) 09:53:580944デフォルトの名無しさん
2007/01/23(火) 14:15:49::SetFileAttributes();
SysUtils::FileSetAttr();
0945933
2007/01/23(火) 15:13:35早速の返信ありがとうございました。
遅くなってすみませんでした。
Unit2のプログラムで
TForm2 *Form2
→宣言の構文エラー
__fastcall TForm2::TForm2(TComponent* Owner)
→型限定子 'TForm2'がクラス名または名前空間名ではない
というエラーが出てしまいました。
中のプログラムが間違っているのでしょうか。
たびたび申し訳ございません。
よろしくお願いします。
>>935
早速の返信ありがとうございます。
遅くなってしまいすみません。
メモリは重たくなっても構わないのですが不可視のフォーム作成法がわかりません。。。
もし、ご面倒でなければ、教えてください。
0946933
2007/01/24(水) 19:51:57自己レスです。
無事、解決しました。
皆々様に感謝です。
0947デフォルトの名無しさん
2007/01/26(金) 16:57:470948デフォルトの名無しさん
2007/01/26(金) 17:10:270949デフォルトの名無しさん
2007/01/26(金) 20:54:250950デフォルトの名無しさん
2007/01/27(土) 02:20:17同じログラムでも仕事で作るのと趣味で作るのとは違うんだな
仕事の方はやっぱりやりたくないよorz
0951デフォルトの名無しさん
2007/01/27(土) 20:49:49ReadString("セクション","キー","");で読み込んでAnsiString型の変数mojiに格納。
文字列の範囲を指定するためif (moji >= "1" && moji <= "100")に入れた時、
moji = ”0”や
moji = "d"はガードできるのですが
moji = "1d"をガードできません。
解る方、どうか教えて下さい。
0952デフォルトの名無しさん
2007/01/27(土) 20:52:40moji == "0"
moji == "d"
moji == "1d"ですた・・・。
0953デフォルトの名無しさん
2007/01/27(土) 21:33:56数字だけなら、一回数字に変換すればらくだが・・・
0954デフォルトの名無しさん
2007/01/27(土) 23:57:25どもです。
その通りで、数字だけ、文字だけならばどうにでもなるのですが・・・。
何故ダメだかはわかるのですが、ガードする方法は思い付けません。
0955デフォルトの名無しさん
2007/01/28(日) 00:18:49その数字の代償で比較するかな。
0956デフォルトの名無しさん
2007/01/28(日) 12:41:02ありがとうございます。strtol調べてみました。
第2引数は変換出来ない文字の格納先ですか。
ifでも使ってここの値に何かが入っていれば飛ばしてやればいいって事でしょうか?
0957デフォルトの名無しさん
2007/01/28(日) 21:34:38整数と判っているのであれば最初からTRegistryIniFile::ReadInteger()で読み込むのが楽だよ。
読み込み失敗時に返す第3引数に0でも指定してやっとけば範囲制限も簡単に解決できるんじゃないかな。
int n = Ini->ReadInteger( "Window", "Left", 0 ); // 整数として評価できない場合は0を返す
if( ( 1 <= n ) && ( n <= 100 ) ){〜
文字列として受け取らざるを得ない場合はAnsiString::ToIntDef()かAnsiString::ToInt()で
intに変換してから判断。(ToInt()は変換できないとき例外を投げる点に注意)
0958デフォルトの名無しさん
2007/01/29(月) 10:55:270959デフォルトの名無しさん
2007/01/29(月) 11:15:16Application->Minimize( );
でアイコン化した時に現在アイコン化されてるかどうかを識別する方法を教えてください
0960デフォルトの名無しさん
2007/01/29(月) 11:24:580961デフォルトの名無しさん
2007/01/29(月) 14:48:10使わない方がいいんですか?
0962デフォルトの名無しさん
2007/01/29(月) 17:07:07Delphi使いは、普通につかってるよ。
0963デフォルトの名無しさん
2007/01/29(月) 21:43:350964デフォルトの名無しさん
2007/01/29(月) 22:39:53C++Builder6を買いました。
初心者にお勧めのサイトを教えてください。m(_ _)m
0965デフォルトの名無しさん
2007/01/30(火) 06:15:46薄い方のマニュアルを、最初から順番にやっていくといいよ。
これが一番わかりやすかった。
0966デフォルトの名無しさん
2007/01/30(火) 11:18:18イベントハンドラにだらだらと実装書くのはやめましょう
0967デフォルトの名無しさん
2007/01/30(火) 19:50:57じゃあどうすれば?
0968デフォルトの名無しさん
2007/01/30(火) 22:10:25必要な情報だけコントロールから取り出して、本処理は
別のルーチンに整理するのが吉。
つーか最近、保守契約が切れた外注のプログラムをデバッグする機会が
あったんだが、ソースをのぞいたら不可視のコントロールを変数代わりに
使ってて死ぬほどウザかった。
リストビューをコレクション代わりに使ってたり。
職業プログラマってこんなもんなのか?
0969デフォルトの名無しさん
2007/01/30(火) 22:13:25ほんとにコード書ける奴は一握り
0970デフォルトの名無しさん
2007/01/31(水) 00:23:39そんな人ばっかりではないけど。
普通は、しないんだから。
0971デフォルトの名無しさん
2007/01/31(水) 00:34:21ビューとモデル、果てはデータまでいっしょくたに書けちゃうしなあ
0972デフォルトの名無しさん
2007/01/31(水) 00:36:25分離するためのデータモジュールとTAction〜コンポーネント
0973デフォルトの名無しさん
2007/01/31(水) 05:34:040974デフォルトの名無しさん
2007/01/31(水) 06:18:330975974
2007/01/31(水) 06:19:160976デフォルトの名無しさん
2007/01/31(水) 07:03:39ま、似たようなもんです。
Clipboard(void) で TClipboardオブジェクトを取得して操作、が
普通だよね。
0977デフォルトの名無しさん
2007/01/31(水) 10:54:17ですが、実行時にブレークできません。
ブレークポイント設定はしているのですが、何故か赤丸の中に
バツがあるアイコンが出ます。
ヘルプではコメント,空白行,不正な宣言位置への設定だと書か
れていますが、そのような行への設定ではないのですが。。
ブレークポイント設定できない理由をご存知の方、いらっしゃいますか?
0978デフォルトの名無しさん
2007/01/31(水) 11:17:17バージョンくらいかけぼけが
ぷろじぇくとおぷしょんこんぱいら
0979デフォルトの名無しさん
2007/01/31(水) 11:41:41プロジェクト→オプションを見ましたが、バージョン情報
載ってないです。
ヘルプ→バージョン情報は以下でした。
Borland(R) C++Builder(R) for Microsoft(R) WindowsTM
Version 10.0.2288.42451 Update 2
Copyright (C) 2005 BorlandR Software Corporation.
All Rights Reserved.
0980デフォルトの名無しさん
2007/01/31(水) 11:53:31そのソース内、どこでもブレークきかない?
0981デフォルトの名無しさん
2007/01/31(水) 11:55:590982デフォルトの名無しさん
2007/01/31(水) 11:58:51はい、どこでもダメです。C++,Cどちらにはってもブレークしてくれません。
>>981
ビルド設定はデバッグ・ビルドになっています。
0983デフォルトの名無しさん
2007/01/31(水) 23:34:20FindFirst,FindNextで、数えていくのがよいのでしょうか。
0984デフォルトの名無しさん
2007/01/31(水) 23:35:50FileListBox 使うと楽だったりする。
0985デフォルトの名無しさん
2007/02/01(木) 02:47:44D言語のリファレンス訳書いている人んところですね。
0986デフォルトの名無しさん
2007/02/01(木) 02:48:16誤爆 orz
0987デフォルトの名無しさん
2007/02/01(木) 06:14:26FileListBox使ったこと無いですが勉強します。
レスありがとうございました。
0988デフォルトの名無しさん
2007/02/01(木) 10:36:51>>968
てか個数数えるだけならFindNextのループでカウントとるだけな気が‥‥
const AnsiString dir = "C:\";
TSerchRec find_data;
std::vector<TSerchRec> files;
if(FindFirst(dir, faAnyFile, &find_data) == 0)
{
do
{
files.push_back(find_data);
} while(FindNext(&find_data) == 0)
}
ShowMessage(AnsiString().sprintf("%s内のディレクトリを含むファイルの数は%d個", dir, files.size()));
ファイル名とか取る必要ないならvector使わずにカウンタでインクリメントしてけばいいだけ
0989デフォルトの名無しさん
2007/02/02(金) 05:24:18「Linuxとのクロスプラットフォーム開発を実現する、
CLX(Component Library for Cross platform)のWindows版も収録。」
っていうのは、どういうことなんでしょうか?
・CLXを使って書いたコードを、builder6でコンパイルしてできた実行ファイル
・CLXのライブラリを使えるようにしたlinuxのパソコンに
コードを持ってきて、それをコンパイルした実行ファイル
が同じ動きするということでしょうか?
linuxのビジュアル開発ができるんだったらすごいです。
0990デフォルトの名無しさん
2007/02/02(金) 09:39:41後者。
Kylix(Linux用Delphi/BCB)でビルドすればLinux上で動作可能。
まあ、現実にはPCの性能が上がったこともあってJava使った方gゲフンゲフン
0991デフォルトの名無しさん
2007/02/02(金) 12:12:40レスありがとうございます。
Kylix Open Edition2ベクターから、ゲットしました。
ユーザー登録しないといけないみたいですが、
試用許諾コードってもう入手できないでしょうか。
インストール解説してるページ見つけて、
”このページからアンケートなどに答えて取得して”ということで飛ぶと、
HP見てももうサポートしてないってページが表示されます。
ふんむー。
0992デフォルトの名無しさん
2007/02/02(金) 13:28:40それ以前に、Borland製品の場合、規約で中古ではいかなるライセンスも認めていないから、
商用はもちろん、フリーウェア配布にも使えないよそれ。
0993デフォルトの名無しさん
2007/02/02(金) 14:05:330994デフォルトの名無しさん
2007/02/02(金) 14:12:10コンポーネントのインストールでエラーでます。
再インストールしてもこのエラー消えませんが、どうしたら良いですか?
0995デフォルトの名無しさん
2007/02/02(金) 15:16:09レス数が950を超えています。1000を超えると書き込みができなくなります。