1 :
デフォルトの名無しさん :
03/08/23 08:22 C++Builderに関する質問・回答や議論等を行う相談室スレッド。
過去スレ・関連サイトは
>>2-5 あたり。
2 :
デフォルトの名無しさん :03/08/23 08:22
3 :
デフォルトの名無しさん :03/08/23 08:23
4 :
デフォルトの名無しさん :03/08/23 08:23
5 :
デフォルトの名無しさん :03/08/23 08:23
6 :
デフォルトの名無しさん :03/08/23 08:26
BCB6Pro. Win2kSP4 Indy 9.0.11にて IdHTTPコンポーネントのことで質問します。
ブラウザで
http://www.vector.co.jp/vpack/filearea/winnt/net/www/fehiwhf.htmにアクセスすると 、
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<TITLE>Not Found</TITLE>
</HEAD>
:
:
てな具合にソースを取れます。
BCBで
---------------------------------------------------------------------------------
AnsiString strurl = "
http://www.vector.co.jp/vpack/filearea/winnt/net/www/fehiwhf.htm ";
AnsiString strtmp;
try {
strtmp = IdHTTP1->Get(strurl);
}
catch ( ... ){
}
---------------------------------------------------------------------------------
とやった場合、strtmpには何も入りません。
ブラウザと同様なhtmlソースをstrtmpに受けるためにはどうすればいいのでしょうか?
今はWinInetで誤魔化していますが、他の部分でIdHTTPを使っているため、
IndyとInetの併用というのが気に入らないのです。
try { strtmp = IdHTTP1->Get(strurl); } catch (const EIdHTTPProtocolException& e) { strtmp = e.ErrorMessage; } で、出来てるっぽい
8 :
デフォルトの名無しさん :03/08/24 00:07
>>7 おぅ、ナーイス、取れました
ありがとうございまーーーした、これでInetを消せます。
9 :
デフォルトの名無しさん :03/08/29 10:02
デバッグ情報があるとかないとかってわかるすべありますか? いやBuilder5使ってんだが、これってデバッグ情報入ってっと Builder5がインスコされてない環境じゃうごかないから
10 :
デフォルトの名無しさん :03/08/29 15:20
デバッグ情報入れないでビルド。 以上。
12 :
デフォルトの名無しさん :03/08/29 17:41
すみません。おしえてください。おねがいします。 Editボックスで、文字を右詰めにするのって出来ますか?
14 :
デフォルトの名無しさん :03/08/29 17:47
おいさっさと
>>9 を教えてくれやカス共よ(´,_ゝ`)
>>9 デバッグ情報の有無がなんか影響するんだっけ?
ともかく知りたい理由が配布のためなのなら、配布のときに
リリースでリビルドすりゃいいんじゃないの?
テンプレにあるサイトは一通り見たのですが、分からなかったため 質問させていただきます。 C++Builder 6.0で、コントロールにポップヘルプを出したいのですが、 目的のコントロールがEnabled=trueの時は、マウスを持っていくと ヘルプが表示されるのですが、そのコントロールのEnabledが falseの場合、表示されません。 TSpeedButtonはEnabled状態に関わらず、表示されるのですが、 TButtonやTEditなどでは、Enabledがfalseの場合では表示されません。 なんとか、TButtonなどでもEnabled状態に関わらずヘルプを表示 させたいのですが、どなたかご存知ありませんでしょうか?
19 :
デフォルトの名無しさん :03/08/29 19:48
こんばんは C++Builder5.0使い始めて1日目(全くの素人)、今勉強中です。 [ファイル]⇒[新規作成]⇒[コンソールウィザードを選択]として使い始めているのですが、 [プロジェクトに名前を付けて保存]を使って保存しているのですがうまく保存できないです。 [プロジェクトを開く]を使っても以前に書いていたコードが出てこなくて エディタに 「USEUNIT("scriptkihon03082501.cpp"); //--------------------------------------------------------------------------- This file is used by the project manager only and should be treated like the project file main」 としか残されていませんでした。 保存の方法が悪いのか開き方が悪いのかわからず、クイックスタートとか見ながら 悪戦苦闘しています。知っている方よろしければ教えていただけないでしょうか? ちなみにユニットもオブジェクトもCファイル形式(*.cpp)dで保存して そのあとのオブジェクトも(*.obj)で保存しています。 OSはWindows Meです。
>18 TPoint pntXY; FindDragTarget(pntXY,true) というメソッドで、スクリーン座標にあるコントロールが取れるのですが、 この座標にあるコントロールのEnabledプロパティがfalseの場合、コントロールが 取れないでParentのFormとかが返って来てしまいます。 Enabled=falseのコントロールは、コントロールとして扱えないということでしょうか? ちなみにApplication->OnShowHintのイベントハンドラで、上記のメソッドから コントロールを取って、HintプロパティをイベントハンドラのHintInfo.HintStrに セットしようとしたのですが、ダメでした(´Д`;)
21 :
デフォルトの名無しさん :03/08/29 21:41
引き続きプロジェクトごと保存を試みていますが、今のところ失敗続きです。 [プロジェクトに名前を付けて保存]でファイル形式にCファイル(*.cpp, *.hpp *.c *.h) さらにC++Builderプロジェクトファイル(*.bpr)でも保存していますが、 後日ファイルを開くときにユニットエディタに最後に書き込まれた状態から リスタートしたいのですが、上の19みたいな状況になっているわけですが・・・ このままではCファイルに保存したメモ帳からコピペするしか方法がないのでしょうか? 誰か解決方法を教えてください!おながいします
>22 「すべて保存」してみ?
>>23 今先ほどそれを試してみましたが駄目でした。
19のときと同じように
「USEUNIT("scriptkihon03082501.cpp");
//---------------------------------------------------------------------------
This file is used by the project manager only and should be treated like the project file
main」
になるだけでした(TдT)
>>24 「表示」→「プロジェクトマネージャ」を選択するとツリービューがでるから
展開して*.cppファイル等を選択でどうかな?
tdstrp32 -s *.exe とやって、シンボルテーブルが表示されればデバッグ 情報付きとか。
>>25 問題解決のヒントを下さいましてありがとうございます。
[表示]⇒[プロジェクトマネージャ]⇒[ツリー表示される]
*cppがなかったのですが、*.exeと書かれたエディタを選択しても解決出来ました。
>>23 >>25 ありがとうございます。
>>26 デバック情報はわかりませんでした。
28 :
デフォルトの名無しさん :03/09/01 17:16
>>17 そうなんだがさ、exeだけ見てもどっちかわからんからアレよ
配布すっ時いちいちBuilder5立ち上げてデバッグ情報あるかないかみるのめんどいから
それじゃ、こんなのはどうだ? バージョン情報を埋め込んで かならずデバッグとリリースでマイナーバージョンを偶数、奇数のように区別する。 ちなみにexeのバージョン情報は右クリックのプロパティから確認できるyp
>>28 tdump.exeかけてみれ。シンボル埋め込まれているかどうかすぐわかるから。
31 :
デフォルトの名無しさん :03/09/01 22:40
builder5がインスコされてない別マシンで動くか確認すりゃいいじゃん。 LANでサクッと。
別マシン立ち上げるのが面倒くせえよ。
>>29 そうそう、それ系の方法がいいんだけどさ、
コンパイル時に、いちいちバージョンをアレするのってちょっとめんどいかなあ
わがまま言ってすまんけどさ。
34 :
デフォルトの名無しさん :03/09/02 11:40
FormatStringで平成とかの出し方を教えて下さい。
35 :
デフォルトの名無しさん :03/09/02 19:35
TActionList で、カテゴリ A の下にアクションを 幾つか (B とか C とか) 設定したとします。 プログラムでカテゴリ A に分類されている 全てのアクションの Caption プロパティを 取り出すにはどうしたらいいのでしょうか?
全てのTActionのCategoryを見る。
あ…ヘルプ見て悩んでましたが、TAction って
TContainedAction から派生していた型なのね。
「TAction 型ってどこに収まるのよ」って悩んでました。
>>36 アリガd
結局 1 つ 1 つ Category プロパティを見ていくしかないのね。
function Hoge(ActionList: TActionList; Category: String): TStringList; var I: Integer; begin Result:=TStringList.Create; for I:=0 to ActionList.ActionCount-1 do begin if SameText(Category, ActionList.Actions[I].Category) then Result.Add(TAction(ActionList.Actions[I]).Caption) end; end; 結局ってこれだけの話じゃん。Delphiだけど
39 :
デフォルトの名無しさん :03/09/03 19:57
クリップボードについて教えてください。 クリップボードからバッファ経由でテキストデータを取得したいのですが、 TClipboard::GetTextBuf のヘルプには、 「テキスト全体を入れるのに必要なバッファの文字数を調べるには, GetTextLen メソッドを呼び出してから GetTextBuf メソッドを呼び出します。」 とあります。しかし Clipboard()->GetTextLen(); はエラーになります。 TClipboard::GetTextLen()メソッドはないようです。 どのようにして、受け取るテキストデータサイズを取得すればよいのでしょうか。 (ヘルプは単なる間違い?でしょうか) C++Builder 5.0 Build[12.24] Update Pack 1
お願いでござる。どなたか教えてくださらんか。 拙者、困っており候。
ほんとだ。片手落ちっぽい… AsTextでは駄目?
うーん。Openのとこにある例を利用して int TextHandle = Clipboard()->GetAsHandle(CF_TEXT); char * pText = (char *)GlobalLock((HGLOBAL)TextHandle); int Len = StrLen(pText); で求められることは求められるけど、文字列取得なら二行目で充分。 APIもこの手順だし……GetTextBufを使わねばならない理由はなにさね?
を・・・レスが2個もついている。
>>41 Clipboard()->AsText.Length() で大きさを取得できました。
ヘルプのGetTextLen()メソッドの記載は間違いのようですね。
>>42 この方法は全然知りませんでした。
バッファに読み込んでいろいろ加工を加えたかったもので・・・
GetTextBuf+GetTextLenがヘルプに書いてあり簡単そうだったので・・・
この方法にこだわり過ぎたようです。
>>41 さん
>>42 さん さんくす
Linux上でgccを用いてコンパイルしたプログラムがあります。 そのプログラムをC++Builderでコンパイルしようとすると以下のエラーでます。 エラー1 宣言に型が多すぎる typedef short int bool; エラー2 宣言が正しく終了していない const bool false = 0; エラー3 符号付き値と符号なし値の比較 if(x > y) gccとBuilderでは同じC/C++コンパイラでも違いがあるみたいです。 ソースをgccからbuilderに変更する方法やHPがあれば教えて下さい。 また,Builderでgccコンパイラ用のコンパイル方法があれば教えて 頂きたいです。 この問題で今悩んでいるのですが、神さまお頼みします。
…Cのソースを拡張子を.cppにしてない? Cだとboolは存在しないので、bool, falseなどを自前で定義しているコードは有効。
>>44 > typedef short int bool;
おかしいなぁ C++Builder 6 で、C言語としてコンパイルさせてみたけど、
ちゃんと通るよ。これが通らないと、
それ以後にある bool を使った宣言は全滅すると思うから、
> const bool false = 0;
が通らなくっても不思議はない。
> 符号付き値と符号なし値の比較
> if(x > y)
これって、警告じゃないの? キャストしたら?
・・・と、ここまで書いて気がついたけど、
boolは、C++としてコンパイルするときは、予約語だね。
メニューの、プロジェクト→オプション→C++ に、
「コンパイルモード 常にC++と見なす」という項目があるけど、ここのチェックをはずすと
いいかも。実際、C++として〜のチェックをオンにすると通らなくなる。
ちなみに、true, false も C++ では予約語。
>>45 さん,
>>46 さん,
>>47 さん レスありがとうございます
拡張子.ccを.cppに直してからC++言語としてコンパイルしていました。
C言語にすると通りました。ありがとうございます。
>> 符号付き値と符号なし値の比較
>> if(x > y)
>これって、警告じゃないの? キャストしたら?
すいません、警告でした。
神様,感謝します。ありがとうございました。
通ったのですが,新たなエラーが出てきてしまいました。
エラー1
.が必要
typedef __stl_mbstate_t mbstate_t;
エラー2
'_true_type'型のサイズは未知あるいはゼロ
struct __true_type {};
エラー3
宣言の構文エラー
template <int _Is> struct __bool2type { typedef __false_type _Ret; };
以上のようなエラーがでています。
プログラムがまだまだ未熟で質問がわかりにくいかもしれません。
神様お願いします
エラー1は_mbstate.hというファイルないで エラー2はtype_traits.hというファイルになっております。 これらのファイルは,同じフォルダ内にはないのですが・・・
泥沼化のよかーん。 44にあったのがCのソースなのに、今回はC++だね。
linuxではうまくコンパイルできたのですが・・・ 同じC/C++でもコンパイラの違いは大きいのでしょうか?
コンパイラの違いの問題ではないと思うぞ。linux でコンパイルできたっていうのだって、 なぜうまくコンパイルできたのか理解しているようには思えないし・・・ 単に、何かの本に書いてある通りに configure あたりを実行して全自動で make しただけでしょう? ソースを見てナニをやっているか理解できないなら、コンパイル済みのバイナリを 使ったほうがいいよ。もちろん、勉強してみようと思って別の環境でコンパイルを 試してみるということ自体は、非常にいいことだと思うけど、まだちょっと、時期が 早いんじゃないかなぁ
>>52 さん レスありがとうございます。
おっしゃる通りだと痛感しています。
makeを使って以下のように処理しております。
$ make
g++ -DUSEOWNLOG2=1 -o sample sample.cc a.cc b.cc c.cc
もう少しだけ考えてみようと思うしだいです。
templateなんて出てくるってことは、やっぱりC++なんだろうなあ。 昔のコンパイラ対応でboolを定義してあるところを gccしか想定されて無いため#ifdefの切り分けをすり抜けてしまってる予感
>>54 さん レスありがとうございます。
>templateなんて出てくるってことは、やっぱりC++なんだろうなあ。
classの方も使われてましたのでC++だと思われます。
>昔のコンパイラ対応でboolを定義してあるところを
>gccしか想定されて無いため#ifdefの切り分けをすり抜けてしまってる予感
流石にできる方が見るとそこまでわかるのですね。
おっしゃる通り,#ifdefのところですり抜けてが関係ありそうに思います。
以下にエラー1,エラ−2とBORLANCに関係ある記述を書きます。
borland関係
#ifdef __BORLANDC__
#define NOBOOLEANTYPE
#define NOBOOLEANVALUES
#endif /* __BORLANDC__ */
エラー1
#ifdef NOBOOLEANTYPE
typedef short int bool;
#endif /* NOBOOLEANTYPE */
エラー2
#ifdef NOBOOLEANVALUES
const bool false = 0;
const bool true = 1;
#endif /* NOBOOLEANVALUES */
まだもう少し解決策を考えてみようと思います。
すいません、はじめから書いておけば・・
>>55 ・・・
すり抜けっていうより、積極的にぶつけてるように見えるが。
いったいどういう由来のコードなんだ
今更boolの無いコンパイラのこと考えてもしかたないし、
>>55 で引用された箇所はがさっと消して問題ないんじゃ…
(にしてもこれ書いた人はBorland C++を何と思ってるのだろう)
>>58 実は、ターボC用に書かれた条件コンパイルだったりして。
>>58 さん
>>59 さん レスありがとうございます。
>>58 >いったいどういう由来のコードなんだ
コードはjpeg関連のソースになるんですが,
以下のところにtempという名前のファイルで置いてみました
ttp://briefcase.yahoo.co.jp/builder71jp >
>>55 で引用された箇所はがさっと消して問題ないんじゃ…
消してコンパイルしましたら,解決できました。
また,別のところでエラーが起こってしまいました。
エラー1
式の構文エラー
Assert(NEAR < 256);
エラー2
式の構文エラー
if (NEAR) {
>>59 >実は、ターボC用に書かれた条件コンパイルだったりして。
そうなのかもしれません・・
もう少し試したいと思います。
だめだよ、これは、本当に泥沼化の予感がする。 ソースコードの内容を理解することなしに、 ワケも分からずモグラ叩き方式でソースを壊しているだけで、 最終的にコンパイルできたとしても、正しく動作しているかどうか わかったもんじゃない。そんなの解決でも何でもない。 「ファイルの中味を全部消して void main(void){} と、書き直したら、 コンパイルできました。でもまだ警告が出まっす」
>>61 さん レスありがとうございます。
途方もないかもしれないので,あきられたくなってきました。
はじめは,うまくBuilderがやってくれるだろうと甘い期待を
寄せていましたが,実際にそれは都合が良すぎたみたいです。
それ以前に,自分にはあり余るほどのものだったのだと思います。
BCBってコンソールアプリの製作や、Win32APIだけでコツコツとプログラミングできますか?
64 :
デフォルトの名無しさん :03/09/07 15:12
>>63 できるよ。
bcc32 test.cpp でコンソール(main)
bcc32 -W test.cpp でウインドウアプリケーション(WinMain)
C++Builderって、BCC + VCL みたいなもんだからねぇ。
BCB = BCC + VCL + OWL + MFC + ATL + IDE
66 :
◆AHE7By/jjo :03/09/07 21:41
BCB6 Personalで質問です。
エディタ上にマウスカーソルを持っていくと、数秒間PCが固まった後に
宣言情報などが書かれたヘルプチップが表示されます。この機能を止めようと思ってググって見ると、
http://www.borland.co.jp/qanda/cbuilder/c0009444.html が見つかったのですが、書いてある通りに設定を変更しても相変わらずチップが出てきます。
一応構文強調表示を行わないようにすればチップの表示はとめることが出来るのですが、
ソースが読みにくくてたまらんです。
解決策をご存知の方が居たら、教えてください。
>>66 Personalだとその機能のON/OFF用チェックボックスがない気がする。
そもそも、PerspnalのIDE結構いい加減な作りな気がする。
OutputDebugStringもIDE側で持って行ったまま行方不明になるし‥‥(´・ω・`)
68 :
◆AHE7By/jjo :03/09/08 00:31
一応メニューで「ツール」>エディタオプション>支援機能で、それらしき物はありますが…。
ちょっと聞いてくれよ〜〜 TListBoxのAddItemの引数のTObject*に適当にデータいれて使おうとしてんだ けど、例えば OnDrawItem で取り出そうとしても null しか返って来ないんだよ。 1時間くらい格闘して、ざけんなってVCLのソース見たら宣言だけで実装が空... Help読んだらTStringsではObjects[]ではnullしか返しませんって... そういう大事な情報はTListBoxの最初のヘルプに乗せといてください > 某国さん
>70 Builder6?
72 :
デフォルトの名無しさん :03/09/10 02:03
おまえらバージョンくらい書け馬鹿野郎でございますです。
インストール成功した人居る? main distribution を入れようとがんばったんだけど、 どうしてもうまくいかないっす。 成功なさった方、手順教えていただけます? Windows XP Theme Manager は入ったんですけどね。 当方、Builder6アップデートパック #4 あて済みです。
下のほうの Virtual Treeview for C++ Builder は? 前に同じ質問あって試したけど、あっさりインストールできた気がしる。 で、なんか for BCBのほうのバージョンが古いっぽかったから、main distribution のソースを for BCBのほうに上書きしたんだけど、それもインストールできたはず。
>>71 Builder6でちょっと自己解決、OnMeasureItem 実装の問題だな。
OnMeasureItem 実行時 Objects[] は無効
AddItem メソッド終了後 Objects[] は有効
TStrings の問題じゃなかったよ。すまん。
AddItem 時点で直後に呼び出される MeasureItem では Objects にはまだ値が
セットされていないので、Objects[] 使って高さとか受け渡す事が出来ないわけだ。
なんだかな〜〜
それなら納得。
どなたか教えてください C++Builder6はMEで動作しますか?
納得しないでくれよw void __fastcall XXXX::ListBoxMeasureItem(TWinControl *Control, int Index, int &Height) { MyItem* item = dynamic_cast<TListBox*>(Sender)->Items->Objects[Index]; Height = item->Height; } って取り出せるのに、この時点でObjects[]が無効だと void __fastcall XXXX::ListBoxMeasureItem(TWinControl *Control, int Index, int &Height) { MyItem* item = &myCollection[Index]; Height = item->Height; } とするしかなくて、myCollectionと結びつきが出来ちゃうのでやだなと 純粋にMyItemだけを扱いたいのよ。
コンパイラも同じ動作環境「98,2000,XP」となってましたが bccは問題なく使えていますですよ
82 :
デフォルトの名無しさん :03/09/11 11:00
おまいらC++Builder7っていつでるのよ?
8, 9 を飛ばして 10 位で出るんじゃないかな?
今度はバージョン番号でないと予想。 C++BuilderXPとかC++BuilderMXとかC++Builder.NETとか。
87 :
デフォルトの名無しさん :03/09/11 16:29
わろた。 あわせてかっちまえ。
89 :
デフォルトの名無しさん :03/09/11 16:55
Amazonでアカデミック版買うとき身分証明とか必要なの?
90 :
デフォルトの名無しさん :03/09/11 22:57
91 :
デフォルトの名無しさん :03/09/11 23:06
>>87 ぎゃははは・・・
誰かが、この両方を同時に買ったんだろうね。
で、アマゾンのデータベースに、この2冊は関係が深いのだと記録されたと。
『このソフトウェアを買った人はこんなソフトウェアも買っています 妻みぐい 2 アリスソフト 』
amazonわらかしてくれるぜ アーヒャッヒャヒャ キェーヒェヒェ ギャーハハハハハハッハハ (゜∀゜)(゜∀゜)(゜∀゜)
>>87 なんか、そんな奴がBuilder使ってるのかと思うと鬱だ。
96 :
デフォルトの名無しさん :03/09/12 02:40
97 :
デフォルトの名無しさん :03/09/12 02:47
どうせ複数の人で同人ソフト買ってピーコして分けたと思われ。
お前と他の人を同じ次元で考えるなよ。
100 :
デフォルトの名無しさん :03/09/12 20:58
バイナリが設定された、AnsiStringをそのままファイル出力する方法はありますか?
アンシストリング アリスソフト 似てる??
> C++BuilderX Developer > 512MB RAM recommended minimum アホかと。
Xたん(;´Д`)ハァハァ
複数のコンパイラが使える以上、拡張構文やらDelphiとのリンクやらが必要なVCLはあぼーんしか無いかな… LinuxのところがIntelとgccだけで、Kylixで用意されたbc++が無いのが気になる
Delphi言語のVCLをC++で使うというのに無理があった。
∧,,∧ .NETで ミ,,゚Д゚彡 C++からVCL.NETを ミ つ旦)~~ 呼べるようには 〜と,,,~),,~) 作られないのかしら。 それとは別にCBXの需要は確かにあるわけだが マルチプラットなJavaIDEとは ちょっと驚き。 ……といってしまったけど、あれってSwingだよね?
wxWindowsじゃないの? wxWindowsのアプリを作れるようにしたんだから、IDE自体も 同じライブラリで作ってると思う。 その方がパフォーマンス的にも上になるし。 しかし、wxWindowsはMacにも対応してるのに、BCBXは対応 してないみたいなんだよね。 Swingで作られてると考えると対応プラットフォームには納得が いく。
demo後半の方 wx frameworkって言ってるね
JBUilder IDE っす。
116 :
デフォルトの名無しさん :03/09/17 14:00
C++Builder7っていつでんだ
もうでないよ。
C++開発環境では何気に最先端いってんじゃないの?
それよりC++BuilderX Developer や Enterprise が発売されたとしても、 乗り換えキャンペーン価格でもものすごく高いのではないだろうか。 ((((;゚Д゚)))ガクガクブルブル
120 :
デフォルトの名無しさん :03/09/17 19:33
おいてめーらよ、C++BuilderX ってなんだよ だいたいXってなんだよ、10なのかエックスなのかはっきりしれやカス共が
>>121 恐れ入りますが、pro版というのはないようなのです。
personal版ならありますが、それは乗り換えたくないので。
当方C++Builder6 Professionalのユーザーです。
123 :
デフォルトの名無しさん :03/09/17 22:09
Borlandは自前フレームワークはどうすんのかな? 関係無いけどOWLフリーにしてくれないかな。
夏前にC++Builder6買って使いこなすためにVCLとDelphiの勉強もしてる自分は負け組みか。 せめてC++コンパイラが名前空間とテンプレート関係を完璧に処理できるようにして欲しかった。
今からでもwxWindowsの勉強くらいできるじゃん
勝ち組はDelphiメインでC++の資産活用にC++Builderでしたとさ。
127 :
デフォルトの名無しさん :03/09/18 19:44
wxWindowsなんて中途半端だな。 Microwindowsの方が使い道あるような。
128 :
デフォルトの名無しさん :03/09/18 20:04
無料版でるの?
129 :
デフォルトの名無しさん :03/09/18 20:09
Microwindowsってなんじゃ? 俺もwxWindowsはいまいちそそられない。
VCLという「どこがC++?」なんてライブラリよりよっぽど良い。
131 :
デフォルトの名無しさん :03/09/18 20:23
OWL最強ですよまじで
132 :
デフォルトの名無しさん :03/09/18 20:26
なんで今時純粋なC++ライブラリなんか使うんだろう? OWLやMFCでC++でGUIライブラリを作るのは無理があると 証明されてるじゃないか。
なんで今時
>>132 のような純粋な厨が存在するんだろう?
厨がOWLやMFCを使うには無理があると
証明されてるじゃないか。
今はC++Builder6にOWLでやってるけど、BuilderX ではOWLは使えないのかなー
OWL好きなの? MFCよりはマシだったけど、VCL見た後は色あせてもうたよ。
しーぷらすぷらすびるだーろく ぷろふぇっしょなるえでぃしょん、さんまんろくせんななひゃくごじゅうえんってやすいですか?
137 :
デフォルトの名無しさん :03/09/19 12:58
安いです
>>136 安いけど、SPAMに書いてあった売り込みとかなら、
係わり合いにならないほうがいいぞ。
>>138 某らんどってぎょうしゃからおくられてきたSPAMにかいてありました。
これはなにをいみするのでしょうか?
・もうすぐ次バージョン発売
・VCLベースのBCBは6が最後です(ごめんなさいっ)
・資金難で日本撤退寸前
>>135 一番大きな理由は、今でのOWLなアプリケーションを保守してるからですが、
VCLはMVCモデルに全然分離されないゴッタ煮なのがちょっとイヤです。
VCLの問題じゃなくてIDEの問題という気もしますが…
RADだと、フォームのイベント処理部にコードを全部詰め込みがちだからなぁー
>RADだと、フォームのイベント処理部にコードを全部詰め込みがちだからなぁー そうかなあ・・・イベントは普通処理を呼び出すだけだろ?
>>140 141と同意
イベント処理部にコードを書く書かないは自分次第ではないかな。
よっぽど時間が足りない時意外はこんな感じじゃない?
void __fastcall TForm1::Button1Click(TObject *Sender)
{
hoge->execute();
}
>VCLはMVCモデルに全然分離されないゴッタ煮なのがちょっとイヤです。 多分、その辺は自分で好きなように実装するのが正しいのでしょう。 OWL, MFC はアプリケーションフレームワークとしての面を持っているため、 いわゆる「Windowsの標準的なUIデザイン」の実装のしやすさとして Doc-Viewなどを入れているのだと思います。 VCLはアプリケーションフレームワークよりもGUIライブラリに近いですね。 某的にはMFCとの真っ向勝負(OWL)を避けて比較的自由度の高いライブラリ にして、すみ分けようとしたのでしょう。 MFCとかでもフレームワークとしての部分を使わなければ自由度は高いですが その場合はVCLにかないませんね。
某のIDEの良いところはフォームのイベントではなく 別ファイル、別クラスに記述する癖がつきやすいところ
6を買わずに7を待っていた5使いは、 これからどうすればいいんですか某さん……
147 :
デフォルトの名無しさん :03/09/19 22:53
俺フォームにコード書いてるよ・・・_| ̄|○ 大きめであちこちから使い回す部分はクラスにして呼ぶようにはしてるけど。。。
148 :
デフォルトの名無しさん :03/09/19 23:37
>>139 9月に入ってからキャンペーンをやっているらしいけど、ウェブサイトの情報だと
48000円だね。アップグレードサービスか何か?
C++BuilderにはDelphiのis演算子に相当する物はあるのでしょうか?
>>149 if a is THoge then ...
は、だいたい
if ( dynamic_cast<THoge *>(a) != 0 ) ...
なかんじ
うちにもpersonal版購入者向けのprofessional版へのアップグレード36750円のお知らせが着たけど 2ヶ月ほど前に6万円以上で既にprofessionalを買ってしまってた。 2ヶ月前にアップグレードがあると知ってたら我慢してたんだが鬱だ。 2万5千円ほど節約できたのに。
152 :
デフォルトの名無しさん :03/09/20 14:48
try { try { }catch() {} }__finally{} って最強なんですが、 もう一つ二つtryが入ると最後の__finallyに飛んでこないようなんですが、 気のせいでつか?
結局のところリリースはいつ頃?
return混ぜたときに、__finallyに飛んでこないのは仕様でつか?
C++Builder(for MacOS)X ?
BuilderXとの互換性はなさそうだ。
ライブラリがwxWindowsなんだから、BCBでBuildeXコードのコンパイルは出来るだろう。 BCB > Delphi BCB > BCBX
158 :
デフォルトの名無しさん :03/09/20 21:03
BuilderXとは何者なんだYO!
Xは クロスの意味なんだろうね。 wxWindows にVCLと同じフォームファイルの概念をくっつけて一丁あがりなのかな?
> Xは クロスの意味なんだろうね。 ActiveXとかDirectXとかと同じXだろう。
謎のBuilder、X !
むしろMSXの
みんなでXジャンプ
164 :
デフォルトの名無しさん :03/09/20 23:24
X(クロス)チョップ
X BOXの開発も出来るのか? (いや、別にやりたいわけではないのだが。)
wxのXだったりして
closureとかが使える変態C++も終焉なわけですね
168 :
デフォルトの名無しさん :03/09/22 08:36
169 :
デフォルトの名無しさん :03/09/22 09:29
くだ質もここでいいの?
たまたまCBと妻みぐい2を同時に買った香具師が3人居ただけ。
try { try { return; }catch(...) {} }__finally{} これだと、__finallyを通らないことがわかりますた。 で、ヘルプでは、returnの代わりにAbort使え、となってます。 __finallyも標準外だから、Abrotもたぶん標準じゃないけど、ま、いいか、 って考えるべきなのかな? でも、AbortがBCBでは例外スルーして、 Delphiでは例外キャッチにひっかかるし、 なんかキモくない?みんなどうしてる?
あと、catch内でもreturnするとfinallyに飛ばないし、 catch内でAbortするとfinally後のステートメントも実行しちゃうし、 構造化丸潰れのような。
174 :
デフォルトの名無しさん :03/09/22 14:45
175 :
デフォルトの名無しさん :03/09/22 14:49
むしろreturnでfinallyん中にはいってその後どうなれば満足するんだ?152はよー
>>175 finallyの中だけ実行。これでDelphi仕様と同じになる。
BCではどのように実装しているか知らないけど 構造化例外処理はWin32Api?
構造化例外処理は文法であって、OSのAPIには関係ありません。
try { try { do { Abort; } while(0); //次処理 }catch(...) {} }__finally{} さらに変な動作(仕様?)ハッケソ。 ヘルプでは、 >Abort は,try .. __finally ブロックの最後に制御を移します。 となってるのに、 上のAbortでは、次処理へいっちゃう。 breakと同じ扱いだなこりゃ。
Abortの呼びだしに括弧は…?while(0)だとAbort無くても抜けるよね(知らずに書いてる)
>>180 だから、ステートメントであって、APIじゃないから、括弧は無い!
return ; の代わりの Abortなんだから。
>while(0)だとAbort無くても抜けるよね
本当は、抜けるだけじゃなくて、__finallyに飛ぶべきなの。
構造化例外ってのどういう動作を構造か理解してから読んでね。
"Abort"って識別子が、DelphiのAbort(EAbort例外を投げる)をインポートした、Sysutils::Abortで上書きされてないか? extern PACKAGE void __fastcall Abort(void); で、こっちは関数なんで、括弧が無いから式の値はアドレスになって何もしないとか
仕方ないと思うよ。 まず return の件は C++だと try{ return 0; }_finally { return 1; } とか書けるじゃない。 Delphiだと 帰り値は別に代入だから問題ないんだけどね。
>>183 それが普通にかけないの。
その構造の中にcatchを入れたのが、
>>172 だよ。
ネストすると、「return 0;」の後、__finallyに飛ばなくなるという、(ガクガクブルブル
>>182 それは怖いね。どう書けば良いんだろう。
>>182 それは怖いね。どう書けば良いんだろう。
>>184 だからさ、 return 0 した後に return 1 出来ないだろ? って意味なんだけどさ
>>187 __finallyでやるのは、メモリの開放なんかであって戻り値設定じゃない。
戻り値でtrue/falseするなんて、鼻から構造化例外と相対する世界。
>>188 言いたい事はさ、C++ の文法と finally の相性はとても悪い。
帰り値のある関数で途中 return が入る場合どうしようもないって事だよ。
意味が判ってもらえないのか?
>>189 頭悪すぎ。
C++とクラスライブラリでは、voidしてて、戻り値なんか使わないわけ。
意味が判ってもらえないのか?
なんだ煽りか? なら好きにやってろ。 Delphiの exit は 手続きだ。 だから 例外機構に捕捉されるのが原則だ。 しかし C/C++の return は文だ。途中でreturn しちゃ、同じ階層の構造化例外に捕捉されなくても仕方ない。
C++って糞だな
VC++ ならば __try { return 0; }__finally { return 1; } これの結果は 1 なんすね。 BCC でもこの挙動を採用するわけにはいかなかったのかな。。。
間違った。その結果は、BCBも一緒。
変な挙動をするのは、その構造にtry-catchを入れた
>>172 の構造。
その場合、「return 1」を通らない。
だれかそろそろマジレスしてやれよ
結論:C++は糞
198 :
デフォルトの名無しさん :03/09/22 20:42
地図を表示できるプログラムを誰か教えてください。
199 :
デフォルトの名無しさん :03/09/22 20:55
200 :
デフォルトの名無しさん :03/09/22 21:12
199の方ちょっとよく意味がわからないんですけど。 C++で教えてください。
ではまず「地図を表示できる」の意味をC++で教えてください。
202 :
デフォルトの名無しさん :03/09/22 21:32
アスキーアートとかをプログラムの中にいれて実行して地図を表示するプログラムを教えてください。
main{ //(;´Д`) (以下略)
206 :
デフォルトの名無しさん :03/09/23 12:58
今、C++Builder6Professionalを買うのって 損ですか? Xp用に買おうと思ったんですけど。 現在、Win2000でVB6Proを使ってます。
>>206 2万円程値引きされてるからね。
まあ、ちょっと待てば新製品が出そうだけど、たぶん優待販売もあるだろうし
今勉強時間が取れるんなら買って勉強始められるというのが自分のメリットになるなら、買えばいいんじゃないの?
道具は使って価値があるんだし、持ってるだけで食べさせてくれるような道具が数万円で買える筈が無いんだしね。
209 :
デフォルトの名無しさん :03/09/23 13:14
>>207-208 ありがとうございます!
親と相談します(w
(財布を握られてるんです(w)
Builder7はもうでないんでしょうか
>>210 VCL中心のC++BUilderシリーズは6で終わる。今度はマルチプラットフォーム
のC++BuiderXに移行する。でもコンパイラが激しく糞だとイラネ(゚听)
コンパイラは自由に選択出来るってデモでやってたじゃん。 gccにVC、それからC++BuilderX付属のコンパイラ。
C++BuilderXでVC7.1のコンパイラ使えばBoost100%で wxWindowsによるWindowsとLinuxで動くRAD開発ができちゃうわけですね。 VCL時代よりコントロールのプロパティが少なくなってたり、 イベント関係についてデモでやらなかったのが気にかかるが。 やっぱC++Builder時代よりショボイRADなんだろうか… デザパタコード挿入が数クリックでできたりするのは魅力的。
BuilderXのデモ、途中で止まんね?
>>214 VCではLinuxで動くようにするには exeからの変換が必要になるだろう。
217 :
デフォルトの名無しさん :03/09/25 09:40
QReportは避けるべきかな? でも、Rave使えるのかな。
COFF <−> OMF が上手くゆくなら Delphi -> obj -> OMF2COFF-> でVCLも使えそうだけど やっぱりWinAPIに依存してるので クロス環境では動かせないんじゃないかな。 そもそもRaveはDLLが必要じゃなかったかな
おもったより安いな。Personalは無償か。 しかし発売速すぎ。
>ビジュアルデザイナやリッチなウィザードなどは省き、 >主に制御系や組み込みのなどの需要に応える、 >マルチプラットフォーム(Windows, Linux, Solaris)対応の >C/C++クロス開発環境です。 RADじゃない。VCやBCみたいなモノ。
>ビジュアルデザイナやウィザードなど、従来のC++Builderで提供されてきたような機能は含まれていません。 ありゃ・・・・BCBじゃなくBCの後継って事か・・・組み込み用にはIDEはいらないや。Peggyで十分。
Personalでもgcc+wxWindowsでクロスいけるのか wxWindowsと親和性の強いIDEならRAD無しでもタダなら 割と定番になるんじゃない?
DigitalMars C++は使えないのか
Borland C++BuilderXは100%pure Java IDE 激しく遅いのでしょうか?
どっちにしろBorland C++Builderは6で終了だ。
227 :
デフォルトの名無しさん :03/09/25 21:04
Delphiも7で終了?
つーか今C++Builder6Personalユーザーに、 Professionalアップグレード割引のハガキ来てるし、 単独プラットホームアプリ向けとして従来Builderは存続、 Xとは別に7も出るんでないかなぁ。
230 :
デフォルトの名無しさん :03/09/25 21:39
今、キャンペーンのC++Builder6Professional買おうとしてるのに・・・・。 でも、別製品のようで、ほっとしました。
231 :
デフォルトの名無しさん :03/09/25 21:42
おいPersonal無料かよ!! なんか萎えとか思ってたけど無料なら話は別だ!
これでDelphiも駆逐されるかな。
Personal gccしか使えないじゃん
234 :
デフォルトの名無しさん :03/09/25 21:50
BCCも使えるって書いてあるよ?
bccはそれ自体が使い物にならない糞コンパイラじゃん。
C++BuilderXってRADじゃねえのかよ。シット!
なら無料ダウンロードしてbcc32.exeだけでも最新版に置き換えておくか。 C++BuilderXどうも買う気がしない。Developmentなら6Professionalから の乗り換え料\28,000らしいしそんなに高くもないが、単なるRADツール なんじゃねえ・・・・・Windowsの特性を活かしたお遊びがしにくいじゃん。 ここはC++Builder7も出ると信じて待つか。
だからRADじゃないって
C++builder Personalて、無料DLしているのか? 知ってたらURLキボンにゅ。
wxWindowsでRADできるんじゃなかったの?
C++Builderと紛らわしい。 BorlandC++Xとかにすればよかったのに。
RADできたらkylixとかぶるじゃん・・・。 Borland IDE-Xにするべきだな。
>>239 違う。C++BuilderX Personalが10月からDL可能になる。それだけ。
だからDLしてみて使ってから購入を検討しる。
無料は嬉しい。
246 :
デフォルトの名無しさん :03/09/27 21:09
すいません、とっても簡単なことだと思うのですが、 わからないので教えてください。 複数のbmpファイルをロードして、表示するプログラムを作りたいのです。 でも、 TImage* image = new TImage(this); image->Witdh = 100; image->Height = 100; image->Stretch = true; image->Visible = true; image->Picture->LoadFromFile(FileName); みたいな感じでやっても表示されません。 なにが間違っているのでしょうか。
Parent
#pragma curious_george
>>245 Xなら無料でもいらんよ。せいぜいKDevelopよりはましかもってだけだし。
JVM必須って・・・せめてSWT,Jface使ってくれ。
251 :
デフォルトの名無しさん :03/09/28 06:24
Parentでできました。ありがとうございます。
これからbcc始めるんですが、参考になるサイトとかってありますか?
ボーランドのHP上のFAQに記載されていないのでお聞きします。 当方vc+6をMEで使っておりますがbcb6をインストしても両ソフトが使用可能ですかね。 やっぱ似たような開発ソフトは入れない方が無難でしょうか。
>>253 全く問題ありませんでしたよ。
せいぜいデバッガをどっちにしますか? と聞かれるのと、拡張子設定が喧嘩するくらいですね。
拡張子の件は、レジストリに追加して両方開けるようにしたら問題ありません。
>>254 どうもです。
>拡張子の件は、レジストリに追加して両方開けるようにしたら問題ありません。
そんなことが出来るのですか。
>>255 恐らく「プログラムから開く」の間違いではないかと。
>>256 右クリックから
開く
のほかに
○○で開く
××で開く
等を追加することが可能。アーカイバ−はよく右クリックメニューに
圧縮する というような項目を追加してると思うが、アレです。
>>257 ああそれなら使ってるよ。デバッガをBCB6は自動では登録してくれ
なかったので、右クリックメニューにレジストリをいじって登録した。
HKEY_CLASSES_ROOT\exefile\shell に追加すればよい。
cpp拡張子なら
HKEY_CLASSES_ROOT\.cpp あたりをいじる。結構めんどいけど。
あと、regファイルを作っておいて、スタートメニューにショートカットを入れておくと便利だね。
BCB6使っとるんだが、MenusUnitのStripHotKeyて関数あるよね。 これって何をインクルードすりゃいいんだろ? <Menus.hpp>じゃ未定義とほざかれるし。
>>260 Vcl\ を頭に付けないと
で、そういう時はIncludeフォルダを検索させる習慣を付けた方がいいよ。
>261 まずは回答サンクス で、Vcl\付けてやってみたんだがやっぱり通らない...。 Includeフォルダにそれらしいファイルはあるんだが。 >そういう時はIncludeフォルダを検索させる これはファイル検索の全文検索の事だよね?
普通、grepとか言う
>>261 関数名をミスしてないかな? BCB5にはそこにあったけど。
IDEでマウスを #include に持っていって右ボタンで開いてみたら?
検索は Windowsの検索でも速くていいよ。
>264 ビンゴ。 ×StripHotKey ○StripHotkey もう一回確かめたら一字違ってたよ…。つかヘルプの表記が間違ってる。 コピペでやってたからダメな訳だ。 回答くれた261,264感謝です。
まあ Delphiは大文字小文字区別しないからVCLのミスはしょうがないね。
267 :
デフォルトの名無しさん :03/09/29 16:19
Xってもう売ってるの? 買った人いる? パーソナルのDL待ちとかは別として、
ものすごく基本的なことで申し訳ないのですが、 BCBやVCで製作したexeファイルはそのファイル単体で他のパソコンで動きますか? VBみたくランタイムが必要になるのでしょうか。
ダイナミックリンク系の設定を全部切れ
X調べたけど買いたいと全然思いませ〜ん 貝で頑張ります。
返答どうもです。 設定次第で不要になるということですね。 ということは通常は必要になると?
>>272 ランタイムを使うか使わないか好きな方を選べってこと。
>>272 VC はどっちがデフォルトか忘れてしまったが、
BCB はランタイムを「使う」がデフォルト。
ランタイムを不要にすればファイルが増大すると言うことですよね。 ということは普段外部のファイルを参照にしているということは それなりのメリットがあるからなんですか。 実行速度が速くなるとか
逆に遅くなります。
>>275 >ランタイムを不要にすればファイルが増大すると言うことですよね。
逆に、ランタイムを利用すれば配布ファイルのサイズを小さくできる。
配布先がランタイムを導入していることが判っていれば当然その方が便利。
HDDの容量にも優しい。
実行速度は実感するほどの差は出ない。
ということはインストーラーを使用する際はランタイムの組み込みをナシにして 知人とかに渡すときは組み込むのが一般的なのかな? ちょっと違う?
>>278 違う。
つか、ここでチャットしていても仕方ない。
聞きたいことは整理してまとめて質問しろ。
「違う」の一言しかいわないってのもなぁ...
277 は嘘だし。
ランタイムで共用できる部分が浮く。って話であって、共用しない場合は配布ファイルサイズは
帰って大きくなりますよ。と。
いまどき HDD の容量のことを気にすることはないし。
>>278 相手によりけり。
今/近い将来、三つくらいアプリケーションを配布する予定があるなら、DLL でライブラリを提供。
一度だけ、一つのアプリだけしか使われない場合は静的リンク。
個人使用のツールなら、何もいわずに DLL
社内 Lan で使うなら(ネットワークが速いことを前提にして)DLL
コンピュータ初心者、赤の他人、跡でサポートしづらい環境にいる人向けには、静的リンク。
281 :
デフォルトの名無しさん :03/10/01 22:31
int size = 5 int count[size]; この式がエラーになります 「定数項が必要」と出てきます C++?
>>281 それは駄目、コンパイル時に値が決まっていないから。
#でもそれぐらいなら最適化で何とかなるかも
正しくはこうかな、明示的に削除しなきゃいけないけど
int size = 5;
int* count = new int[size];
delete[] count;
enum{size=5};
>>281 項目数が決め打ちなら
const int size=5;
決め打ちできないなら
>>282
なるほどありがとうございます ところで配列の要素数の指定に変数が使えないのはC++の仕様ですか?
286 :
デフォルトの名無しさん :03/10/01 23:51
Cでも1999年以前の規格では使えないし
これなら削除しなくていいべ int size = 5; std::vector<int> count(size);
>>287 いまどきは配列的な使い方するならデフォルトはこれだよな。
vectorあるいは伸縮激しいならdequeとか。
わかりました gccの拡張機能をC++の標準仕様だと思ってました・・・
290 :
デフォルトの名無しさん :03/10/02 09:29
>>288 vectorって、resizeだけでは確保したメモリを開放しないんでしたっけ?
>>290 Effective STL 第17項に、swap技法が載っている。
std::vector<int> v;
v.push_back(1);
v.reserve(1000);
std::cout << v.capacity() << std::endl;
std::vector<int>(v).swap(v);
std::cout << v.capacity() << std::endl;
capacity() で実メモリが分かるわけでしか。
>>292 STLのstd::vectorは空きメモリがなくなると実装によって違うが
STLPortならば現在の2倍確保しようとする。
size()メンバ関数は確保されているメモリではなく、データが
入っているまたはデフォルトコンストラクタで初期化された
要素数を返す。capacity()はメモリの再割り当てをせずに
入れられる要素数を返す。
一度大きな容量を確保してからresize()して縮小しても、一度
割り当てられたメモリ領域が解放されるわけではないので、
swap技法を使って使用していないメモリ領域を削除する。
294 :
通りすがり :03/10/02 21:01
今日BCB6と、C++Builder6コンポーネント活用ガイドっていう本買って来ました。 VC7と迷ったけどこっちが使いやすそう! ひとまずゲームでも作って金儲けします。
DirectX使うならVCの方が何かと良いかもよ 扱いやすいのはC++Builderだろうね
MFCよりはVCLをお勧めしたいが、ライブラリ抜きでAPI一本だったらVCの方が良いかと。
インテリセンスがVCの方が強力だしね
>>297 それだったら、フリーの開発環境でいいんじゃね?
もう買っちまったんだからさ、余計なこと言わないで歓迎するっ!
>>294 氏がんがれ。
301 :
デフォルトの名無しさん :03/10/03 10:54
5.0ではシステムモーダルダイアログは作れないのでしょうか。 風の噂でDelphiで実現したような話を聞いたのですが...
「システムモーダルダイアログは作れない」とはどういう意味?
303 :
デフォルトの名無しさん :03/10/03 11:24
BCBでゲームを作っています。 ゲーム自体は1つの関数で 無限ループさせて行っているのですが 起動時にその関数に飛ばすスムーズな方法はないでしょうか? onshowに書くと画面が表示されないので困ってしまいます。 今のところタイマーをつかって飛ばしていますが 妙な間があくのですっきりした方法があれば教えて欲しいです。
>>303 無限ループってのがそもそも問題だと思うが。
OnShow は「これからフォームを描画しますよ」ってメッセージなので、そこで無限ループに入ったら
VCL が困ってしまう。
OnIdle を試すのが最初かな?
スレッドを作るのが正しい解決か?
OnIdle だな。
ただ、CPU Load 100% にするのは勘弁な
>>303
307 :
デフォルトの名無しさん :03/10/03 13:29
構造体の中にAnsiStringがあっても問題ない?
VCL使わないなら別だけどさ、 BCBでゲームを作るんなら無限ループはよくないな。 スレッドで無限ループしてもVCLを呼び出す段階で美味しくない。 結局タイマーを使うのが一番だと思う。 ゲームの進行はスクリプトでも作ってさ タイマーでスクリプトを実行させてゆくと
>>307 どうなんだろうね。 Delphiなら全く問題ないけど・・・ まあC++の構造体はクラスと同じだからデストラクタおかれるのかな。
タイマーだと精度の問題で20FPS程度までしかでないにょ
OnIdleですね。ありがとうございます。 タイマーは無限ループ関数に飛ばす1回のみ使っています。 ゲーム自体はDirectXを使ったフルスクリーンのものですが CPU100%はまずいでしょうか? 一応ループ中に Application->ProcessMessages();は入れてありますが ほかにもなにか入れておけばよいものなどはあるのでしょうか?
>>307 問題無いけど、memsetやmemcpyで構造体をコピーや初期化しようとしたら駄目。
コピーしたければ代入演算子やコピーコンストラクタを使ってコピーする。
313 :
デフォルトの名無しさん :03/10/03 18:15
コンポーネントからActiveXコンポーネントを作成する際に コンポーネントでパラメタにAnsiStringを使っているイベントを作成したのですが ActiveXコンポーネントに変換する時に自動でchar型に変換されてしまいます。 そこでchar型をchar*型に書き換えて全て保存をすると自動的にchar型に戻ってしまいます。 これはBuilderのバグでしょうか?
オブジェクトがクライアントにエクスポーズするすべてのプロパティとメソッドはオートメーション互換型にする必要があります。
どこを書き換えたの? タイプライブラリ? .CPP ? それとも両方?
>>312 AnsiStringでももちろんそうだけど、C++では常にそうしたほうがいいよね。
プリミティブな型だけで仮想メソッドがない(vtableが無い)構造体なら大丈夫じゃないの?
>>317 それを前提にする、という制約を付けた場合にはそうしても大丈夫だけど、
C++的にはそれは後でvtable入りのオブジェクトをメンバに入れたくなったときに
変更が必要になるが、それが気づきにくい。
C++BuilderでVC++のようにデバッグモードでコンパイルする時だけ自動で #define DEBUGされるようにするにはどうしたらいいですか?
>>319 ヘルプで
_DEBUG
を引きなされ。
VC++のCStringをBCBのAnsiStringに置きかえたいんだけど、 AnsiStringにcharを代入するにはどうしたらいいん?
>>302 >>304 THX
徹夜明けで酒飲んでぐっすり寝込んでしまった
最近はユーザインターフェイスに関する概念が変化しているのか.
いつの間にやらSetForegroundWindow()も有効になる条件が限定され
てるし,すっかりカメ...
>>321 AnsiString newStr;
char str[32];
newStr = str;
Delphi7を出したんだからBCB7も出せ某。
今度出すBCC32.EXEはVC7.1並にANSI C++準拠度が上がって欲しい。 Boostが使えねえったらありゃしない。
328 :
デフォルトの名無しさん :03/10/05 06:49
やぱり、GDI+はつかえないでしょうね。 つかえるgdiplus.h、どこかにおちてないかな。
329 :
デフォルトの名無しさん :03/10/05 12:02
一つご教授願いたいことがあります。私はBCB6を使ってプログラミングの練習をしています。 今現在はシステムフックの使い方をおぼえるべく、試しに、マウスメッセージをフックして どのボタンが押されたか等の情報を表示するソフトを作っています。 ネットの過去ログなどを参考に、フックの手続きをDLL化して、自フォームからDLLのフック関数を呼び出し、マウスメッセージが 届いたらDLLから自フォームにSendMessageするというものをつくりました。 一通り終わって実行したところ、カーソルが自フォーム上にないときに(自フォームがアクティブでないとき)メッセージが届きませんでした。 そこで、さらに過去ログを調べたところ、DLLにおけるグローバル変数の宣言の仕方に問題があることがわかり、 #pragma data_seg(".myshare") HHOOK NextHook = NULL; // フックプロシージャのハンドル HWND CallWnd = NULL; // 呼び出し元のウィンドウハンドル int MsgID = 0; // 通知するメッセージ #pragma data_seg() という風に宣言を変え、.defファイルに SECTIONS .myshare READ WRITE SHARED を追加したところ、 Section .myshare defined in .def file is empty というエラー(@とする)が出るようになりました。 過去ログでは同じ質問をなさっている方を1つ見つけましたが、 そこでの決着法は「アセンブリ言語ソースをプロジェクトに追加し、その中で特有のセグメント内 に変数を宣言する」というもので、難解で原因が説明されていませんでした。 そこで質問なのですが、ネット上で数多く説明されている方法どおりなのに、なぜ@のような エラーが出てしまうのでしょうか?(個人的にはVC++とBCBの違いかなと思っているのですが) そして、これを解決する方法としてよい方法はないでしょうか? 非常に長く、読みにくい文になってしまいましたが、よろしくお願いいたします。
長すぎました。 申し訳ございません。
>>329 御考察の通りで御座います。
API使って共有メモリ使うか、DLLだけVC++で作成することお勧めします。
(`・ω・´)つ[.NET FrameworkSDK]
ようするに 無いからといってエラーを出さないのがpragmaなので勘違いし易いですが #pragma data_seg はBCBにはないという事です。
>>329 問題はそこではなく、SetWindowsHookEx の hInstance が アプリ側になっているんじゃないかと思うのだが?
皆様、ご返答いただきまことにありがとうございます。
>>331 様、332様
なるほど、「#pragma data_seg」が実はBCBには存在しないということが原因なのですね。
そしてVC++で作っていたならば、おそらく問題なく動いていたであろうということですね。
でもVC++を買うことは財政的に無理なので「APIのメモリ共有」というものを使わせていただこうと思います。
調べてみたところ、キーワードは「メモリマップドファイル」(CreateFileMapping()等を用いる)という
ことのようですが・・・む、むずかしい(^^; もうちょっと勉強する必要がありそうです。
VC++の安いものを探したほうがいいのかもしれませんね(^^;
>>333 様
SetWindowsHookExは以下のようにしています。
NextHook = SetWindowsHookEx(WH_MOUSE,(HOOKPROC)MouseProc,hInstDLL,0);
第3引数のhInstDLLは
DllEntryPoint(HINSTANCE hinst,・・・
の第1引数を利用しております。
もしおっしゃってる場所と異なりましたら申し訳ありません。
>>334 .NET FrameworkにVC++のコンパイラ部分(cl.exe, link.exe)が入ってる。
ただ、ヘッダやlibがないので、PlatformSDKから持ってくる必要があるが。
↑ .NET Framework SDKね
337 :
デフォルトの名無しさん :03/10/05 21:01
くだらない質問で申し訳ありません。 コンポーネントのTabControlについてです。 プロパティのTabPositionをtpLeftにすると、Tabの文字部分まで、回転して しまします。文字をきちんと、左から右へ読めるようにするには、どうしたら よいのでしょうか。よろしくお願いします。
>>335 様、336様
教えていただきありがとうございます。
そのあたりを調べて検討させていただきます。
>>338 様
ありがとうございます。
9x系ならば比較的簡単に実現でそうですね。
ただ、環境を書き忘れてしまいましたが(すいません)、
私はOSはXPを使っております。
そうなるとやはりCreateFileMapping()を使うのが通常のやり方のようですね。
うーん、BCBだけで実現するにはメモリマッピングは避けて通れないかもしれません。
とりあえず本日は.NET Framework SDKの方面に全力を尽くしていきたいと思います。
BCB6です。 イテレータからデータを取り出すには * でOKだと思っていたのですが、 下記の★行で 'pair<const int, int>'から'int'へのキャストはできない'エラーとなります。 明示的にキャストしても同じエラーです。何がイカンのでしょうか? multimap<int, int> map; pair<multimap<int, int>::iterator, multimap<int, int>::iterator> it; : // ここらでinsert it = map.equal_range(100); while(it.first != it.second ){ int data = *(it.first); // ★ここの書き方がわかりません : }
>>339 あと、自分以外のプロセスにSendMessageは効かなかったと思うんだが。
一度、PostMessageでも試してちょ。
同期する必要があるならどうにもならんけどね。
>>340 int data = it.first;
>>340 > イテレータからデータを取り出すには * でOKだと思っていたのですが、
OKだよ。そのコードでも、イテレータ it.first に * することで pair<const int, int> 型の
データをちゃんと取り出せてる。
コンパイラが言ってるのは、その取り出したデータ(pair型)をintにキャストする術なんて
知らねーよってこと。
あなたがdataに入れたいのは多分、そのpairのsecondに入ってる数値でしょ?
firstはどのみち全部100なんだから、いちいち代入しないだろうし。なら、
int data = it.first->second;
344 :
デフォルトの名無しさん :03/10/07 14:54
TEditでマウスを右クリすると出てくるポップアップを表示しないようにする方法を教えてください
345 :
デフォルトの名無しさん :03/10/07 15:00
SYSTEMTIME syst; syst.wYear = 2003; syst.wMonth = 6; syst.wDay = 6; syst.wHour = 10; syst.wMinute = 12; syst.wSecond = 15; syst.wMilliseconds = 250; SetSystemTime( &syst ); 日付だけはきちんと変更されて時間部分は必ず9時に設定されるのですが何故でしょうか 時間部分の値を変更しても無視されて必ず9時に設定されます
すいません 勘違いでした・・・
347 :
デフォルトの名無しさん :03/10/07 20:52
>>344 空のPopupMenuを作成してTEditのPopupMenuプロパティをそれにすれば?
349 :
デフォルトの名無しさん :03/10/08 10:21
>>347 やっぱそれしかないかい?
なんか使ってないメニュー追加するのって気持ちわるくてさ
>>349 じゃあWindowProc入れ替えてサブクラス化して
WM_RBUTTONUPとWM_RBUTTONDOWNを殺せばいい
>>348 手元の環境(Win2kSP4 .NET Framework1.1付属cl.exe)だとdata_seg()で共有できてるんだが‥‥
>>341 様、348様、351様
お世話になっております。近況報告です。
まず、.NET Framework SDK 及び Platform SDKをインストールしましたが、
コンパイル自体がうまくいかず、ネット上の資料の少なさも影響して断念いたしました。
教えていただいた方、すいません(泣)
現在はファイルマッピングに取り組んでおります。共有メモリにアクセスするための
「CreateFileMappingでFMOを作成」から「CloseHandleでFMOをクローズ」
の一連の流れは理解できました。
只今、実際にcreateとcloseをする場所がわからないので調べております。
(資料ではInitialization部、Finalization部とありましたが、DLL内でおこなうのか、
DLLを呼び出すフォーム内で行うのか理解できなかったので・・・)
ただいまファイルマッピングを用いてシステムフックを実現できました。 VC++向けの時に比べて、かなりコード量が増えました。 プログラミングを始めて1週間、ひじょーに時間がかかりましたが、皆様の協力もあって実現できました。 本当にありがとうございました。 いつかVectorあたりにフリーウェアが公開できるようがんばりたいと思います。
354 :
デフォルトの名無しさん :03/10/08 18:39
くだらない質問で申し訳ないのですが、 ProgressBarで Smooth=false の時に □□□□□ こんな風にでるのを [][][][][][][] のように、ちょっと細かくしてみたりは出来るんでしょうか。
355 :
デフォルトの名無しさん :03/10/08 19:03
>>354 試してみたんだが、そのピッチだけを変える方法は見つけられなかった。
バー自体の幅を狭くするとピッチも細かくなるということは判った
(方向がpbHorizontalならバーのHeightを小さくするということ)
>>355 わざわざ、ありがとうございます。
やはり、変えられなそうですね。
>>357 いや、方法はあると思う、漏れが知らないだけで。
役に立たなくてスマン
BCB6のMyBaseはどんなもんなのでしょうか? 使ったことのある人、感想教えてください。 もしこれがダメならBCB5から買い換える必然性がまったく無いので…。 ちなみに使用目的は家計簿の自作です。
C++Builder6 Personalを買うか、VisualC++を買うかどっちにしよう… とりあえずグラフィックエディタ作りたい…。
Del6perで・・・
BCB 6 の書籍で買うとしたらどの本が良いでしょうか? お勧めは何かありますか? ちなみに、自分のプログラミングレベルは超初級です。
del6per と widestudioをダウンしてみました。 Win98seなのでC++BuilderXは無理っぽい…
>>363 C++の入門書
BCBの書籍はいらないと思われ。
VCL関連はDelphi用ので十分だし
366 :
デフォルトの名無しさん :03/10/09 17:10
vectorの使い方をわかりやすく説明しているサイトとか教えて
367 :
デフォルトの名無しさん :03/10/09 17:36
TMemo や TRichEdit で、先頭の文字列を削除する際に、 Lines->Delete(0) とやると勝手に先頭までスクロールしてしまいます。 これを回避する方法をどなたかご存知ありませんでしょうか?
正直聞きたいんだけど、 Borland C++Builder 6 Professional 買ったところで Personal版に付いていない機能を全部使いこなせる人ってどれぐらいいるの? それと、personal版持ってる人に聞きたいんだけど、 professional版には付いていてpersonal版には付いていない機能で 困ったこととかある?
DB無いと仕事になりません
>>369 すげー気になります。
Personalを買っても無駄なのかどうか非常に気になっていたり…。
>>369 全部は使いこなせないが、VCLソースが読めないのは困る。
プログラマになりたいです。 personal版で勉強して使えるようになったら professional版に移行するという考えでも問題Nothingですか? ていうかプログラミング初心者がprofessional版買ったところで あんまり意味ないですよね?
最初からPro買えよ。
376 :
デフォルトの名無しさん :03/10/09 20:25
>>373 意味なくないよ、やりたい分野によってはだけど
>>373 さくさくっと楽に作りたい場合はprofessionalのコンポーネント群が
あると便利だと思うけど・・・非ビジュアルなコンポーネントとか・・・
>>369 機能的には不要。ウザイぐらい。
コンポーネントバリバリだとランタイムに神経質なVBみたいになっちまう。
DBもODBC経由ならパーソナル版でも可。
むしろ、商用ライセンスの問題が激しく重要。
>>378 結局の所、作るものが何かによる事とコスト&時間の問題が関わってくる事
だと思うんだけど・・・
個人で使う分には問題無いって言えばないかなぁ
それとライセンスは確かに重要ですねー
趣味で作ったツールがたまたま便利で、職場で使うような場合も 商用のライセンスいるのかな?
>>380 ライセンスは契約だから、疑問があったら契約相手に確認するといいよ。
あなたにだけ認めてくれないとも限らないしね。
他人にわたして職場で使われてもマズイのかなぁ。とか。
383 :
デフォルトの名無しさん :03/10/09 22:32
>>380 商用、業務用、政府機関の用途には使えないって書いてある。
使いたい場合はProfessional版買え、と。
予算組んでつくるものでもなく、自宅で趣味で作って使えるものが作れるとも限らないし なにか使えそうなものができたら改めてProfessional買ってみようか… そんな気持ちじゃPersonalもHDDの肥やしになるだけの予感もするし…うーん。 お騒がせしましたm(__)m
>>383 Webでフリーソフトとして配布すれば良いのではないでしょうか。
ビジネスユーザが勝手にダウンロードして使っている形態。
BCB使いで割れ厨ってどれくらいいるの? っていうか割れ使ってるやつで買った時に付いてくる 分厚い冊子とか必要にならないのかな? 意外と一般書籍だけで使いこなせるもんなの?
私の場合はC++初めて使ったのがBCBだったので、 あの分厚い本はC++身につけるのに役に立ちましたね。ついでにObjectPascalも身に付いたし。
>>386 Personalを買ったので、「分厚い冊子」はついてきませんですたが、
まぁ何とかやってます。
>>382 だから、それは契約事=約束事で、キミとボーランドとの関係だ
法律にあるのは、
民法:代金を出して買ったメディアはあなたの所有物である事。
著作権法:複製物の所有者は自らの利用のために複製又は翻案が出来る事
まで。 後は契約の問題。
そして契約は、汽車の旅行約款のように法律で定められたもの以外は個人間の問題だ。
会社は商売上、出来るだけ公平になるようにするのが常識だけど、
それでも契約は、他人は入れない個人的な問題だから、それは自分で聞いて調整しなさいな。
>>388 分厚い冊子は要らないよ。どうせHelpファイルをそのまま打ち出した
ような内容だし。ちなみに俺はProの正規ユーザー。
BCBに関する本は少ないのでDelphiの本でVCLを覚えるべし。
ボーランドのオフィシャルコースウェアがオススメ。
しかし、VCLの開発者がM$にハントされてC#を作っているんじゃ、もう
VCLは死滅する運命しかないのか。
>>386 あの書籍すら使いこなせない漏れは・・・
もっと簡単な入門書でないのかな?
VCみたいに何冊もあれば困らないと思うんだけど。
VCLって何?
Visual Common Lisp
394 :
デフォルトの名無しさん :03/10/10 18:44
TRadioGroupってチェックボックスにできねえ?
VCLについて解説しているページを教えてくらさい(泣 ググってもうまく検索できませんでした・・。
>>395 試しにぐぐってみたら、すぐ引っかかったけどねぇ。
検索の仕方も判らんようではどうしようもない。
ま、いじめるばかりじゃ可哀想だから。
「VCL 解説」とか「VCL 入門」とかで検索してごらん。山ほどあるから。
398 :
デフォルトの名無しさん :03/10/10 21:36
ユーザの操作の間違いなどによって出るエラーメッセージボックスを 表示させないようにするにはどうすればいいのでしょうか? 処理が中断してしまうので困っていますm(_ _)m
400 :
デフォルトの名無しさん :03/10/10 21:42
>>399 一回やったのですが、駄目だった気がします。
また試してきますm(_ _)m
例外補足して駄目なエラー(フロッピー差し忘れ)とかならSetErrorMode使ってなんとかする。
402 :
デフォルトの名無しさん :03/10/10 22:06
>>399 駄目でした。・゚・(ノД`)・゚・。
>>401 どうもありがとうございます。
やってみますm(_ _)m
403 :
デフォルトの名無しさん :03/10/10 22:17
>>401 できました!
感動しました、有り難う御座いましたー
404 :
デフォルトの名無しさん :03/10/11 02:36
テキストエディタのチュートリアル通りにやったのに、コンパイルすると バージョン情報が出せません、、、。 なんかグレイアウトして押せない状態になっちゃってます。 void __fastcall TForm1::HelpAboutExecute(TObject *Sender) { AboutBox->ShowModal(); } なんか↑このコードが悪いとかそれ以前の問題なのかなぁ。 ちゃんとメインの部分のcppに[ファイル]-[ユニットヘッダーファイルの追加]から追加して #include "About.h" もしてるんですけど、どのあたりのミスが考えられるんでしょうか…
>>404 コンパイルエラーが出ないなら、単純にそのTActionがEnabled=falseになってるだけ。
オブジェクトインスペクタで確認すべし。
>>405 ありがとうございます、バッチリできました
BCB5 Proユーザなんだけど、最近Ver6アップデート案内ハガキが着たよ。 これで、もう3〜4回目かな? 最近は使ってなかったので見送っていたんだが。 結局、BCB7は出なさそうなので、とりあえず上げとくかな…
TreeViewでImageListを指定して画像を表示しているのですが、 表示されたノードをクリックするとImageListでインデックス0指定した 画像が表示されるのですがなぜなのでしょうか? フォーカスが離れた後は変更時に指定したインデックスの画像 がちゃんと表示されます。 普通は何もしなくてもこのような現象が発生する事はないのでしょうか?
>>408 TTreeViewの「項目の設定→ツリービューの設定」でTTreeNodeを追加すると
デフォルトで「選択時インデックス」が0になるから。
つまり、TTreeNode->SelectedIndex==0ね。
>>409 selectedNode = TreeView1->Items->Item[childTreeNumber];
imgIndex = 2;//選択時のインデックス
selectedNode->SelectedIndex = imgIndex;
ソースだとこんな感じできました。ありがとうございました。
411 :
デフォルトの名無しさん :03/10/13 14:06
学校でC++ Builderを使ってるんですが,Visual C++と比べてどんな利点があるんでしょうか? winnyの47氏はVisual C++からC++ Builderに乗り換えたみたいですけど。 一般的にはVisual C++の方が多く使われているみたいで,参考書とかも沢山出ててよさそうに見えるのですが
412 :
デフォルトの名無しさん :03/10/13 14:16
クラスライブラリがまともとか?
画面のデザインがし易いとか?
VS.NETはメモリ喰いすぎだからとか?
C++Builderはオブジェクト指向を理解していなくても使える。 GUIデザインなんかマウスだけでちゃっちゃと作れるし フォームにごちゃごちゃとコードを書いてしまうが、 きにしなーい。
真のBCB使いはTActionを駆使してMVCに基づいたプログラミングをします。 M…自作クラス V…フォーム C…TAction
417 :
デフォルトの名無しさん :03/10/13 15:17
> TActionを駆使してMVCに基づいたプログラミング プッ
真のBCB使いは妻みぐい2を駆(ry
言語は用途に合わせて選べばいい 人に押し付けるのは言語道断
>>420 411に対する返信です。
アドバイスを受けるにも言語そのものに執着した人の意見を聞いて
しまって混乱しないようにというメッセージです。
>>411 BCBはBuilderの名前の通り、簡単にGUIが組める。
VisualC++は実はぜんぜんVisualじゃない。
GUIを後から大幅に変更することになったときに、
VC++だと変更を命じたやつを蹴り飛ばしたくなるが
BCBなら舌打ち程度で済む。
WindowsAPIをゴリゴリ呼ぶ場合は、
VC++がはウンコだとすればBCBはハナクソ。
ウンコは手間をかければ使い道があるけどハナクソには無理。
ようするにWindowsAPIについては VC++を買えばMSDNが付いてきて BCBのWinAPIヘルプよりも少し詳しい+日本語化の範囲がMSDNが広いという感じのメリットかな あ、VC++.NET2003だとどうなのかは知らないで言ってるんだけど・・送られて来てるけどインストールしていないから
個人的な位置付けとしては BCB:GUI優先 お手軽プログラミング。 VC:ソース優先 Windowsの機能を本格的に弄る くらいで。 個人用などにツールを作る回数が多いので BCBのほうが開発時間が短くできるので使用頻度は高いです。
>>424 VCで出来てBCBでできない「Windowsの機能」なんて特に無いと思う
今はMSDNをネットで見れるようになったから、APIのヘルプとかもそんなに困らないし。
BCBの最大の弱点は資料の少なさかな。
書籍はあまり少ないし、なんかのサンプルプログラムでもVC用に書かれたのが多い。
あと、一番困るのは、ライブラリがVC用のLIBで用意されてた時。
VCでラッパーのDLLを作ればなんとかなるけど、すげー手間だからあまりやりたくない。
objコンバータとかlibコンバータとかあったら欲しいかな・・・ いや、obj逆アセンブラ作って TASMでアセンブルすりゃいいか・・ あ! C++型保証名で困るか
インポートライブラリだけならCOFF2OMFでなんとかなるが… もっとも、最近のVCは*.libの仕様が変わったみたいだから、必ずとも言えず
日本語版Personalも、配布される予定なの? 出る予定がないのなら、英語版を落とすけど…ナローバンドだから、落とすのにも一大決心が(´Д`)
429 :
デフォルトの名無しさん :03/10/13 22:55
430 :
デフォルトの名無しさん :03/10/13 23:08
あー、なんかVC7製のDLLをimplibしてもうまく行かないのって形式が変わったの?
> 今はMSDNをネットで見れるようになったから、APIのヘルプとかもそんなに困らないし。 ネットのMSDNが不便であることを知らない人はある意味羨ましいです。
>>428 誤爆?念の為書いておくが、
C++BuilderとC++BuilderXは別物だぞ。
>>425 あぁ、ごめん。
弄りやすい くらいのイメージで。
DirectXとかDirectXとか・・・
スマソ、誤爆。 BCBとBuilderXの差異は、承知の上。
C++BuilderXでユーザーの要望からかけ離れた 製品作ってしまった。E N D
いやむしろ旧来のBuilderのほうが存在価値無い
>>436 すでにC+++BuilderXを買ってしまったヤシの悔し紛れの一言(w
×C+++ ○C++
C++BuilderはライブラリがDelphiな時点で駄目。
>>439 確かに開発労力の削減の為とはいえやりすぎだったな。
その代わりDelphiの参考書がそのまま使える。
C++だとOpen配列とかSetとか無理矢理で超ウンコだったもんな。
>>441 確かにSetの >> と << は糞だと思った。OPENARRAYも括弧を二重にしなければ
ならないのには参った。
俺は どうせ__propertyとかの拡張するんだったら AnsiStringを言語仕様に加えてほしかった。 クラスだと無駄が多すぎ。
DBuilder作るしかない。
BuilderX personal 英語版入れてみたけど wxWindowsはどこにもインストールされてない感じ
>>443 むしろVCLをstd::stringベースで書き直して欲しかった
>>443 まあ std::string もクラスな訳だが・・・・・
448 :
デフォルトの名無しさん :03/10/17 17:53
エンターおしてもFormのKeyPressイベントが入らない・・ ちゃんとKeyPreview=trueにしてるのに 他のフォームではイベントきてる、何故??
450 :
デフォルトの名無しさん :03/10/17 20:58
>>449 だよね・・
これどう説明していいのやら
使ってるコントロールに WM_KEYDOWN を勝手に処理するのがあるんじゃないの? どれにフォーカスがあるときに起きるか調べてみたら?
メモリリークが派手に起きているんだがどこで起きているか分からん。 CodeGuardでも捕捉できないし、知らなかったことにしてしまいたい。 はぁ〜あ
だからboost::shared_ptrを使えとあれほど…
俺が作ったんじゃねーもんよー。 BP100個ほど仕掛けたおかげでだいぶ追い込んだ。 ソースがすげークソで困ってる。 メンバ変数がdata1, data2ってなんだー!
455 :
デフォルトの名無しさん :03/10/18 01:31
bcbのエディタってスペースも何もないとこでも クリックしたらその場所でカーソルが点滅するのがウザいんですが、 どうにかならないの?
>>456 慣れると病み付きになります。
なるかもしれません。
てか、イベントハンドラだけこさえたら中身のコードは別のエディタで書いてるけど。
>>452 メモリリーク起きる単位が数バイト程度ならもう放置したほうがよい。
絶対起こしてはならないというなら再設計したほうが速い。
>>455 RegisterDragDrop IDropTarget IDataObject CF_HDROP
あたりを使うのかな。サンプルは知らないので↑をキーワードにして適当に探してください。
今、手元にBuilderが無いのですが、このサンプルだとフォームに対しては Drag&Dropが可能だと思うので、対象をListViewなりListBoxにすれば 問題が無いと思うのですが・・・ DragAcceptFiles(Handle, True); //ドラッグ&ドロップを有効にする このハンドル部分が、 ListBox->Handle ListView->Handle で問題無いと思うのですが・・・
>>463 ありがとうございますー。
自分もそう思ったんですが、462のサンプルをそのまま使った
新規のアプリケーションでも無理なんですよね。
エクスプローラーからアプリケーション内のどの部分にドラッグしようとしても
マウスカーソルがそもそも「禁止」のカーソルになっちゃうんです。
なんか根本的に間違ってるような気が…。
OSはXP。bcbのバージョンは6です。
もちろん他のアプリケーションではドラッグ&ドロップでファイル名の追加できてます。
>>455 フォームにListView1個配置しただけのプロジェクトでやってみたけど
DragAcceptFiles(ListView1->Handle, TRUE);
をフォームのOnCreateに書いて普通にドロップ受け付けたが‥‥
ちなみにドロップされるとDragAcceptFilesで渡したウィンドウにWM_DROPFILESがくるから
あとはそれを処理すればいいはずなんだが‥‥
>>465 > DragAcceptFiles(ListView1->Handle, TRUE);
それだ!それです!できました。
Handleだけでも一応フォーム自体には受け入れ態勢が整うんだと思ってました。
なんか色々なサンプル見て頭が混乱してぽです。
教えたくれた方々、どうもありがとうございました。
>>459 さんきゅ、ってそれってマウスに対応してないのか。
自分的にはあんま意味ないな。
うーん、あれからずっとやってますがどうも上手いこといかない。 DragAcceptFilesの対象を ListBox1->Handleにすると問題ないんですけど ListView1->HandleにしたらドロップしてもWM_DROPFILESが返ってこない気がします。 というか関数のReceiveDropFiles() の中身が無視されてしまいます。 (ShowMessage("test") だけ中に書いて確認しました。ListBoxの時はちゃんと作動。) 一応マウスカーソルをListView上に持ってくとカーソルがドロップ状態になったんで安心してたんですが。 どういうことなんでしょうか…
えーっとですね。 DragAcceptFilesの対象をListView1->Handleにすると、 基本的にはWM_DROPFILESを受け取って処理を行うのはTListViewでないと いけないわけです。 なので、どうするかというとTListViewのWinProcをフックするか、 TListViewから継承してコンポーネントを作成するかです。 Delphi上では継承して動作する事を確認しました。
Delphi ですが参考になれば、、、 unit ListViewDragDrop; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ShellAPI; type TListViewDragDrop = class(TListView) private { Private 宣言 } protected { Protected 宣言 } procedure SetParent(AParent: TWinControl); override; public { Public 宣言 } procedure WMDropFiles(Var Msg: TWMDropFiles); Message WM_DROPFILES ; published { Published 宣言 } end; procedure Register; implementation
procedure TListViewDragDrop.SetParent(AParent: TWinControl); begin inherited; //ファイルドロップを受け取れるように設定する if (Self.HasParent = True) then DragAcceptFiles(Self.Handle, True); end; procedure TListViewDragDrop.WMDropFiles(var Msg : TWMDropFiles); var Count,i : Integer; FileName : array[0..MAX_PATH] of char; ListItem: TListItem;
begin //受け取ったファイル数 Count := DragQueryFile(HDROP(Msg.Drop), $FFFFFFFF, nil, MAX_PATH); //受け取りループ for i := 0 to Count - 1 do with Msg do begin DragQueryFile(HDROP(Drop), i, FileName, MAX_PATH); ListItem := Self.Items.Add; ListItem.Caption := FileName; end; //Drag処理終了 DragFinish(HDROP(Msg.Drop)); end; procedure Register; begin RegisterComponents('Samples', [TListViewDragDrop]); end; end.
>>469 >>470 あぁ、ありがとうございます…
教えて頂いた方法の2つとも少し難しくてよくわからなかったので
検索で調べていたところでした。
慣れないdelphiのコードを見るとなにやら宣言など色々手続きが必要みたいですね。
ちゃんと勉強してみようと思います。うう…。
一人でやってるのでどこがわかんなかったのかわかっただけでもめっちゃ嬉しいですー。
感謝。
Del厨は臭いので来ないでください。
>>474 じゃあ臭いVCLは使わないでくださいね。
>>474 だから手元にC++Builderが無いのだ!!!
だがDelphiはあったのでやってみただけ。
そんな事言うなら、ちゃんと答えてやれ。
こういう所がC++Builderの欠点ですな。
>>460 Frameでモード切り替えをしているんだが特定のFrameにすると
だいたい300〜400KB漏れる。
作り直した方が早いんだが、メンテ扱いなんでねぇ。
「これ使えるのに別のを新しく作るの?」とか言われて萎え萎え。
まぁ金出すのは相手なんだし仕方無いですよ。
じゃあ漏れたままで出荷していいよ。
おもらしプレイ
>>455 とりあえずBCB6でTlistViewからTListViewDragDropを派生させて
>>462 と同じくReceiveDropFiles()を登録してやってみたらヲケでした。
なお、MESSAGE_HANDLERマクロはBCB6ではVCL_MESSAGE_HANDLERマクロになってます。
あと、DragAcceptFiles()で登録するのは、当然、親TFormのコンストラクタの中行う必要があります。
あとは頑張ってください。
∧,,∧ ∬ / Application.OnMessageを使った ミ,,゚Д゚彡っ━~ < _と~,, ~,,,ノ_. ∀ \ こんな方法もある uses ShellAPI; procedure TForm1.FormCreate(Sender: TObject); begin DragAcceptFiles(ListView1.Handle, True); end; procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); var i, Count: Integer; FileName : Array[0..255] of Char; ListViewItem: TListItem; begin case Msg.message of WM_DROPFILES: begin Count := DragQueryFile(Msg.wParam, High(Cardinal),Nil,0); for i := 0 to Count-1 do begin DragQueryFile(Msg.wParam, i, FileName,256); if Msg.hwnd=ListView1.Handle then begin ListViewItem := ListView1.Items.Add; ListViewItem.Caption := 'ListView1' + FileName; end; end; DragFinish(Msg.wParam); end; else end; Handled := False; end;
>>482 こっちの方が簡単だ。あー、勉強になります。
んで、これをBCBにすると、
Form上にTApplocationEventsを1つ張りつける→ApplicationEvents1
このOnMessageイベントハンドラ
void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg,bool &Handled)
{
if ( Msg.hwnd == ListView1->Handle && Msg.message == WM_DROPFILES )
{
char FileName[256];
int count = DragQueryFile((HDROP)Msg.wParam, -1,0,0);
for ( int i=0; i<count; ++i )
{
DragQueryFile((HDROP)Msg.wParam, i, FileName,256);
ListView1->AddItem( FileName, NULL );
}
Handled = true;
}
}
Formのコンストラクタに追加
DragAcceptFiles( ListView1->Handle, true );
あー、これだけのことですむんだなぁ。
>>484 自分もわかりやすく書き直してもらって勉強になりました
わりと簡単にできますねー。ありがとうございます
∧,,∧ ご好評なので、 ミ*゚Д゚彡 餅っと面白みのある ミ つ旦)~~ コードを紹介してみるぽ 〜と,,,~),,~) 万人受けはしないけど〜 そもそも、コンポーネント継承後にインストールしてから動作させるというのは、 かなりの生産性低下を招きRADに致命的だと漏れは思っています。 (このあたりを某はちゃんとまともに考えて解法を出せと…ブツブツブツブツ) インストールせずにコンポーネント継承コードを動作させるためにこんなやり方が使えます。 TMyEditを作成して、自分でコードを書いた後にこんなコンストラクタを書くです。 constructor TMyEdit.CreateClone(Original: TLabeledEdit); var MemStream: TMemoryStream; begin Create(Original.Owner); Self.Parent := Original.Parent; MemStream := TMemoryStream.Create; try MemStream.WriteComponent(Original); Original.Free; MemStream.Position := 0; MemStream.ReadComponent(Self); finally MemStream.Free; end; end; で、Form1のCreateイベントで、TEditのEdit1とTMyEditを置き換えるコードを書くです。 procedure TForm1.FormCreate(Sender: TObject); begin Edit1 := TMyEdit.CreateClone(Edit1);end; これでEdit1がTEditからTMyEditに置き換わって動作します。 (TMyEditの機能を使おうとすると、わざわざキャストする必要があるけど)
おぉっ、これはおもろ。 >そもそも、コンポーネント継承後にインストールしてから動作させるというのは、 >かなりの生産性低下を招きRADに致命的だと漏れは思っています。 この辺は禿しく同意。 それで漏れなんかはカスタムコンポーネントはコード上でnewして いちいちプロパティを代入してたとですが、こういう手もあるのか。 さっそく実験 TStringGrid←TFStringGrid //SaveToFile, LoadFromFileをくっつけてみた //コンストラクタ __fastcall TFStringGrid::TFStringGrid(TStringGrid* Original) : TStringGrid(Original->Owner) { Parent = Original->Parent; std::auto_ptr<TMemoryStream> stream( new TMemoryStream ); stream->WriteComponent(Original); delete Original; stream->Position = 0; stream->ReadComponent(this); } //フォームのコンストラクタで StringGrid1 = new TFStringGrid(StringGrid1); //おためし dynamic_cast<TFStringGrid*>(StringGrid1)->LoadFromFile("hoge.txt"); あー、ちゃんと動くわ。けっこう感動(w 試作品カスタムコンポをとりあえず使ってみるときなんか便利そう。 ごっつぁんです。
新規作成したコンポーネントをインストールするのは最初の一回でよいのだが。 カスタムプロパティエディタを作るとかしなければ、後はコンポーネントのソースだろうが アプリのソースだろうが好きに修正すればよい。必要が発生すれば自動的にパッケージがコンパイル対象になる。
489 :
デフォルトの名無しさん :03/10/20 14:34
Formのマウス位置を取得する方法おしえて
490 :
デフォルトの名無しさん :03/10/20 14:54
void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { POINT mp; GetCursorPos(&mp); char mes[1024]; sprintf(mes , "%d %d : %d %d" , X , Y , mp.x , mp.y); Caption = mes; }
492 :
デフォルトの名無しさん :03/10/20 15:41
やっぱAPI使わないとダメっぽい? TScreenや何かにマウスカーソル位置を取得するメソッドってない?
493 :
デフォルトの名無しさん :03/10/20 15:55
::GetWindowRect ::GetClientRect ::GetCursorPos このあたり使ってシコシコと引き算すれば出るんじゃねーの?
494 :
デフォルトの名無しさん :03/10/20 16:02
いやGetCursorPosで出るんだけどさ、 APIしかねーのかって聞いてんだばか
>>492 GetCursorPos して ScreenToClient 程度の事なんだからいいじゃないか。
API使いたくなければ OnMouseMoveで位置を覚えておけばいいでしょ
496 :
デフォルトの名無しさん :03/10/20 16:37
>>494 APIだとマズい事あるんだったら書けよバカ
ヘルプのTMouse見ろよ知障ども
頭悪い質問のあしらい方という点で ML より優れているかもしれぬ。
499 :
デフォルトの名無しさん :03/10/20 18:50
>>495 使いたくねーんじゃなくて、なんかメソッドねーのか聞いてんだこら
>>406 マズくねーつってんべやあああああああああ
>>497 それだっ!
一応礼を言っとくぜ!産休な知障2号よ
ありがとよカス共よ、まあこれからもちょくちょく質問してやっからちゃんと答えやがれよ
RS232Cでデータの送受信をしようとして フレーミングエラー等をClearCommErrorで dwErrorsに入るエラーフラグでチェックできると思い 使ってたんですがOSがXPのときはうまくいっているようだったんですが Win98上で動かした場合常にdwErrorsにフラグが立っているようで うまくいきません RS232Cでの通信エラーのチェックはどうやったら良いのでしょうか?
501 :
デフォルトの名無しさん :03/10/21 03:06
BCBでアプリ作る際MVCやDoc/Viewを意識して作っていますか? どのように実装すればいい分からないので教えて下さい
502 :
デフォルトの名無しさん :03/10/21 03:47
>>501 意識する必要があるようなものを作らない。
BCBはポトペタでやるものです。 設計なんか考えてはいけません。
>>501 FormをView、ActionをControllerに見立てて、その辺に勝手にModelに相当するクラスを書く
505 :
デフォルトの名無しさん :03/10/21 09:13
>>503 目から鱗ですた、(TдT) アリガトウ
506 :
デフォルトの名無しさん :03/10/21 09:22
Doc・・・docクラスを宣言して、templateの構造体配列を内部に持つ View・・・gridなんかのdrawcellオーバーライドでdocの内容を描画 とか、派生したフォームクラスのプロパティに宣言したDocクラス じゃないの?
イベントハンドラにガシガシコード書けばいいじゃん。
508 :
高校二年生 :03/10/21 09:56
やっとVisualC++をセットアップしました。今やっと平均を出せるくらいになりました。 これからお世話になるかもしれませんがよろしくお願いします。
509 :
高校二年生 :03/10/21 09:59
やっとVisualC++をセットアップしました。今平均を出すぐらいしかできません。 これからお世話になると思いますがよろしくお願いします。
( ゚д゚) ・・・
511 :
デフォルトの名無しさん :03/10/21 10:23
ネタに反応しないこと
ネタを上手に盛り上げるのも必要な事ではあるまいか?
513 :
デフォルトの名無しさん :03/10/21 19:25
stringをAnsiStringに変換する方法教えてください。 当方、VCからBuilderに移行を検討中のドキュです。 おながいします。
AnsiString AnsiStringだった。欝。
>>513 stringがstd::string なら
string src;
AnsiString dst = src.c_str();
とか。
>>513 とりあえず、せっかく保持してる長さ情報を捨てて再度数えるのは勿体ないので
AnsiString dst( &src[0], src.size() );
が効率的(かつ、途中に終端文字があっても大丈夫)じゃないかな。
すいません。まったくの初心者なんですが、BuelderでのC言語の作り方が解りません。 学校の課題をやるだけなので、簡単なプログラムを作成するだけなのですが、 普通に実行してもformウィンドが出るだけで何も表示されないのですが…。 どうすれば普通にC言語が実行できるのでしょうか?
519 :
デフォルトの名無しさん :03/10/22 15:50
>>518 普通はそういった用途にはBCBは使わないものだと思うぞ
>>518 ・エクスプローラーから右クリックで新規作成->テキストドキュメント
・ファイル名を「hoge.c」に
・メモ帳なりなんなりでソースを書く
・コマンドプロンプトでカレントディレクトリをhoge.cを置いてあるディレクトリに
・「bcc32 hoge.c」と打ち込む
・「hoge」で実行
インストールしたのはいいけどどうやって始めるのかがわかりません。 readmeよんでも意味わからないし。どうすればいいのでしょうか? これはネタじゃありません。 あまりにも低級な質問はそう思われやすいので。
>>521 バージョンは? まさかBCC55じゃないよね?
>>518 バージョンによって多少メニューが変わるが、BCB6だと
ファイル→新規作成→その他→コンソールウィザード
ここで「C」を選択
>>524 BCCはコンパイラなので
>>520 になります。
C++を使用するならファイル名はhoge.cppになります。
ちなみにこのスレはBCB(Borland C++ Builder)の相談室です。
>>526 ご回答ありがとうございます。
すいません。なにも知らなくて。
また質問なんですがBCCとBCBの違いがよくわかりません。
スレ違いだったら無視して下さい。他のスレで質問します。
>>527 人間様がプログラミング言語で記述したプログラムソースをCPUが理解できるマシン語に翻訳して
実行ファイルを作るのがコンパイラの役目です。
Borland社の作ったC++用のこれがBCC。
BCBは、RADとか開発環境とか言われます。これはアプリケーションソフトをお手軽に開発できる
ように、たくさんの便利なツールと豊富なライブラリ(プログラムの部品)とコンパイラを一緒にした
商品です。BCBが使ってるコンパイラは当然BCCです。
BCCはタダで配布されてますが、BCBはお金を出して買わないといけないです。
ちょっとしたツールをつくるなら、それこそメモ帳でコーディングしてBCCでコンパイル、でも十分ですが、
メニューやツールバーといったそれなりのGUIを備えたソフトを作ろうと思うと、BCBみたいなRADを
つかった方が断然楽です。
529 :
デフォルトの名無しさん :03/10/23 09:31
たまに
>>518 みたいな質問があると場が和むし私みたいな初級者も安心できるので(・∀・)イイ!!
遠回しに馬鹿にするな
>>530 そんなつもりはないのだが・・・
自分も多少は成長したのだなと確認できて、遠い目になれる瞬間だったのよ
Borland C++ Compilerをインスコしてみたんですが何を如何すれば良いのか分かりません、 BINフォルダにilink32.cfgとbcc32.cfgは作りました。 スレ違いならスマソ
534 :
デフォルトの名無しさん :03/10/23 10:33
プロジェクトからフォームを削除してプロジェクトソースだけで実行するためには どうしたらいいのでしょうか? 普通にコードを書いてもそのまま通過して終了してしまうので
>>534 フォームを持たない WinGUIアプリを作ってるの?
作れない事はないけど・・・・
536 :
デフォルトの名無しさん :03/10/23 12:01
コンソールウィザード使うんじゃなかったっけか?
537 :
デフォルトの名無しさん :03/10/23 13:43
やっぱForm1を隠すのが妥当か?
>>536 コンソールアプリを作りたいとは言ってないようだよ?
C言語のファイルオープン関数(fopen)で.txtファイルを開きたいんですけど、 どのディレクトリに.txtファイルを作ればいいのでしょうか?
>>539 基本はexeがあるのと同じディレクトリ
もしくは任意の場所(この例ではc:\Home\にhoge.txtというファイル)において
"c:\\Home\\hoge.txt"
このようにフルパスで指定。
Windows+BCBで一般的にというならファイル名をファイルオープンダイアログで取得。 など
駄目でした。やっぱり上手くいきません。 以下のエラーが出てしまいます。 「プロジェクト project2_302.exeがEAccessViolationクラスの生成をしました。'アドレス 32566645でアド レス F85D8A60に対する読みこみ違反が起きました。'プロセスは停止しています。再開するにはステップ実行 または実行を選択してください。」
>>541 そのエラーはファイルが開けないとかみつからないというエラーではない。
fopen の前後をここに書いてみて
543 :
デフォルトの名無しさん :03/10/23 19:13
Excelを起動して指定セルに値を設定する方法を教えてください
>>542 こんな感じですが…。
FILE *fpa,*fpb;
int line;
char afname[30],bfname[30],buf[128];
fprintf(stderr,"複写ファイル名aを入力.\n");
gets(afname);
fprintf("afname=%s\n",afname);
gets(bfname);
printf("afname=%s\n",afname);
printf("bfname=%s\n",bfname);
if(fpa=fopen(afname,"r")){
printf("ファイル;%sがオープンできません\n",afname);
return;
}
if(fpb=fopen(bfname,"w")){
printf("ファイル;%sがオープンできません\n",afname);
return;
}
545 :
デフォルトの名無しさん :03/10/24 02:09
>>544 開けた時にエラー処理、開けなかった時に処理続行になってますよ。
それと、"r"で開く時は既にファイルが存在していないとファイルオープン失敗ます。
無効なファイルポインタ使ってアクセスしてエラー起こしてる悪寒
ここのスレタイを確認した上、Cスレに移行されたし。
すんません…鬱だ詩嚢
教えてください C++Builder6のパーソナルエディションってwin3.1ライクなドライブリストボックスとかファイルリストボックスなどのVCLはついているのでしょうか? プロフェッショナルエディションでは確認したのですが
>>548 とりあえず3.1タブの中身
TTabSet
TOutLine
TTabedNotebook
TNotebookTHeader
TFileListBox
TDirectoryListBox
TDriveComboBox
TFilterComboBox
550 :
デフォルトの名無しさん :03/10/24 16:15
>>550 まずはServersタブを探ってみれ。
>>549 ありがとう
TFileListBox
TDirectoryListBox
TDriveComboBox
の三つがあれば十分です
553 :
デフォルトの名無しさん :03/10/25 07:37
HTMLヘルプ使う方法ってないのでしょうか? Application->HelpCommand(HELP_CONTENTS, 0); では何故か駄目なようです。 BCB6を使っています。
>>553 標準のはずなのに、何故か自分で実装するしかない。
ヘルプ周りのフレームワークが新しく作られたので、それにあわせて実装するのだけど、
これがまた使いにくいしバグ多いし、どうしようもない。
TWinHelpViewerを参考にするといいよ。
556 :
デフォルトの名無しさん :03/10/27 11:48
try〜catchで例外が起きた時にデバッガがエラーダイアログを出すんですが これを出さないようにするにはデバッガオプションの何を設定すればいいのでしょうか?
557 :
デフォルトの名無しさん :03/10/27 11:49
558 :
デフォルトの名無しさん :03/10/27 11:56
>>558 例外処理の基礎じゃないか、何も知らないって逝ってるのに等しいぞ。
catch 文で catch して何も処理しなきゃ終わりだろ。
>>556 catchでその例外をきちんと処理してるならデバッガオプションの
「統合開発環境を使う(&I)」
のチェックを外す(゚∀。)
/*
親切にIDEがデバッグ出力止めてくれるからチェック外してデバッグしてますよ_| ̄|○
*/
562 :
デフォルトの名無しさん :03/10/27 13:16
>>559 ちゃんとレス読め馬鹿かおめえ?
>>560 わかってんだよ
>>561 とりあえず無視する例外のアレのチェックはずしたらいくなったが
統合開発環境を使うのチェックはずすのは同じことかこれは
特定の場所の例外だけ無視したいなら、その前後にブレークポイントをかけて、 ブレークポイントの設定−拡張で「ブレーク」をクリアし、それぞれ 「この後の例外を無視する」「この後の例外を処理する」にチェックを入れる。
564 :
デフォルトの名無しさん :03/10/27 13:41
>>563 いやそれなら
try{
a = buff.ToInt( );
}
catch(...){}
みたいな場所沢山あるばあいめんどい
>>564 だから「特定の場所」って書いてるのに・・・。
臨機応変にやってください。
>>565 あーごめごめ、そういうやり方もあるってことで納得
567 :
デフォルトの名無しさん :03/10/27 14:23
ScrollBarで移動するバーの大きさを変更する方法を教えてください
568 :
デフォルトの名無しさん :03/10/27 15:27
ローテク君が壊れちゃったよ
いいなあこの質疑応答パターン(w 問い:「○○○○の仕方を教えてください」 答え:「氏ね!」
571 :
デフォルトの名無しさん :03/10/27 16:55
しょぼいな。
シャバいな。
>561 わざとピントはずれの回答をつけるのがはやっているのかな? 新手の嵐? 例外ごとにトラップするか無視するかをコントロールできます。 例外のクラス名で管理されており、かつ例外クラスの継承状況をたぐってくれますから、 たとえば Indy 関連の例外をまとめて無視したい場合には、Indy 内部の例外クラスの 祖先である、EIdException を無視するように指定すれば Indy 関連の例外は抑止できます。
>>573 特定の例外とは書いてないから、回答は間違ってないと思うが。
いちいち「新手の嵐?」などと書かずに「こんな方法もあるよ」と
素直に書けばいいのに。
高校生に自意識を制御しろというのが無理な話。
577 :
デフォルトの名無しさん :03/10/28 15:32
BCB4(PRO)でADO使ってデータベースを操作したいんですが、何か方法ありますでしょうか。 ググって「ADO対応はBCB5以降」というのはわかったのですが、 何か上手い具合に出来る方法があったらお願いします。 無ければBCB6購入でしょうか・・・うーん
578 :
デフォルトの名無しさん :03/10/28 19:06
別のスレッドで質問したのですが、スレッド終了近くだったため 回答の無いまま1000に到達してしまいました。 こちらで質問しなおしてもいいですか?
>>578 BCBネタならいいでしょ。レスがつくかどうかは保証できんけど。
ありがとうございます。 C++とC++Builder6を初めてまだ1週間程度ですがよろしくお願いします。 エクスプローラからドロップしたテキストファイルを扱うツールを作ろうと思って、 まずドロップされた物がフォルダなのか、テキストファイルなのか、あるいはその他のファイルなのか判定する、 以下のようなコードを書いてみました。(といっても大部分サンプルコードから切り貼りしたものですが) 実際に動作させて見るとテキストファイルをドロップしたときは正しく動作するのですが、 その他のファイルをドロップすると、 プロジェクト Test1.exe が EAccessViolation クラスの例外を生成しました。 C++とC++Builder6を初めてまだ1週間程度ですがよろしくお願いします。 エクスプローラからドロップしたテキストファイルを扱うツールを作ろうと思って、 まずドロップされた物がフォルダなのか、テキストファイルなのか、あるいはその他のファイルなのか判定する、 以下のようなコードを書いてみました。(といっても大部分サンプルコードから切り貼りしたものですが) 実際に動作させて見るとテキストファイルをドロップしたときは正しく動作するのですが、 その他のファイルをドロップすると、 プロジェクト Test1.exe が EAccessViolation クラスの例外を生成しました。 'モジュール 'CC3260MT.DLL' のアドレス 32657E39 でアドレス 00000000 に対する読み込み違反がおきました。 というエラーが発生してしまいます。 どのように改善すれば期待通りの動作をしてくれるようになるのでしょうか。 (コードは次のレス) というエラーが発生してしまいます。 どのように改善すれば期待通りの動作をしてくれるようになるのでしょうか。 (コードは次のレス)
しまった。ミスをしました。失礼しました。 コードです。 //フォームへのドラッグを有効にする void __fastcall TForm1::FormCreate(TObject *Sender){ DragAcceptFiles(Handle,true); } //テキストファイルかそれ以外のファイルかフォルダか判定する void CheckFileFolder(char FilePath[]){ DWORD fa; fa = GetFileAttributes(FilePath); if(fa & FILE_ATTRIBUTE_DIRECTORY){ Application->MessageBoxA("フォルダ","判定"); } else if(strcmp(strstr(FilePath,".txt"),".txt") == 0 ){ Application->MessageBoxA("テキストファイル","判定"); } else{ Application->MessageBoxA("テキストファイルで無い","判定"); } } もう一つ続きます。
//Win32APIからのイベント void __fastcall TForm1::WMDropFiles(TWMDropFiles & Msg){ int cnt = ::DragQueryFile((HDROP)Msg.Drop, 0xFFFFFFFF,NULL,0); for(int i=0;i<cnt;i++){ char DragName[MAX_PATH]; ::DragQueryFile((HDROP)Msg.Drop, i,DragName,sizeof(DragName)); CheckFileFolder(DragName); //ここでエラーが発生する } ::DragFinish((HDROP)Msg.Drop); } ここまでが関係するコードです。 自作のCheckFileFolder関数を呼び出すところでエラーが発生します。
>else if(strcmp(strstr(FilePath,".txt"),".txt") == 0 ){ strcmp と strstr を分けてみれ。
>>583 おかしいのはそこですね。
んで、問題の関数をVCL風にすると
void __fastcall TForm1::CheckFileFolder(AnsiString FilePath) {
{
DWORD fa = FileGetAttr(FilePath);
if( fa & faDirectory ) {
//省略
else if( ExtractFileExt(FilePath) == ".txt" ) {
//省略
}
てな感じ。
こんなのはVCL使った方が面倒なくて楽だと思う。
なお呼び出しもとはいじる必要なし。
>こんなのはVCL使った方が面倒なくて楽だと思う。 んだな。 ところで大文字小文字は気にしなくてよいのかのう?
586 :
デフォルトの名無しさん :03/10/28 21:31
漏れなら PathFindExtension() 使うなあ。
>>583 のようなバグも起きないし。
>>585 わすれてました(´・ω・`)
ExtractFileExt(FilePath).LowerCase() == ".txt"
みなさん、ありがとうございます! 正しく動作するようになりました。感動です! というか、拡張子を返すそのままの関数があったんですね。 もっと、ちゃんと調べないといけないですね。 丁寧なレス、ありがとうございました。
589 :
デフォルトの名無しさん :03/10/29 01:04
初心者の私にご教授ください ページコントロールのタブシートにラジオグループを設置したのですが ヘッダに void a(〜〜〜) { RadioGroup1->Items->Clear(); ...... } とか書いても未定義のシンボルになるのですが ヘッダとかに何か加えるなどしなければならないのでしょうか? どうかおしえてください
↑追記)ラジオグループが未定義になるんです。
PaintBoxの横軸において正弦波状に変化するグラデーションを描きたいのですがどうすればいいのでしょうか? イメージとしては | 黒 | 灰 | 白 | 灰 | 黒 |・・・ や | 青 | 紫 | 赤 | 紫 | 青 |・・・ のように表示させたいのですが。 (↑はここへの書き込みのために簡略化してますが実際には滑らかに黒→白 青→赤となる) 「中間色をこちらで指定して左から何ドット目の列に表示」というように直接的に指定するのではなく sin(x)を使って正弦波のピークが青及び赤に設定され、その間が滑らかに変化する方法が分かりましたら是非とも教えてもらえませんか。
>>591 DWORD(((sin(x) + 1.0) * 0.5) * 255.0)
って感じかな。
解決しました あ〜なさけないぅぅ
あうう、バグ発見。 環境変数PATHが、 C:\Program Files\Borland\CBuilder6\BIN だと、make.exeがbuiltins.makを読み込めず、正常に動きません。 C:\PROGRA~1\Borland\CBuilder6\BIN と、ショートネームだと動く。 VisualStudioもメイクファイルのPATH=に空白が入ると×だったんだよね。
C:\Program Files\Borland\CBuilder6\BIN を "C:\Program Files\Borland\CBuilder6\BIN" にしたらだめですか?
596 :
デフォルトの名無しさん :03/10/29 14:49
stlpmt45.dllは何のためにありますか?
ヤマ勘 stlport multi thread 45.dll stlportのiostreamとか
598 :
デフォルトの名無しさん :03/10/29 17:39
画像(bmp)の上からクリックされた座標を読み込みたいのですが、 FormのOnMouseDownイベントでは引数に代入されませんでした。 他に方法をご存知の方がいましたらご返答お願いします
602 :
デフォルトの名無しさん :03/10/29 18:59
サーバーのイベントにあるOnAcceptでスレッドを生成したところ、 クライアントからの電文が受信できなくて、OnGetThreadで記述したところ 正常に受信できました。 スレッドの生成はOnGetThreadでしなければいけないのでしょうか? どなたか、ご教授お願いします
603 :
デフォルトの名無しさん :03/10/29 19:01
すみません、sage忘れました
>>595 >"C:\Program Files\Borland\CBuilder6\BIN"にしたらだめですか?
だめみたい。実際、$(CC)と$(CPPFLAGS)マクロが空欄になる。
8.3の名前は環境によってPROGRA~1がPROGRA~2になることもあり得るから
レジストリでパスいじるプログラムは注意だね。
606 :
デフォルトの名無しさん :03/10/30 14:04
TImageを継承するTImageExってクラスを作ったのですが、 それのOnMouseDownイベントをとりたいのですが、 どう記述すればいいのでしょうか?
>>606 publicで継承してるならOnMouseDownをオーバーロードしてない限りTImageと同じ方法で普通に取れると思うが‥‥
608 :
デフォルトの名無しさん :03/10/30 14:21
>>607 なんかワーニング出るので、ソース書いてくれるとありがたいです
>>608 自分のソースと警告内容を書くのが先だろう。
610 :
デフォルトの名無しさん :03/10/30 14:29
>>609 そのとおりですね、つかMouseDownって名前がダメだったっぽい
aMouseDownとかすると通りました(;´Д`)
TBitmapに12*10のサイズの1bitのビットマップを読み込んだ状態でScanlineプロパティを呼び出すととんでもない戻り値が帰ってくるのですが、 (ビットマップの先頭アドレスからの差分が帰ってくる。Scanline[0]だと40、[1]だと36) 1bitのビットマップでは正常な数値を返さない物なのでしょうか? 当然の事ながらそのまま操作するとAccessViolationで落ちます。
>>611 とりあえず試してみたけど問題は出なかったけど?
PixelFormatプロパティの指定はちゃんと合ってますか?
>>613 合っています。
TSpeedButtonのGlyphオブジェクトに対しての操作なのですが、
設計時にIDE側で設定していると前述の動作。
LoadFromFileで読み直すと正常な動作
をしているようです。
pf1bit の画像を弄りたいならビット操作だよ。 バイトで操作しようとしてない?
選択範囲をクリップボードへコピーする方法がわからないです。 特定のオブジェクトからコピーする方法はヘルプにも載っているのですが 現在選択されているオブジェクトの選択されている範囲のみコピーしたい のです。ご存知の方おられましたら参考となるURLでもよいのでご教授 願います。
>>617 文字列のみのコピーです。選択範囲はマウスで指定したもの
なので特定のmemoやeditではありません。
>>618 ははあ、つまり、どこにフォーカスがあるかが知りたいという事ね?
フォームのActiveControl をみて TCustomEdit なら CopyToClipbordとかでいいんじゃないの?
TMemoとかも TCustomEditから派生してたと思うから確認してね。
でも標準アクションの TEditCopy でいいと思うけど ダメなの?
>>619 >
>>618 > ははあ、つまり、どこにフォーカスがあるかが知りたいという事ね?
> フォームのActiveControl をみて TCustomEdit なら CopyToClipbordとかでいいんじゃないの?
> TMemoとかも TCustomEditから派生してたと思うから確認してね。
フォームを単位に考えるのですね。貴重な内容をご教授ありがとうございます。
> でも標準アクションの TEditCopy でいいと思うけど ダメなの?
違いさえも分からない状態です。少し調べてまたレスします。
ActiveControl.HandleにWM_COPYを投げればよい。
ActiveControl->Perform(WM_COPY, 0, 0); こんな感じでできました。(*.*
はやくBCB7出してくれよ某 BCB7ではもっとゴリゴリに最適化できるコンパイラと なるべくエラーを吐かないIDEを頼む
boost100%キボンヌ
>623 少なくとも、今年一杯はBCB6優特販売をしているから来年以降でないと出ないよ
まあ、これだけたってまだ情報出てこないところ見ると7飛ばして8に行く予感
Delphi7が出てからもうすぐ一年
便りが無いのは良い便りってことで一つ
便りが無さ過ぎるのもなぁ・・・ これがホントの便秘
630 :
デフォルトの名無しさん :03/11/04 16:14
すいません、質問です。 例えば、FormにLabelを作成して、Captionを"あいうえお"としてコンパイルします。 その実行ファイルをバイナリエディタで開くと、"あいうえお"というのがあり、 書き換えることが出来てしまうんです。 これを防止するにはどうすればいいんでしょうかm(_ _)m
>>630 をいをい、バイナリエディタでの書き換えを阻止する事なんて
基本的に無理だよ。
>>630 強いて言えばEXEファイルのCRCをチェックするルーチンを挟むとか。
よくやり方はわからんが。
>>632 やっぱりそれですか・・・
簡単にバイナリから日本語を無くす方法ってないのかな。
どうもありがとうございました。
>>630 フォームのプロパティの情報は、リソースに記録されます。
その読み書きは TReader /TWriter でされます。
この読み書きの部分で暗号化してしまえば、どう書き換えたら良いかは簡単にわからなくなります。
>>634 おお、そうなんですか!
どうもありがとうございました!
636 :
デフォルトの名無しさん :03/11/05 18:04
サイトからhtmlファイルを落とすプログラムを組みたいんですが どうすれば出来るのでしょうか?? c++builder5を使ってます
激しくミス
AnsiString htmlContent;
TIdHTTP http = new TIdHTTP(Form1);
htmlContent = http->Get("
http://www.2ch.net/ ");
delete http;
∧||∧ TIdHTTP *http = TIdHTTP(Form1);
ありがとうございます! やってみます!
IDEなしでVCLを使うウラワザ発見。 これで統合環境とオサラバできます。 ソースの先頭に以下のpragmaを書けば、 VCLを使ってもmakeイッパツでリンクできます。 AnsiStringとTRegistry使えますた。 (bplからテキトーにコピペ) #pragma package(smart_init) #pragma link "vcl.bpi" #pragma link "rtl.bpi" #pragma link "vclx.bpi" #pragma link "bcbsmp.bpi" #pragma link "dclocx.bpi"
>>641 IDE で、一度、プロジェクトファイルから Makefile を生成すればよいだけの話だよね?
以前、BCB5でmakefile出力(bpr2makで)したら使い物にならなかった。 ソースファイルが増えるとコマンドラインに入りきらない。 BCB6では直ってるの?
644 :
デフォルトの名無しさん :03/11/07 10:09
BCB6でListViewをvsReport、RowSelect = true、MultiSelect = true、ReadOnly = trueで使っている時に 行選択状態でフォーカスが他(ボタン等)へ行くと<見た目に行選択が解除されてしまったかのようになります。 フォーカスが他へ移っても行選択の表示がなされるようにするにはどうすればいいのでしょうか?
HideSelectionだよん
>>645 助かりました、ありがとうございました。
こんな基本のプロパティにあったなんて・・・
BCB6(+sp4)でSTLport4.6のビルドに成功された方はいらっしゃいますか? 私の環境では C:\STLport-4.6\src>make -f bcb60.mak install MAKE Version 5.2 Copyright (c) 1987, 2000 Borland md ..\lib\obj サブディレクトリまたはファイル ..\lib\obj は既に存在します。 md ..\lib\obj\BCB md ..\lib\obj\BCB\ReleaseD bcc32 -I.;..\stlport;C:\PROGRA~1\Borland\CBUILD~1\Bin\..\include;C:\PROG RA~1\Borland\CBUILD~1\Bin\..\include\windows -jb -j1 -w -c -w-par -w-inl -w-stl -D;;_RTLDLL;_WIN32;_DLL;_STLP_DESIGNATED_DLL -tWDR -O2 -n..\lib\obj\BCB\ReleaseD .\dll_main.cpp Borland C++ 5.6.4 for Win32 Copyright (c) 1993, 2002 Borland .\dll_main.cpp: エラー E2268 ..\stlport\stl/debug/_debug.c 261: 未定義の関数 '_vsnprintf' を呼び 出した(関数 __stl_debugger::_Message(const char *,...) ) エラー E2228 ..\stlport\stl/debug/_debug.c 261: エラーあるいは警告が多すぎる(関 数 __stl_debugger::_Message(const char *,...) ) *** 2 errors in Compile *** ** error 1 ** deleting ..\lib\obj\BCB\ReleaseD\dll_main.obj と出てビルドに失敗します。何がいけないのでしょうか。
648 :
デフォルトの名無しさん :03/11/08 19:05
C言語の基礎もわからない、プログラミング歴0の私ですが 何か初心者に分かりやすいような、1から教えてくれるようなサイトは無いでしょうか?
>>648 初心者だからと甘えるな。
買ったらついてくるマニュアルとヘルプだけでも出来る奴は出来る。
どうして出来るんだと思う?
必死になるからだよ。
必死になっても必死じゃないと思う事から始めろ。
>>648 >>650 まぁ、「必死になる」つうか、「自分で試行錯誤する」「自分で考える」だな。
どんなに適切で判りやすい解説でも、おサルさんを一人前のプログラマに
仕立てることは不可能だわ。
マジレスしとくとサイトはある程度スキルのあるやつが情報を漁るには
適してるけど素人には役にたたんよ。すなおに入門書買いな。
BCBつかうならCじゃなくてC++ね。
C/C++は、マニュアルとヘルプだけじゃきついと思うぞ。
俺の場合、VBはそれで何とかなったけど、Cは無理だった。
サイトではなく、本の方が良いというのには同意
>>651
653 :
デフォルトの名無しさん :03/11/09 00:07
C++Builder 5です。 基本的な質問ですいませんが教えてください。 キーの割り当てをカスタマイズって可能でしょうか。 エミュレーションの切り替えは、エディタプロパティにありますけど、機能ごとに個別に設定は可能でしょうか。 それと、起動時に前回開いていたプロジェクトを自動的に開くにはどこを設定すればよいのでしょうか。
>>653 >キーの割り当て
カスタマイズ可能だけど難しい。漏れは出来ない。つか、資料がないもの。
>全開のプロジェクト
ツール→環境オプション→設定タブ→自動保存の設定グループ→プロジェクト デスクトップ
655 :
デフォルトの名無しさん :03/11/09 00:55
質問なのですが、書籍を買う場合 C++ 入門の本を買うのが良いのでしょうか? それともBCBの入門を買うほうが良いのでしょうか? C++ の能力値は0です。
>>655 C++の入門書
BCB使うにはC++とDelphiの本があれば十分。
BCBの本はいらない。
>>655-656 いや、さすがに初心者にDhelphi本でBCB使えというのは無茶だろ(w
言語の理解がなければなにもできないのでC++本は必須。
ただ、C++の入門書は、Cを知っている人向けのと、Cを知らない人向けのがあるので気ぃつけてね。
当然後者を買う。
BCB本は「Dhelphiマガジン」出してるPSネットワークの叢書が判りやすい。
Dhelpi使いでBCBも使える人が書いてる。
しかしこっちはC++勉強した後だな。
658 :
デフォルトの名無しさん :03/11/09 10:21
>>654 ありがとうどざいます。
キーカスタマイズは事実上、出来ないってことなんでしょうか。(涙
659 :
デフォルトの名無しさん :03/11/09 11:57
もう今後のバージョンのBuilderではVCL担がないの?
その前にBCBの次バージョンが出るかどうかが問題だけど
「Dhelphi」って何ですか?
ヘルプの親戚です
663 :
デフォルトの名無しさん :03/11/09 15:10
たとえばABCというクラスがあって ABC test; とやるのと ABC *test = new ABC(); とやるのではどう違うんですか? インスタンス化後の書き方が test.func(〜 test->func(〜 と変わるだけで動作が同じように思えるのですが・・・
寿命や入るメモリが違う。 前者はスタックに入って寿命がスコープに依存、後者はヒープに入ってdeleteされるまで生存。 ついでにVCLクラスおよびその派生クラスは静的な確保はできない。
>>663 実体とポインタの違い。
ポインタはやや実行にオーバーヘッドがかかる。
それから継承したクラスの仮想関数をBase classのポインタから
呼ぶ場合はポインタか、実体の場合リファレンスでないとだめっしょ。
実体から関数を呼ぶと全部静的結合される。
>>663 デフォルトコンストラクタがないクラスの場合
Person person[20];や
Person[20] = { "田中", "田中", "田中", ・・・ }のような書き方ができない。
Person* person[20];
for(int i=0; i<20; ++i)
person[i] = new Person("田中");
のような書き方はできる。
Cを知らない人のためのC++の入門書で何かお勧めはありますか?
668 :
デフォルトの名無しさん :03/11/10 19:37
グループボックスにコントロールを配置してるんですが グループボックスのEnabledをfalseにしても 上に乗ってるコントロールが灰色表示になってくれない(操作は不能になってる) 確かC++Builder3とかは灰色になった気がしたんだが・・ どうすればできますか?
>>667 私は技術評論社の「決定版 はじめてのC++(塚越一雄/著)」を愛読しています。
他の入門書(特にC++関係)は、英語で書かれたものの翻訳が多いけど、
この本は日本人が書いてるので、翻訳特有の読みづらさが無い。
また、Cだけでなくプログラミング言語そのものを扱ったことの無い人向けに書かれてるので、
とても分かりやすいです。
難点は、UNIX端末+GNUコンパイラでのプログラミングを前提に書かれてること。
C++BuilderやWindowsプログラミングには別の本と併用した方がいいかも。
>>667 根性があれば。
ピアソン・エデュケーション刊 「C++プログラミング 第2版 Vol.1-3」
対象は初心者。内容は少し古いが、説明は的確で判りやすい。
全部こなせばかなりの力がつくはず。
∫,,,,,,,,,∧,,∧
>>668 ⊂,,,,,,,,,つ,,゚Д゚ミつ グループボックスのプロパティで
ComponentsかControlだかをグルっと一周
全部.Enable=Falseにするです。
672 :
デフォルトの名無しさん :03/11/11 09:58
TPaintBoxを継承?するTPaintBoxExってのを作って そのOnPaintイベントでグラフを書いてるのですが このフォームの上に他のウィンドウが重なると下のグラフがぐちゃぐちゃになります フォームに直接TPaintBoxを貼り付けてやったら問題なかったのですが・・ グラフが崩れなくなる方法を教えてください
675 :
デフォルトの名無しさん :03/11/11 11:20
>>673 えとですね、変な風にリドローされてるっていうか、
上にあるウィンドウを少しずつずらすと、下のペイントボックスの描画も
一緒に変な風に描画されるというか・・
>>675 描画前にCanvasがクリアされてないとか?
そのTPaintBoxExの中を確かめるしかないと思う。
フォーカス外れると、Brush とか Pen とか盛大に 変わっちゃうので、そのあたりも要チェック。
678 :
デフォルトの名無しさん :03/11/11 13:07
>>676-677 お答えありがとうございます。
キャンバスのクリアはRefreshとかRepaintですか?
FillRectで全部塗りつぶすのは外道ですかね?
679 :
デフォルトの名無しさん :03/11/11 13:08
あと、TImageてTPaintBoxより描画速度がかなり遅いんですが これって単にコードがまずいだけでしょうか? 同じコードなのですが
>FillRectで全部塗りつぶす 別に問題無い。性能にも響かない。
TShape配列を動的に作成しようと TShape *Cur[2]; って定義すると許されない型とエラーがでるのですが 配列で宣言する方法を教えてください。
>>682 >TShape *Cur[2];
これ自体は何の問題もない。
エラーが出たのは他の場所だろ。
>>683 Cur[0] = new TShape(Parent);
ここでエラーがでます
>>684 Parent? thisじゃないのか?
>>684 それも大抵の場合問題なし。
自分の書いたソースを変に編集してないか?
それじゃ誰も原因が判らんぞ。
687 :
デフォルトの名無しさん :03/11/11 18:56
すいません特定のMDIを指定したい場合 どのようにすればいいのでしょうか? やはりハンドルを取るのでしょうか?
>>688 すません
MDIの子ウィンドウを指定したい(アクティブにしたい)場合
と言うことです
>>689 親窓から子窓を操作したいなら親窓のMDIChildrenで子窓のポインタが取得できる。
>>690 ありがとうございます
わかりにくくて申し訳ございませんでした
がんばってみます
692 :
デフォルトの名無しさん :03/11/12 10:18
BCB6を再インストールしたのですが、「プロジェクトに名前をつけて保存」 したときにデフォルトのディレクトリを変えていたのですが、それが 「\CBuilder6\Projects」に戻ってしまいました。変え方があったと思うのですが 忘れてしまいました。わかる方教えてくださいませ。
ショートカットのプロパティで作業フォルダ。
ありがとー! これ、わかりにくいよね・・・
695 :
デフォルトの名無しさん :03/11/12 20:17
TScrollBarでバーをドラッグして移動した時の増減を設定したいのですが どうやってやればいいでしょうか?
>>695 TScrollBarのヘルプ読め。
それで分からなかったら具体的にヘルプのどの記述が分からんのか書け。
普通に日本語の読解力があればTScrollBarなんざヘルプ読んだだけで使える。
・・・と、ここまで書いて思い出したが、ヘルプの目次は「アルファベット順」でなくて
「オブジェクト順」にしとけよ。初心者はそれで案外躓くみたいだ。
698 :
デフォルトの名無しさん :03/11/13 10:10
フォームにボタンを貼り付けてそのボタンのキャプションを全角で入れると文字化けしてしまいます フォームのフォントはMSPゴシックでボタンはParentFontはtrueになってます。 原因はなんでしょうか??
700 :
デフォルトの名無しさん :03/11/13 10:21
あ、DEFAULT_CHARSETにするとちゃんと表示されました! ありがとうございます
ちなみに通常はSHIFTJIS_CHARSETになってるはずだが‥‥
>>702 えと、最初にフォームのフォントをArialにしてたんですよ、英語のアレだったんで
んで日本語でアレするのでフォームのフォントをMSPゴシックにしたら、ああなっちゃったって感じで
Delphi 8が発売されるらしいのにC++Builderは無視されるの? 7さえ出てないのに。
705 :
デフォルトの名無しさん :03/11/13 13:25
C++はMicrosoftにしとけって言うBorlandからのメッセージです。
706 :
デフォルトの名無しさん :03/11/13 14:17
マジかYOおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお! C++Builder7ささとだせやああああああああああああああああああああ 6ゲットせずに7待ってるだぞ( ゚Д゚)ゴルァ!!
ちょっとスレ違いですが、C++BUILDERでJPEGを扱うプログラムを組んでたら 実行中にJPEGエラー#28っつーのを吐いて止まりました。 28ってのは多分エラーコードなんだろうけど、どこ調べてもJPEGの エラーコードに関する記述がありません。 どこかで調べられないもんでしょうか?
>>706 Builder6の何がいけないのか理解できない。
別に6でいいじゃん。Delphiだって7は不評なんだし
Builder7や8が出たところで不満点が改善される確証はない。
709 :
デフォルトの名無しさん :03/11/13 15:33
>>708 うるせー馬鹿!
俺は7がほしいんだこのカス野郎が氏ね
710 :
デフォルトの名無しさん :03/11/13 16:34
>>709 そうか がんばって777getしてくれ
712 :
デフォルトの名無しさん :03/11/13 18:23
おれは5を購入して半年ほどで6が出た。 期間が短かったので、バージョンアップを見送った。 7が出ればバージョンアップしたい。
妻みぐい3が出たらBCBも新しいバージョンが出るに違いない
C++Builder6のWebアプリケーション作成でapacheのモジュール(DLL)が 作れるんですね。 どっか解説されてる書籍かサイト知りません?
715 :
デフォルトの名無しさん :03/11/13 22:30
C++Builderの次バージョンではDoc/ViewなりMVCを採用して欲しい 自分でOberverパターンを実装するのは面倒でしかたない
だからTAction使えばMVCになるって。
717 :
デフォルトの名無しさん :03/11/14 04:37
だから実装するのは面倒でしかたないって。
TActionManager使えばいいやん
719 :
デフォルトの名無しさん :03/11/14 18:34
TKillクラスで氏ねよ
死ぬ時までTObject派生かよ…
721 :
デフォルトの名無しさん :03/11/15 22:08
いまC++Builder買うのってタイミング間違ってる?
>>721 難しいなぁ(w
次バージョンが何時出るのか、そもそも出るのか分からんし(爆
もし、Learning版が安く売ってたら狩っても損はせんだろうけど。
多分、次バージョンが出たときに特待価格でProfessional版が買えるだろうから。
もれはその昔それでPro版ゲトしました。
でも、次バージョンでなかったらどうしようもない罠。
>>721 次のバージョンが出るかかなり怪しい状況&値下げ中だから買っていいんじゃないか?
店頭にもキャンペーン版が出てきてるみたいだし。
>>721 次バージョンの先行きが不明なので、買うならPro以上にしとケ。
値段は全然違うが、それだけの価値はある。
725 :
デフォルトの名無しさん :03/11/16 02:04
BuilderはC#に移行させるんじゃないの?
私もBCB6 Proを買うかどうか思案中。 今後の方針が解らんと、おいそれとは手を出せないよ(;´Д`) C#B, C++X, BCBと滅茶苦茶なラインナップだな… Delphi8(Delphi7付属)という話もあるし
727 :
デフォルトの名無しさん :03/11/16 02:51
某島終わったなという感じだ。 稼ぎ頭だったJBuilderもEclipse、NetBeansに食われてきてるし。
728 :
デフォルトの名無しさん :03/11/16 10:34
C++Builder5のプロジェクトの設定でアイコン指定してexe作ると Explorerなどではアイコンが表示されるのに exeを起動してもタスクバーには白いアイコンしか表示されないんですが どうすれば両方にアイコンが表示されますか?
C++の製品ラインナップはわけわかめだよな。 どうして行きたいのかわからん。
>BuilderはC#に移行させるんじゃないの? Borlandは公言していないはず(少なくとも私は知らない) 素直に考えれば、 ・C++Builder --> C#Builder ・Delphi(native) --> Delphi8(dotNET) なんだろうけどね。しかし、Delphi8にはネイティブ用にDelphi7同梱なのに C#Bには付かなかったりと訳解らんよ。オマケにC++BuilderXの登場… 付いて行けないよ…
732 :
デフォルトの名無しさん :03/11/16 16:03
RADじゃないならC++Builder使わないって人も結構いるんじゃないかな?
733 :
デフォルトの名無しさん :03/11/16 16:10
お前らもうちょっと冷静に考えれば某の実質的な Windows開発環境ツールからの撤退であることに気が付くはずだ。
WIN32ネィティブアプリ専用の最後の環境なら、 今のうち買っとくべきかも。 wxWindowsだとWIN32専用ではないし。
736 :
デフォルトの名無しさん :03/11/16 17:05
C++でRAD搭載ならXだろうがNETだろうが別にかまわないけどね。
VC++.NETでManaged C++使えばいいやん
738 :
デフォルトの名無しさん :03/11/16 17:12
VC+。NETのRADってどの程度の門なの?
同じ.NETだからC#.NETやVB.NETと変わらない。
>738 C#Builderとも大して変わりない
741 :
デフォルトの名無しさん :03/11/16 17:22
DelphiとC++Builderのどちらが多く使われてるんだろう?
>>732 私もそうです
しかしC#BuilderはC#だった。 C++.NETBuilderが出ないならVC++.NETしか選択肢が無いな。
どちらかというとManagedC++Builderか。
744 :
デフォルトの名無しさん :03/11/16 17:27
これでますます Linuxと.............しにくくなるような
.NETで開発のするのは嫌いじゃないんだが、 実行速度と実行環境がウンコだからなぁ
managedC++はイラネ。あんなもの使うくらいだったら素直にC#使うよ
747 :
デフォルトの名無しさん :03/11/16 17:44
C#Builderってクラスエクスプローラがないのですが・・・
C#ってJAVAモドキでC++とは全然違うだろが。 どうやって移行しろと?
749 :
デフォルトの名無しさん :03/11/16 18:48
C#のほうがJavaよりはC++に似てる
750 :
デフォルトの名無しさん :03/11/16 21:42
すいません、TCppWebBrowser関連の質問です。 別に外部ネットワークとやりとりはしないんですが、 htmlの使い勝手の良さを利用しようとしてTCppWebBrowserコンポ使ってます。 用途はローカルで動く画像データベースです。 で、やりたいことは、TCppWebBrowser内の画像情報(ファイルパス、幅*高さ)を取得するには? というものです。 htmlの<form>で送信したものを受け取るには サーバーソフトなどがインストール済みでないと駄目ですよね? 出来るだけその手の環境依存は避けたいので、 何か良い方法を探してるんですが…。 とりあえず、画像のロールオーバー判定はjavascriptでやると簡単だと思うんですが、 アプリケーションにどうやって画像情報の値を渡せばいいのか。 よろしければアドバイスなどお願いします。
>>750 ポート80にソケットを作ってlisten
ブラウザがURL="
http://localhost/FUGA "で起動すると繋がるんで
それを読み込むと"GET /FUGA"
FUGAを見てリクエストを判断して応答。
"HTTP 1.0 200"
"Content-type: ほげほげぇ
めんどいんで続きは自分でやんなさい。
>>751 一行目の前半からしてビンビンにわからない匂いがしてきます(;´Д`)
「ポート80にソケット」を作るのに一ヶ月、listenとやらにもう一ヶ月はかかりそうです。
なんか個人的にはかなーり面白そうなことを教えてくださってるぽいんですが、
周りに教えてくれそうな友人もいないし、わかりやすいドキュメントもそうそう転がってはなさそうだし、
非常に残念ですがやめるぽ…。
もうちっと簡単な方法はないもんでしょうか。
>>752 ブラウザではなくて、
HTMLを読み込んで自動的に普通のダイアログを合成するソフトを
開発中だがまだまだリリースできましぇん。
あ、いいことを思いついた。 htmlで画像にアンカーを貼って、アンカー名を画像と同じ名前にしとけば、 アンカー貼った同じ場所にジャンプした際に、 OnNavigateComplete2イベントで画像の名前とファイルパスは拾えそうだ。 あー、こんな簡単な方法があったとは。まだできるかわからんけど。
755 :
デフォルトの名無しさん :03/11/17 01:45
BCB6 ProでMamimiみたいなものを作りたいのですが、マルチスレッドでひっかかってます。 スレッドを次々に所定の数まで作るのはどうすればいいのでしょう? 私が持っているBCBの入門本では、別スレッドを1個しか作っておらず、 複数のスレッドの管理までは説明されていません。 よろしくお願いします。
1個作れるなら複数作れるだろう。
>>756 説明になってないと思われ
漏れも説明はする気ないけど。
どっかにサンプルコードあったかな・・・・
758 :
デフォルトの名無しさん :03/11/17 19:57
>>757 説明できないならレスしないでください。
ウザイだけです
TThreadとかCreateThreadでスレッドは簡単に作れるけど セマフォとかイベントシグナルの概念を理解していないと管理は無理。 サンプルコードは \Program Files\Borland\CBuilder6\Examples\Apps\Threads\ にある。
760 :
デフォルトの名無しさん :03/11/17 21:29
TCP/IPを用いて画像の送受信のプログラムを作成しようとしているんですが、実行するとJPEGエラー#52というエラーが出ます。 何が原因か分からないんですが、どなたか分かる人はいらっしゃいますか? streamの使い方も正しいか自信無いんで、そこの所も教えてください。お願いします。 これがソースです。 ーー送信部ーー TMemoryStream *Stream = new TMemoryStream(); //画像をTJPEGImageにコピー// TJPEGImage *jpeg = new TJPEGImage(); jpeg->Assign(Image1->Picture->Graphic); jpeg->SaveToStream(Stream); delete jpeg; /* //Steramに画像をコピー// Image1->Picture->Graphic->SaveToStream(Stream); */ //送信データの始まりの印// unsigned char mark=0xff; ClientSocket1->Socket->SendBuf(&mark,1); // 送信データの総数// unsigned int a=Stream->Size; ClientSocket1->Socket->SendBuf(&a,4); //Stream->Memory の内容をStream1->Sizeバイト送信// ClientSocket1->Socket->SendBuf(Stream,Stream->Size); }
761 :
デフォルトの名無しさん :03/11/17 21:32
ーー受信部ーー TMemoryStream *Stream = new TMemoryStream(); int Length,Err; // 画像データを取り込み始める時はPositionは 0 になっている// if(Stream->Position == 0) { //データの始まりを探す unsigned char mark=0; Socket->ReceiveBuf(&mark,1); if(mark!=0xff) { //データの始まりでなければ以降の処理をやめる// return; } Length=0; int b=0; //データが送られるまで少し待たないとLengthの値がおかしくなる// while(b<100) { Err++; b=Socket->ReceiveLength(); } /*Panel4->Caption = Err;*/ Err=0; //データのサイズは4バイトと決めたので4バイト受信する// Socket->ReceiveBuf(&Length,4); /*Panel3->Caption = Length;*/
762 :
デフォルトの名無しさん :03/11/17 21:33
//ストリームサイズをLength にあわせる// Stream->Size=Length; Form2->ProgressBar1->Max = Length; } // 画像データをStream に取り込む// char *buf; //受信できるデータ量を取得// int bufs = Socket->ReceiveLength(); //bufsバイトのメモリーを確保// buf = (char*)malloc(bufs); //受信データlenをメモリーbufにデータ量bufsだけ受信// int len= Socket->ReceiveBuf(buf,bufs); //受信データのlenをbufメモリーに書込み// Stream->Write(buf,len); bufs=0; //受信した量だけLengthから減らす。Lengthは残り必要なバイト数// Length -= len; //不明のバグ。特定のPCとやり取りすると、受信データが数バイト少ない// if(Length<5) { /*Panel4->Caption = "bug?";*/ Length=0; } free(buf);
763 :
デフォルトの名無しさん :03/11/17 21:34
// 全て取り込み終わったら// if(Length == 0) { // 送られてきたjpegをbitmapに復元してImage1に表示// TJPEGImage *jpeg = new TJPEGImage(); Stream->Position = 0; //Streamの内容をjpに取り込む// jpeg->LoadFromStream(Stream); // jpをImage1に取り込む// Image1->Picture->Bitmap->Assign(jpeg); Stream->Position = 0; delete jpeg; }
ネットワークと画像の表示でエラーの切り分けをしろ。 まずはオフラインで画像の読み書きするサンプル作れ。 ここはデバッグ依頼スレではない。
765 :
デフォルトの名無しさん :03/11/17 23:48
1人月(60〜80)でならデバッグやってあげてもいい。 ちなみに日割り計算は不可です。
766 :
デフォルトの名無しさん :03/11/18 00:04
>>759 キーワードとサンプルの所在を教えてくれて感謝でつ
767 :
デフォルトの名無しさん :03/11/18 00:10
>>755 セマフォ
同期
クリティカルセクション
ミューテックス
でぐぐれ。
Access97形式のMDBファイルがありまして,内容は下の様な感じに なってます. テーブル名:1 算数 国語 A 90 80 B 80 90 テーブル名:2 算数 国語 A 60 70 B 90 70 (テーブル3,4・・と同形式で続きます) 今,A君,B君の算数と国語の平均(例えばテーブル1〜5まで)を求めて, 出力させたいのですが,どんな方法が考えられますでしょうか? 環境:4 professional
>>769 その質問からは
「Access使え」
以上の回答はないだろう。
テーブルが分かれてる意味がわからん。
772 :
デフォルトの名無しさん :03/11/18 01:55
>>769 ODBC-APIの「SQLTables」でテーブルの一覧を要求して、
バインドしてフェッチしてリストを作成し、
テーブルごとにSQLExecDirectを投げてバインドして
フェッチして集計。エラー処理いれて500行ぐらいかな。ODBCAPIだと(藁
>> 770さん,773さん ご返信ありがとうございます. テーブルが分かれているのは,システムが毎日DBを自動的 更新している(トラヒックデータのようなもの)のです. 実際のテーブル名は20031118のような形式になってます. 自動的に更新されるDBを使って何日かの変動を計算するような処理を楽に できないかな,と思ったのですがどうも難しいみたいですね.
>>774 アホくさいほど簡単です。APIのマニュアルが3cmぐらいあって分厚いのと
機能が細かくてダンドリが長いだけです。
>>774 えっと、まずはデータベースの勉強をしてください。
運用でテーブルが増える設計は、クズです。
>>774 さん
アホくさいほど簡単なんですか...
いろいろ調べてるんですけど,StringGrid使ってExcelのようにセルを
指定して計算させられないかな,と今考えてます.
>>776 さん
はい,データベースの勉強しながらやってます.
テーブルが増えていくのはクズなのかもしれないんですけど,
仕様というか私にはどうすることもできないのです...
つまりそのクソな仕様を決めたのは769ではなく、 そのクソな仕様を変える権限が769には無いので そのクソな仕様の中でなんとかしたいとこういうわけなんだな
運用でテーブルが増える設計をする会社はクズです。
>>779 まぁまぁ、きっと素人が趣味で入門書の通りに作ったものなんだろうから
その入門書も随分クズなのか、全部を読まずに作った奴がクズのか、どちらかだろうけど
素人に、他人に影響を及ぼすような仕様を決めさせて、効率が悪くても仕様の変更を認めない会社はクズです。
>>777 単に野次馬根性で聞くので、無理に答えてくれなくてもいいんだけど、
何はともあれ、毎日テーブルが一つずつ増えていくってのは、いくらなんでも
アンマリだと思う。いったいそのテーブル、あとで誰がナニに使うの?
そんな設計だったら、毎日のログを単なるテキストファイルとして作るだけで
十分なんじゃないかと思うんですけど・・・
783 :
デフォルトの名無しさん :03/11/19 00:15
>>777 がテーブル増えるのはどうしようもない・・・ていうのは
改良する器量がないから、どうしようもないっていう意味だと思うが。
とりあえず、テーブルが分かれるのがどうしようもないなら UNION ALLで全データを取り出して AVG(算数)、AVG(国語) とかで平均だせるんじゃない?
ログみたいなデータをテーブルに書き込んでって 巨大化するとデータの追加の処理でCPU資源を食い尽くします。 いっそファイルに保存しといて、 集計が必要な時に必要な分だけDBに吸い上げて使うべきかも。
786 :
デフォルトの名無しさん :03/11/19 01:24
AccessとかSQLの基本を理解していれば、簡単に1テーブルに変換できるじゃん。
>>786 この場合は、技術的なことを理解してれば簡単に1テーブルに変換できる類じゃないようだ。
もっと、人間関係のどろくさいことを理解する必要がある。
>>787 ところが人間関係のどろくさいことにこだわると一歩も前に進めなくなる
789 :
デフォルトの名無しさん :03/11/19 16:26
すいません bcb.exeが見つかりませんと出てくるのですが どこを設定したらいいのでしょうか? よろしくお願いいたします
追記 実行するとです
791 :
デフォルトの名無しさん :03/11/19 16:28
C++Builder7って出ないんでしょうかね。 今は5を使っているんですけど、7出たらたぶん買うと思うんだけどな。 C++Builderってプロジェクトにヘルプが統合されてないんですよね。これってめっちゃ使いにくいです。 ヘルプコンパイラがおまけのように添付されてるだけですから。 RoboHelpのサブセットくらいを添付して、ヘルプファイルをプロジェクトにいれてほしい。 WInHelpとHTMLヘルプの両方をサポートするのは当然として。 それとXP対応(マニフェスト)かな。 これだけでいいから対応してください。 7が無理ならV6.5でいいから出してください。 某さんへ。
792 :
デフォルトの名無しさん :03/11/19 17:14
VCとか超うんこなんでヘルプは今のままでいい、どうせあんま使わないし
VC もヘルプが統合されてないけど…
>793 いつの時代の話をしてるんだヨ VC1.5使ってるんか。
795 :
デフォルトの名無しさん :03/11/19 18:22
Windows3.1時代のVCっしょ( ´∀`)
796 :
デフォルトの名無しさん :03/11/19 18:26
VS.NET2003ではC++プロジェクトを生成するときにWinHELPかHtmlHelpの選択可能だからな。
797 :
デフォルトの名無しさん :03/11/20 01:47
質問です。TCppWebBrowserに表示されている ドキュメントのソース(AnsiString)を取得する方法はわかったんですが、 反対に、AnsiStringに入ったHTMLソースをTCppWebBrowserに表示させる方法がわかりません。 どういうコードになるんでしょうか?よろしければお願いします。 一応下はTCppWebBrowser→HTMLソース(AnsiString)の抜き出し、のコードです。 #include <mshtml.h> IHTMLDocument2* doc2; IHTMLElement *el; wchar_t *wcpp; AnsiString asHTML; CppWebBrowser1->Document->QueryInterface(IID_IHTMLDocument2,(void**)&doc2); doc2->get_activeElement(&el); el->get_innerHTML(&wcpp); asHTML=AnsiString(wcpp);
updateファイル4を当てたけどヘルプ→バージョン情報でも表示されないけど成功してる? Delphi6だと表示されるんだけど。
800 :
デフォルトの名無しさん :03/11/20 14:55
FormのKeyPreviewをtrueにすると、そのフォームにのってるStringGridのKeyPressイベントで VK_RETURNとかとれなくなっちゃうんですが、KeyUpやKeyDownじゃなくてKeyPressで VK_RETURNをとる方法を教えてください
801 :
いなむらきよし :03/11/20 16:17
キケー!
質問ですが、特定コンポーネント上でグローバルフックを使わずにWindowsキーを無効にすることってできますか? またはWindowsキーを取れるTHotkeyコンポーネントでもいいのですが‥‥ RegisterHotkey()がWindowsキー指定可能なのにHotkeyコントロールでWindowsキー取れなくて(´・ω・`)ショボーン
SQLの勉強を1から勉強してます.どうもSQLが思うように実行されません. DBは769で書いたようになってます. AnsiString str; str="Select 算数 from 1;"; Query1->SQL->Add(str); Query1->Open(); や AnsiString str; str="Select 1.* from 1;"; Query1->SQL->Add(str); Query1->Open(); は期待する結果が得られたのですが, AnsiString str; str="Select 1.算数 from 1;"; Query1->SQL->Add(str); Query1->Open(); とやると, 一般SQLエラーです Syntax error (missing operator) in query expression '1.算数'. というエラーが出てしまいます.ドットあるいはドットのあとの算数(日本語) がまずいような気がするのですが,ダブルクォートしたりいろいろ試して 見たのですが,一向にうまくいきません. どのように対処すればよろしいでしょうか?
>>798 ありがとうございます。
とりあえず見様見真似で頑張ってput_innerHTMLを使って書いてみたんですが、
やっぱり駄目でした…
IHTMLDocument2* doc2;
IHTMLElement *el;
AnsiString source="<html><head></head><body>テスト</body></html>";
wchar_t wcpp=*WideString(source);
CppWebBrowser1->Document->QueryInterface(IID_IHTMLDocument2,(void**)&doc2);
doc2->get_activeElement(&el);
el->put_innerHTML(&wcpp);
「project hoge.exeがeAccessViolationクラスの例外を生成しました。
hoge.exeのアドレス〜でアドレス〜に対する読み込み違反がおきました。」
正しくはどういったものになるんでしょうか…。
だめっすか〜。 コレ見てもだめっすかね? 取得したHTMLをいじって表示し直すアプリのソースの一部です。 動いています。 if(CppWebBrowser1->Document != NULL){ IHTMLElement * element; std::wstring html; { IHTMLDocument2 * html_docment2; CppWebBrowser1->Document->QueryInterface(IID_IHTMLDocument2, (void **)&html_docment2); html_docment2->get_activeElement(&element); wchar_t * temp; element->get_innerHTML(&temp); html = temp; } // ここでいじくる element->put_innerHTML(const_cast<wchar_t *>(html.c_str())); }
wchar_t wcpp=*WideString(source); がおかしいよ。 そのおかしいのを el->put_innerHTML(&wcpp); で渡しているのでエラーになるね。 きっと。
>>805 ありがとうございます。
そのコードでお見事動きました!
これってドキュメントが空の状態の時に、put_innerHTMLだけする、というのは無理なんですよね?(エラーが出て落ちる)
「交換」という形でしかCppWebBrowserに表示することは不可能ぽいですねー。
それと、右クリックメニューのソースの表示をすると変更したドキュメントではなく元ドキュメントのソースが…。
なんにせよ、ひとまずお礼を言わせていただきます。
どうもありがとうございます。
808 :
デフォルトの名無しさん :03/11/21 11:26
AnsiStringのFormatで-1を%uで表示させてもFFFFにならないんだが、どうして?
809 :
デフォルトの名無しさん :03/11/21 11:28
ワラタ
>>808 ヘルプよく嫁
そもそもBCBだとAnsiString::FormatじゃなくてAnsiString::sprintf使わないか?
811 :
デフォルトの名無しさん :03/11/21 11:35
812 :
デフォルトの名無しさん :03/11/21 11:39
>>808 あ、間違いです。
%uで-1でFFFFじゃなくて65535です、これならないんですが、
813 :
デフォルトの名無しさん :03/11/21 11:58
>>810 ヘルプしか読んでねー、つかちょっと聞くが
AnsiStringでFormatよっかsprintfのがいいのか?
どうなんだ?ああん?
ARRAYOFCONSTって見にくいじゃん
815 :
デフォルトの名無しさん :03/11/21 13:13
>>814 みにくいっちゅうかめんどいね
でもなんとなくsprintfとかって昔ながらのアレよっか、Formatとかのが気分的にいいかんじがしてたので
今まで使ってたんだが、同じ事を何回も繰り返すような場合はどっちが早いのかなこれ
816 :
デフォルトの名無しさん :03/11/21 20:12
TDataModuleにTQueryをはりつけて、そのQueryのFieldを追加しようとすると 「SQL分がありません」とエラーがでます。 これってSQLに何を指定すればいいのでしょうか?
817 :
デフォルトの名無しさん :03/11/22 00:51
すいません、今CppWebBrowserを使ってタブブラウザを作っているんですが、 問題が起きました。 リンクをクリックして新規ウィンドウを別タブで立ち上げることは出来たんですが、 1 二度以上タブを閉じてから新規タブを開こうとした時。 2 二度以上タブを閉じてからフォームを閉じようとした時。 3 二度以上タブを閉じてから別タブから別タブへとアクティブタブを移動しようとした時。 のいずれかの場合にアラートが延々と出て強制終了せざるを得なくなります。 「アドレス0000054Cでアドレス0000054Cに対する読み込み違反がおきました。」 一応怪しそうな場所のソースを見てもらえますか? 新規ウィンドウがリクエストされた時に別タブを開いてます。 void __fastcall TForm1::CppWebBrowser1NewWindow2(TObject *Sender, LPDISPATCH *ppDisp, VARIANT_BOOL *Cancel) { TTabSheet *TabSheet = new TTabSheet( this ); TabSheet->PageControl = PageControl1; PageControl1->ActivePage = TabSheet; TCppWebBrowser *CppWebBrowser = new TCppWebBrowser(this); CppWebBrowser->Align=alClient; CppWebBrowser->TOleControl::Parent = TabSheet; *ppDisp = CppWebBrowser->Application; } どうかよろしくお願いします。
818 :
デフォルトの名無しさん :03/11/22 00:53
C++Builderこのソフト人気あるなぁw
>>818 VisualStudio10万円突破コースか一万円の.net限定ライセンスってのに
比べると6万で商用ライセンスありってのは安い。
ただ、今年はMingW(gcc-WIN32)の完成度が上がってきて、
wxWindowsと一緒に無料でライセンスかなり柔軟って選択肢が
出てきたから厳しいね。
MingwとwxWindows使ってもRADじゃないしなあ…
>>820 wxは今風にレイアウトボックス機能ありだから、
部品の貼り付けもHTMLと同じ要領でテーブルなんかを使って
ぺたぺた配置、自動的にリサイズ。ラクチン。
マウスをドット単位に動かして脂汗ダラダラ流す必要もないよ。
822 :
デフォルトの名無しさん :03/11/22 02:06
RADってそんなに必要か?
>>821 レイアウトボックスじゃ細かい事できないしなあ…
>>823 そんな細かい調整したウインドウだとリサイズできないだろ。
低解像度のディスプレイで画面いっぱいに広がったり、
高解像度でちっちゃくて目がチカチカってのは使いにくい。
ユーザーがリサイズするとHTMLみたいに、自動的に配置換え
するのがいいじゃんか。
>>824 そのままスケーリングすれば全然問題無いかと
>>817 ステップ実行とかトレース実行をして調べてみれ。
怪しいところはブレークポイントしかけて
変数や関数をインスペクタで覗きまくれ。
827 :
DrawGridの任意のセルにビットマップを表示するには? :03/11/22 22:31
DrawGridの任意のセルにビットマップを表示するにはどうするのでしょうか? 表示するビットマップはImageListに登録されているものではなく、その都度ファイルから読み込むものとします。
828 :
デフォルトの名無しさん :03/11/23 01:05
Project1.resにイメージエディタアイコンをつくり保存しました。 このアイコンを実行時にImageListにAddしたいのですが、どうすれば言いのですか? LoadImage(HInstance, "FOO", IMAGE_ICON, 32,32, LR_DEFAULTSIZE); でNULLが帰ってきます
>>826 遅れましたがありがとうございます。
デバッガはまともに使ったことなかったんですが、これを機に
利用してみようと思います。
エディタを使って下記の内容のバッチファイルを作って、”c:\”に保存します ってどうやればいいのですか?エディタの出し方がわかりません。お願いします。
832 :
デフォルトの名無しさん :03/11/23 02:07
あるクラス(THoge)のオブジェクトhogeをディスクにシリアライズ、デシリアライズ したいのですが、どうすればいいのでしょうか? class THoge { TFoo *foo; int i; ... }; THoge *hoge = new THoge(); やはり、メンバ一つ一つをTStream::WriteBufferで書き出さなければ いけませんか?
これをどこかに打つのですか?
>>831 他の板でそれに引っかかったバカがいて祭りになったことがあったな。
>>832 hogeを丸ごと書出せばいい。
THoge* hoge = new THoge();
TFileStream* fHoge = new TFileStream("Hoge.dat");
fHoge->Write( hoge, sizeof(THoge) );
ただし、THogeのメンバにAnsiStringやポインタがある場合は
そのメンバの書出し方法を別途考慮しないとどうしようもない。
836 :
デフォルトの名無しさん :03/11/23 15:06
すいませんが教えてください。 Builder5です。 TImageIndex 型のヘルプに、 プロパティがどのイメージも表さないことを示すには,TImageList 値の 凡1 を使います。 との記述があります。 ”凡1”部分はヘルプ画面では[]1のように見えるのですが、意味が理解できません。 どのイメージも表さないようにするにはどうすれば良いのでしょうか。 やりたいことは、TListView (ViewStyle=vsReport)のアイコンを表示しないようにしたいのです。 ListView1->Items->Item[index]->ImageIndex=? ここに代入すべき値がわかりません。
>>837 さん
-1とか、-2とか、65536・・・色々代入してみたのですが、どれも結果は同じで
アイコンは表示されなくなったのですが、その部分に空白が表示されます。
SmallImagesからイメージリストを削除すると空白は表示されません。
サブアイテムのアイコンを表示したいので、SmallImagesにイメージリストを設定しています。
>>836 先頭カラムは文字列だけにして、
次カラムからアイコン+文字列にしたいってこと?
↓こんな感じ?
|ほにゃらら|◎ほにゃほにゃ|■ほにゃ|・・・
841 :
デフォルトの名無しさん :03/11/24 13:21
ImageListへAddIconし終わったオブジェクトは削除してもいいのでしょうか? for(int i = 0;i < 10;++i) { TIcon *icon = new TIcon(); //iconへの処理は省略 ImageList1->AddIcon(icon); delete icon;//←必要? }
いいんじゃない? 最近触ってないから忘れたけど deleteしても実行時エラーとかにならなければOKっしょ
843 :
デフォルトの名無しさん :03/11/24 16:31
実行時エラーになるときがあるから聞いているんですが・・・
845 :
デフォルトの名無しさん :03/11/24 17:36
他アプリにあるエディットボックスにキャレットを持って行きたいのですが どなたかわかる方お教えください・・。 状況は、そのエディットボックスのハンドルはわかっていて、 フォーカスはそのアプリの中のボタンにあるという感じです。。
846 :
デフォルトの名無しさん :03/11/24 17:59
SetFocus APIではダメですか?
>846さん それだとできませんでした。
848 :
デフォルトの名無しさん :03/11/25 09:31
>841 deleteしてok。というかdeleteしないと不味いんでない?
849 :
デフォルトの名無しさん :03/11/25 10:56
ODBCにデータベース名をプログラムで設定する方法を教えてください
deleteしなかった場合の弊害って正直象が蚊に噛まれる程度のもん?
851 :
デフォルトの名無しさん :03/11/26 01:43
すいません、InternetExplorerでウィンドウ内でお気に入りを開いた時、 そのお気に入りパネルの右上に閉じるボタンが出ますよね? x印で普段はフラットだけど、マウスカーソルを上に乗せるとベベルが付いて立体的になるやつ。 あれってどのコンポーネント (あるいはどのシステムイメージ?) で作られてるんでしょうか? TButtonでアルファベットの「x」を乗せて作っても似ても似つかないものになってしまって。 よろしくお願いします。
>850 プログラム終了時にdelete すればイイじゃん。
>>851 SpeedButtonのFlatをtrueにしてみそ
あ、CoolBarにSpeedButtonを乗せたら、パネルリサイズ時の右揃えが効かなくなってしまった。 CoolBarのAlignはalTop。 SpeedButtonのAnchorsの設定は ak Left →false ak Top →true ak Right →true ak Bottom →false にしてます。 InternetExplorerでウィンドウ内に開いたお気に入りパネル部分と一緒のものを作ってるんですが…。
すごくくやしいんだ Edit1->Text を見ればわかるように、BCBではコンポーネントのフィールドや メッソドにアクセスするためにポインタを利用している。 どうしてポインタを使わなければいけないのかぜんぜんわからないんだ。 ポインタを使わなくてもメモリ上に作られたオブジェクトにアクセスする 手段は他にあるのに・・・・。 なぜ???????
すごくくやしいんだ BCB6とDel7の両プロ版に同梱されているインストールシールドは 共存できないみたいなんだ。先にBCB6版をいれて、それからDel7版を 入れるとインストールエラーになる。 どっちも使いたいのだけど、どうしてだろう?????
おとなしくビジュアルピスタチオ使え
すごくくやしんだ ビジュアルピスタチオを探したけど見つからないんだ。
>>856 素直にTCoolBarのOnResizeを使う
>>857 プログラム的に言えば Application ウィンドウのためだから
コード的に言えば VCL は new しなきゃいけないから
あ〜ぁ釣られちゃった
862 :
デフォルトの名無しさん :03/11/26 10:45
mdbファイルがある場合には普通にOpenして読み書きができるのですが、 無い場合にはTable->CreateTable( );を行うと 「キー違反です」とエラーがでます。 これは何を設定すればちゃんとmdbファイルが作成されるのでしょうか?
863 :
デフォルトの名無しさん :03/11/26 11:50
初歩的な質問ですがTQueryでSQLでデータを絞り込みして Firstなどしたときに実際にデータをとるにはどうしたらいいのdしょうか?
865 :
デフォルトの名無しさん :03/11/26 14:46
いやFieldValues["なんとか"];ででけたわ
C++Builderどうなんの?
869 :
デフォルトの名無しさん :03/11/27 13:59
現在未定って言ってた hp発表まで待ってと........................ BCBの方がDelphiより人気ないのかな..............
そりゃあそうだろ。 VCLなんてDelphiのライブラリそのまんま持ってきただけだし。
871 :
デフォルトの名無しさん :03/11/27 15:31
けど気になるのがDelphi7か8出すときのCEOだったかな? 発言の日本語訳でDelphiはBorlandが躍進するのには 重要だったので次を出すみたいに書いてあったの (うろおぼえ)それ読んだときに過去形なのかな?と思ったことが あったのでBCBに重点おくのかな?と思った 日本語訳がまずかったのかな?(英語よめんからつらい................)
Delphi8もDelphiで作られてんの?
次=C++BuilderXじゃないの?
CBX日本語版マダァー?(チンチン アレって組み込みや携帯向けみたいなこと書いてあったが (Java対応するんだってね)
875 :
デフォルトの名無しさん :03/11/27 15:54
C++Builder7まだかこら
BCB7信じてるよコイツ( ´,_ゝ`)プッ
877 :
デフォルトの名無しさん :03/11/27 16:03
BCB7は C++Builder XX Turbo になります(w
878 :
デフォルトの名無しさん :03/11/27 16:16
BCB7は MS C++Builder 2004 Studio になります(w
大きな魚に食われるってことですか(^^;
880 :
デフォルトの名無しさん :03/11/27 16:31
C++Builder7は出るんだよっ!!プンスカ
デネーヨ
それは.NETも含まれているのか?
883 :
デフォルトの名無しさん :03/11/27 18:10
BCBのプロジェクト設定で、ロケール=言語、ってのがありますが、 これは、プログラム中から動的に変更できますか?
>>883 んにゃ。
どのリソースに対応しているかの目印程度なので動的に変更する意味が無い。
プログラムのリソースが単一ロケールにしか対応していないならばそれを使うし
複数ロケール対応ならどのリソースを使うはWindowsが地域の設定から決める。
thanx!
>>884 BCBの多国語対応サンプルプログラムがあればなぁ。
お前らは一体C++Builder6の何が不満で、7が出るとして何に期待してるんだ?
887 :
デフォルトの名無しさん :03/11/27 22:17
888 :
デフォルトの名無しさん :03/11/27 22:18
不満なら自分で気に入るものを作れよ(藁 ・・・・と言い放つ人はさすがにいないか。
>>886 とにかくコンパイラ本体のバグ対策。今はまるでベータ版。
名前空間のバグ、それとSTLPortのstd::log10が使えん。
テンプレート周りが変。
あとパーソナル版と同機能で商用ライセンス付きを二万円で出してホスイ。
プロ版Liteとか言う名前にしてな。プロ版の機能ウザイ。
>>889 STLportr4.6をBCC5.6.4でビルドして入れ替えたら_STLとstdの名前の
多重解決問題を解決できると思い、今必死にビルドと格闘中。
STLport本家にもBCC5.5.1までしか動作確認してないと書いてあるし、
BCC5.6以上のSTLport搭載版BCCではmakファイルをメインテナンス
をしている暇がないと書いてForumには書いてある。そのくせBCB60.mak
とBCB60mt.makはしっかりとあるし、ないならないできっぱり諦めも
付きそうなのに、ビルドが通らなくてあちこちいじくってます。
とにかくビルド成功したら絶対発表する。STLport本舗のForumにも
書き込むよ。
>>889 名前空間の問題の問題は氷山の一角だと思ふ。また引っかかったら報告するけど、
BCC5.5以降のコンパイラの完成度が低いんでないかなぁ。他のコンパイラで
安定するソフトが例外で落ちる。
892 :
デフォルトの名無しさん :03/11/28 10:56
Utf8ToAnsiみたいな関数だと、多国語のコードがAnsiになったとき被りますよね。 そのとき、Ansiがどのロケールになるか、とか、どういうルールになってんでしょ。 教えて下さい。
逆に言うと、Utf8Ansiで、エンコードを切り替えたいときには、どうやったら良いですか。 ブラウザの「表示−エンコード」メニュー、みたいな。
BCBの体験版ってあるの?
896 :
デフォルトの名無しさん :03/11/28 13:01
C++BuilderのVCLのソースコードってObjectPascalで記述されているのですか? それともC++ですか?
897 :
デフォルトの名無しさん :03/11/28 13:03
>>897 いい加減な事かくなよ。Delphiで書かれたVCLのソースコードが付属
しているよ。
ダウンロードしたけどさ この体験版は製品版ではどのエディションなんだ?
900 :
デフォルトの名無しさん :03/11/28 15:54
あるプロジェクトで普通にビルドできてたのに フォームを新規作成しただけで、エラーが出るようになります。 こんなことってあるんでしょうか。ビルダーが悪いのか?
>900 99999999999999999%あんたが悪い。あんたの責任。あんたが社会をダメにしている。 質問内容からして、具体性がなくどんなエラーなのかさえ書いていない。 こんな間抜けな質問をする香具師のレベルだ。だいたい想像が付くというものだ。
boostの通りにくさをそのままにしつつ 出し抜けにexportを実装してウケを取ったら ボーランドは神
すげ〜初歩的な質問ですがコンパイルするにはどのボタンを押せばいいのでしょうか?
>>903 クイックスタートガイド読んで出直してきてくださいませ。
スマソ、Enterpriseトライアルと書いていますね。
あらしてすまん。
907 :
900だよ :03/11/28 17:06
じゃあ書きますよ。私も必死ですから。 エラーはWinMainの Application->CreateForm(__classid(TNantaraForm), &NantaraForm); というところで出ます。tryスコープの中のCreateForm関数の初っ端ですね。 エラーの内容は、 [C++ エラー] t2.cpp(70): E2303 型名が必要 [C++ エラー] t2.cpp(70): E2121 関数呼び出しに ) がない の2つです。(位置はそれぞれ (TNantaraForm)の直後 と セミコロンの直後 です) まあ理屈から考えると、フォームを作成したときにビルダーが自動生成したコードが原因なんでしょうが 一般的な手順でエラーが出るとどうしようもないです。 あとバージョンを4から6にあげてるので、それも原因かも。
909 :
900だよ :03/11/28 17:22
あと心当たりがあるとすると、WinMainが一部書き換えられています。 (このプロジェクトはもともと他人の書いたもので、それを私が書き換えて・・・というアレです) 正直C++は初めてなんですが、メインを書き換えるのってどうなんでしょ?割とよくやることなんでしょうか? >識者の方
CやC++のmainは普通に自分で書くもんだが、 WinMainではWindowの初期化だのなんだのがいろいろ詰まってるので そのあたりを理解するまでは弄らないほうが得策。 もっとも、WinMainに書くものも一部あるけど それは大体パターンが決まってる
>>909 >WinMainが一部書き換えられています
それをまっさきに疑うべきだろ。
912 :
900だよ :03/11/28 17:33
>>910 , 911
そうなんですか。まあ私は良くわからないので、いじらないことにします(笑)
このまま継続しても埒あかなそうなので、プロジェクトを新しく作って
ソースを一個一個輸入しつつ・・・っていうのをやろうと思います。
もともと構成がわりとはっきりしてる(と思う)ので、こっちのほうが早いかなと・・
(というかそう思わないとやってらんない)
E2121が出てるってことは、単純にカッコがあってないってことだから 余計にカッコが入っているか、どこかのカッコを間違って削除してしまったとか ファイルのどっかにゴミが入っているっぽい。 カッコのつじつまがちゃんと合っているか確認するのが第一。
その前にE2303がでてるから、必要なヘッダファイルがインクルードされてないか、 名前空間が呼ばれてないか、単純にスペルミスか、その辺もチェックした方がいい。
915 :
900だよ :03/11/28 18:25
>>913 かっこは、目視した限りでは、合ってそうな感じなんですが・・
(あとセミコロンと中括弧も)
なにかわかりやすく色分けしてくれたり、そろえてくれたりするエディタみたいなのないですかね?
>>914 名前空間って何?
あとヘッダファイルは私も怪しいと睨んでて、関連ありそうなとこに追加しまくってますが・・・
これもなかなか骨が折れます(笑)
あ〜そろそろ疲れたし帰るかな〜
USEFORM("NantaraForm.cpp", NantaraForm); はある? プロジェクトに登録されてないとか
USEFORMとかのマクロがおかしいんじゃないの。
考えてるうちにガイシュツ化してた…_| ̄|○
919 :
900だよ :03/11/28 19:31
>>916 あります
>>917 というかもともとのソースに正規表現でないものとかが含まれていて
追加されたコードとの間に不具合が出たのではないかと・・
あと上にも書いたWinMain書き換え問題もありますが。
バージョンが変わればマクロのアルゴリズムも変わるでしょうし。
920 :
デフォルトの名無しさん :03/11/28 19:47
TChartでデータ数が100とかある場合にX軸のラベルを10個だけ書きたい場合は どうすればいいんですか?_
921 :
デフォルトの名無しさん :03/11/28 20:03
>>920 TChartをダブルクリック、軸を選んで、目盛りを選ぶ。
Delphi5にも付いてるトランスレーションツールは、BCB6にも無いですか?
トランスレーションツールが無いことは分かりましたが、 VCLの文字列を別の言語に変えれませんか?
質問です。 今までずっとVBを使ってきたのですが、今VC++を勉強しています。 しかし、難しくてなかなか進みません。そこで思ったのですが、 VisualC++とBCBとの違いって何でしょうか。場合によっては 変更してBCBにしようかなとも思っています。 どうぞよろしくお願いします。
すいません、また聞かせてください。 TCoolBar内のSpeedButtonを右揃えにしたいと思って、 TCoolBaのOnResizeに以下の様に書いたんですが駄目でした。 SpeedButton1->Anchors=[akTop,akRight]; [C++ エラー] 'TAnchorKind'型は 'TAnchors' 型に変換できない 色々調べてみると下記のような書き方をするらしいという記事を見つけたので やって見ましたがこれもやはり駄目です。 SpeedButton1->Anchors<<akTop<<akRight; 正しい文法はどのようになるのでしょうか?
>>923 むしろ言語がC++だという点が同じだけであとは大違いのような。
RADとしてはBCBの方が馴染みやすいかなとは思う。
コンポーネントを適当に配置してイベントハンドラをがちゃがちゃ
書くだけでもそれなりのアプリがつくれる。お手軽ではある。
ただ、VCにせよBCBにせよC++が分からんとどうにもならんわな。
>>924 構文そのものは以下のとおり
SpeedButton1->Anchors = SpeedButton1->Anchors << akTop << akRight;
VCLのプロパティは実際には関数の呼出しなので注意。
しかし、これでも右揃えになるかというと?
VC++が理解できないなら、BCBも同じように理解できないだろうな。 VC++で苦労したことが、BCBで楽になるってことはあるけど。 のこぎりや金槌を変えても、家の建て方を知らなければ、結果は同じ。
>>925 ,927
RESありがとうございます。
言語自体はまだまだ勉強中ですが、ポインタも問題なくわかりますし、
継承もわかります。ただ、VC++だとMFCがありますが、このMFCを
使うために覚えなければいけないことが多いとか、その辺が辛いんです。
あと、もう一つ質問なんですが、BCBのソースをVC++でコンパイルしたり
またはその逆をしたりというのは(多少の訂正はいいとして)、
VC++ではMFC、BCBではVCL(?)のようなライブラリ郡を
使用しなかった場合にできることなのでしょうか?
>>928 math.hとテンプレートを使わず、long doubleとlong longも使わず、
for (int iとやらず、<cstdlib>とやらず<stdlib.h>とやれば
それなりにコンパイルは通る。
>>926 > しかし、これでも右揃えになるかというと?
なりませんでした(;´Д`)
左にラベルかスタティックテキスト、で、右端にスピードボタンさえあればいいんで、
色んなコンポーネント試して見ましたがどれも駄目。
しょうがないっぽいので、パネルの上に直接置くことにします。
デザイン的に見栄えしないのがイヤなんですが…。
まさか「区切り線」コンポーネントとか無いですよね?
>>930 いや、だから、OnResizeハンドラ内で位置合せしたらエエやン。
int right=100; //SpeedButton1の右余白。適当に設定する
SpeedButton1->Left = CoolBar1->Width - right;
>>931 あぁ!アンカーで設定するんじゃなくて、数値で指定すればよかったんですね?
できました。ありがとうございます。
>>928 >継承もわかります。ただ、VC++だとMFCがありますが、このMFCを
>使うために覚えなければいけないことが多いとか、その辺が辛いんです。
それならVBだけ使っていればいいでしょう。
VCにせよBCBにせよ、その他の開発環境にせよ、覚えなあかん事は(多分VBよりも)たくさんあるよ。
それが辛いなら無理して覚えることはないやン。
仕事でどうしても必要というなら仕方がない。頑張ってくれとしか言いようがないが。
934 :
デフォルトの名無しさん :03/11/29 03:33
質問なんですが、ActiveXに渡す型がwchar_t**に決まっていて 今文字をAnsiStringで書いたんですが、どうやってwchar_t**型 に入れたらよいでしょうか?? AnsiString Text; wchar_t* def; wchar_t** fuf; Text ="abcdef" ; def=WideString(Text); (、、、wchar_t*になら変換できたんですが) SmarTalk1->TextToDevSyn(fuf); (これがActiveXへのMethodです) よろしくおねがいします。
CB4Professionalを使って、MDBファイルにアクセスする DBアプリケーション作ってます。 db1とdb2は異なるmdbファイルのそれぞれのBDEエリアスで, Select a.field1 from ':db1:テーブル1' as a,':db2:テーブル1' as b where a.コード=b.コード というSQLを実行すると、"MS ACCESS テーブルに対する問い合わせは サポートされていません"というエラーがでます。 構文を誤ってる気もするんですが、ほんとにサポートされていないんでしょうか? されていなかった場合、異なるMDB間の問い合わせを可能できるような 方法ってあるんでしょうか?
>>933 確かにそうですが、VBだけだとそれはそれで困ることが
多々あります。それでC++を身につけたいと思ったんです。
C++だといろんな作り方がありますが、VBだと最新では
基本的に VB.netで、.net framework だけですからね。
>>928 正直、MFC、COMは地獄。
MFCは巨大なスケルトンコード吐くし(クラスの差分コーディングと逆やん)、
COM呼び出しはC++と相性悪杉。
それらを組み合わせて出来上がったアプリは何か見た目汚い。
>あと、もう一つ質問なんですが、BCBのソースをVC++でコンパイルしたり
BCBは両ソースコンパイル可能。
>VC++ではMFC、BCBではVCL(?)のようなライブラリ郡を使わなかった場合
そういうことです。クラスライブラリが無いと移植問題は解決でしょう。
クラスライブラリを無視した開発は無意味だけど。
クラスがOSをラップするという逆の考えが、Delphi/BCB/Kylix。
>基本的に VB.netで、.net framework だけですからね。 これが問題なら、M$ワールドは止めといて、某にしときなよ。 某はクロス環境を目指してるし、M$の開発言語はコトゴトク消えてる。
>>937-938 RESありがとうございます。
>クラスライブラリを無視した開発は無意味だけど。
>クラスがOSをラップするという逆の考えが、Delphi/BCB/Kylix。
BCBについて調べているうちに Kylix について知ったのですが、
こんなのあるとは意外でした。絶対MSからは出なさそうですし。
>これが問題なら、M$ワールドは止めといて、某にしときなよ。
そうですね、.netを使わなきゃいけないのも問題ですし、あと、
VB使っている限りMSに依存した開発しかできないというのが辛いです。
940 :
デフォルトの名無しさん :03/11/29 14:41
VC++の場合、C++言語の次にDocumet/Viewという巨大な壁が 立ちはだかります。俺は結局この壁を越えれずに挫折し、BCB に乗り換えたが、最近BCBのポトペタRADが嫌いになってきた
Doc/ViewやMVCの壁を乗り越えられないような低脳C++厨はVB厨と同じ
>940 いつの時代の話してんの? ドキュメントビューを使うか使わないかは、選択できるじゃん。 わざわざドキュメントビューにする必要など無いアプリも多い。
943 :
デフォルトの名無しさん :03/11/29 15:11
>>942 社会に出るとプログラムというのは動けばいいってことはないんだよ
動いて当たり前。客の仕様で変数名のつけ方から個と細かく指示する
お客さんもいるわけで・・・
DocはSTLで作れよ。 MFCでDoc/Viewやるとクッションになる筈のDocのコードをVC++がイジルのでDoc/Viewのメリット台無し。 MFCは要らないし、M$もMFC捨てるそうだ。
STLなんかいらない。
>943 意味不明 客がわざわざ、ドキュメントビューにすれって注文するのか。 変数命名法とプログラムの構造とは関係ねえだろ。 それに、プログラムの構造の設計は発注元でコーディングだけ請け負うなら、それはそれで別次元の話だ。 それから、変数命名法まで子細に注文される受注に対して、簡単にBCBに乗り換えられるとは、これ如何に? 普通そういう請け負い、MSの開発環境で統一してるだろ。 訳わかんねえこと言うなよな。
947 :
デフォルトの名無しさん :03/11/29 15:33
>>943 お前頭悪そう〜だね
変数命名法とプログラムの構造とは関係があるなんて誰が言ったの?
変数名のつけ方ってのはただ例じゃん
開発に使うコンパイラを指定してくるのは至って普通だぞ!!!
数十行程度のサンプルコードを書いて満足している学生さん
は引っ込んでなよ
要するに、単に
>>940 =943は、ドキュメント/ビュー アーキテクチャがとても不評で現在ではオプションで外すことが可能
になっていることさえ知らなかったってことだろ。
MFCは1.0から2.0で別物くらいに変わったし、 VC++が勝手に制御するDoc/Viewはオプションで外せて(勝手に制御されないDoc/Viewは便利)、 画面コンポーネントは少なく、ActiveXが少しあるだけでWindowsでしか使えない。 で、ATL/WTLが後に出てきて、さらに、.NET、と。 誰がこんなもん使うか。
950 :
デフォルトの名無しさん :03/11/29 16:39
ほんと、2ちゃんってばかばっかだよな〜www
>950 自分をそんなに責めるなよ。
952 :
デフォルトの名無しさん :03/11/29 17:38
お前らの事言ってんだよ ばかかおめー
954 :
デフォルトの名無しさん :03/11/29 19:19
だ か ら、お前らの事言ってんだよ ばかかおめー
>>954 だから、そうやって自分を責めるなと言ってるわけで。
956 :
デフォルトの名無しさん :03/11/29 23:16
Builder 本体の話でなくてわるいが、TIniFile を使って .ini ファイルを読み書きするプログラムをコマンドラインで bcc32 使ってコンパイルするとリンクのところで「Error: 外部シン ボル 'System::__linkproc__ __fastcall LStrClr(void *)' が未解決 (C:\PROGRAMS\CBUILDER6\LIB\RELEASE\VCLE.LIB|dstring が参照)・・・」 と怒られて、どうすればいいのかわからん。教えてくれ。
>>956 #pragma link "rtl.lib"
#pragma link "vcl.lib"
むしろ bcc32 source.cpp vcl.lib rtl.lib
959 :
デフォルトの名無しさん :03/11/30 01:38
おお、#pragma linkなんていうのがあったのか。 初めて知った。
TServerSocketを使おうとするとこんな感じで大量にエラーが出てしまいます。 どうすればエラーが出ないようになるでしょうか? [C++ エラー] winsock.h(55): E2015 'u_int' と 'Idwinsock2::u_int' の区別が曖昧 [C++ エラー] winsock.h(63): E2015 'fd_set' と '_fastcall Idwinsock2::fd_set(int,TFDSet &)' の区別が曖昧 [C++ エラー] winsock.h(63): E2015 'fd_set' と '_fastcall Idwinsock2::fd_set(int,TFDSet &)' の区別が曖昧 [C++ エラー] winsock.h(170): E2015 'u_long' と 'Idwinsock2::u_long' の区別が曖昧 (以下省略)
C++Builderで分割コンパイルするにはどうすればいいんだ? 簡素化にして答えよ。
963 :
デフォルトの名無しさん :03/11/30 20:00
>>962 211.121.82.88
うぜ〜よ。氏になくなけれりゃ早めに回線切れよ
>>962 もしかしてそれIPアドレスですか?
漏れのもしらべてください。
965 :
デフォルトの名無しさん :03/11/30 22:14
966 :
デフォルトの名無しさん :03/11/30 22:22
d
967 :
デフォルトの名無しさん :03/11/30 23:05
分割コンパイルってBuilderは勝手にやってくれるの? ディレクティヴを駆使するとかじゃなくて?
>957 >958 ありがとう、うまくいった!
>>967 自分で作ったヘッダーにはインクルード・ガードが必要な時もある。
970 :
デフォルトの名無しさん :03/12/01 02:51
すいません、アイコン付きのボタンが作りたかったので、 ToolBarに新規ボタン作ってImageList指定すると簡単にできました。 しかし自分が考えていたのはフラットなボタンにアイコンを乗せることなので、 もっこりしたボタンでは始末に負えません。 色々スタイルとかのプロパティをいじってみたのですが、 どうやってももっこりが直りませんでした。 何かもっこりを直すよい方法はないものでしょうか。
971 :
デフォルトの名無しさん :03/12/01 03:16
staticなメンバ変数はいつ初期化すればいいのですか? コンストラクで初期化してるとインスタンス作成毎に初期化され 効率悪いような気がするのですが・・・
>>970 TToolBar->Flat = true;
とりあえずヘルプは見ようや。
>>971 その変数を宣言したところ。
>>971 漏れはユニット実装部先頭で初期化してる
ClassA::staticMember = 1;
みたいな感じで
974 :
デフォルトの名無しさん :03/12/01 03:35
たしかにint等はそれで良いけど std::mapだったらどうすればいい?
>>971 毎回初期化してるなら別にstaticである必要が無いような。
初期化でなんかしち面倒臭い処理をしなければならないなら そのためのstatic関数を用意するって手もある。 なぜstatic関数かというと、そのクラスのインスタンスが生成される前に呼び出せるから。
979 :
デフォルトの名無しさん :03/12/01 04:01
>>974 同じって
mapHoge["hogehoge"] = 1;
なんてやるとコンパイラに起こられるんですが・・・
>>979 だから藻前、それは初期化じゃないだろ。
981 :
デフォルトの名無しさん :03/12/01 04:24
/ `ー─ー-,,,__
i′ ─'' `‐-  ̄\
| | i
| | ゙i、 |
. | (\ | \ |
| \\ | Y \|
. | \\i | ヽ
|/二二 `、 (〇) / (〇|
ι, ', ‐‐==‐ ヽヽ /\ ノ
'、'/ ̄ ̄ \ ‐-‐''" `゙‐--‐'"
http://www.punyu.com/puny/
>>972 ありがとうございます。
スタイル関係はインスペクタで見えるプロパティが全てだと思ってました。
ヘルプ引くようにします。
988 :
デフォルトの名無しさん :03/12/01 11:24
>>921 いやそれあるが、どうやって目盛数を指定できますか?
>>987 Flatは__publishedだよ。インスペクタにある。
990 :
デフォルトの名無しさん :03/12/01 16:26
TStringGridでBeginUpdateとかってねえよな? おいおいこれどうしたら描画早くなんだ?
991 :
デフォルトの名無しさん :03/12/01 17:06
おや、さっさと次スレ立てろボケが!
993 :
デフォルトの名無しさん :03/12/01 17:36
あり
まき
ねん
996 :
デフォルトの名無しさん :03/12/01 19:17
記念カキコ v(^-^=)
>>998 Delphi6 か 7 の中国版はある。
あ、997 の間違い。
記念カキコ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。