1 :
デフォルトの名無しさん :
2006/02/01(水) 12:56:05
11 :
デフォルトの名無しさん :2006/02/02(木) 03:38:08
>>10 それってIDないと書き込めないじゃん。もっと他のところで作れば?
12 :
デフォルトの名無しさん :2006/02/02(木) 03:58:11
次回作は2007年末にはでますか?
14 :
10 :2006/02/02(木) 09:48:59
>>11 まぁ、設置が手軽だったのと、DelWikiの一件があったから。
本当は、SoureForge.jpにPukiWikiを設置するつもりだったんだけど。
そんなに厳しく管理するつもりはないから、捨てIDでもいいから気軽に使ってちょうだい。
15 :
デフォルトの名無しさん :2006/02/09(木) 09:22:32
16 :
デフォルトの名無しさん :2006/02/09(木) 09:42:18
ボーランドは俺を怒らせた…
ボーランドは俺も怒らせた・・
bcc32でbrewコンパイルできるらしいけど、 C++Builderでコンパイルする方法はあるんでつか?
19 :
デフォルトの名無しさん :2006/02/09(木) 12:15:06
売却先がGoogleなら未来は超明るい。
ググルの資金ならさらっと買えちゃいそう。
21 :
デフォルトの名無しさん :2006/02/09(木) 16:19:43
ばくだんいわは ようすをみている
Borlandは逃げ出した。 敵はいなくなった。 Microsoftは戦いに勝った。
しかしドトネト地方は荒野となった。
金かやせ
C++Builderはどうなるんだよ!
まあ迷走していたからなあ どうなるんだろう これから Delphiの方が大変か・・・
Delphiはまだどこかに拾ってもらえそうだけど、 C++Builderはこのまま立ち消えそうだ。
28 :
デフォルトの名無しさん :2006/02/09(木) 23:24:44
グーグル買ってやれ
29 :
グーグル :2006/02/09(木) 23:27:22
いらね。
そう言わずになんとかおねげーしますだ。
さてと、最後の思い出にBDSを買ったものかどうか?
バグだらけのまま放置される
33 :
デフォルトの名無しさん :2006/02/10(金) 07:37:55
http://www.itmedia.co.jp/news/articles/0602/09/news010.html Borlandが開発ツールを売却、Segue Software買収
アプリケーションライフサイクル管理(ALM)推進の一環として、米Segue Softwareを買収し、統合開発環境(IDE)関連事業の売却先探しに当たる。
Borland Softwareは2月8日、アプリケーションライフサイクル管理(ALM)推進の一環として、統合開発環境(IDE)に関連した事業の一部を売却する計画を発表した。
売却の対象にはBorland Developer Studio(Delphi、C++Builder、C#Builder)とJBuilderが含まれる。BorlandではBear, Stearns & Co.と契約して売却先探しに当たる。
同時に、米Segue Softwareを約1億ドルで買収する合意を交わしたと発表した。同社はアプリケーションライフサイクルを通じたソフト品質定義、測定、管理、向上のための製品を提供している。
いずれも、拡大しているALMの分野で主導的な地位の確保を目指す戦略に沿ったものだとBorlandは説明している。
34 :
デフォルトの名無しさん :2006/02/10(金) 09:17:23
C++Builderはかなりいいものだと思うのだが、いいものが生き残るとは限らない
もしC++BuilderやDelphiがなくなったら ネイティブアプリの開発はみんなVCかよ。 それでいいのか、みんな・・。
36 :
デフォルトの名無しさん :2006/02/10(金) 10:34:56
ポトペタC++って他にあるの?
WideStudio
>>37 冗談に噴出したが、マジそうかも。
FreePascalかWideStudioか。
40 :
デフォルトの名無しさん :2006/02/10(金) 15:39:24
VC++ってポトペタ可能になったの? たとえば画面分割とかの場合 VCLならTSplitterを分割したいコンポーネットの上に置くだけだけど MFCならCSplitterWndクラスを作成してごにょごにょと設定しないといけなかったけど VCLみたいに簡単に出来るようになったの?
ポトペタって言葉、流行ってるの? 気持ち悪いったらありゃしない…
42 :
デフォルトの名無しさん :2006/02/10(金) 17:04:18
ボットンベッタン
ポトペタってかなり昔から使われてるよ。
ぽたぽた焼きみたいだ
ポートリプリケータはポトリプ?
必ずしもポトペタである必要はないと思うけどな。 小物のUIを作るときに便利だけど。
UIのポトペタは意味ある。実行しなくても画面デザインがある程度わかるから。
棒がBCB投げても俺は使い続けるよ。 だって便利だもん。
BCB6の使用許諾はどうなるのだろう? ってかオンラインで取れなくなって放ってるんだが
>49 電話かけたら親切に教えてくれたよ
51 :
デフォルトの名無しさん :2006/02/11(土) 07:12:49
キージェネあるよヒヒヒ
ヒヒヒヒ
>>C++Builderユーザ 開発環境を失うの? m9(^Д^)プギャー ・・・俺は元Borland C++ユーザだったがな。 orz
ちょっと質問。 プログラム上は普通に #include <set> 等としてあるだけの時で Rogue Wave のSTLを使っているかどうかを判別するマクロってありますかね? #ifdef _USE_OLD_RW_STL は、BCB6限定だし、 出来ればBCC以外のコンパイラにも対応したいなと思って(売りに出されたし)。 さらっとヘッダを眺めて怪しそうだった _RWSTD_VER は、 STLPortの時でも何故か #define されてます。 何がしたいのかというと、 setやmapを使うとき、大抵のSTLはちゃんとメモリを プールして確保してくれるんですが、このサイズが1Kとか4Kとかで固定なんですね。 で、RWのSTLに限り、非標準ながらallocation_size()というのを使って 一括して確保する量を指定できるんです。 実際にsetなりで数十万個以上の要素を確保する時に 体感できるくらいの差が出たんですよ。
そういうわけで、コード自体の可搬性は出来るだけ保ちながら 可能ならallocation_size()を使えるようにと #ifdef XXXXX /*_RWSTD_VER*/ struct allocsizesaver { int org_alloc_size; template<typename T> allocsizesaver(T& container, size_t size) { org_alloc_size = container.allocation_size(); container.allocation_size(size); } template<typename T> void restore(T& container) { container.allocation_size(org_alloc_size); } }; #else struct allocsizesaver { template<typename T> allocsizesaver(T&, size_t) {} template<typename T> void restore(T&) {} }; #endif のようなものを作って、 まとめて要素を追加する前と後に入れたいんですが XXXXX の部分がどうもうまくいかなくて。
あ、よく考えたら #if defined(_RWSTD_VER) && !defined(_STLPORT_VERSION) で十分な気がしてきた。 失礼しました。
>>57 いや、バグは取られないまま放置されそうだから反対。
オープンソースになれば、有志がこぞって手直ししそうなんだけどな。
Googleが買収することには賛成するけど 無償で提供されることになるということには大反対。 俺と作品がかぶる香具師が増えてしまうのはイヤだ。 俺らBorlandユーザーがお金払って購入して今の環境になっているのに それが無償で提供されてしまうのがイヤだ。 でもGoogleになってしまったら確実に無償提供なんだろうな。orz ?エンタープライズ版になるのか?
>>57 それプラスオプソ化で、各OSにDelphiが標準装備となったら、大パニックだお。
61 :
60 :2006/02/13(月) 18:38:40
MACから組み込みまでDel/VCL入ったらドントネットォ〜が消滅しちゃうよね。 パニックを避けるために、ググル化報道を2段構えした と思いたい。
>60 >標準装備 夢のような未来だ、それは!
そうなったらM$が黙っちゃいまい。 無理矢理買い取って、活かすも殺すもM$次第・・・・となりそう。
何夢を見てるんだ。
65 :
62 :2006/02/13(月) 23:37:54
>各OSにDelphiが標準装備 私はむしろ.netを普及させるブレークスルーにもなりうると思いますね。
いや、Del/VCLが普及するかどうかが気になるだけでドトネトがブレークスルーしようが死滅しようが無問題。 ただ、組み込みからいうとO$の上でドトネトランタイムなんてやると機器コストかかるから、ドトネトチップ(話も出ないね)が出なきゃスルーだ罠。
GoogleがRAD開発ツールを買収で手に入れたいと考えても 不思議はないけど、それって、俗にWeb2.0と呼ばれている、 「既存のWeb技術のごちゃまぜ環境」を何とか整理するため じゃないかなぁ と、個人的には思う。 C++Builderが無償ダウンロードできたところで、MSはすでに VSで絶対的な地位を確保しているし、どだいWindowsプラットホーム では、MS様が絶対神。MSは、痛くも痒くもない。 だけど、Windowsの支配下にないインターネット向けのツールの 世界であれば、話は違ってくるし、例えばMSがFirefoxのための ツールを作るわけにはいかんだろう。
>VSで絶対的な地位を確保しているし、どだいWindowsプラットホーム ”Win+開発ツール”の組み合わせが弱くなるんじゃね? M$記事にもあったがWinの強みは既存のソースコード。 V$はドトネト・ネイティブ・ActiveXが混在してとても初心者には手が出せなくなってるお。
ポトペタでブラウザ上のGUIが設計できて、それがちゃんとサーバー側の コードと連携するようになっていて、ブラウザ側のスクリプトの非同期通信と サーバー側のプログラムもちゃんとつじつまがあっている・・・ なんてツールは、かりに発売されたとして、いったい何万円するんだろう。
>>59 道具が用意された所で作れない人は作れないんだから、その辺は
心配ないでしょう。 ただ、VB出だしの頃のように、素人設計のソフト
が氾濫することはあるだろうけども。
google選択となれば、デベロッパ市場に風穴が開きますね。
BCB4でデータベースを扱っています。 フィルターの設定方法がHP等を検索してみても見つからないので教えていただけないでしょうか。 Exec(Function("Filter") で、実行はできるみたいなのですが
4・・・・
Formをダイナミックに作成した場合、OnCloseのイベントの結びつけは どうすればいいのでしょうか? 単にvoid __fastcall hogeclose(TObject* Sender, TCloseAction& Action)という関数を作り HogeForm->OnClose = hogeclose;とやるとコンパイラに怒られますorz
>>73 hogecloseはただの関数じゃなくて、何か適当なクラスのメンバ関数じゃないと駄目だけども
hogecloseが定義される前に参照しちゃってんじゃないの?
質問する人は、エラーメッセージくらい書きなさい。 情報の小出しはやめなさい。 エラーになったらできない=阿呆。 エラーメッセージを見て、その原因を考えなさい。
this->LogMessage("サービスの開始", EVENTLOG_INFORMATION_TYPE,NULL,NULL);
サービスアプリケーションで this->LogMessage("サービスの開始", EVENTLOG_INFORMATION_TYPE,0,0); と書いてイベントビューアに表示させようとしたら
たびたびすいません
イベントビューアに
イベント ID (0) (ソース test 内) に関する説明が見つかりませんでした。
リモート コンピュータからメッセージを表示するために
必要なレジストリ情報またはメッセージ DLL ファイルが
ローカル コンピュータにない可能性があります。
次の情報はイベントの一部です: サービスの開始.
と書かれます
前にある変なメッセージを消したいのですが
いろいろ調べて
http://www.monyo.com/technical/products/evt_messages/ にたどり着いたのですが
このページのようにやっても解決しません
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application
の後ろに追加するのはサービス名でしょうか?
exeの名前でしょうか?
それらを試してもうまくいきません
>>77 回答する人は、エラーメッセージくらい推測しなさい。
逆質問の小出しはやめなさい。
1から10まで説明されないと問題を理解できない=阿呆。
質問文をよく見て、その行間を考えなさい。
82 :
81 :2006/02/23(木) 02:28:20
ネタで書いてみたんだが、実際問題ちゃんと問題を説明できないようなヤツだからこそ自力で解決できず 頼ってきてんのに、理路整然とした説明を始めから求めるのは酷なような気がする。
83 :
80 :2006/02/23(木) 02:32:53
ガキを甘やかすと付け上がる。 馬鹿でもエラーメッセージくらいは書き込めるだろ。
質問するときの最低限のマナーくらいは教育すべきですな
>>84 実際、書き込めてないじゃん。
>>85 じゃ、その教育はお前に任せた!よろしく!
何が実際だよあほだな。 書くべきだという事を知らないから書いてないだけだろ。
C++BuilderでOpenMPを使うことはできますか?
もしだめでも君がソース書き直せば大丈夫
つまらないネタですが、フォーム(のソース)にて BorderIcons = TBorderIcons(); と書くと、最大化・最小化・閉じるボタンが無くなります。
俺も同じようなネタ投下するわ 1 + 1 = 2
BorderIcons = TBorderIcons(); って、小学校で習うんだ・・・
バカ丸出し
94 :
デフォルトの名無しさん :2006/03/02(木) 13:19:08
すいません、ちょっと質問を。 BCB6と、boost1.33.1の正規表現ライブラリを利用したプログラムを組んでいます。 struct print_submatch { bool operator ()(const boost::match_results<std::string::const_iterator>& m) { cout << m.str(0) << endl; return true; } }; int main() { // "o"を含む単語にマッチする単語を正規表現で検索 boost::regex r( "([a-zA-Z]*).o.([a-zA-Z]*)" ); string str1 = "A quick brown fox jumps over the lazy dogs."; boost::regex_grep( print_submatch(), str1, r ); return 0; } とやると、結果が brown fox jumps over dogs となってしまいます。 jumps over ではなく、 over だけ帰ってきてほしいのですが・・・。 boostの[a-zA-Z]*って空白文字にもマッチするバグでもあるんでしょうか? (\b|[a-zA-Z]*).o.([a-zA-Z]*|\b)とやっても結果は改善されず。 誰か解決法をご存知でしたら、教えてください。
>>95 ドットは空白にもマッチするので、[o]にしたらなんかperlではできた。
>>95 補足。
([a-zA-Z]*)[o]([a-zA-Z]*)
LDAPにアクセスするコンポーネントはありませんか?
99 :
95 :2006/03/06(月) 22:53:04
>>96 うあ、そういうことか。
ありがとうございました。
すみません もしご存知の方いらっしゃったら教えてください 現在「TXMLDocument」コンポーネントを探しています。 以前はCodeCentralからダウンロードできたのですが、今はCodeCentralのページへアクセスできなくなってしまいました。 もしCodeCentral以外の場所で入手可能な場所があれば教えていただけないでしょうか。 よろしくお願いします。
質問いいですか? BDS2006のC++Builderのilink32がilink32.cfgを見てくれません。 ちゃんと見てくれる方法はないですか? 具体的には、 ilink32 test.obj cw32i.lib なんてやると、 Fatal: ファイル 'CW32I.LIB' を開けません とでます。 BCCでは、ちゃんとilink32.cfg見てくれるんだけどなあ。
BCCってのは、無料配布のBorland C++ Compilerのことです。
103 :
デフォルトの名無しさん :2006/03/08(水) 01:42:00
age忘れた
>>101 たしかにバグってる気がしますね。
ilink32.exeはカレントディレクトリ、ilink32.exeがロードされた
ディレクトリの順でilink32.cfgを探しに行くようなので
ilink32.cfgをコンパイルするカレントディレクトリにコピーしてみたら
どうでしょう?
ためしに適当なソースでやってみたら
Fatal: ファイル 'CW32I.LIB' を開けません
はでなくなりました。
適当なソースでやったので別のエラーが出ましたが、適当なソースだから
悪いのか、そもそもilink32.exeが悪いのかは、わかりません。
106 :
100 :2006/03/12(日) 23:25:35
返信遅れてすみません & レスありがとうございます やはり自宅のパソコンからだと何度アクセスしてもCodeCentralのページにつながりませんでした (教えていただいたアドレスも試してみましたがダメでした) 104さんが普通に接続できたということは、こちら側のネットワークの問題か何かだと思いますので 今度別の場所からCodeCentralにアクセスできるか試してみることにします
TShapeのコンポーネントのアイコンには三角形が見えるけど、 実際にTShapeで三角形や斜め線を描くにはどうすればいいのでしょうか。
アイコンに猫が描かれていれば猫が使えるのか。 君は阿呆か。
TextSS のWindowsXP(Professional)64bit化おながいします もしくは64bitにネイティブ対応したテキスト置換ソフトありますか? そういや64bitにネイティブ対応している2chブラウザてありましたっけ?
EExternal or これの派生例外クラスをcatchしたときに、 メンバのExceptionRecordがNULLになってしまうのですが、何か設定が悪いのでしょうか Delphiで同じようなコードを書いた場合は取得できます。
111 :
デフォルトの名無しさん :2006/03/19(日) 04:39:56
pathを設定したあと、どうすればコンパイルできるようになりますかWin9xです
113 :
デフォルトの名無しさん :2006/03/19(日) 22:16:50
>107-108 アイコンに○△□が描かれて入ればそれが描けると思うのが普通だろ。 アイコンとは本来そういうもんだに。
それがそうでないのが某クォリティー
エラーの意味がヘルプにないよ。ナンバーでぐぐってんの?みんな
ちなみにBDS2006では△は描かれていない。
118 :
115 :2006/03/19(日) 22:31:03
スレ違い
121 :
デフォルトの名無しさん :2006/03/21(火) 18:46:05
>>101 中間ファイルとかライブラリの出力パスをデフォルト以外
にしてない?
俺の場合は同じエラーが出たけどパスをデフォルトにした
ら直ったよ。
>>81 質問者しか知り得ない情報を憶測するなんて不可能。
その理屈で行くと、医者は「具合が悪いから治せ」だけで、治さなければならない事になる。
どんな名医でも詳しい症状を聞かなければならないのと同じで、
質問者がどんなエラーメッセージが出たのかを書かなければ、誰にも正確な症状は伝わらない。
しかも時間差攻撃
だが実はそれこそがコピペ
これが世に言う「米騒動」か
127 :
デフォルトの名無しさん :2006/03/23(木) 23:39:13
いまさらですが、BCB6を導入しました。
帳票作成はどうしてますか?有料でも良いツールがあればおしえてください
Access
>128 付属のQuickReportじゃダメなのかね?出来はいまいちだがDBコンポーネントに対応している。
Indy10は使えないのでしょうか?
Indyスレ池
>>131 へぇ〜。まだインストしてないけど、これいいね。 安定度も○なのかな?
他のIDEへ移行する人います?
はいはいクマクマ ↓次どうぞ
いや一応BDS2006買ってインストロールしたんですけど、 安全のためにBCB6は残してあります。このスレも巡回路。 手が覚えてる操作ってのもあるし、急にスイッチできないし、 ライブラリとかコンポーネントとか(以下長くなるので略
C++OWL は沢山やりましたが,Builder は数日前に習い始めた初心者です。 ある範囲内の点の色を一挙に表示するのに,OWL には TMemoryDC いうのが あって,例えば for (i=1; i<=100; i++) for (j=1; j<=100; j++) memDC.SetPixel(i, j, TColor(c1[i][j], c2[i][j], c3[i][j])); で,予め全ビットに色の値を与えてから, dc.BitBlt(X1, Y2, a, b, memDC, 0, 0, SRCCOPY); とするなどの方法がありましたが,C++Builder ではどのようにしたら良いか 分りません。 御存知の方教えて下されば,恩に着ます。
コンパイルしてないけどこんな感じか? HWND hWnd; TCanvas* DC = new TCanvas; TCanvas* memDC = new TCanvas; dc->Handle = GetDeviceContext(hWnd); memDC->Handle = ::CreateCompatibleDC(DC->Handle); for (i=1; i<=100; i++) for (j=1; j<=100; j++) memDC->Pixels[i][j] = TColor(c1[i][j], c2[i][j], c3[i][j]); TRect Source(0, 0, 100, 100); TRect Dest(X1, Y2, X1+100, Y2+100); DC->CopyRect(Dest, memDC, Source); delete memDC; delete DC; BitmapをSelectObjectしないとだめだっけ? > エロい人
141 :
140 :2006/04/03(月) 13:48:54
違った。 > memDC->Pixels[i][j] = TColor(c1[i][j], c2[i][j], c3[i][j]); memDC->Pixels[i][j] = (TColor)RGB(c1[i][j], c2[i][j], c3[i][j]); こうか。
143 :
139 :2006/04/03(月) 23:41:54
>>140 ,
>>141 に示唆して頂いた流儀では未だ成功していませんが,あれこれ
やっているうちに,次のようなことでも目的の叶えられることが分ったので
報告致します。
Graphics::TBitmap *bitmap;
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Image1->Left=20;
Image1->Top=20;
Image1->Width=255;
Image1->Height=100;
bitmap=new Graphics::TBitmap();
Image1->Canvas->Pixels[0][0]=clWhite; //註1
bitmap->Assign(Image1->Picture);
for (int i=0; i<=Image1->Width; i++)
for (int j=0; j<=Image1->Height; j++)
bitmap->Canvas->Pixels[i][j] = (TColor)RGB(255,i,i);
Image1->Picture->Assign(bitmap);
Canvas->Draw(Image1->Left,Image1->Top+Image1->Height+20,bitmap);//註2
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
delete bitmap;
}
//---------------------------------------------------------------------------
144 :
139 :2006/04/03(月) 23:44:01
(143の続き) 註1 MoveTo, LineTo で線を引くのでも,Ellipse で円を描くのでも,何でも良い のですが,Image に何かをやっておかないと実行時にエラーになります。 何故でしょう? 註2 画面が bitmap に保存されているから,当然ながら別の場所にも,別の機会に も再描画することができます。
TCanvas::ScanLine を調べるがいい。 あと、そうやって TBitmap 使うのなら、作った直後にサイズと PixelFormat を指定したほうが、精神衛生上良いと俺は思う。 new と delete が対応していない。
146 :
デフォルトの名無しさん :2006/04/04(火) 10:43:29
TBitmap って、DDBとDIBでどれほど違うか教えて欲しい。 プロパティあるおね。
プログラム終了時に変数を保存させるためOnClose()に処理を入れたんだが、タスクバーの「閉じる」をするとOnClose()は呼ばれなかった。 OnDestroy()だとメモリ内容は消えてた。どうしたら出来るか教えてくださらぬか?
148 :
デフォルトの名無しさん :2006/04/04(火) 12:24:31
OnCloseQuery
>>146 いまどき、DDB 使う必要なんてないから、考えずともよろしい
150 :
146 :2006/04/04(火) 15:03:21
>>149 あれ、TBitmapのデフォはDIBなんだと思ってたけど、自分勘違い?
151 :
デフォルトの名無しさん :2006/04/04(火) 15:23:53
うん。デフォルトはDIBだよ
デフォはDDBだろ
ダメダメブラザーズ
154 :
デフォルトの名無しさん :2006/04/04(火) 15:48:40
ビットマップファイルってのはDIBだっけか?
ピザでも食ってろDIB
>>150 DIB のままでいいんだから、そこは放置しておけばいいだろ
DDB にする必要なんて無い
157 :
146 :2006/04/04(火) 19:12:26
調べたら、デフォはbmDDBですた。 で、BitmapをTJpegImageでJpegしてますが、 bmDDBでたまに「Out of system resources」エラーが出て困ってましたが、 bmDIBだとエラーが出ずに画像は上だけとガクブルな結果になりますた。
158 :
139 :2006/04/04(火) 21:54:00
>>145 再度のアドバイス有難うございました。ScanLine を勉強して,次のようにやって
みました。御批評下さい。
Graphics::TBitmap *bitmap;
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
bitmap= new Graphics::TBitmap();
bitmap->Width=255;
bitmap->Height=100;
bitmap->PixelFormat=pf24bit;
Canvas->Draw(10,10,bitmap);
unsigned char* ptr;
short X, Y;
for(Y=0; Y<=bitmap->Height-1; Y++)
{
ptr = (unsigned char*)bitmap->ScanLine[Y];
for (X=0; X<=bitmap->Width-1; X++)
{
ptr[X*3+2]=255; //red
ptr[X*3+1]=X; //green
ptr[X*3]=X; //blue
}
}
Canvas->Draw(300,10,bitmap);
delete bitmap;
}
Del厨だけど、ブロック転送にScanLine 使うのはダメダメコードの見本。 TCanvas.CopyRect() で TCanvas 間の任意の矩形領域を任意の場所にコピーできるよ。
↑あー、アホレスだった。無視たのむ。
161 :
デフォルトの名無しさん :2006/04/04(火) 22:27:30
あれデフォDDBだっけ orz
分からんー。どなたか助けてもらえないか。 C++Builder4+Win2000でNMHTTPを使っています。 定期的にWebページを読み込んで解析するソフトを作っていて、実際には URL指定でGetしてBodyプロパティに格納されたHTMLを文字列として解析するというイメージ。 ボタンを押すとGetして解析、というように作ると問題ないんですが、Timerを使って例えば 15秒おきにGetしに行った場合、1回目はうまくいって、2回目のGetの時点で「Already Connected」 というエラーが出てしまいます。Getの後にとりあえずDisconnectなどを入れても変わらず。 気合でぐぐってると、どこかで「NMHTTPはHTTP1.0仕様のため、相手からDiconされない限り 接続を切らない」というように取れる記述を見かけました。これが関係あるのかなと思ったり。 他に必要な情報があれば調べて書きます。どなたかヒントいただけないでしょうか!?
毎回new/deleteで逃げたような気がする・・・遠い記憶
NMxxxは使い物にならないという話はよく聞くが。 バグバグだとか仕様が腐ってるとか。 俺は使ったことないから知らないけど。
素直にIndy使えばいいんでぃないの。
BCB4にIndyあった??
Indy9入れれば、いいんでぃ
なるほど、入れればいいんでぃすか
>>158 コーディングスタイルを別にすればそれでいんでぃないか?
強いて言えば、PixelFormat の指定を先にしたほうが、再変換の可能性を気にせずに済んで精神衛生上良いかもしらんが。
170 :
デフォルトの名無しさん :2006/04/05(水) 08:39:38
171 :
デフォルトの名無しさん :2006/04/05(水) 19:44:28
C++Builder6とVC++6.0で開発を行っております。 はじめはC++Builderのみで開発を行っていたのですが、唯一C++Builderを使える担当者 が、膨大かつドキュメントなしのプロジェクトを残して失踪しました。 で、私が仕方なく引き継いだのですが、C++Builderの経験がなく、デバッガも不安定で、 なおかつビルトに20分もかかるなど、とてもではありませんが開発できるような状態では ありませんでした。必死に、GUIに関係しない部分をVC++に移植し、DLLとして分割する 事はできました。 ただひとつ、VC++のデバッガ上でデバッグすると、DLL側の未処理例外を勝手にexe側 でキャッチしてしまい、デバッガでブレークがかからず不具合の特定が非常に面倒です。 これをなんとかしたいのですが、ソース上ではそれらしきものが見つかりませんでした。 これを回避する方法はないでしょうか? また、「そんなことはない」というような情報でもかまいませんのでご存知でしたら教えて ください。お願いします。
>>171 WinMainのあるプロジェクト名.cpp見たか?
173 :
171 :2006/04/05(水) 20:48:33
レスありがとうございます。見てみました。関係ないのかと思いましたが、意外と動きが変わりますね。 try { Application->Initialize(); Application->CreateForm(__classid(Hoge), &Hoge); ←これが30くらい並ぶ Application->Run(); } catch (Exception &exception) { Application->ShowException(&exception); } catch (...) { } return 0; try-catch自体を削ったら、例外が無限ループしてVCが応答しなくなりました。 つづく
Application->ShowException(&exception); の行を削ったら、起動直後に終了してしまいました。 ...難しいっす。引き続きお願いします。
>>171 手元にC++Builder6(以下BCB)が無いので適当だが
BCBの実行>デバッグとかそのへんのダイアログで
デバッグ時、キャッチする例外を選択できる。
VCL(BCB用ライブラリ)の例外のみBCBでキャッチすることにして
あとは全部スルーするようにしてみては。
あと、WinMain は元に戻した方がいいかと。
つづく
コンパイルが遅いのは ・ヘッダーのインクルードが統一されてない ・存在しないパスを検索してる とかじゃね? 最初のは #hdrstop の上のコードを全ソースで統一する 次のはインクルードパス設定で灰色の奴を削除 あとコンパイル速度を上げる魔法のwコンポーネントもある がんがれ
177 :
171 :2006/04/05(水) 21:59:00
>>175 レスありがとう!
がんばってみるよ!!
本当はVCからデバッグしたいんだけど...。例外の設定はオプションのC++にあったけど
教えてもらった設定は今だ発見できません。もう少し調査します。
コンパイルが遅いのは、単にでかいからだと思ってた。
なにしろ、クラスが300以上もあるし、ファイル数も半端じゃないorz。
でも、時間があったらレスを参考に調整してみます。
お騒がせしました。
ビルドが遅いのは、F7 押す時に CTRL 押してないとか?
いや、BCBのビルドが遅いのは基本。 でも差分ビルドはしてくれるお。
>C++Builder6とVC++6.0で開発を行っております。 自分も同じだけど、デバッガに関してはBCBの方が賢くて正確に動作するお。
182 :
171 :2006/04/06(木) 09:37:41
>>178 これ入れてみました。
激速ですね。1/5くらいになりました。
メイクも全然許容範囲に入りました(開始するまで異様に時間がかかってた)。
全般的にVC++よりは若干遅いものの全然使えるようになりました。
感謝です!
>>179 それは大丈夫でした。ショートカットキー使うほど慣れてなかったので。
183 :
180 :2006/04/06(木) 09:39:46
>>178 すご杉。
自分の環境でも、5倍のスピードは出てる。
体感速度は10倍くらい。。。
ビルドに20分って・・・毎回再構築しているっぽいな。 objのタイムスタンプを見れば確認できる訳だが。 ヘッダがおかしいんだろうな。
185 :
デフォルトの名無しさん :2006/04/06(木) 10:11:39
>>185 パッケ代のケチり具合
BDS2006 = Delphi2006 = BCB2006 = BCSB2006
BDS2006を起動すれば、全部のプロジェクトを扱えるが BCB2006で起動すれば、 Builderのプロジェクトしか扱えない。 ロードするモジュールが違う。 同じではない。
そうなら値段が気になるね。 BDSも格安だったから、それに合わせてBCB単体はさらに激安にしてくれるんかな。 それより、悪痴困るおね。 人数分パッケージ買うんだけど、ソフト専門じゃない人がインストール躊躇しちゃうだろうから、 買ったところで社内のVerうpし難いな。
別売りはない。 >それより、悪痴困るおね。 意味が分からん。
別売りというか飴はBDS2006じゃなくてDel、BCB、BSCBそれぞれ単独で売ってる。 中身は全部同じだけど。
191 :
171 :2006/04/06(木) 12:34:59
>>181 BCB生成exeからVC++生成dllを呼び出すような開発はされていますか?
>>184 すみません。ビルド=再構築の意味で使ってました。
メイクだとそれより全然早く終了しますが、リリースモードとデバッグモードの切り替え時に
毎回再構築がかかるので難儀しておりました。
192 :
デフォルトの名無しさん :2006/04/06(木) 12:48:18
>BCB生成exeからVC++生成dllを呼び出すような開発はされていますか? してないです。 なぜかと言うと、DLLやActiveXは不安定だし普通にクラス派生出来ないし、EXE単体マンセーです。 >リリースモードとデバッグモードの切り替え時に 自分の場合、リリースもデバッグコンパイル。 別に何も困る事ないお。
>>192 デバッグだと最適化無効だから、実行速度が相当違う場合があるだろ。
ってか、デバッグのままは無茶。
>>193 C++だから実行速度全然変わらないよ。
一回やってみ?
それがどうしても嫌なら、出荷時だけEXEをUPXMaskするとサイズは同じ。
すっげー頭悪そうw
>>195 いや、本当に問題無いってば。
自分の場合、EXEが5メガになってるけどそれよりアプリが使うメモリのんが巨大。
インストーラにinno setup使ってるからインストールも数秒。
BCBにデバッグコンパイル、これに魔法のコンポーネントで最強。
C++からVCLの派生ライブラリまで使いまくりの、さらに派生しまくりで一瞬で仕事が終る。
197 :
196 :2006/04/06(木) 13:19:12
だって、ActiveXのオーバーヘッドが無いんだから、単体Exe最強。
頭悪杉花粉症
> C++だから実行速度全然変わらないよ。 なんでだよw C++ならインライン展開あるんだから、"C++だからこそ"速くなる可能性があるだろ。 うちのアプリ結構変わるぞ。
デバッグビルドだとソースファイル名とか全部バイナリに入っちゃうから シャイなぼくちんはいや。
>うちのアプリ結構変わるぞ。 気持ちの問題。気のせい。 一回デバッグコンパイルを渡してみ。
BuilderってVC++と違ってデバッグ情報は別ファイルだろ。 バイナリにデバッグ情報は入らないとちゃうのか? まあでも、実行速度は相当遅くなるだろね。
#ifdef DEBUG のチェックコードいれたりしないんだなぁ・・・
>>201 気のせいなわけないっての。計るんだから。
お前がよっぽど速度を必要としない処理しか書いてないだけだろ。
205 :
デフォルトの名無しさん :2006/04/06(木) 14:56:43
>気のせいなわけないっての。計るんだから。 じゃ、計ったのは何の処理化書いてみ?
206 :
デフォルトの名無しさん :2006/04/06(木) 14:57:45
>まあでも、実行速度は相当遅くなるだろね。 メモリに影響有ってもスピードは変わらないお。 >#ifdef DEBUG のチェックコードいれたりしないんだなぁ・・・ 今の流行はifdefを使わない。
>>202 ソースファイル名とか、assert使ってればその部分のコードとかいろいろ入るよ
>>205 3Dオブジェクトのピック
>>206 いや、だからさ、インライン展開とか最適化とか理解できないわけ?
>>188 > それより、悪痴困るおね。
アクティベーションのことを言っているのだと思うが、
匿名掲示板とはいえ、違法行為を示唆する発言はまずいんじゃないの?
211 :
デフォルトの名無しさん :2006/04/06(木) 15:13:39
>いや、だからさ、インライン展開とか最適化とか理解できないわけ? インライン使ってまつ。 おまいわ最適化理解出来て無い、というだけに言い回し嫌らしいでつね。
手持ちのハッシュしながら検索するプログラムで実験した。 デバッグ最適化なし 503秒 リリースできるだけ速く(-O2) 337秒 当たり前の結果だな。
>>211 ストレートだと思うがw
もっとストレートに言えばお前頭悪すぎ。変わらないわけがない。
デバッグ・リリースとは関係ないけど、 実行時型情報を使うクラスだとクラス名も実行ファイルに入っちゃうから、 UNKOとか名づけるのはオススメできない。
>自分の場合、リリースもデバッグコンパイル。 >別に何も困る事ないお。 このお馬&鹿さんっぷりは間違いなくド素人なんだから、 いくら言っても理解できないんじゃないかなぁ・・・
216 :
デフォルトの名無しさん :2006/04/06(木) 15:25:26
>>213 >ストレートだと思うがw
>もっとストレートに言えばお前頭悪すぎ。変わらないわけがない。
理由を書かずに、
>インライン展開とか最適化とか理解できないわけ?
と2つを並べて理由になってるフリをするオマイ汚杉。
説明できない無能。
>>215 >このお馬&鹿さんっぷりは間違いなくド素人なんだから、
>いくら言っても理解できないんじゃないかなぁ・・・
説明全く無しで、
>いくら言っても理解できないんじゃないかなぁ・・・
というやつが生きてて意味あるの?
もはや屁理屈しか言わない子供だな
>3Dオブジェクトのピック 先ずはだ。 これでどれだけ早くなったの? 単体時間とユーザー側時間と両方書け。 書けなきゃ、この例却下。 と言いながら、自分のGeometryライブラリもinlineの塊。
つまり、最適化の意味が分からんということか?
220 :
デフォルトの名無しさん :2006/04/06(木) 15:30:27
217=理屈無し
217がこのスレに存在して意味あるの?
>>219 >つまり、最適化の意味が分からんということか?
最適化の意味ある無いの論争なのが分かってるの?
分かって無いならこのスレ出てけ。
当り散らすのはやめろ
当り散らしてないお。 結局、こう。 ・BCBでポトペタ作成にデバッグコンパイル、これに魔法のコンポーネントで最強。 ・C++からVCLの派生ライブラリまで使いまくりの、さらに派生しまくりで一瞬で仕事が終る。 Exeが大きくなろうが誤差範囲。 C++はJavaと違ってコードセグメントがnewされるわけでなし。
インライン展開しておきながら、なぜあえてデバッグコンパイルなのか理解できない
そんなにベンチマークが好きなら、VC++やVC丼を使わずなぜあえてBCBなのか理解できない
予想通りそっち持っていったか。 デバッグビルドとリリースビルドで「C++だから実行速度全然変わらないよ。 」 なんてアホ丸出しレスしたから、突っ込んでただけだ。VCのような速度が欲しいわけじゃない。
>>225 苦しい言い訳乙。
1行目と3行目と読んで可哀相で苦しくなったお。
>>226 何に対するいい訳だよ。
>>224 のほうが間違いを突っ込まれて話をそらしてるんじゃねーか。
222の内容をこれを強化すれば勝ちだな。(勝利宣言) ・BCBでポトペタ作成にデバッグコンパイル、これに魔法のコンポーネントで最強。 ・C++からVCLの派生ライブラリまで使いまくりの、さらに派生しまくりで一瞬で仕事が終る。 Exeが大きくなろうが誤差範囲。 C++はJavaと違ってコードセグメントがnewされるわけでなし。 V$のベンチマークに強いだけの部分最適化よりも重要なことがある。
はいはい。 勝ちでいいよ。
>>227 なんでだよ。
「速度が変わらない」という間違いを「そうじゃねー」と正してるだけなのに、
>>222 の何を肯定してるんだよ。
>>231 >「速度が変わらない」という間違いを「そうじゃねー」と正してるだけなのに
正すってんなら説明が要る。
先ずは、
>>218 に答えなさい。
>>232 単体時間とユーザー側時間てなんだよ。初めて聞いたよ。
>>233 自分が今作った言葉さ。
短い時間で伝えるために。
さ、回答しる!
くだすれC++Builderだれかたてて
>>234 伝わってねーよ。2つの時間が何をさすかわかんねっての。
なんで
>>234 が偉そうなんだ?
間違い垂れ流しの上、謙虚な姿勢のかけらもない奴にこれ以上教えるのは無意味なじゃいの?
はいはい、次の話題。
240 :
デフォルトの名無しさん :2006/04/06(木) 16:22:19
10まだか?
241 :
デフォルトの名無しさん :2006/04/06(木) 16:23:18
(;ω;)ウッ…
流量的にくだすれなしでここ一本でも十分な気もしないでもない
244 :
デフォルトの名無しさん :2006/04/06(木) 16:44:58
ここじゃ答えてくれねーからだろぼけが
BCB10を使ってます。 typedef struct { double X; //X座標 double Y; //Y座標 } SCoord ; //座標構造体 vector<SCoord*> CoordsList; //座標構造体へのポインタ列を格納するベクタ srand((unsigned)time( NULL )); //乱数の初期化 for (unsigned int i=0; i<10; i++){ SCoord* pTempCoord = new SCoord; pTempCoord->X = (double)rand(); //乱数で座標を生成、代入 pTempCoord->Y = (double)rand(); CoordsList.push_back(pTempCoord); } //座標構造体のインスタンスを10個作ってポインタを格納 : 中略 : //使用済み座標構造体のインスタンスをメモリから削除するつもり for (unsigned int i = 0; i < CoordsList.size(); i++){ delete (SCoord*)CoordsList[i]; } ここまで実行させた後、ソースファイルControls.pasが見つかりません。という ダイアログが開き、パスを入力するようになりました。デバッガ上でないと プログラムが目的としている全ての処理をちゃんと終わった後で異常終了します。 最後の構造体の削除のforループをコメントアウトすると、メモリリークを起こす と思いますが、正常に終了します。 Controls.pasって多分C++BuilderのGUI関連のライブラリのソースで、普通に インストールすれば、ユーザーが知らなくても処理に必要なら処理系は知ってる はずと思うのですが...だいいち、データ領域はSTLで作っていますから VCLに依存していない部分です。 どうしたら良いでしょう?
246 :
デフォルトの名無しさん :2006/04/06(木) 17:27:49
むしろBCB10をください
>>245 そんだけのコードだと別になんともないけどね。
中略の部分とか、他の部分に問題があるのでは?CodeGuardは使ってみた?
>>245 Controls.pasのパスを指定すると後は動くの?
>>246 BCB6持ってればニーキュッパでしょ、ちょっと倹約すればアップデート
できるでしょう。
>>247 CodeGuard?
すみません、マニュアルはヘルプだけなのでしょうか?IDEの使い方は
どこで調べたら良いでしょう?(^o^);アセ
251 :
デフォルトの名無しさん :2006/04/06(木) 17:44:13
>>250 メニューの「プロジェクト」→「オプション」→「C++コンパイラ」→
「CodeGuardコンパイルサポート」→「すべてのCodeguardオプションを有効にする」にチェックを入れてリビルド。
実行時間は遅くなるけど、解放忘れとか二重解放とかチェックしてくれる。
>>248 実は、Controls.pasがどこにあるかわからないのですWindowsのファイルや
フォルダの検索で探してみたのですが...
>>251 Developper Studioに含まれています。インストール後アップデートパッチを
当てると、正式版になります。
BCB10にまだ重大なバグがあるような気がしてきた...
258 :
デフォルトの名無しさん :2006/04/06(木) 18:39:36
>>258 Delphi6 > Delphi7 > Delphi8 > Delphi2005(9) > BDS2006(10)
Builderの話をしているのに・・・
BCBもバージョン情報で10なんだから10なんだろ
262 :
デフォルトの名無しさん :2006/04/06(木) 20:59:44
作成したソフトの多重実行(?)の防ぎ方がさっぱり分かりません。 どなたか、多重実行の禁止方法を教えてください。 よろしくお願いします。 ちなみにBCB5を使用しております。
Canvas->Brush->Style = bsClear; 自作コンポーネントのPaintで、上の指定をして描画してるのですが有効になりません。 それ以外は問題なく動いているのですが・・・。 何か制限のようなものがあるのでしょうか?
>>264 有効になりませんじゃよくわからんぜ。
そのあと何か描画したんだろ?どういう描画して期待通りにならなかったのか書いてくれないと。
SetBkMode()使わないと利かないことがあるね。 TFont、TBrush、TPenはリソースの管理にそれぞれ癖があるから注意が必要。
268 :
262 :2006/04/10(月) 19:31:35
>>263 理解しました。
ありがとうございました。
269 :
デフォルトの名無しさん :2006/04/12(水) 11:29:20
>>269 再構築のたびに.hppが元に戻るって事は、プロジェクトに.pas追加してるの?
一度.pasソースから.objを作ったら、それをリンク(#pragma link "〜.obj")してやれば、プロジェクトには.pasは要らないよ。
そうすれば.hppを書き換えても元に戻らない。
あとはそもそも名前が衝突してる原因であるWindows.hppの
typedef tagBITMAP TBitmap;
をコメントアウトするって手もある。tagBITMAPにTBitmapなんて別名はいらんでしょって事で俺はそうしてる。
271 :
デフォルトの名無しさん :2006/04/12(水) 14:00:03
10ってどお?
他(外部)のWindowsプログラムのツールバーの「ファイル」項目や「表示」項目を クリックしたり、リストビュー項目の中を選択したりする制御プログラムを作ろうとしております。 ウィンドウハンドルを取得してから、SendMessageを使用して、起動や最小化等できることは分かりました。 //最小化 SendMessage(hWnd,WM_SYSCOMMAND,SC_MINIMIZE,0); //最大化 SendMessage(hWnd,WM_SYSCOMMAND,SC_MAXIMIZE,0); //元の大きさに戻す SendMessage(hWnd,WM_SYSCOMMAND,SC_RESTORE,0); //ウインドウの移動 MoveWindow(hWnd,X,Y,Width,Height,true); リストビューの中を選択したり、クリックする方法分かりますでしょうか。 ググッたところ、情報見つからなかったので、質問させて頂きました
273 :
272 :2006/04/13(木) 00:20:50
因みに、制御しようとしているプログラムは「Yahooメッセンジャー」でして、 メッセンジャーのメッセージアーカイブ(メッセログ)を開き、保存したいメッセージを選択し、 「メッセージ」→「保存」を選択するルーチンで毎日のメッセージを保存していこうとしています。 そのままメッセージアーカイブを使えば普通に見れますが、検索や特殊なことができず不便なので 一度テキストファイルにログを落とし、それを違うプログラムで読み直そうと考えています。 元々のメッセンジャーが残しているログは厄介なことにバイナリでして、 バイナリを解析しきれず(解析方法もぐぐりましたが)、断念の為 メッセンジャのメッセージアーカイブ経由でテキストに毎日自動で落としていこうと思いました。
274 :
272 :2006/04/13(木) 00:54:45
メニューを押すのは大雑把にだけどGetMenu, GetSubMenu, GetMenuItemIDで目的のメニュー項目のIDを探して、
メッセージアーカイブウィンドウにWM_COMMANDを送る。
他のプロセスのリストビューの項目の選択は↓の下のほう
http://siren.poke1.jp/cbuilder/033.html まあ割と面倒なんで、keybd_eventを並べてキー操作を自動化するとか、
UWSCみたいな自動化ソフト使ったほうが簡単で早いと思うけどね。
276 :
272 :2006/04/13(木) 08:07:36
おはようございます!
ありがとうございます!!
>>275 さん
早速確認してみます、
すぐ取り掛かりたいですが。。。仕事なので帰ったらすぐ試したいです。
(帰るのはPM12頃なので、また何かありましたらよろしくお願いします。)
277 :
147 :2006/04/13(木) 10:36:48
>>148 すまん。年寄りなので、わすれておったわい。
ありがとう。
278 :
245 :2006/04/13(木) 11:40:31
BCB10のバグじゃなく、私のミスでした。 for (unsigned int i = 0; i < CoordsList.size(); i++){ delete (SCoord*)CoordsList[i]; } 中略の中で既に削除した構造体のインスタンスを二重にdeleteしていました。 ハズカシイ...
>>271 HTMLヘルプとソースとデザイナがタブで切り替えて使えるなど、操作性が
格段に向上している。エディタの機能がしょぼいのは相変わらず。
外部エディタで修正してセーブすると、ソースに変更が加えられたことを
認識して読み直すか聞いてくる点は6と同じ。私はコーディングには秀丸を
使ってます。
BCB10が起動時画面いっぱいになって起動したり、デバッガモードになる際に 画面いっぱいになるの止めさせたいけど方法がわかる方教えてくださいマセマセ...
ええっ!? Indy 10ってそんなことになってるの??????
282 :
デフォルトの名無しさん :2006/04/13(木) 13:41:12
BCB10ってどお?
283 :
269 :2006/04/13(木) 14:19:55
>>270 レス遅くなりましたが詳しく教えていただいてありがとうございました。
前者の方法で望みの結果が得られました。
285 :
デフォルトの名無しさん :2006/04/13(木) 18:01:39
>>284 おっとこれは失礼。
>>279 感謝。
>外部エディタで修正してセーブすると、ソースに変更が加えられたことを
>認識して読み直すか聞いてくる点は6と同じ。
これって1からありません?
5から実行ファイルのサイズが3の1.5倍くらいに膨れ上がってますが(同じソースをコンパイルして)
10では更に肥大化してますか?
あと、TComboBoxでChangingイベントは追加されてますか?
気になるんなら某のサイトに体験版あるから、使うといいんでないか。日本語版もあるし。 ちなみにTComboBoxにChangingイベントはなかった。
BCB5でListViewをvsReportにして表示 各Columnの幅を内容に合わせて最適な幅に調整しようと TListColumnのWidthにColumnTextWidthを入れてみたのですが・・・ どうも正しいサイズにならないです(狭くなってしまう) せめて自動調整された後の値が読み出しできればマージン分を付加して 再設定出来るのですが読み出ししてもColumnTextWidthの−1しか帰ってきませんでした これはこんなものなんでしょうか?
BCB6でやったけど特に狭くはなってないようだけどね。 自動調整時のカラムの幅知りたいなら↓ ListView1->Perform(LVM_GETCOLUMNWIDTH, カラムのインデックス, 0);
>>288 ありがとうございます、一歩前進しました
ListView_GetColumnWidthも試してたんですがなんか全部同じ値が帰ってくる・・・・はて?
サンプルのコードで思った値に近い数値が取れましたのでこちらの方を使用して進めてみます
>>285 私が実際に使ったのは2から、秀丸と併用を始めたのは3から。
実行ファイルのサイズは6と同等。裏にいるコンパイラは多分BC5.5.
ライブラリにも違いは殆ど感じられない。
ドトネトは使う予定ないから、Winネイティブだけ。2005は使った経験なし。
細切れのウィンドウが画面に散らばる6の雰囲気から1個にドックした大きな
一つの区割りウィンドウになった。HTMLヘルプのリンクをクリックすると
結局別のヘルプブラウザが起動する。このためと、秀丸を併用するため、
2006が全画面に広がっていると、操作しにくいので、右と下を少し縮めて
使うが、デバッグモードに入ると自動的に全画面サイズに戻ってしまう。
ユーザーが設定したレイアウトを保存して、次回から常にその場所と大きさで
起動したいが、方法がわからない。
撒き餌か
>>290 が何も調べようとしていないことはよくわかった。
294 :
デフォルトの名無しさん :2006/04/14(金) 17:58:25
ちょっとよくわからない現象に悩んでいます BCB5でTListViewをvsReportに設定 CustomDrawSubItemで決められた場所のみ色を付ける処理をしているのですが何故か白にだけ戻りません 色付けする場所は縦方向なのでColumnのTagに値を入れて判定しています(2の時色つけ) TCanvas *pCanvas=((TListView *)Sender)->Canvas; if (((TListView *)Sender)->Column[SubItem]->Tag == 2){ pCanvas->Brush->Color = TColor(RGB(150,150,150)); }else{ pCanvas->Brush->Color = clWhite; } 一度色を付けた行から後は全部その色になってしまいます clWhiteの所をclWindowにしてもTColor(RGB(255,255,255))にしても戻りません ですがTColor(RGB(254,255,255))などとほかの色を付ければちゃんとその色になります そもそも何か根本的にやり方を間違ってるのでしょうか?
297 :
デフォルトの名無しさん :2006/04/14(金) 19:36:00
Builder 10.0(BDS2006)は Borland C++ 5.81 for Win32 Copyright (c) 1993, 2005 Borland
いれぐいだなおい
300 :
デフォルトの名無しさん :2006/04/15(土) 09:55:56
5.81 はすごい高速化されているよ。
ここはフリーウェア紹介所かい? 貧乏人の反応はよく分からん
まぁ許してやれ 何かとすぐ限界にぶち当たる閉塞的な人生送って 苛々してるんでしょ
うんむ。 まあでもIDE Compiler Speed Improvementとといい、これといい BCBにデフォで実装されるぐらい某にも努力して欲しい気も汁
正直、コンパイル速度上げるならHDDを高速化した方がよい。
今時のHDDだと、容量と外部転送速度ばっか上がって、内部転送速度は頭打ち気味だから、 新しいの買っても速度アップは望めないでしょ。 てかRAMディスク上でコンパイルしてもたいして速度変わんないよね。 ディスクアクセスの代わりにメモリ帯域食うのかもしれないけど。 今時のだともうHDDの速度は十分で、あとはCPUとコンパイラに依ると思う。
でもシークの速いHDDはやっぱり違うよ。 ランダムアクセス主体の場合は、転送時間より待ち時間のほうがずっと長いから。 使ったこと無いとわからないかもしれないけど。 まあ、コンパイルへの影響は少ないかもね。
> でもシークの速いHDDはやっぱり違うよ。 > コンパイルへの影響は少ないかもね。 どっちやねん
いや、 一般的なPCの用途においては HDDの内部転送速度の影響よりもシーク速度や回転速度の影響のほうが大きい で、 コンパイルという用途においては 影響は少ない可能性もある というだけ。 (OSにキャッシュされる前の)初回のヘッダ読み込みなんかには影響大だけど 作業ファイルの書き出しは、OSの書き込みキャッシュが効くから HDD速度の影響は少ないかもしれないという話。
312 :
272 :2006/04/17(月) 03:23:17
275さん
ご無沙汰しております、先日は、GetMenuやリストビューの選択方法教えていただきありがとうございました。
現在、おかげさまで、メッセージアーカイブの起動、アーカイブの保存のところまで完了しております (^^)
この前は、Builderを使ってどうにか作る方法のことばかり考えており、
下の方のレスを見落としておりました^^; 今日もう一度読み替えして気が付きましたが、
>まあ割と面倒なんで、keybd_eventを並べてキー操作を自動化するとか、
>UWSCみたいな自動化ソフト使ったほうが簡単で早いと思うけどね。
確かに、やってみると意外と大変でした^^; 現在2つの問題点で躓いている状態です。。。
1.リストビューを選択する方法でURLをこちらの教えていただきました
http://siren.poke1.jp/cbuilder/033.html リストビューにはどのログを保存するか選択できるようにいくつか日付で並んでいるのですが、
どの部分の関数で選択しているのかが、良く分からずとまっております。。。
ただ、こちらはもう少し自分で色々試してみてたいと思います(この辺怪しいですし:char *Text=(char*)&Item[1];)
問題は、
アーカイブ保存時の今日の日付のログだけを保存したいので、リストビューに記述してある、
日付を取得して処理を行いたいのですが、その方法を探しております。
実際のメニュー状態を参考までに載せますと:
http://www.geocities.jp/kuraisisuhuddo/image03.bmp で、4月16日のログは今回2つあるので、異なる名前にして保存する為、2回保存します。
日によって、ログの数は変わっているので、その日のログだけを取得する為に日付をチェックします。
最後の悩みとしまして、保存ダイヤログ表示まではできましたが、保存するときのファイル名の指定と、
保存ボタンのクリックです。
もし、よろしければアドバイス頂けると幸いです。
ちょっと試してみたら、他のいろんなアプリのリストビューの項目は読めるんだけど、 メッセージアーカイブのは読めなかった。自前で描画してんのかな。
314 :
デフォルトの名無しさん :2006/04/17(月) 23:50:23
Borland日本支社の終了に伴い、BCB6のC++BuilderDirectの表示が おかしくなってしまったのですが、皆さんはどうしてらっしゃいますか?
煽りにマジレスすると、元々Offで運用しているんで見てない。 ていうか、実際にああいうの使っている奴いるの?
316 :
272 :2006/04/17(月) 23:54:24
>>313 さん
レスありがとうございます、特殊ですよね。。。
私はアーカイブを経由してログを出力させることが目的なのですが(アーカイブ経由でないとバイナリなのでログの取得が困難な為)
なかなか難しいですね。。。
出力後は、C++でもPHPでWEBアプリに出力することもできると思っていましたが、
厳しいかな。。。
317 :
デフォルトの名無しさん :2006/04/19(水) 16:19:13
318 :
デフォルトの名無しさん :2006/04/19(水) 17:04:13
320 :
272 :2006/04/19(水) 23:59:30
312書き込み、間違ってましたね、訂正します。 誤:ダイヤログ 正:ダイアログ しかしながら、いまだに解決しないので、UWSCで、定期的に複数保存して、 保存したログはテキストなので、それをプログラムで読み込んで同じログがあれば省いて 表示や検索するような仕組みにしようかと考えています。
zlibって複数ファイルをまとめてひとつに圧縮するって出来るんでしょうか? もし出来るのでしたらどこかにうまい具合のサンプルソースなど落ちてないでしょうか?<(__)>
gzip形式にすりゃ良いじゃん
嫌です
324 :
321 :2006/04/25(火) 14:59:59
アーカイブと圧縮は別なんで、出来ないでしょ。
tarにすりゃいいじゃん
圧縮はともかく自前のアーカイブなら簡単に作れるやん。 ちなみにゲームとかで扱う場合は圧縮したデータをアーカイブ化するのが普通。 (アーカイブ全体を展開せずにファイル単位で展開できるから)
328 :
デフォルトの名無しさん :2006/04/27(木) 02:23:19
仕事でCGIを作成しているのですが非常に困ってます。 BCB6.0で作ったCGI実行形式のプログラムがWindows2003ServerのIISで動きません。 どうもntdll.dllで外部例外が発生しているようです。 WindowsXPのIISでは動くし、何もしないプログラムでも発生するので、 builderかIISの問題ではないかと疑っているのですが… 何か情報を持っている人はいませんか?
329 :
デフォルトの名無しさん :2006/04/27(木) 08:09:40
CGIの中でBDEとか使ってますか? >何もしないプログラムでも発生 であれば、ロギング処理などを入れるとかして、問題の発生場所が特定できませんか? ひょっとしてmain関数さえも呼ばれないのですか?
CGI実行ユーザーの権限が無いんだと思うお。
331 :
328 :2006/04/27(木) 21:00:32
>>329 BDEは使ってないです。
>>330 権限はあるお。
いろいろためしてみたのですが、
BCBのウィザードを使用せず、入出力を自分で書くと例外は発生しませんでした。
どうやらBCB6.0のTWebModuleが怪しいです(BCB3.0だと大丈夫だった)。
複数のWindows2003Serverで再現したので普遍的な問題だと思います。
プログラム大幅に書き直しですorz
332 :
デフォルトの名無しさん :2006/04/27(木) 22:18:05
TextRectが多数回呼び出しでちらつくんですが、もしかしてフラッシュアウトしてかれ文字列書いてるんですか?
いったんBrushで塗り潰すんでないか
334 :
デフォルトの名無しさん :2006/04/28(金) 03:23:29
じゃあTextOutの方が高速ですかね
Borland C++ 6 Personal (Service Pack #4) で遊んでいますが,オブジェクト インスペクターで Button のフォント色が変更できません。プログラムの TForm1::TForm1(TComponent* Owner) : TForm(Owner) の中に Button2->Font->Color=clRed; などと書いても駄目のようです。(因みに Label や GroupBox 等の文字色の変更 はできます。)御存知の方,御教授下されば幸甚です。
>>336 失礼しました。ソフトウェア名は Borland C++ Builder 6 です。
>>336 OwnerDrawするしかないっぽい。
339 :
デフォルトの名無しさん :2006/04/30(日) 21:35:28
GetWindowLong
>>336 です。別の初歩的な質問です。
自作のアプリケーションにデフォルトとは異ったアイコンを付けようと思って,
試しに [プロジェクト|オプション|アプリケーション] に CBuilder6 の中
から適当に採ってきたアイコンを配して再構築してみたのですが,デフォルト
のアイコンのままで変ってくれません。何か他の設定が必要でしょうか?
簡単なことと思いますが,お教え下されば幸です。
んなはずはない。
再構築してみろ。
>>343 ,
>>344 有難うございました。
何故だか今度は上手くゆきました。前回は,アイコンファイルを同じフォルダー
に置かなかったためでしょうか?何れにせよ気が晴れました。
すれ立てるまでもない質問は(ry)で質問したけど、スレ違いっぽいからここで・・・ C++BuilderXをインストールしたのはいいが、もうライセンスキーは取得できないの?(配布されてないっぽい?)
347 :
346 :2006/05/02(火) 22:54:18
348 :
勉強中 :2006/05/04(木) 09:40:46
Borland関連のスレッドで、BDS2006 について質問できそうなのがここだったので 場違いな感じですが、質問させてください。 VCLフォームでTEditを2つと、TButtonを貼り付けて、TButtonに以下のコードを記入しました。 //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { char *infile, buf[256]; AnsiString inStr; #ifndef XXX infile = Edit1->Text.c_str(); inStr = infile; Edit2->Text = inStr; #else Edit2->Text = Edit1->Text.c_str(); #endif } すると、Edit1に入力した文字列の文字数が、偶数の場合と、奇数の場合で Edit2に表示される文字列が異なるのです。 具体的には、 inStr = infile の行で、infile の最後の文字がコピーされたり されなかったりします。コピーされなかったときには、infile の内容も変更されています。 (最後の文字が削除されてる) 何か大きな勘違いをしているでしょうか?
349 :
勉強中 :2006/05/04(木) 09:41:20
ちなみに、コンソール版(以下にソースを示します)では、そのような現象は起きませんでした。 //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include <stdio.h> #include <stdlib.h> //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char* argv[]) { char *infile, buf[256]; AnsiString inStr; if (argc<2) { fprintf(stderr,"Usage : %s CheckedString\n",argv[0]); return -1; } infile = argv[1]; inStr = infile; puts( inStr.c_str() ); return 0; } //---------------------------------------------------------------------------
>>348 c_str()の寿命は、副作用が完了するまでと決まっているから、
他のchar[]配列にでもコピーしてから使わないと動作は未定義に
なってしまうよ。
おっとっと書くのを忘れてた。 従って、対処法は次の二通り。 ・c_str()をchar型の配列にコピーして、それを使う。 ・AnsiStringのまま扱い、char型へのポインタは用いない。 後者の方が良いと思う。
>>351 違いますよ。AnsiStringのコンストラクタに conct char* 型の引数を
取る時は、そのポインタはワイド文字列を指していなければならないと
決まっています。
>>348 原因は、inStr = infile; にあります。代入演算子 operator=(const char*)
内で、AnsiStringのコンストラクタが呼び出されているので、奇数バイトの
文字列を渡した時は、最期のワイド文字列が無効だと無視されてしまう
のではないかと思われます。
353 :
350 :2006/05/04(木) 11:05:31
>>352 そんな事はない。ワイド文字列と言っても、ヌルターミネータ
文字列なら何でもいいだろ。
とにかく、c_str()は、文末を過ぎたら、もうポインタが無効に
なるので、コピーして内容を保存しておけ。これは、std::stringも、
AnsiStringも同じはずだ。
354 :
350 :2006/05/04(木) 11:07:37
void __fastcall TForm1::Button1Click(TObject *Sender) { char buf[100]; std::strcpy(buf, Edit1->Text.c_str()); Edit2->Text = buf; } これで問題はないだろ。
355 :
350 :2006/05/04(木) 11:11:02
ごめん訂正 ×文末を過ぎたら ○副作用完了点を過ぎたら
どっからワイド文字列が出てきたんだ?w
BCB6のヘルプにはワイド文字列とか書いてあるが、気にした事ない。 BDS2006のヘルプにAnsiStringのコンストラクタとデストラクタが載って ないんだけど、どうにかならない?ヘッダーファイル見るしかない?
> ヌルで終わるワイド文字列を格納する 1 つのパラメータを渡すと,その文字列で値が初期化されます。 これ?でもどうみても __fastcall AnsiString(const wchar_t* src); の説明だしな。
AnsiString のコンストラク太君は沢山いるんだよ。
AnsiString::AnsiStringのパラメータにstd::stringとstd::wstringがないのが気に入らない
しかしどうやったら
>>352 みたいな解釈になるのか理解に苦しむ(;^ω^)
>>348 Edit2->Text = Edit1->Text;
ではダメなのか?
>>361 普通はそう書くね。わざわざc_str()を経由したって意図が
よくわからん。
363 :
勉強中 :2006/05/04(木) 23:05:32
仕事から帰ってみれば多くのレスが、
みなさんご意見どうもありがとうございます。
>>361 さん
TextからTextへの代入は、デバッグのために試したコードで、
実際にはTextからポインタを取り出して、
1) inStr = infile[0]=='\0' ? ".\\TEST_IN.XLS" : infile;
2) inStrを使用してファイルをオープンする。
というコーディングをしています。
奇数文字数と偶数文字数との違いでで動作がおかしくなったのを
発見したのでいろいろ試してみていたのが #else の部分なのです。
ブレークポイントを inStr=infile の行に設定して動作を見てみると、
この代入文で最後の文字がコピーされたりされなかったりすることまでは
確認しています。
c_str() の有効期間がどこまであるかを確認して、その上で
w_char* への対応が必要なのかをこれから調べてみます。
※確かにAnsiStringへの代入時にw_charがどうのこうのと書いてありましたが、
LOCALEの設定がデフォルトなので(何も設定していないので)、たぶんですが、
charで動作しているものと思います。
(どうやって確認すればいいのかちょっとわかりませんが)
またわからないことがあったらご報告(質問?)いたしますので、
そのときはよろしくお願いいたします。
>>363 WideString の存在知ってますか?
勉強というならVCLソースがいいよ。
いっそアセンブラ出力して厳密に追いかけたり。
あと三項演算子は、チーム開発で混乱を呼びやすいので
わかりやすく if 文にしてほしいなあ。
>>363 LOCALEは、char配列に何を入れるか(SJIS/EUC-JP/UTF-8/ラテンとか韓国や中国のコードとかetc)であって、wchar_tは何の関係もないでしょ…
>>336 ,
>>342 のC++Builder初心者です。とある物理現象シミュレーションの,
プロから見れば簡単なプログラムを書います。ほぼ出来上った段階で,スタ
ンドアロンで動くようにするため,オプションの,@"共通RTL, DLLを使う",
A"実行時パッケージを使う"のチェックを外し,これは成功しました。しかし,
体裁を整えるために,表示データや Label の追加などをやってから試したとこ
ろ,@,Aにチェックが入っていれば問題ないのに,外した状態では,構築中
または実行時に"EAccessViolationクラスの例外を生成しました"が現れて頓挫
しました。"ヘルプ"を読んでも対策が分りません。御教授下されば幸です。
「構築中」にアクセス違反が起きたならコンパイラのバグ、 「実行中」に起きたなら366のコードのバグ。 まずそこの切り分けから。
368 :
デフォルトの名無しさん :2006/05/07(日) 07:51:30
すんません。教えてください。 TComboBoxの選ばれている文字列を取得したいんですが、からっぽに なってしまいます。OKボタンを押したら、そのとき選択されていた 文字列を保存するということをしたいんです。 string = combobox->SelText; としたんですが、デバッグしてみたら stringはからっぽでした。ヘルプを見たらそれらしきことが 書いてあったのですがどうすればよいかわかりません。 どなたか教えてください。
>>368 TComboBox::SelTextは、ComboBoxコンポーネントにフォーカスがある
場合にのみ有効。イベントハンドラ内などで使う。
今の場合、OKボタンを押した時点で、ボタンにフォーカスが移ってしまう
ので、SelTextは空文字列を返す。
上に選択された文字列を取得するには、Textプロパティを使用の事。
370 :
366 :2006/05/07(日) 08:05:53
>>367 有難うございました。状況はプログラムのある行を消すと「構築中」は通るが,
「実行時」には違反が現れる,更に別の行を消すと「構築中」で既に違反が現
れるようになるなどといった具合で,因果関係が掴めませんでした。不思議な
ことに,「RTL, Dll 並びに 実行時パッケージ」を外しても問題なかった数段
階前のバックアップに戻って,行の追加,修正などをやり直したところ,問題
なく通りました(数時間ロスりました)。なお,C++4.5の時代にも,何故か途
中で引掛かるようになったプログラムリストの一部分を消して全く同じことを
書直したら,通るようになったことが幾度かありました。この場合は,Dll を
使う,使わないなどとは関係なかった訳ですが,一般的に,書いているプログ
ラムの何処かに画面上では invisible な余計なコードが紛込むことってありま
しょうか?
>>370 心配なら、Libフォルダにある、VCL??.CSMやVCL??.#??を消してみるとよい。
もしかしたらプリコンパイルヘッダが壊れてた可能性がある。
372 :
368 :2006/05/07(日) 08:24:41
C++Builder で TInterfacedObject を使ったサンプルコードってない? ぐぐったけどみつからんかったよ。
375 :
373 :2006/05/09(火) 16:18:10
ありがとう。 コードは参考になる。 フランス語なのが残念w
376 :
デフォルトの名無しさん :2006/05/11(木) 15:00:04
googleが買収する話はどうなったの?
377 :
デフォルトの名無しさん :2006/05/12(金) 23:40:48
BDS2006のC++Builderで、共有DLLを入れていないPCで実行可能な (MDIアプリ)単体EXEを作成する方法を教えてください。 以下のような手順で試してみましたが出来ませんでした。 1.MDIアプリケーションのプロジェクト作成 2.メニューのプロジェクト→オプションでダイアログを開く (3.リンカ→リンクの「動的RTLを使う」のチェックを外す) ↑MDIアプリケーションの場合、デフォルトOFF 4.パッケージの「実行時パッケージを使って構築」のチェックを外す 5.ビルドして出来たexeファイルを別のPCにコピーして実行 SDIアプリケーションを作った場合はできてます。
378 :
デフォルトの名無しさん :2006/05/13(土) 00:11:12
>出来ませんでした 出来たexeを実行したらどうなったのでしょうか?
379 :
377 :2006/05/13(土) 00:37:31
>378 一瞬マウスカーソルが砂時計になりますが 何もメッセージが出ず終了します
380 :
377 :2006/05/13(土) 00:41:20
BDSの入っているPCではそのexeファイル をダブルクリックで起動できます
必要な「共有DLL」が無い場合なら、ちゃんとDLLが見つからないとメッセージがでる。 そりゃコードの何かが間違っていて、例外起こして落ちているだけだ。 MDIのサンプルみて作り直した方がよい。
382 :
377 :2006/05/13(土) 01:37:31
>>381 プロジェクト作って、何もコードを加えずビルドしてます
で377と同じ方法で、別のPCでexeを作り、
さらに別のPCで実行したところ
「BORLNDMM.DLLが見つからなかったため、・・・」
というメッセージが出ました。
さきほどの組み合わせでメッセージが出なかったかは
わかりませんが、377ではMDIアプリの単体exeができないのかも
単体exeを作るのに377のオプション2箇所以外に
確認するところってありますか?
>>382 Install Shield Expressで、必要なDLLパッケージも固めろ。
384 :
377 :2006/05/13(土) 04:19:22
>>383 はい・・・とりあえずはそれで対応します
できないのはPC環境の問題なのかなぁ
うまく出来ている方います?
385 :
377 :2006/05/15(月) 15:16:16
BDS2006の不具合のようです。 以下の手順で作成できました。 1.「動的RTLを利用する」のチェックを入れ、 「実行時パッケージを使って構築」を外してビルド。 2.「動的RTLを利用する」のチェックを外してビルド。
386 :
デフォルトの名無しさん :2006/05/15(月) 17:01:35
助けてください。 私はコンソールでしかプログラムを組んだことがなく、Windowsは初めてです。 時計マークでタイマーを作って100msのIntervalを設定しました。 初期Enabledはfalseです。 main01()という関数内で、do{}while(ret==0) というループをつくります。 このループ内で処理をした後にタイマーEnabled=true とします。 タイマー内ではret=1をセットしてループを抜けるようなソースを書きました。 でも、do{}while(ret==0) ループ内でタイマーEnabled=trueとなっても、 タイマーイベントは発生せず、ループを終わらせることができません。 途中で停止させ、Enabledの内容を確認してみましたが、trueとなっているのに タイマーイベントは発生しません。 なにかコツとか、windows特有のおまじないみたいなものがあるのでしょうか。 よろしくお願いします。
387 :
デフォルトの名無しさん :2006/05/15(月) 18:02:31
よくわからんが、ループ内でタイマー起動しようとしてる? Application.ProcessMessage ループ内にとか入れてみたら?
タイマは割り込みじゃねーし。 メッセージループとかメッセージパッシングとかの言葉は理解したほうが良いよ。 あと、ビジーループという言葉もね。
389 :
386 :2006/05/15(月) 18:07:05
すみません。 Application.ProcessMessage ですね、あとで調べてみます。 いままでアセンブラの人だったので、windowsはよくわからず、タイマーは割り込みのようなものと聞いたもので。 違うんですね。。 いろいろ語句がでたので、ちょっと調べてみます。 ありがとうございます。
なんかDOSからWindowsに移行した時期にタイムスリップしたみたいだw
DataSnapのサンプルコードありますか?
>386 そういう用途にTimerコンポーネントは向いてないっす。 GetTickCountという関数(Windows起動時からの経過時間をms単位で返す)があるから それで引き算して時間を数えた方が良い。
WM_TIMER って優先度低いってどっかに書いてあった
394 :
デフォルトの名無しさん :2006/05/16(火) 03:12:39
>>393 優先度低いというか、イベントで呼ばれるものだからなあ。
割り込みっぽく使いたければ、マルチメディアタイマーだが(コンポーネントもある)、
マルチスレッドなので、同期が面倒
いっそ TTread を派生させた方が組みやすいんじゃないかとw コンソールとは、実行概念から違うよ。 極論だけど、Windows プログラムは巨大なOSプログラムの一部で、 OSからソフトウェア割り込み(MS-DOSの INTとは全く違う)を 受けて実行するサブルーチンの集合体です。
時間かかる処理はメインスレッドとは別のスレッドでやらないと最悪GUIが応答不能に近い状態になることも‥・
データマトリックス方式の二次元バーコードを作るソースを公開しているHPを教えてください
398 :
デフォルトの名無しさん :2006/05/16(火) 16:55:02
>>377 >「BORLNDMM.DLLが見つからなかったため、・・・」
これが起きる原因って、プロジェクトオプションの「Linker」タブの「Use dynamic RTL」がオンになってるからだお。
オフにすれば大丈夫。
>>398 誤爆じゃないですよ。Builder5でやりたいんですよ。
どこかにソースないですか?
じゃあジックリぐぐればいい。
馬鹿はレスしないでください
といいつつ自分はレスする人。
馬鹿じゃないもん
ばかだもん
むー
410 :
デフォルトの名無しさん :2006/05/17(水) 22:36:08
分割コンパイルの方法がわかりません。
バカには ソースはない って言っておいたほうがいいよ
そーっすか
そうでもないよ
ヒント:新規作成、Library
>>403 ググって見つからない == (情報がない || 君にはまだ早い)
416 :
デフォルトの名無しさん :2006/05/18(木) 13:48:39
Version6.0を使用していますが、 オブジェクトインスペクタに表示されている項目のフォントサイズを変更したいのですが 方法はありますか、小さすぎて見にくいので大きくしたいと思っています。
説明書読みなさーーーい
418 :
デフォルトの名無しさん :2006/05/18(木) 15:23:22
老眼は大変だね。
寄る年波には勝てない
BDS2006うpデートどうしよう。 買ってもテストメンドイから仕事では6のままだけど。
422 :
デフォルトの名無しさん :2006/05/19(金) 17:04:05
BCB6を使用しています。 StringGridでセルが編集中かを調べる方法はありますか? アドバイスお願いします。
423 :
デフォルトの名無しさん :2006/05/19(金) 17:11:45
ある
>>422 StringGrid1->EditorMode
>>424 ありがとうございます。
EditorModeはヘルプで見つけたのですが良く読んで無かったようです。
助かりました。
直線を描いてから、マウスでその直線をドラッグして動かしたいんですが、 直線が押されたかどうかを、ボタンを押した点と直線との距離を計算して 判断する以外に方法はないでしょうか?MFCだとRegionというのを使うようですが。
あります。
リージョンはWinAPIだから言語問わずに使える。
でも、MouseDown が直線上だったかどうかを計算で求めた方が 圧倒的に簡単な気がする。
ありがとうです。計算でやることにします。
MSN Messengerなど、タスクトレイ近くにメッセージを出して、数秒後に引っ込むものを つくるには、どのようにしたらよいのでしょうか?
TForm->Top TForm->Left とかで位置調整は可能 表示したらTTimerとかで一定時間かぞえてから消せばよい アニメーションは力技でがんばれw
ノートンとかのあれか。 確かコンポーネントがあったような。
バルーンか。Shell_NotifyIcon。
avastもだな。 あれはOSのじゃないでしょ。
436 :
デフォルトの名無しさん :2006/06/02(金) 08:28:23
今からBCB買う理由はないよね
437 :
デフォルトの名無しさん :2006/06/02(金) 14:28:40
けど VC++ に移行する理由もない
何VC++の話なの?
なら、積極的に廃すべき。ディスクの肥やしライブラリや情報多杉。
MFCに嫌気がさした人の数→
ttp://pc8.2ch.net/test/read.cgi/tech/1059196520/ 486 名前: デフォルトの名無しさん [sage] 投稿日: 2006/06/01(木) 21:44:54
勉強するならWTLを激しくお勧め。
きれいなソースで継承関係でもっさり感が80%減(MS社比)
VC++が出力する気味の悪いテンプレートに悩まされず、VCのバグに
巻き込まれにくい。
問題はドキュメントの数と認知度の低さ。趣味グラマーならWTL。
つーかMFCに勉強する所なんて無い。バッドノウハウの温床だよ。
490 名前: デフォルトの名無しさん 投稿日: 2006/06/02(金) 00:48:50
Expressでも使えるようにできる
つーかMFCこそ使えないし
491 名前: デフォルトの名無しさん [sage] 投稿日: 2006/06/02(金) 04:31:39
MFCのソースコードはもうAPIのサンプル集と思ったほうがいい
あれがオブジェクト指向だと信じられていた時代があった・・・
VCL も着々と MFC 化してるけどね
ない
ないな。
誰も2006使ってないの?
444 :
デフォルトの名無しさん :2006/06/03(土) 14:40:04
使ってない。
ないな。
誰も彼女いないの?
女だからな。
ないな。
449 :
デフォルトの名無しさん :2006/06/03(土) 23:23:10
450 :
デフォルトの名無しさん :2006/06/20(火) 15:19:31
えらく止まっちゃってるな(´・ω・`)
451 :
デフォルトの名無しさん :2006/06/20(火) 23:31:11
そうだな
みんな C++ Builder を使いこなせてるんだな。
DelphiではOLEVariantで囲んでやるだけなのにどうしてBuilderでは同じコードで動かないんだ!
おいらはEXEL動かすのに苦労した。 DelphiではVBと同じように書けるみたいだけどC++Builderだとちょっとコツが居るね 結構試行錯誤する羽目になったよ。 BorlandのFAQにVariantを使ったサンプルがあったけど今も残ってるのかな?
BCBはそこそこ自信があるけど、たまには他のも使ってみようと思ってVC6をインスコしてみたがどこに何を書けばいいのかサッパリ分からなかった 漏れにはBCBしかないんだと思い知りました
BCBに比べるとVC6でGUI作るの結構大変だよね。 VCがVBみたいになってないからBCBを使ってるというのもあるな。
ダイアログベースとか.NETなら簡単
TObject から派生したクラスは多重継承できません。 そこで、インターフェースで代用しようと思ったんですが、 TObject * しか与えられていない時に、その TObject が どのインターフェースを継承しているか知る方法はありますでしょうか? レジストリは使用したくないんで、IUnknown で QueryInterface する以外の 方法で。
>>458 別にIUnknown::QueryInterfaceとレジストリは直接の関係は無いけど。
登録なんかしなくてもアプリ内の閉じた使用なら勝手にやっちゃってOK
460 :
458 :2006/06/22(木) 08:57:32
>>459 レジストリは直接は関係ないんですね。
じゃあ、IUnknown の方向で検討してみます。
ありがとうございました。
461 :
デフォルトの名無しさん :2006/06/22(木) 10:15:33
>別にIUnknown::QueryInterfaceとレジストリは直接の関係は無いけど。 Del1からBCB6まで何年も延々と使いながら「IUnknown::QueryInterface」を知らない俺ガイル それがなんなのか説明キボン。(サイトでもおk)
>>458 Delphiクラスの多重継承制限の指すインタフェースは抽象クラスのことでCOMインタフェースとは関係ないぞ。
ヘルプの用語集あたり見てみれ。
463 :
458 :2006/06/22(木) 12:04:53
>>462 COMインターフェースと直接関係ないことは知ってたんだが、
QueryInterface 以外にどんなインターフェース持ってるか知る方法が
ないとばかり思ってたよ。
ヘルプ見直したら、TOjbect::GetInterface なんてのが有ったので、
GUID付きの抽象クラスつくったら、これで取得できそうですね。
その方向で行ってみます。ありがとう。
dynamic_castで取得できるようにしてくれりゃいいのにな
BDSのバージョンアップ絞めきりが明日だってメールがきた すっかり忘れてた みんなどうするorどうした?
466 :
デフォルトの名無しさん :2006/06/22(木) 15:11:52
>>461 ではないが、Delで、interface使ったこと無い俺がきましたよ。
interfaceとかIUnknownとか?
誰か説明キボン。
>>465 どうしようか迷ってたんだけど、どうせ使うんだから申し込んじゃった
後で8万出すよりは今3万出しといた方がいいや…
>458 Nameプロパティとか、なんか指標になる物を参照すればいいんじゃね?
>>465 今回見送り。
てか使ってるPC<必要動作環境なんですが‥‥(;´Д`)
471 :
458 :2006/06/22(木) 20:14:08
>>464 ハゲ同。ためしに dynamic_cast したらヌルポでしたよ orz
>>468 簡単な方法としてはそれもありですけど、delphi の interface の勉強かねて
delphi 流のやりかたでやってみようと思います。
TBitmapに256色画像を読み込んでスクロールバーで 色を変化させるテストプログラムを作っていてハマりました。 パレットは読み出せるのですが再設定するとパレットは反映されるのですが、 設定したパレットにドットの色が変わっているのではなく、 元の画像に似た色をわざわざ探して近い色に設定しているらしいです。 読み込んだ256色BMP画像のパレット#12が黄色として、パレット#12を 青に書き直して表示、または画像を保存するにはどうしたらいいでしょうか。
追記: 表示はハイカラー以上です。内部だけ256色で処理したいのです。 参考になる記事を探したのですが、256色に関するものは 表示画面が256色のときのものばかりでした。
コードを見せてごらん。
パレット設定部分だけでもコードをみせてごらん
初歩的、スレ違いかもしれませんが失礼します typedef struct tag_DATA { long la; long lb; }A_DATA; typedef struct tag_INFO { intia; A_DATAdata; charbuf[5]; }A_INFO; としたとき、これをTMemoryStreamのSaveToFile()で書き出すと A_INFO.iaとA_INFO.data.laの間に4バイトのデータが書き出されている のですが、これはなんのデータでしょうか?
ゴミ BCB6ならプロジェクトオプションのコンパイラ(詳細)タブの「データの配置境界」
>>478 レスありがとうございます。
ゴミだったとは・・・orz
ゴミではまずいので「データの配置境界」を4に変更してコンパイル→実行してみると
EConverterErrorクラスの例外(TPenをTStringListに代入できない)
が発生してしまいました。
良い回避方法などはないでしょうか。
当方BCB5で境界が4バイトになればOKなのですが。。。(上記にchar buf[5]がありますがウソです。必ず4バイトになります)
#pragma pack(push, 1) // 構造体を定義 #pragma pack(pop)
>>480 うまく動作しました。
ありがとうございました。m(_ _)m
>>473 ゲーム用ツールかなんかですか?
256色TBitmapに結び付けられたパレットの「中身だけ」を操作したいのであれば
単純に GetDIBColorTable() / SetDIBColorTable() でいけるとおもいますよ。
どうでもいいがC++で構造体のタグ名って普通付ける? いつもstruct 構造体名 { 定義 };で済ませてるんだが。
つけてんじゃん
付ける。漏れ規則だから。
だめだよお兄ちゃん、ちゃんと付けてよぉ・・・
大丈夫、男同士ならいらないんだよ
むしろ男同士の方が必要だ
ナマがいいの
ナマじゃできちゃうよぉ
大丈夫、男同士ならいらないんだよ
むしろ男同士の方が必要だ
ナマがいいの
ここは気持ちの悪いインターネットですね。
WinDir以下のファイルを検索したいのですが、FindFirst及びFindFirstFileではうまくいかないようです。 OS:WinXP Pro BCB6 具体的にはC:\Windows\DownLoad Files\下にあるHoge.msiを削除したいのですが、 間に{12A34BC5-D678-90EFG-HIJKLM1NO23P4}\のようなMACアドレスみたいなフォルダ名が 入ってくる(非固定)ので、Hoge.msiを検索しているのですが、出来ません。
>>495 Hoge.msi は固定のファイル名なのかな?
ヒント:再帰
498 :
495 :2006/06/29(木) 18:52:35
自己解決しました。 【検索する関数】を、フォームのデストラクタ内で呼んでいたからでした。 そこより前の別イベント内で呼べばOKでした。 お騒がせしました。 その【検索する関数】はWin2k+BCB5ではうまく走っていたので すわOSのバグかBCB6の不具合かと一瞬寒くなりましたが、 それだけのバグがあれば大騒ぎになってますもんね。とほほ。
そういやBCB6ってクラスエクスプローラでoperator=とかの定義できないのな/ ;' 3 `ヽーっ
DelみたいにShift+Ctrl+Cで補完できないのが…
C++Builderを使って、.NET(VC#など)で作成したアプリと同等の外観(たとえばツールバー)の ソフトをつくるのって大変ですか?
BDS2006なら標準。 BCB6当たりだとXPのエクスプローラスタイル程度なら可能。
IntToStr使うのと(String)でキャストするのではどっちがスピードが速いの?
>>503 IntToStr: FmtStr(Pascal版sprintf)で変換
AnsiStringにキャスト(AnsiString(int)): AnsiString::sprintfで変換
BDS2006のBCBのヘルプにはコンストラクタ/デストラクタが載ってないよな。 デストラクタはいいとして、コンストラクタが載ってないのはかなり困る。 いちいちヘッダファイルを見るのも面倒臭いし。 ・・・という内容でBDNのアンケートに英文で投稿してきた。BCB6のヘルプには 載ってるのに、どうして削ったんだろうか?
DelphiのヘルプをBCB用に修正しているから。 多分BCB6のヘルプとの連続性はない。
どのスレッドで質問すればいいのかわからなかったので、この スレで質問させてください。スレ違いなら誘導していただければ。 BDS2006Proをインストールして起動させてみたのですが、 「.NETサービスを初期化します」のところで3分弱待たされるのです。 その間、HDDアクセスランプはあまり点灯しないのですが、 CPU使用率がほぼいっぱいになってしまいます。 みなさんのところでは、起動にどのくらいの時間がかかっているのでしょうか? また、私のところだけだとすれば考えられる原因が何かわかるでしょうか? わたしのPCの概要は以下の通りです。 プロセッサ モデル : Intel(R) Pentium(R) 4 CPU 3.00GHz スピード : 3.01GHz 性能の評価 : PR3999 (概算) 一プロセッサー当たりのコア : 1 ユニット 一コア当たりのスレッド : 2 ユニット 内部データのキャッシュ : 8kB 同期, Write-Thru, 4-way set, 64 byte line size L2 オンボードキャッシュ : 512kB ECC 同期, ATC, 8-way set, 64 byte line size, 2 lines per sector
508 :
507 :2006/07/09(日) 09:05:10
ちなみにメモリは1GB積んでます。 マザーボード バス : ISA AGP PCI IMB USB FireWire/1394 i2c/SMBus システム BIOS : American Megatrends Inc. 1019.002 システム : To Be Filled By O.E.M. To Be Filled By O.E.M. マザーボード : ASUSTeK Computer Inc. P4C800 トータルメモリ : 1023MB DDR-SDRAM
不必要な情報はいろいろカキコしているけど、OS種別さえ書いていない件について
俺も測定してみた。 起動全体には、約39秒。 .NETなんちゃらの初期化は6秒くらいだった。 ストップウオッチで測定。
512 :
デフォルトの名無しさん :2006/07/09(日) 11:44:47
やった。55秒で起動した。
513 :
デフォルトの名無しさん :2006/07/09(日) 11:48:15
>>507 その構成で起動が遅いと言うのは考えられないな・・・・
再インストールしてみたら?
HDD崩壊直前に良くある現象だな。
515 :
デフォルトの名無しさん :2006/07/09(日) 12:55:36
点を左から右に移動させるだけの簡単なプログラムの作り方教えてください。
517 :
507 :2006/07/09(日) 14:03:08
お世話になります。 > 不必要な情報はいろいろカキコしているけど、OS種別さえ書いていない件について 確かに、忘れてました。 OSはXP SP2です。 インストールですが、Visual C++ 2005 ExpressEditionを入れたときに、 NetFramework1.1との干渉?でExpressEditionが立ち上がらなかったので、 一旦、ExpressEditionとNetFrameworkをアンインストールして それからVisual C++ 2005 ExpressEditionをインストール。 (同時にFramework2.0もインストール) それからBDS2006をインストールしました。 (ここでFramework1.?がインストール) 再インストールするとして、Visual C++ 2005 ExpressEditionとBDS2006と どちらを先にインストールすればよいでしょうか? それとも順番は関係ないですか?
>>517 デフラグは?他の.NETソフトの立ち上がりは遅くない?
519 :
507 :2006/07/09(日) 17:13:23
>>518 はい、何度もチェックディスクとデフラグをかけています。
他の.NETソフトについては全然遅くありません。
(他の.NETソフトといってもVisual C++ 2005 ExpressEditionくらいしか
思いつきませんが。でも2005ExpressEditionって.NET2ですよね)
C++Builderで携帯アプリを作るのは可能でしょうか?
BDS→VC++の順でいい気がする
524 :
デフォルトの名無しさん :2006/07/10(月) 00:28:33
>>524 TImageにビットマップ以外の物を入れた状態で、Canvasにアクセスするとそのエラーが出る。
GDI+は関係なし。
Image1にJPEGでも入れてんだべ。
> C++Builderで携帯アプリを作るのは可能でしょうか? iアプリなんかのJAVAアプリの事なら無理。 JBuilderのスレへ池。
>>519 「タイムアウトしました」みたいなエラーは出てないのか?
>>520 >>526 自分、日本語版インスコ、後に英語版インスコしたけど、
英語版(時期的に大分後だったせいか?)にはシンビアン用コンパイラが付いてたお。
それ入れると、なぜかバージョンダイアログがC++ Mobile Editionになる。
でも使ってるのはWin32だけ。
BDS2006のBCBには、クラスエクスプローラって無いの? 構造ってウィンドゥがあるけど、プロパティやメソッドの追加ができん。 BDSスレで聞いてみたけど完全に無視されてる。
> プロパティやメソッドの追加ができん。 Togetherでやる事になった。 BCBには対応していない。
>>530 ありがとうございます。確かにDelphi(.NET)、C#のみの対応みたいですね。
残念ですが仕方ありません。データグラムもTogetherに移されたようですし。
BCBのTogetherへの対応は次バージョンまで待たないとだめかな・・・・
×データグラム ○ダイアグラム この機能結構好きだったんだけどなあ・・・・Delphiは使わんし(-_-;)
533 :
デフォルトの名無しさん :2006/07/15(土) 08:10:01
質問です。 自分で作成したプロジェクトでbplファイルをインストールしたいのですが bpiが見つかりませんとでました。bpiとは何でしょう?
>>533 ヘルプ見てみな。BPIは静的リンクのためのインポートライブラリ。
質問があります。 C++ Builder5を使っているのですが、 トラックバーで、矢印を2つ持ちたいのですが不可能でしょうか? 印刷ページの選択などで、 開始ページと、終了ページを1つのトラックバーで設定するような コンポーネントがあればと思ったのですが、 なにか、いいアイデアがあればよろしくお願いします。
>>535 自分でTControlから派生させて1から自力実装しないと_。
>>535 TTrackBar を継承して無理矢理作れなくは無いだろうけど、矢印2つは、範囲が0の時(つまり2つの矢印が同じ値を指すとき)不便じゃないか? 目盛は十分細かくなれるんだから。
SelStart と SelEnd があるんだから、ボタンを2つ作るなり、コンテキストメニューで2つ項目を作るなりして設定するのが良かろうと思うが。
538 :
デフォルトの名無しさん :2006/07/19(水) 12:28:29
BCB6ってWindowsMeで使える? 対応OSには入ってないけど、使えたって話も聞いたから
>>538 使えるけどヘルプまわりで制限受ける。Win98も同様。
以下Readmeより
Windows 98/Me における Windows ヘルプインデックスの制限
Windows 98/Me の Windows ヘルプエンジンは,[トピックの検索]ダイアログの[キーワード]タブに 16 ビットのリストボックスを使用しているので,
32,767 語を超えるキーワードを表示できません。
エントリ数がこの制限値を超える場合,[キーワード]は空白になります。
これらのいずれかのオペレーティングシステムを使用している場合,ヘルプインデックス制御ファイル (bcb6.ohi) に変更が加えられて,
[キーワード]表示からいくつかのヘルプファイルが除外されていることに気がつくことでしょう。
この変更は,ほかのヘルプシステム機能 (たとえばファイルの相互リンクや〔F1〕キーによるアクセス) には影響しません。
さらに,":Index" エントリの前にコメントを示すセミコロンを追加したり削除することで,インデックスを拡張したりほかのヘルプファイル参照を追加または削除できます。
ただし,.OHI ファイルを編集する場合は,キーワード表示が空にならないように,WinHelp ビューアの制限に注意してください。
540 :
デフォルトの名無しさん :2006/07/19(水) 14:09:40
C++BuilderでVCLを使った場合とAPIオンリーで組んだ場合 速度にどれくらいの差がでる? また、APIオンリーの場合、C++BuilderとVC++でも 速度の差はでるの?
自分で測定してみなさい。 ぶっちゃけ言うと、大してかわらない。
VCLってランタイム(ランタイムリンクも出来るけどさ)みたいなもんじゃなくて、 普通にWin32APIをコールしているクラスライブラリだから違いは無いだろ。
ダイナミックリンクしなくてもランタイムはランタイムだ。 もちろんランタイムとはランタイムライブラリのこと。
>>536 ,537
ありがとうございました。
自分にはレベルが高そうなんで、
コンポーネント2個つかおうと思います。
546 :
デフォルトの名無しさん :2006/07/20(木) 03:40:30
ラップしてるってことは、ややオーバーヘッドがあるってことじゃないの?
>>544 インスペクタで SelStart と SelEnd いじってみなよ。
TTrackBar 2個使うより多分簡単だよ。
> ラップしてるってことは、ややオーバーヘッドがあるってことじゃないの? 試さなくてもそのとおり。
\|/ /⌒ヽ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ゜Θ゜) < そうでもないよ。 | ∵ つ \___________ | ∵ | \_/ だってBCBでWin32コールする場合でも、クラスでラップしてコーディングするんだから全く同じ開発。 ActiveX、ドトネトなんかは激遅。
ラッパーでのロスが気になるほどガチガチのコード組むなら おとなしくVC++使った方がいいと思うんだ
てかUIで多少ロスあってもほぼ影響はないと思うんだ。 途中結果の表示で重くなるなら間引けばいいんだし。
それは読み間違い。 BCBってのはUIでロスが少ない。 に対してActiveXなんかだと起動時既に描画がもたるし、 メモリ積んでてもメモリエラーになる。
554 :
553 :2006/07/20(木) 17:34:08
VC++/MFC系もコントロール少なくて10くらいしか無いし、 そこでActiveX使うとやっぱオーバーヘッド大。
UI部のほんのわずかなオーバーヘッドが許容できないようなプログラム組んでいる奴なんて存在しているのか。
VCL製ならTListViewの自動更新切らずに大量のTListItemをAddしてるアプリなら意外とあるとおもう。 IriaさんとかIriaさんとか。
API直接叩いててもロックしないでAddItemしてるアプリはいくらでもあると思うぞ。
>>556 Iriaさんだけじゃないから。
っていうか更新切るだけで全然違うのに…orz
自動更新の切替なんてあるのか、知らんかったよ
BeginUpdate EndUpdate の事?
561 :
デフォルトの名無しさん :2006/07/24(月) 14:45:56
562 :
デフォルトの名無しさん :2006/07/24(月) 17:19:23
BCB4でTHMLコントロールでHTMLファイルを表示しようとしたのですが、 文字は表示されたのですが、文字の色がHTMLで指示した色になりません。 UseDocColorsはtrueになっています。 HTMLでは文字色は<FONT color=#ff0000>で指示しています。 文字の色を反映する方法はありませんか?
>>562 IEとかでちゃんと表示されることを確認したか
565 :
562 :2006/07/25(火) 14:47:38
TWebBrowserを使うことで自己解決しました。
566 :
デフォルトの名無しさん :2006/07/26(水) 13:46:51
AnsiString file = "c:\\test.bmp"; TImage *image; image->Picture->LoadFromFile(file); ← EAccessViolation が出ます。 なぜでしょうか?
ついでに言うとその場合はTImageじゃなくてTBitmap使わないか?
569 :
566 :2006/07/26(水) 14:07:23
>>567 早速のご返答、ありがとうございます。
しかし、初心者なので、
実体がないという意味が理解できません(;_;)
>>568 TBitmapを試してみます。
570 :
566 :2006/07/26(水) 14:19:33
色々調べた結果、 AnsiString file = "c:\\test.bmp"; Graphics::TBitmap *temp = new Graphics::TBitmap; temp->LoadFromFile(file); で、出来ました! newってつけることで、実体というものができるのですか?
>>570 BCBじゃなくてC++の入門書嫁。
あとBCB特有の制限にTObject派生クラス(Delphi型クラス)は静的な生成が出来ない。
572 :
566 :2006/07/26(水) 14:33:15
>>571 おっしゃっている言葉の意味が難しすぎて、理解できませんOrz
どんな本がいいですか?よければ教えて下さい。
本屋に行っても、そういうのが親切にかいてあるのが見つからないのです(泣)
おー、ちゃんと自分で調べて解決するという意識があるじゃん。
そんな感じでやっていけば、すぐにある程度のことは出来るようになるよ。
まずは
>>571 が言うように、C++というものを覚えてからだね。
ただし、C++自体は非常に巨大な仕様なので
本当に基本的なC+class程度の内容を理解したら
templateや例外は後回しにしてVCLをいじりまわすのが良いかもしれない。
(独自拡張や制限もあるし)
>>572 VCLクラスには、スタックやグローバル領域に作成できない(new以外不可)、
多重継承できない等の制限がある。
また、派生時のコンストラクタ/デストラクタの呼び出し方が若干違う。
で、BCBの書籍は絶滅状態なので、C++の書籍とDelphiの書籍とWinAPIの書籍を。
必要ならネットワークとかスレッドとかDirectXとかも個別に。
574 :
566 :2006/07/26(水) 14:51:36
>>573 ありがとうございます!!
「やさしいC++」という本を読んで、"new"が動的にメモリを確保するものであることは理解できました。
静的な生成ができないとは、予め用意していないコンポーネントとかは"new"を付けて宣言するしかないということですね。
もっと、色々なことが書いてある、勉強になりそうな、C++の本を見つけたいです。
Delphiとか、WinAPIのよい本があったら教えてくださいm(__)m
Win32APIはVCLでラップされてるから読まなくて良いんじゃね? 必要なときにググれば。 そういう自分はWin16からどっぷりWinAPI脳。
576 :
566 :2006/07/26(水) 15:04:40
>>575 やっぱググっていくしか道はないんですかね。
中々、よい本が見つかりません。。
>>574 WinAPIならCDのなかに転がってる(BCB6)日本語リファレンスとPlatformSDK(英語、Win32APIスレ参照)のドキュメント。
英語読むのに抵抗ないなら前者は不要。
578 :
566 :2006/07/26(水) 15:19:47
VCLのクラスのメソッドでラップされてるWinAPIを直にコールしても弊害しか無いような希ガス。 VCLクラス派生によるコーディングを身に付けた方が良いような。
>>579 の言うように VCL をいじり倒してから
それだけでは足りないようなら API を直で触る
ようにするといいよ。
581 :
566 :2006/07/27(木) 13:10:55
みなさんご親切にありがとうございました! また、お世話になります。
BCB6で使ってたTScrollBoxの派生コンポーネントをBDS2006に組み込もうとすると [リンカ エラー] Error: 未解決の外部参照 '__fastcall Forms::TScrollBox::PaintWindow(void *)' が (パス省略)\SCROLLBOXEX.OBJ から参照されました ってエラーが出てしまう ためしに新規でプロジェクト起こしてTScrollBoxを継承したコンポーネントの スケルトンを作ってビルドしても同じエラーがでてしまう どうすれば回避できるんだろう?
試しにDelphiでスケルトンつくってやったら問題なくコンパイルできた くそう、Delphiわかんねーよ…
>>583 > くそう、Delphiわかんねーよ…
心配するな、俺もだ
>>582 ヘルプによると
[C++] virtual void PaintWindow (HDC__ * DC);
エラーは、
TScrollBox::PaintWindow(void *)'
型が異なっている。
試しに、PaintWindow(void *)を作ってそこから親のPaintWindow()を呼ぶようにしたら
コンパイルは通ったぞ。
>>585 回答ありがとぅー!
こちらもダミーのPaintWindow(void *)を作って回避したけど、
一応親のPaintWindow()を呼ぶようにしておくよ
ではでは、アデュー ノシ
うがー BCB6の時よりSTLが厳格になってんなー エラーでまくりだぜー orz
>>587 STLportから見捨てられて、Dinkumwareにすがりついとる。
>>588 うおお、また実装が変わったのか!
最初はRogueWaveだったよなー
んもー
節操が無いというか、運が悪いと言うべきか
どっちのSTLが良いの?
ていうか、本当は違いがあっちゃダメなもののはずなんだがな
これだから、ボーランドは嫌いだ
VCLのまま存続してる方が珍しいよ。 MFC→ATL/WTL→MC++→C++/CLI J++/WTL→J# なんてひどい例もあるし。
VCL はもう制度疲労なんだから、後生大事に持ってるほうが変だろ
STL はVCLと関係ないだろ
597 :
デフォルトの名無しさん :2006/08/04(金) 22:11:24
STLport 5.1 では Borland C++ がちゃんとサポートされそうな感じ。
ようやくSTLportも重い腰を上げてくれたか・・・・ 長い間某がVerUPしないので一度ブランチ切られてしまったんだよね。 もうだめぽかと思ってた。 BCC5.82(BDS2006の奴)はDinkumwareなので、std::mapなんかの ベンチを取るとSTLportより遅いんだよね。楽しみ。
599 :
デフォルトの名無しさん :2006/08/08(火) 22:55:47
>>599 TC++から始めた俺には少し嬉しいがBDSと何か違うのか?
統合版を買ったアホは相手にしない、ってことだよ。
企業向け気味だったのを ホビー向けにするってことか 無料のExpressに持って行かれてるのを食い止めようという Databaseの機能制限もないんだったら TurboC++は魅力的かも しかし、CLIはサポートしそうもないな
Turboブランドって何よ?BDSでさえ最適化が糞なのに、Turboはまさか 最適化を完全に省略してしまうとかか?
藻前昔のTurboの頃の他社に対する最適化の凄さシラナイノカ
でも今回のTurboは名前だけなんでしょ。 まあTurboブランドの方がまた社名が変わっても 製品名を変えなくてすむね〜。
DOSのときみたいに3秒で終わるコンパイルきぼんぬ
、--‐冖'⌒ ̄ ̄`ー-、 /⌒` 三ミヽー-ヘ,_ __,{ ;;,, ミミ i ´Z, ゝ ''〃//,,, ,,..`ミミ、_ノリ}j; f彡 _) 〃///, ,;彡'rffッ、ィ彡'ノ从iノ彡 >';;,, ノ丿川j !川|; :.`7ラ公 '>了 _く彡川f゙ノ'ノノ ノ_ノノノイシノ| }.: '〈八ミ、、;.) ヽ.:.:.:.:.:.;=、彡/‐-ニ''_ー<、{_,ノ -一ヾ`~;.;.;) く .:.:.:.:.:!ハ.Yイ ぇ'无テ,`ヽ}}}ィt于 `|ィ"~ ):.:.:.:.:|.Y }: :! `二´/' ; |丶ニ ノノ ) :.: ト、リ: :!ヾ:、 丶 ; | ゙ イ:} 逆に考えるんだ { .:.: l {: : } ` ,.__(__,} /ノ ヽ ! `'゙! ,.,,.`三'゙、,_ /´ 「3秒でコンパイルできるソースを書けばいい」と ,/´{ ミ l /゙,:-…-〜、 ) | ,r{ \ ミ \ `' '≡≡' " ノ 考えるんだ __ノ ヽ \ ヽ\ 彡 ,イ_ \ \ ヽ 丶. ノ!|ヽ`ヽ、 \ \ヽ `¨¨¨¨´/ |l ト、 `'ー-、__ \ `'ー-、 // /:.:.} `'ー、_ `、\ /⌒ヽ /!:.:.| `、 \ /ヽLf___ハ/ { ′ / ! ヽ
>>607 確かにTurbo Pascal(のコンパイルの速さ)は凄かった。
いや、その凄さに気付いたのは他のコンパイラの遅さを知ったからだ。
前方から構文解析できるpascalと、 文法がメッキで肥大したc++と同列にするのは、 如何なものかと。
でも、出来ることは大して変わらないんだよ。
いや、出来る事の話じゃなくてコンパイラの仕事=速度の話なんだけど。。。
そういえば、かなり前だけど Win9xマシンでDOS用のEXEを作るために TurboC++1.01でPC98のDOS3.x時代に作ったソースをコンパイルしたら まるでechoかと思うくらい、あっというまに終わって驚いたっけ。
そりゃx64版のコンパイラとかx64ネイティブなIDEが付いてるならTurbo買っても良いけどさ… BDS2006とかBCB6からじゃねぇ…っていうかさっさとBDSをx64化しやがれってんだい。 ま、今でもTurboC++4 for DOS時々使ってるけど(w
616 :
デフォルトの名無しさん :2006/08/11(金) 14:57:28
>>614 x64ネイティブ開発用に何使ってんの?
なにこのヒッソリ感
試しにぬるぽ
試しにガッ
Turboになれば、コンパイル速度が10倍になるよ GUIも軽くて凄いのがある、STLやBOOSTも完全対応 たぶん、これ使えば仕事能率UP=毎日定時に帰れる+しかも給料UP ヽ(`Д´)ノ ゼッタイソウニチガイナイ
>>620 そうならBDSを捨てて乗り換えるんだがなぁ
622 :
デフォルトの名無しさん :2006/08/26(土) 18:02:09
構造体内で複数のAnsiStringを定義し(AnsiStringのみ定義)、 これをNULLで初期化したいのですが、 char型でないのでmemsetが使用できません。 一つ一つについて、 構造体名.「AnsiString型」 = ""; で消去するしかないのでしょうか?
>>622 コンストラクタ作って初期化。てかそもそも宣言時のAnsiStringの中身は""だから初期化する必要はない。
624 :
622 :2006/08/26(土) 18:24:12
コンストラクタですね。ありがとうございます。 最初に初期化するのではなく、ある周期で初期化したかったのです。
>>624 >最初に初期化するのではなく、ある周期で初期化したかったのです。
それじゃコンストラクタはダメでしょ
構造体にAnsiString型メンバを全部からにする関数を追加する
その関数の中では1つ1つ空にするしかないが
>>624 memset(構造体、0) とかやりたかったのかな
char=1バイト、char* とか文字列ならどのみちむりぽ
クラスなら init() とかつくるパターンよくみる
class A
コンストラクタ{ init() }
init(){ 文字=””; }
どこで聞こうかここで聞いてみる C++Builder6で WTLって動かせますか?(Windows Template Library) たしかビルダー内に古いATLが入ってたけど、なんかエラー出たような なんか特殊な設定あれば動くのでしょうか 用途は興味本位です
628 :
622 :2006/08/27(日) 10:31:29
>>625 >>626 いろいろありがとうございます。
memsetのような便利なものがあれば使いたかったのです。
""で初期化したいAnsiStringが数十個ありますので。
けど、関数を使うにしろ、プログラムを書くときには
1つ1つ「AnsiString=""」を記述しないといけないみたいですね。
記述が面倒なだけなら 初期化済みの静的なデータを用意しておいて それをコピーするという手もあるけどな。 見た目が一行になるだけで、内部ではコピーコンストラクタが呼ばれてるから 実行コスト的には特にメリットは無いけど メンバを増やした時にコード追加を忘れる危険が少しは減るかもね。
>>627 BDS2006ではVC++が受け付けてbccが弾く部分をいくつか(結構あったがw)コメントアウトしたら動いたんで
がんばればいけるんじゃないか?
>>628 AnsiStringを数十個もメンバにするならTStringListとか
std::vector<AnsiString>とか使うことを考えたら?
それなら一遍にclear()できる
632 :
622 :2006/08/27(日) 17:37:02
>>629 ありがとうございます。その方法ならメンバを気にしなくていいですし、
記述も簡単になりますね。そうさせていただきます。
余談ですが、AnsiStringがNULLの場合って、
printf("%s",AnsiStaring)とすると、空白が出力されるのではなくて
(NULL)が出力されてしまうんですね。初めて知りました。。。
>>631 キレイな記述方法ですね。ありがとうございます。
今回は、1つ1つのメンバにわかりやすい名前をつけてますので、
>>629 さんのやり方で記述したいと思います。
printfの%sにAnsiStringそのもののインスタンス突っ込んで大丈夫だっけ? c_str()呼ばないとダメなはずだが‥‥
634 :
622 :2006/08/27(日) 18:10:40
>>633 自分の理解不足が情けないです。いろいろありがとうございます。
c_str()を使用するようにしました。
そうしたら、NULLは空白になりました。
char/NULL式の文字列の汚点は、 文字が長くなる度に処理のオーバーヘッドヘッドが増えることだお。 (ペンキ塗りの笑い話があるおね) だから、memset/NULLをやめてサイズを0(""を代入するとサイズ0になる。Clearメソッドもあったと思う)の方が正しい。 もう一つ関係無い事を書いとくと意味的にはNULLはポインタであり、memset/NULLよりmemset/0の方が正しい。
「AnsiStringがNULL」って表現が気になるのは重箱の隅?
null
ぬるぽ
つーか、構造体をmemsetで初期化ってのは、Cまでの話、と考えたほうがいいんじゃね?
せっかく構造体でもコンストラクタ使えるのにな
コンストラクタ使った時点でPODではなくなり、クラスに なってしまわないか?
unionのメンバーにもできなくなるしな。
>638 ガッガッガッガッガッガッガッガッガッガッ
644 :
デフォルトの名無しさん :2006/08/29(火) 17:58:56
paradoxデータベースを使って俺のチラシの裏ソフト作ってるんですが、 書式付きメモ型のデータフィールドは検索できないのですか? paradox固有の限界ですか? それともデータベースはBLOBデータは検索してくれないという事ですか?
>>644 うるっせーな何回聞けば気が済むんだカス。
誰も答えてないからこれ以上質問すんな。マルチもするな。
646 :
644 :2006/08/30(水) 04:07:59
647 :
デフォルトの名無しさん :2006/08/31(木) 20:59:25
TDBGridの任意の行を削除(データベースには変更を加えない)するにはどうしたら良いですしょうか?
>>647 つか、どのデータセット使ってんのかな・・・
それ書いてくんないとな・・
なんか、解決するまで、10往復ぐらいしそうだな・・
面倒くせぇ。
649 :
647 :2006/09/01(金) 02:10:20
TQueryです^∀^
651 :
647 :2006/09/02(土) 08:25:58
>>650 消したいレコードをFilterプロパティにFieldByNameで一意のキーコードをNOTで書き足してやれば
消せる事が判明しました事を報告しておきます。
情報ありがとうございました。
652 :
デフォルトの名無しさん :2006/09/04(月) 15:35:39
質問させてください。 下の様なプロジェクトがあり、 Project1.Unit1からProject2.Unit2を呼び出す場合(.Show)、どの様なコード、又はを書けばよいのでしょうか? 超初心者スレで質問した際、フック、メッセージ、プロセスを使わなければ出来ない、と聞きました。 もう少し詳しい流れだけでもご存知の方いましたら教えていただきたい! #include "Unit3.h"をしただけでは「未解決の外部参照'_Form2'がC:\\~~から参照されました。」とエラーが出てしまいます。 ProjectGroup1 +-Project1.exe |├Project1.cpp |├Project1.res |+-Unit1.cpp |├Unit1.cpp |├Unit1.dfm |└Unit1.h +-Project2.exe ├Project2.cpp ├Project2.res +-Unit2.cpp ├Unit2.cpp ├Unit2.dfm └Unit2.h
Unit3.hがねーのに未解決の外部参照_Form2が出るわけねーだろ! フックメッセージプロセスでググレカス Form2つじゃダメなのか? 根本的に分かってないような希ガス。 超初心者板に(・∀・)カエレ!!
654 :
652 :2006/09/04(月) 17:07:05
(・∀・)<・・・ ×Unit3.h ○Unit2.h 更には exe二つではなく、 Pj1.exe Pj2.dll でした。 pj1.exe内のフォームから、手作りDLLのpj2.dll内の関数を呼ぶにはどうすればいいのか? オプションのリンカ等のプロパティ設定で解決するものなのか否か・・・。
話が違うじゃねーか!
Unit2の関数を呼び出すのと、Unit2内のTForm2のメソッドを呼び出すのでは全く話が違ってくるのだが。 >オプションのリンカ等のプロパティ設定で解決するものなのか否か・・・。 それは関係ない。
>>655 pj2.dllをIMPLIBに掛けて、吐いたLIBをリンクしろ。
>>652 単にDLLの呼び方がわからないってことじゃん。
自分が何がわからないのかをわかっていないな。
レベル的には超初心者だな。
DLLの使い方をググるなりして勉強すれ。
カットシステム Vol2をお薦めする。
661 :
デフォルトの名無しさん :2006/09/05(火) 05:58:00
現在Delphi使いですが、これからC++Builderの学習をしようと思っています。 Delphiでは「Delphi 6 プログラミングバイブル」という名著がありますが、 これに匹敵するC++Builderの良い参考書はないでしょうか? ご教授をよろしくお願いいたします。
>>661 >>660 のカットシステムのシリーズしかない。
むしろDelphi使えるんならあえてBuilder本は必要ない。
EffectiveCとかSTL本とかC言語辞典とかそいうC言語関連書籍をお薦めする。
Delphiと違ってC言語は覚えておいた方が良いことが多すぎ。
ソースの記述方法も人によって全然変わってくる。
663 :
デフォルトの名無しさん :2006/09/06(水) 08:42:06
新しい TurboC++ Explorerを使ってみた感想
(オレは昔のC++Builderしか知らないし、
まだ2時間も使ってないから、かなり間違ってるかもしれん。)
コードエディタの機能には
ifやforを入力するだけで自動的に残りが生成される。
あるコードを選択して”囲む”をすると、forやtry文などを作れる。
ブロックの自動補完 折りたたみ などがあった
リファクタリングは名前の変更だけのようだ
操作方法はほとんど変わってない
コンポーネント数は多いが
ExplorerではIndyは無いみたいだ。
ActiveXは作れない
サードパーティーのコンポーネントは追加できない
新しいコンポーネントは
TTrayIcon TGridPanel TFlowPanel らしい
しかし、実際に使った感じはかなり好印象を持った
(あまり期待してなかったからかも知れないが)
コードエディタの機能は気に入ったよ
http://www.turboexplorer.com/homepage
664 :
デフォルトの名無しさん :2006/09/06(水) 11:50:48
VBのChrやAscのように Asc("あ") だと -32096 Chr(-32096) だと"あ"を返す文字変換関数ってBCBで作れますか?
666 :
デフォルトの名無しさん :2006/09/06(水) 13:35:14
どなたか、テンプレに入ってた
<<有料>>
TMS Component Studio
http://www.tmssoftware.com/ の、StringGrid、ColumnGridに詳しい人or日本語サイト知ってる方いませんか?
ぐぐってもろくに出てこない・・・。
ヘルプがうんこすぎて、何も説明が書いてないメンバありまくりで困っています。
Turbo C++のPascalコンパイラはまだまだだな 内部エラーが出るpasファイルが出まくる。
Turbo C++入れてみたんですけど VCLフォームアプリケーションとSDI・MDIフォームアプリケーションの違いって何ですか?
670 :
デフォルトの名無しさん :2006/09/06(水) 20:02:56
仕事の都合で VC++ .NET 2003 でコンパイルできてたのを Borland C++ Builder 5.0 でコンパイルできるようにすることになりまつた。 でも、SSE,SSE2の命令をつかっていて、そこでアセンブルできなくて死にそうです。 Borland C++ Builder 5.0で SSE2 の命令が通るようになる方法は あるでしょうか? よろしくおねがいいたします。
671 :
デフォルトの名無しさん :2006/09/06(水) 21:29:13
TMediaPlayerでogg形式の圧縮音楽ファイルを再生する方法を指南下さい。
672 :
本田 :2006/09/06(水) 22:50:18
てかBCBにTASMのマニュアルがないのは‥‥
674 :
デフォルトの名無しさん :2006/09/07(木) 04:37:02
>>672 ありがとうございます。
NASMとの組み合わせでは、インラインアセンブラはできないみたいです。
厳しい・・・
675 :
デフォルトの名無しさん :2006/09/07(木) 04:58:15
paradoxでTQueryなんですが、 SQLのWHERE句と、Filterプロパティの同時利用は出来ないのですか?
676 :
デフォルトの名無しさん :2006/09/07(木) 05:15:19
677 :
デフォルトの名無しさん :2006/09/07(木) 05:17:16
>>666 こんなのあったんだ
Office2007風のコンポとかあるし
わー、すげえw
678 :
デフォルトの名無しさん :2006/09/07(木) 07:52:32
見た目なんて飾りです偉い人にはそれが分からんのです
結局なんだ Turboシリーズ複数言語を同時インストールできないと Delphiも使いたいヤツはBDS買えと そういうことですか それにしてはUpgrade価格28000円はBDSの時の値段考えると……
やってしもうた・・・ VS2003→VS2005に完全移行 VS2003をアンインストールしてから気がついた .NET1.x向けアプリのメンテができないってどういうことよ('A`) こんな別物なら製品名変えてくれよも後の祭りorz
>>681 馬鹿?
当分の間、古い開発環境も残すのは常識じゃん。
V$系はバージョン違いを共存できないっしょ。
>>670 すでにSSE/SSE2処理関数が完成してて今後メンテナンスする必要がないのなら、応急処置として __emit を使う手もある。
簡単に言うとasm文の中に任意のバイナリコード(アセンブル後のコード)を埋め込んでしまう方法。
でも自分ならSSE/SSE2処理関数をDLLに追い出してVC++でコンパイルするかな。
(VisualC++ 2005 Express Editionなら無料だし)
>>681 古い開発環境はVMwareやVirtual PC使ってまるごと保存管理するといいよ。
689 :
本田 :2006/09/08(金) 01:22:23
>>674 >
>>672 > ありがとうございます。
> NASMとの組み合わせでは、インラインアセンブラはできないみたいです。
> 厳しい・・・
インラインアッセンプラを使ってる所から、
SSE,SSE2のニーモニックコードを削除して、
コンパイルできるようにして、
アッセンブリ言語を出力する。
出力されたアッセンブリ言語に、
SSE、SSE2ニーモニックコードを加える、
それをNASMでアッセンブルする。
-Eでmasmなりを指定しても良さそうだし 適当なところに asm include mymacros.inc みたいな感じでも 出来そうな気がするけど。 masmを代替アセンブラとして使えるように アセンブラ出力に ifdef ??version とかが入ってるわけだし。
よーわからん、ターボ君は無料? で、boost使えますか? BCB6なんだが、安いなら自宅用に買うかな
BCBからのバージョンアップは28,000円か
BCBからBDSへは29800円でしたw
695 :
デフォルトの名無しさん :2006/09/09(土) 10:28:38
paradox7なんですが、フィールド名に「1個目」ってのを使ったら SQLの問合せで不具合を生じて困ってます。 SELECT 1個目 FROM mytable; で、結果が 個目 1 1 1 1 1 1 1 ってなってしまいます。 ちゃんと1個目として認識させるにはどうしたらいいのでしょうか?
697 :
695 :2006/09/09(土) 11:50:52
わかりません><
本屋で入門でも買えよ
699 :
デフォルトの名無しさん :2006/09/09(土) 12:30:33
意地悪><。
>>692 サンクス、まず家でやって会社で提案かな〜〜
>>695 SQLはよく知らんが別に結果はそれでいいんじゃないのか?
702 :
695 :2006/09/09(土) 15:41:37
もういいです。>< フィールド名変えました
ネーミングセンスもプログラミングセンスもない香具師だな
フィールド名って最初に数字来てもいいんだっけか?
みんなフィールド名って言うんだな。 ややこしいからカラムで良いじゃん。
列名
707 :
477 :2006/09/10(日) 02:46:06
超初歩的で申し訳ないのですが原因が良く分からないので・・(一部省略してます) [HogeClass.h] #ifndef HogeClassH #define HogeClassH //--------------------------------------------------------------------------- class Hoge{ private: public: Hoge( void ); ~Hoge( void ); } [HogeClass.cpp] //--------------------------------------------------------------------------- #include <vcl.h> #include "HogeClass.h" //--------------------------------------------------------------------------- Hoge::Hoge( void ) { } Hoge::~Hoge( void ) { } コンパイルするとHoge::Hoge( void )のコンストラクタの行で [C++ エラー] HogeClass.cpp(10): E2111 ここでは型 'Hoge' は定義できない [C++ エラー] HogeClass.cpp(10): E2136 コンストラクタには戻り型は指定できない と怒られるのですが、何故なのでしょうか・・orz
708 :
デフォルトの名無しさん :2006/09/10(日) 02:46:39
失礼、名前欄は無視して下さい
void 全部消してごらん
あとヘッダ側の最後の}の後ろに;がないな
>>709-710 ヘッダの最後の;が抜けていたのが原因だったようです
ありがとうございました
メインスレッドから生成したTThreadのクラスに値を渡すのと TThreadのクラスからメインスレッドへ値を返すには具体的にどのようにやればいいのでしょうか? 現在はメインスレッドにpublic変数を定義してTThreadのクラスから参照していますが よくないやり方のような気がしてならないのです
>>712 TThreadを継承したクラスを作ってるはずだからそっちに受け渡し用のメンバ関数を作ればいい。
べつにメイン側にメンバ関数を作ってもいいと思うが。
言うまでもないと思うがスレッド間の同期には気をつけるように。
>>713 レスありがとうございます
試行錯誤してみます
SAFE_DELETE()が定義されていない関数と言われるのですが 何かinclude必要なものありましたっけ?
SAFE_DELETE()が定義されていない関数と言われるのですが 何かinclude必要なものありましたっけ?
全く参考になるサイトがありませんね
一目瞭然ですけど。
721 :
デフォルトの名無しさん :2006/09/11(月) 04:10:35
ほぼ同等の機能を持つモノの単身が28000円 は高杉なんすけど 一度BDS2006であの値段出してるんだから UGは2万円以下にすべき 俺は買わんぞ
BDSの方がお買い得ですかね?
正確に言えば、6月までのBDS優待販売が一番お得だった 今のTurbo Proの値段見たら、Highlanderの発売を待つよな
もともとサードパーティーのコンポーネントは使わないんだよなー そうすると無償版で十分
自作コンポも使えないじゃん。
自作コンポも使わんよ
728 :
デフォルトの名無しさん :2006/09/12(火) 16:09:56
どうでもいいけど、テンプレにある
<<有料>>
TMS Component Studio
http://www.tmssoftware.com/ TAdvStringGrid,TAdvColumnGridは100万行・列まで対応してるらしいぜ!
自pcで試したら、メモリ不足って言われてメイクで落ちたが・・・orz
Turboも使わんよ
BDS2006あるからね。
1行レスの低能アンチさん達乙 Borlandスレのアンチにソックリだが、まさかそこから来たんじゃないよな ま、思考方法が同じなんだと思う もうちょっと中身のある文章書いた方が利口に見えると思うよ
732 :
デフォルトの名無しさん :2006/09/13(水) 06:21:55
AnsiStringのメンバ関数「Format」の使い方がわかりません。 すみませんが、教えていただけないでしょうか? また、このような基本的な事は、どのように調べたらよいのでしょう? (オンラインヘルプでは意味不明なのですが、ふつうそれで 理解できるものなのですか)
>>732 BCB Format でググればいろいろ出てくる。
とりあえず、C/C++屋はAnsiString.spirntf()の方を使えばよい。
でも735は731の3分の1の内容も無いからなぁ。
ゼロの3分の1でもゼロだから、いっしょ
>>735 wwwwww
ワロタwwまた見事に1行レスだよwww
これでオマエがどうして低能って言葉に骨髄反射しちゃう人間なのか 良くわかっちゃたwwwwwww
>おまえは3行書いても中身がないな
いやいや、他人に事実を指摘してあげることは、中身のあることだよ 何を言ってるの?www大丈夫?
リアルで低能なチンカス だったんだね ホントにかわいそうw
うまく切り返したつもりで、自分がゼロって認めちゃった人がいるね。
>>731 はゼロでも3行書いてる分、アホさも3倍だよね
__ __ n _____ _____ ___ ___ ___
| | / / / / / | /__ __/ [][] _| |_| |__ _| |_
| |. / / /⌒ヽ/ / / ̄ ̄|. l / / | _ | |_ レ'~ ̄|
| | / / ( ^ω^ ) / /. / / | |___  ̄| | / / / /| |
| | / / ノ/ / ノ /  ̄ ̄ / \__| | |  ̄ /_ / | |_
| |. / / // / ノ / / ̄ ̄ ̄ |_| |__| \/
| |/ / ⊂( し'./ / /
|. / | ノ' / / ニュー速VIP
| /. し' ./ /
http://ex14.2ch.net/news4vip/  ̄ ̄ ̄  ̄ ̄
相談するだけで叩かれるのを承知でお尋ねします。 *Value++ と (*Value)++は どう違うんでしょうか?
void Loop(int *Value,bool flag) { if (true) *Value++; else *Value--; *value=0; } をi=0;Loop(&i,true);で呼び出してみ?
あ、引数flag関係なかった。 void Loop(int *Value);だけでいいや。
>>742 まあ、基本的に、
*Value++
なんて他の人がわかりづらいかもしれないコードは書いちゃだめだよな
なんとなく、ストアと同時にインデックスレジスタをインクリメントしてくれる気がするから *p++ という表現は嫌いじゃないな。
void strcpy(char *src, char *dst) { while(*dst++ = *src++); }
バッファオーバーラン一直線
751 :
デフォルトの名無しさん :2006/09/15(金) 10:20:31
>>748 これってどうなったらwhileから抜けるの?
>>751 あのwhile文を意訳すると、
if ( 偶然一致 || GPフォルト )
という文になる。
753 :
デフォルトの名無しさん :2006/09/15(金) 13:36:59
>>752 アレ?代入って偽になることあるんですか?
偶然一致って? 評価されるのは *dst でこいつが0(偽)になったら終了っていいうループでないの?
結局、 *Value++ なんて書くと混乱させまくるということが証明されちゃったなw
>>748 これ、K&R(これが発祥地だが)でも禿本でも普通に使われているんだよな。
わかってる人間にとっては簡潔で可読性の高い表記なんだ.が。
>>753 代入式は代入後の左辺値が評価される
これが分からないと
void __fastcall TForm1::Button1Click(TObject *Sender) {
if ( TButton* p = dynamic_cast<TButton*>( Sender ) { ... }
}
こういうBCBの定石も使えない
エラー E2377: If文に ) がない(関数 _fastcall TForm1::Button1Click(TObje ct *) )
>>751 NULL文字をコピーした時点。(文字列をコピーし終わったら)
>>748 の場合、whileで評価されるのは *dst
NULL文字は0x00だから、falseになる。
ポインタ以外にNULLという表現を使うなんちゃって野郎が居るから 初心者がさらに混乱する
NULL(ぬるぽ) と '\0'(ぬるこーど) の違いを分かってない香具師多いよね っつーか「ぬる」っつーのも誤読だ死ね
>>760 ポインタを値と考えると、NULLは0以外のなにものでもないから、あながち間違いでもないけどな
VC6でDLLを作成してそれをC++Builder4で使おうとしています。 色々調べたのですが、まずは簡単な 変数:nPCLIB 関数:fnPCLIB() 関数と変数が入ったDLLを作ろうと思い、次のことを試しました。 1.VCでDLLを作成 ・作ったDLLのdumpbin結果 1 0 00001005 ?fnPCLIB@@YAHXZ 2 1 00032A78 ?nPCLIB@@3HA →修飾された関数・変数名がEXPORTされている 2.impdefで1.で作ったdllからdefファイルを作成する ・defの中身を見ると LIBRARY PCLIB.DLL EXPORTS ?fnPCLIB@@YAHXZ @1 ?nPCLIB@@3HA @2 →当然defファイルを作るとDLLと同様に修飾されている
3.defファイルの修飾を外してVCに追加し、DLLを再ビルドする ・defの中身(修正後) LIBRARY PCLIB.DLL EXPORTS fnPCLIB ←修飾を外したつもり nPCLIB ・新DLLのdumplib結果 1 0 00001005 fnPCLIB 2 1 00032A78 nPCLIB →修飾が外れているように見える 4.implibで3.のdllからBuilder用のlibファイルを作る ちなみに3.のdllからもう一度defを作ると、中身は LIBRARY PCLIB.DLL EXPORTS fnPCLIB @1 nPCLIB @2 →??また修飾(序数)がついてる??
5.Builderでヘッダーをincludeし、3.のdllをコピーしてきて、 4.のlibファイルをプロジェクトに追加してビルドする ヘッダーの中身 #ifdef PCLIB_EXPORTS #define PCLIB_API __declspec(dllexport) #else #define PCLIB_API __declspec(dllimport) #endif extern PCLIB_API int nPCLIB; PCLIB_API int fnPCLIB(void); →名前解決ができていない!と怒られる DLL内の関数名が修飾されたままで一致しないのが原因かと思っているのですが、 defファイルを直してもまた戻ってしまうようでどうすればよいか行き詰ってしまいました。 長い上に詳しい方から見ればアホな質問かもしれませんが、ずっと悩んでます。 ヒントでもいただければとてもうれしいです。
「だから何なのか」を書かないのは 無関係な引用でハッタリかます時の基本だね。
だから何なのか
だから「バカは有名なC FAQすら知らない」ということがわかる。
>>764 extern "C" とimplib(必要なら-a付き)じゃ駄目なのか?
何がだからなのか
それがどうしたの?
いやまあ、バカがバカさ加減を晒すのは自由だしね。 ここは2chだし。
こうしたの。
>>765 それはNULLマクロを、ポインタ以外へ使うなって事でしょ。
"NULL文字"って言葉を使うなって意味じゃないよ。
'\0'の、一般的な呼び方だよ。
その"NULL文字"って言葉を使っているのが、「わかってない証拠」だよ。 '\0'はNULであって、NULLではないよ。
なんで ぬるぽ のことになるとみんなむきになるのかな
char *p; p = NULL; // OK p = '\0'; // bad *p = '\0'; // OK *p = NULL; // bad
>>775 宗教論争はどさくさ紛れに馬鹿でもそれっぽく参加できるからね。
NULLに関しては宗教論争じゃなくて、理解しているかいないかの違いだけだがな。
C++ビルダー6でさ、XP風のボタンにすることできますか? デフォでは四角い3Dボタンじゃなく、白くてカーソル当てたら周りがオレンジになるボタン Jediコンポーネントはあるが、ボタンのためにEXEがでかくなりすぎる そのまんまのBCB6でできるのかな?
>>779 うん、そういう「設定」で参入してるんだろうなぁってのは容易に想像がつく。
↑こういうのを、どさくさ紛れに参加してる馬鹿って言うんだよね。
↑こういうのもね
>>777 本来はその通りなんだよね。
・NULLは空の意味(内部表現で値0を使う)
・\0は全bitが0のコード
・0は整数値としてのゼロ
C言語を高級アセンブラとしてしか見ない人には
意味的にも、NULLと\0と0は一緒だとしてしまう。
>>786 むしろ、C言語を高級アセンブラとしても見られる人が、
意味的にも、NULLと\0と0は一緒だと思うことができている、だと思うんだが。
難易度はそっちのほうが難しいし。
そーゆー、学習しづらい値と参照の境界をわかりやすくすっぱり分けたのがJAVAとかだろ。
どう見ても、区別がついてない人が暴れていただけです。 連休だしね。
789 :
デフォルトの名無しさん :2006/09/18(月) 11:01:25
結局、NULLと¥0と0は同じものって結論なの? ¥0と0はメモリーブロックにあり0x00て値が入っているってことでなんとなく 納得がいきそうだけど、NULLはどうなの?メモリーに存在しているの?関数とかで該当があれば該当があるポインタを返し、なければNULLを返すってものがあるからNULLって数値(ポインタ)がありNULLが指す値がありそうな気がするけど。
790 :
デフォルトの名無しさん :2006/09/18(月) 11:10:12
789続き
>>777 の方法で(pはint型だからp='¥0' ’char型’だから代入できない)
p=0;
printf("%c",*p);
p=NULL;
printf("%c",*p);
はコンパイルできないで、わかる人だれか押しえてください。
そういえばNULLって使ったことないや。
#define NULL <either 0, 0L, or (void *)0> [0 in C++] どう見ても宗教論争です。本当に有り難うございました。
論争中もうしわけないんですが、VirtualTreeViewがgemから落とせません。 なくなってしまったのでしょうか?
どいつもちゃんと回答できないようだね。 知ったかぶりして毒はいてるだけじゃん。 *p++と(*p++)の違いが、説明できてない。 VCだと変わんないんだよ実際。
>>795 皆わかってるから。出しゃばんなさんな厨。
>>795 >*p++と(*p++)の違いが、説明できてない。
誰もそんなこと問題にしていない
いや、ちょっとまて >*p++と(*p++)の違い 違わんだろ、これはw
吹いた
要するにBCBだと違うと言いたいのだろう。
803 :
795 :2006/09/18(月) 18:34:14
>799 すまん間違えた。 (*p)++だ
一瞬、「NULLと'\0'の違いなんて、*p++と(*p++)の違いと同じ」と言ってるのかと思ったが 本当にろくな知識がないまま適当なこと言ってバカ晒してるだけみたいだね。
805 :
795 :2006/09/18(月) 18:36:40
806 :
795 :2006/09/18(月) 18:38:28
>>804 俺が悪かったから、もう勘弁してくれ。
ただ、ちゃんと説明しろよ。
たとえ*p++と(*p)++が違うということを言っているのだとしても そんなのNULLと全然関係ないんですけど。 どういう思考回路でそんな話になるのか理解できないね。 とりあえずC FAQを一通り読んでから、偉そうなこといいなよ。
808 :
795 :2006/09/18(月) 18:45:15
NULLの話なんて一切してませんけど?
どっからその「誰もしていない*p++の話」が沸いて出たの?
そりゃ、
>>795 の言うように*p++と(*p)++の違いなんて誰も説明出来てないよ。
だって誰も説明してないし。
何故なら誰も質問してないし、誰も話題に出してないから。
あ、もしかして
>>806 は、自身が質問してるの?
811 :
795 :2006/09/18(月) 19:01:25
>>742 を実際にやってみて、おかしくなったから。
BDS2006です。BCB6とかはやってないけど。
んで、その後のレスがなんの解決にもなってなかったから。
んで、読み返して終わってるのに気付いて、805の発言。
ただ、解ってるんだったら、毒じゃなくてきちんと説明しろよと。
要するに毒吐いている奴は無知なくせに他人を攻撃してるだけ。
だから無知じゃないんだったらちゃんと説明できるでしょ?
いや、それはさすがにどんな入門書にも書いてあるでしょうが、 前者は、Valueの中身を参照してから、Valueを+1する 後者はValueの中身を+1する 自分でもどれほどバカな質問か つまり、ちょっと調べるだけですぐわかる質問である、ということを わかっているみたいだけど
>>811 すでに答えがあるじゃん
>>801 これ見て意味がわからなかったら、それはC/C++を一から勉強しなおすしかない
それはスレ違いの話題だから続けるなら適当なスレに移動すべし
815 :
795 :2006/09/18(月) 19:16:09
>>812 待ってました。マトモな意見。
ただ、引数しか触ってないんですよね。代入文の右辺がp*++です。
>>744 だと、
何故、条件文が無いと上手く動くのかも不明なんですけど。
trueもfalseも無視して、関数全体の記述が全て無効になるのかも。
816 :
812 :2006/09/18(月) 19:23:00
「まともな」って、おまえの頭、ほんとにお花畑だな。 794までの20レスくらいの流れのなかで、おまえが742だとわかる人が おまえ以外に何人いると思ってるんだよ。 世界が自分中心に回ってるみたいでうらやましいよ。 自分がどんなコードを書いたか、どんな引数を渡したか まだまだエスパー募集中ですか?
「マトモな意見」と言うわりには、その「マトモな意見」の内容を 理解しようとはしないんだなw
818 :
795 :2006/09/18(月) 19:32:39
742じゃないんですけどね。
いや、ちゃんと答えようとしていた人があなただけだったんで。
実際には
>>813 のところを反芻して解ったんですけどね。
>>813 の人ありがとうございました。
ここって相談とかする場所ですね?知識のない人を攻撃する場所
だと思ったんですが。
まぁ2Chってそういう場所だって事はわかってるけどね。
まぁ、他人を攻撃して優越感に浸りたいだけなんだろうが、
自己解決したんでもういいです。
819 :
デフォルトの名無しさん :2006/09/18(月) 19:36:28
812がキチンと説明できてるとは到底思えぬ。
820 :
デフォルトの名無しさん :2006/09/18(月) 19:37:36
あと、795も本嫁。
821 :
812 :2006/09/18(月) 19:39:40
一応書いとくけど、
>>804 や
>>810 とか、もちろん
>>813 も俺だから。
たとえおまえが742本人でないとしても、
他の人には
>>795 と
>>742 の関係なんか全然わからないのだから
おまえが「他の人には見えないものが見えている」のは間違いないよ。
そもそもここはC++Builderの相談室なんだけどな
823 :
795 :2006/09/18(月) 19:48:51
解ったらもういいや。 はい、ごくろうさん。
日頃の生活の中にプライドの満たされ所を一切持たないまぬけほど、 こういう場所でその分を取り返そうとして「絶対引かない」姿勢を見せるんですよ。 そうなったらもはや、スレの主旨なんておかましなしなわけです。 まぬけですからね。
825 :
デフォルトの名無しさん :2006/09/18(月) 19:56:40
いや、ちょっとまて... if (true) *i++; else *i--; これ両方無視されるぞ? iは使われてませんとか言われるし、やっぱり変じゃない?
ほかの変数との絡みのない変数は使われていないも同然だからです。
827 :
795 :2006/09/18(月) 20:06:08
>>823 こういう輩もいるわけで...
812と813が同じ人だったらスミマセンでした。
メソッド内でTStringListを使うとき TStringList *HogeList = new TStringList() try{ } __finally{ delete HogeList; } という感じで記述しますが、 HogeListを同クラス内の各メソッド間で自由に参照するには どこでどのように記述すれば良いのでしょうか? ヘッダーのprivateでTStringList *HogeList; クラスのコンストラクタでnew、デストラクタでdelete 適当なメソッド内でHogeListの操作を行うように記述してみた所 コンパイルは通るのですが、 実行するとHogeListを参照する所でEConvertErrorが発生しました。
気になってやってみたけど、まぁやってみてよ。
>>742 の人が書いている
>void Loop(int *Value,bool flag)
>{
>if (flag) *Value++; else *Value--;
>*value=0;
>}
をi=0;Loop(&i,true);で呼び出してみ?
で、ifの行を抜けば、0が帰る。
ifがあるおかげで、0も戻らないというのはどういう仕組みだ?
*value=0; はどこ行った?
まさか、変な事をした時点でreturnのコードを勝手に作るとか?
これって、
>>826 とか、*p++と(*p)++がどうとか関係ないよね。
>>829 if文の行でポインタ自身の値がどうなるか
考えてみたか?
>>829 結局
>>812-813 が全然理解できてないんじゃん
あ、また自称別人かw
なお、void Loop()に戻り値があるわけない
帰るとか戻るとか訳のわからんことを言うな
結論としては、 他人が見る可能性のあるコードは、 十二部にかっこをつけるなりしてわかりやすいコードにしろということだな。
十二部ってなに?
十二分でした 失敬失敬
そろそろ他所でやってくんない?
>>828 そら
>実行するとHogeListを参照する所でEConvertErrorが発生しました。
そこんとこでだめなことしてるんでそ
わかんなきゃそこんとこのソースさらすこと
>>836 大体こんな感じです
class Hoge{
private: TStringList *HogeList;
}
---
void Hoge::Hoge(){
TStringList *HogeList = new TStringList();
}
void Hoge::~Hoge(){
delete HogeList;
}
void Hoge::AddStr(){
HogeList->Add("TEST"); // ここで EConvertError, 「書式文字列"%s"は正しくないか引数の型と一致しません」
}
:
:
HogeList->Add(AnsiString("TEST"));
>>838 それでもやはり例外が出ました。
うーん何がいけないのだろう(;´Д`)
今、手元にBCBが無いのでなんとも言えないんですが、 TStringListとAdd(AnsiString); の間にもういっちょ何か要るって事はない? 例えば、ImageとPenの間にCanvasが無いみたいな。 (これはコンパイラ通らないけど)
単に文字列をAddするだけなら TStringList->Add(AnsiString);
newされる前にAddしてるんじゃないのか?
そもそもそこでEConvertError例外が来ることが信じられない
844 :
837 :2006/09/19(火) 21:17:10
信じられないかもしれませんが実際起こってます。 まともに動くものが作れる方がいましたら書いていただけないでしょうか?
他人デバッグ
Hoge::Hoge() コンストラクタの HogeList 変数はメンバーじゃないのでは
>>837 >大体こんな感じです
エラーが起きたコードをそのまま張れヴォケ
>HogeList->Add("TEST"); // ここで EConvertError, 「書式文字列"%s"は正しくないか引数の型と一致しません」
どこに書式文字列がある?
書式文字列のある、ConvertErrorをおこしたそのコードをさらせこの池沼
>>847 それは賛否両論だし。わざわざ他人にも解りやすく要点をまとめてくれるんだろうに。
お前のような慇懃無礼なヤシに教わろうとも思ってないだろう。
書式文字列なんて書いていないのに、そのエラーが戻ってきてるんでしょ。
再現する最小限のコード これが大切。
>慇懃無礼
>>850 なんですかその
カチンと来たけどケチつける口実思いつかないから
その肝心のこじつけを人任せにする負け犬っぷりわ
慇懃無礼は目も当てられないほどの甚だしい誤用だけども、
>>847 が慇懃でかつ無礼であるのは、言いえて妙かもしれんw
853 :
837 :2006/09/20(水) 01:17:34
>>853 警告読もうぜw
ついでに 846 も読んであげるといいと思うけど。
>>837 の方のソースでいくよ
>void Hoge::Hoge(){
>TStringList *HogeList = new TStringList();
ここで新たにTStringList* HogeListを定義してしまっている
これはHogeのメンバであるHogeListとは別の変数として定義されている
Hoge::HogeListを初期化するなら
HogeList = new TStringList;
でないとダメ
Hoge::HogeListが初期化されてないからそれを参照しようとするとエラーが発生する
しかしEConvertErrorではないはずだが?
EConvertErrorを起こしているのは別のところだよ
それはその部分のソースを提示してくれないと判断できない。
あと、エラーとは直接関係ないが、
>void Hoge::Hoge(){
なんでコンストラクタに戻り値が?
857 :
856 :2006/09/20(水) 01:39:34
かぶったか
858 :
856 :2006/09/20(水) 01:42:57
つっこまれるまえに ×なんでコンストラクタに戻り値が? ○なんでコンストラクタにvoidを明示する?
まあ、原因がぬるぽだという事がわかってよかったね(^^)
860 :
837 :2006/09/20(水) 01:48:50
お蔭様で解決できました。
>>void Hoge::Hoge(){
>なんでコンストラクタに戻り値が?
こちらの表記ミスです。
ちなみに先ほど新たに1から書き直したものが
>>853 です
>しかしEConvertErrorではないはずだが?
私の環境ではAdd関数を行うメソッド(AddStr())(
>>853 ではButton1Click)を呼ぶまでは問題なく
呼んだ瞬間に間違いなくEConvertErrorが出ています。
指摘して頂いた
TStringList *HogeList = new TStringList();
を
HogeList = new TStringList;
に書き換えた所問題なく動作しました。
レス下さった方、長々とお付き合いありがとうございました。
他人デバッグ
しばらくは this->HogeList = ... とか書いた方がいいんじゃねーの?ww 実際、こう書く奴がいてさ、this->m_str ってアホかwとか思った。
補完がきくから、長いメンバー変数の入力が楽、という利点はあるので、 馬鹿にするだけのものではないと思うが。
人のことアホっていう奴がアホって、おばあちゃんが言ってました。 ちなみに、関西では褒め言葉。
865 :
862 :2006/09/20(水) 18:41:36
ああすまん、m_ のプレフィクスと this-> の併用がおかしくてな。 話が通じないほど端折り過ぎた事は認める。 this-> つけるのは、俺は冗長だと思うから皮肉で言ったのだが、そういう利点もあるなら、記憶クラスも分かってない奴ようなにはお勧めなのかもな。
ファイルのタイムスタンプを調べるためにFindFirst()を使っているのですが 返される値の読み方がよくわかりません。 AnsiString ReturnTimeStamp(AnsiString Path){ if ( FindFirst( Path, faAnyFile, sr) == 0 ) { return sr.Time; }else{ return "FileNotFound"; } } 例えば8月29日6:26のファイルの場合891106163と返されます。 ヘルプを見ても検索してもいまいち参考になるものが見つからなかったのでご教授よろしくお願いします。
↑ TSearchRec sr; が抜けてました
さらに修正申し訳ない sr.Timeは整数値ですね・・ × AnsiString ReturnTimeStamp(AnsiString Path){ ○ int ReturnTimeStamp(AnsiString Path){ × return "FileNotFound"; ○ return 0;
>>866 FileDateToDateTime で変換する
>>866 WindowsAPIのFindFirstFile使う手も
こっちは2GBオーバーの巨大ファイルのサイズもきちんと取れる。
タイムスタンプはFileTimeToSystemTimeでSYSTEMTIMEに変換すれば簡単に取れる。
>>869-870 なるほど、参考になりました。
あと、
>>866 のはFileCloseもしなきゃいけませんね・・
ありがとうございました。
FindFirst()でも2G超ファイルサイズは取れるけどね。
873 :
本田 :2006/09/21(木) 06:56:21
どう考えても C++ではvoid *をキャストなしで他のポインタに代入できないから が、圧倒的に最大の理由だけど。
TMemoなどにUnicodeを表示させるにはどうすればいいのでしょうか?
877 :
デフォルトの名無しさん :2006/09/21(木) 16:37:23
なんか30分毎くらいの感覚で素人に、いちゃもんつけてる奴がいるな。 無職で暇なんだろうが、楽しいか? 内容も薄っぺらいしwwwwwwwwwwww
878 :
デフォルトの名無しさん :2006/09/21(木) 17:38:17
痛いよ
>>876 Japaneseが文字化けしちゃってますけど・・・
>>879 バグ報告は開発元に。
ソースはあるから自分だけこっそり直すことも可。
>>879 間違えて中文コピペったに1GUNGLA
882 :
780 :2006/09/23(土) 02:14:25
883 :
デフォルトの名無しさん :2006/09/24(日) 23:59:22
BCBやらDELPHI使ってる奴って、仕事で使えないんだけど。 こいつら、ほんと困るんだよね。
いや、俺のことだが。
いやいや、俺のことだ。
以上、リストラ組の煽りですた。
まてまてー!俺を忘れてもらっちゃこまる!
601 名前:デフォルトの名無しさん[] 投稿日:2006/09/24(日) 23:55:30 自分が調べたいことをパラパラと探せないし、 かといって、ろくなこと書いてないし、サンプルもないし。 書店で本をみればロクなこと書いてないワリにめちゃめちゃ高いし、 やっぱVCのほうがいいっすよ。 本なんて買わなくても周りに知ってる人がいくらでもいるし。 BCBはね、DELPHIやってる人のほうが詳しかったりして。 なんで今更PASCALやらDELPHI固めのGUI操作を覚えねばならぬ。
スレ違い
891 :
デフォルトの名無しさん :2006/09/25(月) 22:46:09
スレ違い(ウザ)*
895 :
デフォルトの名無しさん :2006/09/26(火) 14:08:23
BCB5でAVIファイルを再生してForm内のPanel1(TImageも可)に表示したいのですが、 put_Owner()がエラーとなってActiveMovie Window内に表示されます。 TPanel *Panel1 HRESULThRslt; IGraphBuilder*pGrph; IMediaControl*pMdaCtrl; IVideoWindow *pVideoWin; CoCreateInstance( CLSID_FilterGraph, NULL, CLSCTX_INPROC, IID_IGraphBuilder, (LPVOID *)&pGrph ); hRslt = pGrph->QueryInterface( IID_IMediaControl, (void **)&pMdaCtrl ); hRslt = pGrph->QueryInterface( IID_IVideoWindow, (void **)&pVideoWin ); hRslt = pVideoWin->put_Owner((OAHWND)Panel1->Handle); エラーコードをWinError.hで調べてみると // MessageId: E_NOINTERFACE // // MessageText: // // No such interface supported // #define E_NOINTERFACE _HRESULT_TYPEDEF_(0x80004002L) でした。 我が師よ、どうコーディングすれば良いのでしょうか?
>>895 IVideoWindow::put_Ownerの前にIGraphBuilder::RenderFile()呼ばないとダメだったかもしらん。
自作コンポは先にRenderFileやってた。
897 :
デフォルトの名無しさん :2006/09/26(火) 15:08:52
895です。
>>896 師の教えにより、困難を克服致しました。896万歳!
>>897 mp3ファイルとかだったりするとビデオレンダラ生成しようがないからね
899 :
デフォルトの名無しさん :2006/09/27(水) 11:21:15
ListViewのMouseUpイベントなんですが、左ボタンだとちゃんとイベントに来るのですが 右ボタンだとクリックならイベントが来なくてダブルクリックだとイベントがきます。 これは何が原因なのでしょうか?
900 :
デフォルトの名無しさん :2006/09/27(水) 22:32:36
BCBだから
902 :
デフォルトの名無しさん :2006/09/27(水) 22:44:33
いやBCBだから。 TPanel->Autosize=true;みたいな感じだから。
904 :
デフォルトの名無しさん :2006/09/28(木) 10:48:58
>>903 やっぱこれバグかー
ちなみにBCB5なんだけどそれ以降のバージョンでもダメか?
905 :
デフォルトの名無しさん :2006/09/28(木) 11:57:20
ListViewの現在のカーソル位置(四角の点線)のインデックスを取得する方法を教えてください
>>899 どういう意味?
右のシングルクリックだとイベントが来ないってことか?
それだったらウチは問題ないぞ?
>>899 ListViewのアイテム上で右クリックしてもOnMouseUpに飛んで来ないのは
コンテキストメニュー(ポップアップメニュー)を出すため。
なのでOnContextPopupで待つといいよ。
>>905 ListView->SelectedやListView->GetItemAt()でListItemを取得して
ListView->Items->IndexOf()使えばインデクス取れるよ。
複数のアイテムの選択を有効にしている場合は、各アイテムのSelectedプロパティを見てください。
for( int i = 0; i < ListView->Items->Count; i++ ){
if( ListView->Items->Item[ i ]->Selected ){
以下略
908 :
デフォルトの名無しさん :2006/09/28(木) 15:42:47
>>906 え?マジですか?右のシングルクリックでこないんですよー
でも、右クリしてから離すときにマウスを移動して離すとなぜかくるんですよね。
>>907 神様ありがとうございます!!
それは全く気が付きませんでした。
それでIndexの話なのですが、マルチセレクトをしているのですが
それで複数選択してる最中にCtrlを押しながら矢印キーでカーソル移動できますが
このときに移動しているIndexはSelectedになっていなかったものですから・・
ちなみに、選択されている行で右クリしてもMouseUpのイベントは入ってくれませんでした
>>906 それは項目を選択してないから
項目が選択された状態ならOnContextPopupに飛ぶ
あとBDSでも同じ動作だった
>>909 ホ、ホンマやー!右でMouseUpって使ったことないから盲点だった
911 :
907 :2006/09/28(木) 21:17:29
>>908 あの書き込み程度で~扱いとは大袈裟な。w
選択されたアイテムではなくフォーカスのあるアイテムなら
ListView->ItemFocused で取得できるので、これを
ListView->Items->IndexOf()に渡してインデクスを取得するといいよ。
実行ファイル名にプロジェクト名とは別の名前を付けたいのですが、 設定場所が見つかりません。 ご存知の方いらしたら教えて下さい。
913 :
デフォルトの名無しさん :2006/09/29(金) 00:11:43
914 :
912 :2006/09/29(金) 00:30:55
>>913 バージョンは6.0 Professionalにアップデートパック 4です。
プロジェクト->オプションソースの編集でそれらしきところ(PROJECT value)を書き換えても
変わりませんでした。
>>914 プロジェクトファイルの<PROJECT><MACROS><PROJECT>のvalue書き換えで行けそうな。テストしてないけど。
ってそれやったのか。 あとはメインソースの名前変更してみるとか。
917 :
デフォルトの名無しさん :2006/09/29(金) 13:11:31
>>914 「プロジェクト->オプションソースの編集」での変更は保存されないような気がする。
いったんプロジェクトを閉じて、外部エディタでxxx.bpr(UTF8)を直接書き換えてみては?
918 :
デフォルトの名無しさん :2006/09/29(金) 13:26:14
>>911 ぬおいおおおおお!!
ItemFocusedってあるとは知らなかった!
ありがとーありがとー。
さっそくためしてみます
919 :
デフォルトの名無しさん :2006/09/29(金) 17:43:50
質問させてください 環境 BDS2006C++Builder 以下をコンパイルしようとすると、「E2328 プロパティを持つクラスは値をコピーできない」 と怒られてしまいます。 hファイルにc_Exというクラスを定義。 c_Ex型のP_c_Exプロパティを作成 ↓こんなかんじ C_Ex p_c_Ex; __property SetP_c_Ex = {read = p_c_Ex,write = SetP_c_Ex}; で、cppファイルにある関数「SetP_c_Ex」の中で↑で定義したp_c_ExにinP_c_Exを入ようとする所でコンパイルエラーがでます。 ↓こんな感じ void __fastcall aaa::SetP_c_Ex(aaa::C_Ex inP_c_Ex){ p_c_Ex = inP_c_Ex; ←ここ! } 回避方法がさっぱりわかりません。 どなたかご教授ください!
920 :
914 :2006/09/29(金) 23:45:28
メインソース(cpp,res)の変更も効果無し、外部エディタでbprを書き換えても 次回起動時にしっかり元に戻されています。 リンク後に外部プログラム呼ぶ設定でもあればDOSコマンドでリネームできるのですが それすらなさそうです。
あああ:c_えx*
>>919 エラーが再現する最低限のソースを提示しろ
普通にプロパティを作っただけじゃそのエラーは出ない
>>920 これはもうmakefile作るしかないかもね
924 :
デフォルトの名無しさん :2006/09/30(土) 09:48:43
>>912 プロジェクト名とは別の名前は、できないと、思ってた・・・
925 :
デフォルトの名無しさん :2006/09/30(土) 23:23:31
いや、BCBだから。
いや、BCBのせいじゃない。 使ってるヤシが悪い。
BCB6 UP4で、新規プロジェクトでActiveFormを選択して そのままコンパイルしたところ、VCLCONTROL_IMPLマクロの ところでエラーが出てコンパイル出来ないのですが、何か やり方が間違っているのでしょうか。 ご存知の方いらしたら教えて下さい。
GraphicExを使用してTIFFファイルを表示させようとしてます。 .pasファイルをプロジェクトに追加して、コンパイルしたところ、 自動作成された.hファイルから大量にエラーが発生してしまい、 コンパイルできませんでした。 どなたか、GraphicExを使用する方法を教えていただけませんか? 環境 WinXP+SP2 BCB6+UP4
GraphicExってDELPHIで書かれたコンポーネント? 自動生成される.hファイルってフォームクラスのヘッダのこと? BCBのプロジェクトに.pas入れちゃ通らんだろ。
931 :
デフォルトの名無しさん :2006/10/19(木) 00:36:43
932 :
デフォルトの名無しさん :2006/10/19(木) 01:09:25
VCLを使え以上
933 :
デフォルトの名無しさん :2006/10/19(木) 01:27:50
キャストすればいいんじゃね?
だ、キャストすれ。 キャストすればエラーは出ない。
936 :
デフォルトの名無しさん :2006/10/19(木) 11:54:10
すごく初歩的な質問なんですが、 ファイルオープンダイアログをExecuteすると、初期表示状態で「開く」ボタンが クリック可能な状態になりますが、これをファイルを選択した場合にのみクリック可能にしたいのです。 (初期表示状態でEnable=falseの状態?) それから、ファイルオープンダイアログの「ファイル名」欄ですが、1回目の表示では空欄です。 2回目以降は前回選択したファイル名が表示されますが、これを2回目以降も空欄にするには どうしたらよいのでしょう? Optionプロパティで設定できるのかと思い、探してみましたがHelpでは見つけることができませでして・・ 環境はXP Pro+SP2 BDS2006+サービスパック2です。よろしくお願いいたします。
// ファイル名を空にする FileOpenDialog->FileName = "";
>>931 C言語としてコンパイルするか、
#define STRICT を
#include <windows.h> の前に置くと通ったぞ
939 :
936 :2006/10/20(金) 08:15:19
>937 レスありがとうございます。 OpenDialog1Showイベントにその文を追加してみましたが やはり前回のファイル名が表示されてしまいます。 追加するイベントがまちがっているのでしょうか・・
>>939 FileName は Execute() を呼ぶ前までに設定しておかないとダメだと思うよ
被ったorz
943 :
939 :2006/10/21(土) 08:22:25
>940,941 うまくいきました。ヽ(・∀・)ノ ヤター どうもありがとうございます!
TEdit等のImeModeプロパティを持ったコントロールは問題ないのですが、 ImeModeを持たないコントロール(例えばTStringGrid)で入力時にIME制御を 行うにはどうしたらいいのでしょうか?
つImmユニット まあ、IME制御APIとメッセージを使って制御するしかないな。
Turbo C++ Explorer版試してみたんだけど、exeがすごく遅くなってないですか? BCB4とBCB6でビルドしたexeでは3.3秒で終わる処理が7.5秒くらい・・・
Turbo C++の最適化は、いろいろ不具合の話があるみたいだな
majide?
コンパイラとかリンカのバージョンが新しくなってるのでそれをBCB6にコピーして BCB6からビルドするとexeが遅くならないで今まで通りなんだよね・・・挙動がわからーん。 佐賀
951 :
944 :2006/10/23(月) 17:47:21
>>945 やっぱそれですか。
DelphiではImmうんたらとかでやってたんでBCBにも同じような
物があるんだろうけど、今のところ発見できず・・・
てゆうか、TEditのImeModeプロパティのコード嫁。 それから、 TStringGridの入力エディタは生成をオーバーライドできるようになってるから、 自作エディタに差し替えることを可能にしてあるし。
>>944 SDKの::ImmSetOpenStatus
OnMouseDownイベントにて 右クリックかどうかを判別するにはどうすれば良いのでしょうか? Shift == ssDouble ではコンパイルが通りませんでした・・
>>955 if( Shift.Contains( ssRight ) )〜
ヘルプを読もう。OnMouseDownのヘルプ->Exampleに載ってるよ
確かにTShiftState型はちょっと判りにくいけどね。
すみません、右クリックではなくダブルクリックでした 同じ様に書けば良いみたいですね ありがとうございました
リモートデバッカを使おうと思ったんだけど、ヘルプに記載されてる 『[リンカ]タブの[EXE/DLL オプション]ペインで [リモートデバッグ情報を含める]にチェックマークを付けます。』 が、[プロジェクト|オプション]内にどこにも見当たらないんだけど、 わかる人いますか? BCB6を使ってます。
959 :
デフォルトの名無しさん :2006/10/27(金) 16:13:05
>>959 『リモートシンボルを含む .RSM ファイルが生成されます。
このファイルは,リモートマシン上の .EXE と同じ位置になければなりません。』
とのことで、.RSMファイルが出来ないといけないようなのですが、
通常のデバック設定ではこのファイルが作成されないのです。
>>960 リモートデバッグはエンプラ以上じゃないとないんじゃなかったっけ?
962 :
デフォルトの名無しさん :2006/10/27(金) 17:47:22
SHBrowseForFolderの使い方を教えてください。 Help読んでもわからないくらいの初心者です。 サンプルを示して頂けると嬉しいです。 宜しくお願いします。
963 :
960 :2006/10/27(金) 19:25:22
964 :
961 :2006/10/27(金) 22:19:51
自己レスです。 .RSMファイルではなく、.tdsファイルをリモートマシン上の .EXE と同じ位置に配置すればOKでした。 HELPファイルほんと腐ってるな。。。
>>962 使うAPIまで判っているのに、なぜGoogleに「SHBrowseForFolder サンプル」と聞いてみないんだい?
966 :
デフォルトの名無しさん :2006/10/29(日) 12:50:00
WinXP+BDSup2使っています。 ACCESSファイル内のテーブルの項目一覧を表示するプログラムを つくったのですが、項目一覧が勝手にソートされてしまいます。 TADOConnection.GetFieldNames メソッドを使っているのですが ヘルプを見ても、ソートする/しないは指定できないようです。 テーブルに入っている項目順に表示させたいのですが、 このメソッドは使えないのでしょうか? 他の方法でテーブルに入っている順番に表示させることはできるでしょうか? よろしくお願いいたします。
968 :
デフォルトの名無しさん :2006/10/31(火) 21:16:13
BDS2006で、プロジェクトにC++ファイル(xxx.cpp/xxx.h)を追加しても、 プロジェクトマネージャには、フォームを新規作成したもののように折りたたんで表示してくれません。 フォームを作成したの[xxx.cpp/xxx.h/(xxx.dfm)]と同じように、xxx.cpp/xxx.hが折りたたまれて表示する ように、プロジェクトに新しいクラスのソースを追加するにはどうすれば良いのでしょうか。
#include <iostream> int main(){ try{}catch(...){ std::cerr << "" << std::endl; } return 0; } こんな感じのソースでCodeGuardが警告出すんだけど何か変ですか。 std::cerr << "" << std::endl; を消すと問題無いんですが。 BCB5です。
ゴメン、ソース短いしパッと見て変な所があったらすぐ分かるかなと思った。 貼れるのは明日以降だしアク禁に巻き込まれると貼れないっす。
>貼れるのは明日以降 なんで?
973 :
デフォルトの名無しさん :2006/11/01(水) 15:47:20
なんで!なんでなんで!
974 :
デフォルトの名無しさん :2006/11/01(水) 22:01:14
なんで!なんでなんで!なんでなんでなんで!
そりゃプログラム書いてるマシンとネット繋げてるマシンが違うから。 しかもぱっと持ってこれない環境なの。 ----------------------------------------- Error 00019. 0x300010 (スレッド 0xFFE09E4F): リソースリーク: オブジェクト (0xA92F34) が削除されていません。 オブジェクト(0x00A92F34) [長さ: 96 バイト] は new によって作成されました。 呼び出し履歴: 0x00407403(=TEST.EXE:0x01:006403) A:\PROGRAM FILES\BORLAND\CBUILDER5\INCLUDE\rw/ctype.h#494 0x00403815(=TEST.EXE:0x01:002815) A:\PROGRAM FILES\BORLAND\CBUILDER5\INCLUDE\rw/locimpl.h#454 0x004116B1(=TEST.EXE:0x01:0106B1) 0x00403701(=TEST.EXE:0x01:002701) A:\PROGRAM FILES\BORLAND\CBUILDER5\INCLUDE\rw/usefacet.h#72 0x0040349B(=TEST.EXE:0x01:00249B) A:\PROGRAM FILES\BORLAND\CBUILDER5\INCLUDE\ios.h#375 0x0040C4D2(=TEST.EXE:0x01:00B4D2) --------------------------------------------------- こんな感じ。 実行中のログは何も言わないくせに.CGLファイルはしっかり出てて気づかなかった。 ソースの方も本当はもうちょっと#includeやってたりプロジェクトにソースぶちこんでたりしてた。 本当の最小構成だと問題無いっぽい。 問題のソースをプロジェクトから外すとログ吐かないんだけどソースのどこがおかしいのかこれじゃ分からない。 ファイルは分かるから虱潰しに探すしかないかな。
tryの中身が気になる。 ギリギリまでメモリを使っててbad_alloc当たりを投げていて、 std::coutに出力しようとしてバッファの確保に失敗しておかしくなってるとか。
確か空だったと思う。 問題ソースをプロジェクトに入れて#includeしなくても起きる。 catchの中身も上の通り。
確認したら空だった。 んでソースをコメントアウトして関数1つづつ試したけどgetline()かおかしい事が判明。 禿本の3章にgetline(ifstream&, string&)みたいな書かれ方されててそのまま書いてたんだけど。
ともかく、 エラーの起こる最低限のソース これを提示するのが大原則
#include <iostream> int main(int argc, char** argv) { ifstream std::file(argv[1]); if(!file) return 1; std::string str; getline(file, str); //ココ return 0; } 禿本も3章以外にこういうgetline()の使い方書いてないっぽい(索引から検索できない)。 更にgetline()は名前空間の指定無しに使えるのが気になる。 std指定しても結果は変わらないけど。
BCB5というと確かRogueWaveか。バグが多いので、BCB6では STLport、BDS2006ではDinkumwareになったのだろうが、その バグに相当するという事はないだろうか?
('A`)
>>980 > 更にgetline()は名前空間の指定無しに使えるのが気になる。
> std指定しても結果は変わらないけど。
koenig
バグですか。 とりあえずgetline()は使わずに1文字ずつ改行まで読むようにしました。
('A`)()
('A`)()
C:\Documents and Settings\Administrator\デスクトップ>('A`)() () の使い方が誤っています。
FileListBoxでファイルを選択した時に反転表示される色(通常は濃い青)を 任意の色に変更するにはどうすれば良いでしょううか?
989 :
デフォルトの名無しさん :2006/11/07(火) 19:19:23
>inline void __stl_delete(void* __p) { ::operator delete(__p); } ここでエラーが出るのはどういうときですか?
次スレ要る?
ほすぃ
('A`)()
夜立てると板全体の書き込みが少ないので連投規制にひっかかりやすいな
テンプレは全部張ったんでぼちぼち移動してください テンプレに不足があれば適当に追加してちょ BDSスレがあることだし、Delphiスレは関連スレから外しました ばかもん!必要だ!!つうかたはご自分で追加してください
996 :
989 :2006/11/08(水) 13:46:06
STLのvectorって、クラスの実体宣言でメンバ変数としてはマズいですか?
>>996 意味不明
多分、vectorのインスタンスをクラスメンバにしてかまわないかという意味だと思うが、
それなら特に問題はない
しかしおまいさんのC++の基礎知識の不足と日本語の運用能力の低さは極めて重大な問題だな
998
999
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。