C++Builder相談室 Par ..
[2ch|▼Menu]
481:デフォルトの名無しさん
08/03/03 11:55:35
>DB読み込み時にnewするのと 起動時の最初にnewするのと

Queryをグローバルとして使いまわしはソース読みにくかったりするが、上記2つは大差無いんでわ?

482:467
08/03/03 11:56:07
皆様いろいろありがとうございました。
RequestLiveをfalseにするだけで落ちなくなりました。
なんかこれ片方向しかあれとか書いてたからこれをtrueにしないと
書き込めないとおもってtrueにしてたのですが(この同じQueryで別タイミングで書き込みもしてます)
これselect時のみのあれだったんですね。

ちなみにUniDirectionalはtrueでいいのでしょうか?
メモリ節約になるとかかいてますので

483:デフォルトの名無しさん
08/03/03 11:57:26
>ちなみにUniDirectionalはtrueでいいのでしょうか? メモリ節約になるとかかいてますので

聞いた事歩けど、気にしたことは無い。

484:467
08/03/03 11:58:23
>>481
そうなんですよね、グローバル化は見づらくなるのですが
なんというか2秒毎にnewしてdeleteしてって繰り返しても大丈夫なのかなとか・・・
1ヶ月とか放置するので何か昔のmallocのイメージがあってちょっと不安になったので

485:デフォルトの名無しさん
08/03/03 12:05:13
>なんというか2秒毎にnewしてdeleteしてって繰り返しても大丈夫なのかなとか・・・

大量のnewや大量のdeleteは性能に関係するかも知れないが、
2秒にnewとdelteの嵐なんてC++ではちょーふつーできごと。

486:467
08/03/03 13:08:40
>>483
これはtrueのままでも落ちるのとは無関係みたいなのでそのままにしておきます。
>>485
あ、そうなんですか。それを聞いて安心しました。
まあVCL使ってると内部で山ほどしてるでしょうし問題ないですよね。

487:デフォルトの名無しさん
08/03/03 13:10:45
>大量のnewや大量のdeleteは性能に関係するかも知れないが、

正しくは、
>超大型メモリのnewやdeleteは
かな。

488:デフォルトの名無しさん
08/03/04 01:01:59
心配してるのは断片化だろ? サイズの違うメモリーを確保・開放を続けると
メモリの利用箇所が虫食いになって最後は使えなくなるという。

これは今の組み込みや、昔のPCのようにメモリ容量の制限がキツイと困る問題だけど
必要なメモリの何10倍もある現代のパソコンでは問題にならない。

489:デフォルトの名無しさん
08/03/04 02:14:05
Windowsなら・・・きっとWindowsなら何とかしてくれる・・・

そう信じてnew-deleteしまくってます。。。

490:デフォルトの名無しさん
08/03/04 03:19:28
newとdeleteをオーバーロードしてオブジェクトプールから取り出すようにする

491:デフォルトの名無しさん
08/03/04 07:24:38
>>488
こういう例もありましてね
URLリンク(www.yoshidam.net)

492:デフォルトの名無しさん
08/03/04 08:44:15
>心配してるのは断片化だろ? サイズの違うメモリーを確保・開放を続けると
>メモリの利用箇所が虫食いになって最後は使えなくなるという。

コンパイラが、スタックエリア、ヒープエリアを確保しているだろうから、それはない。



493:デフォルトの名無しさん
08/03/04 18:18:24
ForceDirectoriesが未解決ってエラーが出るのですが#include <FileCtrl.hpp>以外に何か必要なことってありますか?

494:デフォルトの名無しさん
08/03/05 08:15:12
ヘルプを見なさい

495:デフォルトの名無しさん
08/03/05 10:24:54
知らないならレスしないでウザイだけです

496:デフォルトの名無しさん
08/03/05 16:44:19
そうですね。知らないなら回答すべきではないです。
でも俺は知ってるからレスしました。ヘルプを見なさい。

497:デフォルトの名無しさん
08/03/05 22:30:41
>>495
ヘルプ読めないなら来ないで邪魔です

498:デフォルトの名無しさん
08/03/06 08:03:09
わからない七大理由

1. 読まない ・・・説明書などを読まない。読む気などさらさらない。
2. 調べない ・・・過去スレ、ググるなど最低限の内容も自分で調べようとしない。
3. 試さない ・・・めんどくさいなどの理由で実行しない。する気もない。
4. 理解力が足りない ・・・理解力以前の問題で理解しようとしない。
5. 環境のせいにする ・・・自分が悪いのではなく環境が悪いと責任転嫁する。
6. 人を利用することしか頭にない ・・・甘え根性でその場を乗り切ろうとする。
7. バカだから ・・・バカだから。



499:デフォルトの名無しさん
08/03/06 10:31:56
へたれな事ですみません。。
BorlandC++Builder6を使用しています。
コンポーネントの端に「Office2k」があって、Work,Excel,Access等の制御ができそうなものがあります。
ヘルプやキーワードにも見当たらず、使い方がいまいちわかりません。
田舎にしては大きな本屋で調べても、「Office2k」に関するものはみあたりませんでした。
てか、Borland自体少ないですし。
どこかにリファレンスや参考になる資料はないでしょうか。
教えてください。
お願いします。

500:デフォルトの名無しさん
08/03/06 10:35:15
1つ抜けていたので追記します。
使用したいOfficeはAccessです。
ごめんなさい。。

501:デフォルトの名無しさん
08/03/06 10:52:26
グg(ry

502:デフォルトの名無しさん
08/03/06 10:59:07
各種検索サイトも見たのですが、リファレンスらしきものは発見に至りませんでした。
Excelの使用サンプルはあったのですが、Accessで使用したいことに応用はできませんでした。
どのコンポーネントをどう使えば、どうなるのかさっぱりなんです。
皆様からみればアホみたいな事ですみませんが、なにか知っていることがあれば教えてください。
お願いします。


503:デフォルトの名無しさん
08/03/06 11:28:38
具体的に何を実現したいのかを聞くのが当たり前だと思うのだが。
具体的に何を実現したいのかさえわからないのかね。


504:デフォルトの名無しさん
08/03/06 11:31:31
何がしたいのかは上にも書きましたが、使い方を知るためのリファレンスを探しています。
解りにくくてすみません。


505:デフォルトの名無しさん
08/03/06 11:40:44
URLリンク(www.google.co.jp)
ぐぐったらいっぱい出てくるじゃん


506:デフォルトの名無しさん
08/03/06 11:56:00
微妙じゃね

507:デフォルトの名無しさん
08/03/06 12:25:30
ググって実質80数件しか出ないコンポは茨の道な気ガス

508:デフォルトの名無しさん
08/03/06 12:27:57
まあCOMコンポーネントだから、リファレンスならMSDN見るのが一番でない。
ぱっと見VBAのしか見当たらないけど。オブジェクトやメソッドの意味は調べられるし、
タイプライブラリから機械的にクラス作ってるだけだから、出来る事は同じはずda。

509:デフォルトの名無しさん
08/03/06 12:35:23
ACCESS扱うだけならコンポーネントなんて通さなくても自分でソース書いた方が楽

510:デフォルトの名無しさん
08/03/06 12:43:39
やることはほとんど同じだけどな

511:デフォルトの名無しさん
08/03/06 12:50:31
C++Builderのコンポーネントは単なるOfficeのオートメーションサーバーのラッパークラスに
すぎないから、ラッパークラスのメソッド名やプロパティ名は元のオートメーションサーバーのそれと
ほぼ同じはず。つまりは、VBやVBAとほぼ同じ。
URLリンク(msdn.microsoft.com)
から、「MSDN ライブラリ アーカイブ」->「Office ソリューション開発」たどれば、よろし。



512:デフォルトの名無しさん
08/03/06 13:04:21
COM関係は自分で理解して書いた方が楽だね
そもそも付属のコンポ、マトモに動作するかすら疑わしい

513:デフォルトの名無しさん
08/03/06 13:49:22
人が手で書いたものじゃないんだぜ。getter/setterをプロパティにしたり、インターフェースを
スマートポインタで包んだだけのもの。

514:デフォルトの名無しさん
08/03/06 14:01:46
まぁ、アーリーバインディングを行う場合は、C++Builderのタイプライブラリ
インポーターを使ってラッパ作成しないと死ぬが、
実際はそこまで速度要求するとは思えないからバリアントを使ったレイトバインディングで十分だとは思う。
アーリバーインディングはサーバーの特定のバージョンに依存しちゃうしね。


515:デフォルトの名無しさん
08/03/06 14:29:26
514だけど、514の発言は気にしないでくれ。ここは、C++Builderのスレね。Delphiメインな
俺はC++Builderにバリアントなんてあるのか知らん。めんご。



516:デフォルトの名無しさん
08/03/06 14:50:10
拡張キーワードみたいのはなくて、クラスで表現してるから見た目はいまいちだけどあるよ。

Variant v = Variant::CreateObject("Access.Application");

v.OlePropertySet("Visible", true);

517:デフォルトの名無しさん
08/03/06 15:00:52
普通のサンプル利用するならTVariantの方がわかりやすいかもしれん
Variant、OleVariant、TVariant、好きなの使えw

518:デフォルトの名無しさん
08/03/06 15:09:53
504は既にみんなが何を書いてるのかすら理解に苦しんでるかもしれんw

519:デフォルトの名無しさん
08/03/06 15:39:16
すみません、他のモジュール書いてました。。
VB等とプロパティが同じなら、そこから追えそうです。
ありがとうございました。m(_ _)m


520:デフォルトの名無しさん
08/03/07 18:35:05
C++Builder2007にはIBXついてますか?

521:デフォルトの名無しさん
08/03/07 18:37:24
え”、付いてなかったら、自分自滅するお!

522:デフォルトの名無しさん
08/03/11 10:39:39
DBGridで行毎に色を変える方法を教えてください

523:デフォルトの名無しさん
08/03/12 16:40:12
InterBaseのコンポーネントは一通りあるよ。C++Builder2007 Professional。
使ったこと無いけど。


524:デフォルトの名無しさん
08/03/12 18:16:20
>>522
TDBGrid使ったことないけど、多分TDBGrid::OnDrawDataCellで記述する。

525:デフォルトの名無しさん
08/03/12 18:37:11
>>524
確かに色を付けることはできるのですが
イベントに来たときのRowはどうやって取得したらいいですか?

526:デフォルトの名無しさん
08/03/12 21:02:04
>>525
こういうことをしたいのかな?
URLリンク(dn.codegear.com)

527:デフォルトの名無しさん
08/03/13 10:04:57
>>526
そうそうそれです!
色の塗り方はわかるのですがイベントに入った時のRow又はレコード位置がわからないので
奇数行ならっていう条件がわからなくて・・・
それと色を塗るとテキストが消えてしまうのでStringGridみたいに
Cellsから値をとってTextOutできないのでやはりレコード位置から
データを持ってくる必要がありますか?

528:デフォルトの名無しさん
08/03/13 10:06:55
と、思ったのですが>>526さんのリンクにしっかりやりかた書いてますね・・・
ありがとうございました。
参考にさせていただきます

529:デフォルトの名無しさん
08/03/13 10:38:43
うーん・・・
やっぱりColumn->Field->DataSet->RecNoが常に-1になってしまって
行の判別ができないです・・・
何故RecNoが-1になっちゃうのでしょうか?

530:デフォルトの名無しさん
08/03/13 12:35:54
データベースによってはRecNoは無効になる。というかそういうRDBMSのほうが多いのでは?

531:デフォルトの名無しさん
08/03/13 13:19:28
ヘルプにも-1になるって書いてますねこれ。
TQuery使ってるのですがどうやってレコード番号というか
グリッドの行を識別したらいいんでしょうか

532:デフォルトの名無しさん
08/03/13 15:37:18
RDBのテーブル設計で、Int型のレコード番号つけてそれをプライマリキーにするだろ、jk。

533:デフォルトの名無しさん
08/03/13 15:46:02
そんな頭の悪いレスを望んではいません

534:デフォルトの名無しさん
08/03/13 17:36:52
イベントハンドラでセルのTop座標が受け取れるので、それをセルの高さで割って見てはどうだろう

535:デフォルトの名無しさん
08/03/13 17:40:14
す、スクロールしていたら・・・

536:デフォルトの名無しさん
08/03/13 21:40:07
VCLコンポーネントでマルチスレッドをする方法はないでしょうか。
TImageがフォームに二つあり、極端に大きな画像を両方に読み込ませたいとか。

537:デフォルトの名無しさん
08/03/14 07:49:21
互いに別の空間で動いていたら問題ないけどね
同じメモリをアクセスする場合は1wordアクセスにするか、出来ないなら排他処理する。
メソッドポインタが2wordになる事に注意して書けば大丈夫でしょう。

Loadする場合は、
1, まずParentを外し、フォームの参照をnilにしておく。
(フォームでそのImageを間違って参照しないように)

2, LoadFromFileまでは別スレッドで行う為の 1word のグローバル変数のフラグを立てる
3,読み終わったら、そのスレッドからフォームにメッセージを送る。
 メッセージでフォームの参照とParentを元にも戻す

A,B 2つある場合は、それぞれフラグを別にして、読み込みスレッドは1つで
片方が処理終わってからフラグを見てBを読む。

538:デフォルトの名無しさん
08/03/14 08:02:57
ここはBuilder相談室。


539:デフォルトの名無しさん
08/03/14 08:25:35
>>536
JPEGやらPNGやらで展開処理が重くてマルチスレッド(マルチコア対応)化したいというのなら
展開用スレッド作ってそれぞれ展開してsynchronizeだかなんだかでVCL割り込んでフォームのTImageに紐づければよくね?

540:デフォルトの名無しさん
08/03/16 18:24:15
いつも御世話になります。
フォームを徐々に透明化して行きフェードアウトするコードを書いています。
for文がPCの処理に依存している為、
どんな環境でも(ある程度)同じ間隔で
透明度の変化を希望しています。
なにか良い手はないでしょうか?
システム版画利案が痛いですが。ソース晒します。

for(int it=100;it>0;it--){
fmShow->fcfmShowTransparency(it);
Sleep(1);
Application->ProcessMessages();
}
void __fastcall TfmShow :: fcfmShowTransparency(int intTransparency){
//ツールチップの透明度を設定
int intMyTransparency=(int)((double)intTransparency*2.55); // *255/100
fmShow->AlphaBlendValue=intMyTransparency;
}
環境winXP bcb2007

541:デフォルトの名無しさん
08/03/16 19:44:40
>>540
::Sleep()で時間稼ぐとか

542:デフォルトの名無しさん
08/03/16 19:51:31
>>540
フェードアウトに掛ける時間を決めて、経過時間から不透明度を設定するというのは?

// 1000msでFO(簡略化コード。※バグあり)
DWORD dwStart = ::timeGetTime();
while( 1 ){
  int nOpaque = 255 - ( ( ::timeGetTime() - dwStart ) * 255 ) / 1000;
  if( nOpaque < 0 ){
    break;
  }
  Form->AlphaBlendValue = nOpaque;
  Application->ProcessMessages();
  ::Sleep( 1 );
}
Form->AlphaBlendValue = 0;

時間が厳密じゃなくてもいいのなら、タイマイベントでいいと思うけど。

543:デフォルトの名無しさん
08/03/16 20:05:48
::AnimateWindow(Handle, 1000, AW_HIDE | AW_BLEND);

544:デフォルトの名無しさん
08/03/16 20:32:44
>>541>>542>>543
ありがとうございます。
AnimateWindowが正解でした。
レベルが低くて申し訳ないです。


545:デフォルトの名無しさん
08/03/16 22:01:36
AnimateWindowなんてAPIあったのか・・・俺も使おうかな。

546:デフォルトの名無しさん
08/03/16 22:03:37
 ::Sleep( 1 );
この「::」ってなんですか?

547:デフォルトの名無しさん
08/03/16 22:29:55
Global scope

548:デフォルトの名無しさん
08/03/16 22:33:15
つけなかったらどうなるの?
どんな影響が。。。
気が向いたらオシエテ

549:デフォルトの名無しさん
08/03/16 22:35:02
そのコードの書いてある名前空間内(グローバル名前空間内でないとする)に
Sleep という名前の関数なりなんなりを作った場合に
そちらが使われてしまう。

550:デフォルトの名無しさん
08/03/16 22:54:09
なんとなくわかりました。

551:デフォルトの名無しさん
08/03/17 01:22:12
Vista用の256x256アイコンを含ませる方法ってないですかねー・・・
PNG圧縮のかかった形式でicoに含ませてからbrcc使うとコケちゃうし・・・

552:デフォルトの名無しさん
08/03/17 07:37:48
>>551
VisualStudioを使ってください。中途半端な部分がたくさんあるので
CodeGearの製品はお勧めできません。

553:デフォルトの名無しさん
08/03/17 11:47:07
M$の製品は完璧でうらやましいです

554:デフォルトの名無しさん
08/03/17 12:10:41
VCはいいけどVBは糞だったなぁ

555:デフォルトの名無しさん
08/03/20 09:49:27
AnimateWindowの質問したやつですが、
AlphaBlendValueで半透明状態からの
フェードアウトアニメーションはできるものでしょうか?
AnimateWindowは255から0にしかならないものですか?
ちょっと確認したくて。BCB2007 winXP

556:デフォルトの名無しさん
08/03/20 11:47:32
>>555
XP使ってるなら自分で確認できるんじゃね?

557:デフォルトの名無しさん
08/03/20 12:17:15
もちろんそうなんですが、できないと思ったからです。
AnimateWindowの仕様かもしれませんが、
もしできないのであれば、>>542さんの
ソースでやるしかないので、確認です。
ぐぐってもピンとこなかったので。
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form1->AlphaBlend=true;
Form1->AlphaBlendValue=200;
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
::AnimateWindow(Form1->Handle,1000, AW_HIDE | AW_BLEND);
}
自己中で申し訳ないです。

558:デフォルトの名無しさん
08/03/20 13:41:28
>>529
ClientDataSetを使えばいいんじゃなかったか。

559:デフォルトの名無しさん
08/03/21 20:24:13
Builder2007使ってるならフォームのAlphaBlendValueを
タイマーとかでループで減らしていけばいいんじゃね?俺はそうしてるよ

560:デフォルトの名無しさん
08/03/21 23:23:18
そうなんです。はじめはループさせてフェードアウトさせていいたのですが、
アニメーションを教えてもらったが、
半透明だとうまく動かない。
やっぱり動かないの?っていうことです。
お騒がせしました。
次の相談どうぞ

561:デフォルトの名無しさん
08/03/24 10:07:35
Builder2007ってXP Homeじゃインスコできませんか?

562:デフォルトの名無しさん
08/03/24 20:11:16
>>561
いけるんじゃね?
試して報告よろ
URLリンク(www.codegear.com)

563:デフォルトの名無しさん
08/03/25 14:52:15
HomeでもSP2ならいけますた。SP1はインスコ途中でダメって出てインスコできんかった

564:デフォルトの名無しさん
08/03/25 20:47:25
よくできました!

565:デフォルトの名無しさん
08/03/27 10:59:13
2007って以前の5とか6みたいな画面にできない?
画面構成変わってめんどいんだけどこれー

566:デフォルトの名無しさん
08/03/27 12:13:41
BCB6をインストールして、コンパイラとライブラリ一式だけBCB6上に上書きするとか

567:デフォルトの名無しさん
08/03/27 12:16:47
埋め込みデザイナのチェックを外せ

568:デフォルトの名無しさん
08/03/27 13:29:21
>>566
いや6もってないし
>>567
とりあえずデザイナだけは埋め込みじゃなくなったけど・・・

デザイナとオブジェクトインスペクタとソースは別窓にしてOK
しかしツールバーとかあの辺がうざいー
しかもこれつねに他の窓の下にくるからツールパレットがソースの下に隠れてつかえね
かといって横表示にしたら文字があれしてうざいし
以前のようにタブで選択できればいいんだが・・・

569:デフォルトの名無しさん
08/03/27 13:41:56
うーん、エディタ窓を切り離したい

570:デフォルトの名無しさん
08/03/27 13:45:27
あ、さっき別窓であれしたらだめだったのに今度でけた

571:デフォルトの名無しさん
08/03/27 13:49:14
あ、やっぱダメかあ
これソースを別窓でひらいたらそのソースだけかよ
めんどくせー

572:デフォルトの名無しさん
08/03/27 13:58:29
ソースを別あれにするのは諦めた、この糞仕様は涙を飲んで我慢しよう

しかし、しかしだ!
VCLデザイナを分離させると常に前面表示なのは納得いかねえ!!
これソースにかぶるとみえねーじゃないか!!
エロいおっさんVCLデザイナがソースの背面にいく方法をおしえてくれ

573:デフォルトの名無しさん
08/03/27 17:40:10
とりあえず、埋め込みデザイナをオフにして慣れるのが一番。
そうすれば、いつでもVisual Studioに移行できる。


574:デフォルトの名無しさん
08/03/27 21:08:29
ある外部DLLを使ってるのですが、
このDLLは内部でスレッドを作っていて、更にそのスレッド内で例外が起きてもcatchしてないようで
本体のEXEまで巻き添えになって死亡してしまいます。

こういうヤヴァイDLLでもEXEが巻き添えになって即死しない方法はありますか?
EXEはBCB製ですが、DLLは何で作ったか解らずソースもないので変更できません。

575:デフォルトの名無しさん
08/03/27 21:26:45
>>574
DLL呼び出し部を別プロセスに分けて、共有メモリとかプロセス間通信を使って本体とデータをやりとりするとか・・・

576:デフォルトの名無しさん
08/03/28 00:14:01
プロセス間通信ってむずかしいですか?
プラグ印をつくるには、dllで提供されるとおもうのですが、
素人にはexeが作りやすい。
できるだけ気軽にプラグ印開発するのに、
親exe+dllではなく、親exe+子exeという格好に
実装したフリーorシェアってありますか?
用途は親が小難しいことやって、プラグ印フォームで
情報表示。ユーティリティーなんて実現可能なものでしょうか?

577:デフォルトの名無しさん
08/03/28 10:58:11
>プロセス間通信ってむずかしいですか? 
別にそれほど
設計を間違えなければ

>実装したフリーorシェアってありますか?
さぁ?
コントロールパネルのスクリーンセーバーのプレビューはそれに近いかも

>情報表示。ユーティリティーなんて実現可能なものでしょうか?
可能かどうかっていうと、可能だろう

578:デフォルトの名無しさん
08/03/28 11:48:19
Winampはプロセス間通信で、他のアプリから再生制御したり、情報取得したり出来るようにしてるな。
プラグインというかフロントエンドだけど。

579:デフォルトの名無しさん
08/03/28 12:01:05
ちょwwwwwwww
InternetOpenとかなんだけどBuilder5でちゃんとコンパイルできてたのに
2007でやるとリンカエラーになる・・・
とおもってヘルプみたらlibファイル変わってるじゃん馬鹿!!
まあファイル名を変えたらちゃんとできたんだけど、ころころ変えるなやなあ

580:デフォルトの名無しさん
08/03/28 12:10:15
ちょwwwwwwwwww
Builder5でTPanelのColor変えたら背景色変更してたのに2007じゃ変わらない・・・
これマジでわかんないです、エロい人TPanelの背景色の変え方教えてください

581:デフォルトの名無しさん
08/03/28 12:10:26
>>579
BCBクオリティだな

582:デフォルトの名無しさん
08/03/28 12:30:31
>>576です。
一度調査してみます。
情報ありがとうございました。

583:デフォルトの名無しさん
08/03/28 12:40:14
ニコ堂厨キター

584:デフォルトの名無しさん
08/03/28 13:21:20
ちょwwwwwww
うへwwwww変わったwっうへうへwwwww
オブジェクトインスペクタで一度Color変更してから実行したら動的に変更してもちゃんと色変わったwwwww
なにこの糞仕様wwwwwwwwwwwwwwwwwwwwww
これ他のコントロールも危険っぽいwwwwwwwwwwww

585:デフォルトの名無しさん
08/03/28 14:06:09
書き込みキター

586:デフォルトの名無しさん
08/03/28 17:16:51
>>580
ParetBackgroundやTransparentかな?

ついでに私も質問・・・
Graphics::TBitmap *bitmap = new Graphics::TBitmap();
bitmap->SetSize(SpeedButton1->Width, SpeedButton1->Height);
bitmap->Canvas->Brush->Color = clRed;
bitmap->Canvas->FillRect(TRect(0, 0, bitmap->Width, bitmap->Height));
SpeedButton1->Glyph = bitmap;
こんな感じでやって見ましたがボタンの色が何一つ変わりません。
どなたか教えてくらさい・・・

587:586
08/03/28 17:30:13
あ、超初心者用スレが別に存在するんですね。
向こうで質問しようと思います。
スレ汚しスンマセン・・・

588:デフォルトの名無しさん
08/03/28 17:45:40
> 注意 ビットマップの左下のピクセルは「透過」色用に予約されています。
> ビットマップで左下に位置するピクセルはすべて透過になります。

589:デフォルトの名無しさん
08/03/28 18:51:04
>>586
いやwwwwwwwwwww>>584ですたよ
5からまんま移植してやってたんだけどね
つかSpeedButtonなら予め用意したビットマップを設計時にあれするとかじゃだめなの?

590:デフォルトの名無しさん
08/03/28 19:24:27
>>588
ありがとうございます。
おかげさまで実現できました。

>>589
把握シマスタw
ビットマップは、ボタンのサイズより少し小さく色づけしたいので、今の方法にしようと思います。

591:デフォルトの名無しさん
08/03/28 23:00:00
>>576です
プロセス間通信についてですが、
WM_COPYDATA と
URLリンク(gimite.net)
共有メモリ
URLリンク(ww4.tiki.ne.jp)
を拝見して、動作確認できました。管理者に感謝

前者はウィンドウハンドル、後者は任意のユニークなID
1.使い勝手としては後者が使いやすいのでしょうか?
2.また、前者は受け取り側フォームひとつにつきひとつなのでしょうか?

ところで、複数のデータcharとintが4つくらい送りたい場合、
3.やはり、送信側・受信側も4つのID(後者)が必要なのでしょうか?
ひとつのIDでは複数遅れないのでしょうか?

4.また、それが一般的なのでしょうか?
ちょっと世間一般の意見をお伺いしたくて。よろしくお願いいたします。

592:デフォルトの名無しさん
08/03/28 23:00:52
4つのID->5つのID

593:デフォルトの名無しさん
08/03/29 07:33:51

共有メモリと言うと普通は[ファイル マッピング]を使う [名前付き共有メモリ]だと思う。
これなら読み書き出来るメモリを共有する事になる。

2番目はアトム(GlobalAddAtom) グローバルアトムなら確かにプロセス間で渡せるけど
これはメモリ共有というイメージではない。

構造体を送りたいという場合、
アトムで送る場合は、構造体をシリアライズ=文字列化して送ればいい
WM_COPYDATAで送るなら構造体のポインタを送ればいい。
文字列を含む場合は、その構造体にインスタンスが完全に含まれるようにする。
ポインタや参照を含む形では駄目。


WM_COPYDATAは1対1の通信に便利だけど1対1でしか使えない。
グローバルアトムを使う場合も、相手の窓ハンドルを使う限りは1対1になる
ファイルマッピングなら、複数で通信出来る。

他にwindowsにはメールスロットというのがある。CreateMailslot して後はファイルと同じようにするだけ
これは同じPC上のプロセスだけではなく別のパソコンにでも送れる。

594:デフォルトの名無しさん
08/03/29 07:55:27
ああごめん。
2番目は HWND_BROADCAST で全部の窓アプリにメッセージを送ってるから
1対多通信が出来るんだね。


595:デフォルトの名無しさん
08/03/29 10:31:02
たたたいへん参考になりました。
受信側が実装しやすいものを精査して
組み込んでみます。感謝。
MyTipsとして残しておきます。

596:デフォルトの名無しさん
08/03/29 11:10:52
メールスロット、メッセージが来るタイミングを窓へのメッセージで受け取れたら最高なんだけどな

597:デフォルトの名無しさん
08/03/31 10:25:49
>>595
落ち着けw

598:デフォルトの名無しさん
08/03/31 13:44:41
プロセスと通信するより、女の子と通信したいです。


599:デフォルトの名無しさん
08/03/31 14:18:35
TSQLQueryでMySQLからデータの読み書きをしてると
そのうちSQLQuery->OpenやSQLQuery->ExecSQLでEAccessViolationが出るのですが・・・
これを使う際に何か気をつける点はありますか?
Builder2007です

600:599
08/03/31 16:13:48
どうやらTSQLQueryでselect文を発行するとダメっぽい。
updateやinsertならなんぼやっても大丈夫なんですがselectを1回でもするとダメですね。
やっていることは・・・
SQLQuery->SQL->Clear( );
SQLQuery->SQL->Add( "select * from testtable" );
SQLQuery->Open( );
if( !SQLQuery->Eof ){
  val = SQLQuery->FieldByName( "VAL" )->AsInteger;
}
なんですが、突っ込むところはありますか?

601:デフォルトの名無しさん
08/03/31 16:17:52
もうちょっと詳しくデバッグしてどのメソッド読んだ時に落ちてるか
調べなさい。


602:599
08/03/31 16:40:48
>>601
知らないならレスするなクズが

603:599
08/03/31 17:53:23
>>602は僕ではないですよ

今までの検証結果でわかったことは・・・
1.select文だけ
2.update又はinsert文だけ
1,2は各々なら共に何回やってもOKで
updateやinsertをやってから1回でもselectを行うとエラーになります。
このエラーはソフト終了時にコードガードが
リソースリーク: メモリブロック (0x14DB5B0) が解放されていません。
メモリブロック(0x014DB5B0) [長さ: 64 バイト] は SysGetMem
によって確保されました。
と出るのですが・・・

604:デフォルトの名無しさん
08/03/31 19:05:48
あー、それ俺もなったよ。2ヶ月くらい悩んだ。
結果的に自分のプログラムが原因じゃなかった。
よく分からないけどUpdateを当ててからか?なんかそれからおかしくなってたのかも。

解決するか分からないけど30万円で情報を提供してやるw

605:599
08/03/31 19:22:33
>>604
確かに自分のソースはどう考えてもおかしくないですねこれ。
やってることは単純だし、どちらか片方コメントにしたら全く落ちないし

とりあえず、定期的にinsertを行ってる状態でselectするために
SQLQuery->Open( )でこける(何事もなかったかのように素通りしソフト終了時にエラー)
これをSQLTableにかえてみたんだけどやっぱりエラー(´・ω・`)

606:デフォルトの名無しさん
08/03/31 20:26:04
SQLの事はよく分からんけど、俺の場合はプログラムが半フリーズしてて
なんでだろうと、プロジェクトを調べ回ったあげく、とりあえず俺は以下のでリソースリークも半フリーズも直った。

プロジェクトソースの
SetApplicationMainFormOnTaskBar(Application, true);
をコメントアウトしてみて

607:599
08/03/31 20:29:00
>>606
コメントにしてもかわりませんでした><

608:デフォルトの名無しさん
08/03/31 20:31:36
ワロスwww残念だったなw
まぁ頑張ってくれw

609:599
08/04/01 10:47:52
と言うか、try〜catchでcatchに入るだけで終了時にコードガードのエラーが出る
なんですかこれ?Builder2007のバグですか?

610:デフォルトの名無しさん
08/04/01 11:12:10
ヒント:メモリ破壊

611:599
08/04/01 12:20:24
>>610
馬鹿はレスしないで下さい。うざいです。半年ROMってろクズ

612:599
08/04/01 14:20:34
>>611も俺じゃないっす

とりあえず解決しますた
try〜catchは謎だけどSQLQueryはExecuteSQLがあれですた
これ引数省略できるんだけど省略するとコードガードエラーになります(デフォfalse)
問い合わせがパラメータをまったく含まないあれなんでtrueでずっとfkさおf

613:デフォルトの名無しさん
08/04/01 18:21:48
自分証明したければ捨てでいいからトリップつけれ

614:599
08/04/01 18:38:24
>>613
馬鹿はレスしないで下さい。うざいです。半年ROMってろクズ

615:デフォルトの名無しさん
08/04/02 00:29:40
2007使ってるけど、実行したら、
時々オーエスごとフリーズする。
一分後動作しやがる

616:デフォルトの名無しさん
08/04/02 05:14:43
>>615
それ以前に、ちゃんとした日本語で的確な説明ができるように訓練しなさい。


617:デフォルトの名無しさん
08/04/02 07:07:14
>>612=>>611>>614
日頃の行いが悪いとそういうバグだらけのくそな製品をつかまされる。
builder2007に無駄金。
おめでとさん。


618:デフォルトの名無しさん
08/04/02 21:13:14
CoShellWindowsの使い方を教えてください。
delphiで下記のコードをBuilderに移したいのですがうまくいきません。
sw : IShellWindows;
Count : Integer;
途中省略
sw := CoShellWindows.Create;
Count := sw.Get_Count;

CoShellWindows* sw=new CoShellWindows();
Shdocvw::IShellWindows* is=sw->Create(NULL);
int Count=sw->Count;
とすると、コンパイラは通るのですが、3行目でEAccessViolationが発生します。


619:デフォルトの名無しさん
08/04/02 22:33:24
>>616
んーん、実行F9で実行すると、
下のウインドウでぴこぴこっと
複数行出てきて、さぁ、実行だと言う矢先、
フリーズ。タスクバーのブラウザさえ表示できない。

まぁ、結構むちゃなソース実行しているからかもしれないが。
とりあえず、2007の新規プロジェクト立ち上げ、
いちから構築するつもり。bcb5のソースをそのまま使ったのが
いけないのか?

それに、開発しているPCでは動くのに、ゲストOSでも動くのに、
ノートPCに入れたら、動的可変フォームのTImageがうまく描画できない。
ラベルがいいのかなぁ。

はぁ。ま、どうでもいいか

620:デフォルトの名無しさん
08/04/02 22:47:08
>>618
BCB6だとヘッダいじらないとコンパイルすらできないな。
で、コンパイルして実行した結果は問題なかったけど。
Get_Countでも出るの?

621:デフォルトの名無しさん
08/04/02 22:57:48
>>618

TShellWindows *sw = new TShellWindows(NULL);
int Count= sw->Count;

でどうよ

622:618
08/04/02 23:10:54
>>620
そうですかぁ。BCB6ではOKですか。
こちらの環境は、BDS2006です。
自分は、delphiは全然使ったことがないので
delphi のコードは試していないのですが、ぐぐると同様の霊がいっぱい出るので
delphiでは問題ないのだと思います。
ぐぐっても、Builderでの例が1件もないので、悩んでいます。
BCB6でいけるということは、たぶんちょっとした違いなんでしょうから
もう少し試行錯誤してみます。


623:デフォルトの名無しさん
08/04/02 23:12:20
>>621で良さそうだけど、>>618のエラーの原因を一応言っとくと、CreateはCOM用のスマートポインタを
返してるんだけど、それを生ポインタで受けてる事だな。次の行では既にReleaseされてて無効になってる。
_di_IShellWindows is = ... とでもすればいいはず。

624:618
08/04/02 23:19:55
>>621 いけました。
>>623 その通りでした。

TShellWindows *sw = new TShellWindows(NULL);
あるいは
CoShellWindows* sw=new CoShellWindows();
_di_IShellWindows is=sw->Create(NULL);
とすれば、ちゃんと
Countを取得できました。

どうもありがとうございます。


625:デフォルトの名無しさん
08/04/04 17:12:27
TImageかTPaintBoxでスクロールする折れ線グラフ(パフォーマンスグラフみたいなの)を
描画したいのですが、どういうやり方をしたらスムーズにスクロールできますか?

626:デフォルトの名無しさん
08/04/04 17:35:39
つ TScrollBox

もしくは、TFrameにTImageをはっておいて、
TFormにはってあるPanelの上に、
実行時にはる。

627:デフォルトの名無しさん
08/04/04 17:40:27
>>625
ダブルバッファリング

628:デフォルトの名無しさん
08/04/04 18:02:02
>>626
TScrollBoxでどのようにやればいいですか?
>>627
DoubleBuffered?

629:デフォルトの名無しさん
08/04/07 10:26:52
Paintイベントでこんなことやってるんですがコピーされません。なぜですか?
TRect r = PaintBox->BoundsRect;
Canvas->CopyRect( TRect(0, 0, r.right-2, r.bottom-1), Canvas, TRect(1, 0, r.right-1, r.bottom-1) );


630:デフォルトの名無しさん
08/04/08 18:25:46
パッと見だけで適当に答えるけど、
BoundsRect.Right = Left + Width
BoundsRect.Bottom = Top + Height
というのは大丈夫か?

PaintBoxのOnPaintでもFormのOnPaintでも、Canvasを直接参照すると
FormのCanvasになるというのは大丈夫か?

CopyModeも大丈夫か?

TBitmapに描画して、PaintBoxにコピーした方が良くないか?
PaintBoxは描画するエリアを用意するだけで、描画した内容を保存してくれるわけではないよ。
(PaintBox->OnPaintの中だけが全て)

631:デフォルトの名無しさん
08/04/08 18:28:26
>>630
TBitmapからCanvasにアレするようにしました

632:デフォルトの名無しさん
08/04/09 15:08:52
TGraphicControlを継承して描画するアレを作ったのですが
クリックされた時のイベントがほしいのですが記述の仕方がわからないので教えてください

633:デフォルトの名無しさん
08/04/09 15:27:48
クリッコイベントできますた(;´Д`)

634:デフォルトの名無しさん
08/04/11 16:02:33
TImageに背景が白の画像をよみこませて表示しているのですが
この背景を透過する方法を教えてください

635:デフォルトの名無しさん
08/04/11 23:16:39
答えは君の心の中にきっとあるさ・・・・

636:デフォルトの名無しさん
08/04/14 12:18:45
ファイルの列挙を再帰処理で行っています。
_findfirst、_findnextを使用し、ファイル一覧の取得方法はわかりました。
しかし、カレントディレクトリを開始位置としているようです。
指定フォルダを開始点としたいのですが、カレントディレクトリを変更するにはどうすればいいでしょうか?

637:デフォルトの名無しさん
08/04/14 12:48:18
chdirとかSetCurrentDirとかSetCurrentDirectory。
でも、"C:\\Windows\\*.*"みたいな文字列渡せば、別にどこからでも列挙できるよ?

638:デフォルトの名無しさん
08/04/14 12:55:39
>>636
フルパスを渡すのが簡単


639:デフォルトの名無しさん
08/04/14 13:22:58
>>637
なるほど、「*.*」と指定してたのが駄目だったみたいです
ありがとうございました

640:デフォルトの名無しさん
08/04/14 17:24:18
BCB pro 6 なんですが、アプリ実行中にメモリ破壊が発生したかどうか?っていうの調べる方法ありますか?
1万レコードくらい演算してるんですが、演算結果がてきとーに異なるんですよねorz

(今手元にデータがないので結果報告できないんですが、
調べる手段とか手法を今のうちに検討しておきたいんです)

641:デフォルトの名無しさん
08/04/14 17:51:17
CodeGuardは報告してくれない?

642:640
08/04/14 17:53:02
じ、じつは、Del ---> BCBを超長年使いながら、
CodeGuardしたことありませんorz

643:640
08/04/14 18:09:04
CodeGuard のログファイルってどこにできるんでしょうか?
分厚い開発者にもCodeGurad について触れられてないような。。。

644:デフォルトの名無しさん
08/04/14 18:22:55
つーかリアルタイムでIDEにつらつらと出てくるよ

645:640
08/04/14 18:27:35
あ、本当だ。

memcmpでAccess overrun 出まくりなんですが、これ、マズイですか?

646:デフォルトの名無しさん
08/04/14 18:28:44
バグだらけじゃん

647:デフォルトの名無しさん
08/04/14 18:29:24
そりゃマズイさ

648:デフォルトの名無しさん
08/04/14 18:34:08
ありえんw

649:640
08/04/14 18:41:18
逆に言うと、CodeGuardが止まらないプログラムだとメモリ無問題なんだぁ。
なんていうか、こんな便利なものだったとは>CodeGurard

memcmpのAccess overrun でプログラムのメモリを破壊という道筋は思いつかないんですけど、そんな事あるんですか?

650:640
08/04/14 18:43:09
だって、memcmpってメモリに書き込みしないから、スタック壊すなんて無いですよね?

651:デフォルトの名無しさん
08/04/14 18:45:12
なぜ、memcmpのとこだけおかしてく他のwriteしているところは完璧だと思い込めるのだ。
それが最大のナゾだな。


652:デフォルトの名無しさん
08/04/14 18:46:09
バグだらけじゃん

653:デフォルトの名無しさん
08/04/14 18:48:34
今はたまたま動いているかもしれんが
エリア外の参照なんて普通にAccessViolationじゃないか

654:640
08/04/14 18:48:47
バグだらけじゃなくて、memcmpのAOって本当に1行だけですよ。

じゃ、そこ直せばって言われると思うんですが、
実データじゃないとバグ出ないんですよね。
開発マシンじゃ無バグ(現象出てないだけかorz)なんです。

件数多くなれば、memcmpがメモリを破壊する???

655:640
08/04/14 18:49:41
>エリア外の参照なんて普通にAccessViolationじゃないか

あ、なるほど。

でも、読み出しだけなら無問題じゃないの???

656:640
08/04/14 18:51:33
今日のところは、これで失礼いたしますが、
CodeGuardを使えるようになったのは大収穫でした。
有難うございましたorz

657:デフォルトの名無しさん
08/04/14 18:52:01
もう少しOSの事も勉強した方がいいと思うぞ

658:デフォルトの名無しさん
08/04/14 18:53:02
現象だけから見たら、ブチ壊れたポインタ使いながら走ってる典型。


659:デフォルトの名無しさん
08/04/14 19:03:14
特定条件でポインタの初期化が抜けているに90リラ


660:デフォルトの名無しさん
08/04/14 19:24:55
>>659
m9(^Д^)プギャーーーッ

661:デフォルトの名無しさん
08/04/15 10:09:57
質問です
よくウィザード画面てありますよね?
次とか戻るとかの、あれってあたかあも1つのフォームでやってるように見えるのですが
一般的にはどうやってるのでしょうか?
1.同サイズのフォームを用意して次を押されると次のフォームを表示して前のフォームを非表示に
2.PageControlで実行時にタブを非表示にして次を押されると次のタブに移動
これ以外に方法があったら教えてください

662:デフォルトの名無しさん
08/04/15 10:17:12
親フォーム内に子フォーム埋め込んで、次へを押すと子フォームを次のフォームに切り替え。

663:デフォルトの名無しさん
08/04/15 10:45:44
>>662
すみません。どうやって埋め込むんですか?

664:デフォルトの名無しさん
08/04/15 11:13:48
>>663
ボーダーをbsNoneにして
TForm2 *subform = new TForm2(this);
subform->Parent = Panel1; //埋め込みたい位置にパネルなりを配置しておく。
subform->Top = 0;
subform->Left = 0;
subform->Visible = true;

665:デフォルトの名無しさん
08/04/15 11:29:52
>>664
なるほど。
んで次や戻るでフォームを動的にnewして埋め込むと
その場合は次に進んだ時には前フォームの情報は失われるので
自分でファイルなりに保存しておくんですよね?

666:デフォルトの名無しさん
08/04/15 19:47:09
>661
CreatePropertySheetPage()
ただし相当な修羅場を潜り抜けないと使いこなせない。
少なくともリソースについての理解が必要。

667:デフォルトの名無しさん
08/04/15 22:27:22
PageControlでいいじゃん

668:デフォルトの名無しさん
08/04/15 22:31:33
>666の関数をググってみると
VCLはやっぱり神。って思った。

669:デフォルトの名無しさん
08/04/16 10:48:37
>>661
非標準ライブラリの使用がOKならば、JVCLのTJvWizardは?

670:デフォルトの名無しさん
08/04/16 18:04:29
名前を指定してコントロールを取得したいのですが、方法がわかりません
ご教授お願いします

671:デフォルトの名無しさん
08/04/16 18:21:39
名前がわかってんなら、それがコントロールだべや。
なにを聞いているのか意味わかんね。


672:デフォルトの名無しさん
08/04/16 18:23:28
FindComponentってことだろ?このブタ野郎が!

673:デフォルトの名無しさん
08/04/16 18:27:11
説明不足ですいません

for (int i=0; i < 10; i++) {
 AnsiString name = txtID + IntToStr(i);
 // 名前からコントロールにアクセス
}

フォームに連番のついたテキストボックスがあるのですが
大量にあるためループで処理できれば、と考えています。
VB.NETのFindControlみたいなことがしたいのです。

674:デフォルトの名無しさん
08/04/16 18:41:54
>>673
お前みたいなクズは始めてた
お前>>672だけ100回見て1年ROMってろくず

675:デフォルトの名無しさん
08/04/16 18:45:40
配列にすればええねん

676:デフォルトの名無しさん
08/04/17 20:46:56
メモリリークってプログラムの途中じゃ見ることできないですよね?
やっぱ、終わったときだけ?

677:デフォルトの名無しさん
08/04/17 21:02:23
>>674
カルシウム不足
不摂生な生活


678:デフォルトの名無しさん
08/04/18 22:38:08
大学でBorland C++ Builder version.4を使用しています。
自宅でもプログラムを組みたいので、Borland C++ Builder 2007の体験版を使っているのですが、
*.dfmの互換性がないため、大学側のC++ Builderで使用するのに一々フォームを組み直す必要があって非常に面倒です。
*.dfmに下位互換を持たせることはできるのでしょうか?教えてください。

679:デフォルトの名無しさん
08/04/19 02:16:57
>>678
BCB4を大学からコpうわなにをするやめr

680:デフォルトの名無しさん
08/04/19 03:09:32
>>678
両方にTurbo C++ Explorerをインスコ

681:デフォルトの名無しさん
08/04/19 22:05:05
お世話になります。
ファイルマッピングの実装が完了しました。

で、複数のデータをひとつの文字列で送る予定なんですが、
数字であれば、カンマ仕切りで分ければいいのですが、
数字と任意の文字列も含んでおり、任意の文字列の中にカンマがあれば、
受信側で処理ができにくいと考えています。
" "や"|"や","など考えましたが、できるだけ、任意の文字列に例外文字・予約文字?
を作りたくありません。

こんな場合、どういう方法があるのでしょうか?
もちろん、仮想メモリーを別に設ければいいだけなんですが、
良い方法があれば教えてください。

ちょっとスレ違いです。すみません。

682:デフォルトの名無しさん
08/04/19 23:44:53
任意の文字列に"があったら\"に、\があったら\\に変換すればいい

683:デフォルトの名無しさん
08/04/20 01:56:37
普通に考えれば','じゃなく\x9を区切りに使うんじゃね?

684:デフォルトの名無しさん
08/04/20 09:17:58
文字列長も一緒に送るなら\0で区切っても‥‥

685:デフォルトの名無しさん
08/04/20 09:34:53
普通、ファイルマッピングならバイナリーをやり取り出来るわけでわざわざシリアライズする必要はないと思うけどな
もしかして文字列の最大サイズを設けたくないのかな?
あるいは読み出し側でストリームとして読み出してるんだろうか? ならパイプでいいと思うけどな。

とりあえず、文字列の問題は送信時に文字列の部分をエンコードするのが普通
>>682さんの方法のほかに特殊文字は全部 %xx と%の後に2桁の16進数にしてしまう方法がある。

これがエンコードもデコードも簡単。
文字列の部分をエンコードしてからTStringListにAddで入れて CommaText で1行にして送るだけ

エンコードは、1文字づつみて英数字以外は全部 %xx に置換してしまえばいい
デコードは %を見つけたら次の2文字を取ればいいだけ

686:デフォルトの名無しさん
08/04/21 14:07:50
TChartのSeriesCountが1、軸にAutomaticを設定
この状態で最初のデータに2859以上のデータを追加するとエラーになるのはBCBの仕様?

687:デフォルトの名無しさん
08/04/22 00:54:11
シリアライズの件ですが、
難しいです。
検討してみたいと思います。
レスありがとうございました。

688:デフォルトの名無しさん
08/04/24 16:38:01
静的リンクを設定したのですが、BCB非インストール端末にて動作させるとエラーが発生します。
当方BCB6のProを使用しております。
解決方法があれば教えていただきたいです。

以下エラーメッセージ
vclx60.bplが見つからなかったため、このアプリケーションを開始できませんでした。アプリケーションをインストールし直すとこの問題は解決される場合があります。

689:デフォルトの名無しさん
08/04/24 16:42:47
リンカとパッケージ

690:デフォルトの名無しさん
08/04/24 16:53:28
>>689
リンカの共有RTL DLL、パッケージの実行時パッケージを使って構築
この二つはチェックをはずしてありますが、他にも設定する部分があるのでしょうか?

691:デフォルトの名無しさん
08/04/24 17:11:41
コードガードとデバッグ情報

692:デフォルトの名無しさん
08/04/24 17:20:46
>>691
CodeGuardは対象無し、デバッグ情報はリリースで再構築しているためチェックが外れています
どうも他の人がやるとエラーの出ない実行ファイルが作成されたので、プロジェクトでなく処理系の設定じゃないかと思っています

693:デフォルトの名無しさん
08/04/24 17:23:56
exeのサイズはそれなりのサイズになっとるかね?
ディレクトリ・条件で無駄なあれがあったら削除してみるとか


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5169日前に更新/190 KB
担当:undef