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

C++Builder相談室 Part4

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
C++Builderに関する質問・回答や議論等を行う相談室スレッド。
過去スレ・関連サイトは>>2-4あたり。
0447デフォルトの名無しさんNGNG
>>442
んなーことは無いよ。
おいらがC++Builderを使い始めたきっかけは、実行速度がVCより速いから。
同じソースをいろんなコンパイルオプションで試行錯誤してみたら、
VC6より、C++Builder5の方が10%くらい速かった。
科学技術計算で結果が出るまでに数日かかるからこの差は大きい。
0448デフォルトの名無しさんNGNG
>>447
なるほど、科学技術計算で結果が出るまでに数日かかるものを作る時以外では
やっぱりVCの方が性能がいいってわけですね。
僕はそんなの一つも作ったことがありませんが、あなたはどんな物をいくつ作りましたか?
0449デフォルトの名無しさんNGNG
BCB が VCに勝る点
1、ANSI適合度・・・まあ3年先にはVC.NETも99%にすると公言してるけどね
2、Delphiとの連携・・Delphiのコードの95%程度はそのまま使える。
     Delphiの軽くて使い易いインラインアセンブラだけ使っても便利だよ
     逆にDelphiが使えるobjも吐ける。
3、Kylixとの連携

VCが勝るのは
1、ブランド
2、最適化の豊富さ(まあバグも多いから時間がない時は使いたくないんだけどね)
3、MFCxx.DLL が大抵のパソコンにあるのでコードサイズを小さく出来る
4、俺は嫌いだけどこのエディタが好きな人も多い
0450デフォルトの名無しさんNGNG
>449
VCが勝る唯一?最大の点は、情報量の豊富さだろ。
0451デフォルトの名無しさんNGNG
>>450 ? 何の情報が? C++に関する情報も APIに関する情報も、MFCに関する情報も共通では?
0452デフォルトの名無しさんNGNG
ああ、もしかして言いたい事は VCをそれなりの値段で買うと MSDNが付いてくるって事かな
0453デフォルトの名無しさんNGNG
>451=452
Are you a aho ?
書籍だけでも、もの凄い違いがあることすら認識していないのか。
開発元におけるホームページでの情報量だって歴然だろ。
0454ahoNGNG
ええと ahoです。 まとめてみましょう

1、 VCL に関する情報は VC++では無意味
2、ウイザードに関する情報は BCBでは無意味
3、 C++の情報は 共通
4、 MFCの情報も共通(ただ BCBでMFC使う人は少数だろう ただ ATLは使うかな)

という事で、本の通りにキーボード打って「ぼくにも出来た」と思いたい人でなければ
情報量には差が無いと思うのだが?

まあahoは判らない差があるのでしょう
0455デフォルトの名無しさんNGNG
BCBの情報不足は明らかすぎると思うが…。
入門書は元々少なかったものが廃刊して皆無になってるし。
特にFAQ形式の、パワフルテクニック系、300の技系が無いのが痛い。
そもそもヘルプの分量・わかりやすさ、ともにVC++のほうが圧倒的。
周りに知っている人がいるという事もかなり重要な要素。

100対3くらいの大差が付いてボコボコに負けているに、
これで差が無いなんてどこをどう見たら思えるのか不思議。
いくらBCB好きな俺でもオマエには賛同できない。
0456ahoNGNG
たぶんほんとに俺はahoだな。 言ってる事がよく判らんよ。
そんなにVC++のヘルプが良いと思うならMSDN買えばいいんじゃないの?
0457デフォルトの名無しさんNGNG
>>456
マジでアフォだな。
BCBやりたい初心者に買わせる本が無いから
ダメダメだと知っていてもVC++を買わせる。
それで本当に満足なのか?
0458デフォルトの名無しさんNGNG
言ってることがよくわからないのではなく、まともに読んでないだけだろ。
批判されたことに逆上して冷静に相手の意見を受け入れられない。
こうなるともう何を言っても無駄だろうね。恋は盲目なのだよ。
0459デフォルトの名無しさんNGNG
>>457 別にVC++用の初心者に買わせられる本でBCBやればいいんじゃないの?

って事じゃないのか?
0460デフォルトの名無しさんNGNG
>>459
それで済むなら「ARM買え」の一言だが。
0461デフォルトの名無しさんNGNG
>>460 それでいいんじゃないの? それで済むような人じゃないと趣味にしても仕事にしても続かないでしょ
0462デフォルトの名無しさんNGNG
普段はBCB派の俺も客先がVCを使えっつーんで
しゃーなく使ったんだが・・・

正直こんなうんこは二度と使いたくないって思った。
0463デフォルトの名無しさんNGNG
>>461
教育についてもう少し勉強したほうがいいな…。

世の中は「成長させてもらう人」のほうが圧倒的多数で、
独学でできるやつはごく少数なのが現実。
入門書が充実したとして、ヘルプが改良されたとして、
嬉しいことはあっても嫌なことは何も無いだろ?
0464デフォルトの名無しさんNGNG
現状で満足したらそこで終わり。
0465デフォルトの名無しさんNGNG
>>463 いや、だからそもそも、VC++でしか使えない入門書で 「成長させてもらえる」のか?
 って感じなんだがな・・・まあ俺もどうでもいいや、そんな話は
0466デフォルトの名無しさんNGNG
つまり結論としては、BCBのヘルプはダメダメということで。
0467デフォルトの名無しさんNGNG
>>463
成長させてもらうのを待ってるダメな奴はなにやらせてもダメだから使えない。
そんな奴用の本なぞあっという間に廃れる運命。
0468467NGNG
てゆーか、俺の下についた奴、資料は部屋のキャビネットにゴロゴロあるんだから、
ちったー調べろよ(泣)
で、判らなくて手が止まったからってボーっとしてんなよ。

最後に
こんな奴を俺に押し付けた上司は逝ってよし。
0469デフォルトの名無しさんNGNG
でもまぁ、世の中、BCBよりもVCの方が格段に案件多いことは確かですからな。
0470デフォルトの名無しさんNGNG
複雑なGUIを使うのでなければ、VCLにあるコンポーネントを使って、素早く
アプリを構築できるのはBCBの方が圧倒的に楽。

しかし、GUIに関わらず内部で科学技術計算などの計算をさせるなら、
BCBもVC++も関係ない。表面に現れない部分ではBCBでプログラム
しても全然楽じゃない。当たり前だけど。
0471デフォルトの名無しさんNGNG
>>463
そんなこたぁない。本当にダメな奴はそうかもしらんが、
大多数は微妙にダメで微妙に使えるやつら。
仕事をやるだけの知識はあって、十分仕事になっている。
そんな奴ら用の本が売れまくって、良書があっというまに廃れているのが現実。
0472デフォルトの名無しさんNGNG
一人だけで作るならBCBでもいいけどねぇ・・・。
0473デフォルトの名無しさんNGNG
>>471
短期的にはそれで成功かもしれないけど、
長期的(3〜5年)で見たら、そういう奴は大抵現場からいなくなる。
まあ、いなくなるから不幸かというと、そうでも無いというか残ってる方が不幸だったりするのだけどね。
0474デフォルトの名無しさんNGNG
>>473
VB厨が出世して部下を困らせるのが標準的な会社。
そんな理想的な会社がどれほどあるのだろう?
0475473NGNG
>>474
 うん。困った事に、現場で使えない奴が先に出世するのは世の常だね
0476デフォルトの名無しさんNGNG
>>435
その場合に
END_MESSAGE_MAPのかっこの中には何を書けばいいのでしょうか?
0477476NGNG
あ、すみません。
更にAllocateHWndには何を渡せばいいのでしょうか?
0478デフォルトの名無しさんNGNG
MESSAGE_MAPは必要ないよ。
AllocateHWndにはメッセージプロシージャを渡すだけ。
0479476NGNG
>>478
あっ、ほんとだ!
MESSAGE_MAPなくてもちゃんとイベント発生しました。
ありがとうございます。
0480デフォルトの名無しさんNGNG
質問させてください。

BCB5で、TTreeNode::StateIndexに0を設定しても反映されない
のはどうしてなんでしょうか。
もちろんImageListは設定してあるし、StateIndexを1や2にすれば
表示されるんですけど。
0481デフォルトの名無しさんNGNG
相談お願いします

開始時間〜終了時間から計算して
例えば開始01:00〜終了03:30なら2.5などと算出してくれるような関数ってありますか?
これがあれば今の作業が死ぬほど楽になるので(苦笑
0482デフォルトの名無しさんNGNG
>>481
それくらい自分で関数作ればいいだろ。
0483481NGNG
すいません
徹夜続きで頭回らなくてすごく難しく感じてたんですが
コーヒー飲んで落ち着いたら簡単でした
恥かいてしまた(´Д`;)
0484デフォルトの名無しさんNGNG
TDateTime使うと楽だね。
HoursBetween、MinutesBetween、MilliSecondsBetweenとかあるし、
1時間の差を1.0とするなら引き算して24かけるだけでもいいし。
0485デフォルトの名無しさんNGNG
time()でも差取って3600で割るだけじゃないのか…
0486デフォルトの名無しさんNGNG
実行時に計った時間の差なら、そりゃ確かにTDateTimeを使うまでも無いですね。
>>481の開始〜終了時間ってエディットとかで、ユーザーが指定する物の事だと思い込んでたもので。
0487 NGNG
DirectX9もまたコーディング以前に
面倒な作業が有るのか・・・
0488DrKNGNG
BCBは、ハマーやインテルの64ビットCPUにネイティブで対応するのでしょうか?
0489デフォルトの名無しさんNGNG
将来のことは判らないだろ。 作る技術はあるだろうけど、同じ商品名で出すかどうか
0490デフォルトの名無しさんNGNG
非標準環境の辛さだな
0491デフォルトの名無しさんNGNG
だな。 まずM$が出してから、その互換性を確保してから商品化か
0492デフォルトの名無しさんNGNG
インストールしたけどコンパイルできないっていわれた。
これってC言語もコンパイルできるんですか?
.PPCファイルって何????マニュアルも開けないし、ヘルプ見てもさっぱり
わからない。初心者向けのツールじゃないですよね。
0493デフォルトの名無しさんNGNG
何の初心者にもよるかと。
さすがにPC初心者向けの開発環境は存在しないのでは…
てゆーか、そんなひとに開発して欲しくないし。
0494タスケペーNGNG
クラサバアプリなんですけど、フォームのあるボタン押下時に
WINDOWSのシステム情報を表示したいんですけど、どうやったらいいのか
わかりません。ヒントでも取っ掛かりになること教えてください。
0495デフォルトの名無しさんNGNG
>>494
システム情報って何?
例えばレジストリの
 HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION
みたいな情報?
0496タスケペーNGNG
495様!!年末なのに反応ありがとうございます(涙)。
コンパネ-コンピュータの管理 にてツリー表示されているシステム情報の
ことです。そのウインドウを呼んで表示したいんです。


0497たぶんNGNG
>>496
それはコマンドラインで
mmc c:\winnt\system32\compmgmt.msc

として呼び出せる奴の事じゃないのかな?
0498タスケペーNGNG
そそそ、%SystemRoot%\system32\compmgmt.msc /s
です。そ、それを、C++ BUILDERからプログラムとして....
0499たぶんNGNG
ええと、それなら>>497以上のヒントが必要ですか?

WinExec("mmc c:\\winnt\\system32\\compmgmt.msc", 0);
と書けば?

それとも SystemRoot の解決方法を知りたい?
0500タスケペーNGNG
499様、
これだけでもかなり助かりますタ。ありがとうございました。
左側のツリーの要素として「システム情報」がROOTになる様に表示したいので
あります。アンタ...イイヒトダァアアー (北の国から)



0501たぶんNGNG
http://www.google.co.jp/search?q=msinfo32.exe&lr=lang_ja

これをどう呼びたいかって話し?
0502たぶんNGNG
msinfo32.exe を自分のハードディスクから探して、それを実行すればいいのでは? 
msinfo32.msc をmmc.exeで動かしても同じだし、

では、もう落ちるので
0503タスケペーNGNG
たぶん様、まさにこれでアリマス。ただこれを絶対パスで指定してよいのかどうか
ですよね。%どっか%みたいにしないといかんのでしょうかね。.....
C:\Program Files\Common Files\Microsoft Shared\MSInfo\msinfo32.exe
0504デフォルトの名無しさんNGNG
>>503 ああ、そういうのはレジストリでリストアップして レジストリから参照してみたら?
0505タスケペーNGNG
今度はレジストリをどう参照してどうやって表示するのかがわかりません。すいません。
クレクレ君になってしまいすいません。
0506デフォルトの名無しさんNGNG
こんにちは。
外部シンボルinp,outpが未解決となってしまうエラーについて質問させてください。

I/Oボートにアクセスしステッピングモータを動かす
プログラミングをC/C++で行っています。
しかし
Error: 外部シンボル '_inp' が未解決(C:\DOCUMENTS AND SETTINGS\INFODRIVE\デスクトップ\program.OBJが参照)
Error: 外部シンボル '_outp' が未解決(C:\DOCUMENTS AND SETTINGS\INFODRIVE\デスクトップ\program.OBJ が参照)
というエラーが出てしまいmakeできません。
いろいろ調べて
#include "conio.h"
#include "IOBIN.h"
というのをインクルードしてみたのですがうまくいきません。
Win95、Cpad、Borland C++ Compiler 5.5 を使っています。
ちょっと制御関係の話かもしれませんが、
どなたかアドバイスをいただけませんか?
よろしくお願いします。
0507デフォルトの名無しさんNGNG
>>506
BCBなの? 単なるBCなの?
BCなら #include <conio.h>

BCBなら最近のであればTASMで、古いバージョンなら Delphiで inp outpを書いたら?
0508デフォルトの名無しさんNGNG
>>507
レスありがとうございます。
BCBです。
C/C++しか知らないのでTASMやDelphiで書くとまた一からです。。。
それしか方法はないのでしょうかね。。。?
0509止停 EAOcf-61p196.ppp15.odn.ne.jprlo;NGNG
0510デフォルトの名無しさんNGNG
>>508
それしかって、他にはハンドアセンブルしてバイト列として埋め込むくらいかな。

じゃあDelphiの例ね。 以下のファイルを作って プロジェクトに追加で パスカルユニットにして
追加すれば自動的に ヘッダファイルが作られるから 

----------- ここから ファイル名を UIoPort.Pas として保存 ---
unit UIoPort;//UIoPortはファイル名にあわせる

interface
function IoInp(adr:WORD):Byte; stdcall ;
procedure IoOut(adr:WORD;data:Byte); stdcall ;

implementation
function IoInp(adr:WORD):Byte;
assembler ;
asm
mov dx,adr;
in Al,dx
end;
procedure IoOut(adr:WORD;data:Byte);
assembler ;
asm
mov dx,adr;
mov AL,data;
out dx,AL;
end;
end.
0511デフォルトの名無しさんNGNG
>>510
ありがとうございます。
年末の中非常にうれしいです。
ちょっとやってみます。
0512デフォルトの名無しさんNGNG
>>510
やってみました。
教えていただいたとおり.Pasのファイルをつくり、
プロジェクト追加のパスカルユニットにしてメイクしてみましたが、
自動的に作られたヘッダファイルというのがわかりません。
新たに.cppファイルができたのですが、
ヘッダファイルはどれ?という感じです。
0513デフォルトの名無しさんNGNG
はいはい

自動的に UIoPort.HPP というC++ヘッダファイルが作られるから
これを インクルード(ファイル->ユニットヘッダの追加で自動で)すれば

IoInp IoOut って名前使えるから、inp/outpという関数を作ってそれから呼び出せば?


0514デフォルトの名無しさんNGNG
C++Builder6で、再帰曲線を描いて遊びたいのですが、フォーム上にコマンドボタン
とパネルを配置し、さてパネルのCanvas上に描画しようと思ったら、パネルには
Canvasが無いようなのです。

フォーム上に描けば簡単なのですが、フォームにはツールバーとコマンドボタン
が乗っているし、他のCanvasを持つコントロールを配置したいのですが、どの
コントロールがこういう場合最適でしょうか?
0515たぶんNGNG
やりたい事を実現する方法は
1、TPaintBoxをパネルに貼り付け、AlignをclClientにして
  OnPaintイベントのみで TPaintBoxのCanvas描画
  ボタンイベントで直接再描画せず、ボタンイベントでは PaintBoxにInvalidateメッセージを送ります

2、TImageを貼り付け同じように設定し、Pictureプロパティを用意して
  Canvasに描画する。
  グラフィックプログラミングの概要を読む事

3、TGraphicControlを継承してコンポーネントを作成する

この3つが代表的です。

これらは場合により使い分けます
 素早く仕上げたいなら->1
 描画が遅いなら->2
 再利用する可能性が高いなら->3
0516デフォルトの名無しさんNGNG
>>515
ありがとうございます。

TImageに気づいていろいろやっていたのですが、一度TImageをFillRectなどで
塗りつぶすと、以降FormをResizeした後再度塗っても、大きさが変わってくれ
ないのです。

内部にビットマップイメージを保持しているのが問題みたいですね。この内部の
ビットマップイメージをクリアする方法があればいいのですがわかりません。

TPaintBoxには気が付きませんでした。これは使えそうです。早速やってみます。

継承まではとてもまだまだできません。
0517デフォルトの名無しさんNGNG
CppUnitCB使ってる人います?
0518デフォルトの名無しさんNGNG
いないということで。
0519デフォルトの名無しさんNGNG
>>517
DUnit 使え。
0520デフォルトの名無しさんNGNG
「実行時パッケージを使って構築」のチェックをはずしてコンパイルすると
「プロジェクト project1.exeがEWin32Errorクラスの例外を生成しました。'Win32エラー。コード1410.
そのクラスは既にあります。'プロセスは停止しています。」
となってしまい。じっこうできなくなりますた。「実行時パッケージを使って構築」にチェックを
いれると実行できるのですが、実行時パッケージを使わずにやる方法はないのでしょうか?
0521デフォルトの名無しさんNGNG
http://www.google.co.jp/search?q=ewin32error+1410&ie=UTF-8&oe=UTF-8&hl=ja&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
では
http://bdn.borland.com/article/0,1410,20090,00.html
しか引っかからなかったけど、関係あるかな?
0522520NGNG
>>521
申し訳ない。環境書くの忘れていました。
OS:Windows2000 バージョンはBCB5でupdate1は導入済みです
0523デフォルトの名無しさんNGNG
('A`)
0524デフォルトの名無しさんNGNG
>>522
もうちょっと詳しく書いてくれないとわからないよ。
どのプロジェクトでもなるの?特定のプロジェクトだけ?
新規の空プロジェクトでもなる?なにかdllとかつかってる?
古いバージョンで作ったプロジェクトとか?

有名な不具合なのかもしれないけど...
0525デフォルトの名無しさんNGNG
C++Builderはタダなんでつか?
0526デフォルトの名無しさんNGNG
体験版ならな。
0527タスケペーNGNG
あけましておめでとうございます。
アプリが最小化されている状態から元のサイズに戻し最前面に表示すると、
ウインドウ右上の最小化ボタンを押しても、最小化できなくなってしまいました。
ただ「元のサイズに戻す」を実行すると最小化できるようになります。
何か回避策はありますでしょうか。
ちなみに以下の手順にてウインドウをアクティブにして最前面に表示してます。
ShowWindow(mHWND,SW_RESTORE);
SetForegroundWindow(mHWND);
SetWindowPos(mHWND,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
SetWindowPos(mHWND,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
SetActiveWindow(mHWND);

0528デフォルトの名無しさんNGNG
おめでとうございます
スレッドについての質問ですが
Unit2で作った変数をUnit1で使うにはどのように宣言したらいいのですか
Unit1で作ったのは

Form1 ->

という感じで使えるのですが Unit2 から unit1 に持ってくるにはこれでは無理なんですの
教えてください、おねがしますおねがしますおねがいsむオンマエアイス
0529デフォルトの名無しさんNGNG
これMeでも使える?
0530デフォルトの名無しさんNGNG
>>527
最小化から元に戻すとき Application->Restore() を使ってみるのはどう。
0531デフォルトの名無しさんNGNG
>>527
Del8スレにあったぞ
0532デフォルトの名無しさんNGNG
age
0533デフォルトの名無しさんNGNG
>>528
ヘッダインクルードしる
0534債務不履行の名無しさんNGNG
>>528
ファイルメニューに「ユニットヘッダの追加」とかいうのがあるから,
Unit1のソースを表示しているときに選択すればよい。

手動でUnit2.hをインクルードしてもいいけど。
0535デフォルトの名無しさんNGNG
プロパティのHintの文字列を改行させたいのですがどうすればいいのでしょう?
オブジェクトインスペクタで\nを入れてもそのまま出力されるみたいですし…
0536デフォルトの名無しさんNGNG
>>535
試しちゃいないが、Form の OnCreate で、
SomeComponent->Hint = "hogehoge\r\nHello";
とかしてみたら?
0537デフォルトの名無しさんNGNG
>>536
\r\nでなくて、\nだけでちゃんと改行したよ。
0538デフォルトの名無しさんNGNG
ノーパソのモニタ電源だけを切りたいのですが、
方法はありますか?
0539デフォルトの名無しさんNGNG
見えてるコードをはさみで切る。
0540タスケペーNGNG

絶対パスで指定したフォルダの中にあるディレクトリ名(フォルダ名)を
AnsiString配列でほしーのですが、かっちょいい関数はありますか?
(但し1階層までしか見なくて良い。)
0541デフォルトの名無しさんNGNG
あーあ、今後は日本語版も本社でサポートしてくれればいいのに。
日本法人なんて潰してさ。
0542デフォルトの名無しさんNGNG
C++Builderで文字を横2倍角にすることはできませんか?
0543デフォルトの名無しさんNGNG
>>542
 どこで使いたいか判らないけど、API でフォントを設定すればいいんじゃないの?

http://www.google.co.jp/search?q=LOGFONT&&lr=lang_ja
0544デフォルトの名無しさんNGNG
>>543
文字をスクロールさせるプログラムを作っています。
最初はテキストボックスでスクロールさせようと思っていましたが、
横2倍角文字を織り交ぜた文章をスクロールさせなければいけなくなりました。

どんな方法を使ってでも指定した文字がスクロールできればいいので、
特定の方法というのはありません。

環境は w2k + C++Builder5です。
0545デフォルトの名無しさんNGNG
>>544
表示座標をゴスゴス下げながら描画。
0546デフォルトの名無しさんNGNG
通常のサイズの文字と、横2倍角の文字を混同させないといけないので困っています。
■ このスレッドは過去ログ倉庫に格納されています