新C++Builder相談室
■ このスレッドは過去ログ倉庫に格納されています
0001新人
NGNGよろしくお願いします!
0586デフォルトの名無しさん
NGNG2chに書き込む前にHELPで“例外”について調べるのが先でしょうに…
try {
StrToFloat("(・∀・)");
} catch(const EConvertError& e) {
//例外処理
}
0587581
NGNGありがとうございます。やってみます。
ところで、StrToIntDef に相当するものが, StrToFloat には
見当たらないのですが、何でなんでしょうか?
実数型の場合、「数値で無い場合はデフォルト値を吐き出す」
という処理は、あまり需要がないのでしょうか?
0588デフォルトの名無しさん
NGNGVCL関数にこだわる必要ないだろ?
C標準関数の sscanf を使えば、デフォルト値処理できるよ。
float tmp = 1.0;
sscanf(str.c_str(), "%f", &tmp);
0589581
NGNGsscanf って,そういう風に使うのか・・・
この場合、AnsiString str が数値じゃなかったら、
tmp = 1.0 が残るってことですよね。
try・・・catch を使った例外処理法も分かったし、
今日はとても勉強になりました。
0590デフォルトの名無しさん
NGNG微妙に書き直してみたり。
float tmp;
char dummy;
if(sscanf(str.c_str(), "%f%c", &tmp, &dummy) != 1){
tmp = 1.0;
}
0591572
NGNGご回答ありがとうございました。
スタックオーバーフロー起こしても仕方がないということですね。
でも、自前のクイックソートでは起きなかったのになぁ。
0592デフォルトの名無しさん
NGNG特に中央値の決め方は?
VCLのコードは中央値を区間中央の値そのまま使うからダメなんだと思うけど
0593572
NGNG>特に中央値の決め方は?
>VCLのコードは中央値を区間中央の値そのまま使うからダメなんだと思うけど
stringlist->Strings[ ( first + last ) / 2 ] ですから、同じような物だと思います。
で、for (;;) { whileでまわして、break判定、Str->Exchange( right, left ) } 再帰です。
ひねりも何もありません。
今日VCLのコードも見てみましたが、
ループ内で再帰してる(してますよね?)のが駄目なのかな?と素人ながらに思いました。
0594592
NGNGクイックソートで2分割する過程の前方だけ再帰させて
後方を末尾再帰でループに展開してるのでしょう
たまたま与えたデータとの相性が悪かったという事かもしれませんね
自作のソートでもネスト段数を管理して ネストが深くなりすぎるようならみたいな
処理が必要かもしれません
0595デフォルトの名無しさん
NGNG0596デフォルトの名無しさん
NGNG-S
0597デフォルトの名無しさん
NGNG動かないソフトがあり困ってます。
0598デフォルトの名無しさん
NGNGなんて名前のソフト?
0599デフォルトの名無しさん
NGNG英数字のキーを入れたときの動作はできました。しかし、
矢印キーを入力すると、べつのコンポーネントにフォーカスが移って
しまいます。矢印キーを押したときに、ある関数を実行させるには
どうしたら良いんでしょうか?
0600デフォルトの名無しさん
NGNGttp://isweb4.infoseek.co.jp/computer/utsuke/DiskMoniter.htm
↑ここのサイトの「ディスクモニター」ってソフトです。
0601デフォルトの名無しさん
NGNGサポート掲示板もあるし、バグレポートあげてあげたらどうですか?
0602デフォルトの名無しさん
NGNGどのイベントハンドラ(OnKey...)使ってる?
0603599
NGNGMDIChild のOnKeyDownです。
そこで、
if(Key==VK_LEFT){
// こんなことがしたい
}
とやっても、意図どおりいうどいてくれません。
その、Child window 内に TBotton コンポーネントがいくつか
あるのですが、矢印キーを動かすと、フォーカスが
ボタンに移ります(ずっと矢印を押していると、選択されている
ボタンが次々に変わっていく)。
なお、
if(Key == VK_SPACE){
// ちゃんと動く
}
は、意図どおり動いてくれます。
0604デフォルトの名無しさん
NGNG・イベントをトラップする
TCustomForm::KeyPreview を true に
・フォーカス移動を抑制
コンポーネントの TWinControl::TabStop を false に
0605599
NGNGPanel->Caption = Key;
なるコードを入れ、きちんとKeyが読まれているか確かめました。
英数字やスペースキー、ファンクションキーは読まれていますが、
矢印キーやリターンキーは読まれていないようです。
これらのキーを読むには OnKeyDown では駄目なのでしょうか?
0606henoheno
NGNGデータにアクセスしようとしていますが、FieldValuesで「割り込ん」
でしまいます。
BCB5の開発環境上では動くんですが、これを実行形式ファイルを直接
実行形式ファイルさせるとだめなんです。
# 何か、手がかりでもいいので教えてください
0607599
NGNG動きました!!
>>604 さんありがとうございました。書いてある前半部は
よくわからなかったので、とりあえず後半だけ行ったら、
ばっちり動きました。これで安心して週末を迎えられますです。
0608デフォルトの名無しさん
NGNGただしコントロールの移動をキーボードで行えず、
windowsのデザインガイドからは外れるよ…
(マウスが無いと操作できなくなる)
0609599
NGNGうーん。うまい手はないんでしょうか? (そりゃ、あるんだろうけど)
まあ、実際にはマウスなしで操作することは、まずないと思うので、
良いんですけど。
とりあえず、今日はおなかがすいたので帰ります。
ありがとうございました。
0610デフォルトの名無しさん
NGNG>>596 さんの書かれたスイッチを、bprファイルのCFLAG1の中に入れてみましたが、
asm出力されません。
- <OPTIONS>
<CFLAG1 value="-Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c -tW -tWM" />
がんばったんですが。。。教えてください〜!
0611デフォルトの名無しさん
NGNG.asm ソースが欲しいソースに
#pragma option -S
を入れる方が簡単かな?
0612デフォルトの名無しさん
NGNG#pragma inline
解説
この指令は,-B コマンドラインオプションと同等のものです。
これはファイルの先頭に置くのが最良です。
#pragma inline に出会うと,コンパイラは自分で -B オプションをオンにして,コンパイルを最初からやり直すためです。
--
pragma option で使用できないオプションは以下のとおりです。
-B -c -Dname
-Dname=string -efilename -E
-Fx -H -Ifilename
-lexset -Lfilename -M
-P -Q -S
-T -Uname -V
-X
おまえらちゃんとへるぷみろよ
0613デフォルトの名無しさん
NGNG0614デフォルトの名無しさん
NGNGcharなので、代入するたびにSJISに変換しています。
AnsiStringをwchar_tにすることはできないんでしょうか?
ちなみに、コンパイラオプションに -WUを追加しています。
0615デフォルトの名無しさん
NGNG0616デフォルトの名無しさん
NGNG>>614 の要望は、「VCLのAnsiString型のプロパティを WideString型 に変えたい」
ということのような気もするけど…
VCLについては諦めるしかないね。
0617デフォルトの名無しさん
NGNG定義されてるメッセージ類も全部変更しなきゃいけないし・・・
0618デフォルトの名無しさん
NGNGどうしたらいいですか?
0619デフォルトの名無しさん
NGNG0620デフォルトの名無しさん
NGNGLines の Pos プロパティをつかってくれよ
0621618
NGNG>>619
便利なサイトですね、これ。試してみると確かに値が取得できるんですが、
なぜそうなるかはさっぱりです。まぁ、いいけど。
>>620
当方BCB4なんですが、LinesにはPosプロパティはないです。5からの機能でしょうか?
0622デフォルトの名無しさん
NGNGこれで、どうかな?
0623うにゃ
NGNG素朴な疑問なんですが,
VBはExcelアプリケーションを立ち上げて処理を終えた後,
closeしてNothingでオブジェクトの
開放を行うのに・・・・・
C++BuilderではNothingを行わないですむのでしょう?
0624デフォルトの名無しさん
NGNGnewしたらdelete
T* o = new T;
o.foo();
delete o;
0625デフォルトの名無しさん
NGNGそれは CBuilder は VB ではないからです。
0626デフォルトの名無しさん
NGNGどーすればいいんでしょうか?
Form1->FormStyle=fsMDIForm、Form2->FormStyle=fsMDIChildの場合、
Form1にBitmapを表示したいんですが、Canvasは役に立たなくなってるので、
Panelを貼り付けて、その上にImageを貼り付けたら表示はされるんですが、
Form2->VisibleがTRUEになった時、Panel(Image)よりもForm2の方が、
下に来てしまいます。
0627え
NGNG0628デフォルトの名無しさん
NGNGImage1->Canvas->MoveTo(x,y);
Image1->Canvas->LineTo(x+1,y+1);
0629デフォルトの名無しさん
NGNGネタだよな?
Image1->Canvas->Pixels[x,y] = c;
0630614
NGNG>「VCLのAnsiString型のプロパティを WideString型 に変えたい」 ということのような気もするけど…
その通りです、説明不足ですいません。
やはり無理ですか・・・次バージョンに期待します。
0631とほほ
NGNGタイプライブラリの取り込みでコンパイルエラーがでます。
取り込もうとしているのは Microsoft HTML Object Library です。
エラーメッセージは LONG型はLTDISPATCH型に変換できません とかでてます。
むろんこのタイプライブラリはMSかボーランドが用意したものだと思います。
自分で書いたものではないです(念のため)。
Delphi6のパーソナル版でためしたのですが、こちらは途中でフリーズしてしまいます。
インストールしなおすしかなさそうな気がうすうすはしているのですが・・・・汗
なにか設定など、しないといけないものがあるのでしょうか
ご存知の方いらっしゃいましたらよろしくおねがいします。(ぺこり)
0632デフォルトの名無しさん
NGNG0633デフォルトの名無しさん
NGNG>次バージョンに期待します。
もう間に合わないよ。
0634デフォルトの名無しさん
NGNG0635デフォルトの名無しさん
NGNG多分、出ると思う・・・
しかし、Delphi6のAnsiStringはUnicodeに対応してるのかな・・・
Del6が対応してなかったら、次バージョンのC++Builderも対応してないと
思われる。
0636デフォルトの名無しさん
NGNGUNICODE 使いたければ WideString でしょ。
コンポーネント自身のプロパティの Unicode 化の話はべつね。
CLX / Windows で実装されているからできるんだと思うけど、
同じ名前のクラスが異なる型のプロパティを返したら破綻すると
思う。
0637デフォルトの名無しさん
NGNGそのために__UNICODEとか-WUオプションがあるんだろ?
それを言ったら、WinAPIのTextOut()だって破綻するぞ。
0638デフォルトの名無しさん
NGNG#ifdef _UNICODE
#define TString WideString
#else
#define TString AnsiString
#endif
0639デフォルトの名無しさん
NGNGフォーム上に、Imageコンポネントと、いくつかのButtonを配置した
ものを作っています。Buttonをクリックすると、フォーカスが
ボタン上に移ってしまいますが、ボタンクリックに関する処理後、
自動的にフォーカスをImage上に戻すにはどうしたらいいのでしょうか?
ImageにFocusがあるとき、とある処理をしたいのです。
SetFocus()みたいなことをすればいいのかな?と思うのですが、
Imageコンポーネントには SetFocus()がないです。
0640デフォルトの名無しさん
NGNG必要なら、パネルの上に載せて、パネルにフォーカスを持たせるのが簡単かと
0641639
NGNGありがとうございます。
0642デフォルトの名無しさん
NGNG持ち合わせてないんだけど、いいのかな?
0643デフォルトの名無しさん
NGNG0644デフォルトの名無しさん
NGNG1. BCBかDelphi持ってる?
2. そのヘルプ見た?
0645デフォルトの名無しさん
NGNGだからOnEnter/OnExitで作りたいというような話ではないのかな?
0646643
NGNGWin32APIにしか無いと思った。
639は対象のHWNDだけ調べれば済むと思ったから。
0647デフォルトの名無しさん
NGNGTButtonもTPanelもTWinControlから派生しているからSetFocusやFocusedを持ってる。
ただTPanelはクリックしてもフォーカスを持ったような表示(点線)はされない。
TImageはTControlから派生しているから持ってない。
ということが言いたいの。
>>646
TWinControlから派生していないからウィンドウハンドルは持ってない。
0649デフォルトの名無しさん
NGNG643自身もTControlとTWinCotrolの違いが全然理解できていない。
どのコンポが何から派生してるのか、覚えれ。
0650デフォルトの名無しさん
NGNG数日前にBuilderをはじめた大厨房をお助け下さい。
API関数なるものを使おうと考えているのですが、
これを使う前にしなければならない手順等(include他)をご教示頂きたく
書き込み致しました。
Builderのヘルプから検索しようとしても、有効なキーワードさえわからず、
途方に暮れております。
昨日買った本も、「API関数が使えることが前提」で書かれており、
肝心のそこに至るまでの手順が書いておりません。(ToT)
レベルの低い質問かもしれませんが、どうか一つ、よろしくお願い致します。
0651デフォルトの名無しさん
NGNG0652デフォルトの名無しさん
NGNG>>650
始めたばかりであれば当面includeとかのことは考えなくてもAPIは使用できるので
安心していいと思う。もっと知りたければgoogleで「Win32API」で検索すれば色々と
出てくるし。
それよりも、その本の「API関数が使えることが前提」というのは、コンパイラの
問題じゃなくて読者がAPI関数を理解していることが前提という意味だと思うから
頑張ってくださいまし。
0653デフォルトの名無しさん
NGNG何も要りません。
SetForegroundWindow(hWndDetect);
を呼びたかったら、
SetForegroundWindow(hWndDetect);
って書けばいいだけの話し。
0654650
NGNGこんなこと書いたら、罵倒されると思っていたので
こんなに暖かい助言がいただけるとは、
2ちゃんねるもいいところですね。
早速試したいと思います。ありがとうございました。
0655デフォルトの名無しさん
NGNG650のような「努力はしてるな」と思えるようなのは罵倒されないよ。
ところで一つ聞きたいのだが、その本には完結した短いプログラムのリストとかは
ないのかい? もしあれば入力して実行させてみれば、質問しなくて済んだかもとは
思ったけどね。
0656学習中
NGNG構文エラー : 識別子 'CFrameWind' がシンタックスエラーを起こしました。
これの対処法を教えて下さい。
0657デフォルトの名無しさん
NGNGう〜ん…状況はもう少し詳しく頼む。罵倒されるぞ(w
そのdraw.cppが参考書とかのソースコピペでなければ、「CFrameWind」が
「CFrameWnd」の書き間違いかもしれない。
0658学習中
NGNGやっぱり「WND」を勝手に「WIND」に変えてはいけませんか。
それでやってみます。
0659デフォルトの名無しさん
NGNGTPanel* p;
p = new TPanel (Panel1);
p->Left = 0;
p->Show ();
で やっても表示されません.どうか教えてください
0660650
NGNGおはずかしながら、その本を見る限り、どれがAPI関数でどれがBuilderの関数かも
判別つかず、またサンプルリストを読んでもあまり理解できなかったために実行しません
でした…。
リストを理解せずに打ち込んで実行するだけなんて、ゲームのやりたさに
ベーマガのリストを機械的に打ち込むみたいで、なんか嫌だったのです。
0661デフォルトの名無しさん
NGNG打ち込んだら知りたい関数にカーソルを合わせてF1を押せばヘルプが引けるじゃん。
動作を確認しながらわからない関数を調べていくってのも学習方法の一つかなと。
ベーマガ・・・懐かしいね。
DATA文で機械語バリバリ書いてあって、やっと入力し終わってRUN! 暴走。
セーブするの忘れてた。
というのを思い出した(w
0662学習中
NGNG{
public:
DrawWnd();
void OnPaint();
Declare_message_map();
private:
void OnLButtonDown( UINT nFlags, CPoint point );
void OnLButtonUp( UINT nFlags, CPoint point );
void OnMouseMove( UINT nFlags, CPoint point );
Draw aDraw;
};
class DrawApp : public CWinApp
{
public:
virtual BOOL InitInstance();
};
Begin_message_map( DrawWnd, CFrameWnd );
ON_WM_Paint()
ON_WM_LButtonDown()
ON_WM_LButtonUp()
On_WM_MouseMove()
End_message_map()
とリストが続いているのですが、ビルドをかけたら「ON_WM_LButtonDown()」
の前に;がない、とはねられました。どこがマズイんですか?
0663
NGNG普通の人だったらWinAPIは
::TextOut(...);
と、APIの先頭に::をつけるんだよ。
もし、その本が::つけてないなら、その本もレベルが知れてるって事です。
わからなくても>>660は、恥ずかしく思う必要はないよ。
慣れてくると感覚でわかってくるけどね。
0664デフォルトの名無しさん
NGNG>>662
下5行。
ON_WM_Paint()を含む以下の行全ての行末に「;」付けてくださいな
0665661
NGNGそうか、そうだったのか。初めて知った。
俺もレベルが知れてるらしい(w
0666デフォルトの名無しさん
NGNGうひー。俺もつけてない(w
別に本職じゃないけど、全然そういうの知らなかった…
0669デフォルトの名無しさん
NGNGParentプロパティの設定が抜けてない?
0670Delフサギコ
NGNGShowしても仕方ないです
Parentをthis(表示されているForm)
指定してください
 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
∧,,∧ オチャー
ミ,, ゚Д゚彡
〃つ旦O
〜ミ,,[ ̄ ̄ ̄.]
 ̄ ̄ ̄
0671デフォルトの名無しさん
NGNGあ〜言われてみれば、Borlandは親切な(又は、変な)
オーバーライドしているから、
確かに意識的に::ってつけたほうがいいかも。
0672学習中
NGNGsss.exe - エラー 0、警告 0
と出ているのに「プログラムが実行できません」と出るんですが
どのような理由がありますか?
0673デフォルトの名無しさん
NGNG下のようなソースプログラムがコンパイルできないのです。
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString AS_Section;
AnsiString AS_Key;
AnsiString AS_ReturnedString;
TIniFile *ini; ← ココで「[C++ エラー](省略)未定義のシンボルTIniFile」とかいわれます。
・・・・・
TIniFileはヘルプを見た感じ、特に改めてヘッダファイルをインクルードする
必要は無いと思うのですが、何度やってもコンパイラはつれない応えを返します。
日頃、TIniFileを使用している方、いらっしゃいましたら、何卒、教えて下さい。
0674デフォルトの名無しさん
NGNGバグは自分の不注意から。
0675デフォルトの名無しさん
NGNGじゃあincludeしてみればいいじゃん。
0676673
NGNGIniFiles.hpp要りますね。鬱だ・・・。
0677学習中
NGNGコンパイルは終了しているのに出てきました。教えて下さい、どうやったら解消できますか?
0678デフォルトの名無しさん
NGNGParentが必要なんですね.解決しました
0679デフォルトの名無しさん
NGNG風呂入って寝ろ!!
lib か bin の .csm ファイルが壊れている可能性が高いから手で削除。
かな?
0680639
NGNGが、Panel と Image を重ねると、Panel の方が上に来てしまうようです。
BCBの開発環境中で、Panelを選択し、「背面に移動する」と、
下に行っているように見えるのですが、実行させると表に来てしまい,
Imageが塗りつぶされてます。Panelの visible プロパティをfalseに
すると、Image は見えるようになりますが、SetFocusできません。
どこをいじればいいのでしょう?
Panelを透明にすれば良いのかな?(←やり方わからないけど)
>>643-649はよくわかりませんでした。
0681デフォルトの名無しさん
NGNGPanel がウィンドウコントロールで Image が非ウィンドウコントロールだからです。
違いを理解しましょう。
TWinControl のヘルプに書いてあることに加えて、
・親が同じ場合、ウィンドウコントロールは非ウィンドウコントロールよりも手前に来る
という特徴があります。これは覆せません。
0682680
NGNG>>643-649 を理解しないとダメなのかな?
いま自宅で、プログラムをいじれないんだけど、
(1)ボタンが押された。その処理をする
(2)Panelのvisibleをtrueにしたあと、Panel->SetFosus()する。
(3)Panelのvisibleをfalseにして、Imageを表示させる
という風にすればいいのかな?
0683デフォルトの名無しさん
NGNG理解しても結論が681になるだけ。
別解を提案してみる。
別のフォームを作ってそこにTImageを乗せる。
TImageのサイズにあわせてフォームをリサイズ。
フォームのBorderStyleをbsNoneにする。
本来TImageを置きたいフォームが表示されたら、今作ったフォームを表示する。
元フォームが移動したらそれに合わせて新フォームも移動させる。
こんなんどうよ?
0684Delフサギコ
NGNG∧,,∧ /まさか
ミ.,,゚Д゚彡< ButtonをSpeedButtonに変えたら
ミ つ目(ミ . \解決とかじゃないっすよね。
〜ミ,,O,,,,,,つ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
フォーカス ハ イドウ シナクナルガ
Panelの上にImageを貼り付けるとか??
0685デフォルトの名無しさん
NGNGこら、フサギコ! せめて>>680くらいは読んでくれよ。
それから元々は>>639だ。
■ このスレッドは過去ログ倉庫に格納されています