トップページ⇒tech
988コメント332KB

C Builder相談室 Part3

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

>>100
1次元だったらstd::sortだけでできるじゃん。AnsiStringって<で比較できたよね?自信ないけど。
0103デフォルトの名無しさんNGNG
>>102
なるほど。std::vector<StrVec>という所で既に二次元になっているわけか。
ファンクタ作る所なんか、C言語のqsortを彷彿とさせますね。
0104デフォルトの名無しさんNGNG
>>102
<で比較すると、単純なバイトレベルでの比較となるそうだからOKじゃない?
ロケールまで入れるとAnsiCompareを使用。ほとんど意味無し。
0105デフォルトの名無しさんNGNG
http://www.sfdata.ne.jp/windev/cbuilder/
0106デフォルトの名無しさんNGNG
複数の画像をgifアニメのように
交互に表示するには、どうすれば良いでしょうか?
0107デフォルトの名無しさんNGNG
>>106
CppWebBrowserにNavigateメソッドでアニメーションGIFを読み込ませるw

色々方法があるから何とも言えん。
0108デフォルトの名無しさんNGNG
ここと>>105のMLへのマルチポストが多いね。
0109106NGNG
>>107
回答ありがとうございます。
そんなことが出来るなんて知りませんでした。
やっぱりbuilderって便利ですね。
0110107NGNG
>>109
(´д`).。oO(いや、アニメーションさせるためだけにIEコンポーネント使うのはメモリ消費量とかから見てどうかと・・・)
0111デフォルトの名無しさんNGNG
BCB6を先日買ってきたんですが、
アクションマネージャーの使い方がよくわかりません。

アクションマネージャーで作成したアクションの
プロパティを変更したい場合、どうやって指定したらいいのだろう・・・。

その方法か、参考になるページがあれば教えてください。
よろしくお願いします。
0112デフォルトの名無しさんNGNG
BCB5で
出力される exe のファイル名を設定するには
どうすればいいですか?
.bpr をメモ帳で開いて
<PROJECT value="ここ.exe"/>
を書き換える以外の方法で、おながいします。
0113デフォルトの名無しさんNGNG
>112
プロジェクト名を変える。
0114106NGNG
>>110に先日教えていただいた方法で試してみたのですが、
すでに指摘された欠点もありますし、
ファイル内にうまく組み込めなかったので、
何か他の方法を教えて頂けないでしょうか?

どうにかして、1秒おきに2枚の画像を
切り替えて表示する動作を実現したいのですが、
そのような方法をどなたかご教授ください。
0115デフォルトの名無しさんNGNG
>>114
2個のImageを重ねて置いて、1秒おきにVisibleをtrueにしたりfalseにしたりする。
0116106NGNG
>>115
あ、その方法がありましたか。
1つのオブジェクトをいじる事しか考えていませんでした。
どうもありがとうございました。
0117デフォルトの名無しさんNGNG
5から6へ移行してトラブルみたいなのはないですか?
0118デフォルトの名無しさんNGNG
           ρ(´-`ρ)
      ★BCB★
(σ´ー`)σ
0119デフォルトの名無しさんNGNG
BDEのTQueyを使って、パラメータを使用してデータを登録する場合に,
charのフィールドにNULLを登録するのはどうするの?
以下のやり方だと0が入るのですが

TQuery *sql;
(省略)
sql->SQL->Text = "INSERT INTO TBL ( FLD) VALUES ( :DAT)"
sql->Params->ParamByName( "DAT")->AsString = NULL;
sql->ExecSQL();

0120無責任だがNGNG
AsString ではなく Clear(); では? >>119

0121デフォルトの名無しさんNGNG
Clear(); だと項目"DAT"の型がわかりませんってエラーが出ますが・・・
0122デフォルトの名無しさんNGNG
>>121
「VALUES ( :DAT)」って、これでいいのかなぁ?
0123無責任だがNGNG
じゃあ ->DataType=ftString; を付けてみたら?

なにせ問合せでパラメータは使うけど挿入でそんな事した事ないや。
BDE なら sql->Insert();して sql->Fields を使うのがなんと言っても簡単だし
0124119NGNG
>>123
おぉ、行けました。
Clear();だけなら型がわからんから指定しとけってことだったのかぁ
さんきゅです
0125デフォルトの名無しさんNGNG
>>123
言いえて妙。

"INSERT INTO TBL ( FLD) VALUES ( :DAT)" なんて
文字列で SQL文を書いてしまうと、
せっかくのコンパイラのチェック機能がスルーされてしまうし。
…ってことかな?

   ヽ(;´Д`)ノ      アレ ?
     ( ____ )
@== > = >==
0126デフォルトの名無しさんNGNG
builder4のコンソールウィザードでプログラムを実行すると、
MS-DOSプロンプトで結果が表示された後すぐにウィンドウが閉じてしまうのですが、
閉じないようにするにはどうしたらいいのでしょうか?
MS-DOSのプロパティで「プログラム終了時にウィンドウを閉じる」のチェックは
はずしてみましたが駄目でした。
0127デフォルトの名無しさんNGNG
>>126
#include <conio.h>
int main()
{
  ...
  ...
  getch();
  return 0;
}
0128デフォルトの名無しさんNGNG
>>126
#include <cstdlib>
using namespace std;
int main()
{
..
..
system("pause");
}
0129デフォルトの名無しさんNGNG
>>126
int main()
{
  ...
  ...
  while(1)
   ;
}
0130デフォルトの名無しさんNGNG
>>127,128,129
(?∀?)ドレ?
0131デフォルトの名無しさんNGNG
あのの、パソナル版のアカデミ版ってないんですかぁ?
0132デフォルトの名無しさんNGNG
質問は元気よくageて言おう。
どれ、おいちゃんがageといてやろう。
0133デフォルトの名無しさんNGNG
BCB6ってば、更にサイズがでかくなってるね。
何も書かなくても450kbか。
0134デフォルトの名無しさんNGNG
>>130
>>127,128がいいと思う。129はブレークポイントを仕掛けておかないと
止まらなくなって(゚д゚)マズー。
0135デフォルトの名無しさんNGNG
>>134
>>126-130

漏れは、DOS窓を起動してから
ProjectHoge.exe [Enter] していますが、何か?

標準出力に何かを出力するアプリケーションなら、
リダイレクトしてファイルに採っておけばよいし。
0136デフォルトの名無しさんNGNG
>127-129 134 135
出来ました。
ありがとうございます。
0137Ð ë á t h ¹³NGNG
インラインアセンブラで↓のようなコードを書くと、×の行でシンタックスエラーが出ます。

struct TValue
{
  int Value1;
  int Value2;
};

asm
{
  MOV  [ESI+.Value1],EAX         //○
  MOV  [(TValue PTR ESI).Value1],EAX //×
}

STRUC〜ENDSで構造体を定義すると×の行もエラーは出ないのですが、
そうするとC++のほうで、その構造体が使えなくなります。

○の方法だとオペランドサイズのチェックをしてくれないので
どうしても×のようにチェックしてくれる方法を使いたいんですが、
何か方法(×の行のエラーの出ない書き方とか)はないでしょうか。
0138無責任だがNGNG
>>137
そういうふうにしたい場合は、H2ASH (使い方はTSM_UTIL.TXTに )で構造体を変換して
それをインクルートするのが普通じゃないかな

  MOV  [ESI+.Value1],EAX のような使い方だと、それはBCC32でコンパイルされると
  MOV  [ESI+0],EAX になってしまう
0139Ð ë á t h ¹³NGNG
>>138
ありがとうございます。そんなのがあったんですね。
なぜかうちのBCBにはH2ASHが無い・・・CDにも入ってない・・・。
バージョン古いからかな。

> MOV  [ESI+0],EAX になってしまう
そう、これで困ってました。即値になるだけで修飾はされないんですよね。
WEBでTSM_UTIL.TXT見るとH2ASHを使えば解決できそうですが、
無いものは仕方無いので、夜になったら(テレホなので(*´д`) )
フリーのBC++ダウンロードして入ってないか調べてみます。
0140デフォルトの名無しさんNGNG
>>139
BCCはTASM自体が入ってないよ。
0141無責任だがNGNG
>>139
 ああそうか TASMを手に入れないとダメですね。 
0142Ð ë á t h ¹³NGNG
Σ(´Д`ズガーン 万策尽きたか・・・。
H2ASHと同じ事を手作業でやるという最終手段を使うしかないかな。

>>140 テレホタイムを浪費するところでした。ありがとうございます。
>>141 TASM単体に付いてくるということなんですね。

BCBのTASMと一緒に付けて欲しかったスBorlandサン。
0143無責任だがNGNG
ようするに、インラインアセンブラだと
 構造体メンバがバイトなのか16bitなのかとかが反映されないから嫌なんでしょ?

でもそれをインラインアセンブラで書こうというのが無理やりのように思う
あとで間違えないようにという事なら assert で サイズチェックを入れておいたら?
0144デフォルトの名無しさんNGNG
メインメニューやツールバーで使うアイコンを作るのがめんど臭い。
フリーで落とせるペーヅ教えてくださレ」。
0145Ð ë á t h ¹³NGNG
>>143 嫌なのは構造体のメンバのサイズが変わったときのコード修正でして
例えば
FLD  DWord ptr [ESI+.Value] を、
FLD  [(TValue PTR ESI).Value],
とできると、Valueがfloatからdoubleに変更になってもコードは変更しなくて済みますよね。
修飾してる場合は、全て修正しなくてはなりませんし、修正忘れが1つでもあるとバグになります。

こういう変更が時々あって、構造体もアセンブリコードもマグナムサイズなものですから、
楽でバグを出しにくい書き方のほうを使いたかったのです。

結局自前でstructと同じ構造のSTRUC〜ENDSを作ることになりそうですが。(*´д`)
0146デフォルトの名無しさんNGNG
>>90
過去ログ読んでて、気になって仕方がないんですが、
なんでOKなん?

char *型 "ABC"
AnsiString型 ローカル変数 testが動的確保した"ABC"
AnsiString型 戻り値が動的確保した"ABC"(testのコピー)
の3種類作られるけど、関数抜けた時点では最初の2つしか開放されないから?
そんなの実装次第じゃん、厨房な俺に教えてくれ〜

BCCとあまり関係なくてスマソ
0147無責任だがNGNG
>>145
 うーん x86に限ってはBCCもそれほど目立って効率の悪いコードを
 出す訳じゃないのと、特に浮動小数点コードを使うとその演算に隠
 れてしまうので、その手の構造体の絡んだコードをアセンブラで書
 こうとした事はありません

まあ自前で struct 変換ルーチンを作るのが簡単かも
0148無責任だがNGNG
>>146
 実装次第だから、その実装をそれでOKなように作っているという事では?
int testfunc()
{
 int test = 0xabcd;
return test;
}
なら 大丈夫なので、それと同じように使えるように AnsiStringクラスを作ったという事でしょう


それから、文字列クラスはもう一つ作られている筈です。
それは>>90のtestfuncの返値の隠れた文字列クラスです。
このコンストラクタは関数の呼び出し直前に呼ばれて、関数が帰って代入動作をすると消えます。
0149デフォルトの名無しさんNGNG
制作したプログラムの動作がいまいち遅いのですが
実行中、同時に音楽や動画を再生しても途切れなく再生できます。
自作のプログラムが固有するCPUの割合は調整できないのでしょうか?
0150デフォルトの名無しさんNGNG
>>149
動作が遅いといっても、他に何も同時実行させてなければ、CPUをフルに使えるはずだが。
他のプロセスやスレッドと同時実行させてて、そっちよりも優先的にCPUを使いたいってことなら、
SetThreadPriority や SetPriorityClass を使えばよろし。
0151デフォルトの名無しさんNGNG
>>148
解説サンキュー
必ず基本型と同じ感覚で使えるように作ってるってわけですか
(自分で作るとき、そこまで考慮してないけどなぁ)

C++の文法は大体わかったつもりだけど、このへんの暗黙のルールとか
ライブラリとかは、まだまだ理解不足だねぇ
頭の中はC言語とアセンブラのまんま〜

>それから、文字列クラスはもう一つ作られている筈です。
>それは>>90のtestfuncの返値の隠れた文字列クラスです。
>>146の3つ目がそのつもりだったんだけど書き方が悪かったね
0152デフォルトの名無しさんNGNG
ヽ(゚∀゚)ノ
0153デフォルトの名無しさんNGNG
教えていただきたいことがあります。

EDITコンポを2つ配置し"A"を名前"B"を読み仮名とします。

ユーザーが"A"に名前を漢字で入力すると"B"に読みが半角カナで仮表示
(ユーザーが修正可能)されるというものを作りたいのですが、どのよう
にしたら良いかわかりません。

"B"に何か別なコンポーネントを使えばよいのでしょうか?

アドバイスやここを見れと言うのでもかまわないのでご教示
お願いいたします。
0154デフォルトの名無しさんNGNG
>>153

Delの例ですが
ttp://www2.big.or.jp/~osamu/Delphi/Tips/key.cgi?key=25#0201.txt
に、そのままがありまっせ。
0155デフォルトの名無しさんNGNG
C++Builder初心者です。お手数ですが教えてください。
図1)のように、画面を分割したいのですが、縦分割は簡単にできたのですが、B領域とC領域の横分割がうまくできません。
TSplitterにて、AとBCの分割は、Align=alLeft、Left=分割位置、にて簡単にOKだったのですが、
BとCの分割を行おうとして、Align=alTop、Top=分割位置とすると図2のようになってしまいます。
Align=alTopを指定すると、Topの値は無視されるようです。

図1)
AAAAAAAA|BBBBBBBBB
AAAAAAAA|BBBBBBBBB
AAAAAAAA|BBBBBBBBB
AAAAAAAA|------------
AAAAAAAA|CCCCCCCCC
AAAAAAAA|CCCCCCCCC
AAAAAAAA|CCCCCCCCC

図2)
BBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBB
-----------------------
AAAAAAAA|CCCCCCCCC
AAAAAAAA|CCCCCCCCC
AAAAAAAA|CCCCCCCCC
AAAAAAAA|CCCCCCCCC

画面を縦に分割して、その分割した右側を横に分割する方法をアドバイスお願いします。
0156デフォルトの名無しさんNGNG
BCのところにTPanel乗せてから分けるってのは駄目なの?
0157155NGNG
>>156
ありがとうございます。できました。
TPanelにTSplitterを入れることができるのですね。
VCの考え方と全然違うのでとてもとまどってしまいました。
MFCの、CSplitterWndに相当するものを必死で探してしまいました(汗)。
0158デフォルトの名無しさんNGNG
>155
こないだの漏れと同じだ(笑)

・AをAlign=alLeftで作る
・Aの右にスピリッタ入れる
・BC領域にあたる部分にパネルを張る
・Bをalign=alTopでパネル上に作る
・Bの下、パネル上にスピリッタを入れる
・Cをalign=alClientで作る

パネルはBevelOuter=bvNoneにすると吉
0159.NGNG
始めまして質問させてください。

TEditを並べてVK_RETURNで次のEDITへ
SetFocusしてます。

そのとき、ポーンとBEEP音がなりうるさいのですが
なんとかならないでしょうか?

一行テキストですから本来入力できない リターンがくると
警告音がなるには当然ですが・・・
0160デフォルトの名無しさんNGNG
何でC++Builderの自動保管機能はあんなに使いにくいのですか?
いちいち読み込んでいて、埒があきません
0161デフォルトの名無しさんNGNG
私もそう思うので使わないようにしました。
0162デフォルトの名無しさんNGNG
Builder 6 で SOCK_RAW ソケットをオープンして setsockopt で IP_HDRINCL
を有効にして生ソケットを扱ってみたのですが、
sendto で WSAError の 10049 が発生します。
VC6 では問題なく実行できました。
何か原因考えられないですか?
0163デフォルトの名無しさんNGNG
>>159
試してないけどOnKeyDownで
if(Key == VK_RETURN)
 Key = NULL;
0164.NGNG
>>163
試してみましたがダメでした。
0165無責任だがNGNG
>>159
Delphiの場合、そういう場合はAbort例外を投げるんだけど
if Key=#13 then begin
Edit2.SetFocus;
Abort;
end;

Builderでも同じじゃないかな?
0166デフォルトの名無しさんNGNG
>>164
OnKeyPressでは駄目かな。とりあえずどちらかで出来たよ。
0167デフォルトの名無しさんNGNG
OnKeyPress で
Key = NULL;
0168.NGNG
ありがとうございます
OnKeyPressでAbortで出来ました
0169デフォルトの名無しさんNGNG
やっぱ、あの音要らないって人多いね。俺も消してる。
0170デフォルトの名無しさんNGNG
unable to open file SYSUTILS.RES
と言われるのですが、どうしたらいいのでしょうか?

windows.h はインクルードしていますが、VCL関連のヘッダは
インクルードしていません。
0171デフォルトの名無しさんNGNG
>>170 そのファイル自体は存在するんですか?
0172170NGNG
>171
あります。
\CBuilder\Lib\Objフォルダにあります。
プロジェクトオプションのライブラリパスでも通っています。

ファイル名は Sysutils.res と小文字ですが、関係無いですよね・・・。
0173デフォルトの名無しさんNGNG
>>172 エラーの出た行でどんなことしてますか?
0174170NGNG
コンパイラできました。
*.makファイルをいじったのがいけなかったようです。
0175デフォルトの名無しさんNGNG
ありゃ
0176デフォルトの名無しさんNGNG
(´-`)。o ○ (すげーな、オイ。コンパイラ作ったのかよ)
0177デフォルトの名無しさんNGNG
>176
つまんねーよ、カス
0178デフォルトの名無しさんNGNG
>>176
>>177
やめろーDelスレとかC言語スレみたいになる
0179デフォルトの名無しさんNGNG
C++Builderさっぱり分かりません。
0180デフォルトの名無しさんNGNG
みなさんC++Builderの操作方法ってどうやって
覚えたんですか?
0181デフォルトの名無しさんNGNG
自然に。
0182デフォルトの名無しさんNGNG
マニュアル
0183デフォルトの名無しさんNGNG
>>180はC言語スレ行っちゃたけど、タイミング悪すぎ。
0184デフォルトの名無しさんNGNG
NULL議論の真っ最中に・・・憐れ180
0185デフォルトの名無しさんNGNG
あ、1こレスもらってる
0186顔も名前も出さずに毎月100万円NGNG
Future-Web(フューチャーウェブ)登場
なんと10,000円単位の収入    

●10,000円単位の高収入
 1件につき最大10、000円の高額収入。月収100万円以上も可能。
●画期的なビジネス!
 インターネットを利用したこれまでにない斬新で画期的なビジネスです。
●誰でも出来ます!
 インターネットが出来る環境の方なら誰でも参加可能です。
●専門的な知識は一切不要!
 ビジネスに必要なツールはすべて当社で用意いたします。また、サポ
 ートも万全です。
●詳細は今すぐHPをご覧ください。
  http://www.future-web.tv/7823/
0187新米NGNG
Bitmapを読み込んで、その画像上に新しく図形などを描き込み、その画像を
セーブする方法で悩んでいます。Form上のCanvasプロパティを使って、読み込んだ
Bitmapに図形を書いたり、消したりすることができることがわかったのですが、
それでは、図形がBitmapに書き込まれたことにはならないので、Imageコンポーネント
にあるBitmapをセーブしてもNGですよね。 何か良い解決策はないでしょうか?
一度、書き込んだ図形の消去も可能にしたいのですが、よくやり方がわかりません。
どなたか助けてー
0188デフォルトの名無しさんNGNG
Delphiだけど、このへん読めばわかるんじゃないかな?
ttp://www.netjoy.ne.jp/~tuya/DlphTutor/DlphTutor5.html
ttp://www.netjoy.ne.jp/~tuya/DlphTutor/DlphTutor6.html
0189デフォルトの名無しさんNGNG
>>187
FormではなくImageのCanvasつまり Image1->Canvasに描くと
図形をBitmapに描いた事になる
0190デフォルトの名無しさんNGNG
。・゚・(ノД`)・゚・。ウワーン

Windows 98 SE + C++Builder5.5 にて、

他人(誰?)が書いたソースを使ってビルドすることを企てております。
どうしても struct _timeb と _ftime() が定義されていないという理由で
コンパイルが失敗します。

いちおう、
#include <sys\types.h>
#include <sys\timeb.h>
こんなふうにヘッダファイルをインクルードしてあるんですけれど、
ダメなんです。

#define _timeb timeb
とか、勝手にやっちゃえばいいんでしょうか? アヒャー(・∀・;)
0191デフォルトの名無しさんNGNG
>>190
いいんじゃない?
0192デフォルトの名無しさんNGNG
燃えagaーれー 燃えagaーれー 燃えagaーれー
0193デフォルトの名無しさんNGNG
バンダムー
0194デフォルトの名無しさんNGNG
天功ー
0195デフォルトの名無しさんNGNG
シカトー
0196190さんNGNG
>>191
よおーし、おじさん  (;´д`).。oO( やっちゃうゾー? )
(´-`).。oO( もとのソースがLinux向けだったらしいが不詳 )
0197デフォルトの名無しさんNGNG
質問です。
ttp://homepage1.nifty.com/cosmic/delphi/vcl.html
ここの「テキストファイルプレビュー機能付きオープン・セーブダイアログ」なんですが
テキストプレビュー部分で右クリックすると
親コントロールが無いと言われ例外が出てしまいます。
どうしたらいいんでしょうか。
0198197NGNG
環境書き忘れです。
BCB6です。
0199デフォルトの名無しさんNGNG
>>198
作者に聞けよ…
0200名無し~3.EXE NGNG
>199
作者のサイトに
>C++Builder に関する質問は、回答できない(する能力がない)ので送らないでください。
と書かれていたので
使ったことある人いるかな、と思いここで聞いたのですが。
0201デフォルトの名無しさんNGNG
BCB4 使ってるんですけどコンポーネントパレットのSampleページにある
TCSpinEditって、なんかおかしいような気がします。
数字入れるものとして使いたいのに、エディットの中でEnter押すと、
なぜか改行が入力されてしまいます。数字以外も入力できるし。
スピンつきの数値入力にはなにか別のものを使うんでしょうか?
■ このスレッドは過去ログ倉庫に格納されています