新C++Builder相談室
■ このスレッドは過去ログ倉庫に格納されています
0001新人
NGNGよろしくお願いします!
0558デフォルトの名無しさん
NGNG俺はこうやって対策した。
キャプションをオンオフするのと同時にボタンサイズを再設定する。
ToolBar1->ShowCaptions = true;
ToolBar1->ButtonWidth = 24;
ToolBar1->ButtonHeight = 24;
とてもマヌケな方法なので、正しい方法を俺も知りたい。
0559YA
NGNGようやくプログラムが出来たので見てください。
http://www.vector.co.jp/soft/win95/game/se223305.html
0560デフォルトの名無しさん
NGNG捜す方法を教えてください。
0561こぼ
NGNGありがとうです。
でも、同じようにしてもサイズが変わっちゃいます。
無理なのかなぁ・・・
0562デフォルトの名無しさん
NGNG文字列解析をして、ディレクトリ構造を区切ってる「¥」なり「/」で
ひとつ縮めればいいのでは? ルートの場合だけ注意して。
Windowsのフォルダが対象なら、FindFirstFileに*.*を送って「.」なら親とか。
0563デフォルトの名無しさん
NGNG受け取るにはどうすればいいのでしょうか?
0564デフォルトの名無しさん
NGNGそれしか無いかなぁ…。BCBがあまりに便利なんで、
関数か何かが用意されてないかなと思ってしまう。
0565デフォルトの名無しさん
NGNGいま CBuilder 無いので Delphi で。
var
C : String;
begin
c := GetCurrentDir;
Button1.Caption := ExpandFileName(c + '\..');
end;
お尻の \ 記号処理をちゃんとしてください。
0567新人
NGNGForm1でホームページの内容をHtml形式で収集して、タグを除く。
終わったとき、Form2を呼び出し、ページの内容を表示しようとしている。
が、Form2を呼び出して、内容を表示するときエラーが出てくる。
「プロジェクトProject1.exeがEStackOverflowクラスの例外を生成しました。
’スタックオーバーフロー’プロセスは停止しています。
再開するにはステップ実行または実行を選択してください。」
ヘルプで調べたら、どうも前段階の作業がしすぎたみたい。どうすればいいですか?
ちなみに、メモリを開放しようとしたが、やり方が問題かもしれないので、
うまくいかないです。
よろしく!
0568デフォルトの名無しさん
NGNG原因はなんとなく察しがつくが、とりあえずForm2を呼ぶところのソースを見せれ。
あと、使用しているOS、BCBのバージョンも一応書いとけ。
0569デフォルトの名無しさん
NGNGそもそも、Form は1つで十分だと思う。
余分なスレッドを増やすと、自分のアタマが混乱しちゃうぞ。
0570デフォルトの名無しさん
NGNGお勧めを教えてくダサい
0571デフォルトの名無しさん
NGNGスタックオーバーフロー?
無限再帰に陥ってるのが一般的。
0572デフォルトの名無しさん
NGNGTStringList に 1行100byte以下 * 25000行程度のファイルを読み込み、
stringlist->Sort(); でソートする処理を書いたのですが、
Windows98でスタックオーバーフローが起きます(Win2kだと問題ない)。
別途ソート処理を書いて解決してはいるのですが、
スタックオーバーフローさせない方法はありますか?
実際のSortは TStringList.CustomSort ; virtual で行われています
で、内部では
private TStringList . QuickSort が呼ばれます。
名前の通りクイックソートで、再帰的に呼ばれます
このクイックソートは工夫もなにもしない普通のクイックソートなのでデータの並び方に
よりスタックを大量に消費しても不思議ではありません
安全な対策としては
TStringListを継承してStringList.CustomSort ; を自作のソートに置き換えるしかないでしょう
0574新人
NGNGOSはwin2000、BCBは5です。
Form2を呼び出す時は「Form2->Show();」でやっています。
ちなみに、
>569
Form1だけでも同じです。
原因はおそらく自分のプログラムのどこかにあると思いますが、
やりたいことをもう一度説明します。
Editでキーワードを入れ、Buttonをclickしたら、
gooのページ検索を利用し、その検索結果を全部取り入れ,ファイルに保存する。
と同時に、CppWebBrowserでgooの検索結果の最初ページを表示する。
ということです。
0575委員長 ◆ABoneCRY
NGNG> Form2を呼び出す時は「Form2->Show();」でやっています。
って、モロにForm2を呼び出す部分を書いてどーすんの。(^-^;
>567
> が、Form2を呼び出して、内容を表示するときエラーが出てくる。
> 「プロジェクトProject1.exeがEStackOverflowクラスの例外を生成しました。
と君も書いているのだから、Form2が呼び出された後、処理完了までの
間が怪しいということは察しがつくでしょ?
「この辺が怪しいなという部分の処理ルーティンを見せて」という意味だよ。
あ、私に見せてもダメだよ、そんな知識ないから。(ぢゃ出てくるなよ)
0576デフォルトの名無しさん
NGNG> Editでキーワードを入れ、Buttonをclickしたら、
> gooのページ検索を利用し、その検索結果を全部取り入れ,ファイルに保存する。
> と同時に、CppWebBrowserでgooの検索結果の最初ページを表示する。
つまり、それだけの処理が完璧に動くソースをよこせ、ということですか?
0577新人
NGNGForm2を呼び出すときそのエラーが出てきます。
呼び出す前には、取り込んだページのタグを
削除し、データをカンマ切りで整理しただけで
す。
0578デフォルトの名無しさん
NGNGForm2->Show() にブレークポイントを仕掛けて
1、 停止までにエラーが出るか?
2、 そこからステップ実行してみよう
0580委員長 ◆ABoneCRY
NGNGいやそういう意味ぢゃなくて、怪しい部分のコードを
コピペして見せてちょ という意味です。
どういう事をしようとしたのか?が問題なんぢゃなくて、
どういうコードを書いたか?が問題なので。
怪しい部分の見つけ方は、>579を参考にしてねん。
0581デフォルトの名無しさん
NGNG(1) ファイルオープンダイアログを、常に手前に(全てのwindowの上に)
表示する方法はあるでしょうか?
(2) AnsiString S を float か double型の変数tmpに変換するために、
tmp = StrToFloat(S) としました。
しかし、S が数値でないとエラーが出ます。数値でない場合には
デフォルト値をtmpに入れたいのですが、どうやるのがいいのでしょう?
整数型に変換するときには、StrToIntDef(S, default) という便利なもの
があるようなのですが、float では見当たりません。
0582デフォルトの名無しさん
NGNGソースを1行ずつコメントアウトしていけばエラー原因の行が判ると思うけどな。
エラーメッセージで指摘された行と、実際にエラーの原因になっている行は違う
場合も多いので気をつけるように。
どうしても判なかったらプロジェクトのソース一式アプすれ。
皆で添削してくれると思う。
0583デフォルトの名無しさん
NGNG(1) 表示する方法はあります
(2) 例外を使う事をお勧めします
0584デフォルトの名無しさん
NGNG0585581
NGNG(1)どうすればいいのでしょうか?
(2)数値以外のときは、例外エラーが発生すると、
オンラインヘルプに書いてありました。その例外エラーを
どのように利用すればいいのでしょう? というか、
例外エラーが発生したことを知るには,どうしたらいいのでしょうか?
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」の書き間違いかもしれない。
■ このスレッドは過去ログ倉庫に格納されています