1 :
デフォルトの名無しさん :
2005/05/19(木) 08:56:18 C++Builderに関する質問・回答や議論等を行う相談室スレッド。
過去スレ・関連サイトは
>>2-6 あたり。
2 :
デフォルトの名無しさん :2005/05/19(木) 08:59:01
3 :
デフォルトの名無しさん :2005/05/19(木) 08:59:26
4 :
デフォルトの名無しさん :2005/05/19(木) 09:00:59
5 :
デフォルトの名無しさん :2005/05/19(木) 09:01:29
フォルダ内が変更されたかどうかを監視するにはどうしたらよいのでしょうか?
7 :
デフォルトの名無しさん :2005/05/19(木) 09:46:49
8 :
デフォルトの名無しさん :2005/05/19(木) 11:25:08
BCB6バンドルのQuickReportバージョンうp方法教えて下さいでつ。
9 :
デフォルトの名無しさん :2005/05/19(木) 11:45:38
//#include <Clipbrd.hpp> 以下の例では,イメージ,ボタン,および Shape コンポーネントを使用しています。ユーザ ーがボタンをクリックすると,フォームのイメージが FormImage 変数を介してクリップボー ドに格納され,フォームのイメージはイメージコンポーネントにコピーされます。 void __fastcall TForm1::Button1Click(TObject *Sender) { Graphics::TBitmap *FormImage = GetFormImage(); try { Clipboard()->Assign(FormImage); Image1->Picture->Assign(Clipboard()); } __finally { delete FormImage; } } //------------------------------------------------------------------ void __fastcall TForm1::FormCreate(TObject *Sender) { Shape1->Shape = stEllipse; Shape1->Brush->Color = clLime; Image1->Stretch = true; }
10 :
デフォルトの名無しさん :2005/05/20(金) 07:04:34
質問させてください、 今VC6を使ってて、VC2005が出たら買い替えようと思ってたのですが BCBに興味を持ち、色々調べていたところです。 時期Delphi(2006?)に含まれるBCBで、64bitネイティブのコードも書けると 前スレにありましたが、発売時期とかの情報はまだ全く無い状態でしょうか? あと、BCB6のPersonalとProfessionalの比較を見たのですが 個人で使うとしてもProfessionalの方が開発は楽でしょうか? あとDirectXSDKをBCBで使ってる人がいれば、使う際に何か 注意点などあれば教えてもらえませんでしょうか。
>発売時期とかの情報はまだ全く無い状態でしょうか?
そういうリーク情報が多いのは下記サイト。
ttp://www.drbob42.com/cbuilder/index.htm >個人で使うとしてもProfessionalの方が開発は楽でしょうか?
PersonalはVCLのソースコードが付いてない。
VCLは滅多に読まないけど、読むとやりたいことが簡単にできるというか、
内部メソッドや内部変数が見つかる。
13 :
10 :2005/05/20(金) 12:39:41
>>11 >そういうリーク情報が多いのは下記サイト。
>
ttp://www.drbob42.com/cbuilder/index.htm ありがとうございます、チェックしてみます。
>PersonalはVCLのソースコードが付いてない。
なるほど〜・・・デバッグの機能にも制限があるようだし
Professionalの方がいいですね。
>>12 >DirectXSDKにボーランド向けのlibが付かなくなってしまったので
なるほど、わかりました。
>DirectXはVCの方が楽かも
微妙に迷うけど、でもBCBに惹かれるんですよね・・・
VCはゴテゴテと余計な物が付いていく(ように僕には見えるw)し、
C++/CLIも個人で書く分にはそんなに魅力感じないし・・・
あともうひとつ質問させてください、
BCBの環境でVCのコンパイラを使うといったことも簡単に出来るでしょうか?
gcc等が使えるというのは読んだ記憶があるのですが、VCのコンパイラでも
問題無くビルドできるのでしょうか。
>gcc等が使えるというのは読んだ記憶があるのですが BCBとBCBXを間違えてまつ。 BCBはVCLでWindowsをターゲット(一時期Linux)、 BCBXはクロスプラットフォーム、組み込みをターゲット。
15 :
10 :2005/05/20(金) 13:22:55
>>14 >BCBとBCBXを間違えてまつ。
あ、なるほど・・・納得しましたorz
色々と答えていただいてどうもありがとうございました。
QuickReportで用紙トレイを選択する方法教えて下さいでつ。
テキスト文書からwebアドレスを抜き出す方法を教えてください
18 :
デフォルトの名無しさん :2005/05/21(土) 09:33:18
>>18 この書き込み何度か見るが、書き込むやつは何が言いたいのか?
高いと言いたいのか安いと言いたいのか?
>>19 パナは、バッテリーの持ちが悪いからね…
新機種は、持ちが良いらしい(バッテリーの種類も変わる)ので、そっちに期待
23 :
デフォルトの名無しさん :2005/05/21(土) 15:07:36
void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString text = "123,45!6,789"; TStringList* ts1 = new TStringList(); TStringList* ts2 = new TStringList(); ts1->CommaText = text; ts2->Delimiter = '!'; ts2->DelimitedText = text; StringGrid1->Rows[0] = ts1; StringGrid1->Rows[1] = ts2; delete ts1; delete ts2; }
24 :
デフォルトの名無しさん :2005/05/21(土) 15:47:26
void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString text = "123,45!6,789"; TStringList* ts1 = new TStringList(); TStringList* ts2 = new TStringList(); ts1->CommaText = text; ts2->Delimiter = '!'; ts2->DelimitedText = text; Memo1->Lines->Strings[0] = ts1->Strings[0]; Memo1->Lines->Strings[1] = ts2->Strings[0]; delete ts1; delete ts2; }
25 :
デフォルトの名無しさん :2005/05/21(土) 19:06:00
VCってHELPに書いていないこと大杉 スクロール範囲shortにしないと バーつかめないってどうよ OnVScrollとONHScrollで捕まえて GetScrollInfoして何とかなったけど
26 :
デフォルトの名無しさん :2005/05/21(土) 20:51:31
ファイル選択のTOpenDialogを使っていると 表示メニューの選択が保存されなく、詳細(D)を選択しても次に開くと、一覧(L)に 戻ってしまうのが使いにくくてどうにかしたくて調べていたら、過去ログに C Builder相談室 Part3 972で [Delphi:46188] Re: OpenDialog の状態設定 を発見したのまでは良かったのですが、 なんとDelphiメーリングリストが何故か過去ログ非公開になってました(涙。 どなたか、実現方法を教えてください。
>27 Veryありがとう。 こんなとこあったのですね。
C++Builder内でMMXやSSXを使う方法を教えてください
MMX はそのまま書けばアセンブルしてくれるぞよ。 asm{ movq mm0,mm2 } みたいな感じ。 SSE は使ったことないからしらないけども。
31 :
デフォルトの名無しさん :2005/05/22(日) 05:04:47
以前にTEditのコピーを出来なくする方法の質問がありましたが、次のような方法で 実現してみました。 __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { // サブクラスを登録する OldEditWndProc = Edit1->WindowProc; Edit1->WindowProc = EditWndProc; } void __fastcall TForm1::EditWndProc(TMessage& Msg) { // マウスの右ボタンを無効にする if (Msg.Msg == WM_RBUTTONDOWN); // キーが押されたらクリップボードをクリアする else if (Msg.Msg == WM_KEYDOWN) Clipboard()->Clear(); else OldEditWndProc(Msg); } もしくはOnKeyDownでCTRL+Cが押された時だけクリップボードを クリアするようにしても良いと思います。
SSEもSSE2も3DNowもそのまま書けるにょ
33 :
デフォルトの名無しさん :2005/05/22(日) 05:07:38
エラー出ないよ。もしかしたらServicePack違いかもしれないから、このスレを よく読んでSP3相当にしたらどう? void __fastcall TForm1::Button1Click(TObject *Sender) { Graphics::TBitmap* tb = new Graphics::TBitmap; ImageList1->GetBitmap(0, tb); Image1->Picture->Bitmap = tb; delete tb; }
で、質問するということは、そのまま書けなかったのだろうから、古いBCBなのかな? BCB3のときはasmブロック内で「.MMX」て書かないと駄目だったな。
>>31 , 33
どっちもコピペだな…
新スレになっても消えてくんないんだなこの人。
36 :
デフォルトの名無しさん :2005/05/22(日) 05:42:41
Clipboard()->Clear();
実行ファイルに大きいアイコンと小さいアイコンを含めるにはどうしたらよいのでしょうか?
>>37 アイコン作るソフトで大きいのと小さいのを含んだアイコンファイルを作るんだにょ。
アイコンファイル(.ico)は複数のサイズのアイコンを持てるから。
Windowsで出来るだけ精度のよいタイマーはどれでしょうか?
起動時のスプラッシュウィンドウを表示しないようにするには?
>>40 TSprashForm::Close Release
42 :
40 :2005/05/22(日) 07:45:16
>>41 そんなモンねーぞ。
IDEの事なら bcb /ns で起動しろ。
bcb /? で説明が出てくる。
Windowsのエクスプローラではフォルダが別のソフトで削除されたときに、ツリービューが自動的に更新されますが、 同じようなことを独自のソフトで実現するにはどのようにしたらよいのでしょうか? フォルダやファイルの作成や削除に反応するイベントか何かあるのでしょうか?
46 :
本田 :2005/05/22(日) 14:04:07
最小化イベントに反応する方法を教えてください
ListViewでColumnごとにReadOnlyを設定することは出来ないのでしょうか?
C++BuilderXの話題はここでよいのでしょうか?
51 :
& ◆FC4h7F/wV6 :2005/05/22(日) 15:59:26
52 :
本田 :2005/05/22(日) 17:56:32
53 :
デフォルトの名無しさん :2005/05/22(日) 22:49:50
Personalを買ったんですけど、Professionalへのバージョンアップの案内って すぐに来るものですか? Professionalが安く買えればいいなあ、と思ってるのですが。。。
グレードアップは普通は新バージョンが出たときだけだよ。 ただBCBはVer.6以降バージョンアップが止まってるから 年に一回くらいグレードアップキャンペーンをしてたけど。 それも、次バージョンでDelphiと統合って正式にアナウンスされたから もうしないんじゃないかな?
ListViewのSubItemの一部を非表示にすることは出来ますか? あるColmunをデータを保持しつつ表示からは消したいのですが。
56 :
デフォルトの名無しさん :2005/05/23(月) 07:24:34
57 :
デフォルトの名無しさん :2005/05/23(月) 08:52:19
現在開いているWebページのタイトルをMemoに表示させたいんですけど どうすればいいんですか?
QuickReportのプレビュー画面の上のボタン消す方法教えて下さいでつ。
59 :
デフォルトの名無しさん :2005/05/23(月) 11:20:16
C++BuilderからGeckoエンジンを使う方法
http://homepage2.nifty.com/spw/tips/Gecko.html __fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
MozillaBrowser1->GoHome();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ToolButton3Click(TObject *Sender)
{
// 「ホーム」ボタンが押された場合の処理
MozillaBrowser1->GoHome();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ToolButton2Click(TObject *Sender)
{
// 「中止」ボタンが押された場合の処理
MozillaBrowser1->Stop();
>>59 ユーザーにプログラムを配布するときはどうすればいいの?
クラスが登録されていませんと出て、実行できないのですが・・・。
IdleイベントはCPUが2つあった場合は、片方がアイドル状態になったときに発生するのですか?
しないよ。1つでも2つでもCPUの状態とは関係ない。
BCB6ではSelectDirectory()関数は使えますか? 未定義のシンボルと出てコンパイルできませんが・・・
>>63 #include <FileCtrl.hpp>
66 :
デフォルトの名無しさん :2005/05/24(火) 05:31:19
67 :
デフォルトの名無しさん :2005/05/24(火) 05:49:29
68 :
デフォルトの名無しさん :2005/05/24(火) 08:35:21
>>67 これwinsock使ってるとコンパイルできなくね?
70 :
デフォルトの名無しさん :2005/05/24(火) 11:50:42
VarAsTypeでint64型にキャストしたいのですが、 ヘルプ見てもどれがint64型に該当するのかわかりません。 引数になにを渡したらいいのでしょうか? もしかして変換できないのでしょうか?
varInt64てやつだね
72 :
デフォルトの名無しさん :2005/05/24(火) 16:11:45
WIN XP SP2、CB6の環境です。 InternetパレットのUdpSocketを使用して、サーバー側と クライアント側のプログラムを作成しましたが サーバー側のソケットをオープンすると、 コード10049(Winsock Error Code)が発生します。 サーバー側プログラムのUdpSocketのプロパティは LocalHost:192.168.0.10 LocalPort:10000 クライアント側プログラムのUdpSocketのプロパティは RemoteHost:192.168.0.10 RemotoPort:10000 と設定してあります。 コンポーネントがバグってるのでしょうか?
73 :
デフォルトの名無しさん :2005/05/24(火) 16:12:20
BCB3とBCB6って同居できますか?
75 :
デフォルトの名無しさん :2005/05/24(火) 16:18:55
>>74 0.0.0.0だったら、 INADDR_ANYみたいなかんじですか?
76 :
デフォルトの名無しさん :2005/05/24(火) 16:28:42
ホストバイトオーダーに変換しないとだめってことですね・・・
10049 WSAEADDRNOTAVAIL: 無効なネットワークアドレス
79 :
デフォルトの名無しさん :2005/05/24(火) 18:13:32
NMUDPのアクティブとノンアクティブの切り替えは どうやればいいでしょうか?
80 :
デフォルトの名無しさん :2005/05/24(火) 18:22:32
81 :
デフォルトの名無しさん :2005/05/25(水) 09:27:31
QuickRep1->Printer->PrintSetup(); で用紙トレイって反映されます?
製品版QuickReport買えば、ソース付いてきますか? 幾らくらいなんだろう。
84 :
デフォルトの名無しさん :2005/05/25(水) 11:18:23
時刻の足し算と引き算 2003.03.19 日付の各要素をインクリメントするメソッド群です。マイナス値を指定すればデクリメントします。 当然"1"以外の数値も指定出来ます。 usesにDateUtilsが必要です。他にもいろいろあります。 IncMilliSecond IncMinute IncMonth ■指定の日付時刻から1分引く var aDateTime : TDateTime; begin aDateTime := StrToDateTime('2003/03/10 01:01:01'); Edit1.Text := DateTimeToStr(IncMinute(aDateTime, -1)); end;
mp3の再生方法を教えてください
86 :
デフォルトの名無しさん :2005/05/25(水) 12:49:35
87 :
デフォルトの名無しさん :2005/05/25(水) 12:50:02
88 :
デフォルトの名無しさん :2005/05/25(水) 15:43:49
C++Builderで作ったソフトをEnumWindowsでハンドルを取得してもそのハンドルでウィンドウの操作ができないのですが これって見えない親ウィンドウがいるからですかね? 普通にEnumWindowsでForm1のハンドルを取得するにはどうしたらいいでしょうか?
>>88 いやEnumWindowsで取得できるから、何か間違ってる。
>>88 EnumWindowsなら普通にハンドル取れるだろ。
その操作できないハンドル返すウィンドウはウィンドウクラス名がTApplicationの奴じゃないのか?
VCLアプリはタスクバーに表示されてるウィンドウ(TApplicationが生成した非表示ウィンドウ)とメインウィンドウ(TForm派生クラスが生成)は別のウィンドウ。
91 :
デフォルトの名無しさん :2005/05/25(水) 15:56:58
>>89-90 あ、いやいや、えと僕の言い方が悪かったと言うか発見しました。
えとハンドルは取れてちゃんと操作もできるのですが、TForm1クラスだとアイコンがとれないですね
アイコンは
>>90 さんが言ったようにTApplicationクラスがもってるっぽいので
TForm1クラスからアイコン取る方法を教えてください
それにこれ子ウィンドウになってるんですね
92 :
デフォルトの名無しさん :2005/05/25(水) 16:04:56
ああああ〜 GetClassLongでは無理だったけどSendMessageで取れますた。
93 :
デフォルトの名無しさん :2005/05/25(水) 16:12:32
えと、何がしたかったかっていうと、現在起動されているタスクを表示しようとしていまして それでタイトルやアイコンが無い、又は親ウィンドウ以外は表示しないようにしていたのですが そうすると、C++Builderで作ったソフトがTApplicationクラス以外は表示されなくなりまして GetWindowLong( hWnd, GWL_HWNDPARENT )←これではじく場合にTForm1(例えば)はどうやってスルーさせればいいですか?
94 :
デフォルトの名無しさん :2005/05/25(水) 17:07:02
誰かRASPを知っている人いませんか??
タスクの列挙ならEnumProcessやProcess32Firstでやらないか?普通。
97 :
デフォルトの名無しさん :2005/05/25(水) 17:47:39
馬鹿っ!!よく読んで!!
親のクラス名がTApplicationかどうか調べればいいんでない
99 :
デフォルトの名無しさん :2005/05/25(水) 18:44:55
100 :
デフォルトの名無しさん :2005/05/25(水) 18:55:43
>>98 それだっ!!
つかそれどうやってやるんですかね?
BCB6#4でChartのヘルプを出そうとするとエラーで出てこないってガイシュツ?
103 :
デフォルトの名無しさん :2005/05/25(水) 21:17:00
104 :
デフォルトの名無しさん :2005/05/25(水) 21:51:24
WEBページのタイトルを Edit1に表示することって できますか?
105 :
本田& ◆xOS3wf.pJg :2005/05/25(水) 23:26:37
106 :
本田 :2005/05/25(水) 23:28:17
107 :
& ◆FC4h7F/wV6 :2005/05/26(木) 00:08:09
>>93 >それでタイトルやアイコンが無い、又は親ウィンドウ以外は表示しないようにしていたのですが
もし、キャプションを表示したくなければ。
void __fastcall TForm1::CreateParams(TCreateParams &Params)
{
TForm::CreateParams(Params);
Params.Style &= ~WS_CAPTION;
}
108 :
本田 :2005/05/26(木) 00:09:22
君はなんかズレてるよね
110 :
104 :2005/05/26(木) 06:37:15
間違えました Labelに表示する方法 教えてください
111 :
デフォルトの名無しさん :2005/05/26(木) 08:07:17
procedure AlphaDraw(X, Y: Integer; {描画先座標} Bmp1, Bmp2: TBitmap; {ビットマップ} Alpha: Single; {透過度} TransParentColor: TColor); {背景色(完全透過します)} *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* procedure AlphaDraw(X, Y: Integer; Bmp1, Bmp2: TBitmap; Alpha: Single; TransParentColor: TColor); var i, j, k, v, z : Integer; Rect1, Rect2, Rect3 : TRect; Pnt1, Pnt2 : PRGBArray; Alp : Single; begin //半透明コピー開始
112 :
デフォルトの名無しさん :2005/05/26(木) 08:07:39
//コピー領域をキャッチ Rect1 := Rect(0, 0, Bmp2.Width, Bmp2.Height); OffsetRect(Rect1, X, Y); Rect2 := Rect(0, 0, Bmp1.Width, Bmp1.Height); IntersectRect(Rect3, Rect1, Rect2); if(Rect3.Left < Rect3.Right) and (Rect3.Top < Rect3.Bottom) then begin //先に透過度の計算をしてしまう Alp := 1.0 - Alpha; //コピーする画像の描画開始座標を求める k := Rect3.Left -X; z := Rect3.Top -Y; for j := Rect3.Top to Rect3.Bottom -1 do begin Pnt1 := Bmp1.ScanLine[j]; Pnt2 := Bmp2.ScanLine[z]; v := k; for i := Rect3.Left to Rect3.Right -1 do begin
113 :
デフォルトの名無しさん :2005/05/26(木) 08:07:48
//背景色じゃないなら書き換えてしまいます if DWORD(TransParentColor) <> DWORD(Pnt2[v]) then begin Pnt1[i].R := Round((Pnt1[i].R*Alp)+(Pnt2[v].R*Alpha)); Pnt1[i].G := Round((Pnt1[i].G*Alp)+(Pnt2[v].G*Alpha)); Pnt1[i].B := Round((Pnt1[i].B*Alp)+(Pnt2[v].B*Alpha)); end; inc(v); end; inc(z); end; end; end; Alpha が透過度になります(1.0 で100%コピー、0.5 で50%コピー)。
C++Builder6 pro にて英語化でしつもんです。 VCLが表示するリソース(例外のメッセージや、「はい」ボタンのキャプションなど) を英語に書き換えてしまいたいのですが、可能でしょうか? C++Builder5には英語用のUSVCLが付属していてそれを使用すればよさそうなのですが、 6にはついていませんでした。 そこで、自分で英語に書き換えてしまおうとしましたが いったいどうやればよいのかがわかりません。 Const.pasとSysConst.pasの日本語を英訳して... そこからどうしたらよいのでしょうか? なるべくEXE一本でゆきたいので、 リソースDLLや実行時パッケージは使用しない方向で考えています。 英語版を購入するしかないのでしょうか?
115 :
デフォルトの名無しさん :2005/05/26(木) 08:17:33
http://thunder.prohosting.com/~cbdn/html.htm RAS
??????????How can I copy phonebook entries?
??????????How can I create a new phonebook entry?
??????????How can I delete phonebook entries?
??????????How can I detect active connections?
??????????How can I establish an Internet connection?
??????????How can I hang up active connections?
??????????How can I list phonebook entries?
>>104 void __fastcall TForm1::CppWebBrowser1DocumentComplete(TObject *Sender,
LPDISPATCH pDisp, Variant *URL)
{
IHTMLDocument2 *doc;
wchar_t *title;
CppWebBrowser1->Document->QueryInterface(IID_IHTMLDocument2, (void**)&doc);
doc->get_title(&title);
Caption = title;
}
WebDAVに接続して、ファイルをアップロードする方法を教えてください
118 :
デフォルトの名無しさん :2005/05/26(木) 14:02:39
POP3コンポーネントで、直接サーバにコマンドを送る方法を教えてください
119 :
デフォルトの名無しさん :2005/05/26(木) 18:49:27
>>114 Delphiの仕様では、プロジェクトのフォルダに*.dcu置いておけばライブラリより優先して使われる。
C++Builderだとどうなるかは知らん。すまん。
BCBだとConsts.pas/SysConst.pasの編集したやつをコンパイルして.objを作っておいて、 それを英語化したいプロジェクトに追加すると出来るね。
メニューをプログラムの中で動的に作成する方法を教えてください
リソースにビットマップファイルなどを含めるにはどうしたらよいのでしょうか?
124 :
デフォルトの名無しさん :2005/05/27(金) 07:15:05
>>116 ありがとうございます
しかし次のようなエラーがでました
[C++ Error] Unit1.cpp(143): E2451 Undefined symbol 'IHTMLDocument2'
[C++ Error] Unit1.cpp(143): E2451 Undefined symbol 'doc'
[C++ Error] Unit1.cpp(145): E2451 Undefined symbol 'IID_IHTMLDocument2'
[C++ Error] Unit1.cpp(145): E2285 Could not find a match for 'IUnknown::QueryInterface(undefined,undefined)'
いったい、これは・・・・
お願いします
125 :
デフォルトの名無しさん :2005/05/27(金) 08:26:26
126 :
デフォルトの名無しさん :2005/05/27(金) 09:58:47
TImageでなめらかに画像を拡大する方法はありませんか?
129 :
デフォルトの名無しさん :2005/05/27(金) 12:16:02
TListViewでチェックボックスを使用時にチェックにだけ反応するイベントはどうしたら取得できますか?
130 :
デフォルトの名無しさん :2005/05/27(金) 12:20:55
FindWindowやFindWindowEXで他のアプリケーションの ToolBarのハンドルを取得しボタンを追加したいのですが 追加される側のアプリケーションが終了してしまいます。 TBBUTTON button; (略) toolhwnd= FindWindowEx(hwnd,NULL, "ToolbarWindow32",NULL); SendMessage(toolhwnd,TB_INSERTBUTTON , 0, (LPARAM)&button)); 他のアプリケーションのオブジェクトを操作することは出来ないのでしょうか?
132 :
デフォルトの名無しさん :2005/05/27(金) 14:45:21
>>131 &buttonを渡しても、他のアプリにとっては無効なアドレスなので。
グローバルフックすれば出来るよ。
>>132 またコピペ君か。2chに人のメアド張るのはいかがなものか
134 :
デフォルトの名無しさん :2005/05/27(金) 15:18:54
sndPlaySoundを使うとコンパイル時に未定義ってエラーでるんですけど、これなにをインクルードすればいいですか
136 :
デフォルトの名無しさん :2005/05/27(金) 16:06:14
毎度おなじみ
138 :
デフォルトの名無しさん :2005/05/27(金) 16:13:36
WinXPでのsndPlaySound不具合 WinXPでのsndPlaySound不具合. [Visual Basic Q & A 掲示板] [過去ログの一覧] ... WinXPでsndPlaySoundを使ったアプリケーションを使ってるのですが、 音が鳴りません。 同アプリをMeや98SE上で使うと普通に鳴ります。 リソースファイルからメモリに読み
139 :
デフォルトの名無しさん :2005/05/27(金) 16:27:06
141 :
デフォルトの名無しさん :2005/05/27(金) 17:18:16
ずいぶん前に聞いた話なので、本当かはわかりませんけど、 Home Edition はそんな話しは聞きませんが、Profesional Editionには、 16bitAPIを削除して、安定性を得てるという話を聞いたことがあります。 sndPlaySoundは16bitなので、使えないかもしれません。 PlaySoundとかなら確実になると思います。
142 :
デフォルトの名無しさん :2005/05/27(金) 18:10:16
TStringGridの非スクロール領域をボタンにする方法を教えてくださいな
143 :
130 :2005/05/27(金) 21:04:35
>>135 検索したら
Search string 'grep' not found
とでましたが・・どうすればいいのですか?
ギガワロスラッシュ
勘弁してくれ〜。仕事でDelphiで書かれたプログラムのいくつかを BCBに移植していじらなければならなくなったんだが、頭おかしくなりそう。 バイナリのリンクなら簡単簡単なのに。
146 :
デフォルトの名無しさん :2005/05/27(金) 22:22:02
国際化対応尾アプリケーションを作るためにリソースDLLウィザードで 英語と日本語を選択し、ウィザードを最後まですすめ、完了したのですが、 ここから、どうやって英語版のフォームを表示するのかがわかりません。 どなたか教えていただけないでしょうか? それから、英語版Windowsに作成したプログラムを持って行けば、 自動的に英語版のフォームが選択されるのでしょうか? それとも手動で選択してやる必要があるのでしょうか?
148 :
age :2005/05/28(土) 10:20:02
>>147 エディタに.DFMファイルが表示されるだけなのですよね?
C++Builder6にはローカライズ対象のフォームを表示できない、という不具合が
あったように思います。
149 :
デフォルトの名無しさん :2005/05/28(土) 10:45:22
150 :
デフォルトの名無しさん :2005/05/28(土) 18:01:27
151 :
デフォルトの名無しさん :2005/05/28(土) 19:22:47
ビルダーをインストールしてないマシンでは 実行ファイルが動かなかったのですが、 どうすればいいのですか?
153 :
デフォルトの名無しさん :2005/05/28(土) 21:11:06
154 :
デフォルトの名無しさん :2005/05/28(土) 22:13:35
BCB5です。 ボタンをクリックすると、TImageが動的に作られ、アイコンが貼り付けられるというプログラムを作っているのですが、 ボタンのOnClickに以下のソースを入れてもアイコンが表示されません。 何か忘れてる気がするんですが教えてもらえますか? TImage *Image=new TImage(this); ExtractIconEx(Application->ExeName.c_str(),0,&hIcon,NULL,1); Icon->Handle = hIcon; Image->Canvas->Brush->Color = Color; Image->Canvas->FillRect(Rect(0,0,Image->Width+1,Image->Height+1)); Image->Canvas->Draw(0,0,Icon);
155 :
154 :2005/05/28(土) 23:03:08
すんません。 自己解決しました。 Parent書き忘れてました。
BCB6のパーソナル版を購入してプログラムの勉強をしています。 アイコンをタスクトレイに表示するところまではできるようになりました。 そこで、タスクトレイのアイコンを右クリックしたら立ち上がっている ウィンドウをすべて最小化するようにしたいのですが、やり方がさっぱり わかりません。何かよい方法、もしくはgoogleなどで検索する キーワードを教えて頂きたいです。
>>156 BCB6 タスクトレイ ウィンドウ 最小化
>>156 EnumWindows
WM_SYSCOMMAND
159 :
デフォルトの名無しさん :2005/05/29(日) 10:04:29
HICONhIcon; TIcon*Icon; Icon = new TIcon(); ExtractIconEx(Application->ExeName.c_str(),0,&hIcon,NULL,1); Icon->Handle = hIcon; Image1->Canvas->Brush->Color = Color; Image1->Canvas->FillRect(Rect(0,0,Image1->Width+1,Image1->Height+1)); Image1->Canvas->Draw(0,0,Icon); Icon->ReleaseHandle(); DestroyIcon(hIcon); delete Icon;
160 :
デフォルトの名無しさん :2005/05/29(日) 10:06:46
HICON hIcon; TIcon*Icon; Icon = new TIcon(); ExtractIconEx(Application->ExeName.c_str(),0,&hIcon,NULL,1); Icon->Handle = hIcon; Image1->Canvas->Brush->Color = Color; Image1->Canvas->FillRect(Rect(0,0,Image1->Width+1,Image1->Height+1)); Image1->Canvas->Draw(0,0,Icon); Icon->ReleaseHandle(); DestroyIcon(hIcon); delete Icon;
161 :
デフォルトの名無しさん :2005/05/29(日) 10:55:33
162 :
デフォルトの名無しさん :2005/05/29(日) 10:58:08
Image1に立体風の文字を書きたいのですが、↓としても白で書いた文字が消されてしまいます。 TextFlags=0;をいれてみたりもしたのですが、だめでした。 背景部分は透過されるようにするにはどうしたらいいですか? Image1->Canvas->Font->Color=clWhite; Image1->Canvas->TextOut(2,38,Edit1->Text); Image1->Canvas->Font->Color=clBlack; Image1->Canvas->TextOut(0,36,Edit1->Text);
国際化対応のアプリの作り方が、ヘルプを読んだのですがわかりませんでした。 英語のテキストはどこに書けばよいのでしょうか?
164 :
デフォルトの名無しさん :2005/05/29(日) 12:31:42
http://www.borland.co.jp/tips/cbuilder/cb012/ 文字列の出力では、通常文字列領域を現在のバックグラウンドカラーで塗り つぶします。 バックグラウンドカラーは、TCanvas の Brush プロパティを用い て設定します。
Canvas->Brush->Color = clHighlight;
また、背景を透過にしたい場合には以下のように記述します。
Canvas->Brush->Style = bsClear;
165 :
デフォルトの名無しさん :2005/05/29(日) 12:33:17
Image1->Canvas->Brush->Style = bsClear;
166 :
デフォルトの名無しさん :2005/05/29(日) 12:40:39
Delphi用にはGDI+のコンポーネントがいろいろと紹介されているのですが、 BCB6でも使えるGDI+コンポーネントで有名どころはどこかにないでしょうか?
167 :
162 :2005/05/29(日) 12:45:40
C++Builderでフックのやり方を教えてください。 解説してあるページへのリンクでもいです。
170 :
デフォルトの名無しさん :2005/05/29(日) 17:57:28
一, HINSTANCE g_hinstDll = NULL; HHOOK g_hhook = NULL; HWND g_hwndPost = NULL; UINT g_uMsgNotify = WM_USER; HOOKPROC KeyboardHook_HookProc ( int nCode, WPARAM wParam, LPARAM lParam) { LRESULT lResult = CallNextHookEx(g_hhook, nCode, wParam, lParam); if (nCode == HC_ACTION) { PostMessage(g_hwndPost, g_uMsgNotify, wParam, lParam); } return((HOOKPROC)lResult); }
171 :
デフォルトの名無しさん :2005/05/29(日) 17:57:47
/////////// BOOL WINAPI SetKeyboardHook (HWND hWndPost, UINT Msg) { HHOOK hhook; if (g_hhook != NULL) return(FALSE); g_hwndPost = hWndPost; g_uMsgNotify = Msg; Sleep(0); if (g_hLogHook==NULL) hhook = SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardHook_HookProc,g_hinstDll, 0); InterlockedExchange((PLONG) &g_hhook, (LONG) hhook); return(g_hhook != NULL); } /// BOOL WINAPI ReleaseKeyboardHook() { BOOL fOK = TRUE; if (g_hhook != NULL) { fOK = UnhookWindowsHookEx(g_hhook); g_hhook = NULL; } return(fOK); }
172 :
デフォルトの名無しさん :2005/05/29(日) 17:57:55
BOOL WINAPI DllMain (HINSTANCE hinstDll, DWORD fdwReason, LPVOID lpvReserved) { switch (fdwReason) { case DLL_PROCESS_ATTACH: g_hinstDll = hinstDll; break; } return(TRUE); } 二,
国際化にはDelphi/Builder対応gettextがお勧め。
http://dybdahl.dk/dxgettext/ GNU-gettextの移植版だが、Windowsの言語設定に対応してるのと、
実行時にフォーム内の文字列を一括変換してくれる、便利な関数がついてる。
(これをCreateイベントハンドラに仕込んでおくだけ)
変換テーブルファイルを外部に持つのが嫌でなければ、リソースいじるよりはるかに楽。
GNU由来のコードは実行ファイルに含まれないので、ライセンスもかなり緩いです。
最低限気をつけるのは、
- フォームやメッセージ文字列は英語で作っておく
- フォント名の文字列も書き換えてくれるが、Charsetまでは変えてくれないので、
あらかじめDEFAULT CHARSETにしとく(これでたいがいはOK)
あとは良くも悪くもgettextなので、それなりのクセはあります。
174 :
デフォルトの名無しさん :2005/05/30(月) 02:48:55
Form1->Caption = "kkk"; SetWindowText(Form1->Handle,"kkk");
175 :
デフォルトの名無しさん :2005/05/30(月) 15:44:50
176 :
デフォルトの名無しさん :2005/05/30(月) 18:05:56
コンポーネントパレットのアイコンを加工して.icoファイルにして 自作アプリケーションと一緒にサンプルとして配布したいのですが、 これはやっぱりまずいですかね… 色んなコンポのアイコンが欲しいんですが
178 :
デフォルトの名無しさん :2005/05/30(月) 18:58:05
通報しますた
179 :
デフォルトの名無しさん :2005/05/30(月) 19:03:59
http://blog.livedoor.jp/junki560/archives/cat_854169.html ↑ここに書いてあるようなGDI+を使った2Dグラフィックを楽しみたくて、delphi用
のGDI+ラッパーをいじったけど、うまく動かなかった。
仕方なく、気が向かないけどC#で遊んでいる(.Netは初めからGDI+用の
ラッパーが標準装備。その替わり、従来のGDIを使おうとすると面倒くさい)。
C#Builderも出てしまったし、GDI+はこれからマネージコード専用の方向に
行ってしまうんかね。海外のサイトを検索しても、アンマネージコードでGDI+
のラッパーを作ろうという奇特な香具師はほとんどいないようだし。
180 :
デフォルトの名無しさん :2005/05/30(月) 19:10:22
StringGridで特定の行の色を変更するにはどうしたらいいでしょうか? FixedColorを使ってみたのですが、一番上の行だけが変わってしまって・・・
>>179 一応聞いておくけど、BCBがラッパーなしで、そこと同じ内容のコード書けるのは知ってるの?
BCBは初めからGDI+使うためのヘッダが付いてるけど、Delphiは当然C++のヘッダは使えないから
そうやってラップしてるんだろうけど。
それともその上でもっと楽に使えるラッパーが欲しい、誰か作成しる!という事?
>>181 当然知ってる。「猫でもわかる・・・・」は完全にラッパー無しで全部C++で
書いている。しかし、ちょっとした事をするのに物凄く手間がかかるので、
ラッパーにしたい。
VCLコンポーネントになっていれば一番楽なのだが、個人の手に余る。
GDI+のよく使う機能だけコンポーネント化するぐらいならなんとかなるが。
一度楽をする事を覚えると、Win32で書く気が失せる・・・・
183 :
デフォルトの名無しさん :2005/05/30(月) 20:35:57
185 :
デフォルトの名無しさん :2005/05/30(月) 21:24:09
BCB6が出たときにGDI+があったのがなんか驚き。 しばらく新バージョン出てないから、BCB6ってすごく古く感じる。
188 :
デフォルトの名無しさん :2005/05/31(火) 10:15:46
WM_XBUTTONDOWNメッセージを処理しているのですが、 ダブルクリック並みの速さでクリックすると、2度目のメッセージが来ないのですが、 どうしたら、2回とカウントできるでしょうか?
190 :
デフォルトの名無しさん :2005/05/31(火) 11:44:15
SetDoubleClickTime. 機能. マウスのダブルクリック間隔を設定する.
シングルクリック2回で処理できないものなのでしょうか?
>>191 どうしてもWindowsに逆らおうってのかい。
193 :
デフォルトの名無しさん :2005/05/31(火) 13:20:54
DblClick
194 :
デフォルトの名無しさん :2005/05/31(火) 13:33:34
bool bUpdateFlg; bUpdateFlg = false; ... いろんな処理 if (bUpdateFlg) { ... 更新関係の処理 }
ダブルクリックイベントの中から、シングルクリックイベント関数を2飼い呼べばいんでないの?
196 :
デフォルトの名無しさん :2005/05/31(火) 13:49:39
そしたら計3回くるだろしねよばか!
197 :
デフォルトの名無しさん :2005/05/31(火) 15:17:43
>>189 ダブルクリック並みの速さでクリックしたら、
そりゃダブルクリックだよ。
C++もC++builderも初心者です。 私なりに調べてみたのですがわからなかったので質問なんですが、 数値(0〜0.5)に合わせて角度(360゚〜0゚)を出して、 イメージ上でメーターのように線を描画したいのですが可能でしょうか?
200 :
デフォルトの名無しさん :2005/05/31(火) 16:40:01
可能
201 :
デフォルトの名無しさん :2005/05/31(火) 16:58:17
PageControlでタブの順番を入れ替えるにはどうしたらいいですか?
203 :
デフォルトの名無しさん :2005/05/31(火) 17:24:19
C++Builder1で try{ } __finally{ } を使うとエラーが出てコンパイルができないのは仕様ですか?
205 :
デフォルトの名無しさん :2005/05/31(火) 18:20:07
>>204 アンデファインドシンボルエラーが出ますね。
ちなみに、__tryってするとちゃんと予約語の色になるんですけどねえ
1の時は、まだ__finally は入ってないんじゃなかったっけ。3か5からだったと思う
207 :
デフォルトの名無しさん :2005/05/31(火) 18:43:51
ええええええええええええええええええええええええええええ!!!! でもヘルプに書いてるんだよねえ〜 でもコンパイルエラーになるんだよねえ〜
当時、確かdelphiには __finally あるのに、builderには無いとかって 文句出てた記憶が…。 3は微妙だけど、1は間違いなくそうだと思う。 builderのMLログにたぶん記録があると思うよ。
209 :
デフォルトの名無しさん :2005/05/31(火) 18:48:44
ようするに1では使えないってことですね、ありがとうございました・・・
210 :
デフォルトの名無しさん :2005/05/31(火) 18:55:28
PageControl上memoを配置してます。 また、Buttol1を押すとタブを動的に作るようにしてます。 アクティブ状態のタブ上にあるMemoの文章を PageControl上にない別のMemo2に複写したいのですが どのようにすればいいのですか?
>>210 いったん、暫定的にTStringsオブジェクトに内容をコピーして
それをMemo2にまたコピーするとか・・・
212 :
デフォルトの名無しさん :2005/05/31(火) 19:35:46
>>211 なぜかできなかったです・・・今考えてるんですが・・・
アクティブ状態ページ上のコンポーネントを指定するやりかたってあるのですか?
こんなん for (int i = 0; i < PageControl1->ActivePage->ControlCount; i++) { TMemo* memo = dynamic_cast<TMemo*>(PageControl1->ActivePage->Controls[i]); if (memo) Memo2->Text = memo->Text; }
>>201 TTabSheet::PageIndex
215 :
デフォルトの名無しさん :2005/05/31(火) 20:05:02
>>213 やっとできました。ありがとうございます。
217 :
デフォルトの名無しさん :2005/05/31(火) 22:41:59
218 :
デフォルトの名無しさん :2005/06/01(水) 08:24:02
ImageでJPEGファイルを見ることができないんですけど どうすればいいのでしょうか? よろしくお願いします。m(_ _)m
TJPEGImage
220 :
デフォルトの名無しさん :2005/06/01(水) 09:05:26
>>214 できました!
ありがとうございました!
221 :
199 :2005/06/01(水) 09:46:32
ボーランドからdelphi2005優待販売の封筒が来たんだが、こやつはまだBCB統合されてないよね? つかBCB6スターチームってなんなのさ
>>222 俺の所にも来た。
そうだな、全然統合されていない。VCLのバージョンが違うんだから当たり前か。
Delphiは.NETも積んでるし。
BCBがマネージコード対応になったら、それはそれで気持ち悪いけど。BCB9
になったらそうなるんだろうな。
224 :
218 :2005/06/01(水) 12:38:31
>>219 ありがとうございます。m(_ _)m
でも、TJPEGImageっていうのがないんです。。。(T▽T)
>>224 ヘルプには載ってるぞ
>TJPEGImage は jpeg グラフィックをカプセル化します。
>ユニット
>jpeg
>>224 あーTJPEGImageを使う時は、ヘッダファイルを手書きしないとだめだぞ。
#include <jpeg.hpp>
こういう細かい所が抜けててあかんなーBCB6は。
227 :
デフォルトの名無しさん :2005/06/01(水) 12:56:54
>>226 > ヘッダファイルを手書き
> #include <jpeg.hpp>
言ってる事と、やってる事に違いが…(w
>>227 ゴメソ
×ヘッダ・ファイルを手書き
○インクルード・ヘッダを手書き
VCLコンポーネントを貼り付けるとほとんど自動的にインクルード・ヘッダが
挿入されるので、それに慣れてるとやっちゃいやすい。俺も初めの頃は
悩んだ。
229 :
222 :2005/06/01(水) 16:11:07
>223 やっぱ統合されてないか。ならヴぁーじょんうpイラネ いつになったらDelphi統合されるのやら・・・
230 :
218 :2005/06/01(水) 16:14:30
>>225 ありがとうございました。
いまひとつわからないんですけど、できました。(^▽^)
また、よろしくお願いします。m(_ _)m
231 :
デフォルトの名無しさん :2005/06/01(水) 16:43:34
#include <jpeg.hpp> #pragma link "jpeg" //Image1にimage.jpeを読みこみ表示する場合 Image1->Picture->LoadFromFile("image.jpg"); // TJEPGImageにimage.jpeを読みむ場合 // ↓の場合は初期化なしで読みこめます。 TJPEGImage* pJPEGImage = new TJPEGImage(); pJPEGImage->LoadFromFile("image.jpg"); 保存も簡単に行えます。TImageに表示されたいるグラフィックをJPEG形式で保存する 場合は、TJPEGImageオブジェクトにAssignメソッドを使ってグラフィックをコピーして SaveToFileメソッドで保存します。 その時、JPEGのクオリティーはCompressionQualityプロパティで指定できます。 //Image1の画像をクオリティー50、ファイル名”image.jpg"で保存する TJPEGImage* pJPEGImage = new TJPEGImage(); pJPEGImage->Assign(Image1->Picture->Graphic); pJPEGImage->CompressionQuality = 50; pJPEGImage->SaveToFile("image.jpg"); delete pJPEGImage;
232 :
デフォルトの名無しさん :2005/06/01(水) 17:40:18
TPrinter を使って、印刷を行う場合、 PDFへの印刷は、プリンタ名にAcrobat Distillerを指定すればよいと思うのですが、 任意の場所(C:\PDF)に任意の名前(TestPDF.pdf)でPDFファイルを出力するには どのように設定してやればよいのでしょうか?
233 :
デフォルトの名無しさん :2005/06/01(水) 18:58:05
PageControlで特定のシートをEnable==FALSEにしたいんですけど、 コード上でどう書いたらいいでしょうか? 指定方法がよくわからないです・・・
>>233 PageControl1->Pages[インデックス]->Enabled = false;
みたいにできない?
235 :
デフォルトの名無しさん :2005/06/02(木) 01:36:02
236 :
デフォルトの名無しさん :2005/06/02(木) 01:54:25
BCB5 Proを使ってます。
TList *lstButtonに動的生成したイメージを追加していって、10個程度追加したところでRemoveしていくと、途中からイメージが削除されなくなってしまいます。
(追加)
TImage *button=new TImage(this);
button->Parent=Form1;
button->Canvas->Brush->Color=(TColor)(0x907070);
button->Canvas->Ellipse(Rect(0,2,76,76));
lstButton->Add(button);
(削除)
lstButton->Remove((TObject *)lstButton->Items[n番目]);
たぶん、これだけではわからないと思うので、ソースを↓にアップしました。
ttp://sempron.hp.infoseek.co.jp/BCB5_TEST.zip 解決方法を教えてください。
よろしくお願いします。
>>236 それリストの項目が減ってるだけで、イメージ自体は1個も削除されてないよ。
で、リストに残ったイメージを移動させてるから、場合によって一見削除されてるように見えるだけ。
BCB5にTObjectListがあるなら、
lstButton=new TList;
↓
lstButton = new TObjectList(true);
って変更だけでいいはず。Remove時にリスト側で中身(イメージ)を削除してくれる。
BCB5に無ければ自分でdelete。
238 :
236 :2005/06/02(木) 02:58:32
239 :
218 :2005/06/02(木) 08:14:44
>>231 遅くなりましたが、
ありがとうございました。m(_ _)m
240 :
デフォルトの名無しさん :2005/06/02(木) 10:15:59
241 :
デフォルトの名無しさん :2005/06/02(木) 16:08:47
243 :
デフォルトの名無しさん :2005/06/02(木) 16:17:25
おまえが書けよww
BCB9まだか
246 :
デフォルトの名無しさん :2005/06/02(木) 19:32:46
247 :
デフォルトの名無しさん :2005/06/02(木) 19:46:37
Rect1, Rect2, Rect3 : TRect;
248 :
デフォルトの名無しさん :2005/06/02(木) 22:20:55
次が出るのはもうアナウンス済みなんだから、気長に待つしかないよな。 Visual Studio 2005より先に出てくれれば、確実に買うのだけどな。 Visual Studio 2005より後なら、Visual Studio 2005を買っちまうだろうな。 きっとMSまたキャッシュバックとか一大セールやるだろうし。
249 :
デフォルトの名無しさん :2005/06/03(金) 12:45:48
個人で買ったBCB6Personalをインストールしているのですが、 今度会社でBCB5Enterpriseをインストールしないといけなくなりそう なのですが、BCB6を消さずにBCB5をインストールしても問題ないでしょうか? #BCB5EnterpriseをインストールするのはBCB6PersonalではQuickRepなどが #ないためです。
250 :
デフォルトの名無しさん :2005/06/03(金) 16:17:30
IEで、マウスのポインタがリンクを張ったところにおくと ステータスバーにそのリンク先のURLが表示されますよね これってどうやればいいのですか?
251 :
デフォルトの名無しさん :2005/06/03(金) 16:17:37
IEで、マウスのポインタがリンクを張ったところにおくと ステータスバーにそのリンク先のURLが表示されますよね これってどうやればいいのですか?
>>251 OnStatusTextChange ってまんまイベントがある
253 :
デフォルトの名無しさん :2005/06/03(金) 17:27:57
>>252 すいません、まだ素人なものであまり詳しくないです
ソース教えてもらえませんか
もすかしてCppWebBrowserの質問じゃないんか
>>251 質問は明確に。
ステータスバーにテキストを出すやり方なのか、
マウスが何かの上に来たときに処理をさせるやり方なのか、
あるいはIEを自作したいのか。
256 :
デフォルトの名無しさん :2005/06/03(金) 18:20:56
またまたすいません。 マウスを、リンク張ってある文字や画像に合わせると ステータスバーにそのリンク先のURLを 表示できるようにしたいです
257 :
256 :2005/06/03(金) 18:34:07
CppWebBrowserを使ってます
こう void __fastcall TForm1::CppWebBrowser1StatusTextChange(TObject *Sender, BSTR URL) { StatusBar1->SimpleText = URL; }
259 :
デフォルトの名無しさん :2005/06/03(金) 18:48:54
C++Builder5にそのイベントあるのか?ああん?
( ´,_ゝ`)プッ
261 :
256 :2005/06/03(金) 19:09:23
262 :
デフォルトの名無しさん :2005/06/03(金) 19:17:22
263 :
デフォルトの名無しさん :2005/06/03(金) 19:23:51
// TODO: この場所にネイティブ データ用の描画コードを追加します。 pDC->TextOut(0,0,"HelloWorld");
264 :
デフォルトの名無しさん :2005/06/03(金) 19:55:27
http://www.asahi-net.or.jp/~yf8k-kbys/vcpp0.html VC++5.0入門 1 基礎知識1 GUI 97/7/14
VC++5.0入門 2 基礎知識2 能書き 97/7/22
VC++5.0入門 3 基礎知識3 ウインドウを描くサンプル 97/7/28
VC++5.0入門 4 基礎知識4 アプリケーションとウインドウ 97/8/4
VC++5.0入門 5 基礎知識5 メッセージマップ 97/8/11
VC++5.0入門 6 基礎知識6 デバイスコンテキスト 97/8/18
VC++5.0入門 7 はじめてのAppWizard 97/8/25
VC++5.0入門 8 続・はじめてのAppWizard 97/9/1
VC++5.0入門 9 新しいプロジェクト 97/10/19
VC++5.0入門10 マウスのキャプチャ 97/10/26
VC++5.0入門11 ドキュメントとOnDraw 97/11/3
VC++5.0入門12 CArray 97/11/9
265 :
デフォルトの名無しさん :2005/06/04(土) 04:05:43
266 :
デフォルトの名無しさん :2005/06/04(土) 14:33:04
今度、C++ Builderを新たに購入して、Excelを自動操作するようなアプリを 組もうと思ってます。 C++Builder6のPersonal版でもOfficeのコンポーネントは入ってるでしょうか?
268 :
デフォルトの名無しさん :2005/06/04(土) 14:40:17
269 :
デフォルトの名無しさん :2005/06/04(土) 15:04:34
いまどき、その手のコンポがPersonal版だからといって省略されてるようなことはないはず。 個人ユースでも需要のあるモノだからね。 十中八九大丈夫だからPersonal版にしとき。
>>266 そのコンポーネント一度も使ったことがないが、何するき?
>>270 Excelと連携をとって、Excel上のセルの値を取得したり、逆にセルにデータを
書き込んだりというようなことです。
Excelのコンポって‥‥単にActiveXコントロールの取り込みで作成するだけじゃ? つかそんなコンポProでもないお。BCB入れてるPCにOffice入れてないから取り込めるかは知らん。 ただ、Proはいろいろやろうとする時に必要になってくるVCLソース付いてるのが大きい。
274 :
sage :2005/06/04(土) 15:30:05
スレ違いだけどC++Builder6.0にはInterBase6.0の日本語マニュアルが付いてて なんでDelphi7には日本語版のマニュアルが付いてないんだ? つい数日前に知ったわけだけど結構ショック受けたよ・・・
久しぶりに書き込んだら間違って下がってない・・・
277 :
デフォルトの名無しさん :2005/06/04(土) 16:25:22
278 :
デフォルトの名無しさん :2005/06/04(土) 16:25:52
279 :
デフォルトの名無しさん :2005/06/04(土) 17:21:34
void __fastcall TForm1::Button1Click(TObject *Sender) { Variant V = Variant::CreateObject("Word.Application"); V.OlePropertySet("Visible", true);// プロパティの設定 ShowMessage("Word を表示しました"); V.OleFunction("Quit");// メソッドの呼び出し V = Unassigned; }
280 :
デフォルトの名無しさん :2005/06/04(土) 20:51:42
281 :
デフォルトの名無しさん :2005/06/04(土) 21:43:43
Editに数字が入力されたらShowMessage("入力が完了しました") 数字以外ならShowMessage("入力ミス") と表示するようにしたいのですが、どのようにすればいいでしょうか?
if(atoi(Edit->Text.c_str()) == 0) { ShowMessage("入力ミス"); } else { ShowMessage("入力が完了しました"); } もしくは AnsiString の ToIntDef(int) メソッドを使うとか・・・。
StrToInt(AnsiString Str); を使うとか・・・。 数字以外のときは例外処理しなきゃならんけど。
>>281 Edit->Text.Length() バイトを、1バイトづつ( 0x30<=x && x<=0x39 ) で比較。
範囲外のバイトがあればエラー。
できれば比較前に、Edit->Text は全角to半角変換をかける。
285 :
デフォルトの名無しさん :2005/06/04(土) 22:59:18
286 :
うう :2005/06/05(日) 00:08:30
graphic.hくれ〜あそべない〜。
>>266 C++Builder6Proを持ってる漏れがマジレス
TExcelApplicationは、ProにしかついてないYO(・∀・)
288 :
287 :2005/06/05(日) 01:02:51
289 :
本田 :2005/06/05(日) 01:53:21
TImageで拡大縮小時の補間アルゴリズムを指定することは出来ないのでしょうか?
>>229 同封されている案内の方(バージョンアップ価格が記載されている方)に
「Delphiの時期メジャーリリースで統合予定」とある。
次期バージョンはエディタを良くしてくれ。 今の入力支援は重すぎなんで機能切ってるしなぁ・・・。
>>290 Win32APIのStretchBlt()とSetStretchBltMode()
使ったら?といってもたいした伸縮モードは選べるわけじゃないけど
>>287 ありがとうございます。
\65000は痛かったけど、覚悟を決めてPro版買ってきました。
もう後にはひけません!
295 :
デフォルトの名無しさん :2005/06/05(日) 16:44:31
>>295 もっと安いのもあったのにって嘲笑いたいわけ?
orzとでもレスすれば満足?
エクスプローラからアプリケーションへのファイルのドラッグアンドドロップはわかったのですが、 逆に、アプリケーションからエクスプローラへのやり方がわかりません。どなたか教えてください。
>>296 (・〜・)?
無印も定価\68,000だお
一時期\48,000パッケージもあったけど
299 :
デフォルトの名無しさん :2005/06/05(日) 19:22:03
>>282 >>283 >>284 サンクスです。ビルダー使い始めた素人
なので
>>282 さんのソースを借りました。
0を入れたとき入力ミスと判定されましたけど、
0のときも("入力が完了しました");
としたいです。 それで、StrToInt(Edit1->Text) != 0
の条件も追加したらエラーになりました。
どう修復した方がいいです?
int value; if (TryStrToInt(Edit1->Text, value)) ShowMessage("入力が完了しました"); else ShowMessage("入力ミス");
フォームをタスクバーより前面に表示するには どうしたらいいですか?教えてください。
>>294 業務目的だとPersonal使えないし
この際Proでよかったんじゃない?
がんばれ〜
>>302 たぶんフォームでこれをやる
::SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width,Height,
SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
>>304 その方法でうまくいきました、有難うございます。
306 :
ApplicationEvents1SettingChange :2005/06/06(月) 21:12:14
ApplicationEvents1SettingChange
307 :
デフォルトの名無しさん :2005/06/06(月) 23:15:04
308 :
デフォルトの名無しさん :2005/06/07(火) 18:06:54
エンジニア はてなのシステムの開発、運用、保守に携わって頂ける 方を募集します。PerlやApache、MySQL等のRDBMSの 知識が必要となりますが、これらの知識をこれから身に 付けたいという意欲のある方も歓迎します。 必須な知識 Perl 言語の使用経験 ウェブアプリケーションの開発・運用経験 オブジェクト指向プログラミングの基礎知識 RDBMS の基礎知識 Linux の基礎知識 あると好ましい知識 オリジナルのソフトウェア、ウェブアプリケーション などの設計経験 MySQL を前提とした大規模な RDBMS 環境の構 築・運用知識 XML関連技術に関する知識 blogに関する技術の知識 Linux やその他 OS に関する高度な知識 (ネイ ティブアプリケーションの開発経験、カーネルのコ ードレベルでのチューニング技術など) (C言語、Perlを問わず)Apache API を用いたアプ リケーション開発に関する知識 mod_perl によるウェブアプリケーションンプログラ ミングの知識 上記に当てはまらない得意な技術に関しても、都度評 価・加味いたします。 また、英語のネイティブスピーカーを優遇します。 We demand an English native speaker with precedence. However, Japanese minimum conversation skill is needed. デザイナー
コピペ荒らし氏ね
310 :
デフォルトの名無しさん :2005/06/07(火) 20:04:18
PageControlを配置して、実行後にForm1の大きさを変えると、 Form1の大きさに合わせてPageControlの大きさも変化するように するにはどうすればいいのですか? 大きさを変えると、その大きさがPageControlより小さくなると PageControlが隠れてしまいます
>>310 PageControl->Align = alClient;
312 :
デフォルトの名無しさん :2005/06/07(火) 20:57:41
>>311 ありがとうございます。
それだとボタンとかのコンポーネントみんな隠れていまします・・・。
PageControlにCppWebBrowserを配置してて
PageControl->Align = alClient;
だと、CppWebBrowserが隠れてしまいます。
しかもスクロールバーも隠れてしまい、なんだか
変になってしまいました・・・
313 :
312 :2005/06/07(火) 21:15:12
自己解決しました すいません
314 :
デフォルトの名無しさん :2005/06/08(水) 00:53:24
BCB4からBCB6にアップグレードしたんですが、 リソーススクリプト(.rc)が含まれるプロジェクトがビルドできなくなりました。 rcファイルにはwavファイル、アイコン、ビットマップが1つ記述してあります。 "全てのプロジェクトを再構築"してもexeが出来ないので、 "その後に全てのプロジェクトをメイク"するとようやく出来上がります。 .rcファイルを除外してからビルドすると一発でできる。。。 これって何とかならないでしょうか?俺だけ?
今作ってるプロジェクトまさにその状態。もう慣れてしもうた。
>>314 リソーススクリプトはbrcc32.exeで手動コンパイルしてresをプロジェクトに入れろって某乱堂のエロい人が言ってた
あ俺そうしよう
318 :
デフォルトの名無しさん :2005/06/08(水) 01:29:45
ヘルプお願いします! SysUtilsルーチンのMidStr()という文字列の一部分を抜き出す関数が、 正常に動作してくれません! AnsiString str; str=MidStr("12345ハロー",5,2); ShowMessage(substr); 上のソースで、"12345ハロー"という文字列の5番目から2文字分取って きて「5ハ」という文字列が表示されなきゃいけません。 それなのに実行すると「5・」とかになってしまいます。 これは何が間違ってるのでしょうか……
319 :
デフォルトの名無しさん :2005/06/08(水) 01:35:24
>>318 どっこいしょ!!!
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString ansiA = "12345ハロー";
Caption = ( (WideString)ansiA ).SubString(5,2);//5ハ
}
320 :
デフォルトの名無しさん :2005/06/08(水) 01:37:43
すいません、一カ所訂正します。 ×SysUtils ○StrUtils
321 :
デフォルトの名無しさん :2005/06/08(水) 01:43:26
322 :
316 :2005/06/08(水) 01:49:26
>>314 とりあえずBCBのReadme.txt読もう。な!
うちちゃんと5ハって出る
324 :
デフォルトの名無しさん :2005/06/08(水) 01:56:26
>>323 なんと!
うちはBCB6のPro版ですが、MidStrの文字カウントはbyte単位になっちゃってます。
>>324 じゃパッチ当ててないとか。うちもBCB6Proだから。
326 :
デフォルトの名無しさん :2005/06/08(水) 02:06:21
>>325 Borland C++Builder 6 アップデートパック #4 は当ててあるので、たぶん
違いの原因は別にあるんだと思います。
うーん、、、
うぉ実行時パッケージ有効にしたら5・になった。
328 :
デフォルトの名無しさん :2005/06/08(水) 02:38:01
void __fastcall TForm1::Button1Click(TObject *Sender) { //コンポーネント パッケージのインストール 実行時パッケージを無効 //#include <StrUtils.hpp> AnsiString str; str=MidStr("12345ハロー",5,2); Caption = str; }
329 :
デフォルトの名無しさん :2005/06/08(水) 09:48:32
VBみたいなファイルパスを指定できるコンポーネントないですか?
330 :
デフォルトの名無しさん :2005/06/08(水) 11:18:44
?
StringGridの1セルに、パネルにTEditとかのコントロールを置いたものを 表示する説明をしたWebページがあったのですが、URLを失念してしまいました。 誰か教えて・・・・
333 :
332 :2005/06/08(水) 12:04:47
すいません解決しました。 忘れたんじゃなくて、同サイトの違うページのURLをブックマークしてただけでした。
TCppWebBrowserを最上、最下にスクロールしたいんですがMemoの場合 Memo1->Perform(EM_SCROLL, SB_BOTTOM(SB_TOP), 0); の第一引数の指定方法が解りません。何と入力すればいいですか?
335 :
デフォルトの名無しさん :2005/06/08(水) 19:54:38
void __fastcall TForm1::Button1Click(TObject *Sender) { //コンポーネント パッケージのインストール 実行時パッケージを無効 //#include <StrUtils.hpp> AnsiString str; str=MidStr("12345ハロー",5,2); Caption = str; }
>>334 APIのSetScrollPos()使ってみたら?
>>336 ありがとうございます。しかしそれだとスクロールバーの
位置は変更できてもオブジェクトのスクロールが行われません。
良く解ってなくてすいません。
>>337 じゃあ、ScrollWindowかScrollWindowExはどうかな
>>338 だと直後にUpdateWindow()が要るかもしれん
>>338-340 皆さんありがとうございます。
一番上に持ってきたいのですが
HWND hwnd = CppWebBrowser1->Handle;
int pos = GetScrollPos(hwnd, SB_VERT);
SetScrollPos(hwnd, SB_VERT, 0, true);
ScrollWindow(hwnd, 0, -pos, NULL, NULL);
UpdateWindow(hwnd);
どこがいけないのかご指摘願います。
340見てないやん
>>341 > HWND hwnd = CppWebBrowser1->Handle;
CppWebBrowser1->HWND じゃないのかな?
> ScrollWindow(hwnd, 0, -pos, NULL, NULL);
↑ここで領域矩形を指定してないよ
>>342 すいません難しすぎて解りません
>>343 TRectで渡せないのですがどうやればいいですか?
横レスだけどCppWebBrowserのHWNDって取得できなくない?なんか例外出る。
>>345 出ます。”不明なエラー”っていう例外が。
>>344 > TRectで渡せないのですがどうやればいいですか?
RECT r = ClientRect;
とかやって&r を引数にわたしてやるとか・・・
RECT* をとる引数にはTRectのアドレスそのまま渡せるよ
ScrollWindowとかで出来るならみんなそうしてそう。でも各所で説明されてるのは別な方法だから無理なんだと思う。 普通にインターフェースを取得していってもいいけど、Variant使うと見た目はアレだけど簡単。 // 上へ OleVariant(CppWebBrowser1->Document).OlePropertyGet("body").OlePropertySet("scrollTop", 0); // 下へ long scrollHeight = OleVariant(CppWebBrowser1->Document).OlePropertyGet("body").OlePropertyGet("scrollHeight"); OleVariant(CppWebBrowser1->Document).OlePropertyGet("body").OlePropertySet("scrollTop", scrollHeight);
ううっ、ダメダー TRect r = CppWebBrowser1->ClientRect; ScrollWindow(hwnd, 0, -pos , NULL, &r); ちょこっとスクロールするだけで一番上まできません。
>>340 のやりかただと
#iclude<sysvari.h>
OleVariant(CppWebBrowser1->Document).body.scrollTop := ピクセル位置;
とでもやるのかなあ、Delphiはようわからん
>>349 その方法であっさりできました。記述がBCBっぽくなくて
素人には理解不能ですが勉強になりました。
わざわざ付き合ってくださった皆さんどうもありがとうございました。
もっと勉強して今度は自分が他人に教えられるようになりたいと思います。
お騒がせしました。
353 :
351 :2005/06/08(水) 23:01:50
すまん、まちがい↑
354 :
デフォルトの名無しさん :2005/06/09(木) 13:50:07
Borland C++ BuilderのTMemoオブジェクト で中国語のキー入力を受付させる為にはどうすればよいでしょうか? IMEを中国語(簡体字)-QuanPinにして中国語で「好」と入力しているにも 関わらず、簡体文字の「好」の文字コード(BAC3)ではなく、 JISコードの「好」の文字コード (8D44)がTemoの文字列領域に書き込まれて しまう為、正常に「好」という字が表示されません。 オブジェクトの設定を下記のように設定していますが、 この他にも設定が必要でしょうか? ご存知の方がいましたら教えてください。 オブジェクト:TMemo プロパティの設定 FontName:SimSun (中国語 簡体文字をサポートしているフォント) CharSet:GB2312_CHARSET (中国語 簡体文字をサポートしてる文字セット) ImeMode imChinese ImeName 中国語(簡体文字)-QuanPin 環境 Borland C++ Builder Version5.0 (Build 12.34)
これ、かなり使いやすいよね VBから入ったユーザーだけど、コードをC++へ変換するような感じで簡単に学習できる
357 :
デフォルトの名無しさん :2005/06/09(木) 15:23:16
358 :
デフォルトの名無しさん :2005/06/09(木) 17:35:19
>>354 Unicode対応コンポを入れることによりステップ実行ができなくなるなどの
現象が起きてしまっていますが、とりあえず中国語を表示することが
できました。
回答ありがとうございます。
>>360 ↑
shlobj.h のインクルードが要るかも
362 :
デフォルトの名無しさん :2005/06/09(木) 17:59:09
統合アーカイバコンポーネント for Delphi/C++Builder v1.44 ってC++Builder6じゃつかえないんでしょうか? インストールしても、項目が表示されないっす・・・
363 :
デフォルトの名無しさん :2005/06/10(金) 07:48:13
CとWin32APIだけで書いてあるソースがあるんですが これのデバッグ用にC++Builder6を使えますか? コンソールからbcc32を使って普通にビルドした実行ファイルが ちゃんと動作するのは確認済みです。
364 :
age :2005/06/10(金) 07:54:24
>>363 ちゃんと動作するものであれば、
デバッグの必要がないだろ。
ナイスつっこみ!
くだらね
368 :
デフォルトの名無しさん :2005/06/10(金) 23:33:03
void __fastcall TForm1::Button1Click(TObject *Sender) { //コンポーネント パッケージのインストール 実行時パッケージを無効 //#include <StrUtils.hpp> AnsiString str; str=MidStr("12345ハロー",5,2); Caption = str; }
369 :
デフォルトの名無しさん :2005/06/11(土) 09:05:44
370 :
デフォルトの名無しさん :2005/06/11(土) 23:47:08
371 :
デフォルトの名無しさん :2005/06/12(日) 02:50:08
TStringGridのあるセルが画面に見えているか、スクロールして 見えない状態かを知るにはどうしたらいいでしょうか。 プロパティかメソッド等でわかるのかと思ったのですが・・・
なんそんなのあったな。忘れた
>>372 LeftCol
TopRow
VisibleColCount
VisibleRowCount
辺りでない?
375 :
372 :2005/06/12(日) 18:12:29
>>374 これです!
ありがとうございます。
ヘルプ見たら普通に載ってましたねorz
376 :
デフォルトの名無しさん :2005/06/13(月) 04:08:44
void __fastcall TForm1::Button1Click(TObject *Sender) { //コンポーネント パッケージのインストール 実行時パッケージを無効 //#include <StrUtils.hpp> AnsiString str; str=MidStr("12345ハロー",5,2); Caption = str; }
377 :
デフォルトの名無しさん :2005/06/13(月) 06:21:03
http://blog.livedoor.jp/junki560/ コメント、ありがとうございます。
しかしながら、がんばるつもりは毛頭ありません。
趣味ですから、飽きたらやめますし、おもしろければ続けます。
ここは、ほとんど自分用のコード貯蔵庫 兼 メモです。
読まれることはとってもうれしいですけど、そのためにコードの
解説や説明などを書くつもりはないです。1ヶ月後に自分でも
忘れそうなことだけをメモしておきます。
しかし宣伝のURL書いちゃいました。
リストビューのラベルのところ(文字の上)でマウスの左ボタンを押して マウスを動かしても項目を複数選択できるようにするにはどうしたらいいでしょうか? プロパティは↓のように設定してます。 MultiSelect = true; ViewStyle = vsReport;
379 :
デフォルトの名無しさん :2005/06/13(月) 09:50:47
[1] 授業単元:情報処理 [2] 問題文(含コード&リンク): 2次元配列に格納されている4次元方行列A=[aij](要素は実数)において、 a11+a22+a33a+a44 および、a14+a23+a32+a41 を求めて表示する。ただし、上記の和はfor文による繰り返しにより記述する。 計算に先立ち、行列の各要素の値はキーボードにより、以下のように入力する。 a11...a14=1.0 2.0 3.0 4.0 a21...a24=5.0 6.0 3.1 2.0 a31...a34=1.3 2.5 9.0 4.3 a41...a44=1.3 2.5 9.0 4.3 [3] 環境 [3.1] OS:Windows2000 [3.2] コンパイラ(バージョン): [3.3] 言語:C++ [4] 期限:6月15日12:00まで [5] その他の制限:for,while,if,switch,break,配列まで習いました。 一週間ほど考えましたが、ムリでした・・・。 どうかお願いします。。
380 :
379 :2005/06/13(月) 09:52:53
すいません。 板間違えてしまいました。 本当にすいませんでした。
なんか懐かしいな。初期のCって感じで。 標準入力をそのままスキャンするなボケとか言われる奴。
383 :
デフォルトの名無しさん :2005/06/13(月) 20:04:03
特定の警告メッセージを表示しないように設定できないでしょうか? 正しいのに警告されると鬱陶しいです
>>383 #pragma warn -xxx
#pragma option -w-xxx
あとプロジェクト全体ならプロジェクトオプションで選択できる
386 :
デフォルトの名無しさん :2005/06/13(月) 22:20:23
IEで右クリック→ソースの表示で、メモ帳でソースコードがでますが、 CppWebBrowserとbutton1を使って、 Button1を押すとメモ帳でソースコード表示がでるようにするってできますか?
できます。
DeXter = Delphi2006のこと
390 :
デフォルトの名無しさん :2005/06/14(火) 03:35:54
391 :
デフォルトの名無しさん :2005/06/14(火) 03:49:11
392 :
デフォルトの名無しさん :2005/06/14(火) 06:14:57
393 :
デフォルトの名無しさん :2005/06/14(火) 08:50:12
>>392 =386
チミが できますか? って聞いてるから、親切な
>>387 が できます って教えてるじゃないか。
できるかできないかを聞かれたら、答えはできるかできないしかないだろう。
C++ Builder for .NETはないのね。 ま、いいけど。
C++ Builder for .NET ないの? じゃあ、買う気半減だなぁ。
.NETなんてイラネ それよか64bitコンパイラ早くだしてくれ
.NETをわざわざ使う理由がよくわからんのだけど Longhornだと.NETアプリしか動かんとかいうなら困るが
400 :
デフォルトの名無しさん :2005/06/15(水) 04:01:48
Variant IEbrowser = Variant::CreateObject("InternetExplorer.Application");
IEbrowser.OlePropertySet("Visible","true");
IEbrowser.OleProcedure("Navigate","
http://www.google.com ");
Sleep(1000);//
if(IEbrowser.OlePropertyGet("Busy")<1)
ShowMessage("show");
///
require 'win32ole'
ie = WIN32OLE.new('InternetExplorer.Application')
ie.Navigate("
http://www.google.co.jp/ ")
ie.Visible = true
while ie.busy
sleep 1
end
q = ie.document.all.Item("q")
q.Value = "ruby"
btnG = ie.document.all.Item("btnG")
btnG.click()
>>391 希望書くけど、
Win64、英語リソース標準添付、かな。
402 :
デフォルトの名無しさん :2005/06/15(水) 17:22:22
TPanelはMouseDownイベントに以下のコードで移動できるようになるのですが これをTImageでやるにはどうしたらいいですか? { ReleaseCapture(); dynamic_cast<TImage *>(Sender)->Perform( WM_SYSCOMMAND, 0xF012, 0 ); }
403 :
デフォルトの名無しさん :2005/06/16(木) 02:08:01
かなり基本的な事柄の質問で気が引けるのですが、ひとつ質問させてください。 C++BuilderでMDIアプリを作ろうとしてます。 で、子フォーム(ダイアログ)にて入力された値を、変数を介して親フォーム のほうで参照するにはどうしたらいいのでしょうか? コンポーネントのTextプロパティなどを介して値をやり取りすることはできて るのですが、グローバル変数のようなものを介して値を受け渡す方法がうまく いきません。 子フォームで入力された名前を配列に収めて、親フォームで使いたいのですが……。
>>403 1.そのままグローバル変数を使う。
2.子フォームのメンバに配列なり何なりを追加する。
3.子フォームのメンバに配列なり何なりのポインタ/参照を追加し、
子フォームのコンストラクタで呼出もとのもつ配列なり何なりの
ポインタ/参照を引き渡すようにする。
などなど。
その1 ダイアログでOKが押されてたら 親の変数に代入する Txxx::OKButtonClick(TObject *Sender) { 親へのポインタ->変数=Edit1->text; } その2 ShowModal()でOKで帰ってきたら 値を読み出してから ダイアログを破棄する if(ダイアログクラスへのポインタ->ShowModal()==mrOk){ 変数=ダイアログクラスへのポインタ->Edit1->text; } delete ダイアログクラスへのポインタ; ってこんな単純なことでいいのかな?
406 :
デフォルトの名無しさん :2005/06/16(木) 11:48:54
407 :
デフォルトの名無しさん :2005/06/16(木) 12:19:33
>>406 あー、これTImageはやっぱこの方法しかないのか〜
408 :
デフォルトの名無しさん :2005/06/16(木) 18:48:21
try{ if( なんとか ) ここでcatchにいかせたい } catch(...){ } 上記のtryの中のifで条件が真ならcatchに飛ばす方法を教えてください
409 :
デフォルトの名無しさん :2005/06/16(木) 19:04:22
throw 0; とかでいいですかね?
411 :
デフォルトの名無しさん :2005/06/16(木) 21:20:55
例えば下のようなプログラムがあった場合、結局どのボタンも 同じ処理をしてることになりますよね? これってうまくまとめたりできませんか? void __fastcall TForm1::Button1Click(TObject *Sender) { Memo1->Text="テスト"; } void __fastcall TForm1::Button2Click(TObject *Sender) { Memo2->Text="テスト"; } void __fastcall TForm1::Button3Click(TObject *Sender) { Memo3->Text="テスト"; } void __fastcall TForm1::Button4Click(TObject *Sender) { Memo4->Text="テスト"; }
>>411 ヒント: [ dynamic_cast<TMemo*>(Sender) ]
SenderはTButtonな罠。 Button1とMemo1、Button2とMemo2という風に、2つを関連付ける何かさえ用意すればまとめられるよ。
>>411 Button1以外のButtonは
オブジェクトインスペクタ→イベントタブ→OnClick→Button1Click
を選択すればいいだけ。
それでどのボタンをクリックしてもButton1Clickが呼ばれる。
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// Sender で場合分け
}
それとこの場合は必要ないけどTObject派生クラス(Delphi型クラス)は実行時型識別で基底クラスのポインタから派生先のクラスも知ることができる。
417 :
411 :2005/06/16(木) 21:51:36
まだド素人なものでよくわかりません・・・ どうやったらいいんですか?
mapなんかもええで std::map<TObject*, TMemo*> MemoMap; MemoMap[Button1] = Memo1; MemoMap[Button2] = Memo2; void __fastcall TForm1::ButtonClick(TObject *Sender) { MemoMap[Sender]->Text = "テスト"; }
TAGかなんかにポインタでもインデックスでも入れときゃ良かろう
420 :
デフォルトの名無しさん :2005/06/16(木) 22:04:21
>>418 サンクスです
なぜかエラーがでました・・・
[C++ Error] Unit1.cpp(17): E2316 'map' is not a member of 'std'
[C++ Error] Unit1.cpp(17): E2040 Declaration terminated incorrectly
[C++ Error] Unit1.cpp(18): E2451 Undefined symbol 'Button1'
[C++ Error] Unit1.cpp(18): E2275 { expected
[C++ Error] Unit1.cpp(19): E2451 Undefined symbol 'Button2'
[C++ Error] Unit1.cpp(19): E2238 Multiple declaration for 'MemoMap'
[C++ Error] Unit1.cpp(18): E2344 Earlier declaration of 'MemoMap'
[C++ Error] Unit1.cpp(19): E2275 { expected
[C++ Error] Unit1.cpp(23): E2316 '_fastcall TForm1::ButtonClick(TObject *)' is not a member of 'TForm1'
[C++ Error] Unit1.cpp(24): E2206 Illegal character ' ' (0x8140)
[C++ Error] Unit1.cpp(24): E2206 Illegal character ' ' (0x8140)
[C++ Error] Unit1.cpp(24): E2206 Illegal character 'テ' (0x8365)
[C++ Error] Unit1.cpp(24): E2206 Illegal character 'ス' (0x8358)
[C++ Error] Unit1.cpp(24): E2206 Illegal character 'ト' (0x8367)
> [C++ Error] Unit1.cpp(24): E2206 Illegal character ' ' (0x8140) > [C++ Error] Unit1.cpp(24): E2206 Illegal character ' ' (0x8140) > [C++ Error] Unit1.cpp(24): E2206 Illegal character 'テ' (0x8365) おい
>>420 >>418 をマネるなら
・#include <map>を書く
・MemoMap[Button1] = Memo1とかはTForm1のコンストラクタにでも書く
・Button1をダブルクリックしてButton1Clickを作り、その中にMemoMap[Sender]->Text = "テスト";を書く
・Button2〜Button4のOnClickにButton1Clickを設定する。
>>419 昔のCグラマがintに何でも突っ込んでたという本に書いてた話を思い出した
初心者過ぎやしないか・・・
とりあえずC++の入門書でも買ってきてC++のオブジェクト指向とSTLでも勉強した方がいいに1票
_, ,_ ( ・д・)
428 :
デフォルトの名無しさん :2005/06/17(金) 07:02:41
でもこのスレは教えるのが趣旨だからねぇ
429 :
デフォルトの名無しさん :2005/06/17(金) 10:21:53
つ[throw]
431 :
デフォルトの名無しさん :2005/06/17(金) 12:29:16
throw 0ってやったらそこでエラーになってとまっちゃうんだけど0ってダメんzんですかね? 0以外なら正常に動作するんだが・
>>431 日記はチラシの裏に書け
質問なら自分の書いたコードとエラーメッセージを晒せ
話はそれからだ
433 :
デフォルトの名無しさん :2005/06/17(金) 13:42:56
>>432 馬鹿には聞いてませんよ?
質問の意味が理解できないならレスしないでね、お前のレスは荒らしと同じだよ
スレ違いってことに気づけない馬鹿が居る件について
436 :
デフォルトの名無しさん :2005/06/17(金) 14:03:12
プックスクス
エラー対処の質問は、エラーが発生するソースを提示するのが大原則。 ソースを提示しようとしない質問者は、ほとんどの場合、問題外の無茶苦茶なコードを書いている。 本人もその自覚があるから、なんのかんのと言い逃れて提示しようとはしないんだな。 それでは誰も相手してくれないよ。
438 :
デフォルトの名無しさん :2005/06/17(金) 14:31:06
質問の意図を理解できなくてソースだせって・・・ それソースみてもお前じゃわかんないと思うぜ?
ここでもゆとり世代が大活躍
どうやら回答者は神レベルのチョースーパーハカーでないとダメな ようですな。
ん?VIPから乱入中?
いやまぁ、
>>431 読んだだけで「こいつ、えらい勘違いしてんだろうな」ってのは分かるんだがw
そしてこの手のやつは最後まで情報を小出しにしてスレを無駄に消費するだろうなってのも
なんとなく分かる。
ソース晒せば大抵は簡単に解決するんだけどね。
443 :
デフォルトの名無しさん :2005/06/17(金) 14:56:27
言いたいことはそれだけか? 情けないこと
質問する人間が勘違いしている場合は フィルタのかかった話をいくら聞いたって無駄なんだよね
445 :
デフォルトの名無しさん :2005/06/17(金) 15:41:13
はぁ・・・ 理解できないからって逆に煽ることしかできないのかこいつらって
うんうん、だからもうここには来ないようにするんだよ。
理解できる奴が現れるまでほっときゃいいっす。答えが無くても自業自得っす。 こっちから問い直すなんて優しすぎっす。
>>441 いつもの馬鹿が沸いてるだけ。放置しる。
449 :
デフォルトの名無しさん :2005/06/17(金) 17:20:48
An Introduction To Digital Image Processing ここからダウンロードできる ImageProc.pdf は、初歩のデジタルイメージ処理の解説としてはとても素晴らしい内容だ。コード例は、C であるが解説方 法がよいので分かりやすく、他の言語にも簡単に移植できるだろう。さっそく Delphi でも応用してみるか。
450 :
デフォルトの名無しさん :2005/06/17(金) 19:52:11
Project1.exe、project2.exeがあって、 Project1.exeのButton1を押すとproject2.exeを実行 することってどうやるの?
ShellExecute ShellExecuteEx WinExec
CreateProcess
system()
spawnl spawnle spawnlp spawnlpe spawnv spawnve spawnvp spawnvpe
455 :
デフォルトの名無しさん :2005/06/18(土) 05:39:25
strlen
457 :
デフォルトの名無しさん :2005/06/18(土) 13:40:33
C++Builderの新しいバージョンのベータ版は公開されるのかな??
458 :
デフォルトの名無しさん :2005/06/18(土) 18:26:14
UWSCのようなマクロツール機能を自作アプリに組み込みたいんだけど、 Win32APIを叩かず、VCLで実現することってできますかね?
1)マウスカーソルの位置変更 2)マウスクリック発生 3)任意のキー押下イベント発生 4)任意のアプリの最大化、最小化などの制御 5)画面上の任意の座標のピクセル色を取得 とりあえず、このくらい。 1、2はVCLで実現できそうなんだけど、他が実現可能かどうかよくわかんないっす。
1) TMouse::CursorPos 2) mouse_event 3) keybd_event 4) ShowWindow 5) GetDC(0) 1ぐらいな希ガス。2ってできる?
いま実験してみたら、CursorPosプロパティが読み取り専用みたいで、 1すら実現できなかったorz
古いBCBか。BCB6なら1はできるけどね。
ちなみに俺が昔不思議だった罠 Mouse->CursorPos.x = 0; Mouse->CursorPos.y = 0; こういうのは駄目ね
>>463 と
Mouse->CursorPosy = TPoint(0,0);
がどう違うか? って良い練習問題だな。
これが即答できればVCL入門編は合格とw
質問です。BCB5ですが Examples\Toolsapi\Keybindings っていうのがあるんですが、これって何に使えば良いんですか? エディタでの置換にも関連しているような内容をメモってたのです が、使い方がわかりません。 よろしくお願いします。
>>464 それエラー出るよ。
Tpoint型はLong型に代入できませんって
いや CursorPosy って何?ってエラーが出るはずだ
CursorPosyはたぶん単純にCursorPos.y のミスタイプかと。
いや y いらんだろ。TPoint代入してるんだから
×CursorPosy=TPoint(0,0); ○CursorPos=TPoint(0,0); タイポはタイポとして Mouse->CursorPos.x = 0; Mouse->CursorPos.y = 0; これと Mouse->CursorPos = TPoint(0,0); の違いがマジで分からんのか? あと、古いBCBはホントにTMouse::CursorPosが読み出し専用になってる? だれか確認できたら教えて。
ちなみにBCB4以降では全てread/write両用。>TMouse::CursorPos
まあ Mouse->CursorPos.x = 〜 ってやっちゃっただけだろうな
>>471 んー、前者と後者で違う結果になるのはなんで?
>>474 Mouse->CursorPos.x=0;
これは次と同値。
Mouse->GetCursorPos().x=0
GetCursorPos()の返すTPoint型一時オブジェクトのxに代入している。
Application::Mouseには反映されない。
Mouse->CursorPos=TPoint(0,0);
これは次と同値。
Mouse->SetCursorPos( TPoint(0,0) );
Application::Mouseに反映される。
まぁ、初心者の引っかかりやすいところではある。
>>465 その名の通りキーバインディング追加や変更のサンプル
478 :
デフォルトの名無しさん :2005/06/19(日) 07:17:25
Panel1の大きさを Panel1->align=Left; にした。 そこで、横の幅をウィンドウの幅のちょうど半分にするってできる? ウィンドウの大きさを変えればそれに伴って、Panelの大きさも 変わるようにしたい
>>478 FormのOnResizeに
Panel1->Width = Width / 2;
でできるはず
480 :
デフォルトの名無しさん :2005/06/19(日) 08:08:37
ところでBCBのヘルプがほとんどの場合、何の役にも立たないのは仕様 ですか? それともおいらの脳みそが足らない?
>>481 IDEまわりのことなら仕様。VCLリファレンスやSTL、標準ライブラリが役に立たないなら脳味噌が足りない。
うは、VCLリファレンス役に立たない思ってた・・・・ なんで使用例のソースコードをのっけてくれないんだろ。
使用例が無くても普通はわかるからなぁ。 ぱっと見分からんと思うものはちゃんと例を載せてくれてる。 俺的にVCLのリファレンスはMSDNライブラリよりはるかに分かりやすい。
でも、Builder 5 と Builder 6 では、 「コンポーネントパレットの概要」のヘルプの表示が、 順番が変わって使いにくくなった。
1 AnsiString __fastcall classFoo::mojiget(AnsiString file, int nIndex) { AnsiString tmp; TStringList *ls = new TStringlist; ls->LoadFromFile(file); tmp =ls->Strings[nIndex]; ls ->Free(); return tmp; } 2 void __fastcall classFoo::main() { AnsiString Args; AnsiString aRet; Args ="c:/test.txt"; Class_mojiget *m = new Class_mojiget; aRet =m->read(Args).Strings[1]; m->Free; } 1の方法を2の方法に書き換えたいのですが、この書き換え方は可能ですか? フォームを追加してその中に関数を埋め込む方法とかは勘弁して下さい…
まあできない理由は見当たらんけども
>>481-482 今までの経験上、VCLのヘルプが分かりにくいという人は
C++とOOPが分かってないケースがほとんど。
「C++の開発環境使うならこんぐらいは当然知ってるでしょ」
という前提知識がないってこと。
しかし、C++標準ライブラリヘルプは実際使いにくいっしょ。
VCLヘルプみたいにリンクが張ってあったらいいんだけど。
訳が酷いのはもうあきらめてるがw
>>487 Free()は使うなとヘルプに書いてあるはずだが
491 :
487 :2005/06/19(日) 19:48:04
>490 えっ!マジっスか!?知らなかった… Freeしなくても関数抜けると勝手にガベージコレクトっぽい事してくれんの??
493 :
487 :2005/06/19(日) 20:02:07
>492 Free メソッドは,オブジェクトインスタンスが NULL ではない場合には自動的にデストラクタを呼び出します。 だそうな。 Free使うとメモリの内容が壊れてしまうんですか?
>>489 ヘルプに載ってないobjectは検索ととりあえず勘でテキトーにコーディングしてみて上手く動いたら多分こーいう使い方なんだろう
って方法でlib増やしてく方法?
>オブジェクトの Free メソッドは呼び出さないでください。かわりに delete キーワードを使 >用してください。delete キーワードは Free メソッドを呼び出してオブジェクトを破棄します。
496 :
487 :2005/06/19(日) 20:37:01
>>495 なんか詳しそうだから弟子にしてくれよ。頼む
new と delete は対になってないと気持ち悪い、と思うのは俺だけか?
>>489 たしかにそうかも。
BCBのヘルプに不満のある自分は、C++歴1週間ほど。
BCBにくる前に1ヶ月ほどVC#やってて、その知識の応用でプログラムしてました。
自分の知識不足は正直否定できないっす。
いまだに->を使う場合と.を使う場合がいまいち区別ついてないぐらいで。
ただ、そういう初心者でも、逆に使用例のコードさえ見れば、かなり複雑な
実用プログラムでもがんがん作れるんで使用例は個々のトピックごとに掲載
してほしいなあと。
ちなみにVC#2005βのエディタの支援機能はかなり神ですた。あれは初心者の入門
開発環境として最適ですね。
BCBじゃエディタのコード自動補完は(遅すぎて使い物にならないから)OFFにするのが常識だからな(゚∀゚)
>>499 いやーBCB6が出たころならそうだが、
いまどきのPCなら牛丼並クラスでも
結構サクサク動くぞw
>>498 VBやC#は開発環境と言語が結びついてるから
開発環境のほうで言語初心者の面倒も見る必要があるが
C/C++は汎用言語だから
「開発環境使うならまず自分で言語を勉強して来い」
ってことでしょ。
>ただ、そういう初心者でも、逆に使用例のコードさえ見れば、かなり複雑な
実用プログラムでもがんがん作れるんで使用例は個々のトピックごとに掲載
してほしいなあと
はっきり言うけど、これを望むならVBなりC#を使うべき。
Pen4の1.6Gだと重い>コード補完 VC使ったら涙出るよホント。 でも次期バージョンのデモ見る限り今度はちゃんと軽くなってそうで吉。
>>502 VC#メインで使いたいんだけど、現状だと.NET依存のアプリを配布するのは
ちょっと厳しいものがあるんだよね。
いまどき牛丼並でもセロD335だからなぁ という、うちのメインはセロ2.4Gだがストレスは感じないよ。
Athlon2800+/Mem1G でストレスありまくり。
セロ0.85G+メモリ768MBでストレスだらけ
ところで牛丼並ってなによ?
509 :
デフォルトの名無しさん :2005/06/20(月) 10:02:19
牛丼パソコン たしかアキバで見たことある たぶんそれかと
京都競馬場に行くたび、吉野屋の牛丼を食ってる俺は勝ち組。 馬券は激しく負け組・・・。
512 :
デフォルトの名無しさん :2005/06/20(月) 17:31:59
ちょっとお前等ちょっとごみに質問ですが?
513 :
デフォルトの名無しさん :2005/06/20(月) 18:53:57
フォームの最小化ボタンを押しても反応しないフォームがあるのですが、 どうやったら最小化できるんでしょうか? メインフォーム→サブフォームのように作っています。 サブフォームは最小化できますが、 メインフォームが最小化できません。 常に前面に配置するような指定はしていません。 誰か助けてください・・・
ExitProcess(0);で全部消える
>>513 class TSubForm : public TForm
{
// 省略
// ウィンドウプロシージャをオーバーライド
void __fastcall WndProc(TMessage &Message);
};
////////////////////////////////////////////////////////////////
void __fastcall TSubForm::WndProc(TMessage &Message)
{
TSubForm::WndProc(Message);
if(Message.Msg == WM_SYSCOMMAND && Message.WParam == SC_MINIMIZE)
{
SendMessage(MainForm->Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
}
}
これで出来ると思うけど、どうでしょう。
516 :
デフォルトの名無しさん :2005/06/21(火) 11:40:21
>>514 記述場所がわかりませんでした。
すいません。
>>515 試しに処理を入れてみると、
EStackOverflowクラスの例外を生成しました。
スタックオーバロー
プロセスは停止しています。再開するにはステップ実行または実行を選択してください。
とエラーがでます。
何らかの方法で、メモリ確保しないとダメですか?
自作のDLLが悪さしているような気も・・・
>フォームの最小化ボタンを押しても反応しないフォームがあるのですが、 この時点ですでにエラー起こしてるじゃ?
なんか他に原因ありそうだな・・・
どーでもいいが、スタック溢れるって、巨大な配列か何かをスタックに置いてたりする?
確か、イベントハンドラを再帰コールさせたらスタックオーバーフローしたよ。 つまり、再帰で無限にコールされてない?
class TSubForm : public TForm { // 省略 // ウィンドウプロシージャをオーバーライド void __fastcall WndProc(TMessage &Message); }; //////////////////////////////////////////////////////////////// void __fastcall TSubForm::WndProc(TMessage &Message) { TForm::WndProc(Message); // ゴメンここにバグあったw // TSubForm じゃなくて TForm ね。 スマン if(Message.Msg == WM_SYSCOMMAND && Message.WParam == SC_MINIMIZE) { SendMessage(MainForm->Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0); } }
522 :
521 :2005/06/21(火) 15:29:06
そりゃ無限ループにもなるわ・・・
524 :
デフォルトの名無しさん :2005/06/21(火) 16:34:33
>>517 自分で処理を書いていないので、エラーはわからないです。
>>518 メーリングリストもチェックしてみたのですが、
最小化できなくなるのは多々あるようです。
解決策がありませんでしたが・・・
>>519 >>520 再帰処理で溢れているようですね
>>521 修正してみましたが、やはり最小化イベントが何度も走っているようです。
(フォームが点滅しているので、最小化したり、元にもどったりの繰り返し?)
で、ある一定の回数を越えたらオーバーフローしているようです。
フォーム明滅プログラムと命名して完成ってことで。
>>521 のコードを試したら問題なく動いたんで
おそらく他に問題があると思われ。
527 :
デフォルトの名無しさん :2005/06/21(火) 19:50:21
528 :
デフォルトの名無しさん :2005/06/21(火) 23:08:47
529 :
デフォルトの名無しさん :2005/06/21(火) 23:09:04
530 :
デフォルトの名無しさん :2005/06/21(火) 23:09:21
531 :
デフォルトの名無しさん :2005/06/21(火) 23:09:36
532 :
sage :2005/06/21(火) 23:11:55
>>527 わかった。
わかったから。
よくやったよ。
C++Builder6がコンパイル中に「Assertion failed ...」 マジかよ・・・
534 :
デフォルトの名無しさん :2005/06/22(水) 11:31:42
3から5に変えたら同じコードでも実行ファイルのサイズが150Kくらい増えたんだけど これって5から6に変えたらどれくらいふえてる?
2バイト〜600メガバイトくらいかな
536 :
デフォルトの名無しさん :2005/06/22(水) 12:53:39
馬鹿なレスはいりません。さっさと消えてください。うざいです
538 :
デフォルトの名無しさん :2005/06/22(水) 14:01:18
複数の子フォームから名前(Nameプロパティ)で検索する方法を教えてください
FindComponent
ヒント:TComponent::ComponentCount, TComponent::Components, TControl::Name
>>538 MDIChildCountとMDIChildrenでループをまわす
FindComponent、ComponentCountは使えない
542 :
デフォルトの名無しさん :2005/06/22(水) 16:44:36
>>539-540 それはよくボタンとかのコントロールの時につかってたけど、それってフォームでもできる?
>>541 だよね?
今はMDIChildrenのNameと比較してやってるんだけど、FindComponentみたいにフォームをさがしてくれる
のがあるかな〜っておもって聞いてみますた
どうやら、なさそうでつね
543 :
(7) :2005/06/22(水) 20:42:22
すみませんちょっと教えてください。 ブラウザコンポーネント(CppWebBrowser)を使うと、IEの履歴に残って しまいますが、これを抑止する方法ってご存じのかたありませんでしょうか?
544 :
デフォルトの名無しさん :2005/06/22(水) 21:57:58
_int64の最大値はいくつですか?
>>544 111111111111111111111111111111111111111111111111111111111111111
>542 Screen->Formsとかじゃいかんですか
Application->FindComponent とか
ランタイム無しに実行できる形式にコンパイルしたプログラムが、開発マシン と、それ以外のPCで動作が違ってしまって困ってます。 OSは両マシンともにWin2000です。 プログラムはテキスト置換ツールで、置換テーブルを読み込み、 テキストファイルを読み込んで特定ワードを置換し、置換後の内容を ファイルに吐き出すという、まあ単純なものです。 ファイルの入出力のあたりは正常に動作してるのですが、開発マシン以外 で実行すると、肝心の文字列置換がぜんぜんできていません。 どのへんに原因がありそうでしょうか? 使用しているのはBCB6です。
>>548 >どのへんに原因がありそうでしょうか?
ソースコード
550 :
デフォルトの名無しさん :2005/06/23(木) 01:01:52
>>548 ダイナミックRTLのチェックは外した?
>>548 エラー対処の質問は必ずソースを提示すること。
ソースを見ずにあれこれ言い合っても何の解決にもならない。
ソースは当面の問題に直接関係しないところを省いて、
しかし問題の発生が確認できる必要最小限のものを提示すること。
実のところ、そうやって問題のありかを絞っていくうちに
大抵は自分で解決できるものだが。
エラーじゃないじゃんw
553 :
デフォルトの名無しさん :2005/06/23(木) 16:44:19
よくわからないリンカエラがでるのでご教示を。 C++ Builder 6でプログラムを作成しています。 ヘッダに以下のよう関数宣言されています。 INT16 ELCALLTYPE cmd_printf(char *p, ...); コンパイルすると、リンカエラーが出てきます。 ただ、可変長引数を削除して INT16 ELCALLTYPE cmd_printf(char *p); とするとリンカエラーが出なくなります。が、可変長引数が使えなくて... もともと、VC++を推奨している製品で、その関数を利用しているので そこの問題かなぁとも思うのですが。 可変長引数の仮引数の記述の仕方がVC++と異なるってことはありますか? おねがいします。
ダラダラ書いてても肝心なエラーメッセージは無いのな
555 :
デフォルトの名無しさん :2005/06/23(木) 19:07:02
うるさいよおまえ
>553 確かに、可変長引数の関数のシンボルの付け方が、VC++とはちがうっぽい。 単に_が付くかどうかの差だけなんだけど。 俺もapr_pstrcatとかが全然リンクできなくて BC++対応をあきらめた覚えがある。
557 :
& ◆D3ra0B2LiQ :2005/06/24(金) 00:14:36
>554 そうですね、エラーメッセージなかったです。 [リンカエラー]外部シンボル’_cmd_printf’が未解決 となっています。おねがいします。 >556 う〜む、あきらめられない・・・(^^;) >単に_が付くかどうかの差だけなんだけど。 どこに「_(アンダーバー)」がつくのですか? 「...」以外の記述の仕方があれば試してみようかと思っていますが。
アンダーバーを付加するかどうかなら プロジェクト→オプション→コンパイル(詳細)→出力→下線を生成 で選択できるが、これがリンクエラーの原因かどうかは分からない。
559 :
デフォルトの名無しさん :2005/06/24(金) 01:07:51
XMLDocumentをフォームに張り付けてアプリケーションは 作成できるのですが、フォーム無しでDLLで使用する方法がわかりません。 ご存知の方、教えてください。 参照する情報やURLおよびサンプルコードがあれば教えてください。
>>559 #include <msxmldom.hpp>
#include <xmldom.hpp>
#include <XMLDoc.hpp>
#include <XMLIntf.hpp>
#pragma link "xmlrtl.lib"
でいんでない?
562 :
556 :2005/06/24(金) 01:53:45
apr(
http://apr.apache.org/ )のWIN32版は、
declspec(dllexport) __stdcallなので、非可変引数の関数には_は付かないけど
可変引数の奴は、あえて__stdcallが付けられていないみたい。
ただ、それが原因かどうかはわからないけど、
(いろいろ宣言を工夫しても)正しい呼び出し形式のまま、両方をリンクすることは出来なかった覚えがある。
で、今、さらっとimplibを実行してみたら
-a Add '_' alias for MS flavor cdecl functions
というオプションがあった。
可変引数というのは、要するに__stdcallであっても__cdeclになるということなので
試してみると良いかも。
俺は面倒なのでもうやらないけど
もしうまくいったら報告よろしく。
563 :
556 :2005/06/24(金) 03:07:39
気になったので、一応試してみた。 ヘッダにこう char* apr_pstrcat(apr_pool_t *p, ...); char* apr_pstrdup(apr_pool_t *p, const char * s); 宣言されている関数を bcc32 test.cpp とすると Error: 外部シンボル '_apr_pstrcat' が未解決(F:\TMP\TEST.OBJ が参照) Error: 外部シンボル 'apr_pstrdup' が未解決(F:\TMP\TEST.OBJ が参照) と出る。 で、 implib -a apr_bor libapr.dll libaprutil.dll してから、 bcc32 test.cpp apr_bor.lib とすると、リンクエラーは出ず、正常に動いた。 一応テストコード。 int main(int ac, const char *const *av) { apr_app_initialize(&ac, &av, NULL); apr_pool_t *pool; apr_pool_create(&pool, NULL); char *s = apr_pstrcat(pool, "abc", "DEF", "123", NULL); printf("s=[%s]\n", s); char *v = apr_pstrdup(pool, s); printf("v=[%s]\n", v); }
>>548 自己解決しました。遅ればせながら報告を。
原因:PCのロケールが「英語(US)」になってましたorz
そのせいで全角文字のleadbyteを検出する部分が正常動作しなかったようです。
というわけでお騒がせしました。
565 :
デフォルトの名無しさん :2005/06/24(金) 17:02:46
Builder 5です。 基本的な質問で申し訳ないのですが あるクラスを継承して新規クラスを作成する場合って、手書きで行うのでしょうか。 それとも、VC++のよなwizardで作成可能でしょうか。 TThreadから継承する場合は、新規作成-スレッドオブジェクトで可能なことは発見しました。
566 :
553 :2005/06/24(金) 19:46:45
>562 さん >563 さん implibでオプション-aをつけてやってみたら、 リンカエラーがでずにうまくいきました。 ありがとうございます。問題解決です。 >558 さん 自分の設定では「下線を生成」にチェックがついていたので これはエラーの原因ではないようでした。 でも、ありがとうございます。
>>565 VCLのコンポーネントを継承したカスタムコンポーネントは「新規コンポーネント」から。
VCL以外のライブラリで派生クラスを書くときは自力で書く。
しかし、クラスエクスプローラから新規クラス作れなかったりするのは何とかならんのかねぃ
まぁ、完全に時代遅れのソフトだから。操作性に関してはね。
次世代版はいつ出るんだべか・・・
年末
年内に出てくれるかなー・・・ VS2005は年内に出るんだったよね・・・
573 :
565 :2005/06/26(日) 02:26:56
>>567 サンクスです。
やっぱ基本的には自力なんですね。
winampのように、ウインドウが画面の端に吸着するような動作はどのように実装すればよいのでしょうか?
>> 574 WM_WINDOWPOSCHANGINGで const SNAP_RANGE = 10; WINDOWPOS* wndPos = (WINDOWPOS*)message.LParam; if ((wndPos->flags & SWP_NOMOVE) == 0) { if (wndPos->x < Screen->WorkAreaLeft + SNAP_RANGE) wndPos->x = Screen->WorkAreaLeft; if (wndPos->y < Screen->WorkAreaTop + SNAP_RANGE) wndPos->y = Screen->WorkAreaTop; if (wndPos->x > Screen->WorkAreaRect.Right - wndPos->cx - SNAP_RANGE) wndPos->x = Screen->WorkAreaRect.Right - wndPos->cx; if (wndPos->y > Screen->WorkAreaRect.Bottom - wndPos->cy - SNAP_RANGE) wndPos->y = Screen->WorkAreaRect.Bottom - wndPos->cy; }
C++Builder5です アイコンファイルからSetWindowRgn()に渡すためのマスク用ビットマップを作りたいのですが、OpenJaneViewや Adobe系など一部のアイコンは透過色が8ビットになっているらしく、単色で境界線を判定すると、当然ながら 境界線がきれいに切り取れません。 うまく境界線を切り取る方法について、知恵を貸してください。
578 :
デフォルトの名無しさん :2005/06/26(日) 21:29:09
C++Builder5で、ActiveXコントロール(MSComm)を使って RS232Cでバイナリ受信しようとしています。 OleVariant型にバイト配列として取り込む所までは出来たのですが、 そのデータを取り出す方法が解りません。 OleVariant InBuff; long nRet; byte InputData[2000]; pMSComm->InputLen = 0; pMSComm->InputMode= 1; // comInputModeBinary InBuff = pMSComm->Input; if(InBuff.IsArray()){ //ここには入る nRet=InBuff.ArrayHighBound(); //nRetは241(正規の値) } ~~~~~~~~~~~~~ このInBuffからInputDataに取り出したいのですが・・ どなたか教えて頂けないでしょうか
>>579 よく知らんがOleVariant::operator Byte*()は?
>>580 レス有り難う御座います
恥ずかしながら、それの使い方(構文)が解りません。
教えて頂けないでしょうか?
>>581 ヘルプに載ってるのになぜか未定義っぽい。
Variant::ArrayLock()のがよさげ。
>>577 リージョンから除外したい領域に複数の色が使われてるという意味ですか?
>>582 ArrayLock()で変換出来ました!
助かりました、有り難うございました。
585 :
デフォルトの名無しさん :2005/06/27(月) 19:16:20
libpq.dllを使いたいのですが、 どこかにC++Builder用のLibファイルはないでしょうか? MAKEファイルもうまくいかず、 IMPLIB libpq.lib libpq.dll -a で作成やってみたのですがうまくいきませんでした。 ラッパーもあったのですが、なるべくDLL本体で使いたいので よろしくお願いします。
586 :
デフォルトの名無しさん :2005/06/27(月) 21:08:39
Button1を押すとメモ帳で作ったreadmeを開くようにしたいんだけど どのようにすればいいの?
589 :
586 :2005/06/27(月) 22:25:19
拡張子って.txtとか.javaとかのこと?
でも
>>451 の意味がよくわかりません・・・・
調(ry
>>586 それはメモ帳を起動させてreadmeを見られるようにしたいということかね?
「開く」だけではわからん
>>589 そのレベルならプログラミングより先にWindowsの操作を覚えなさい。
593 :
デフォルトの名無しさん :2005/06/27(月) 23:35:59
AnsiStringとして"TEST\nTEST"という文字列があるのですが、DrawTextに渡すために普通に.c_str()で変換すると 当然ながら\nのエスケープシーケンスがただの文字列のままで改行になりません。 \nをエスケープシーケンスとしてうまくDrawTextに渡してやるためにはどうしたらいいでしょうか?
>>593 DrawText()で
DT_SINGLELINE
を指定してると改行してくれないよ
596 :
593 :2005/06/27(月) 23:58:15
>>593 RECT r;
r.left=0;
r.top=0;
r.right=96;
r.bottom=96;
::DrawText(Image1->Canvas->Handle,"TEST\nTEST",-1,&r,DT_CENTER | DT_WORDBREAK);
と直接値を指定すれば改行されますが、この値がini->ReadString()から読み込んだ値 = AnsiStringなので、
\n(\\n)をエスケープシーケンスとしてchar *に変換したいんです。
>>595 書き忘れました。
DrawText()にはDT_CENTER | DT_WORDBREAKを指定しています。
597 :
593 :2005/06/27(月) 23:59:00
>>596 そら自力で "\\n"を'\n'に変換せな
レジストリとかINIファイルって改行を値に含められないんじゃないの?
iniファイルに value=TEST\nTEST って書いてあるって話じゃ?
文字として\nを書き込んでるってことだろう。 AnsiReplaceStr(text, "\\n", "\n").c_str() を渡してみたら?
602 :
593 :2005/06/28(火) 01:11:11
>>601 その様な関数はないのでStringReplaceで置き換えてみたんですが、構文エラーになるんですが・・・
::DrawText(Image1->Canvas->Handle,StringReplace(Edit1->Text,"\\n","\n",).c_str(),-1,&r,DT_CENTER | DT_WORDBREAK | DT_END_ELLIPSIS | DT_EDITCONTROL);
>>602 ヘルプ見ろ
AnsiReplaceStrは存在する
StringReplaceは引数が
>>601 とは異なる
結論:おまえ馬鹿だろ
604 :
593 :2005/06/28(火) 01:19:30
すんません。 自分のケアレスミスでした。 フラグにTReplaceFlags()<<rfReplaceAll入れるの忘れてただけでした。 表示もできました。 ありがとうございました。
605 :
593 :2005/06/28(火) 01:22:37
>>603 いえ、ヘルプにはありません。
テキスト検索にもキーワード検索にも引っかかってきませんし。
AnsiReplaceStrはBCB6からだよーん、確か。
CppWebBrowserに独自のPopupMenuを割り当てたいんですが オブジェクトインスペクタで指定しても既定の右クリックメニューが 表示されてしまいます。どのようにすれば実現できますか?
608 :
586 :2005/06/28(火) 07:02:08
[リンカ 警告] パブリックシンボル _*** がモジュール C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\test1.OBJ と C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\test2.OBJ の両方に定義されている このような警告が出るのですが、何か弊害はあるのでしょうか?
>611 どっかおかしい場合が多いし 初期化とかが無効になる場合もあるし メンテが面倒になるし
教えて下さい。 ある外部接続機器の状態をなるべく短い間隔で取得し、フォームに表示・更新します。 勿論これ自体は可能なのですが、フォームへの状態表示・更新はそのままに これとは別のフォームも表示し、こちらではキー入力も可能にしたいのです。 単純にやらかすと、状態表示フォームにCPUパワーを全部持って行かれて キー入力フォームをアクティブにすることすら出来ません。 どのようにすればいいのでしょうか?
>>615 それは「状態表示・更新」の方法や更新間隔に問題があるのでは?
617 :
608 :2005/06/28(火) 13:57:23
>>617 ヘルプで検索しろ。
それでも分からなかったらプログラミングなんぞ止めろ。
おまえの脳みそじゃムリだ。
支援機能って言うのかな? Button1-> まで書いたら後に続く候補がポップアップするやつね。 この支援機能ってタイムアウトとかあるんですかね? プロジェクトのあるファイルだけ「構文に誤りが〜」のエラーが出て 上手く働いてくれない。 もちろん、コンパイルは通るし、各行を調べてここからエラーが発生するって 行も見つけたけど、特に問題もない。 途中の行からエラーが出るファイルは、他のファイルよりかなりデカいので、 単にタイムアウトみたいな物なのかなぁと思ってますが。 これの回避方法あったら教えて下さいな。
>>619 憤りを感じるなら
[ツール]→[エディタオプション]→[支援機能]のコード補完を
切ってしまへば良いのである
支援を使いたいのであればCtrl+Spaceを押せば出てくるしな
>>617 意味分からないなら、なんでヘルプやネット検索しようとしないわけ?
ヒントっちゅうか ズバリ正解ワード提示してくれてるのにさ。
その姿勢でプログラミングって、そらあかんわ。
>>619 エラーって、コンパイルエラーじゃなくて支援機能の部分が出すエラー?
624 :
デフォルトの名無しさん :2005/06/28(火) 19:18:12
625 :
デフォルトの名無しさん :2005/06/28(火) 19:45:23
626 :
619 :2005/06/28(火) 20:11:59
>623 そうですね、コンパイルエラーではないです。 [C++ エラー] Frm_Main.cpp(1): ソースコードにエラーがあるためコード補完をおこなえません こういうエラーが出るわけです。 例えば if //( がない Edit1-> と書くとエラーが出るのは当然ですが if(Edit1-> と書いても同様のエラーが出るわけです。 それで、その行だけを消してコンパイルを通すと、問題なくコンパイル出来ます。
俺は単にBCBの補完能力の限界だと思ってるけどな。 ヘッダ内を含めて、ソースを遡ったところに、何か補完機能に理解不能な部分があるんでない? COMとかで例通りにFAILEDマクロ使ってると、確実にそのエラーが出て、補完機能が役立たずになるんだよなー。
>>619 うちも.cppがある程度のサイズを超えると、支援機能はエラーしか
返さなくなるよ。
少しずつコードを小さくしていくとわかる。
なぜエラーになるのか調べてるうちに気づいたけど、BCB6はエラーでも
BCB5では問題なく機能する・・・
>>609 遅レスすいません。ありがとうございます
新規フォームのUnit1.hとUnit1.cppを
書き換えるだけでいいんでしょうか?
>>629 新規フォームにTCppWebBrowser貼り付けた状態で、
#include "mshtmhst.h" を忘れないことと、あそこには書いてないけどTForm1のメンバに
MyDocHandler* dochandler を持たせれば、ほぼコピペでいける。
>>630 コンパイルは通りデフォルトのメニューは表示されなく
なりましたが肝心のオリジナルの方も表示されません。
難しいス
632 :
lo :2005/06/29(水) 09:51:19
お世話になります。 loと申します。よろしくお願いいたします。 ビットの操作が分からなくて、悩んでいます。 大変申し訳ないのですが、皆様の力をお貸しください。 下記のプログラムにて、 bufに格納されている、数値(No)を取り出し、 その数値(No)を書き換えたあと、 再度、bufに格納する。 というプログラムを書きたいのですが、 再度、bufに格納する方法が分かりません。。。 大変お手数ですが、やり方をお教え願えないでしょうか? よろしくお願いいたします。 ********************************************* unsigned charNo; unsigned longbuf; No = (unsigned char)( ( buf >> 14 ) & 0x07l ); // Noに任意の数値を格納する。 // bufに書き戻す。 *********************************************
↑この人って例の質問しては荒らしていったあの人?
>>631 ShowContextMenuの中でPopupMenu1->Popupみたいに自分で呼ぶんだよ
プロセッサの数を取得する方法を教えてください。できればHTかどうかもわかると良いのですが
TCheckBoxをいくつか並べて、処理が進む毎にチェックを入れて その進行状況を示しています。(インストーラみたいな感じ) ユーザーにチェックを入れてもらう為ではないので、それを禁止したいのですが TMemoのReadOnlyのようなプロパティがあれば早いのですがありません。 良い方法を教えてもらえませんか?
dwProcessorTypeじゃないや、dwNumberOfProcessorsだ。
642 :
デフォルトの名無しさん :2005/06/29(水) 13:05:55
C言語で二つの整数値を読み込んで後者が前者の約数であれば BはAの約数です。と表示しそうでなければ BはAの約数ではありません。と表示するプログラム教えてください 二つの整数を入力してください。 整数A:12 整数B:6 BはAの約数です。 こうなるようお願いします
644 :
デフォルトの名無しさん :2005/06/29(水) 13:11:21
645 :
デフォルトの名無しさん :2005/06/29(水) 20:29:15
>>636 virtual HRESULT STDMETHODCALLTYPE ShowContextMenu(
/* [in] */ DWORD dwID,
/* [in] */ POINT __RPC_FAR *ppt,
/* [in] */ IUnknown __RPC_FAR *pcmdtReserved,
/* [in] */ IDispatch __RPC_FAR *pdispReserved) {
TPoint p;
GetCursorPos(&p);
Form1->PopupMenu1->Popup(p.x, p.y);
return S_OK;
}
エラーが出てコンパイルできません
未定義のシンボルForm1
>>646 そのエラーでなんで原因が特定できないのか小一時間問いつめたい
648 :
646 :2005/06/29(水) 22:00:31
ちゃんと #include "Unit1.h"(Form1) しているんですが。
どんなコードになってるか知らんけど、定義の流れ追ってけば、簡単に分かるはずなんだがな。
650 :
デフォルトの名無しさん :2005/06/29(水) 23:35:54
たとえばForm1->Button1をクリックしたときにForm2->OnMouseDownイベントを発生されるにはどうしたらいいでしょうか
uUnit1.h class MyDocHandler :public IDocHostUIHandler { long refcount; public: MyDocHandler() :refcount(1){ } . . . . class TForm1 : public TForm { __published:// IDE 管理のコンポーネント TCppWebBrowser *CppWebBrowser1; TPopupMenu *PopupMenu1; TMenuItem *N1231; private:// ユーザー宣言 //MyDocHandler* dochandler; public:// ユーザー宣言 __fastcall TForm1(TComponent* Owner); __fastcall ~TForm1(); } //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif これじゃだめですか?
>>650 Form1から
SendMessage()でForm2にマウスメッセージを送るとか
Form2->Perform();でForm2にマウスメッセージを送るとか
Form1->OnMouseDown = TForm2->:Button1MouseDown; とか
>>651 MyDocHandlerクラスの定義内で、ShowContextMenuもインラインで書いてるんだと思うけど、
自分がコンパイラだと思って、上から順にコードを辿って
Form1->PopupMenu1->...
ってとこに来た時に、それまでにForm1という文字を見たかどうか考えれば分かるんじゃまいか。
>>653 >>651 の書式だと
ShowContextMenu内のPopupMenu1->Popupで
PopupMenu1が未定義といわれます
class TForm1の後にclass MyDocHandler :public IDocHostUIHandler
とすると
private:// ユーザー宣言
MyDocHandler* dochandler;
が未定義と言われます
655 :
650 :2005/06/30(木) 00:12:12
>>652 あ、それでよかったんですね。盲点でした。
ありがとうございました。
それともうひとつ、Image1からOnMouswWheelイベントを発生させることはできないのでしょうか
>>650 Form1::Button1のOnClickイベント内でForm2->OnMouseDownを直接呼び出したら良いやン。
イベントハンドラも関数だからそのまま呼び出せるよ。必要な引数だけ適当に按配すると。
>>654 そういう時は、ShowContextMenuをインライン定義しないで、ソースのほうに書くとか、
TForm1の後にMyDocHandlerを定義するなら、TForm1の定義の前に、
class MyDocHandler;
と、前方宣言しておくというお決まりのテクニックを使うんだよ。
>>655 TImageは
TWinControlから派生してないから直接はむりだねえ
TWinControlから派生している
TCustomControlから自前で派生クラスのコントロールをつくって
Image1->Picture->BitmapをこのクラスのCanvasにPaint()でDraw()してやる
この自前のコントロールでならOnMouswWheelイベントを処理できるのでは?
こうすれば見かけ上TImageでOnMouswWheelイベントを処理したように見える
PanelのDockSiteをtrueにして、そこにフォームをいくつかドッキングさせてます。 ドッキングされているフォームの一つを任意の幅に変更したいのですが どうやれば良いのですか? WidthやLRDockWidthを色々触っているんだけど、どうも上手く行かない。 DockManager->LoadFromStream( ) で復元は出来ているのですが 最初に起動した際、保存しているファイルがないのでLoadFromStream( )が使えず 丁度幅が50%になっているのを何とかしたいのです。
>>659 >最初に起動した際、保存しているファイルがない
これだけが問題なら
生でAPI使うことになるけど
リソースにユーザ定義データとして初期値を格納しておくってのはダメカナ?
661 :
654 :2005/06/30(木) 06:37:03
>>657 さん
その方法で試したところ見事オリジナルの方を表示する
ことが出来ました
まだC++初めて一週間のど素人に優しく教えていただき
有難うございました
HPで公開させていただきます
662 :
659 :2005/06/30(木) 08:59:44
>>660 え、それは普通にプログラム側から幅を変更する方法がないということ?
私が知らないだけで、Form->Width = 200; 程手軽ではないとしても
幅を制御する方法があるものと思ってたのですが。
663 :
デフォルトの名無しさん :2005/06/30(木) 15:10:09
BCB6でBoostをスムーズに入れる方法ってあります? BCB用の設定とかあるけど、なぜかうまくいかない。
665 :
デフォルトの名無しさん :2005/06/30(木) 19:52:40
DirectshowでIEEE1419接続でリアルタイムにキャプチャできる プログラムってどこかにありますか?探しても見当たらなくて…
667 :
デフォルトの名無しさん :2005/07/01(金) 20:00:09
Length('あいうえおABCDE')は15です。 Length(WideString('あいうえおABCDE'))は10です。
あの Delphiユーザーの素朴な疑問なのですが、 Cって *char で いちいちメモリ確保しないといけないでしょ。 vcl使えるのでありそうなきもするのですが C++は どうなんでしょうか delphiと同じ stringみたいなのがあるのでしょうか?
>>668 Cよりはずっとましだ。
C++標準ライブラリのstd::stringやBCBにはAnsiStringがある。
>>669 お返事ありがとうございます
あったんですか。。。
Cにはないから長年Delphi2つかってたんですけど・・・
じゃあ、次のDelphiからC++Builderが統合されるので
次のバージョンからDelphi言語やめてC++で作っていこうと思います♪
671 :
デフォルトの名無しさん :2005/07/01(金) 22:48:39
AnsiStringを使いこなすには
http://www.geocities.co.jp/SiliconValley/7201/tech.html#AnsiString AnsiString s=" abc_ABC_z ";(前後にスペースが一つずつ入っています) に 対して、次のような操作ができます。
・n番目の文字を取り出す(ただし、s[1]が一番前の文字) s[2] → "a"
・大文字小文字を区別して比較する s.AnsiCompare(" abc_abc_z ") → 1(大 きい。小さいときは-1、等しいときは0)
・大文字小文字を区別せずに比較する s.AnsiCompareIC(" abc_abc_z ") → 0(等しい。大きいときは1、等しいときは0)
・一番最後の文字を取り出す s.AnsiLastChar() → " "(スペース)
・char *へ代入する char *str=s.c_str();
>>671 ありがとうございます。
忘れないようにHDDに.txtで保存しました。
っていうか、VCLはほとんどそのままDelphiからBCBに移植されてるやン。 それに加えてSTL他の標準ライブラリが使える点は有利だな。 その分覚えるの大変だけど。
__fastcall AnsiString(const std::string& src);
↑がないのが気に入らない
>>670 ちなみにAnsiStringとObjectPascalのstring型はメモリ上の互換性がある。
[]演算子でのアクセスもObjectPascal互換で一文字目が[1] (std::stringやchar[]は[0])
なんかAnsiStringの方が遅いって話も聞いたことがあるんだけど
jpeg2000の画像の読み書きが可能なコンポーネントか何かありませんか?
677 :
デフォルトの名無しさん :2005/07/03(日) 01:35:11
Win32APIの勉強をしています。 使ってるはずのOS関連のDLLに対応するlibファイルを書かなくても リンクできてしまいます(オプションは-Wと-wだけです)が、 bcc32がリンカを呼び出すときに勝手に追加してくれてるのでしょうか?
678 :
677 :2005/07/03(日) 01:37:05
あ、コマンドラインでbcc32を使った場合の話です。
>>677 ヘルプにはこんなことが書いてある。
デフォルトでは,BCC32 は C0X32.OBJ,CW32MT.LIB,および IMPORT32.LIB(それぞれ初期化モジュール,ランタイムライブラリ,および Windows インポートライブラリ)を使って ILINK32 を呼び出します。
>>677 kernel32、user32、gdi32あたりの基本的なものは自動リンク。
winmm.libとかはリンクされない。
反対の賛成なのら
683 :
677 :2005/07/04(月) 02:52:19
>>679-680 やっぱりそういうことでしたか。納得しました。
ありがとうございました。
684 :
デフォルトの名無しさん :2005/07/04(月) 04:29:24
プログラム板って荒れてるのか ここは、平和だからわからん。
C++Builderは仕事で使ってる人が少ないから 気持ちが荒れてる人も少ないんじゃないか?
気持ちが荒れても社会人ならこんなとこにぶつけたりしない。
どんなとこにぶつけるの?
エロ本とか。
それはぶっかけるのでは
ワロタ
俺も最近C#ばかり使うようになってから、BCB6起動すると心が荒れる ようになりますた。
コンポーネント活用ガイドのBCB 6版のデータベース編 買ったけど BCB3版のDB活用ガイドに比べて内容薄くなってるな... 参照項目さえろくすっぽ載っってない ダイアログエディタについてもなにも載ってない QuickReportの参考書としてしか使えん
Builderはヘルプと根性があればおk。
そうだよなぁ。 ヘルプを読み解くのに根性いる時あるもんなぁ。(しみじみ)
CppWebBrowserの新しいページにジャンプ するときのカチカチいう音が気に入りません どうやったら消せますか?
698 :
デフォルトの名無しさん :2005/07/05(火) 23:02:57
>>698 資料室にあるサンプルコード。
でも、Delphiのコードだね。
C++ Builderで作られた専用ブラウザってあったと思うけど、何だっけな?
調べて作者に聞いてみるとか?
700 :
デフォルトの名無しさん :2005/07/06(水) 10:01:16
C++BuilderからGeckoエンジンを使う方法 __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { MozillaBrowser1->GoHome (); } //--------------------------------------------------------------------------- void __fastcall TForm1::ToolButton3Click(TObject *Sender) ... homepage2.nifty.com/spw/tips/Gecko.html
701 :
デフォルトの名無しさん :2005/07/06(水) 10:59:55
ブラウザを指定URLで開く処理をやりたいのですが、 どうやったらできるでしょうか?
>ブラウザを指定URLで開く ・・・?? 「指定URLをブラウザで開く」の間違いなら ShellExecute 使え。
703 :
698 :2005/07/06(水) 12:42:03
>>699 ありがとうございます
さっぱり解りませんでした。難しいですね。
>>703 ちみの質問がさっぱり解りませんでした。
ソフトのことよく理解してないんじゃない?
705 :
デフォルトの名無しさん :2005/07/06(水) 14:23:45
カチカチ
707 :
デフォルトの名無しさん :2005/07/06(水) 17:28:28
>>704 さっぱり解らないのに、どうしてソフトのこと理解していないって
解るんだ?
ちみの言ってることが、さっぱり解らないな。
馬鹿にしたつもりが逆に馬鹿にされる704 カコイイ
律儀に夏厨の相手をするおまいらに惚れてしまいそうだ
もうそんな季節か・・・
712 :
デフォルトの名無しさん :2005/07/07(木) 02:03:17
■ShellExecute()
#include <windows>
int main(int argc, char *argv[])
{
// 秀丸を起動する
ShellExecute(NULL, "open", "C:\\Program Files\\Hidemaru\\Hidemaru.exe", NULL, NULL, SW_SHOW);
// 秀丸を起動してD:\TEST\Sample\ReadMe.txtを開く
ShellExecute(NULL, "open", "C:\\Program Files\\Hidemaru\\Hidemaru.exe",
"D:\\TEST\\Sample\\ReadMe.txt", NULL, SW_SHOW);
//
http://www.tagu.info/をブラウザで開く ShellExecute(NULL, "open", "
http://www.tagu.info/ ", NULL, NULL, SW_SHOW);
return 0;
}
Windows APIのShellExecute()は実行したコマンドが終了しなくとも次の行に進んでしまう。
上の例だと次々に秀丸二つとブラウザが一つ開いてしまう。
>>712 ShellExecuteの解説か? それとも質問?
起動した秀丸の終了を待ちたいなら、
CreateProcess()
WaitForSingleObject()
CloseHandle()
の3点セットAPIが使えるな。
gccのmakeは使えますか?
BCB5で使えるフォルダを開くダイアログのコンポーネントはないでしょうか?
716 :
デフォルトの名無しさん :2005/07/08(金) 01:27:03
717 :
デフォルトの名無しさん :2005/07/08(金) 01:30:08
718 :
デフォルトの名無しさん :2005/07/08(金) 01:38:05
719 :
715 :2005/07/08(金) 01:44:40
ありがとうございます。 紹介いただいた方法で試したのですが、オプションで実行時パッケージを使って構築のチェックをはずすと コンパイルできなくなります。 単体で配布したいのですが、どうしたらいいですか?
720 :
デフォルトの名無しさん :2005/07/08(金) 01:47:55
>>719 Unit1.hに
#include <FileCtrl.hpp> //追加
721 :
715 :2005/07/08(金) 01:50:50
>>720 できました。
ありがとうございました。
722 :
デフォルトの名無しさん :2005/07/08(金) 09:14:14
OpenGLを使う
http://homepage3.nifty.com/endou/tips/03/tips29.htm 使用する関 数、クラス
OpenGL
API
OpenGL
ポイント
TFormのCanvasを指定する
Windows98以降で利用できるはずであるが、DLLの関係から か、OSの状況によってはうまく動かないこともある
出典、参考
OpenGLをDelphiで使う(
http://nakg.hp.infoseek.co.jp/ opengl/)
「OpenGL 3Dプログラミング」CQ出版 酒井幸市,2000
OpenGLは3Dではデファクトスタンダードな(?)グラフィックライブラリーです。ただ し、利用するためにはちょっとやかいです。
ホームページと本ににあったのを自分なりに書き直してみました。
OpenGLを利用するためのヘッダファイルUOpengl.hとルーチンUOpenGL.cpp
この2つのファイルをプロジェクトに追加して利用します。
利用例
TMemoのSelTextを取得したいんですが2バイト文字は 一バイトとカウントされてしまうんでしょうか・・・ Memo1の内容 ↓ Memo1あいうえお "いうえお"を選択状態にして ShowMessage(Memo1->SelText); とすると "・い" と表示されてしまいますorz
>>723 再現できまへんな。ちゃんと"いうえお"って表示される。
BCBのバージョンぐらいは書こうな。
726 :
デフォルトの名無しさん :2005/07/08(金) 17:09:07
だまれ
BCB5 Pro使いです。 Eidt1->Textに入力された文字列(1バイト2バイト混在)が64バイトを超えるとカットされるようにしたいのですが、 どうしたらいいでしょうか? ByteToCharLenで丸めた長さの文字数が帰ってくるかなと思ったんですが、うまくいかず困ってます。
728 :
デフォルトの名無しさん :2005/07/08(金) 19:57:26
729 :
727 :2005/07/08(金) 20:06:34
>>728 すいません、書き忘れましたが、64バイトに丸める文字列は、Edit1に入力される以外に直接ストリームから入力
されることもあるため、こちらからも64バイトに丸める必要があるため、特定のコンポーネントにあるメソッドではなく
普通の関数の範囲で処理したいのです。
>>729 情報を小出しにするな。
その場合は、自前で丸めろ。
BCB3のころからそうなんだが TQuery使って IDE環境からSQL文を何度も実行してると メモリエラー起こしてBDEが起動しなくなるよね... もはや個人的には仕様かと思っているんだが むかつく
732 :
723 :2005/07/08(金) 23:15:11
>>724-725 遅れてすいませんBCB6proです
新規プロジェクトでは問題なく取得できます。
なにが原因でこうなるんでしょうか。
BCB3でディレクトリのタイムスタンプを取得するにはどうしたらいいでしょうか?
734 :
732 :2005/07/09(土) 12:37:56
735 :
734 :2005/07/09(土) 12:48:49
ああやっぱりだめです
XPスタイルを適用するとどんな方法であれ
>>723 のような現象が起こってしまいます。
この問題を解消する方法はありませんか?
736 :
デフォルトの名無しさん :2005/07/10(日) 02:50:35
737 :
デフォルトの名無しさん :2005/07/10(日) 11:18:49
738 :
デフォルトの名無しさん :2005/07/10(日) 11:24:25
#define CREATEPROCESS_MANIFEST_RESOURCE_ID 1 #define CONTROL_PANEL_RESOURCE_ID 123 #define RT_MANIFEST 24
739 :
デフォルトの名無しさん :2005/07/10(日) 15:22:17
MSより先に64bitコンパイラー出すくらいでないとな。この先きびしいよな。 VS2005出たら買っちゃうことになるよな。 Builderの新バージョンがVS2005より先に出れば、Builderの新バージョンっていうか統合されたバージョン買うだろうけど その逆ならVS2005買うだろうし、2本もコンパイラ買う金ないしな。
740 :
デフォルトの名無しさん :2005/07/11(月) 23:39:39
こんばんは。現在BCB6Proにてプログラムを組んでいるのですが、Project1.cppにおけるApplication->Run();を削ると何か不具合は発生するでしょうか? 実現したいことは、・Form1のコンストラクタにおける起動準備で何か問題が生じた時に、フォームが一瞬たりとも表示されないように終了する。 ・コマンドライン引数があるときにはForm1のメソッドをいろいろと使いつつ特定の処理をして、フォームを一瞬たりとも表示されないように終了する。・・・ということです。 そこで、問題がおきた時(特定の処理が終わった時)にはフラグを立ててApplication->Run();を実行しないようにすることで、とりあえず目的は達成できました。 しかし、Application->Run();を削ることによって、終了時のいろいろな後始末がきちんとおこなわれているのか不安になりました。 調べたところ、Application->Run();はメッセージループであるからメッセージの処理が必要なければ削ってもよいとの指摘もあれば、実際は暗黙に作られるApllicationウィンドウやFromMainのウィンドウを 破棄するためにWM_QUITやWM_CLOSEのメッセージ処理が必要との指摘もあり、結論はどうなったのかわかりませんでした。 長文で申し訳ありませんが、おわかりになる方はご教授お願いします。
>>740 メインフォームもApplicationもちゃんとデストラクタ呼ばれるし、
CodeGuardも何も報告しないから、大丈夫でない?
742 :
740 :2005/07/12(火) 00:34:38
>>741 早速のご返答ありがとうございます。
メインフォームやApplicationのデストラクタは両方ともしっかりと呼ばれるのですね。(たしかにFormDestroyは呼ばれておりました。)
とりあえず問題なしと考えて良さそうですかね。
ただ、Application->Run();内での処理がトリガーとなって破棄の手順が開始されると思い込んでいたのですが、Run()なしでもOKとなると、どこがトリガーとなっているか謎ですね。
Runのあとはexitくらいしかない気がするんですが。理解できてないので変なことを行っているかもしれません(^^;
Delphiにはアプリ終了時に実行されるfinalizationていうブロックがあるから、破棄の手順を開始するトリガーというのはそれだろう。 WinMainの出口にブレークポイントを置いてステップ実行していけば、 Application.Freeやその他の終了処理にたどり着くよ。
ステップじゃなくてトレースだった
>>742 単にウィンドウを表示させたくないのであれば、
ウィンドウスタイルを変えればいいんジャマイカ?
746 :
デフォルトの名無しさん :2005/07/12(火) 14:26:19
TStringGridでセルが編集されたがどうかをしらべるプロパティーかメソッドがあったら教えてください
セルが編集されたが、どうか?
748 :
デフォルトの名無しさん :2005/07/12(火) 15:20:56
はい
749 :
デフォルトの名無しさん :2005/07/12(火) 15:23:05
ああ、
>>747 は間違いを指摘してるわけですね。
セルが編集されたかどうか と書きたかったんですがね、
まあ言おうとしている意図もわからず言葉の間違いだけを指摘してる奴には何の期待もしてないけどね
750 :
デフォルトの名無しさん :2005/07/12(火) 15:24:06
ここから煽りタイムが始まるわけですね。わかってるよ ↓
自己解決しました
まるであなたの書いたプログラムのようですね まあ言おうとしている意図もわからず言葉の間違いだけを指摘してるコンパイラには何の期待もしてないけどね(藁
教えてください。 TDateTime dt = TDateTime( "1999/01/01 00:00:00:00" ); 上記のコードを英語OSで行うとエラーがでてしまいます。日本語OSは大丈夫です。 たぶん英語OSの日時の書式がMM/DD/YYになってるのが原因だと思うのですが この書式を取得する方法を教えてください
>>753 GetLocaleInfoから手作業で変換とか
ちなみに日本語WindowsでもMM/DD/YYYYに設定してるとEConvertError例外飛んでくるお
>>749 ヘルプすら見ない香具師に言う資格ないと思うがな。
OnSetEditText
>>754 あ、そうですね。英語日本語関係なく書式がMM/DD/YYYYになってると例外おきますねこれ。
GetLocaleInfoから変換を試みて見ます。ありがとうございました。
757 :
740 :2005/07/12(火) 19:49:09
>>743 なるほど、勉強になります。ありがとうございます!
>>745 そうですね。
Application->ShowMainForm=false;
ShowWindow(Application->Handle,SW_HIDE);
を使う方法もありますね。試してみたいと思います。
758 :
みか :2005/07/12(火) 23:59:17
C++Builder5.5なんですがPanelを起動中にドラッグして動かせるようにするにはどうしたらいいですか?どなたか教えてください
女の名前なら答えが返ってきやすいと思ったのかな。 みかだのレイナだのハゲワロスwww
760 :
デフォルトの名無しさん :2005/07/13(水) 00:11:25
Archwayのソースから引用しようと思ったけど名前見てやめた。
761 :
みか :2005/07/13(水) 00:38:23
レイナって誰ですか?本当にどなたか教えてください(;_;)
びっくりするほどユートピア…
>758は見事な釣りだな。
765 :
みかん :2005/07/13(水) 01:58:57
さっさとおしエログズども
766 :
むか :2005/07/13(水) 03:07:26
C++Builder7なんですがPanelを起動中にドラッグして動かせるようにするにはどうしたらいいですか?どなたか教えてください
つっこまない。ぐっと我慢する。
ドピュッ
769 :
デフォルトの名無しさん :2005/07/13(水) 04:12:13
770 :
デフォルトの名無しさん :2005/07/13(水) 09:51:13
void __fastcall TForm1::Panel1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { ReleaseCapture( ); dynamic_cast<TPanel *>(Sender)->Perform( WM_SYSCOMMAND, 0xF012, 0 ); }
771 :
ゲロ :2005/07/13(水) 18:32:10
C++Builder8なんですがPanelを起動中にドラッグして動かせるようにするにはどうしたらいいですか?どなたか教えてください
772 :
沙織 :2005/07/13(水) 19:31:28
C++Builder8.1Application Frameworks なんですがPanelを起動中にドラッグして動かせるようにするにはどうしたらいいですか?どなたか教えてください
773 :
テルミ :2005/07/13(水) 20:19:27
C++Builder8なんですがPanelを起動中にドラッグして動かせるようにするにはどうしたらいいですか?どなたか教えてください
774 :
満子 :2005/07/13(水) 22:01:26
C+++++++++++++++++++++++Builder3.1415なんですがPanelを起動中にドラッグして動かせるようにするにはどうしたらいいですか?どなたか教えてください
受けていると思って繰り返しているなら、やめたほうがよいぞ。
776 :
デフォルトの名無しさん :2005/07/13(水) 23:25:24
なんか ネカマまつりになってしまった。
777 :
デフォルトの名無しさん :2005/07/13(水) 23:26:02
777get
779 :
http://blog.livedoor.jp/junki560/ :2005/07/14(木) 08:44:54
↑の人って、質問しては荒らしていった例の人?
781 :
デフォルトの名無しさん :2005/07/14(木) 10:12:20
782 :
デフォルトの名無しさん :2005/07/14(木) 15:04:13
783 :
デフォルトの名無しさん :2005/07/14(木) 17:42:40
void __fastcall TForm1::ExcelApplication1NewWorkbook(TObject *Sender, ExcelWorkbook *Wb) { }
784 :
デフォルトの名無しさん :2005/07/15(金) 09:44:58
libファイルをプロジェクトに追加していたのものを 不要になってプロジェクトから削除したのですが、 メインプログラムを起動時に削除したDLLを要求されます。 他にもどこか変更しないとだめなんでしょうか?
bpkファイル(テキスト)の中に記述があるならそれを
bprだったかもw
再構築すればいいんでねーの?
788 :
デフォルトの名無しさん :2005/07/15(金) 12:20:39
785>>いけました!ありがとうございます。 787>>再構築だけだとダメみたいです
789 :
デフォルトの名無しさん :2005/07/15(金) 18:16:22
790 :
デフォルトの名無しさん :2005/07/15(金) 21:14:25
#define NO_WIN32_LEAN_AND_MEAN
791 :
デフォルトの名無しさん :2005/07/18(月) 12:38:44
TJPEGImageを使うには、下準備が必要です。 ます、JPEGを使うユニットで”JPEG.hpp"をインクルードします。 次に#pragma link "jpeg"を追加します。 これは、TPicture::LoadFromFileを拡張して、jpegイメージを読みこめるようにするた めにはFakeInitJPEGLibメソッドを呼び出して、初期化する必要があるのですが、この 一行を追加する事によってBCBが初期化してくれます。 こっちの方が初期化のタイミングを考えなくて良いのでお勧めです。 これで、TPictureからも簡単にJPEGファイルを読みこめます。 #include <jpeg.hpp> #pragma link "jpeg" //Image1にimage.jpeを読みこみ表示する場合 Image1->Picture->LoadFromFile("image.jpg"); // TJEPGImageにimage.jpeを読みむ場合 // ↓の場合は初期化なしで読みこめます。 TJPEGImage* pJPEGImage = new TJPEGImage(); pJPEGImage->LoadFromFile("image.jpg"); 保存も簡単に行えます。TImageに表示されたいるグラフィックをJPEG形式で保存する 場合は、TJPEGImageオブジェクトにAssignメソッドを使ってグラフィックをコピーして SaveToFileメソッドで保存します。 その時、JPEGのクオリティーはCompressionQualityプロパティで指定できます。 //Image1の画像をクオリティー50、ファイル名”image.jpg"で保存する TJPEGImage* pJPEGImage = new TJPEGImage(); pJPEGImage->Assign(Image1->Picture->Graphic); pJPEGImage->CompressionQuality = 50; pJPEGImage->SaveToFile("image.jpg"); delete pJPEGImage;
792 :
デフォルトの名無しさん :2005/07/20(水) 08:47:14
メーリングリストの鯖が落ちてる・・・
793 :
デフォルトの名無しさん :2005/07/21(木) 19:06:28
プログラムの中で画像のオプション(「そのまま」「引き伸ばし」「中央に置く」) を指定してImageListに画像を追加する方法ってありますか? ググッっても、ヘルプを調べても出てきません…
794 :
デフォルトの名無しさん :2005/07/21(木) 20:49:28
void __fastcall TForm1::Button1Click(TObject *Sender) { Graphics::TBitmap* tb = new Graphics::TBitmap; ImageList1->GetBitmap(0, tb); Image1->Picture->Bitmap = tb; delete tb; }
795 :
デフォルトの名無しさん :2005/07/22(金) 00:34:50
教えてください。 ListView1->Items->Item[i]->SubItems->Strings[3]にファイルサイズ(バイト単位)が入っています。 これを操作するためにAnsiStringから__int64に変換するにはどうしたらいいでしょうか。
796 :
デフォルトの名無しさん :2005/07/22(金) 00:38:32
797 :
795 :2005/07/22(金) 00:49:01
>>796 あーそうか、StrToInt64を使えばいいのか。
ToIntばかり考えてました。
ありがとう。
QuickReport関連コンポーネントの使い方とか、簡単な解説が載ってるサイトってありませんか? もしくはお勧めの書籍を教えてください。
799 :
793 :2005/07/22(金) 11:04:57
>>794 画像のオプションを指定しなくても、
tbを編集してImageList1に追加すればいいということですね。
ありがとうございます!
800 :
デフォルトの名無しさん :2005/07/22(金) 11:10:46
ListViewにアイテムを追加するために、 for(int i = 0; i < 5; i++) ListView1->Items->Add()->ImageIndex = i; //ImageIndex=0〜4のアイテムを追加 とやっているんですが、個々のアイテムのCaptionも0〜4と指定するには どうすればいいですか?
802 :
デフォルトの名無しさん :2005/07/22(金) 13:55:39
>>801 資料少ないですよねぇ・・・
みなさん、どうやって使い方覚えたんでしょう
本屋行ってみます
>>800 for (int i = 0; i < 5; i++) {
TListItem* item = ListView1->Items->Add();
item->ImageIndex = i;
item->Caption = IntToStr(i);
}
804 :
デフォルトの名無しさん :2005/07/22(金) 20:19:37
TDateTime型を使って現在時刻を取得したんだが、 0:00:00ピッタリの時は時刻が入ってなかった(´・ω・`) 通常だと"2005/07/23 12:34:56"みたいな感じに入っているけど、 0時のときは"2005/07/23"だけだな ガイシュツかもしれんが、知らない人は気をつけてくれ ついでに、0時〜9時59分までは1桁少ないのもミソ
Delphi だと TDateTime は Double 型なんで 少数点以下が時刻で整数部分は日にち。 だから、入ってないとかいうことはない。文字列に移すときだけの問題。
807 :
デフォルトの名無しさん :2005/07/23(土) 18:47:37
Caption = Format("%2.2d", OPENARRAY(TVarRec, (5))); //05
808 :
デフォルトの名無しさん :2005/07/23(土) 18:49:10
数値をカンマ形式に変換したいのですが? FormatFloat 関数を使用すれば簡単に実現できます。 // 9,000 の値で表示される ShowMessage( FormatFloat( "#,###,###", 9000 ));
809 :
デフォルトの名無しさん :2005/07/23(土) 18:50:29
Caption = Format("%2.2d", OPENARRAY(TVarRec, (0))); //00
Caption = EncodeDateTime(2005, 7, 23, 0, 0, 0, 0).FormatString("yyyy/mm/dd hh:nn:ss");
>>808 Caption = CurrToStrF(9000 , ffNumber, 0);
>805は何かの勘違いだろ。 時刻が入っていないという表現も意味不明だし。 TDateTime i=Now();したとき iの整数部だけ置き換わって、小数部は変化しないことを確認したとでもいうのか。
いや意味わかるけど。 Caption = EncodeDateTime(2005, 7, 23, 0, 0, 0, 0).DateTimeString(); としたとき、文字列に時刻部分が含まれてないってこったろ。
そこで、FormatString()ですよ。
815 :
デフォルトの名無しさん :2005/07/24(日) 04:37:03
Caption = Now().FormatString("yyyy'年'm'月'd'日('ddd') 'hh'時'nn'分'ss'秒'");
攻撃されています、解説してください宜しくお願いします
[whois.apnic.net node-1]
Whois data copyright terms
http://www.apnic.net/db/dbcopyright.html inetnum: 220.151.0.0 - 220.151.255.255
netname: usen
descr: U's Communications Corp.
descr: 9-1 Shinsen-cho, Shibuya-ku, Tokyo
country: JP
admin-c: JNIC1-AP
tech-c: JNIC1-AP
status: ALLOCATED PORTABLE
remarks: Email address for spam or abuse complaints :
[email protected] mnt-by: MAINT-JPNIC
mnt-lower: MAINT-JPNIC
changed:
[email protected] 20040722
source: APNIC
inetnum: 220.151.241.0 - 220.151.241.255
netname: ITS-NET
descr: ITS Co.
country: JP
admin-c: AY1568JP
tech-c: YH5793JP
remarks: This information has been partially mirrored by APNIC from
remarks: JPNIC. To obtain more specific information, please use the
remarks: JPNIC WHOIS Gateway at
remarks:
http://www.nic.ad.jp/en/db/whois/en-gateway.html or
remarks: whois.nic.ad.jp for WHOIS client. (The WHOIS client
remarks: defaults to Japanese output, use the /e switch for for
remarks: English output)
changed:
[email protected] 20050112
source: JPNIC
818 :
デフォルトの名無しさん :2005/07/24(日) 06:08:14
stlのstringとAnsiStringの違いを教えてくだすれ
ついでにBCBのiostreamはストリーミング演算子の右辺値としてAnsiStringが使える。
821 :
805 :2005/07/25(月) 17:44:15
亀レスでスマソ
>>813 に似てるかな(同じになるんかな?)
AnsiString aaa = TDateTime(〜, 〜, 〜, 〜);
ってな感じに使ってた
んで、これのaaaの中身が0時の時だと時分秒が
入ってないってことね
>>806 が言ってる小数部が0だとこうなるんかな?
TDateTimeがdoubleだとはしらなんだ
dクス
822 :
デフォルトの名無しさん :2005/07/25(月) 22:20:19
↑この人って例の質問しては荒らしていったあの人?
そのレスはセットになってんの?
次から >>822-
>>824 がセットになる悪寒
826 :
デフォルトの名無しさん :2005/07/26(火) 15:58:36
BCB5 で ActiveX DLLを使おうとしたら、パラメータの省略方法が 分かりませんでした。 Sub Read(ByVal Code As String, [ByVal Delivery As Date], [ByVal Strike As Double]) このメソッドを後ろ2つのパラメータを省略して呼び出したいのですが どうすればいいのでしょうか?
Subってなんだ
828 :
デフォルトの名無しさん :2005/07/26(火) 18:59:38
>Subってなんだ ActiveX DLL のメソッドの説明がVB風になっていたという話です。 sub はsubroutineのことです。
EmptyParam渡しても引数がVariantじゃないからやっぱ駄目なのかな。
Delphiは
>>826 みたいのは省略できず、全部指定しないと駄目とどっかに書いてあった。BCBもそうかも?
引数がVariantか文字列の時はサンプルが見つかったんですが。
831 :
デフォルトの名無しさん :2005/07/27(水) 01:30:37
832 :
デフォルトの名無しさん :2005/07/27(水) 06:08:48
私自身 C++ Builder 6 のファンなんでかが 皆様はどういった 理由で ユーザさん ですか ご教授下さいませ。
ご教授という言葉をネットで使う奴は なぜか大抵日本語が変。
836 :
デフォルトの名無しさん :2005/07/28(木) 00:27:37
フリーコンパイラで、ウィンドウを表示するだけのプログラムをコンパイルしようとしたら、外部シンボル'_main'が未解決(cox32.objが参照)・・・って出てコンパイルできません。どうしてでしょうか?
>>836 WinMain()から始まるプログラムには-Wオプションを指定する必要がある。
Shareみたいなリストビューのツールチップのカスタマイズのやり方が分からない。 普通のコントロールのツールヒントはできたんだけど・・・。 ShareはGUIも凝ってて凄いな。
Shareのコンポーネントが欲しい・・・
841 :
デフォルトの名無しさん :2005/07/28(木) 11:57:18
842 :
デフォルトの名無しさん :2005/07/29(金) 15:20:04
TListView上のアイコンをドラッグ&ドロップしてそのアイコンが指すファイルをエクスプローラ(デスクトップとか)に落とすにはどうすればいいですか?
843 :
デフォルトの名無しさん :2005/07/29(金) 17:17:32
みんなって 何がほしい
>>842 DoDragDrop()、IDropSource
845 :
デフォルトの名無しさん :2005/07/31(日) 11:33:24
マルチスレッドやるんでスレッドオブジェクトを新規作成したんですが これらの異なるユニットで共有するグローバル変数は どのように定義したら良いのですか
TThread 派生クラスそのものはメインスレッドのもの。そのフィールド変数でOK。排他を忘れずに
847 :
845 :2005/07/31(日) 11:51:35
>>846 早々とありがとうございます
すいません、具体例をいただけますか?
848 :
デフォルトの名無しさん :2005/07/31(日) 13:27:23
まいったなあ
D5+BCB5で何の不満もなくて来てたんだけど、
パソコンを 2000からXPのに買い換えたら(もはや2000の選択枝はない)
DLLのデバッグが出来なくなってしまった。 D5からもBCB5からも出来ない。
D5は出来ないというFAQがあったから覚悟してたしD7買ってHDDのこやしにしてたから
D7にゆっくり移動しようと思うのだけど、
BCBって最新バージョンが6だよね? Delphiとバージョンが合わないと不便そうに思うのだけど、
そこらへん大丈夫なんだろうか?
win2000に戻そうと別のHDDにMSDNからインストールしようとしたけど
許諾書が無いとかでインストールできないし、困ったなあ・・・・・
>>847 だから、スレッドってのはメモリについてはタスク全体で共有される=同じメモリ空間だから
特にややこしい定義が必要なわけじゃない。普通に定義すればいい。
ただ、両方から読み書きするようにはしないほうがいい。
volatile宣言して、片方からだけ読むように。
dcc32.dll入れ替えてDel7のVCLソースから再ビルド(ry ライセンス的に大いに問題ありそうだけどな⊂(。Д。⊂⌒`つ
850 :
848 :2005/07/31(日) 14:53:00
ダメだ。 win98を先にインストールしてからwin2000のsetupを実行してやろうと したけど、Win98インストール中にキーボードやマウスを認識しなくなる。 win2000はどうも俺のスキルじゃインストール出来ないや。 BCB6の英語版トライアルを落としてみて XPで DLLのデバッグが出来るようならBCB6を 購入するしかないか。 ってわけで、アップグレードの申込書捨てちゃった。 アップグレード代っていくらだったっけ? アップグレードまで時間がかかりそうだから、 DLLのデバッグだけなんで、BCB6 Personal で間に合わせるとしたら、 「実行中のプロセスへのアタッチと・・・」 ってDLLデバッグはPersonal じゃ出来ないって事なのかな? ああ、わからん
851 :
848 :2005/07/31(日) 15:33:45
852 :
asshole :2005/07/31(日) 16:01:30
853 :
asshole :2005/07/31(日) 16:40:40
indy9をbcb5で利用してもとくに問題は見つからない(見つけきれない?) のですが bcb6でindyを使うと TTCPServerがちゃんと動かない不具合があるのですが 何方か対処法ご存知ないでしょうか こんなことがおきました TTCPServer.Active := true/falseどちらでもいいです オブジェクトインスペクタからのプロパティーの操作に関しては ちゃんと実行時にもその値が反映されていて問題ないように見えるのですが その状態より先は(いったん実行してしまうと)プロパティーにアクセスしても何の反応もしません なので正常な終了は当然できません もちろんそのインスタンスを作ってもやはり何も反映されていないようで(Activeにできない) ただのメモリの塊ができるだけで どう利用したものか・・・ よろしくお願いします
854 :
800 :2005/07/31(日) 16:42:42
>>803 うお!できた。
ありがとうございます!
855 :
デフォルトの名無しさん :2005/07/31(日) 18:24:27
学生の名前と成績で構成される構造体を使って、 一クラス分の表を表示するプログラムを作りたい。 しかし、「学生数は最初に入力するものとする」と 指定されているのです。 これって構造体をいくつ用意すればよいかわからないってこと?? こんな場合どうすれば??
>>855 スレ違い宿題スレ池
#include <vector>
class Student { <略> };
std::vector<Student> s;
for(int i=0; i<student_num; i++) {
Student _s;
_s.name = "ひろゆき";
<略>
s.push_back(Student);
}
>>853 とりあえずIndy作ってるとこに連絡
英語であれこれ書くよりも問題のコードを提示した上で
このコードはBCB5では動くけど6ではここが問題だとか書いておく。
コードは、例えばボタンクリックイベント内に必要なものを全部書いて、
向こうがそれだけでコンパイル/問題をチェックできるようにしておいた
ほうがいい。
つーか今Indy10になってるし、BCB6は見捨てられてるっぽ・・・・
今日、本屋に行ったらVS2005の解説本が売っていた。 ぱらぱらめくったら結構良さそうだった。 つーか、BCB と作ってる人同じなんだから、 もうC#でもいいじゃんって気がしてきた。 このままではVS2005に乗り換えそうだYO!! BCB9の続報でてないですかねぇ・・・orz
>BCB と作ってる人同じなんだから 大きな間違い。 しかし、いろんなツールを使うことは悪いことではないので、VS に乗り換えたら?
まぁ、BCBに未来がないことは確かだ。
道具に未来が無いんじゃない。 そんな思考のあなたに未来が無いって可能性は?
むしろ道具の未来を考えない人の未来は危うい
未来未来ばぁ〜
俺はBCBを使い続けるお
道具に使われてるやつはダメだ 道具を選べないような仕事をしてるやつもダメだ 結局は労働者じゃダメさ
働いたら負けだと思っている
>>860 どのへんが?どっちも Anders Hejlsberg ちゃうの?
それはDelphi
ま、DelphiのRADそのものが、元々VBを真似たものだしな。
RADという概念はVBとは関係ないだろ。
>>870 画面にコンポーネントを貼り付けて、イベントドリブンな組み方をする所が、
DelphiはVBの猿まねだって言ってんだよ。
874 :
848 :2005/08/02(火) 11:24:37
>>851 のそれから
BCB6の英語版トライアルをインストールしてから
BCB5GUIでコンパイルしようとするとリンカでLME279・LME347が出るようになった。
直接 BCC32を呼び出せば出ないけど・・・・
>>872 画面にコンポーネントを貼り付けて、イベントドリブンな組み方をする所が、
VBはFM-TOWNS Gearの(ry
…いや実際、TOWNS Gearは言語もBASICだったしボソボソ
見かけと真の 2-way-tool を混乱するところが厨だな
どっちが先かなんてどうでもいいんだよ。 例えばWindowsは何のマネか、なんてどうてもいいこった。逆に Macはそんな話に花が咲いてるこったろう。 そういう議論してる時点で、もうエピローグは始まってんだって。
878 :
848 :2005/08/02(火) 21:51:50
>>874 は
BCB.exeを ”互換モードでこのプログラムを実行する” にチェックを入れていた為に
起きた問題でした。
DLLのデバッグが出来ない為に、色々試していて元に戻すのを忘れていたようです
>872 Winアプリ作るのにイベントドリブンじゃない方法って何だろう(*´・ω・)(・ω・`*)ネー
ヒント:「画面にコンポーネントを貼り付けて」「イベント関数自動生成」 VBの構想自体誰でも思いつくものなので、猿真似とは俺は言わぬが。
VC++でもダイアログベースで、画面に貼り付けるんだが。 ということは、 VC++もVBの猿真似になるわけかw
あまり正確な論理でいじめると 何一つ言えなくなってAA荒らしに移行するだろうから ほどほどにな。
少なくとも
>>881 は正確な論理ではないわけだが。MicrosoftがMicrosoftの真似ですか。
>VC++もVBの猿真似になるわけかw こうなれば理想郷だったのに、VC++は全くVisual系じゃなかた。 m$的にもC++を撃沈出来てブビチュウを増やせておk、だったらしい。 が、失敗はブビチュウが生育せずキラーアプリを作れない厨でしかなかったこと。 で、ドトネトでブビチュウを廃棄するんだって。
C#。
BCB/Delphi/VCL/VCL.NETは独自路線だけど、C丼よりはC++である分使いまわし利く。
ていうかネイティブコンパイラ以外使い道がない
>>883 放っておいたら「地球人が地球人の真似ですか」とか言いそうだね。
質問です。タイトルバーにアイコンの出るプログラムを実行させようと思っています。 作業しているディレクトリには、icon1.ico、test.cpp、test.exe、test.obj、test.rc があります。 borland c++ builder 6.0 Professionalのbcc32とbrc32を使って 実行ファイルにリソースのリンクがうまくできないのはなぜですか? Borland C++ builder 6.0 Professionalで bcc32 -W test.c でコンパイルした後、 brc32 test.rc test.exeとリソースを実行ファイルに結合します。 リソースのコンパイル、リンクではエラーも何もなしに成功します。 test.exe で実行してみるとアイコンが表示されません。 しかし、Borlandの無料配布されているコンパイラで 同じようにコンパイルした後、リソースをbrc32 test.rc test.exeで結合 するとうまくタイトルバーにアイコンが表示されます。 Professionalで生成した実行ファイルもリソースがちゃんとリンクされていないのか ファイルサイズも小さいです。 C++ builderのbcc32のバージョンは、5.6.4です。 無料のコンパイラの方は、5.5.1です。 OS:windows XPです。
>>892 readme.txt > 注意事項: 一般 > リソーススクリプトファイル (.rc ファイル) を含むプロジェクトの構築時の問題
894 :
デフォルトの名無しさん :2005/08/05(金) 11:39:52
質問です。
C++Builder6(Update#4)でGIFファイルを扱おうと思い、
ttp://www.delphi32.com/vcl/673/ から取ってきた(有名らしい)Anders Melanderさん作のライブラリを
コンポーネントのインストールにてインストールしたのですが、
リンク時に下のようなエラーが出て実行できません。
[リンカ エラー] 未解決の外部参照 '__fastcall Gifimage::TGIFImage::~TGIFImage()' が C:\PROGRAM FILES\BORLAND\
CBUILDER6\PROJECTS\BITMAP\VCLUTILS.OBJ から参照されました
[リンカ エラー] 未解決の外部参照 'Gifimage::TGIFImage::' が C:\PROGRAM FILES\BORLAND\
CBUILDER6\PROJECTS\BITMAP\VCLUTILS.OBJ から参照されました
[リンカ エラー] 未解決の外部参照 '__fastcall Gifimage::TGIFImage::TGIFImage()' が C:\PROGRAM FILES\BORLAND\
CBUILDER6\PROJECTS\BITMAP\VCLUTILS.OBJ から参照されました
vclutls.cppは、Unit1.cppとは別のファイルで、プロジェクトに後から追加したものです。
この中でTGIFImageを使うと、このようなエラーが出ます。
Unit1.cppで使うとなぜかエラーが出ないのですが、分割コンパイルにしたくて、別ファイル
の中で使いたいのですが、無理なんでしょうか?
895 :
894 :2005/08/05(金) 12:05:59
現在のworkaroundは、Unit1にダミーのTGIFImageを扱う関数(実際は呼び出しません)を 置いてコンパイルして、リンカエラーを回避しています。
解決方法は(有名らしい)あそこを参照
897 :
894 :2005/08/05(金) 12:50:48
失礼しました。結局、Unit1.hppに、 #include "gifimage.hpp"の一行を書くだけで解決するようですので、 当分これで行こうと思います。 リンクの順番を変えたらうまく行くのかもしれませんが、こちらの方が簡単 そうですので。 それと、Unit1にダミーの関数を置かなくてもいいようでした。
898 :
894 :2005/08/05(金) 12:53:09
>>896 あそこ?すみません、ちょっとわかりません。
原因は、恐らく、元々のTGIFImageライブラリがDelphi用に書かれているため、
分割コンパイルに対応してないせいかと思ったりしています。
もしよろしかったらURLを教えてください。。
>>5 のどれかだと思うのですが・・・・
>Delphi用に書かれているため、 >分割コンパイルに対応してないせいかと思ったりしています。 ???
900 :
デフォルトの名無しさん :2005/08/05(金) 16:21:41
OpenDialogで開かれるディレクトリを指定したいのですが、うまくいきません。 OpenDialog1->InitialDirに開かせたいパスを指定しているのですが、そのディレクトリを開いてくれるのは最初だけで、 二回目からは、前回ファイルを選択したディレクトリが開かれてしまいます。 OpenDialog1->Execute()をする前にInitialDirにパスを再度指定したり、SetCurrentDirectoryでカレントディレクトリを設定したりしても、 二回目以降は、前回開いたディレクトリが初期のディレクトリになってしまいます。 何か方法はないでしょうか?
InitialDirはその名の通り最初だけ FileNameにフルパス入れればいけなかったっけかこれって
902 :
デフォルトの名無しさん :2005/08/05(金) 16:37:47
>>901 FileNameに入れたら出来ました。ただし、
"C:\\1\\2"だと1が開かれて、入力欄に2が入ります。
"C:\\1\\2\\"だとファイルを開くダイアログボックス自体が起動しません。
なので、
"C:\\1\\2\\*"みたいな感じでやってますが、なんかスマートじゃないですよね。(*の部分は何でもいい)
ここら辺で妥協するしかないですか?
>>902 MSDNのOPENFILENAME構造体のlpstrInitialDirの説明を見るといい。
Win2K/XPの場合、初期ディレクトリはInitialDirよりFileNameのパスが優先される。
だからFileNameに何か入れるんじゃなくて、消してから開けばInitialDirで指定したところが開くようになる。
905 :
デフォルトの名無しさん :2005/08/07(日) 00:44:17
bcb6のソースコードから仕様書を出力するようなツールはありますか? 有料でもよいです
doxygen使っとけ
907 :
デフォルトの名無しさん :2005/08/07(日) 10:18:41
908 :
デフォルトの名無しさん :2005/08/07(日) 13:47:44
あまり自動化にばかり頼ってると、いざという時に
>>905 自身が無能になるぞ。
Doxygenを試用して笑って捨てる気持ちでいないとな。
909 :
デフォルトの名無しさん :2005/08/07(日) 16:58:31
__propertyキーワードを付けて作ったプロパティを別ファイルに置いて、 分割コンパイルすると、リンカエラーが出ます。 具体的には、 class Class { int get(); public: __proprety int data[int x] = {read = get}; }; をfile2.h とし、file2.cppで、このクラスを定義します。 file1.hでfile2.hをインクルードし、file1.cpp内でこのプロパティdata[]を 使おうとすると、 [リンカ エラー] 未解決の外部参照 'Class:get(void)' が FILE1.OBJ から参照されました と言われてしまい、先に進めません。どうすればうまく分割コンパイルできますか?
×__proprety ○__property ただのtypoですすみません。元のプログラムではちゃんと正しく書いています。
単にfile2.objをリンクしてないだけじゃ? いちいちリンク書くの面倒なら#pragma linkでもつかっとけ
>>911 file2もプロジェクトに追加していますから、間違いなくリンクされているはずです。
file1からはfile2にある他の関数もいくつか呼び出しており、そちらはリンカエラー
にならない事から、リンクはされていると思います。
__propertyだけがおかしな動きをするので困ってました。もう少しぐぐって調べて
みます。ありがとうございました。
913 :
912 :2005/08/07(日) 19:21:01
何度も済みません。突然解決しました。 初歩的ミスでした。inline定義してました。ごめんなさい。 それか、ClassをTObjectからpublic派生させ、__property宣言部分を __published:部に入れ、get()を__fastcall呼び出し規約にしてもOKな ようです。お騒がせしました。
int aa = 0xFFFFFFFF; AnsiString buf = Format( "%d", ARRAYOFCONST((aa)) ); これでaaをunsigned intで文字列に変換したいのですが、キャストを行うとコンパイルエラーがでます。 どう記述したらいいですか?
AnsiString buf.sprintf("%u", aa);
AnsiString buf = AnsiString().sprintf("%u", aa);
918 :
デフォルトの名無しさん :2005/08/09(火) 18:00:07
StringGridのコピーを保存したくて CopyGrid = new TStringGrid(this); CopyGrid->Assign( StringGrid ); としたのですが、実行時にエラーになります。 Assignみたいな感じでグリッドをまるまんまコピーする方法を教えてください
919 :
デフォルトの名無しさん :2005/08/10(水) 12:08:42
配列バリアントの要素数を返す関数ってないですか?
C++ Builderなら、イベントハンドラにC言語のソースコードを差し込むだけでもプログラムが作れるようだな。
921 :
デフォルトの名無しさん :2005/08/10(水) 13:22:51
UTF-8でエンコードされているテキストファイルを StringGridで表示させるにはどうしたらいいのでしょうか? Utf8ToAnsiを使用しても文字化けが起こってしまうのですが
どう化けるのか分からんが、 >UTF-8でエンコードされているテキストファイルを 先頭2バイトはUTF-8であることを示す余分な文字コードが入っている。
923 :
デフォルトの名無しさん :2005/08/10(水) 16:08:09
TOpenDialogのOnTypeChangeイベント内で 現在ダイアログに表示されているフォルダを変更する方法を教えてください
\source\vcl\rtlconsts.pasのresourcestring節のメッセージを自作C++クラス内で使いたいのですがどうすればいいのでしょうか? VCLソース上ではException.CreateResFmtメソッドを読んでいる様なのですがBCBのヘルプ上ではCreateResFmtが載ってないようですorz
>>924 例えば SAncestorNotFound なら、
#include <RTLConsts.hpp>
AnsiString hoge = Rtlconsts_SAncestorNotFound;
926 :
924 :2005/08/10(水) 21:36:45
>>925 ありがとうございました
そんなところにマクロが定義されてたのね_| ̄|○
927 :
デフォルトの名無しさん :2005/08/12(金) 07:34:06
ど素人なもんでよくわかりません。助けてください。 MainMenu1のメニューデザイナで「バージョン情報」というのを作り、 「ファイル」→「新規作成」→「フォーム」→「バージョン情報」で作って Unit2で保存しました。実行できたのですが しかし、このUnit2関連のファイル全てを間違えて消してしまい Unit1関連のものしかありません。 実行するとUnit2.hが開けないとのエラーがでます。 そこでUnit2だけ、作り直そうと思ってこの「バージョン情報」をMeinMenu から消したり、ソースコード中のUnit2の名前がある部分を全て消したら、 もっと意味不明になりました・・・。 どうしたら「バージョン情報」の部分がなおるか教えてください。
928 :
927 :2005/08/12(金) 08:42:04
書き忘れました。すいません Unit2のファイルはUnit1とは違う別のフォルダに入ってて、そのフォルダを 消してしまった、ということです。
プロジェクトを作り直してUnit1をコピーしたらどう? というか、ソースファイル名は意味のある名前で作ろうよ
>>927 bprファイルをエディット。BCBのプロジェクトは糞だから、これぐらいは
出来るようになっておくと幸せになれる。
というかUnit1.cppの「#include "Unit2.h"」を消せばいいだけな様な気が‥‥
932 :
927 :2005/08/12(金) 12:22:32
>>931 消すと
「The requested file does not exit. You may creat one of the following file tuypes instead」
ってでてきます、
これをキャンセルすると
「Cannot open file C:テスト\Unit2.cpp」
とでてきます・・・
よくわかりません・・・
>>932 bprファイルをメモ帳などで開いて、
<PROJECT>
<MACROS>
<VERSION value="BCB.06.00"/>
<PROJECT value="Project1.exe"/>
<OBJFILES value="Project1.obj Unit1.obj Unit2.obj"/>
の Unit2.obj というのを削除してみろ。
934 :
927 :2005/08/12(金) 14:33:57
<?xml version='1.0' encoding='utf-8' ?> <!-- C++Builder XML Project --> <PROJECT> <MACROS> <VERSION value="BCB.06.00"/> <PROJECT value="Project1.exe"/> <OBJFILES value="Project1.obj Unit1.obj ..\テスト\Unit2.obj"/> 自分の場合は↑のようのなってました・・ そして消したら 「project rule not found」 とエラーがでました・・・
>>934 どんな風に消したか、編集後も見せてくれ
936 :
927 :2005/08/12(金) 17:17:06
ありがとうございます、解決できました。 ついでといってはなんですけど 新規作成→フォーム→バージョン情報で バージョン情報フォームができますが、 実行後、保存して終了して、またこのフォーム を編集したいのですが、 このバージョン情報フォームを開くには どうすればいいのですか?
>>936 知らん。どう解決したかも開示しない奴に教えない。
938 :
936 :2005/08/12(金) 17:32:00
>>937 あなたに教えてくれとは一言も言っていません。
どなたか教えてください。
941 :
デフォルトの名無しさん :2005/08/12(金) 18:19:18
942 :
デフォルトの名無しさん :2005/08/12(金) 18:57:25
お盆だねぇ
943 :
936 :2005/08/12(金) 20:43:57
938は偽物です。どなたか教えてください。 それとも誰も知らないんですか?
煽るなやw
945 :
デフォルトの名無しさん :2005/08/12(金) 21:05:02
知らないから答えられないんだろお前らw
というか、
>>936 がなぜ分からないか、その方がよっぽど分からん。
一応日本語の読み書きは出来るようだし、IQが80以下というわけでもなさそうだし、
はて?
と書けば、説明できない恥ずかしさをごまかせるとでも 思ってるのだろうか ;-)
メニューの「表示」に「フォーム」ってあるし、ツールバーにも「フォーム表示」ってのあるべ。 プロジェクトマネージャのフォームのアイコンダブルクリックして表示されるし。どれか1個ぐらいは気付きそうだけどな。
ファイル→開く で直接ユニットファイルを開いてもヲケ。 ま、少し調べるか試せば分かることを一々人に聞くなと。
950 :
936 :2005/08/13(土) 00:00:11
ある書き込みが偽物だとわかるのは本物だけなんだがな。 つまり・・・。
騙りの指摘見るの初めてなんですね^^
>ある書き込みが偽物だとわかるのは本物だけなんだがな。 プゲラ
バレてから急に煽り連発しても無駄かと ;-)
948=951=俺だけど、俺が936本人だとしたら、どういう意図の自演なんだ?w
誰も本人とは言ってないと思うがw
>>957 え、俺の勘違い?952の本物って何のことだ
959 :
デフォルトの名無しさん :2005/08/13(土) 11:43:06
C++ Builder の AnsiString 型変数は、Builder 無しで、コマンドラインコンパイラの Borland C++ Compiler だけ組み込まれたパソコンでも使用することはできますか。
>>959 vcl.hでもインクルードしたらどうかしら?
>>959 あらご免遊ばせ。BCBが入ってないパソコン?それは無理ですわ。
_ / ̄  ̄ \ / ヽ l ● ● ハブ──!! | ( l | \ | l ヾ_\ 。 。 ノ ⊂ 、 ` ヽ、 ,/ ヾ _ _ ,ノλ `ヽ ソ ヾ _ _ ノ l ヾ _ _ 丿 ヽ ヾ _ _ ,ノ `` ‐ - ´
普段は、C 言語で MS-DOS プロンプトのプログラムばっかり作ってて、たまに C++ Builder で Windows プログラムを作るときは、ほとんど C 言語スタイ ルでコーディングしてるが、恥か?
966 :
初心者 :2005/08/14(日) 21:11:49
初心者で基本的な質問で恐れ入ります。 C++Buidlerで作成したTForm1などのClass関数からLinuxから移植した別ファイ ルのC言語の関数を呼ぼうとするとリンクエラーが出てしまいBuildできませ ん。TFormを含むUnit1.cppでローカルのC言語関数を定義した場合には、正常 にBuildできて実行できるのですが。。。 どなたか分かる方教えて頂けないでしょうか?
自称初心者は嫌われるぜ
あと、初心者の分際で質問のレベルを勝手に「基本的」だと判断するな。 最初の一行と最後の一行は要らなす。
>>966 すでに答は出ているけど、それは、C++Builderの問題ではなくて、
C++とC言語を混在させる場合に一般的に起こる問題。C++Builder固有の話
じゃないので、理由は説明しないけど、extern "C"でぐぐるとよいかも。
メンドクサイなら、Linuxから持ってきた .cファイルを .cpp に改名する。
.cなファイルをコンパイルしたときと、.cppなファイルのときでは、コンパイラが
出力するラベルの形式が違うのだ。なぜラベルの形式が違うかというと、
C++は同じ名前の関数を複数宣言して引数の型で区別するということを許して
いるから。
>>967 ,968
気持ちは分からんでもないけど、文句をつけるだけってのはよくないぞ。
マングってみました
974 :
デフォルトの名無しさん :2005/08/16(火) 11:09:17
TOpenDialogのOnTypeChangeイベント内で 現在ダイアログに表示されているフォルダを変更する方法を教えてください
TCppWebBrowserについての質問です。 例えば改行のない長い一行の文章があった場合、HTMLによっては 横方向にスクロールバーを表示せず、折り返して表示します。 仮にTCppWebBrowserのWidthが400であって、それでは足りない場合 折り返されるわけです。 そこでTCppWebBrowserのWidthがいくつであれば折り返されないのか?を 知りたい場合、それを調べる方法はないものでしょうか? 言い方を変えると、そのHTMLを表示するのに必要なWidthとHeightの値を 得る方法ということです。 IHTMLElement2 *el2; el2->get_scrollWidth(&s); el2->get_clientWidth(&c); scrollWidthやclientWidthを参照してみましたが、これはWidth値が 設定されているTCppWebBrowserに描画されたHTMLに基づいた 数値でしたのでダメでした。
976 :
975 :2005/08/16(火) 16:39:54
追記 イメージとしては、CalcHintRect のようなイメージです。
こんにちは、質問です。 TObject *Sender この時Senderのハンドルはどうやって取得すればいいのでしょうか。 お願いします。
>>978 if ( TWinControl* ptr = dynamic_cast<TWinControl*>( Sender ) )
HWND hndl = ptr->Handle;
キャストする先はケースバイケース。自分で考えるべし。
>>979 なるほど、Handleが取れればTEditだろうがTLabelだろうが
関係ないって事ですね。サンクス。
>>980 >なるほど、Handleが取れればTEditだろうがTLabelだろうが
>関係ないって事ですね。サンクス。
if ( TEdit* ptr = dynamic_cast<TEdit*>( Sender ) )
HWND hndl = ptr->Handle;
なことを言ってるんなら呼び出し元がTListViewとかだったりするとキャストに失敗して例外飛んでくるぞ。
単純にハンドル欲しいだけならTWinControlでもいいが
Senderを処理するってことは送られてくるSenderの実際の型はコーディング時に分かってるはずだからその型にキャストした方がいいかと。
982 :
979 :2005/08/21(日) 15:37:51
>>981 >なことを言ってるんなら呼び出し元がTListViewとかだったりするとキャストに失敗して例外飛んでくるぞ。
それは嘘。
例外が送出されるのはキャスト先が参照で、キャストに失敗した場合。
キャスト先がポインタなら、キャストできない場合、単にヌルポインタが返る。
てか、だから ifでくくってんだけど。
983 :
デフォルトの名無しさん :2005/08/21(日) 16:42:34
TOleContainer に Word 文書を入れると、 背景色が灰色で表示されてしまいます。 Word 文書だから背景色を白で表示したいのですが、 どのようにしたらよいでしょうか。 よろしくお願い致します。
移動するまでにBCBが生き残ってるかどうか…
9を拝むまでは死ねないよ・・・
>>983 関係ないけど、実行時にダブルクリックしたらびびった。
編集できたりフォームに勝手にツールバーまでついたりして…なんかすごいなActiveXって。