トップページ⇒tech
1001コメント319KB

C++Builder相談室 Part4

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
C++Builderに関する質問・回答や議論等を行う相談室スレッド。
過去スレ・関連サイトは>>2-4あたり。
0666Delフサギコ ◆A6VzDeLphI NGNG
  ∧,,∧  まちがた。ComboBox1.Freeは
 ミ,,゚Д゚彡  必要ないですね。
 ミつ[|lllll]).  
0667債務不履行の名無しさんNGNG
>>665
おっと。こんな方法もあるのか。
Delスレも併読したほうがいいな・・・
0668デフォルトの名無しさんNGNG
なるほど、MemoeyStream(または普通のファイル)に一度親のコンポーネント
の中身を書きだしてから、継承したコンポーネントで読めばいいのか。

その場合、オーバーライドしたメソッドなんかはどうなるんでしょうか?やはり
一度実行しておかないとだめですよね。
0669デフォルトの名無しさんNGNG
TCppWebBrowser* wb1 = new TCppWebBrowser(canvas);
wb1->Width = sizeX;
wb1->Height = sizeY;
wb1->Left = posX;
wb1->Top = posY;
wb1->Visible = true;
wb1->Navigate(Variant(data));
delete wb1;

実行時に、アプリケーション上の任意の位置に
HTMLを表示しようと、上のコードを作成したのですが、
何も表示されません・・・

TCppWebBrowserを設計時に作成すれば大丈夫なのですが
なぜか動的にやると失敗します。
原因が分かる方がいらしたら、どうか教えてください。
よろしくお願いいたします。
0670669NGNG
canvasはmainFormの間違いです。
また、dataにはファイルパスが入っています。

やはり原因が全く分かりません・・・
0671デフォルトの名無しさんNGNG
>>670
Parentプロパティは設定した?
0672デフォルトの名無しさんNGNG
スマソ。
WebBrowserはParentプロパティの意味が違うのね。
今調べています。
0673デフォルトの名無しさんNGNG
>>669
wb1->Width = sizeX;
wb1->Height = sizeY;
を
wb1->ClientWidth = sizeX;
wb1->ClientHeight = sizeY;
にしたら、取り敢えず画面には表示されるようになるね。
後はフォームの上に表示するようにすればいいのか。
0674デフォルトの名無しさんNGNG
>>669
できたよ。
wb1->ParentWindow = Form1->Handle;
wb1->ClientWidth = sizeX;
wb1->ClientHeight = sizeY;

これでやってみて。
0675669NGNG
>>674
おお!凄い!できました!!
本当にありがとうございます!

また何か分からないことが出てきたら、よろしくお願いいたします。
0676デフォルトの名無しさんNGNG
また何か分からないことが出てきたら、よろしくお願いいたします。
また何か分からないことが出てきたら、よろしくお願いいたします。
また何か分からないことが出てきたら、よろしくお願いいたします。
また何か分からないことが出てきたら、よろしくお願いいたします。
また何か分からないことが出てきたら、よろしくお願いいたします。
また何か分からないことが出てきたら、よろしくお願いいたします。
また何か分からないことが出てきたら、よろしくお願いいたします。
また何か分からないことが出てきたら、よろしくお願いいたします。
また何か分からないことが出てきたら、よろしくお願いいたします。
また何か分からないことが出てきたら、よろしくお願いいたします。
0677デフォルトの名無しさんNGNG
何か気に障ったようだ。
0678デフォルトの名無しさんNGNG
>>677
いや、多分単に暇なだけ。
0679デフォルトの名無しさんNGNG
まぁこっちは初心者用スレだしな。
馬鹿らしい質問にも答えてあげなくては。
0680デフォルトの名無しさんNGNG
>>676
もう冬休みは終わったんだぞ。
氏ね、厨房
0681超ド素人NGNG
これってありですか?
一応動作するのですが、ウインドサイズを変更して、
元の状態にすると、表示が消えてしまいます。
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form1->Canvas->TextOut(360,100,"Test");
}
0682デフォルトの名無しさんNGNG
>>681
ありですよ。
普通は
OnClickでは データを用意して
Form1->Invalidate();
としておいて


フォーム1の OnPaintで 
Form1->Canvas->TextOut(360,100,"Test");
を実行します
0683超ド素人NGNG
>>682
表示消えなくなりました。

ありがとうございました。
がんばって勉強します。
0684山崎渉NGNG
(^^)
0685デフォルトの名無しさんNGNG
スレッドの殺し方がわかりません。

new で作って
スレッドに命令するんですが、
スレッドがずっと実行したままなので止めたいです。
お願いします。
0686デフォルトの名無しさんNGNG
>>685
真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ
0687デフォルトの名無しさんNGNG
>>685
開発者ガイドの11-6
0688デフォルトの名無しさんNGNG
起動時の引数を取得するためにParamStrを利用しているのですが
この時にパスが「Program Files」などスペースが入っている場合に
ParamStrに格納される文字がわかれてしまうのですが、
これをわかれないようにするにはどうすればいいのでしょうか?
0689デフォルトの名無しさんNGNG
BCB5・learningエディションを持っているのですが、
BCB6・Standerdエディションを買って得することはありますか?
自分はデータベースもLinuxもインターネットアプリも興味ありません。
一応BCB6Proを買う予算はあります。
0690☆NGNG
>>688

Test.exe Program Files

って書いたときに、"Program Files" というファイル/ディレクトリを指定したいのか
"Program" と "Files" という二つのファイル/ディレクトリを指定したいのか、プログラム側からは
判定できないだろ?

空白などの区切り文字を含んだファイル/パス名をパラメータとして渡すときは、
渡す側が "Program Files" と引用符で括ってあげる必要がある。
そうすれば ParamStr に一つの引数として(引用符がはがれた状態で)格納される。
0691デフォルトの名無しさんNGNG
すいません、開発者ガイドってなんですか?
ガチレスです
0692デフォルトの名無しさんNGNG
また割坊かよ
0693デフォルトの名無しさんNGNG
プロファイラとか、そんな機能ってついてるの?
0694デフォルトの名無しさんNGNG
>>691-692
Personal版にはついてないみたいですね。
ヘルプで
「ほかのスレッドによる終了をチェックする」
を検索してください。

簡単に書くと、
「自分で実装しろ」
ちゅーことではないかと。
0695デフォルトの名無しさんNGNG
5のラーニングにはついてたのにね。
0696債務不履行の名無しさんNGNG
開発者ガイドって,参考にしている人いるの?
当方,5,6,7と未だに読んだことがない。
0697デフォルトの名無しさんNGNG
へたな解説本よりよほどいい出来だと思うけど。
0698デフォルトの名無しさんNGNG
アカデミック版のライセンス、もうちょっとどうにかならないかなぁ…
せめてPersonalと同程度に。できればVS.netと同じに。
3月までに変更してくれたら買っちゃうよ。
そうじゃなきゃVSに鞍替え。
0699デフォルトの名無しさんNGNG
TabControlでタブが表示されているところの背景部分を特定色でマスクし、
タブ以外を透過させるフォームを作りたいんですが、タブの背景のCanvas
を塗りつぶすにはどのように書いたらいいでしょうか?
0700699NGNG
すいません。
上の質問の仕方がおかしかったです。
聞きたいことを整理してからもう一回聞きます・・・
0701デフォルトの名無しさんNGNG
SendMessageでなく、Performメソッドを使うメリットっていうのは何なんでしょう?

「SendMessageの呼び出しは同期的です」とか書いてあるのを見ると
SendMessageの方が便利なように思えるのですが。
0702デフォルトの名無しさんNGNG
BCB6にしたけど、DsgnIntf周りの変更が面倒すぎる・・・。
コンポーネントの開発なんてやめたほうがいいのだろうか。
0703デフォルトの名無しさんNGNG
そういや、Delphi6対応でもBuilder6では動かないコンポーネント増えたね
そのせい?
0704デフォルトの名無しさんNGNG
すいません。
1msec毎に命令したいのでTimer使ってるんですが
Timerでは1msec毎にうまく動いていないと思います。
いやいや絶対動いていません。
効率の良い方法キボンヌ
0705デフォルトの名無しさんNGNG
あげまくり
0706デフォルトの名無しさんNGNG
>>704
StrongTimer()を使いなさい。
0707デフォルトの名無しさんNGNG
>>704=705
氏ね
0708デフォルトの名無しさんNGNG
>>704
マジレスです。 Windowsで動かすのは諦めなさい。
シーケンサとか PICマイコンとかを使いなさい。
0709デフォルトの名無しさんNGNG
そうですか…わかりました。
ありがとうございました
0710デフォルトの名無しさんNGNG
>>707
ついでに>>706も。
0711デフォルトの名無しさんNGNG
>>701
オブジェクト指向っぽくなる
0712701NGNG
>>711
ん…、それだけっすか。
ウェブ上にあった例を見てたら、
Synchronizeした関数先でPerformしてたりして、あんまり格好よくないなあなんて思ってました。
スレッド分けてる場合はSendMessage使った方が良いんですかね…?
0713デフォルトの名無しさんNGNG
素朴な質問っす
なんでVC++つかわないのですか?
業界ではVCは糞でBuilderがスタンダードって本当ですか?
VCLはAPIのラッパーですか?
0714デフォルトの名無しさんNGNG
>>713
理由は人それぞれだと思うが、俺の場合はDelphiも使ってるから、
インターフェースが同一なのですぐ移れて使いやすい。

VCが糞というのは言語仕様が糞なだけで、使われてるのはVCの
方が圧倒的に多いだろう。
0715デフォルトの名無しさんNGNG
>>713
VCはM$純正だからってメリットはある。
ただし、MFCよりVCLの方が良い設計であるのは周知の事実。

ところがMFCの方が資料がたくさんあるので
調べものがしやすいというメリットがある。

どっちがいいかは自分で判断しる。
0716715NGNG
カブタか。
俺は両方使っているのでどっちでもいいと思うけど。
0717713NGNG
なるへそ
なんかBuilderがMFCもサポートしてるみたいなんで
IDEが使いやすいほうを選んだほうがよさそな

でも、VCのほうがプログラムを組んでるようなきがしるよ
0718デフォルトの名無しさんNGNG
>>717
私はプログラムを組んでる気がしない方が良いんですけど
BCBで十分その気にさせられてしまいまつ。
0719デフォルトの名無しさんNGNG
11歳の女の子の裸を描画したいんですが、
画像を描画するコントロールは何を使ったらいいですか?

普通にTImageBoxを使って大丈夫ですか?
すじとかもアップで映ってるんで。
0720デフォルトの名無しさんNGNG
>>719
TImage+TScrollBoxで良いよ。
完成したらうpね。
0721デフォルトの名無しさんNGNG
>>719
TImageBox ってのは知らんが、TImage なら、TPaintBox のほうが速い
ことが多い。ただし、OnPaint で再描画するように。
0722デフォルトの名無しさんNGNG
>>720-721
ありがとうございます。
頑張ります!
0723デフォルトの名無しさんNGNG
>>719
TImageに年齢を指定するプロパティのageっていうのがあるんで、
それを11にする。
女の子だからプロパティsexをfemaleにしてShow()すればオケー。

すじをアップにする方法はしらん。教えて(;´Д`)

ビルダーがあるおかげでおかずに困らないよね。
0724デフォルトの名無しさんNGNG
>>723
(・∀・)マヂデスカ!?
0725デフォルトの名無しさんNGNG
既存のフォームの継承ってどうやるんですか?
ファイル→新規作成→その他で現在開いているフォームを選択すると、
もう一つフォームができますが、これとは違うんです。

あるプロジェクトで作ったフォームを利用して、別のプロジェクトを作成
したいのです。
0726デフォルトの名無しさんNGNG
>>725
開発者ガイド
0727デフォルトの名無しさんNGNG
staticな変数 static double x を他ファイルでextern double xとしたら
”外部シンボル'x'が未解決”というエラーメッセージが出てしまうのですが
ナゼなんでしょうか?
0728デフォルトの名無しさんNGNG
長年VC使ってきて、C++Builder使い始めて5日目です。
厨房質問ですいませんが、フォーム、フレーム、ユニット、リポジトリ
という用語の意味がいまいち理解できません。
かいつまんで教えて下さい。
0729デフォルトの名無しさんNGNG
>>728
フォーム
http://www.borland.co.jp/qanda/cbuilder/c0003052.html

フレーム
http://www.borland.co.jp/cppbuilder/cb5/cb5feaben/cb5fb10.html

リポジトリ
http://www.borland.co.jp/qanda/cbuilder/c0002845.html

ユニットは、Delphiが ユニット という概念を持っているので、

ファイル単位に自動的にネームスペースが付き、コンストラクタ・デストラクタも付けられる一種のクラスと思えばいい
0730デフォルトの名無しさんNGNG
インターネットを介さない通信について教えてください。

現在以下のような構成で動かしています。
 [機器]―(RS232C)―[PC:設定ソフト]

今度以下のように遠隔地からでも操作できるようにしたいという要望が出てきました。
 [機器]―(RS232C)―[PC:設定ソフト]―[携帯電話]〜(電話回線)〜[携帯電話]―[PC:設定ソフト]

質問は、BCB5.0で作成した設定ソフトについてです。
インターネットを介するならTServerSocketとTClientSocketでなんとか出来そうなんですが、
今回のはFAXのように、インターネットを介さない通信なのでやり方の検討もつきません。

FAX、通信、電話、等で検索しては見たものの参考になるものが見つけられませんでした。
通信初心者な私に助言等よろしくお願いします。
0731デフォルトの名無しさんNGNG
>>727
staticが激しく正しく機能してるじゃないか。
http://www.google.com/search?q=static+%83%8A%83%93%83P%81%5B%83W
0732組込もしまっせNGNG
>>730
いつの間にか、インターネットを通した方が簡単と思える時代になったんだね。
通信は THandleStream か、 スレッドを作るならCreateFile /ReadFile/WriteFile のAPIで直接
ボーレートの設定とかは CDROMにあるWinAPIの日本語ヘルプで通信の概要を見るといい
問題は携帯電話を通過する個所かな
たぶんUSBモデムを使うのだろうけど、ATコマンドをエミュレートしてくれてるなら
ATDT で電話かけて 電話が繋がったらコマンドは自分で作ればいい
Windows附属のターミナルソフトで試してみればいい
0733デフォルトの名無しさんNGNG
メインのスレッドとは別にもうひとつスレッドを作り、
そのスレッドで
while(1) ShowMessage("TEST");
とかやると、何回目か(回数は不定)で、

プロジェクトhoge.exeがEInvalidOperationクラスの例外を生成しました。
'Canvasに対する描画ができません'

という例外が発生するのですが、何が間違っているのでしょうか?
0734組込もしまっせNGNG
>>733
ShowMessage は関数ですが内部でVCLを呼んでいるので 別スレッドで実行してはいけないようです。

1、Thread,SyncronizeやSendMessage/PostMessage を使ってメインスレッドに処理させる
2、MessageBox を使う

のどちらを使えば良いでしょう
0735デフォルトの名無しさんNGNG
>>733
デッドロック
0736733NGNG
>>734-735
ありがとうございます。
Synchronizeで私のやりたかったことはできそうです。
(MessageBoxがデッドロック発生しないというのもためになりました。)

しかし、マルチスレッドってプログラムがごちゃごちゃしそうですね…
0737733NGNG
あ、もうひとつ聞いてもよろしいでしょうか。

Syncronize,SendMessage,PostMessage
という関数はヘルプで見つかったのですが、Threadというのは無いようでした。
Threadというのも関数なんでしょうか?
0738デフォルトの名無しさんNGNG
>>737
TThread、VCLのクラスです。
0739デフォルトの名無しさんNGNG
俺も>>723を見て12歳の女の子のあそこを表示しようと思ったのだが
ageとかsexなんていうプロパティは見つからないぞ・・・

ググッてもダメだった・・・(鬱
このスレの識者の型、どうやったら小中学生の裸が見れますか?
0740デフォルトの名無しさんNGNG
>>739
MXでもやれば?
0741デフォルトの名無しさんNGNG
>>740
TMXクラスも今検索してみましたが見つかりません(´Д⊂
0742デフォルトの名無しさんNGNG
>>741
Indyの最新版入れてみれ
TIdMxな
0743デフォルトの名無しさんNGNG
やっぱりみんなも子供の裸が好きだったのか・・・ヨカタ
俺だけだと思ってたから変態なのかと悩んでたよ。安心した。
すれ違いスマソ

ちなみに9歳〜13歳が好きです。
0744デフォルトの名無しさんNGNG
エムエークスで、12歳ぐらいの女の子がバイブで弄られて逝って
いる動画がありました。でもスク水着着るとやっぱり子供だね。
声だけ聞くと大人と変わりません。萌え。
0745デフォルトの名無しさんNGNG
>>743
俺も小学生(特に5,6年)が大好きだ。同士よ。
0746デフォルトの名無しさんNGNG
TMediaPlayerでロリ動画を再生して(*゚∀゚)=3ハァハァしているスレは
ここですか?
0747デフォルトの名無しさんNGNG
配布用にexeファイルを作るとどうしても
500kb近くになってしまうんですが
どうすればもっと小さくできますか?
0748デフォルトの名無しさんNGNG
>>747
プロ�cなんて知らんが探してみたら、UPXつーもんがあるらしいで。これでええんか?
http://urikire.hypermart.net//UPXF.htm
0749デフォルトの名無しさんNGNG
>>747
共有RTLDLLを使うオプションでコンパイルしておき、
http://www.csdinc.co.jp/archiver/lib/runtimes.html
http://www.geocities.co.jp/SiliconValley-Bay/8862/razip.html
↑ここからランタイムだけDLしてもらう。

一度ランタイムをDLしてもらえば、以降共有RTLDLLでの配布
が可能になる。
本当はCLWinがC++Builderに対応していればいいのだが、まだ
のようだ。
0750デフォルトの名無しさんNGNG
>>748
へぇ。。そんなものがあるのかぁ。
0751730NGNG
>>732
いただいた返信にあった、ATDTという単語をキーに検索してみたところ下記のHPを見つけました。
ttp://web.kyoto-inet.or.jp/people/quantum/PT/index.html
ここを読んでずいぶん通信が分かってきました。
恥ずかしながら、今までボーレートなどは"COM1"等の通信にのみ関係することだと思ってました。
携帯電話データ通信USBケーブルの箱裏を見てみたところ、
「モデム制御コマンド:ヘイズATコマンド準拠」と書いてありました。
ということで、後はATコマンドとモデムのオープン方法を調べればなんとかなりそうです。
ありがとうございました。
0752デフォルトの名無しさんNGNG
あるプログラムを実行すると無限ループになる可能性があるか否かを判断する
プログラムを作ることはできないと聞いたことがあります。
どなたか、簡単に証明をお願いします
0753デフォルトの名無しさんNGNG
>>752
C++Builderでの話?
0754デフォルトの名無しさんNGNG
>>752
スレ違いだけどな

asoko:;
goto    asoko;

これをプログラムで判断できない訳ね。へーあっそう。
0755デフォルトの名無しさんNGNG
>>754 まあまあ、そうつっかからんで…(^^;
754のは無限ループの可能性しかないわけで一般的ではない、
というか、無限ループの可能性しかないかどうかをプログラムで
判定することは可能だ、ということですわなぁ。
しかしこれでは質問に素直に答えてはいない。

>>752
だが、754は逆説的にであるが、答えを出してくれているぞ。
明らかな無限ループ以外のループ、すなわち変数を使った
判定条件を伴うループが無限ループになる可能性があるかどうかを
判断するのは困難だということだ。
しかし、それが不可能かというと必ずしもそうではない。
われわれプログラマはしばしば机上デバッグで無限ループを発見する
からね。
すなわち条件判定に使用される変数に対するすべての入力条件を
追跡することで、無限ループになる可能性がないか否かは判断できる。
0756デフォルトの名無しさんNGNG
>>754
任意のプログラムに対してそれが無限ループを含むか判定するプログラムが存在するかってことじゃないか?
0757デフォルトの名無しさんNGNG
>>756
無限ループかどうかは、結局>>754の構造を含んでいるかどうかということに帰結する。
条件分岐において可能性のある条件をすべてしらみつぶしに検証すれば、任意のプログラムにおいても
無限ループを含むかどうかを、一般解として生成することは可能だ。
つまり、>>752の命題は論理的には間違いである。
しかしながら、現実問題として、すべての条件をしらみつぶしに検証した場合、数百年いや1京年かかっても
検証が終わらないプログラムなどざらだろう。
0758組込もしまっせNGNG
無限ループになるかどうか難しいって話しは マンデルブロ集合とかからじゃないの?

input C;

Z:=0;
while |Z| < 5 do Z:=Z*Z+C;
0759デフォルトの名無しさんNGNG
>>758
soreda!
0760デフォルトの名無しさんNGNG
ねぇ・・・(;´Д`)
本当にどうやれば12歳のおまんこが見られるのか
教えてください・・・
もう我慢汁が出てきてるんですけど・・・
0761デフォルトの名無しさんNGNG
>>760
だーかーらーエムエークスやれってば。
タイーホ予備軍の人が列をなして並んでますから。。。
0762デフォルトの名無しさんNGNG
>>761
ビルダーで見たいんですよ・・
0763デフォルトの名無しさんNGNG
>>762
MediaPlayer1->FileName = "ロリ動画.mpg";
MediaPlayer1->Display = Panel1;
MediaPlayer1->Open();
MediaPlayer1->DisplayRect=TRect(0,0,Panel1->Width,Panel1->Height);
MediaPlayer1->Play();

NY の方が、楽でええよ。鼻くそほじくってる間に大量のロリ動画が。
0764デフォルトの名無しさんNGNG
TListViewで、MultiSelectプロパティを変更したときにOnDeletionイベントが起こるのは
仕様なんでしょうか?

ヘルプに書いてある事と挙動が違うと思うんですが。
> OnDeletion イベントは,リストビュー内の項目が削除されようとしたときに発生します。
0765..NGNG
>>752 あたり
CBuilder というよりは純粋数学の問題だから、数学板に行くべき。

チューリングの定理:任意のプログラムが停止するかどうかを判断できるようなアルゴリズムは存在しない
http://www.miv.t.u-tokyo.ac.jp/~yabuki/tip/lisp/unknowable/turing.html

単純無限ループは「停止しないプログラム」の一部でしかないので間違えないように。
複数スレッドによるデッドロックとかも有るし。

「停止問題」と「チューリング」で google 引けば、証明も含めいろんな情報が手に入るよ。

この議論は『すべてのアルゴリズムに対し「停止するかどうか」を確実に判定する』アルゴリズムの
非存在証明であって、
『あるアルゴリズムが無限ループになるかどうかを判定する』アルゴリズムの存在は許している。

両者の違いが分からなければ、論理学/数学/国語をもう一度勉強すること。

非存在証明だから、現実世界にはあまり実用性は無い。
■ このスレッドは過去ログ倉庫に格納されています