くだすれC++Builder(超初心者用)その3
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/02/12(月) 03:39:51もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
C++Builder使いが優しくコメントを返しますが、
お礼はC++Builderの布教と初心者の救済をお願いします。
Borland Home Page http://www.borland.co.jp/
<過去スレ>
くだすれC++Builder(超初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1117225464/l50
くだすれC++Builder(超初心者用)その2
http://pc10.2ch.net/test/read.cgi/tech/1144308804/l50
<兄弟スレ>
くだすれDelphi(超初心者用)その39
http://pc10.2ch.net/test/read.cgi/tech/1169386914/l50
0159デフォルトの名無しさん
2007/09/06(木) 11:36:580160デフォルトの名無しさん
2007/09/06(木) 11:39:060161デフォルトの名無しさん
2007/09/06(木) 14:23:07ありがとうございます。がんばってみます。
0162デフォルトの名無しさん
2007/09/06(木) 17:16:05たとえば、Form1::initialize()でTMemoWithDnDをnewし、Parent,Text等を設定すると、フォームにTMemoWithDnDは表示されます。
しかし、ほかのForm1内の他の関数(例えばForm1::reset())で、先ほどのTMemoWithDnDのプロパティやメソッドにアクセスしても、実行時に、うまくいかないかエラーが出てしまいます。
原因が分からず、やったことを列挙したので、わかりにくくて済みません。原因は何処にあるのでしょうか・・・
0163デフォルトの名無しさん
2007/09/06(木) 17:24:47>関数の外側でTMemoWithDnD *Memo1;と宣言しました
つまり、TForm1メンバーと、グローバルメンバーの2つの Memo1があるからでは?
0164デフォルトの名無しさん
2007/09/06(木) 17:54:52ありがとうございます。TForm1メンバーを残し、グローバルメンバーの宣言を削除してみましたが、やはりうまくいきません。逆でも同じでした。
newした関数内だと問題ないんだけどなあ・・・この辺が手がかりにならないでしょうか?
0165デフォルトの名無しさん
2007/09/06(木) 19:51:50なんか知らんが
DragMode=dmAutomaticにして
OnDragOver/OnDragDropに処理書けば
エエだけとちゃーうんか
なんか勘違いしてたらメンゴ
0166デフォルトの名無しさん
2007/09/06(木) 19:52:53ふつうこんな感じで使うよね?
(Form1.h)
class TForm1: public TForm
{
:
:
private:
TMemoWithDnD* Memo1;
:
:
:
};
(Form1.cpp)
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Memo1 = new TMemoWithDnD(TForm1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::reset()
{
Memo1->Liness->Clear();
}
0167デフォルトの名無しさん
2007/09/06(木) 21:17:43>>165
DragModeはコントロール自体のドラッグを制御する感じのようなので、違う気がします・・・
>>166
そんな感じで書いてるのですが・・・もう少し試行錯誤してみます。initializeとかはわたしが勝手に作ったものです。紛らわしくて済みません。
0168162
2007/09/06(木) 21:35:38Memo1 = new TMemoWithDnD(this);
とするものを
TMemoWithDnD* Memo1 = new TMemoWithDnD(this);
としていたのが原因でした。この2つの何が違うかいまいちつかめないのですが、問題は解決しました。本当にお世話になりました。
0169デフォルトの名無しさん
2007/09/06(木) 22:36:181. 直近のブロック({ })内で宣言されたローカル変数
2. 自クラスのメンバ変数
3. 継承元のメンバ変数
の順で探しに行くので
TMemoWithDnD* Memo1 = new TMemoWithDnD(this);
なんてやったら Memo1 を自クラスのメンバでなくその関数のローカル変数と見なすのですぅ
0171デフォルトの名無しさん
2007/09/08(土) 03:54:08コンソールアプリケーション → C を選んでるんですが、どこが悪いのでしょうか。
0172デフォルトの名無しさん
2007/09/08(土) 19:43:01この場合はメインスレッドでTEventを作成し、そのハンドルをWaitFor***Object(s)に登録し、その後終了させたいタイミングでSetEvent()し、終了処理をさせれば良いのでしょうか。
0173デフォルトの名無しさん
2007/09/10(月) 19:57:42組もうと思っているのですがTTcpServer(TTcpClient)
とTServerSocket(TClientSocket)は何が違うんでしょ
うか。
TTcpServerの方はツールパレットにあるものの対応する
ヘルプがなく両者を比較検討しようにもできない状態で
あります。
ちなみにDelphiでTServerSocket(TClientSocket)を使
った簡単なサンプルを作ったことがありこちらはヘルプもある
ので問題ないのですが、TTcpXXXの方の情報が無くて困
ってます。
0174デフォルトの名無しさん
2007/09/13(木) 07:31:25自称「マネージメントもできる」派遣クンが
「Visual Studio 2005が僕のプログラムどおりに動かない原因を調べるのは僕の仕事ではありません。」
と言っています。
彼のVisual Studio 2005プログラムが動かないのを調べるのは誰の仕事なのでしょうか?
0175デフォルトの名無しさん
2007/09/13(木) 08:42:510176デフォルトの名無しさん
2007/09/13(木) 09:52:180177デフォルトの名無しさん
2007/09/14(金) 08:40:35TMemoをフォームに置きます。
Widthを317位にします
?.........-..!%a5fe985cd9e46000426181712f338e67............ゥ-.D...
コンパイル・実行して↑を貼り付けます。
右余白があるにも関わらず%の後ろで折り返しされます。
これをコントロールの幅きっちりで折り返しさせるにはどうしたらいいでしょうか。
0178デフォルトの名無しさん
2007/09/14(金) 08:54:280179デフォルトの名無しさん
2007/09/18(火) 03:04:12TPanelにドッキングしたTPanelの閉じるボタンを押したときに処理を行いたいのですが、
イベントが発生しません。
何か方法はないでしょうか?
0180デフォルトの名無しさん
2007/09/22(土) 18:04:04(プロジェクト名).bdsproj
のファイルの中にはGUIDやらフォルダのパスやらが含まれててこれに関してはあまり公開したくありません。
しかし、これがないとビルドが面倒になるのでなんとかしたいのです。
いい方法はありませんか??
0181デフォルトの名無しさん
2007/09/22(土) 23:02:04パスは相対パスに書き換える
GUIDはエントリをそっくり削除する
で逝ける筈
0182デフォルトの名無しさん
2007/09/23(日) 12:53:28おお…GUIDってなくてもビルドできますね
ありがとうございます
0183デフォルトの名無しさん
2007/09/29(土) 03:40:390184デフォルトの名無しさん
2007/09/30(日) 08:24:05VCLは非常に使いやすくてよいのですが、コードエディタの操作感覚がVC++と
だいぶ異なっているので戸惑っています。
・行末にキャレットを移動した時に自動的に次の行の先頭へ折り返してくれない。
・オートインデントでタブ文字ではなくスペースが挿入される。
これらを変更することはできないのでしょうか?
本当に初歩的な質問で申し訳ありませんがどなたか教えて下さい。
0185デフォルトの名無しさん
2007/09/30(日) 08:45:20郷に入れては郷に従え。
慣れてショートカットキーが使えるようになってくると
逆に手になじんできます。
0186デフォルトの名無しさん
2007/09/30(日) 16:29:580187デフォルトの名無しさん
2007/10/01(月) 09:57:560189デフォルトの名無しさん
2007/10/02(火) 19:21:50不便なエディタを無理して使うより
慣れたエディタ併用して書いたほうが気が楽だ。
でも、だからといってBCBが嫌いなわけじゃないんだからね?
0190デフォルトの名無しさん
2007/10/03(水) 04:40:43>行末にキャレットを移動した時に自動的に次の行の先頭へ折り返してくれない。
これ、行の長いソースの編集の時に便利。
最近はディスプレイも広いからCとかだとあんまり実感する事も無いと思うけど、
長いクラス名や変数名を扱う時とかに慣れると便利だよ。
>オートインデントでタブ文字ではなくスペースが挿入される。
オプションで切り換えられた様な、、、、、
0191デフォルトの名無しさん
2007/10/03(水) 09:06:070192デフォルトの名無しさん
2007/10/03(水) 09:47:250193デフォルトの名無しさん
2007/10/04(木) 19:34:060194デフォルトの名無しさん
2007/10/04(木) 19:38:070195デフォルトの名無しさん
2007/10/05(金) 08:39:530196デフォルトの名無しさん
2007/10/05(金) 10:15:31それを利用すれば簡単じゃん
0197デフォルトの名無しさん
2007/10/05(金) 10:56:34見つけました。 → ttp://software.kozoh.net/
>それを利用すれば簡単じゃん
使い方はどこかに書かれてますか?
0198デフォルトの名無しさん
2007/10/05(金) 11:39:39ttp://www.digitalpad.co.jp/~takechin/download.html
から
ttp://homepage3.nifty.com/~takechin/archives/spi32008.lzh
をダウンロードして解凍して
spi_api.txtを嫁。
これで分からなかったらDLLを基礎から勉強しろ。
0199デフォルトの名無しさん
2007/10/05(金) 11:43:01ここの「builder-ML過去ログ」を検索すれば
山ほど出てきますよ。
0200デフォルトの名無しさん
2007/10/05(金) 11:43:44DLLくらい作ったことありまつ><
でも、このプラグイン使うの結構難しいですね。
普段、ビットマップとか理解してなくて、TBitmapで済ませてるんで。
0201デフォルトの名無しさん
2007/10/05(金) 11:50:45デジカメに組み込むという話はどこに行ってしまったのやら。
低圧縮JPEGで十分だと判断されてしまったんだね。
0202デフォルトの名無しさん
2007/10/05(金) 11:55:27何か実行ファイルを起動して、Jpeg2000からビットマップファイルにコンバート出来ないでしょうか?
0203デフォルトの名無しさん
2007/10/05(金) 17:40:20一番簡単なのはSusieにそのJPEG2000画像を食わせて画面を
キャプチャすれば?
0204デフォルトの名無しさん
2007/10/05(金) 17:58:420205デフォルトの名無しさん
2007/10/05(金) 23:50:38IrfanViewでバッチ処理?
0206デフォルトの名無しさん
2007/10/14(日) 20:28:50ヘッダファイルに新しいクラスやメソッドを追加した時に
他のファイルから上手く認識されずにエラーが出てしまい、困っています。
Header1.h
class classA{ ... };
Main1.cpp
#include "Header1.h"
...
classA a; //これはOk
Header1.hに新しいクラスを追加
class classA{ ... };
class classB{ ... };
Main1.cpp
#include "Header1.h"
...
classA a; //これはOk
classB b; //"E2303 型名が必要"が出る。
クラスに新しいメンバを追加した時も"xx は yyのメンバではない"
と言うようなエラーが出てしまいます。
どなたかよい対処法がありましたら教えて下さい。
0207デフォルトの名無しさん
2007/10/15(月) 02:23:570208206
2007/10/15(月) 09:01:23お騒がせして申し訳ありませんでした。
0209デフォルトの名無しさん
2007/10/15(月) 15:08:20プロジェクト(変数?)によっては「???」と表示されてしまうのはなぜでしょうか
勿論その変数は有効で、ShowMessageなどではちゃんと表示されるのですが
0210デフォルトの名無しさん
2007/10/15(月) 16:29:500211デフォルトの名無しさん
2007/10/15(月) 16:31:210212デフォルトの名無しさん
2007/10/15(月) 17:26:040213デフォルトの名無しさん
2007/10/15(月) 18:54:440214デフォルトの名無しさん
2007/10/15(月) 19:55:55???すらでないんで質問者のとは違うかも。
0215デフォルトの名無しさん
2007/10/15(月) 23:19:56あてずっぽうで つ「副作用を許可する」
0216209
2007/10/17(水) 11:09:47てもこんなオプションいじったことないのに、妖精さんのいたずらか
0217デフォルトの名無しさん
2007/10/23(火) 14:03:31これを表示しないようにできませんかね
0218デフォルトの名無しさん
2007/11/01(木) 06:54:34http://jp.youtube.com/watch?v=aMnI_grQk-4
0219デフォルトの名無しさん
2007/11/01(木) 13:34:19教えてください。
0220デフォルトの名無しさん
2007/11/02(金) 07:23:58それBorlandのメールニュースで読んだきがする
0221デフォルトの名無しさん
2007/11/02(金) 09:18:18転載していいかどうか判らんから紹介だけ
ボーランドのニュースグループ borland.public.cppbuilder.japanese の10月26日の投稿
『C++Builder2007になってからSTLの実行速度が遅くなっているのでしょうか?』
のレスに細かい手順があるよ
Builder単体では出来ないので結構面倒
0222デフォルトの名無しさん
2007/11/05(月) 09:30:28219です。できました!
ありがとうございましたm(_ _)m
0223デフォルトの名無しさん
2007/11/05(月) 15:52:28なるのでバッティングして同居できないんだよ。
0224デフォルトの名無しさん
2007/11/05(月) 15:55:370225デフォルトの名無しさん
2007/11/05(月) 16:13:34ライブラリ名までは変わらない
0226デフォルトの名無しさん
2007/11/05(月) 23:10:33誰か分かる方いますか?どんなコード書いたらいいんでしょう。
イメージ的にはローカルに画像保存しておいてボタンを押したら
そこの保存してある場所から持ってくるって感じなんだろうけど
上手くいきません。お願いします。
0227デフォルトの名無しさん
2007/11/06(火) 00:16:000228デフォルトの名無しさん
2007/11/06(火) 08:07:53std::vector<AnsiString>::iterator files_it = files.begin();
//イベントハンドラ
Image1->Picture->Bitmap->LoadFromFile(*files_it);
files_it++;
if (files_it == files.end())
files_it = files.begin();
0229sage
2007/11/06(火) 16:00:03今回初めてスレッドプログラムを組んでいますが、
スレッドに対してパラメータを渡すにはどの様にすれば良いのでしょうか?
DWORDとメモリのポインタを渡したいと思っています。
0230デフォルトの名無しさん
2007/11/06(火) 16:21:020231デフォルトの名無しさん
2007/11/06(火) 16:21:14フォームがTFormから派生してるように作成したスレッドもTThreadから派生してるだけだし。
0232デフォルトの名無しさん
2007/11/06(火) 16:25:060233デフォルトの名無しさん
2007/11/07(水) 09:00:30TXMLDocument
の使い方教えてけろ。
EAccessViolation
とかになっちゃうもんで。
0234デフォルトの名無しさん
2007/11/07(水) 09:49:010235デフォルトの名無しさん
2007/11/07(水) 11:47:13TurboC++でもDLして使っとき
0236デフォルトの名無しさん
2007/11/07(水) 11:48:30VCLのソースの添付。
0237デフォルトの名無しさん
2007/11/07(水) 11:55:54商利用の可否
DBコンポーネントの有無
紙のマニュアルの有無
tasmの有無(なくてもPascalソース上でインラインアセンブラ使用可能)
0238デフォルトの名無しさん
2007/11/07(水) 11:58:360239デフォルトの名無しさん
2007/11/12(月) 17:34:44フォームを動的に表示する場合、
モーダルで表示したら次の行でデリートするのは
わかっているのですが、
普通にショウする場合、
動的フォームを閉じた場合のデリートは
どのタイミング(どのイベント)で
行えばよいのでしょうか?
動的フォームのcpp hにデリートを書く?
動的フォームが閉じた時の報告が親フォーム
にくればいいんですが・・・
いろいろ調べたのですが、どうも。
教えてください。
0240デフォルトの名無しさん
2007/11/12(月) 18:32:07あとTCustomForm派生クラスはdeleteとかでデストラクタ直接呼び出したらだめ。
0241デフォルトの名無しさん
2007/11/12(月) 20:18:04試してみます。
0242デフォルトの名無しさん
2007/11/12(月) 20:27:260243デフォルトの名無しさん
2007/11/12(月) 20:55:30初期化されていないようで、プログラムを実行するたびにrandom()関数が同じ値を
返してきます。RandSeed変数に出鱈目な値を入れてもrandomize()を呼び出しても
結果は変わりません。どんな原因が考えられるでしょうか。尚、Randomize()関数は
フォームのコンストラクタの中で呼び出しています。
0244デフォルトの名無しさん
2007/11/12(月) 21:16:37randomizeとRandomize両方表記してるけど、どっち?
BCBにはどっちも存在して、random()に対応するのはrandomizeだけど、それは合ってる?
0245デフォルトの名無しさん
2007/11/12(月) 21:20:33種をstaticで保持しておかないとだめなんじゃないの?PCの乱数なんて周期があってそこから切り出すだけなんだから。
0246デフォルトの名無しさん
2007/11/12(月) 21:22:06Randomize()を呼んでも"r"andomize()を呼んでも結果は同じでした。実際の乱数
発生はrandom()関数を呼び出しています。尚、randomize()に対応するのはrandom()
とのことですが、Randomize()に対応するのはrandom()とは別にあるのでしょうか。
0247デフォルトの名無しさん
2007/11/12(月) 21:29:34System::Randomizeは下の関数に対応
System::RandG
System::RandomFrom
System::RandomRange
randomize, srandはrandom、randに対応
上がVCLの乱数ルーチンで下はC標準関数。
で、乱数の初期化はsrand((unsigned)QueryPerformanceCounter());ならまず重複しないかと。
(パフォーマンスカウンタの戻り値が64bitだから桁あふれの警告出るかもしらん)
0248デフォルトの名無しさん
2007/11/12(月) 21:35:29LARGE_INTEGER seed;
QueryPerformanceCounter(&seed);
srand(seed.LowPart);
大抵は
srand(GetTickCount());
で十分だが。
0249デフォルトの名無しさん
2007/11/12(月) 21:41:31早速RandomFrom()を使ってみたところ、コンパイルエラー(未定義の関数)が出てしまいました。
Randomize()に関してはエラーは出ません。プロジェクトに何かライブラリを追加しなくては
ならないのでしょうか。
0250249
2007/11/12(月) 21:47:06RandomFrom()ではなくRandomRange()でした。
0251デフォルトの名無しさん
2007/11/12(月) 21:51:54ヘルプ見れ。
Pascalソースでuses MathってやるようにC++ソースだと#include <Math.hpp>が必要。
ヘルプの読み方は覚えておいたほうがいい。
0252249
2007/11/12(月) 21:53:23RandomRange()はvcl\math.hppで宣言されていますね。プログラムの先頭でこのファイルを
インクルードしたらビルドできるようになりました。又、乱数発生機構もきちんと初期化
されているようです。プログラムを走らせるたびにRandomRange()から違う値が返ってきます。
どうもありがとうございました。
0254デフォルトの名無しさん
2007/11/13(火) 03:52:42classをいくつか作ってやろうとしたのですがどうしてもうまくいきません。
結局自分は下のようにmainでdisplayするよう作って動いたのですが、
classによって合計計算とdisplayを実行するにはどう作ればいいでしょうか。
class basic
{
int no;
public:
int accept()
{
cin>>no;
return no;
}
};
void main()
{
int a[5],sum=0;
basic ba[5];
for(int i=0;i<5;i++)
{
a[i]=ba[i].accept();
sum=sum+a[i];
}
cout<<sum;
}
0255デフォルトの名無しさん
2007/11/13(火) 09:10:37趣味でフリーソフトつくっていますが、
オプションフォームをnewで呼び出すか
起動と同時にロードしておくか
どちらがいいのか迷っています。
ソフト自体の大きさは単体のみの動作で
1MB程度です。
一般配布を意識した場合、
オプションフォーオムはバックグラウンドに
待機させておくものでしょうか?
それとも呼び出し毎にロードするものでしょうか?
なお、常駐ソフトです。
オプションはダイアログ形式で
部品の数は20個ほどです。
0256デフォルトの名無しさん
2007/11/13(火) 09:37:11今のPC/dozなら、リソース的には無問題だが、
>起動と同時にロードしておくか
コード的に素直じゃない。
さらに、オプション内容をフォームに保持させたりすると、プログラムが崩れてきたり。
フォームを開く時点でnewしてグローバルはなるべく無い方が良い。
どうしても消せないグローバルはあると思うが、グローバルフォームっていうのは...
0257デフォルトの名無しさん
2007/11/13(火) 10:31:17一般作法ってのは聞かないと
わからないものですから。
助かりました。
0258デフォルトの名無しさん
2007/11/13(火) 10:42:24■ このスレッドは過去ログ倉庫に格納されています