トップページ⇒tech
946コメント287KB

C++Builder相談室 Part6

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
C++Builderに関する質問・回答や議論等を行う相談室スレッド。
過去スレ・関連サイトは>>2-10あたり。


0348デフォルトの名無しさんNGNG
>>346
VC=C++ Onlyで開発できる。
BCB=Pascalが必要な上にC++と互換性がない拡張がなされている。
0349デフォルトの名無しさんNGNG
>>348
VCの方がよく見えるのですけど
0350デフォルトの名無しさんNGNG
じゃあVC使えばいい
0351デフォルトの名無しさんNGNG
>>347
できる
0352デフォルトの名無しさんNGNG
>>348
VC =C++ Onlyでしか開発できない。Visualという名前に負けている。
BCB=C++のみでも可能だが、DelphiのVCLを利用してVisualにGUI開発が出来る
0353デフォルトの名無しさんNGNG
>>351
どうやるのですか、ご教授してください
0354デフォルトの名無しさんNGNG
>>352
BCBの方がよく見えるのですけど
0355デフォルトの名無しさんNGNG
>>353
ヘルプで パッケージ のキーワードのところを順に見てけばそのうち判ると思うよ
0356デフォルトの名無しさんNGNG
>>353
プロジェクトオプションを開く
リンカタブの「共有 RTL DLL を使う」のチェックを外す
パッケージタブの「実行時パッケージを使って構築」のチェックを外す
0357デフォルトの名無しさんNGNG
>>355
thanks

>>356
どうもありがとうっ!
ファイルサイズかなりでかくなったけど出来たよ
0358デフォルトの名無しさんNGNG
>354

じゃあBCB使えばいい
0359312NGNG
度々すみませんが、「派生前と派生後(名前変えただけ...)で動作が違う」原因というかバグを把握しないと、コンパイラとして不安があるなと思ってます。

BCBオタの皆さんも312の内容を試してみて頂けないでしょうか?
0360デフォルトの名無しさんNGNG
>>359
>BCBオタの皆さん

こんな書き方すると荒らし扱いされるぞ
気をつけな
0361デフォルトの名無しさんNGNG
InterBaseインストールしてないや
0362デフォルトの名無しさんNGNG
リソースファイル(*.rc)にBMP以外の画像を埋め込みたいんですが
なぜか成功しませぬ。

[sample.rc]
RC_TITLE001 BITMAP "title.bmp"
RC_CHAR001 PNG "stand001_all.png"
RC_BM001_1 JPEG "back_test0_big.jpg"

ファイル名を直接指定した場合は描画できるんですけど
リソースIDでやった場合、BMP以外は描画不能。

ユーザに直接画像を覗かれない方法があったら教えてママン(´・ω・`)
0363デフォルトの名無しさんNGNG
[sample.rc]
JPEG1 JPEG "test.jpg"

TResourceStream* stream = new TResourceStream((int)HInstance, "JPEG1", "JPEG");
TJPEGImage* jpeg = new TJPEGImage();
jpeg->LoadFromStream(stream);

で出来たど
0364 NGNG
TTreeViewでWindowsのヘルプみたいに展開されてるかされてないかでノードに表示されてるイメージを変えるにはどうすればいいの?
0365デフォルトの名無しさんNGNG
StateImages設定して、OnCollapsedやOnExpandedでStateIndexを変えるとか >>364
0366 NGNG
>>365
ありがとう。やっぱり設計時のプロパティだけじゃ無理なのか。
イベントハンドラをかいてその中で自分で設定するわけね。
0367デフォルトの名無しさんNGNG
TDateTimePicker について質問があります。

二つのTDateTimePicker(Dtp1,Dtp2) を用意してformのcreateかなんかでそれぞれ、2003/06/27、2003/06/30と
しておきます。
この二つのTDate値を比較するときに、両方のTDateTimePickerの内容をUI上で変更すれば、きちんと比較できるのですが、
片方だけ(Dtp1)2003/06/27 を 2003/06/30 にして、比較(Dtp1->Date <= Dtp2->Date)すると、同じ値なのに(Valも同じ)、この式がfalseを返します。
Dtp2をもういちど、2003/06/30 に選びなおすと比較できます。

わかりにくくてすいませんが、どなたか解決法ご存知でしたら教えていただけませんか?

0368362NGNG
>>363 thx!
フリーのライブラリを覗いたらリソースIDをそのままCreateFile()に
用いてたのが原因ですた(´・ω・`)

bool LDImg(const char* fileName){
 HANDLE hFile;
 if(strchr(fileName,'.') == NULL)
 { //リソースIDから指定
/*
  リソース経由でCreateFileさせる方法募集(´・ω・`)ノ
  GetModuleFileName()?
*/
 }else{//ファイル名を直接指定
  hFile = CreateFile(
   fileName, GENERIC_READ,FILE_SHARE_READ,NULL,
   OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
 }
 //以下、ファイルリード処理
}
0369デフォルトの名無しさんNGNG
>>368
> リソース経由でCreateFileさせる方法募集(´・ω・`)ノ
> 以下、ファイルリード処理
リソースをメモリにロードするなら、>>363のTResourceStreamで出来るよ(stream->Memoryでロードしたデータにアクセス)。
APIでやりたいなら→http://www.kumei.ne.jp/c_lang/sdk4/sdk_317.htm
0370デフォルトの名無しさんNGNG
>>367
再現しないな。
> formのcreateかなんかでそれぞれ、2003/06/27、2003/06/30としておきます。
> 片方だけ(Dtp1)2003/06/27 を 2003/06/30 にして
この時、どういうコードで日付変更してる?
0371デフォルトの名無しさんNGNG
>>370
再現しないですかあ。

>この時、どういうコードで日付変更してる?

Dtp->Date=Now()-1; //昨日
Dtp->Date=Now()-7;//一週間前

って感じです。まずいですか?





0372デフォルトの名無しさんNGNG
Dtp1->Date=Now()-1; //昨日
Dtp2->Date=Now()-7;//一週間前

でした
0373デフォルトの名無しさんNGNG
>>370
Delphi5だと正常に動きます・・・。
0374デフォルトの名無しさんNGNG
TDateってTDateTimeをtypedefしただけで、時間も保持してるみたいだから、
時間部分の差で>>367みたいなことになったんでない?

EncodeDate使ったり、
Dtp1->Date = (int)Now() - 1;
Dtp2->Date = (int)Now() - 7;
ってやれば大丈夫だと思う。
0375デフォルトの名無しさんNGNG
う、ごめん嘘書いたみたい。カレンダーから日付取得すると、少し時間がずれてる。
比較するときに、(int)Dtp1->Date == (int)Dtp2->Date か。
0376367NGNG
>>374
ありがとうございました。(int)で動きました。
ただよくわからないのが、Valの値(少数点(時間)付)も同じだったし、Delphi5では動いたことです・・・。

0377デフォルトの名無しさんNGNG
6j pro をインストールしたんですが、使用許可のオンライン認証ってやらないと何か不都合はあるんでしょうか
もし認証をしないで済む方法、パッチなんかがあれば教えてください
0378367NGNG
>>375
設定するときと比較するとき、両方に(int)しときました。
ありがとうございました。
0379デフォルトの名無しさんNGNG
>>377
オンライン認証が苦手だな、という方は、「使用許諾コード取得フォーム」に
記載の上、ファクシミリにてボーランド株式会社インフォメーションサービスセンター
使用許諾コードお問い合わせ係 まで送ってください。
0380デフォルトの名無しさんNGNG
>>377
ホントニ正規ユーザーでつか?
0381デフォルトの名無しさんNGNG
>>377
あなたは認証をやると何か不都合があるのでしょうか
0382デフォルトの名無しさんNGNG
377ではないが、今まで買ったソフトを、一本たりとも登録した事が無い。
VS6に付いてたMSDNの無償ライセンス申し込みの期限が切れたことに
気づいた時は、さすがに嫌な気分になったが。
0383デフォルトの名無しさんNGNG
ネットに繋いでないPCにインスコする人のことも考えてほしいな
Winnyで出回ってるクラックパッチは怖くて実行出来んし
0384デフォルトの名無しさんNGNG
>>383
ネットに繋がなくても認証できるから大丈夫。
割れは恐いな。SPでどうなるかわからん。
というわけで必要なヤツは買え。
0385デフォルトの名無しさんNGNG
>>383
だから>>379の言ってるFAX認証があるのだが、何か不満か?
今時FAXが無いわけでもあるまい?
0386デフォルトの名無しさんNGNG
>>385
FAXなんかもってねーよ。必要ないし。
最近なら固定電話すら置いていない人もいるだろ。
0387デフォルトの名無しさんNGNG
割 れ 厨 必 死 だ な ( w
0388デフォルトの名無しさんNGNG
>>386
コンビニにFAXくらいあるだろ
0389デフォルトの名無しさんNGNG
>>387
俺は>>377じゃないんだが。BCBなんてもっていないし。

>>388
コンビニから送ったとして、そのあとどうなるの?
0390389NGNG
スルーか。まあいいや。
しかし興味深い・・・送った後にどうやって認証するんだろう。コンビニから送ったんじゃFAXを受けることはできないはずだし。
0391デフォルトの名無しさんNGNG
20分しか経ってないのに(w
よっぽどかじりついてんだな。
0392デフォルトの名無しさんNGNG
>>389
製品を買った方のみ、わかります。
すなおに買うことをお薦めいたします。
0393デフォルトの名無しさんNGNG
状況かいときゃ、封書ででも来るのだろう。
0394デフォルトの名無しさんNGNG
>>391
そうね

>>392
こんなことを確認するためだけに買うなんてばからしいからやめておく。
C++コンパイラならVC++があるし。

>>393
郵送か・・・なるほど。FAX送ってから届くまで時間がかかるけど他に方法がないんじゃしかたないよね。
ありがとう。
0395デフォルトの名無しさんNGNG
低質な釣り師だったな

↓ はい、次の方
0396デフォルトの名無しさんNGNG
6j pro をインストールしたんですが、使用許可のオンライン認証ってやらないと何か不都合はあるんでしょうか
もし認証をしないで済む方法、パッチなんかがあれば教えてください
0397デフォルトの名無しさんNGNG
↓ はい、次の方
0398デフォルトの名無しさんNGNG
>>396
割れ厨?
0399fopenNGNG
fopen で3.7ギガのファイルを読もうとすると、
fp = fopen( file_path, "r+b" )
fpにnullが入りうまくいかないのですが、どうにかならないでしょうか?
当然、小さいファイルは読めます。
0400デフォルトの名無しさんNGNG
>>396
アスタラへ逝け
Delphi用で(ry ゴホッ、ゴホッ・・・
0401青木照子NGNG
プログラムを実行させると次のようなエラーが出ます。

[C++エラー]E2075 Project override オプションの間違い

どうしても分かりません。
0402デフォルトの名無しさんNGNG
>>401
そうですか。
0403デフォルトの名無しさんNGNG
低質な釣り師だったな

↓ はい、次の方
0404デフォルトの名無しさんNGNG
有れば開く、無ければ作る。他のアプリから読み取りは許可する。
他のアプリが開いていても書き込める。

こんな便利なTFileSteamコンストラクタの引数は、ヘルプにのってる定数の組み合わせ(||)
で出来るんでしょうか。
0405デフォルトの名無しさんNGNG
無理だな
0406デフォルトの名無しさんNGNG
そうか。じゃあなんで動くんだろ。
0407デフォルトの名無しさんNGNG
ぜってー無理。
0408 NGNG
ボタンがクリックされたらラベルの表示を替えるプログラムで

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Label1->Caption.printf( "%d, %d", 100, 100 );
}

だと何も代わりません。

void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString str;
str.printf( "%d, %d", 100, 100 );
Label1->Caption = str;
}
とするとちゃんと表示されるんだけど。何故?
0409デフォルトの名無しさんNGNG
__property AnsiString Caption = {read=GetText, write=SetText...
なので、
Label1->Caption.printf(...
は、
Label1->GetText().printf(...
といふうに置き換わるから。
0410  NGNG
>>409
どうもありがとう。
まだBC++Builder始めたばっかりでプロパティの仕組みはおぼろげなんだが
GetText()が返すのはいわゆる一時的なオブジェクトでラベルの保持してる文字列ではないのかな。
とにかくCaptionの値を変えるのは代入しかないわけね。
0411デフォルトの名無しさんNGNG
MDI アプリケーションで、親フォームの閉じるボタン
(フォーム右上の×ボタン) が押されたっていうイベントを、
子フォームよりも先に親フォームで捕まえる方法ってありますか?
0412デフォルトの名無しさんNGNG
親フォームのCloseQueryをオーバーライドして、

bool __fastcall TMainForm::CloseQuery(void)
{
  // 子フォームのCloseQueryが呼ばれる前にしたい処理
  //       :
  return TForm::CloseQuery();
}

とか。あとWM_CLOSEがきた時点で処理するとか。
0413デフォルトの名無しさんNGNG
TDateTimeにtime_tはどうやったら入りますか?

time_t a;
TDateTime DateTime = a;

みたいな感じで。
0414デフォルトの名無しさんNGNG
単に代入するだけなら、
dateTime = (double)a;

時刻を変換したいなら、
http://www2.big.or.jp/~osamu/Delphi/tips.cgi?index=0088.txt
0415デフォルトの名無しさんNGNG
>>412
できますた。�dクス♪
0416413NGNG
thanx>>414

でも、面倒...
0417デフォルトの名無しさんNGNG
これでできるっぽい
dateTime = a/(60*60*24.0) + UnixDateDelta + 9/24.0;
0418デフォルトの名無しさんNGNG
>>377ですけど、結局今日6jパーソナル買ったよ
っていうか買うの3以来。
あれから3回もバージョンアップしたのか・・・
0419 NGNG
数値計算を勉強したいのですがbuilderでBlitz++を使うにはどうしたら言いのですか?
最初にソースをコンパイルしてライブラリを作らなくちゃいけないみたいなんですけどできません。。
./configure --with-cxx=[compiler]
とか何とかUNIXのシェルかなんかで実行するのなんて分けわかりません。
コマンドラインでコンパイルしたことないのでMakeとかもわかりません。
だれかコンパイルしてBC++用のライブラリ作った人いませんか。
0420デフォルトの名無しさんNGNG
なんか ZDnet でBCB講座が始まってるぞ
http://www.zdnet.co.jp/developer/0307/04/dvn01_3.html

>>419
config.h を作らないといけないからね。
http://www.google.co.jp/search?q=Blitz+BCB
で探せば?
0421419NGNG
>>420
有難うございます。config.hを探してみたら
http://www.oonumerics.org/MailArchives/blitz-dev/msg00490.php
にありました。
ただ他のヘッダファイルも変えなくちゃいけないところがあるらしく非力な自分は時間がかかりそうです。
config.h作った人は簡単にBCでもできたよといってますけど。
0422419NGNG
ライブラリの作り方はわかないけど、もともとテンプレート使ってほとんどヘッダファイルに書かれてるので
ライブラリなんか作らなくてもヘッダさえインクルードすれば最初の方の例がコンパイルできるようになりました。
420さん、ありがとう。
あとはゆっくり勉強して不都合がおきればまた調べます。
0423デフォルトの名無しさんNGNG
http://www.codeguru.com/listview/edit_subitems.shtml
のような編集可能なListViewを実装したいんですが…サンプルがVCなのでうまくできません
他にサンプルやこれを使う方法無いでしょうか…
0424デフォルトの名無しさんNGNG
>423
適当に作ってみた。

ヘッダ
class PACKAGE TListView1 : public TListView
{
private:
TEdit *Cap;
TListItem * ChangeItem;
int ChangeSubIndex;
void __fastcall CapKeyPress(TObject *Sender, char &Key);
protected:
DYNAMIC void __fastcall MouseDown(TMouseButton Button, TShiftState Shift, int X, int Y);
public:
__fastcall TListView1(TComponent* Owner);
__fastcall ~TListView1(void);
__published:
};
//---------------------------------------------------------------------------
0425デフォルトの名無しさんNGNG
実装
コンストラクタとデストラクタ
__fastcall TListView1::TListView1(TComponent* Owner)
: TListView(Owner)
{
Cap = new TEdit(this);
Cap->Parent = this;
Cap->OnKeyPress = CapKeyPress;
Cap->Visible = false;
}
//---------------------------------------------------------------------------
__fastcall TListView1::~TListView1(void)
{
delete Cap;
}
//---------------------------------------------------------------------------
0426デフォルトの名無しさんNGNG
void __fastcall TListView1::MouseDown(TMouseButton Button, TShiftState Shift, int X, int Y)
{
//アイテムを求める
ChangeItem = GetItemAt(X, Y);
if (ChangeItem == NULL || Cap->Visible == true) return;

//サブアイテムを求める
int pos = 0;
for (int i = 0; i < this->Columns->Count; i++){
pos += this->Columns->Items[i]->Width;
if (pos > X){
pos -= this->Columns->Items[i]->Width;
ChangeSubIndex = i - 1;
break;
}
}

//サブアイテム位置でなければエディット表示は行わない
if (ChangeSubIndex < 0) return;

//Edit
Cap->Visible = true;
Cap->Left = pos;
Cap->Top = ChangeItem->Top;
Cap->Text = ChangeItem->SubItems->Strings[ChangeSubIndex];
Cap->SetFocus();
}
0427デフォルトの名無しさんNGNG
//エディットのキー操作
void __fastcall TListView1::CapKeyPress(TObject *Sender, char &Key)
{
if (Cap->Visible == true && Key == VK_RETURN){
ChangeItem->SubItems->Strings[ChangeSubIndex] = Cap->Text;
Cap->Visible = false;
}
}
//---------------------------------------------------------------------------
あとは勝手に改造してください。
0428デフォルトの名無しさんNGNG
あ、vsReportで、RowSelectはtrueにしておいてね。
0429423NGNG
>>424-428
おぉ…ありがとうございます。
使わせて頂きます
0430デフォルトの名無しさんNGNG
>>424-428
すばらしい。。。便乗させてもらいます。
0431デフォルトの名無しさんNGNG
……見返したら許せないバグがあるんで、訂正スマソ。

//アイテムを求める
ChangeItem = GetItemAt(X, Y);
if (ChangeItem == NULL || Cap->Visible == true) return;

のところ、
if (Cap->Visible == true) return;はGetItemの前にやらないと
ChangeItemが変わっちゃうんで駄目です。
0432423NGNG
>>431
再度どうもです。
コンポ作っていろいろやってます…
マウスのホイールやメニューのクリックでフォーカス外したりするのが必要なので
いろいろ調べつつ頑張ってみます
0433  NGNG
professional版以上についてるCodeGuardてべんりですか?
メモリリークがあると簡単にわかる?
どんな型のどのくらいのメモリがリークしたかとかわかるの?
0434デフォルトの名無しさんNGNG
プログラミングとは全然関係ないんですが、
一応、BCBでおこったことなので、書き込みます。

2,3ヶ月前に、BCBを使おうと思って起動させたら、
なんか、ゴジラの鳴き声
『ギャォォォォン!』
と言うのがして、ビックリして画面見たら、
いつものスプラッシュウインドウではなく
どっかのイラストレーターが書いたようなゴジラの絵の
スプラッシュウインドウが出てきました。
一体コレはなんだったのでしょうか?
ネタじゃなくマジです。
あまりにビックリしすぎて、スクリーンショットを取り損ねてしまいました。
0435デフォルトの名無しさんNGNG
BCBのIDEみたいな、ドッキングフォームを作りたいです。
プロパティのDock関係をいじってみたんですが、
エディタ部を固定したままにすると、ドッキングされたフォームが
エディタに重なってしまい、エディタが使えない状態になってしまいます。
よろしくおねがいしまs
0436デフォルトの名無しさんNGNG
Buttonを押してImageへEditに書いた文字列を表示させるという事がしたくて
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char i[32];
strcpy(i, Edit1->Text);
Image1->Canvas->TextOut(0, 0, i);
}
と記述したら
'AnsiString' 型は 'const char *' 型に変換できないと表示されました。
Strからcharに変換する方法か、
もっと簡単にEdit1->Textの文字列を代入する方法ありませんか?
0437>>436NGNG
ageてすいません。
よろしくお願いします。
0438デフォルトの名無しさんNGNG
Image1->Canvas->TextOut(0, 0, Edit1->Text);

質問でageても誰も文句言わん。
0439デフォルトの名無しさんNGNG
char配列へのコピーを一応。
strcpy(buffer, Edit1->Text.c_str());
0440デフォルトの名無しさんNGNG
だれか434の件について答えてくれ
0441デフォルトの名無しさんNGNG
>>440
>一応、BCBでおこったことなので
Windowsで起こった事だ
0442デフォルトの名無しさんNGNG
CtrlとShift押しながらBCB起動しろ
0443>>436NGNG
>>438
>>439
そのままTextOutに書いてよかったんですね。
わざわざchar配列へのコピーまで教えて頂きありがとうございました。

0444デフォルトの名無しさんNGNG
>>434
それ、Borzillaだな、幸運な奴だ
どうやったらそれが出るのか漏れは未だにわからん
リソースに入ってるので、リソースハッカー等で取り出せはしたのだが・・・・
0445434NGNG
>>442
神!
出ました。有り難うございます。
今までウイルスか何かかなぁと思っていたんで、
安心しました。
普通に起動して出たのって凄い確率なんでしょうね。
0446デフォルトの名無しさんNGNG
>>442
これってBorlandの社員の集合写真か?
0447デフォルトの名無しさんNGNG
>>442
その方法で出ないぞ
BCB6J UPD#4は違うのか?
■ このスレッドは過去ログ倉庫に格納されています