トップページtech
984コメント343KB

新C++Builder相談室

■ このスレッドは過去ログ倉庫に格納されています
0001新人NGNG
C++Builder相談室が後少しで1000になりますので、新しいスレを...
よろしくお願いします!
0497デフォルトの名無しさんNGNG
>>496
実際に試していただいてありがとうございました。
ご指摘がずばりあたっていました。
無事動きました。良かった・・・。
0498デフォルトの名無しさんNGNG
C++builder5をもっているけど、なかなかつかいこなせません。

マニュアルは分厚いし、オンラインマニュアルは読みにくいし・・・。
基本的にC言語の基礎的な知識しかないので、CもしくはC++の入門本から
やり直そうといつも思うのですが、いつも途中で挫折して、BCBを使うところまで
たどりつけません。おすすめの学習方法を教えてください。アップグレードで
Ver1,3,4,そして5と購入しましたが、何一つソフトがつくれていません。
0499デフォルトの名無しさんNGNG
>>498
sample見れ。

Cの基礎知識があるんだったらとりあえず逝けるんでわないか?
BCB(Delも)使いはじめはVCLの使い方を覚えることが最短の学習方法だと思われ。

VB以上に直感的にソフト設計できるから、コードの書き方で悩む前に
IDEでComponentぺたぺた貼ってみては?

とりあえずHelloWorldを10回作れ。
0500498NGNG
>499

「我をたたえよ」は10回以上も作りましたが、だめです。

上は冗談ですが、コンポーネントの使い方を覚えても身に付かないと言うか、
動く3Dを簡単に実現するコンポーネントとか、マイクから拾った音声を解析して
立体的なロゴを画面に表示するコンポーネントとか、自分の欲しいコンポーネントが
全然ないので学習がすすまないのです。そもそもコンポーネントの作り方がわからないので、
ソフトを作るとき、コンポーネントを組み合わせればいいから簡単とかいう話がありますが、
欲しいコンポーネントがないと意味がありません。

健康管理ソフトを作りたいので、血圧を測定するコンポーネントとか、体脂肪率を検査する
コンポーネントとか、肝機能検査のコンポーネントとか欲しいのですが、なかなか見つかりませんね。
0501デフォルトの名無しさんNGNG
>>500
ハゲシクワラタ
0502デフォルトの名無しさんNGNG
>>500
欲しいコンポーネントを作るときに、
既存のコンポーネントを組み合わせる必要が(時間の経済性の要求から)
生じるんだヨ!
(´-`).。oO(なんでヘルプでクラスの階層構造を見た時に気づかないんだろ?)
0503マヂレスしてみようNGNG
> 動く3Dを簡単に実現するコンポーネントとか、マイクから拾った音声を解析して
> 立体的なロゴを画面に表示するコンポーネントとか、自分の欲しいコンポーネントが
> 全然ないので学習がすすまないのです。そもそもコンポーネントの作り方がわからないので、

必要なComponentがないときにわざわざ一から全部作るかってなったら
VCLのクラス継承して作った方が効率的。

ふつうのアプリをざっくりと例えると、VCL的に
アプリの作成≒TFormを継承してカスタマイズ
っつーことだから、とりあえずそこから入ってみたほうがよさげ。

つーか血圧とかは最初手入力でもいーだろーが。
とりあえずUIだけ作ってみれ。
0504デフォルトの名無しさんNGNG
>>500はネタでしょう。ネタにマジレス(・∀・)カコワルイ! とかいってみるテスト。

えー、質問なんですが、BCBのエディタで対応する括弧を検索するショートカットってないですか?
viの%みたいなヤシ。ないですか?とか聞いてるけど多分あるので、教えて下さい。
0505504NGNG
スンマソン、ageさせて貰います。
0506マヂレスしてみようNGNG
今日はマヂレスの日(w

>>504
Alt + [
Alt + ]

つーかヘルプ嫁。
0507デフォルトの名無しさんNGNG
>>498
本買えよ
0508504NGNG
>>506
マジレスどうもです。
でも、使いにくいショートカットですねぇ、コレ。
0509デフォルトの名無しさんNGNG
Borland.comのBCB_Entのトライアル版て何日間使えるんでしょう?
60日ぐらいですか?
0510DelフサギコNGNG
  ,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,ミ,,゚Д゚彡 < Ctrl+Q+[ もしくは Ctrl+Q+] も
  UU""" U U   \_______________
0511デフォルトの名無しさんNGNG
>>508
外部 (=別の)エディタ使えばいい。
「ツール」に登録して起動すると ウマー
0512デフォルトの名無しさんNGNG
スレ違いかもしれなくて申し訳ないんですが・・・

BCB5に付属しているPCRE(Perl互換正規表現ライブラリ)の
バージョンが古くて、Unicodeの正規表現に対応していません。
pcre.hを見ると、BCB用に変更してる部分もあるし・・・

BCBのPCREライブラリをアップデートする方法を知っている方
いませんでしょうか?
0513デフォルトの名無しさんNGNG
質問です。コンパイラオプションで、命令セットが386とか486とかPenとか選べるけど、どれほど変わるもんなのでしょ?
0514名無しさんに接続中…NGNG
>>513
自分で GetTickCount なり timeGetTime なりで計測してみるべし。
0515デフォルトの名無しさんNGNG
>513
ばいなりえじたのPowerWitch使えば変化部分もわかるよ

実際・・・見ないほうが後悔しない感じ。
ところであのexeサイズ圧縮のアプリ誰か使ってる?
カッコイイよね、あれ。実行展開後はサイズで会とはいえ、
メモリてんかいのみでやってたとしたらその腕はナカナカ
0516デフォルトの名無しさんNGNG
>>515 サイズが気になるならばコンポーネント使わないほうがよい
BCBのVCLなんてライブラリーがPascalとC++とごっちゃで半端だ

BCC用のフリーのRADツールがどっかにあるらしいが誰か知らない?
0517デフォルトの名無しさんNGNG
KOL+MCK じゃなくて?
0518デフォルトの名無しさんNGNG
>516
てかちゃんと解析したか?
滅多に50kbきらないように氷魚が悪者ぶってちゃんとした
ものをつくらなかったんだよ。
つかっててかなりあたまにきたといってくれよ!!
かなーりのごみあるし、米業界の伝統にこだわったせいで
さいてきせいもおろそか。ま、OSかすだから結局同じ。

VCLもMFCも氷魚の自作自演だよ。初心者用。
まぁひとつの完成形ダトもいってたけどな、会った時。
本当にこの板の奴らもてあそばれてんねー(藁
もともとあいてにされていないだけ。

氷魚のおやぢより
0519デフォルトの名無しさんNGNG
米は氷魚のいってたとーりで、一括生産なんてしてないんよ。

結局能力の高い氷魚の一人勝ちになるのがいやでなんとか
教材ばらまいているつもりらしい。
他人には中と半端製品にしかみえんといってやれ。うざすぎる
だろ?あいつまじで現製品のほぼ八割を把握しているよ。
PS2もそれ。
0520デフォルトの名無しさんNGNG
もうまじにあたまにきたよ。
俺色々つくりはしたんよ、あぷり。
そしたらぜんぶそれをうわまわるのをつくりやがった。
他の奴らも被害にあってるかとおもって、あいつの
つくりかけのC--をばらしてはみたのだが、
ま、俺でもぎりぎりじゃあ、他の奴らにはりかいできん
のかもね。BCV6はこそーり好きな人にだけわたしてるよ
0521デフォルトの名無しさんNGNG
もういっかいよーく調べなおせよ。

ココ数年の急激な業界の進歩なんて氷魚の(・∀・)
どのみちやつのC--に吸収されるよ。

だいたいせぐめんととメモリ保護もあいつぶちぬけるわけ
だし、それできるやつにしたってにほんでは、
あのゆうめいなふりーのべんちそふとだけ
それにも氷魚はコソーリと言ふ感じ。
有料でイイからもっとまともなOSとかを普及させろと
だれか逝ってやれって
0522デフォルトの名無しさんNGNG
なんだ?電波か?
0523デフォルトの名無しさんNGNG
電波はそっとしておいて、>>517 から再開〜
0524T.ONGNG
C++Builderで作成したアプリケーションを起動するとVCL50.BPLのランタイムが
ありませんと表示されます。
どうして?
0525 ◆woDeLPHI NGNG
>524 プロジェクト->オプション->パッケージタブ->実行時パッケージを使って構築にチェックを外す
0526デフォルトの名無しさんNGNG
リンカの「共有RTL DLLを使う」のチェックも外しとけ。
0527DelフサギコNGNG
  ,,,,,,,,,,,,,,,,∧,,∧   / ̄新年早々ですが
〜′,,,,,,,,,,ミ,,゚Д゚彡 < BuilderMLの一行レス&内容無関係Subject投稿
  UU"""" U U    \_なんとかしてーニャ

ミナカッタコトニスルカ
0528デフォルトの名無しさんNGNG
アスキーからでてる「C++Builder4 オフィシャルコースウェア 基礎編」
持ってる方がいたら教えてほしいのですが、
172ページ真ん中あたりにあるResourceフォルダというのが見つかりません。
検索しても駄目です。フルインストールしないと作られないんでしょうか?
0529528NGNG
すいません
解決しました
0530デフォルトの名無しさんNGNG
俺のおかげだな。
0531デフォルトの名無しさんNGNG
>>530
ワラタage
0532デフォルトの名無しさんNGNG
MainMenuのサブメニューを、設定を丸ごと PopupMenu の子にコピーしたいけど、
良い方法ありますか?
TMenuItem* item = new TMenuItem(this);
item->Assign(SubMenu->Items[n]);
PopupMenu->Add(item);
とやったら、Assign が「TMenuItem から TMenuItem への代入はできません」だって。
0533デフォルトの名無しさんNGNG
TActionList使ったら
0534532NGNG
>>533 TActionList は使っています。その上で複製を作りたいのです。
それに RadioItem や GroupIndex の設定も含めてコピーしたいのです。

メインメニューに ToolBarの表示項目を設定する一連のサブメニュー項目があって、
ツールバーの右クリックでも同様のポップアップメニューを開くように改造中です。
メインメニューと同じ一連のメニュー項目を用意するのは保守性が悪いので、
デザイナで空のポップアップメニューを用意し、OnCreate時に動的にコピー
しようとしたのですがAssignがヘタレなので参ってます。
Assign使わずに、各プロパティを地道に代入するしか無いのかなぁ。

理想を言えば、TActionList からメインメニューとポップアップメニューの
両方を動的に生成したいのです。
0535デフォルトの名無しさんNGNG
>534 いや動的に作成したらいいと思うけど 何が判らんの?
 ActionListの数だけ作るだけでしょ?
0536523NGNG
ActionList の数だけってことは、こういうことですか?
for (int i = 0; i < ActionList1->Count; ++i) {
        TMenuItem* m1 = new TmenuItem(this);
        TMenuItem* m2 = new TmenuItem(this);
        m1->Action = ActionList1->Actions[i];
        m2->Action = ActionList1->Actions[i];
        m1->GroupIndex = 1;
        m2->GroupIndex = 1;
        m1->RadioItem = true;
        m2->RadioItem = true;
        SubMenuItem->Add(m1);
        PupupMenu->Items->Add(m2);
}
同じ設定値を m1 と m2 の両方に設定するのはアホっぽいんで、
m1 に設定した内容を m2 にコピーしたいのです。
0537536=532NGNG
名乗りを間違えた。ゴメン>>523
0538デフォルトの名無しさんNGNG
>536 なら関数にすればよろし
0539536NGNG
>>538 やっぱり、そうなりますか。
VCLに機能が備わっているのではと期待したけど。

ところで TMenuItem::Assign が、同じTMenuItem型をソースにすると
例外を出すのは何故なのでしょう。普通できるだろうと思うのだけど。
0540デフォルトの名無しさんNGNG
関数が嫌なら TmenuItem を継承してメソッドを追加しろ
0541デフォルトの名無しさんNGNG
あ、メソッドを追加しなくても Assign を継承すればいいか
0542デフォルトの名無しさんNGNG
Del6ではTMenuItem.Assignはoverrideされてないね
まさかそんなことする奴いないだろうって理由で実装しなかったのかも
0543536NGNG
関数は嫌じゃないです。代替手段がないなら関数にします。派生クラス作る程でもないし。
>>539 を書いたのは、VCLがヘタレなのか、俺がアフォなのか、知りたかっただけ。
0544デフォルトの名無しさんNGNG
>>543
だから、その場で Assignを継承したって同じ程度の作業量でしょ?
どういうふうに複製したいかはその時によって違うんだから ヘタレという表現は不要かと
0545デフォルトの名無しさんNGNG
たぶんMergeWithをpublicにしてVCLをリビルドすれば便利だろうけど、めんどくさい屋根うらお
0546536NGNG
>>544 了解〜
0547デフォルトの名無しさんNGNG
C++Builder 5.0 (Update Pack 1) を動かしています。

コンソールアプリケーション (ProjectHogehoge.exe) を
main() からシコシコと書き上げて再構築して、
いざ動かしてみると、main() を抜けたあとに
「PROJECTHOGEHOGE のページ違反です」で氏んじゃう。
なぜだろう?
0548デフォルトの名無しさんNGNG
>>547
きっとどこかにメモリバグが。
それかグローバル変数のデストラクタで死んでるとか。
0549547NGNG
>>548
Σ(゚д゚lll)ガーン
0550デフォルトの名無しさんNGNG
C++Builder 5.0 なんですけど。
プログラム実行中のデバックメニューから、
インスペクト項目が消えてしまいました。
復活させるにはどうすれば?
0551デフォルトの名無しさんNGNG
localtime を使うと CodeGuard が Resource from different RTL を報告するよ・・・
気にしなくて良いもの?(でも気になる)
0552デフォルトの名無しさんNGNG
初めまして、最近C++Builerを購入しました。Cちょっとかじった
程度の初心者です。
今Builerの勉強がてらに簡単なADVゲームを作ろうとしていたのですが、
いきなり詰まってしまいました。
・背景画像とキャラ画像を上手く重ねる方法が分かりません。
 普通にImageを二つ使用すると上の画像が四角に浮きでてきます。

・Labelですが、表示されている文字列のフォントは文字列の
 途中から変更することは出来ないのでしょうか?

こんな段階で詰まっている私ですが、C++builerとても面白いっす。
  
0553デフォルトの名無しさんNGNG
Builer sage
0554デフォルトの名無しさんNGNG
>>552
>・背景画像とキャラ画像を上手く重ねる方法が分かりません。

Transparentっつうプロパティを漁ってみなされ。

>・Labelですが、表示されている文字列のフォントは文字列の
>途中から変更することは出来ないのでしょうか?

できません。
0555デフォルトの名無しさんNGNG
BCB6はまだか……
0556デフォルトの名無しさんNGNG
>>554
出来ました!マジありがとうございます!
0557こぼNGNG
質問!!
ボタンを押したらポップアップメニューが表示されるような
ものを作ろうと思い、TToolBarにTToolButtonを1つ置き、
StyleをtbsButton(逆三角マークを表示させたくないため)
DropdownMenuにポップアップメニューを指定しました。
ここまでは、うまく動作したのですが、、、

TToolButtonのキャプションを設定し、TToolBarの
ShowCaptionsをtrueにすると、ボタンのサイズが
キャプションの文字幅に自動的に変わってしまいます。
ボタンのAutoSizeはfalseにしているにもかかわらずです。
ボタンのサイズは変更したくないのですが、サイズを固定
する方法があるでしょうか?
0558デフォルトの名無しさんNGNG
>>557
俺はこうやって対策した。
キャプションをオンオフするのと同時にボタンサイズを再設定する。
ToolBar1->ShowCaptions = true;
ToolBar1->ButtonWidth = 24;
ToolBar1->ButtonHeight = 24;
とてもマヌケな方法なので、正しい方法を俺も知りたい。
0559YANGNG
BCB5を手にして約1年。
ようやくプログラムが出来たので見てください。
http://www.vector.co.jp/soft/win95/game/se223305.html
0560デフォルトの名無しさんNGNG
あるディレクトリ(AnsiString)の親ディレクトリを
捜す方法を教えてください。
0561こぼNGNG
>>558
ありがとうです。
でも、同じようにしてもサイズが変わっちゃいます。
無理なのかなぁ・・・
0562デフォルトの名無しさんNGNG
>>560
文字列解析をして、ディレクトリ構造を区切ってる「¥」なり「/」で
ひとつ縮めればいいのでは? ルートの場合だけ注意して。
Windowsのフォルダが対象なら、FindFirstFileに*.*を送って「.」なら親とか。
0563デフォルトの名無しさんNGNG
TWebBrowserコンポーネント上でマウスクリックのイベントを
受け取るにはどうすればいいのでしょうか?
0564デフォルトの名無しさんNGNG
>>562
それしか無いかなぁ…。BCBがあまりに便利なんで、
関数か何かが用意されてないかなと思ってしまう。
0565デフォルトの名無しさんNGNG
親ディレクトリは .. だから,SomeDir + "\\.." を実ディレクトリに変換すれば?
いま CBuilder 無いので Delphi で。

var
C : String;
begin
c := GetCurrentDir;
Button1.Caption := ExpandFileName(c + '\..');
end;

お尻の \ 記号処理をちゃんとしてください。
0566560NGNG
>>565
「..」を上位ディレクトリに変換するのが目的だったのですが、
やっぱり関数があるみたいですね;;
ありがとうございます。
0567新人NGNG
二つのFormを利用してインタネット系のプログラムを作っている。
Form1でホームページの内容をHtml形式で収集して、タグを除く。
終わったとき、Form2を呼び出し、ページの内容を表示しようとしている。
が、Form2を呼び出して、内容を表示するときエラーが出てくる。
「プロジェクトProject1.exeがEStackOverflowクラスの例外を生成しました。
’スタックオーバーフロー’プロセスは停止しています。
再開するにはステップ実行または実行を選択してください。」

ヘルプで調べたら、どうも前段階の作業がしすぎたみたい。どうすればいいですか?
ちなみに、メモリを開放しようとしたが、やり方が問題かもしれないので、
うまくいかないです。
よろしく!
0568デフォルトの名無しさんNGNG
>>567
原因はなんとなく察しがつくが、とりあえずForm2を呼ぶところのソースを見せれ。
あと、使用しているOS、BCBのバージョンも一応書いとけ。
0569デフォルトの名無しさんNGNG
>>567
そもそも、Form は1つで十分だと思う。
余分なスレッドを増やすと、自分のアタマが混乱しちゃうぞ。
0570デフォルトの名無しさんNGNG
BCB用のDirectXの本って何があります?
お勧めを教えてくダサい
0571デフォルトの名無しさんNGNG
>>567
スタックオーバーフロー?
無限再帰に陥ってるのが一般的。
0572デフォルトの名無しさんNGNG
スタックオーバーフローつながりで質問させてください。

TStringList に 1行100byte以下 * 25000行程度のファイルを読み込み、
stringlist->Sort(); でソートする処理を書いたのですが、
Windows98でスタックオーバーフローが起きます(Win2kだと問題ない)。

別途ソート処理を書いて解決してはいるのですが、
スタックオーバーフローさせない方法はありますか?
0573 ◆woDeLPHI NGNG
>>572
 実際のSortは TStringList.CustomSort ; virtual で行われています
 で、内部では
private TStringList . QuickSort が呼ばれます。
  名前の通りクイックソートで、再帰的に呼ばれます
  このクイックソートは工夫もなにもしない普通のクイックソートなのでデータの並び方に
  よりスタックを大量に消費しても不思議ではありません

安全な対策としては
 TStringListを継承してStringList.CustomSort ; を自作のソートに置き換えるしかないでしょう
0574新人NGNG
>568
OSはwin2000、BCBは5です。
Form2を呼び出す時は「Form2->Show();」でやっています。
ちなみに、
>569
Form1だけでも同じです。

原因はおそらく自分のプログラムのどこかにあると思いますが、
やりたいことをもう一度説明します。
Editでキーワードを入れ、Buttonをclickしたら、
gooのページ検索を利用し、その検索結果を全部取り入れ,ファイルに保存する。
と同時に、CppWebBrowserでgooの検索結果の最初ページを表示する。

ということです。
0575委員長 ◆ABoneCRY NGNG
>574
> Form2を呼び出す時は「Form2->Show();」でやっています。
って、モロにForm2を呼び出す部分を書いてどーすんの。(^-^;

>567
> が、Form2を呼び出して、内容を表示するときエラーが出てくる。
> 「プロジェクトProject1.exeがEStackOverflowクラスの例外を生成しました。
と君も書いているのだから、Form2が呼び出された後、処理完了までの
間が怪しいということは察しがつくでしょ?
「この辺が怪しいなという部分の処理ルーティンを見せて」という意味だよ。
あ、私に見せてもダメだよ、そんな知識ないから。(ぢゃ出てくるなよ)
0576デフォルトの名無しさんNGNG
>>574
> Editでキーワードを入れ、Buttonをclickしたら、
> gooのページ検索を利用し、その検索結果を全部取り入れ,ファイルに保存する。
> と同時に、CppWebBrowserでgooの検索結果の最初ページを表示する。

つまり、それだけの処理が完璧に動くソースをよこせ、ということですか?
0577新人NGNG
>575
Form2を呼び出すときそのエラーが出てきます。
呼び出す前には、取り込んだページのタグを
削除し、データをカンマ切りで整理しただけで
す。
0578デフォルトの名無しさんNGNG
とりあえずespを見つつトレース実行でもしてみたら?
0579 ◆woDeLPHI NGNG
>>577 そういう時は場合を切り分けてゆこう

Form2->Show() にブレークポイントを仕掛けて
1、 停止までにエラーが出るか?
2、 そこからステップ実行してみよう
0580委員長 ◆ABoneCRY NGNG
>577
いやそういう意味ぢゃなくて、怪しい部分のコードを
コピペして見せてちょ という意味です。
どういう事をしようとしたのか?が問題なんぢゃなくて、
どういうコードを書いたか?が問題なので。
怪しい部分の見つけ方は、>579を参考にしてねん。
0581デフォルトの名無しさんNGNG
BCB4を使い始めました。

(1) ファイルオープンダイアログを、常に手前に(全てのwindowの上に)
表示する方法はあるでしょうか?

(2) AnsiString S を float か double型の変数tmpに変換するために、
tmp = StrToFloat(S) としました。
しかし、S が数値でないとエラーが出ます。数値でない場合には
デフォルト値をtmpに入れたいのですが、どうやるのがいいのでしょう?
整数型に変換するときには、StrToIntDef(S, default) という便利なもの
があるようなのですが、float では見当たりません。
0582デフォルトの名無しさんNGNG
いや、また見当違いな箇所をコピペされるかもしれない(w

ソースを1行ずつコメントアウトしていけばエラー原因の行が判ると思うけどな。
エラーメッセージで指摘された行と、実際にエラーの原因になっている行は違う
場合も多いので気をつけるように。

どうしても判なかったらプロジェクトのソース一式アプすれ。
皆で添削してくれると思う。
0583デフォルトの名無しさんNGNG
>>581
(1) 表示する方法はあります
(2) 例外を使う事をお勧めします
0584デフォルトの名無しさんNGNG
例外がウザイような場合なら sscanf を使う方法もあります
0585581NGNG
ありがとうございます。申し訳ないのですが、もう少し教えてください

(1)どうすればいいのでしょうか?
(2)数値以外のときは、例外エラーが発生すると、
オンラインヘルプに書いてありました。その例外エラーを
どのように利用すればいいのでしょう? というか、
例外エラーが発生したことを知るには,どうしたらいいのでしょうか?
0586デフォルトの名無しさんNGNG
>>585
2chに書き込む前にHELPで“例外”について調べるのが先でしょうに…

try {
StrToFloat("(・∀・)");
} catch(const EConvertError& e) {
//例外処理
}
0587581NGNG
>>586
ありがとうございます。やってみます。
ところで、StrToIntDef に相当するものが, StrToFloat には
見当たらないのですが、何でなんでしょうか?
実数型の場合、「数値で無い場合はデフォルト値を吐き出す」
という処理は、あまり需要がないのでしょうか?
0588デフォルトの名無しさんNGNG
>>587 何でないかは知らん。ボーランドに聞け。
VCL関数にこだわる必要ないだろ?
C標準関数の sscanf を使えば、デフォルト値処理できるよ。
float tmp = 1.0;
sscanf(str.c_str(), "%f", &tmp);
0589581NGNG
たびたびありがとうございます。
sscanf って,そういう風に使うのか・・・
この場合、AnsiString str が数値じゃなかったら、
tmp = 1.0 が残るってことですよね。

try・・・catch を使った例外処理法も分かったし、
今日はとても勉強になりました。
0590デフォルトの名無しさんNGNG
>>588
微妙に書き直してみたり。
float tmp;
char dummy;
if(sscanf(str.c_str(), "%f%c", &tmp, &dummy) != 1){
 tmp = 1.0;
}
0591572NGNG
>>573 さん
ご回答ありがとうございました。
スタックオーバーフロー起こしても仕方がないということですね。

でも、自前のクイックソートでは起きなかったのになぁ。
0592デフォルトの名無しさんNGNG
>>591 ちなみにどんなコードにしましたか?
 特に中央値の決め方は?

VCLのコードは中央値を区間中央の値そのまま使うからダメなんだと思うけど
0593572NGNG
>>592 さん
>特に中央値の決め方は?
>VCLのコードは中央値を区間中央の値そのまま使うからダメなんだと思うけど

stringlist->Strings[ ( first + last ) / 2 ] ですから、同じような物だと思います。
で、for (;;) { whileでまわして、break判定、Str->Exchange( right, left ) } 再帰です。
ひねりも何もありません。

今日VCLのコードも見てみましたが、
ループ内で再帰してる(してますよね?)のが駄目なのかな?と素人ながらに思いました。
0594592NGNG
ループ内で再帰してるように見えるのは
 クイックソートで2分割する過程の前方だけ再帰させて
 後方を末尾再帰でループに展開してるのでしょう

たまたま与えたデータとの相性が悪かったという事かもしれませんね
 自作のソートでもネスト段数を管理して ネストが深くなりすぎるようならみたいな
 処理が必要かもしれません
0595デフォルトの名無しさんNGNG
すみません...アセンブラコードの吐き方を教えて下さい。
0596デフォルトの名無しさんNGNG
>>595
-S
■ このスレッドは過去ログ倉庫に格納されています