08/01/22 15:36:57
list->Add( (TObject*)&foo );
301:デフォルトの名無しさん
08/01/22 16:38:39
上記で追加されたようですが、取り出し方が解りませんT-T
list->Items[0]->fileName;
では取り出せませんでした。
test でキャストするのでしょうか。。?
302:デフォルトの名無しさん
08/01/22 17:00:44
>>299-300は無視なの?
お礼なし?聞くだけ?基地外?
303:デフォルトの名無しさん
08/01/22 17:12:34
ええー無視なんかしてないですよー「上記で追加されたようですが」って引用してますし、
最初の質問でアクセス方法も書いたので、
アクセスできてからまとめてお礼をしようと思ってました……
304:デフォルトの名無しさん
08/01/22 17:39:15
>今更Cってどうなのよって言う奴ってどうなのよw
せめてC++だろ。
305:デフォルトの名無しさん
08/01/22 19:24:14
>>304
Linuxとかの/usr/binの中の多くはまだまだ、そしてこれからもCな現実。
306:デフォルトの名無しさん
08/01/22 19:26:17
TObjectListがどうしても理解できなかったので、
std::vectorを使うことにしました。ありがとうございました。
って>>302、あなた誰なのよ
307:デフォルトの名無しさん
08/01/22 21:06:10
>>302たまに出てくるあれだな、
自分が答えてないのにえらそうな態度とりたい香具師
308:デフォルトの名無しさん
08/01/22 21:18:11
303 != 301 と打ち間違ったのだと思ってた
309:デフォルトの名無しさん
08/01/22 21:41:49
( 303 != 301 ) == True;
310:デフォルトの名無しさん
08/01/23 00:50:32
>>305
Cなんて誰でもできる
もっと他のがいい
311:デフォルトの名無しさん
08/01/23 09:49:53
じゃあDelphiやれば
312:デフォルトの名無しさん
08/01/23 15:12:02
すでにフォームに貼り付けてあるTImageにpublicな変数を追加したいのですが
どうやったらできますか?
313:デフォルトの名無しさん
08/01/23 15:19:26
TImage継承してフォーム上のTImageを置き換えてしまう。
置き換えるのは
URLリンク(delwiki.info)
コレを書き直すか、パスカルユニット新規作成してプロジェクトに追加する
314:デフォルトの名無しさん
08/01/23 15:25:14
>>313
あー!
こんなことできるんですね。
つかやっぱTimageを継承してクラス作る以外にないですよね
ありがとうございました
315:デフォルトの名無しさん
08/01/23 15:36:46
>>314
Tag プロパティでは足りないの?
文字列ならCaption・Hintに突っ込むとか
ポインタなら Components に突っ込むとか
316:デフォルトの名無しさん
08/01/23 15:40:13
自分なら、ポトペタするときはTPanelを貼り付けておいて、
TImageEx *ImageEx = new TImageEx(this);
ImageEx->Align = alClient;
ImageEx->Parent = PanelImage;
とかする。
317:デフォルトの名無しさん
08/01/23 15:40:15
32bit幅の値ならproperty TComponet.Tag : Integerを使うという手も
318:デフォルトの名無しさん
08/01/23 15:45:33
>>314
Tagの他にもう1つほしかったんですよ!
>>316-317
みなさんいろいろ工夫してるみたいですね
んで、Tagじゃ足らんからHelpContextも使おうっておもってたんですが
TImageにそれないんですよね・・・
ちなみに、Hintも使ってます・・
319:デフォルトの名無しさん
08/01/23 15:54:55
この際、Tagにクラスポインタを‥‥
320:デフォルトの名無しさん
08/01/23 16:01:02
Tagにポインタをぶち込むのも考えてましたが・・・
できればTImageだけの閉じたあれでしたかったので
ちょいと皆様に良い知恵があったら戸おもいかきこみいいfなsんふぁ
321:デフォルトの名無しさん
08/01/23 16:02:46
>Tagにポインタをぶち込むのも考えてましたが・・・
たしかに、これではクラス派生のOOPにならないから良くない。
316の場合、綺麗にファイル単位でクラスを分けれて作成&メンテしやすいお。
322:デフォルトの名無しさん
08/01/23 16:09:46
>>321
えーっと>>316さんの策はとりあえずフォームに
Imageを貼り付ける場所にPanelを貼り付けて
んで実行時にPanelをコンテナとしてその上にTImageを継承したクラスを
のっけるってことでいいですか?
323:デフォルトの名無しさん
08/01/23 16:18:38
>>322
その通りです。
コンストラクタでのっけてます。
deleteはしなくてもおk。
TImageクラスとかの名前を、
TImage_(用途).cpp とか T(用途)Image.cpp
にしてまつ。
324:316
08/01/23 16:19:57
>コンストラクタでのっけてます。
の場合もありますし、
何度もデータを入れ替えしたい場合は、
キッチリ削除したいので、
Form::init メソッドでのせる場合おあるかな。
325:デフォルトの名無しさん
08/01/23 16:33:05
>>323
なるほどなるほど。
しかしこの場合はイベントハンドらはどうしていますか?
予めダミーっぽいTImageでClickとか設計時に作っちゃってから
TImageExのnewしてからわりあててますか?
326:316
08/01/23 16:57:30
>>325
そうそう、目が効いてますね。
イベントハンドラがちょっぴりテクニックです。
TForm1に、
>void __fastcall Event_OnClick(TObject *Sender);
みたいな感じで手書きでイベントハンドラ作っておきます。
そうしてTImageExをnewしたあとに、イベントハンドラを外からセットします。
ちょっと読むと、え”ーという感じかもしれませんが、意外にこれに利点があります。
1.イベントハンドラの無い派生クラスなので、複数画面で共有しても全く弊害無し
2.Form1のイベントハンドラとして書くので、TImageExと他の例えばTGridExと
それらのオブジェクトが連携するように記述できる上、
それらのオブジェクトが互いに参照しない
327:デフォルトの名無しさん
08/01/23 17:02:03
派生クラス作るんなら派生クラス内にイベント書いてコンストラクタで入れちゃえばいいんじゃないん?
class TxxImage : public TImage
{
public:
TxxImage() : TImage() { OnClick = TxxImageClick; }
private:
TxxImageClick(TObject* Sender) { ... }
};
328:316
08/01/23 17:04:56
>>327
いや、やっぱ、イベントハンドラはForm1のものとして書いたほうが、色んなオブジェクトにアクセスできるお。
逆にTxxImageに色んなオブジェクトアクセス参照用にプロパティ付けようもんなら、
TxxImageが依存するものが増えちゃう。
329:デフォルトの名無しさん
08/01/23 17:08:48
>>326
なるほろ。イベントハンドらの指定はわかりました
利点についてはまだ納得できるレベルに到達していないので精進致します
>>327
それならイベントからフォームをアクセスしたい場合に困ったりしないですか?
330:デフォルトの名無しさん
08/01/23 17:11:07
あー、イベントから他のコントロールへのアクセスは考えてなかったわ/ ,' 3 `ヽーっ
331:316
08/01/23 17:13:40
氏ぬんじゃない
332:デフォルトの名無しさん
08/01/23 17:18:43
しかし皆さん色々とうまい方法を持っていますよね
久々に良い勉強になりますた(;´Д`)
333:デフォルトの名無しさん
08/01/23 18:23:00
BCB5で起動直後メインウィンド以外のフォームをShowModalで表示するとき
一番いいと思われる方法はどんなものがありますか?
おしえてエロい人!
334:デフォルトの名無しさん
08/01/23 18:27:55
起動直後に、
Form2->ShowModal();
335:デフォルトの名無しさん
08/01/23 18:31:40
>>334
ありがとうエロい人!
Application->Run();の直前あたりに書くの?
そうするとメインウィンドは表示されるの?
336:デフォルトの名無しさん
08/01/23 18:36:18
マルチスレッドじゃないんだから、Runの前じゃそこでダイアログが表示されるだけだろ
フォームにタイマーでも入れて、最初の1回目でやればいいじゃない
337:デフォルトの名無しさん
08/01/23 19:01:25
Idle
338:デフォルトの名無しさん
08/01/28 09:12:55
OnCreateでメッセージ投げるとか
339:デフォルトの名無しさん
08/01/29 00:39:40
>333はきっとスプラッシュウィンドウを出したいんじゃないかな、と勝手に考えてみたり。
Delphiならそのフォームをinitialization部でCreate/Show/Updateして、そのフォームの
OnDeactivateイベントでReleaseとするのが定石なんだが。C++Builderだと
initialization部にあたるのはどこなんだろう?
340:デフォルトの名無しさん
08/01/29 08:42:09
スプラッシュなら、それこそ何時でも好きなタイミングで表示してくれって感じだが。
341:デフォルトの名無しさん
08/01/29 09:58:47
initialization部相当は
クラスのインスタンスをグローバル領域で定義して、そのコンストラクタでやるとか
342:デフォルトの名無しさん
08/01/29 19:25:47
>>339
WinMain関数のApplication->Initialize();の後ろ辺りでnew/Show/Update。
表示後にメインフォームとか作ってApplication->Run();の前辺りでClose
343:デフォルトの名無しさん
08/01/29 20:02:10
だからcloseはIdleでやるつってるだろ!!このばかちんが!
344:デフォルトの名無しさん
08/01/29 21:02:43
C++Builder 6を使っているのですが。
TPageControlで最後のページを削除した後、
先頭のページがアクティブになってしまいます。
そうでなくて、削除したページの一個前をアクティブに
したいのですが、どうすれば良いでしょうか。
以下のコードだと、一瞬変な表示になってしまいます。
ちなみに最後のページ以外は、普通にdeleteすれば
そのような現象はおきません。
//最後のページを削除
TTabSheet *pLastPage = PageControl1->Pages[PageControl1->PageCount -1];
delete pLastPage;
//先頭のページがアクティブになってしまうので、
//最後のページがアクティブになるように選択
PageControl1->ActivePageIndex = PageControl1->PageCount -1;
345:デフォルトの名無しさん
08/01/30 03:38:47
一個前のページをアクティブにしてから削除してもダメ?
346:デフォルトの名無しさん
08/01/30 08:40:05
スプラッシュウィンドウごとき、そんなに凝ったり議論したりするものでない。
出て消えれば、おk。
347:デフォルトの名無しさん
08/01/30 10:01:09
>>345
344です。
一個前をアクティブにしても、結局先頭がアクティブになってしまいます。
C++BuilderのIDE自体は何気に出来てるのに、そのコンポーネントで出来ないとは、
いやな感じだ。
348:デフォルトの名無しさん
08/01/30 10:13:34
TPageControl::RemovePage()をオーバーライドしないと無理っぽい
349:デフォルトの名無しさん
08/01/30 10:22:34
delete pLastPageの前に、pLastPage->PageIndex = pLastPage->PageIndex - 1 を入れれば?
350:デフォルトの名無しさん
08/01/30 10:36:25
>>349
VCLのソース見るとタブ削除時にページ切り替え動作やってるから駄目だと思うお
351:デフォルトの名無しさん
08/01/30 10:37:23
いや。ソース見た上で言ってるよ。
352:デフォルトの名無しさん
08/01/30 10:45:53
ああ、削除前に最後のページを後ろから2番目に移動させるのか。
353:デフォルトの名無しさん
08/01/30 10:50:09
削除前にタブの順番が変わるけど即時描画じゃないから、入れ替え動作は全く見えないはず。
354:デフォルトの名無しさん
08/01/30 14:39:38
役に立たない答えばっかりですね・・・
355:デフォルトの名無しさん
08/01/30 14:44:27
君が役に立つ答えを言ってもいいんだよ
356:デフォルトの名無しさん
08/01/30 14:53:09
349ので何か不満あんのか
357:デフォルトの名無しさん
08/01/30 14:54:52
>>356
それでいけるはず。
C++Builder6って結構モッサリした仕様のコンポーネント多いよなぁ。
358:デフォルトの名無しさん
08/01/30 16:09:43
344です
//最後のページを削除
TTabSheet *pLastPage = PageControl1->Pages[PageControl1->PageCount -1];
pLastPage->PageIndex = pLastPage->PageIndex - 1
delete pLastPage;
>>349のやり方ですが、大体の場合はうまく行くのですが、
タブをたくさん作って、最後のタブをユーザの操作などで何回も消していくと
タブが表示されなくなり、その状態でタブ表示のスクロール見たいのを
操作すると、中途半端にタブが描画されてしまいます。
Refresh()やInvalidate()などを使っても描画されません。
やはり、最後のタブを消したときに、先頭がアクティブになるのは、
この辺がうまく行かないから、そうしたのではないと考えてしまいます。
359:デフォルトの名無しさん
08/01/30 16:45:16
そういえばIDEのエディタのタブもそうなるな
360:デフォルトの名無しさん
08/01/30 17:00:29
最後のタブ消した時だけ PageControl1->ScrollTabs(1) とか
361:デフォルトの名無しさん
08/01/31 20:25:56
344です
>>360 の内容を参考にして見てソースを修正したところ、
一瞬表示がびくつくのと、右端で最後のタブの表示が半分隠れる
場合があるのですが、描画の不具合などがなくなりました。
もう少し、きれいに動作すればいいのですが。
ScrollTabsの引数は -1 の方が良いみたいです。
//最後のページを削除
TTabSheet *pLastPage = PageControl1->Pages[PageControl1->PageCount -1];
pLastPage->PageIndex = pLastPage->PageIndex - 1
PageControl1->ScrollTabs(-1);
delete pLastPage;
362:デフォルトの名無しさん
08/02/02 21:10:47
ビルダー落としたんだが
各サイトの説明が詐欺でできません。
XPのコントロールパネルからのシステムなんて項目ありませんが
どうするん?
363:デフォルトの名無しさん
08/02/02 21:30:01
もういいやめたクソが
シネよ
364:デフォルトの名無しさん
08/02/02 21:33:18
>>362
PC初心者
URLリンク(pc11.2ch.net)
365:デフォルトの名無しさん
08/02/02 23:23:26
春かと思った
366:デフォルトの名無しさん
08/02/02 23:26:50
うちの大学は春休みだよ
367:デフォルトの名無しさん
08/02/03 10:56:49
まったく初心者に回答すらやらないなんてお前ら醜態をさらしているのか?
俺が醜態を晒しているんじゃない、答える側はお前らだからな。
器の小ささを披露している書き込みが二つだな、恥ずかしい。
368:デフォルトの名無しさん
08/02/03 10:59:29
そのコピペいただき
369:デフォルトの名無しさん
08/02/03 11:02:45
コピペじゃねぇよ
お前がいただくならお前がコピペすんだろ?
まったく、上の奴は相談室で回答しないならここに来るなよ
370:デフォルトの名無しさん
08/02/03 11:03:26
上の奴ってのは>>367とかだよ
371:デフォルトの名無しさん
08/02/03 11:04:33
>>366だよ
372:デフォルトの名無しさん
08/02/03 11:06:50
おっと知的障害の方でしたか
失礼しました
373:デフォルトの名無しさん
08/02/03 11:10:04
>>372
はい身障者差別発言、
まったくどこまで・・・
374:デフォルトの名無しさん
08/02/03 11:11:06
いや文盲か
375:デフォルトの名無しさん
08/02/03 11:12:40
他所でやれ
376:デフォルトの名無しさん
08/02/03 11:16:35
相談室に俺相談者、俺は場違いじゃないけど、チャチャ入れは場違いだ
普通の初心者レベルの質問に春だとか言う場違いな人は荒らしだな
377:デフォルトの名無しさん
08/02/03 11:20:23
他所でやれ
378:デフォルトの名無しさん
08/02/03 11:22:31
もう自演で言い返すのはやめろ、また醜態さらしか。
見ててくだらなすぎる。もともとお前は場違いなんだから、
もう言い返しに必死になってないで去れよ
379:デフォルトの名無しさん
08/02/03 11:26:39
Windowsのコントロールパネルの話ならPC初心者板の範疇だろ。常識的に考えて。
380:デフォルトの名無しさん
08/02/03 11:27:03
暇なの?俺も暇。
381:デフォルトの名無しさん
08/02/03 11:33:30
まだ突っかかってくる辺りがもう・・・
もう最後な、回答してやるのは。
>>379
そんなもん書き方だろ、ボーランドの初期設定からのコントロールパネルの話だし、何言っちゃってるの?
>>380
公言して相手に見せるために言っている辺りがもう・・・
はいここでもうお前らみたいなのとの会話終了、
二度と来るな、書き込みしても放置する
382:デフォルトの名無しさん
08/02/03 11:36:29
(・∀・)
383:デフォルトの名無しさん
08/02/03 11:38:07
ここまで俺の自演
384:デフォルトの名無しさん
08/02/03 11:43:34
ああ、最後にもう一つだけ言っとく。
先に突っかかってきたのはお前らだ。
俺は質問しただけだから、いい迷惑だ。
お前らは醜態から始めちゃったわけだ。
自分で招いておきながらそれに言い返したりして、まったくアホか。
385:デフォルトの名無しさん
08/02/03 11:52:14
362 名前:デフォルトの名無しさん[] 投稿日:2008/02/02(土) 21:10:47
ビルダー落としたんだが
各サイトの説明が詐欺でできません。
XPのコントロールパネルからのシステムなんて項目ありませんが
どうするん?
363 名前:デフォルトの名無しさん[] 投稿日:2008/02/02(土) 21:30:01
もういいやめたクソが
シネよ
364 名前:デフォルトの名無しさん[sage] 投稿日:2008/02/02(土) 21:33:18
>>362
PC初心者
URLリンク(pc11.2ch.net)
-----------------------------
これで完結してるやん
386:デフォルトの名無しさん
08/02/03 12:29:09
>362とか書いてあることがマジ理解不能なんだけど、俺の日本語能力はここまで落ちてしまったのか?
387:デフォルトの名無しさん
08/02/03 12:41:14
>>386
少しはエスパー能力を磨いてみては?
388:デフォルトの名無しさん
08/02/03 13:06:41
春かと思った
389:デフォルトの名無しさん
08/02/03 13:13:06
ほいで、誰か質問の意味がわかったのか?
390:デフォルトの名無しさん
08/02/03 13:28:53
>>389
WindowsXPのコントロールパネル内のシステムのアイコンが見つけられません><
じゃないん?
391:デフォルトの名無しさん
08/02/03 13:32:37
あ、それでいいのか。ボーランドのどうこうって言うからまた別物かと思ってた。
392:デフォルトの名無しさん
08/02/03 22:05:28
開発環境はTurboC++Builderで、
DirectXを使うのにお勧めな環境やライブラリを教えてください
393:デフォルトの名無しさん
08/02/03 22:25:42
Direct3Dとかでゲーム開発するならVisualStudioがおすすめかな>環境
あくまでもBCBでやりたいならとりあえず↓あたり
URLリンク(www.clootie.ru)
394:デフォルトの名無しさん
08/02/03 22:33:00
>>393
ありがとう 調べてみます
395:初心者
08/02/05 21:00:06
Button に Color プロパティがありませんぞ。
どうやって色を設定するのでしょうか。
396:デフォルトの名無しさん
08/02/05 21:47:38
TButtonをOwnerDrawするかTGraphicControlを派生して自作
397:デフォルトの名無しさん
08/02/05 21:48:32
TButtonをOwnerDrawする方法はぐぐればDelphiのソースが簡単に見つかる
398:デフォルトの名無しさん
08/02/05 22:47:16
>395
まぁそういうことなのだが、Microsoft的にはそういうことをしてほしくないらしい。
VisualStyleを適用するとOwnerDrawもうまくいかないような。
399:デフォルトの名無しさん
08/02/06 12:00:36
TImageListで設計時にイメージを追加するとイメージがTImageListのWidthやHeightより
大きい場合縮小して格納とかできますが
これをコードで追加する場合はどうすればいいですか?
400:デフォルトの名無しさん
08/02/08 10:32:26
エクスプローラのフォルダツリーのようにTListViewにフォルダツリーを作ったのですが
そこで指定したパスのノードを開く方法を教えてください
401:395
08/02/09 14:14:51
いろいろありがと。>396 >397 >398
visual studio だと簡単にできるのになぁ。
XMLだとか
ドラッグアンドドロップだとかも
簡単にはできないのはちょっと不満。
402:デフォルトの名無しさん
08/02/09 14:36:48
Visual StudioってかC#だろう?簡単に出来るのは。
403:デフォルトの名無しさん
08/02/09 14:38:31
C# つか.NETか。
404:デフォルトの名無しさん
08/02/09 14:48:49
>>401
VSでVC++とMFCでそのセリフを吐いてみろ
自分がどれだけラクチンにC++を書いてるのかわかる
405:デフォルトの名無しさん
08/02/09 14:59:18
ダイアログベースならよゆーっすよw
406:デフォルトの名無しさん
08/02/09 15:19:56
配置が楽なだけじゃん
407:デフォルトの名無しさん
08/02/09 16:31:18
いや、でも、VCLより確実に楽
408:デフォルトの名無しさん
08/02/09 16:39:25
色ボタンなんてコンポ拾って張りゃいいじゃん
409:デフォルトの名無しさん
08/02/09 16:45:52
それかえって手間だと思う。
コンポーネントの管理がやりづらいからなぁ。
410:デフォルトの名無しさん
08/02/09 16:53:30
一回登録するだけじゃん。てかそんな事のためにVC使うとか自体あほらしいけど。
411:401
08/02/09 17:18:45
>>404
それそれ。
MFCのウワサは聞いてるから
最初から手を出してない。だから C++ は
C++ builder に手を出した。
でも C# はホント、楽だよ。
412:デフォルトの名無しさん
08/02/09 17:43:42
日本語より英語は楽、とかいっても意味はないね
413:デフォルトの名無しさん
08/02/09 17:55:33
( ゚д゚ ) マアマア
414:デフォルトの名無しさん
08/02/09 18:08:35
言語仕様にライブリラリを含めた総合的な生産性で判断して楽とか
言ってんじゃないの?
何、その日本語より英語は楽とかとう例え。頭悪そう。
415:デフォルトの名無しさん
08/02/09 18:13:11
楽とかとう ( ゚д゚ ) マアマア
416:デフォルトの名無しさん
08/02/09 19:49:34
>>411
.NET系の生産効率の高さは周知だよ
C#に限らずVBでもC++/CLIでもね
WinForm使う限りGUIはラクチン
CGもついてるし
なんだけどね……
初学者がいきなりVC+MFCは敷居高すぎるのは確か
BCBなんかでC/C++に慣れてから
MFC+Win32APIの海へ漕ぎ出した方がいい
417:デフォルトの名無しさん
08/02/09 20:44:03
コンポーネントを1回登録するだけ
マジでそれが理想だけど色々と面倒だよね、あるプロジェクトだけで使えるコンポーネント
とか簡単に指定できればいいのに
418:デフォルトの名無しさん
08/02/09 21:31:36
色々ってナニよ。1回登録したら再インストールするまで何もしてないぞ。
419:デフォルトの名無しさん
08/02/09 22:00:36
ぜーんぶまとめて1つのパッケージに入れちゃう人もいるみたいだねぇ。
420:デフォルトの名無しさん
08/02/10 01:06:34
BCBを再インスコしてコンポーネントを入れてたときに作ったコンポーネントを使ってないプロジェクトを開くとエラーになる
421:デフォルトの名無しさん
08/02/10 02:52:19
名前ぶつかったり、コンポーネントは厳選しないとろくなことがないよ。
422:デフォルトの名無しさん
08/02/10 08:03:03
>MFC+Win32APIの海へ漕ぎ出した方がいい
これをやる必然性が0。
>.NET系の生産効率の高さは周知だよ
大丈夫、ドトネトの事は世の中に知られてないから。
>C#に限らずVBでもC++/CLIでもね
これもウソ。
C丼のバージョンうp嵐どころか、managed C++がヒックリかえったね。
ブビに至ってはユーザーがいないから、スクリプトブビ@ドトネトを復活させるとか、割るいとこ鳥。
423:デフォルトの名無しさん
08/02/10 09:17:21
門外漢がドトネトを語るとこんな事言ってしまうという好例
424:デフォルトの名無しさん
08/02/10 14:18:49
VCLの方にろくな進歩がないからストレス溜まってるんだよ
次こそはやっと完全にUnicode対応するそうだけど、おせーよw
425:デフォルトの名無しさん
08/02/10 14:25:28
IBXでUTF-8を楽に扱えるようになるのかい?
426:デフォルトの名無しさん
08/02/10 14:29:25
IBXはーどーだろ、あれそもそももう期待しない方がいいんじゃね
427:デフォルトの名無しさん
08/02/10 17:58:28
>IBXでUTF-8
今でも使ってるよ。
428:デフォルトの名無しさん
08/02/11 00:03:36
再インストールする羽目になった・・・。
また、いちいちプロジェクトファイル編集しなきゃ駄目なのか。
必要ないのに使ってないコンポーネントのlibまで追加するのやめてくれないかなぁ、うざすぎる。
429:デフォルトの名無しさん
08/02/11 00:20:13
TntのDBコントロールにShiftJIS外の文字ぶち込むと盛大に文字化けしてくれる‥‥>UTF-8
430:デフォルトの名無しさん
08/02/11 00:20:44
bprファイルをIDEから編集してもちゃんと保存されないし酷い仕様だよな
後からのことまーったく考えられてないw
431:デフォルトの名無しさん
08/02/12 15:15:59
おしえてください
432:デフォルトの名無しさん
08/02/12 15:16:50
// 1 . {. . .ヽ. . ヽ. . ',. .ヽヽ
/ .:/ ハ: :!: :.:ト、:.:. :\:...l:.. :}: : |_⊥ 、
j . {: .:{ :l、:l、: :.ト-ヽ、_:..`ヽ、j__イ_つノ
l 1:ハ.::{ゝl=くヽ:.ヽ トィjr}Tァ┬ァ:.:´|
|ハ :ヽlァ{トィrj \i ー_'っ /:.イ-、:。:|
ヽ。ハ^rぅ' 丶 ` ノ', く } }:.ol゜ o
。 `ハ 。 {ァ´ヽ ,ー o':.へl お客様の中にエスパー様は
゜ ´ノi\ ー' ィ:;:.ィ/|/゜ 。 いらっしゃいませんか??
。 o 。 ゜ハヘ;:>ー--<_rv〈、_
/ ̄ヽ \/ll }l}`'^'ト、
/ ::Y77l j l !_`7
l, ---::、〉 jl l ハゝ-i
ヽ Vi } ,' ノ, ー_ヽ
} , -‐ァl ノ / レ´,.- j
j イ !l / / ハ -,.く!
433:デフォルトの名無しさん
08/02/12 15:23:58
いいからさっさと教えやがってください
434:初心者
08/02/15 13:57:33
vista + builder2007 だけど
デバッグモードで実行して
open dialog を開いて
詳細表示にすると
builder が落ちちゃう。
435:デフォルトの名無しさん
08/02/15 14:04:58
そうですか
436:デフォルトの名無しさん
08/02/16 00:33:19
Vistaを窓から投げ捨てろ
437:デフォルトの名無しさん
08/02/22 19:35:04
C++Builder 2007の体験版みたいなのないですか?
RAD Studioは今更JSharpのランタイムが必要とか、トチ狂ったことぬかすので
あまり入れたくありません
438:デフォルトの名無しさん
08/02/22 23:17:33
単独のトライアルはないけど、いずれにせよIDEが使ってるんでJ#ランタイムと.NETは必要だからなぁ。
Turbo C++ Explorerでも同じこと。あきらめれ。
439:デフォルトの名無しさん
08/02/23 12:06:26
しかし、なんでJ#なんて使ったんだろうね
MSですら早々に見捨てたのにw
440:デフォルトの名無しさん
08/02/23 15:10:16
IDEのリファクタリングでMS-Javaをつかった流れらしい。APIを呼び出せるのがMS-Java→J#となった理由だと。
441:デフォルトの名無しさん
08/02/24 09:03:08
Lazarusでさえネィティブでリファクタリング搭載してるのにね
442:デフォルトの名無しさん
08/02/25 14:45:13
Indy10 TIdTcpServerの使い方が解らないです。
URLリンク(codezine.jp)
ここを参考にIndy9のdelphiソースをIndy10とBuilder2007に置き換えようとしています。
TCPサーバの例 以下行をどう記述すればよいのでしょうか。詳しい人教えてください。
// 接続しているクライアント全員に str を送信する
procedure TForm1.BroadcastMessage(str : string);
var
Count: Integer;
List : TList;
begin
List := IdTCPServer1.Threads.LockList;
try
for Count := 0 to List.Count -1 do
try
TIdPeerThread(List.Items[Count]).Connection.Write(str);
except
TIdPeerThread(List.Items[Count]).Stop;
end;
finally
IdTCPServer1.Threads.UnlockList;
end;
end;
443:デフォルトの名無しさん
08/02/26 17:55:53
TListViewで任意のカラムを非表示にする方法を教えてくださいよ
444:デフォルトの名無しさん
08/02/26 22:54:58
WinXP BCB5でこんなコードを書くと意図しない結果が返ってくるんですけど、
使い方が悪いんでしょうか?
型を変えてみようとは思うけど、知ってる方いたら教えていただきたい
std::vector< bool > vectorbool;
for( int i = 0 ; i < 12 ; i++ )
vectorbool.push_back( true );
vectorbool.insert( vectorbool.begin(), false );
bool test = vectorbool[12]; ← falseが帰ってくる。
445:デフォルトの名無しさん
08/02/26 23:44:17
>443
簡単にはいかないんじゃないかなぁ。ListView_DeleteColumn/ListView_InsertColumnの
組み合わせで頑張るしかないと思う。
446:デフォルトの名無しさん
08/02/27 10:47:50
>>443
Width=0
>>444
あたりまえの結果じゃん。
マジで理解できなのか、それとも釣りなのか?
マジで理解できないのなら、初心者スレに逝った方が良し。
447:デフォルトの名無しさん
08/02/27 10:55:47
目が悪いなら眼科池。頭が悪いなら仕方ないけど。
448:デフォルトの名無しさん
08/02/27 11:08:47
>>446
当たり前の結果なの?
もう一度勉強してみるよ・・。
449:デフォルトの名無しさん
08/02/27 11:16:19
6はちゃんとtrue返すから、5のバグだと思うけど、
それとは関係なくvector<bool>は使わないほうがいいと、
なんかの有名な本に書いてるらしい。
450:デフォルトの名無しさん
08/02/27 11:23:24
>それとは関係なくvector<bool>は使わないほうがいいと、
kwsk
451:デフォルトの名無しさん
08/02/27 12:06:02
>>450
&v[0] が bool* ではない
452:デフォルトの名無しさん
08/02/27 13:25:42
>>449
Effective STLの第18項だな
vector<vool>はproxy classを使っているのでよくないんだと
453:デフォルトの名無しさん
08/02/27 13:26:49
>proxy class
サンクス & kwsk
454:デフォルトの名無しさん
08/02/27 13:36:38
proxy class=代理クラス
More Effective C++ 項目30
一般的にはクラスの中にクラスを作って普通ではできないような
操作を行う。
455:デフォルトの名無しさん
08/02/27 14:56:53
442です。Web検索で中華サイトや英文サイトを彷徨った結果、なんとか解決しました。
456:デフォルトの名無しさん
08/02/27 16:47:15
結局おまえらって糞の役にも立たなかったね。あばよ
457:デフォルトの名無しさん
08/02/27 22:48:08
>>449
ありがとう。
VCでやってみてもtrueでした。
なんとなくわだかまりが取れました。
458:デフォルトの名無しさん
08/02/27 22:49:50
つまりRogue Waveのバグか
こいつバグ多いねえ
459:デフォルトの名無しさん
08/02/28 14:15:17
std::fstreamはstd::iostreamから派生しており、std::iostreamは
std::ostreamとstd::istreamから多重継承しています。
しかしstd::ostreamを受け取る関数にstd::fstreamのオブジェクトを
渡してCodeGuardを掛けると多量のエラーメッセージが実行時に
出ます。これって仕方ないのですか?
460:デフォルトの名無しさん
08/02/28 15:04:15
はい
461:デフォルトの名無しさん
08/02/28 15:19:28
糞仕様だな。アップキャストにも対応してないのか
462:デフォルトの名無しさん
08/02/28 15:32:24
はい
463:デフォルトの名無しさん
08/03/01 22:36:44
もしかして、BCBってboost::trim()使えない?
464:デフォルトの名無しさん
08/03/02 14:12:27
はい
465:デフォルトの名無しさん
08/03/03 08:23:42
いいえ
466:デフォルトの名無しさん
08/03/03 09:36:59
バージョンくらい書けよ
467:デフォルトの名無しさん
08/03/03 10:12:33
BCB5でTQueryを使って2秒おきにデータを取得しているのですが
数分放置しておくとソフトが落ちてしまいます。
やっていることは
Query->SQL->Clear( );
Query->SQL->Add( "select * from table1" );
Query->Open( );
Query->First( );
Query->Next( ); 30件くらい
Query->SQL->Clear( );
Query->SQL->Add( "select * from table2" );
Query->Open( ); ここで落ちます
Query->First( );
Query->Next( ); 10件くらい
と1つのモジュールで同じTQueryで2つのテーブルを読んでいます
TQueryを使う際になにか注意事項とかありましたら教えてください
468:デフォルトの名無しさん
08/03/03 10:15:17
>>467
例外とかチェックした?
469:デフォルトの名無しさん
08/03/03 10:17:18
2秒でデータを取得が終わる前に、QueryのOpen() を実行したらデータセットがメモリから破棄されて、そこにアクセスしたr落ちるんじゃね?
>TQueryを使う際になにか注意事項
2秒以内に処理が終わらなかったら、処理をスルーするって工夫要るけど。
それに加えてQuery使いまわすんじゃなくて、作り直したら?
Query = new TQuery(this);
try {
Query->SQL->Clear();
//処理
__finally {
delete Query;
}
470:デフォルトの名無しさん
08/03/03 10:27:48
>>468
try内でやっているのですがcatchにはいかずにそのまま落ちてしまいます
>>469
TTimerで2秒間隔でやっていてTimerに入るとタイマーを止めているので
一応DB読み込みが再度呼ばれることはありません。
Queryでテーブル2つを読むより毎回newしたほうがいいのでしょうか?
471:467
08/03/03 10:37:14
ちなみに、Query1でtable1、Query2でtable2と
Queryを2つにしてやってみたのですがやっぱり強制終了してしまいます
ソフト起動時に設定
Query1->SQL->Clear( );
Query1->SQL->Add( "select * from table1" );
Query2->SQL->Clear( );
Query3->SQL->Add( "select * from table2" );
{
Query1->Open( );
Query1->First( );
Query1->Next( );
Query1->Close( ); ここで必ず強制終了します
Query2->Open( );
Query2->First( );
Query2->Next( );
Query2->Close( );
}
472:デフォルトの名無しさん
08/03/03 10:40:44
レコード件数は可変?
1回多くNextしたりするとドカンと落ちる現象はあったような。
473:467
08/03/03 10:50:50
>>472
可変ではありますが
query->First( );
for( int i = 0; i < query->RecordCount; i ++ ){
query->FieldByName
query->Next( );
}
としています・・・
ちなみに落ちる場所は同じなのですがタイミングはそれぞれで
1分で落ちる時もあれば5分で落ちる時もあります。
1回目で落ちるということは今のところありませんが・・・
474:デフォルトの名無しさん
08/03/03 10:52:56
>for( int i = 0; i < query->RecordCount; i ++ ){
これ、マズイとオモ。
>while (!Query->Eof) {
みたく、次が有るか無いかの判定じゃないと。
上にも書いたが無いのにNextすると、catchできずにドカンと落ちる。
475:467
08/03/03 10:56:59
>>474
うわー
やっぱりTQueryがまずいんじゃなくて処理がまずいですか・・・
今はレコード数に変化がなくその処理でレコード数が同じだったからいいとおもってましたが
見方がわるかったんですね、ありがとうございます。
その方法で試してみます。
476:467
08/03/03 11:06:02
うう、やっぱりCloseで落ちてしまいます・・・
しかし>>474さんのやりかたはヘルプにも書いてあったので参考になりました。
ちなみにtable1の方のQueryをためしにnewして動的に作成してやってみたところ
今のところ落ちてないです。
うーん、設計時に追加したのと動的にnewしたものと何が違うのかなあ・・・
これtable2もnewで作成したqueryを使う方が安全なのかな・・・
477:デフォルトの名無しさん
08/03/03 11:11:49
>query->FieldByName
してる最中に、該当レコードが消えてる可能性は無いの?
該当レコードが消えるなら、RequestLive を falseにしてる方が良いかなぁ。
478:467
08/03/03 11:30:19
>>477
レコードが消えることはありませんがRequestLiveはtrueにしてます・・・
やっぱりnewで作ったqueryでやると落ちないのですが
これってRequestLiveがfalseだからなのでしょうか???
ちょっと試してみます
479:デフォルトの名無しさん
08/03/03 11:33:28
>newで作ったquery
>RequestLiveがfalse
落ちる原因は分からないが、上記2つを揃えるQueryは氏ぬ程安定する。
480:467
08/03/03 11:43:17
>>479
確かにnewでつくったqueryでは全く落ちなくなりました。
ちなみに、試しに当初のに戻して設計時に追加したqueryで
RequestLiveをfalseにしてやっているのですが
これもまた今のところ落ちていません。
これ2秒毎にDBを読んでいるのですが、DB読み込み時にnewするのと
起動時の最初にnewするのとどちらがいいでしょうか?
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のサイズはそれなりのサイズになっとるかね?
ディレクトリ・条件で無駄なあれがあったら削除してみるとか
694:デフォルトの名無しさん
08/04/24 18:10:39
1.2Mくらいの実行ファイルが出来てます
他の人に作成してもらったものとは30kくらい大きいです
条件は不要なものがあったので削除してみましたが、変化無しでした
695:デフォルトの名無しさん
08/04/24 19:15:13
obj tds dsk とか不要ファイルを全部消してみたら?
696:デフォルトの名無しさん
08/04/24 19:39:56
BDS2006/2007は、単独実行exeを作成するにはオプション3箇所変更する必要あるけど、
Builder5/6は2箇所でいいのかな?
オプションをもう一度目をこらして確認してから、再構築かな。
697:デフォルトの名無しさん
08/04/24 23:02:39
プロジェクトファイルが変になってるとか
新規プロジェクトで再構築はどうかな
698:デフォルトの名無しさん
08/04/25 09:02:21
うおおありがとうありがとう
いろいろやってみたけどどうも上手くいかなかったです
とりあえず再インストールしてやってみます
699:デフォルトの名無しさん
08/05/07 14:15:13
FindFirstでファイルの列挙を取得しています
自分のPCだと問題なく取得できるのですが、ファイルサーバだと取得できません。
調べてみたところTSearchRecのAttrがものすごく大きい値になってしまっているのが原因のようです。
回避策などあればご教授お願いいたします。
TSearchRec sr;
int attr = faAnyFile;
if (FindFirst(Edit1->Text + "\\*.EXE", attr, sr) != 0)
{
return;
}
do
{
if ((sr.Attr & attr) != sr.Attr)
{
continue;
}
// 処理
} while (FindNext(sr) == 0);
FindClose(sr);
}
700:699
08/05/07 14:19:19
うお、字下げがひどい
TSearchRec sr;
int attr = faAnyFile;
if (FindFirst(Edit1->Text + "\\*.EXE", attr, sr) != 0)
{
return;
}
do
{
if ((sr.Attr & attr) != sr.Attr)
{
continue;
}
// 処理
} while (FindNext(sr) == 0);
FindClose(sr);
701:デフォルトの名無しさん
08/05/07 14:41:59
TSearchRec.Attrは実装的には0x7FFFまで取りうるはず。
(winnt.h 5208行以降とWindowsSDK WIN32_FIND_DATAのドキュメント参照)
702:デフォルトの名無しさん
08/05/07 15:22:44
Attrってフラグの組み合わせなのに、大きさがどう関係あるの?
> if ((sr.Attr & attr) != sr.Attr)
あとこれの意図は?
703:デフォルトの名無しさん
08/05/07 15:29:07
ああfaAnyFileが全部のフラグカバーしてないじゃないかって事か
704:デフォルトの名無しさん
08/05/07 15:36:38
>>701
確認しました。
圧縮ファイルになっていました。
>>703
ご指摘のとおりです。
顧客の設定がわからないため、とりあえず属性の条件部分をコメントにして動くようにします
705:デフォルトの名無しさん
08/05/07 17:02:28
C++Builder6で、
膨張処理
細線処理
のプログラムをおしえてください。
706:デフォルトの名無しさん
08/05/07 19:24:26
borland C++Builder6からgnuplotを実行し、
グラフを書かせたいのですが、
以下のコードではエラーが出てしまいます。
(pgnuplot.exeを認識しない。)
ご指摘をお願いします。
-----------------------------------------------------
FILE* gp;
gp = _popen("C:/Gnuplot/bin/pgnuplot.exe","wt");
if(gp == NULL){
ShowMessage("I can't find PATH");
exit(EXIT_FAILURE);
}
fprintf(gp, "plot sin(x)\n");
fprintf(gp, "pause -1");
fflush(gp); /* Don't forget to flush the buffer. */
getchar();
_pclose(gp);
exit(EXIT_SUCCESS);
----------------------------------------------------
707:デフォルトの名無しさん
08/05/07 19:55:59
>>706
ディレクトリ区切り記号を\\にしては?
シェル上だとスラッシュでも動作する事多いけどDOS/Windowsの本来のディレクトリ区切り記号はバックスラッシュ。
708:デフォルトの名無しさん
08/05/07 20:28:56
>>707
コメントありがとうございます。
\\でやってみましたが、動きませんでした。。
そもそもC++builderからgnuplotは起動できないのでしょうか・・・。
709:デフォルトの名無しさん
08/05/07 23:14:36
んなことはなかろう。
710:デフォルトの名無しさん
08/05/09 13:36:24
んなことはないつってんだろっ!
711:TOM
08/05/09 14:21:20
// interface
class Interface { public: virtual int getValue() const = 0;};
class Print { public: void out(const Interface& interface) { cout << "## " << interface.getValue() << endl; }};
// class A
class A : public Interface { public: virtual int getValue() const { return 0; }};
// class B
class B : public A {
private: Print p;
public:
virtual int getValue() const { return 1; }
void out() {
// オブジェクトがコピーされて、class Aの値が表示される
p.out((A)*this);
// class AのgetValueが呼び出される
p.out((A&)*this);
}
};
オブジェクトをコピーすることなく、クラスAの値を表示できませんか?
712:デフォルトの名無しさん
08/05/15 01:14:22
Turbo C++ Explorerを使っています。
TEditで文字の右寄せを行いたいのですが、Turbo C++ Explorerでは
コンポーネントの登録ができないため、登録せずに実現する方法があれば
教えていただけないでしょうか?
XP以降ならSetWindowLong()で実現できますが、2000などにも対応したいのです。
713:デフォルトの名無しさん
08/05/15 11:01:33
スレ違い
714:デフォルトの名無しさん
08/05/15 13:18:25
TMemoで代用とかって話があったような
715:デフォルトの名無しさん
08/05/15 13:20:50
>コンポーネントの登録ができないため、登録せずに実現する方法があれば
new して、Parentプロパティに貼り付け先のコンポーネントを設定汁!
716:デフォルトの名無しさん
08/05/16 14:19:36
test
717:デフォルトの名無しさん
08/05/16 20:05:08
>716がBCBで2chブラウザを作るそうです
718:デフォルトの名無しさん
08/05/16 20:09:20
プロジェクトソース部分だけ書けば既存のJaneのソースがそのまま使えそうな>BCBで2chブラウザ
719:デフォルトの名無しさん
08/05/17 23:50:45
スレッドを別に分けて作成しているんですが、
別スレッドからmainの中にあるimageコンポーネントに絵画したいんですが、
どうやら駄目なようです。
このような場合の特殊なやり方教えてください
720:デフォルトの名無しさん
08/05/18 10:07:54
>>719
なんか質問が抽象的杉。
何がダメなんや。
調停入れて描画すればええだけだろ。
721:デフォルトの名無しさん
08/05/18 16:43:33
ビルダーで作っているんですが、
ShellExecuteで他のプロセスを実行させていますが、
自前のプロセスが終了したとき、実行させたプログラムも
一緒に終了させたいのですが、良い方法ありませんか?
今はハンドルを一生懸命さがして
PostMessage
で終了させてます。
ShellExecuteの段階でハンドルがわかればいいとおもうんですが。
いろいろ教えてください。
722:デフォルトの名無しさん
08/05/18 19:51:04
ちょっとお尋ねしたいのですが、
#include <string>
#include <sstream>
#include <fstream>
using namespace std;
int main()
{
stringstream test;
test << (char)0x12 << (char)0x11 << (char)0x10 << (char)0x00 << (char)0x00 << (char)0x09 << (char)0x09 << (char)0x09 << (char)0x09 << (char)0x09;
ofstream fout("test.txt");
fout << test.str();
return 0;
}
このプログラムが吐き出すtest.txtをバイナリエディタで見てみると、後ろから2バイト目に謎の0Dが出てくるのですが、この0Dは一体なんなのでしょう??
コンパイラはMinGWです。
723:デフォルトの名無しさん
08/05/18 19:54:41
すいませんソースコードが間違ってました。
正しいのはこっちです。
#include <cstring>
#include <sstream>
#include <fstream>
using namespace std;
int main()
{
stringstream test;
test << (char)0x12 << (char)0x11 << (char)0x10 << (char)0x00 << (char)0x00 << (char)0x09 << (char)0x09 << (char)0x09 << (char)0x09 << (char)0x09;
int aa = test.str().length();
string uu;
uu = aa;
test << uu;
ofstream fout("test.txt");
fout << test.str();
return 0;
}
724:デフォルトの名無しさん
08/05/18 21:56:54
>>721
CreateProcess使えば?
725:722
08/05/18 23:38:08
誤爆失礼しました。。
726:デフォルトの名無しさん
08/05/18 23:42:07
URLリンク(akky.cjb.net)
これをもう少しスマートにならないものでしょうか?
727:デフォルトの名無しさん
08/05/19 02:36:18
>>722
それテキストモードで開いてないか?
728:デフォルトの名無しさん
08/05/20 18:05:35
void __fastcall TForm1::Button1Click(TObject *Sender)
{
try
{
Chart1->BottomAxis->Automatic = true;
Chart1->LeftAxis->Automatic = true;
TChartSeries *cs = new TLineSeries(Chart1);
Chart1->AddSeries(cs);
cs->AddXY(30000, 0, "", (TColor)clTeeColor);
}
catch (Exception &ex)
{
Application->ShowException(&ex);
}
}
これ実行するとEInvalidPointerになるんだが意味がわからんとです
729:デフォルトの名無しさん
08/05/21 00:16:29
よくわからんけど、
> Chart1->AddSeries(cs);
これいらなくね?あと
> EInvalidPointerになるんだが
どの行で?デバッガで例外を発している処理をちゃんと確認してみたら?
730:デフォルトの名無しさん
08/05/21 10:11:40
>>729
> これいらなくね?
これないと表示されないんだ…
> どの行で?デバッガで例外を発している処理をちゃんと確認してみたら?
ブレークかけてるけど、イベント終了まで例外は発生されなくて、終了後に例外が発生
731:デフォルトの名無しさん
08/05/21 10:20:04
こっちで試した限りじゃ空文字列がまずいようだ
732:デフォルトの名無しさん
08/05/21 11:52:56
空文字を適当な文字列にしたらいけました
ラベルが例外の温床なのかと思い、軸のLabelStyleをtalValueに変えてやってみたら例外発生
あとは実際のプロジェクトで試してみたら例外は変わらず
コンポーネント追加してるのが悪いのかもしらん
733:デフォルトの名無しさん
08/05/21 21:55:24
BCBの64ビット環境への対応に関して情報あれば教えてください。
734:デフォルトの名無しさん
08/05/22 03:20:42
>>733
とりあえずDEP切っておけば動くんじゃね?
735:デフォルトの名無しさん
08/05/22 16:01:31
フォームを持たないプログラムを作るにはどうしたらいいですか?
プロジェクトソースのWinMainにどうやってかけばいいですかね?
736:デフォルトの名無しさん
08/05/22 16:09:43
ウィンドウ持たない常駐型アプリはWindowsの仕様上無理。
メインフォームのVisibleをfalseにすればおk。
起動時に処理してそのまま終了ならコンソールアプリと同じ処理をすればいい(mainをWinMainに置き換えるだけ)
737:デフォルトの名無しさん
08/05/22 16:32:25
TPNGObjectを探してるんだけどこれって本家HPが見れないー
どっかDLできるとこある?
738:デフォルトの名無しさん
08/05/23 23:10:10
>>737
ほんとだねー。
どこかにアップする?
739:デフォルトの名無しさん
08/05/24 05:24:00
Delphiくだすれで見つけた。
URLリンク(www.codeplex.com)
fcしてみたけど手元のv1.564と全く同じだったからこれでいいんじゃないかな。