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

くだすれC++Builder(超初心者用)その2

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/04/06(木) 16:33:24
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
C++Builder使いが優しくコメントを返しますが、
お礼はC++Builderの布教と初心者の救済をお願いします。

Borland Home Page
http://www.borland.co.jp/


<前スレ>
くだすれC++Builder(超初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1117225464/l50


<兄弟スレ>
くだすれDelphi(超初心者用)その31
http://pc8.2ch.net/test/read.cgi/tech/1142594051/l50
0698デフォルトの名無しさん2006/10/11(水) 00:28:20
>>696
そういう風に自分の考えている課題を最初から質問で提示すればいいんだよ。
そのほうが適切なレスがつきやすい。

>たとえば、exeファイルクリックしたらはじめに設定ファイルを
>必ず読みに行くとか、など考えられるかもです。

それはメインフォームのコンストラクタでやるのが適切。
BCBではFormのOnCreateイベントを使うのは推奨されていない。
0699デフォルトの名無しさん2006/10/11(水) 00:34:31
>>698さん
教えて欲しいんですが、OnCreateが推奨でない根拠ってなんでしょうか?
バグあり、みたいな話?
0700デフォルトの名無しさん2006/10/11(水) 00:46:54
BCBのヘルプから引用
>注意 フォームのコンストラクタとのやり取りが不良になる可能性があるので,
>C++Builder で OnCreate イベントを使うことはお勧めできません(OldCreateOrder を参照)。
>かわりに,フォームコンストラクタをオーバーライドすることをお勧めします。

BCB使いには常識みたいな話なんだけど
0701デフォルトの名無しさん2006/10/11(水) 00:53:41
>>698
ありがとうございます。
メインフォームのコンストラクタですか。
今いろんなサイト調べてみたんですが、
メインフォームのコンストラクタというのは、
下記のことでよかったでしょうか。
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
自身がなくて。。。
すみませんが、よろしくお願いします。
0702デフォルトの名無しさん2006/10/11(水) 00:58:56
>>701
そだよ

あんた、悪いこと言わんからBCB以前にC++の入門書読みな
あたりまえだがC++を理解してなきゃBCBは使えないよ
0703デフォルトの名無しさん2006/10/11(水) 01:13:01
>>700さん
しらんかったー!
0704デフォルトの名無しさん2006/10/11(水) 12:09:55
>>702
ありがとうございます。
がんばります。
0705デフォルトの名無しさん2006/10/11(水) 20:27:48
C++はDelphiにくらべてコード補完などが遅いのですか?

Hoge( と入力しただけで5秒くらい待たされたり、
変数などにマウスカーソルを乗せただけで、同じく5秒ほど待たされます。

BDS2006ですが、PCがクソなのでしょうか
0706デフォルトの名無しさん2006/10/11(水) 20:34:20
>>705
IDE SpeedFixを入れろ。
0707デフォルトの名無しさん2006/10/11(水) 21:42:52
つ http://gimite.ddo.jp/bcbqtree/qtreemain.cgi?mode=thread&thread=515
0708デフォルトの名無しさん2006/10/11(水) 21:45:37
あ、ちなみにBDS2006にはBCB6用ではなくBCB10用な。
0709デフォルトの名無しさん2006/10/12(木) 00:40:54
ありがとうございます。

入れてみましたが、コンパイルは速くなったものの、コード補完の速度は変わりませんでした。
IDEが生産したForm1があるUnit1.cpp内では速いんですが、
自分で作ったcpp内だと倍以上時間がかかります。
自分の書いたコードを疑ってみます。
0710デフォルトの名無しさん2006/10/12(木) 00:49:38
>>709
プリコンパイルヘッダを作成した後じゃないと補完は速くならないよ。
0711デフォルトの名無しさん2006/10/12(木) 01:10:42
速くなりました。ありがとうございます。
先日DelphiからBCBにスイッチしたばかりで、よく分からなかったのですが、
vcl.hもプリコンパイルヘッダというものなのですね。
それと、#pragma hdrstopまでにPCHをincludeするということも分かりました。
DelphiのようにSysUtils.hppとかClasses.hppをincludeしてただけだったので、遅かったようです。
0712デフォルトの名無しさん2006/10/12(木) 03:56:43
OSはwindowsです。
自分で作ったアプリケーションの起ち上がるプロセスの個数を
制限したいのですが、どのような方法があるのでしょうか。

例えば、IE(ブラウザ)の場合、いくらでも窓を立ち上げることができます。
ctrl+alt+delでwindowsタスクマネージャを見ると、プロセスが
複数なのがわかります。
この個数を制限したいです。
よろしくお願いします。
0713デフォルトの名無しさん2006/10/12(木) 05:17:53
個数制限の場合はmutexじゃなくてセマフォだな。
0714デフォルトの名無しさん2006/10/12(木) 13:53:42
>>713
ありがとうございます。
セマフォ勉強します。なんか聞いたことあります。

ちょっと違う方法なのですが、
タスクマネージャのタスク一覧みたいに、現在動いているタスク一覧の取得して、
その中に、これから起動しようとしているプロセスの名前があったら
起動できない。というふうにするのはどうでしょうか。

他のアプリケーションのプロセス名と偶然名前が同じになってしまったとき、
起動しなくなってしまう場合があるかもしれないのですが、
もしこれを回避するには、アプリケーションのある場所のパスを比較
するということになりますでしょうか?
よろしくお願いします。
0715デフォルトの名無しさん2006/10/12(木) 14:05:29
すみません、教えてください。
エクスプローラからListViewにD&Dはできたのですが、
逆にListViewからエクスプローラにファイルをD&Dする方法を教えてください。
0716デフォルトの名無しさん2006/10/12(木) 15:32:02
>>714
単純にFMOとかの共有メモリに起動プロセス数書きこんどけば?
0717デフォルトの名無しさん2006/10/12(木) 15:35:21
>>715
DoDragDrop、IDropSourceあたりで検索。そこそこ面倒。
ただしこれが分かってれば他アプリからテキストや画像、URL情報のドラッグしてきても受け取れるようになる。
0718デフォルトの名無しさん2006/10/12(木) 18:58:39
c++builder6使っています。
onshowイベントの実行できないんですが、どこがおかしいのか教えていただけ無いでしょうか。
エラーは無いのですが、onshowイベントが起こらないで、そのままウィンドウが表示されてしまいます。
ヘッダーファイルの書き方が違うんでしょうか。
よろしくお願いします。

includeなど省略してます。
○unit1.cpp
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
void __fastcall TForm1::FormShow(TObject *Sender)
{
        ShowMessage("hello");
}
○unit1.h
class TForm1 : public TForm
{
__published:// IDE 管理のコンポーネント
        void __fastcall FormShow(TObject *Sender);
private:// ユーザー宣言

public:// ユーザー宣言
        __fastcall TForm1(TComponent* Owner);

};
extern PACKAGE TForm1 *Form1;
0719デフォルトの名無しさん2006/10/12(木) 19:08:13
ヒント:dfm
0720デフォルトの名無しさん2006/10/12(木) 19:25:23
>>719
dfm早速調べてみます。

オブジェクトインスペクタで、OnShowイベントをダブルクリックして
書くと大丈夫でした。
builderなんとなくわかってきたかもしれません。

5時間ぐらい考えてたので泣けてきました。
でも解決してよかった。ありがとうございました。
0721デフォルトの名無しさん2006/10/12(木) 19:31:09
>5時間ぐらい考えてたので泣けてきました。
そうやって勉強していくもんだ。

dfmがやってることをコードで書く場合は、

this->OnShow = FormShow;
もしくは、
Form1->OnShow = FormShow;
だお。

TFormがOnShowというプロパティを持ってて、
実体はメソッドのポインタ。

VCL の Clickメソッドの中でそのプロパティがAssignされていたら実行する、
となっている。
0722デフォルトの名無しさん2006/10/12(木) 19:33:57
>dfmがやってることをコードで書く場合は、

dfmとコードとどういう関係かっていうと、
プロパティの初期値をコードで書く代わりに、
GUI(Object Inspector)で手で設定してファイル保存したのがdfm。

Object InspectorのEventsタブに切り替えると、イベントハンドラのプロパティを目で見える。
0723デフォルトの名無しさん2006/10/13(金) 22:53:17
いままでDelphiを使っていましたが、Turbo C++が出たのをきっかけに
C++を学びたいと思い現在悪戦苦闘しています。
押されたキーコードを表示するプログラムを書いてみたのですが
キャストのところが我ながら無理矢理表示させているような気がしてなりません。
本来はどう記述するべきなのでしょうか?

void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{
 ShowMessageFmt("%.4x", &(TVarRec)Key, 0);
}
0724デフォルトの名無しさん2006/10/14(土) 00:14:26
>>723
BCBだとVCLのFormat系使わずに、AnsiString::sprintf使うことが多いと思う。
こんな感じに。

ShowMessage(AnsiString.sprintf("%02X", Key));
0725デフォルトの名無しさん2006/10/14(土) 02:33:47
>>723
ARRAYOFCONSTマクロを使うてもある

 ShowMessageFmt( "%.4x", ARRAYOFCONST((Key)) );
07267232006/10/14(土) 03:27:30
>>724-725
サンクスです。
DelphiではAnsiStringはクラスではなかったのでそんなルーチンがあるとは気付いてませんでした。
また、ARRAYOFCONSTマクロはDelphiにはなかったのでこちらの方も勉強になりました。
0727デフォルトの名無しさん2006/10/14(土) 21:51:34
TActionManagerなどのTAction〜系を貼り付けると、コードエディタがものすごく重たくなります。
しょうがないので今まで使ってこなかったのですが、何が原因なのでしょうか。
0728デフォルトの名無しさん2006/10/16(月) 00:05:05
>>727
もしBDS2006ならば、BCBに限らず要らんコトしすぎだから。
メモリは1GB推奨だってさ。アフォか?
俺はコードだけEMエディタ使ってるけど。
0729デフォルトの名無しさん2006/10/17(火) 19:42:41
BCB6使ってます。
関数printfで標準出力が見たいんですが、方法ありますでしょうか。
dos窓でexeファイル実行すると、アプリのフレームは表示されますが
すぐに戻ってしまいます。
それか、標準出力を表示させるパーツとかないでしょうか。
0730デフォルトの名無しさん2006/10/17(火) 20:38:25
>>729
まさかエクスプローラでダブルクリックしてないだろうな?
0731デフォルトの名無しさん2006/10/17(火) 20:43:17
リンカの追加オプションに-apを付けてみるとどうだろう
0732デフォルトの名無しさん2006/10/17(火) 21:22:51
>>730
void __fastcall TForm1::Button1Click(TObject *Sender)
{
printf("hoge");
}
ボタン押したら、hogeって表示させようと思ってるんですが。
dos窓で、Project1.exeを入力してEnter押してます。

>>731
コマンドラインからbcc32を入力して-apを付けるんですよね。
-apってコンソールアプリケーションのことみたいですが、
作りたいのはWINアプリです。説明が下手ですみませんでした。
0733デフォルトの名無しさん2006/10/17(火) 22:59:30
>>732
IDEのプロジェクトオプションのリンクのとこに追加オプションというのがある。
エクスプローラから実行してもdos窓がでるけどフォームとかは使えるよ。
0734デフォルトの名無しさん2006/10/18(水) 00:24:48
OutputDebugString("hoge");
をイベントログで見るとかそういう話じゃないの?
0735デフォルトの名無しさん2006/10/18(水) 00:52:01
>>733
バージョン6使ってますが、プロジェクトオプションにいくと
いろんなタブがあって、その中にリンカ、リンカ(詳細)とかありました。
全部のタブ見てみましたが、どこを変更すればよいかわかりません。

>>734
OutputDebugString検索してみました。
リアルタイムで表示できないってありましたが、ほぼこれをしたいです。
printfみたいにリアルタイムで表示させたいんです。
ついでにこの解説してあるページにprintfについて、
基本的にprintfはWINDOWSで使えないとありました。
MEMOに表示させるとかしか無いでしょうか。
0736デフォルトの名無しさん2006/10/18(水) 02:12:50
>>735
実際にコーディングして確かめました?
OutputDebugStringが実行されると即時表示されるのですが。

TMemoで使うならsprintfになると思うけど、、。
0737デフォルトの名無しさん2006/10/18(水) 07:25:22
>>736
やってみたところリアルタイムで出てきました。
すごい便利です。
ありがとうございました。
0738デフォルトの名無しさん2006/10/19(木) 07:27:41
フォーム内で、ドラッグ&ドロップするのは開発者ガイド見て
できたところなんですが、フォーム外から取得する方法知りたいです。

エクスプローラから、ファイルをフォーム内に落として、
ファイル名を取得したいと思ってます。
よろしくお願いします。
0739デフォルトの名無しさん2006/10/19(木) 07:43:43
C++Builder ドラッグ ドロップ
でググればいいと思うよ
0740デフォルトの名無しさん2006/10/19(木) 09:15:02
>>739
カタカナで検索したほうがよかったですか。
参考になりそうなページがいくつか出てきました。
ありがとうございました。
0741デフォルトの名無しさん2006/10/19(木) 12:59:37
D&Dは他から持ってくるのは簡単なんだけどねえ
逆はなんであんなに…
0742デフォルトの名無しさん2006/10/19(木) 14:30:53
ttp://www.mahoroba.ne.jp/~makkie7/BCB/index.htmlの
拡張コンボボックスがインストできない。

[リンカ エラー] Error: 未解決の外部参照 '__fastcall Dialogs::TOpenDialog::Execute(void *)'
が C:\DOCUMENTS**** から参照されました

BDS2005
0743デフォルトの名無しさん2006/10/20(金) 08:20:32
>>741
ファイルドロップの受け入れだけOS標準のラッパーがあると考えるんだ。
0744デフォルトの名無しさん2006/10/21(土) 18:21:53
かれこれ一ヶ月ぐらいBCB6使ってますが、チルダ付きのファイル名
Unit1.~h Unit1.~CPPとかたくさんできるんですがなんででしょうか。

プロジェクト名とCPPファイルの名前聞いてきますが、
名前変えただけだと、リンクエラーみたいに、コンパイルできないときもあるんです。
そのうち、Project1に上書きしてしまったり。
なんかこわいです。
0745デフォルトの名無しさん2006/10/21(土) 19:25:14
>>744
それバックアップファイルだから。
BDS2006からちゃんと別フォルダに作られるようになったよ。
0746デフォルトの名無しさん2006/10/21(土) 20:58:53
>>774
つ [環境オプション]
07477742006/10/21(土) 22:13:46
呼んだか?
0748デフォルトの名無しさん2006/10/21(土) 23:50:22
>747
はやってんのか、それ
0749デフォルトの名無しさん2006/10/22(日) 04:55:34
>>745 >>746
お返事どもです。
バックアップファイルでしたか。
閉じるときにプロジェクトとCPPファイル聞いてくるのも
なんとなくわかりました。
0750デフォルトの名無しさん2006/10/22(日) 09:34:23
749です。
プロジェクト名とCPPファイル名を同じにすると、
WINMAINが無いとか出てくるみたいです。
これが原因だったのかなぁ。
0751デフォルトの名無しさん2006/10/22(日) 21:12:52
>>750

>>655>>657>>660
0752デフォルトの名無しさん2006/10/22(日) 23:55:33
>>751
あああ、ほんとだ。
すみませんでした。

でも、予想が当たって良かったです。
0753デフォルトの名無しさん2006/10/24(火) 23:41:47
文字列を0詰めする方法を教えてください。

"abc" → "000abc"
0754デフォルトの名無しさん2006/10/25(水) 00:40:01
const int MaxLength = 8;
AnsiString str = Edit1->Text;
Edit2->Text = str.StringOfChar('0', MaxLength - str.Length())+str;
0755デフォルトの名無しさん2006/10/25(水) 20:45:15
builder 6 pro には fastnet は付属してないんですか?
exampleの httpdemoがコンパイルできないんです。
0756デフォルトの名無しさん2006/10/25(水) 21:25:13
>753
printfの書式?それとも文字列に出力?
http://ja.wikipedia.org/wiki/Printf
文字列バッファへの出力ならsprintf
0757デフォルトの名無しさん2006/10/26(木) 15:19:38
TMemo上でマウスがクリックされたとき、カーソルが何行目にあるかを
取得したいのですが、どうすればいいでしょう?
0758デフォルトの名無しさん2006/10/26(木) 16:12:24
>>757
CaretPos
0759デフォルトの名無しさん2006/10/26(木) 18:07:11
初歩的な質問ですが、よろしくお願いします。
module.cppに、モジュールの関数を定義しました。
void __fastcall TDataModule::say_num(){
    //数字を表示するだけです
    printf("%d\n",n);
}

この関数を使う方のファイルjikko.cpp(ジッコウ)
でグローバル変数int nを定義しました。
グローバル変数なのでそのまま使えると思ったのですが、
コンパイルすると、[C++ エラー] module.cpp: E2451 未定義のシンボル n
と出てしまいます。確かにmodule.cppでは、定義してないんです。
どのようにすると、jikko.cppのnをモジュールmodule.cppのnに渡せるのでしょうか。

jikko.cppのコードですが、int nを定義して下記のように呼び出しているだけです。
DataModule->say_num();

よろしくお願いします。
0760デフォルトの名無しさん2006/10/26(木) 18:16:05
>>759 です。
補足です。
say_num()関数にintの引数を取れるように
する以外で考えております。
よろしくお願いします。
0761デフォルトの名無しさん2006/10/26(木) 19:00:15
>>759です

jikko.cppで、
extern int n=1;と定義

module.cppで、modu_ex.cppのnを参照するため
#include "modu_ex.cpp"

とすると、n=1が参照できるようになりました。
この処理で大丈夫でしょうか。
0762デフォルトの名無しさん2006/10/26(木) 19:31:16
根本からダメっぽいので、残念ながら、大丈夫とはいえないな。

基礎を書籍等で習得するべき。
掲示板の数行のやりとりで教えられる領域じゃないように見える。
0763デフォルトの名無しさん2006/10/26(木) 20:27:02
超初心者的な話じゃないかもしれませんが宜しくお願いします。
聞きたいのはメッセージフックに関してです。

通常のアプリケーションではWndProcのオーバーライトで
独自のメッセージのやり取りおよび、イベントの受け取り等は出来きたのですが、
それをコンポーネント化しようとすると、呼び出し元のWndProcを操作せねばならず
他で見かけたDelphiソースみたいに、親のWinProcアドレスを挿げ替える方法も
出来ないものかと色々ためしましたが上手く行きませんでした。

で、ローカルフック関係で色々調べて試して見たのですが、
MFC関連は結構引っかかって色々試しては見たのですが、
これもコンポーネントとして持たせようとすると上手く行かないのです。
理想は、プロパティに独自のメッセージを入れると、そのメッセージが親アプリに
送られてきた時にイベントを発生させてくれるものを作りたいのです。

お勧めのサンプルソースやHP等ありましたら宜しくお願いします。
07647632006/10/26(木) 20:32:01
すいません、ちとへんな文章になってますね。
もう3日ほど試行錯誤でてんぱってるみたいです(^^;

短く書くと、ローカルフックコンポーネントを作りたいので
何処か参考になるソースやHPがありましたら宜しくお願いします。

……二行で済む話を長々書いてしまったorz
0765デフォルトの名無しさん2006/10/26(木) 20:48:32
>>762
お返事ありがとうございます。
>module.cppで、modu_ex.cppのnを参照するため
>#include "modu_ex.cpp"
すみません。ファイル名間違えてました。
>module.cppで、jikko.cppのnを参照するため
>#include "jikko.cpp"
でした。

ネットで「externで宣言したら、使いたいユニットで
その宣言したファイルをインクルードする。」
と書いてあったのでそのままインクルードしました。

手元の本見たら、ヘッダーファイルにextern宣言してました。
jikko.hを作ってそこで宣言したほうが良いってことでしょうか?
0766デフォルトの名無しさん2006/10/27(金) 01:07:57
>>765

//jikko.h
extern int n;

//jikko.cpp
int n;

//module.cpp
#include "jikko.h"

これでヲケ
ただし、ひじょ〜〜〜〜〜〜〜に不味い設計
BCBのフォーム周りは似た事してるけどさ

正解は
>say_num()関数にintの引数を取れるようにする
またはポインタないし参照をとるようにする
0767デフォルトの名無しさん2006/10/27(金) 04:11:35
>>766

詳しく解説ありがとうございます。
あんまり良く無い設計でしたか。
特別なときだけ使うようにしたいと思います。
0768デフォルトの名無しさん2006/10/27(金) 17:15:33
Form上にTEditを2つ貼り付けます。仮にEdit1, Edit2とします。
エクスプローラからファイルをドラッグアンドドロップして
ファイル名を取得してTEditに表示させたいのですが、
ドロップしたマウスカーソル位置がEdit1上ならファイル名はEdit1に、
同様にマウスカーソル位置がEdit2上ならファイル名はEdit2に表示させたいのです。
表示させるTEditのターゲットを切り替えたいのです。

DragAcceptFiles(Edit1->Handle, true);
DragAcceptFiles(Edit2->Handle, true);
とすべきなのでしょうか。またその場合のMESSAGE_MAPはどのように記述すべきでしょうか。

とりあえず
DragAcceptFiles(Handle, true);
とした上で、DragQueryPointで取得した座標値でターゲットの判断をしていますが、
こんなことしなくても出来るんじゃないかと思いまして。
0769デフォルトの名無しさん2006/10/27(金) 19:52:32
>>768
TEditから派生させてWindProcメソッドをオーバーライド
0770デフォルトの名無しさん2006/10/27(金) 22:34:57
すみません、2つだけ質問させて下さい。

1つ目は、乱数の値を取得する際なんですが、どのサイトを見ても乱数の種でTime関数を
使うのを推奨してるのですが、分母が大きい場合(65536)に実行すると
時間の経過と共に徐々に取得してくる数値が大きくなってしまいます。
クリック時に乱数取得するように組んでみると…

クリック→100代 クリック→200代 クリック→300代 

という風に徐々に徐々に増えていってしまいます。
逆にSRAND関数を使わない場合はちゃんとバラけた乱数を拾ってきます。
プログラムを起動しなおしても、同じ数値は拾ってきません。
これはC++BuilderのRand関数はC++などとは違い、種をリセットしない方が
良いという事なのでしょうか?

もう一つは、先ほどの分母に関してなのですが
Rand関数で返ってくる値は32768が最大なのでしょうか?
65536個の乱数を取得したいと考えているのですが、それは無理なのでしょうか?

ぜひ教えて頂ければと思います。
よろしくお願いします。
0771デフォルトの名無しさん2006/10/27(金) 22:46:17
>>770
通常、乱数ジェネレータの初期化(srand)は1回だけやればいい。
あと、0x7FFF以上の値が欲しければ_lrandを使えば0x7FFFFFFFまで取れる。
0772デフォルトの名無しさん2006/10/27(金) 23:01:33
>>771
ありがとうございました!!
_lrandで無事解決しました。

2番目の質問の方は、どうやらsrand関数にばかり目が行ってて
randomize関数を毎回呼び出していたために変な取得の仕方を
してたような感じでした。
多分これで大丈夫だと思います。助かりました!
ありがとうざいます。
0773デフォルトの名無しさん2006/10/27(金) 23:24:56
何度もすみません。もう一つ質問をお願いします。

int a,b;
float c;
で宣言しておき

c = a / b;

とする場合に小数点1桁までをLabelで表示したい場合が分かりません。
ceil関数なども調べてみたのですが、小数点1桁までの切り上げが出来ませんでした。
質問ばかりで申し訳ありませんが、よろしくお願いします。
0774デフォルトの名無しさん2006/10/28(土) 00:08:06
>>773
書式付の編集で四捨五入をしてくれる

char str[100];
sprintf(str, "%5.1f", (double)a/b);
0775デフォルトの名無しさん2006/10/28(土) 01:18:42
BDS2006ですが、コードのアウトラインがうまく表示されていません。
    //---
 曰 void ...
 │ {
 │  ...;
 └ }
    //---

こんな感じが普通だと思うんですが、

 曰 //---        //---          //---
 │ void ...        void ...     曰 void...
 │ {          曰 {          │ {
 └  ...;    .    │  ...;    .    └  ...;
    }          │ }            }
    //---    .   └ //---    .     //---

このような風になってしまいます。
文法的には間違ってないですし、もちろんコンパイルもできます。
書き方が悪いのでしょうか。
0776デフォルトの名無しさん2006/10/28(土) 13:16:00
773の者ですが、回答ありがとうございます。

例えばdouble型の数値a,b,cがあって a/bの結果をcに代入してLabelで小数点1桁まで表示したい場合

double a,b,c;
c = a / b;

Label1->Caption = c;
とすると小数点以下が延々と表示されます。これを小数点1桁までの表示としたいのですが
>>774でお答え頂いたような編集式で記述するのでしょうか?
それともLabelのプロパティなどで設定出来るのでしょうか?
0777デフォルトの名無しさん2006/10/28(土) 13:35:01
sprintf実行後に
Label1->Caption = str;
すればいいんでねーの?
0778デフォルトの名無しさん2006/10/28(土) 14:53:19
VCL使うなら
Label1->Caption = FormatFloat("0.0", c);

しっかし、Label1->Caption = c;が、なんでエラーにならんのだ。
AnsiStringは、数値を代入してもOKだったなんて。
今まで、Float(Int)ToStr(***)と無駄な事をしていた・・・
0779デフォルトの名無しさん2006/10/28(土) 17:05:54
>>778

っ[ AnsiStringのコンストラクタ ]
0780デフォルトの名無しさん2006/10/29(日) 07:49:07
POP3サーバからUIDLを取得する方法を教えてください。
0781デフォルトの名無しさん2006/10/30(月) 13:44:57
外部のコンソールアプリを起動して、その標準出力をとりこみたいのですが、
どういう方法があるでしょうか?
0782デフォルトの名無しさん2006/10/30(月) 14:01:16
>>780
RFC嫁
07837682006/11/02(木) 13:54:36
>>769
すみません。サンプルのソースとか頂けないでしょうか…
0784デフォルトの名無しさん2006/11/02(木) 14:33:46
>>783

typedef void __fastcall (__closure *TDropFileEvent)(System::TObject *Sender, std::vector<AnsiString> Files);
class TMyEdit : public TEdit
{
public:
 __fastcall TMyEdit(HWND ParentWindow) : TEdit(ParentWindow) { DragAcceptFiles(Handle, TRUE); }
__published:
 __property OnDropFile = { read=FDropFileEvent, write=FDropFileEvent };
private:
 TDropFileEvent FDropFileEvent;
protected:
 virtual void __fastcall WndProc(Messages::TMessage &Message) {
  if (Message.Msg == WM_DROPFILES)
  {
   std::vector<AnsiString> files;
   // filesにファイル名格納
   FDropFileEvent(this, files);
  }
  TEdit::WndProc(Message);
 }
};
0785デフォルトの名無しさん2006/11/02(木) 15:06:08
>>784
これをどうやって使えばいいでyそうか?
0786デフォルトの名無しさん2006/11/02(木) 21:26:10
    _, ._
  ( ゚ Д゚)
  ( つ旦O
  と_)_)

    _, ._
  ( ゚ Д゚)   ガシャ
  ( つ O. __
  と_)_) (__()、;.o:。
          ゚*・:.。
0787デフォルトの名無しさん2006/11/03(金) 00:51:04
>>783

まんま>>769
これの意味が分からんと言われたら
C++の入門書を読みましょうとしか答えようがないな
0788デフォルトの名無しさん2006/11/03(金) 00:52:17
↑レス番違った
↓こっちが正解
>>784

まんま>>769
これの意味が分からんと言われたら
C++の入門書を読みましょうとしか答えようがないな
0789デフォルトの名無しさん2006/11/03(金) 07:58:19
>>768
というかただ単にTApplicationEvents::OnMessageでメッセージ拾って
Edit1、Edit2とHanlde比較すればすむんじゃね?
0790デフォルトの名無しさん2006/11/06(月) 18:12:33
BCB5で作成したプロジェクトをBCB6で開く時に、「'-'は整数ではありません」で開けません。
'-'を検索し、'-'を全て無くしても同じ結果でした。
BCB5で新規プロジェクトを作成し何も変更せずに保存したものは、BCB6でも開けます。
何かわかりますか?

0791デフォルトの名無しさん2006/11/06(月) 19:04:23
数値があるべきところに - があるんじゃね?
makeファイルの-オプションのところとか。
0792デフォルトの名無しさん2006/11/06(月) 19:31:06
790です
>>791
「makeファイルの-オプションのところ」とはどこで確認するのでしょう??
なにぶん初心者なもので・・・。

メイクファイルの作成で出来た「***.mak」はテキストで開いてみたのですが、
BCB6でも開ける新規プロジェクトの「***.mak」と比較しても特にめぼしいとこはありませんでした。
また、ツール→環境オプション、プロジェクト→オプションも見たのですが特にめぼしいとこは
ありませんでした。

0793デフォルトの名無しさん2006/11/06(月) 21:48:02
790です

解決しました。
BCB5で、プロジェクト→オプション→Pascal→構造体を境界配置 にチェックをつけたら
BCB6で開けました。理由は不明。
0794デフォルトの名無しさん2006/11/07(火) 02:36:26
class Color{
int color;
};

//1番
Color* c = new Color;
//2番
Color* c2 = new Color();

1番と2番の書き方って何か意味の違いはあるのでしょうか
0795デフォルトの名無しさん2006/11/07(火) 11:44:16
790で質問した者です。
BCB5→BCB6 移行の続きなのですが、今度はリンクの所で下記エラーになります。
 
 [リンカ致命的エラー]Fatal:ファイル VCLE50.LIBが開けません。

検索するとBCB5のフォルダ((BCB)\Lib\Debug/Release)には有り、BCB6のフォルダには無し。
コピーしたら、リンクは出来たのですがVCLE50.LIBはBCB5のファイルですよね?
VCLE.LIBがBCB6のフォルダにはあるのですが・・・。
プロジェクトファイルの下記部分を確認するような事が書いてあったので、確認してみましたが
VCLE50.LIB は書いてませんでした。
<SPARELIBS value="rtl.lib vcl.lib"/>
<PACKAGES value="vcl.bpi rtl.bpi"/>

なぜ、VCLE50.LIB を見ようとしてしまうのでしょう??


0796デフォルトの名無しさん2006/11/07(火) 15:57:21
使用OS サーバー Windows 2003 Server
  クライアント WindowsXP
DB   SQL Server2005
開発環境 Borland C++Builder6.0 Pro

上記環境でアプリを作成するのですが、SQL Serverへのアクセスは何が一番最適でしょうか?

SQL Server2005の文献を読む限り、「.NET Framework Data Provider for SQL Server」の利用が
推奨と書いてあり調査したがどうもBorland C++ は.NETに対応していない?ようで、SQL Native Clientを使用する?ようなのですが、
どのコンポーネントを使えば良いか分かりません。(TADO***,TSQL***,TDatabase・・・)

アドバイスお願いします。
(接続→更新→終了までの簡単なサンプルコードを教えて頂けると助かります。
参考サイトでも構いません。)
0797デフォルトの名無しさん2006/11/07(火) 22:38:41
TRichEditで左にマージンを入れる方法がわかりません。教えてください。
RichEdit1->Paragraph->LeftIndent=xx; として
RichEdit1->Lines->Add("xxxxx");
としても変化がありませぬでした。
■ このスレッドは過去ログ倉庫に格納されています