[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 03/01 23:10 / Filesize : 254 KB / Number-of Response : 923
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

くだすれC++Builder(超初心者用)その3



1 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 03:39:51 ]
このスレッドは、他のスレッドでは書き込めない超低レベル、 
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 
C++Builder使いが優しくコメントを返しますが、 
お礼はC++Builderの布教と初心者の救済をお願いします。 

Borland Home Page   www.borland.co.jp/ 

<過去スレ> 
くだすれC++Builder(超初心者用) 
pc8.2ch.net/test/read.cgi/tech/1117225464/l50

くだすれC++Builder(超初心者用)その2
pc10.2ch.net/test/read.cgi/tech/1144308804/l50

<兄弟スレ> 
くだすれDelphi(超初心者用)その39
pc10.2ch.net/test/read.cgi/tech/1169386914/l50


185 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 08:45:20 ]
変更できなくはないけど変更せずに使った方がよいよ。
郷に入れては郷に従え。
慣れてショートカットキーが使えるようになってくると
逆に手になじんできます。

186 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 16:29:58 ]
これって無料ですか?

187 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 09:57:56 ]
無料厨氏ね!

188 名前:184 mailto:sage [2007/10/01(月) 11:21:05 ]
>>185
 了解しました。もうちょっと慣れるまでがんばってみます。ご回答ありがとうございました。


189 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 19:21:50 ]
UnixでもEmacs系しか使わない漏れにとっては
不便なエディタを無理して使うより
慣れたエディタ併用して書いたほうが気が楽だ。

でも、だからといってBCBが嫌いなわけじゃないんだからね?

190 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 04:40:43 ]
>>184

>行末にキャレットを移動した時に自動的に次の行の先頭へ折り返してくれない。

 これ、行の長いソースの編集の時に便利。
 最近はディスプレイも広いからCとかだとあんまり実感する事も無いと思うけど、
 長いクラス名や変数名を扱う時とかに慣れると便利だよ。


>オートインデントでタブ文字ではなくスペースが挿入される。

 オプションで切り換えられた様な、、、、、

191 名前:デフォルトの名無しさん [2007/10/03(水) 09:06:07 ]
外部エディタ使えばいいやん。


192 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 09:47:25 ]
へたれだから補完がないと

193 名前:デフォルトの名無しさん [2007/10/04(木) 19:34:06 ]
BCB6でJpeg2000を表示したいのですが、どうしたら良いですか?



194 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 19:38:07 ]
がんばる

195 名前:デフォルトの名無しさん [2007/10/05(金) 08:39:53 ]
頑張り方教えて下さい。

196 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 10:15:31 ]
susie用のjpeg2000のspi(要はDLL)があるから
それを利用すれば簡単じゃん

197 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 10:56:34 ]
>susie用のjpeg2000のspi(要はDLL)があるから

見つけました。 → ttp://software.kozoh.net/

>それを利用すれば簡単じゃん

使い方はどこかに書かれてますか?

198 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 11:39:39 ]
>>197
ttp://www.digitalpad.co.jp/~takechin/download.html
から
ttp://homepage3.nifty.com/~takechin/archives/spi32008.lzh
をダウンロードして解凍して
spi_api.txtを嫁。
これで分からなかったらDLLを基礎から勉強しろ。

199 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 11:43:01 ]
ttp://www2.big.or.jp/~osamu/Delphi/
ここの「builder-ML過去ログ」を検索すれば
山ほど出てきますよ。

200 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 11:43:44 ]
ダウソしました。

DLLくらい作ったことありまつ><

でも、このプラグイン使うの結構難しいですね。
普段、ビットマップとか理解してなくて、TBitmapで済ませてるんで。

201 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 11:50:45 ]
しかしJPEG2000の話は最近本当に聞かないね。
デジカメに組み込むという話はどこに行ってしまったのやら。
低圧縮JPEGで十分だと判断されてしまったんだね。

202 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 11:55:27 ]
Jpeg2000、気力の低下でやっぱ挫折してきます多。

何か実行ファイルを起動して、Jpeg2000からビットマップファイルにコンバート出来ないでしょうか?


203 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 17:40:20 ]
>>202
一番簡単なのはSusieにそのJPEG2000画像を食わせて画面を
キャプチャすれば?



204 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 17:58:42 ]
それは無茶杉。

205 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 23:50:38 ]
>202
IrfanViewでバッチ処理?

206 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 20:28:50 ]
Turbo C++を使ってプロジェクトをいくつかのファイルに分割して作業しているのですが、
ヘッダファイルに新しいクラスやメソッドを追加した時に
他のファイルから上手く認識されずにエラーが出てしまい、困っています。

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のメンバではない"
と言うようなエラーが出てしまいます。

どなたかよい対処法がありましたら教えて下さい。


207 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 02:23:57 ]
でもそのコードじゃエラー出ないし。

208 名前:206 mailto:sage [2007/10/15(月) 09:01:23 ]
 自己解決しました。同名ファイルが複数のフォルダに分かれて存在していたのが原因だったようです。
お騒がせして申し訳ありませんでした。


209 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 15:08:20 ]
デバッガーを走らせて変数をインスペクトしたとき、ちゃんと変数の中身が見えるのが殆どですが
プロジェクト(変数?)によっては「???」と表示されてしまうのはなぜでしょうか
勿論その変数は有効で、ShowMessageなどではちゃんと表示されるのですが

210 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 16:29:50 ]
たまにあるね。インスペクタウィンドウに直接変数名入れても、そんなもんはねぇとか言われたりね。

211 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 16:31:21 ]
ヒント:最適化

212 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 17:26:04 ]
デバッグ時はオフにしてるけどな

213 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 18:54:44 ]
変数のスコープの問題じゃないの?



214 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 19:55:55 ]
その変数への代入文で止めたとしても、ツールチップもでないしインスペクトもできないってのがあった。
???すらでないんで質問者のとは違うかも。

215 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 23:19:56 ]
>>209
あてずっぽうで つ「副作用を許可する」

216 名前:209 mailto:sage [2007/10/17(水) 11:09:47 ]
プロジェクト−オプション−最適化を切り替えたら見えるようになりました
てもこんなオプションいじったことないのに、妖精さんのいたずらか

217 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 14:03:31 ]
TListViewのアイテムをドラッグしてる時に表示される半透明のアイコン
これを表示しないようにできませんかね

218 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 06:54:34 ]
このコンポはどう?
jp.youtube.com/watch?v=aMnI_grQk-4

219 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 13:34:19 ]
2007でSTLportを使えるようにする方法を
教えてください。

220 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 07:23:58 ]
>>219
それBorlandのメールニュースで読んだきがする

221 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 09:18:18 ]
あったあった
転載していいかどうか判らんから紹介だけ

ボーランドのニュースグループ borland.public.cppbuilder.japanese の10月26日の投稿
『C++Builder2007になってからSTLの実行速度が遅くなっているのでしょうか?』
のレスに細かい手順があるよ
Builder単体では出来ないので結構面倒

222 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 09:30:28 ]
>>220
219です。できました!
ありがとうございましたm(_ _)m

223 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 15:52:28 ]
STLportはなぜかランタイムDLLの名前がgcc(MinGW)のものと同一に
なるのでバッティングして同居できないんだよ。



224 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 15:55:37 ]
>>221のやり方みたら謎が解ける

225 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 16:13:34 ]
>>221はヘッダファイルいじってコンパイラのバージョン番号変えてるだけ
ライブラリ名までは変わらない

226 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 23:10:33 ]
C++Builderでボタンを押すたびに画像が変わるようにしたいんだけど
誰か分かる方いますか?どんなコード書いたらいいんでしょう。
イメージ的にはローカルに画像保存しておいてボタンを押したら
そこの保存してある場所から持ってくるって感じなんだろうけど
上手くいきません。お願いします。

227 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 00:16:00 ]
どこがうまくいかないの?を具体的に書いたほうが回答がつきやすいと思うよ。

228 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 08:07:53 ]
std::vector<AnsiString> files; //読み込むファイルの配列
std::vector<AnsiString>::iterator files_it = files.begin();

//イベントハンドラ
Image1->Picture->Bitmap->LoadFromFile(*files_it);
files_it++;
if (files_it == files.end())
 files_it = files.begin();

229 名前:sage [2007/11/06(火) 16:00:03 ]
C++Builder6を使用しています。

今回初めてスレッドプログラムを組んでいますが、
スレッドに対してパラメータを渡すにはどの様にすれば良いのでしょうか?
DWORDとメモリのポインタを渡したいと思っています。

230 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 16:21:02 ]
ターゲットスレッドのオブジェクトのメソッドコールしてやる。

231 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 16:21:14 ]
TThreadならコンストラクタなりプロパティなりメンバ関数なり定義すればいいだろ。
フォームがTFormから派生してるように作成したスレッドもTThreadから派生してるだけだし。

232 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 16:25:06 ]
スレッドクラスの派生にプロパティ付ける手もあったか。

233 名前:デフォルトの名無しさん [2007/11/07(水) 09:00:30 ]
最近、C++Builder 6 を使い始めた。
TXMLDocument
の使い方教えてけろ。
EAccessViolation
とかになっちゃうもんで。



234 名前:デフォルトの名無しさん [2007/11/07(水) 09:49:01 ]
C++Builder 6を買おうと思っている初心者だけど、Personal版とProfessional版で何が違うの?値段が違うっていう回答はなしね

235 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 11:47:13 ]
>>234
TurboC++でもDLして使っとき

236 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 11:48:30 ]
>>234
VCLのソースの添付。

237 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 11:55:54 ]
>>234
商利用の可否
DBコンポーネントの有無
紙のマニュアルの有無
tasmの有無(なくてもPascalソース上でインラインアセンブラ使用可能)

238 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 11:58:36 ]
ま、Personalは体験版、Proは通常版、Entは資金提供版。

239 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:34:44 ]
初心者ながら古株のbcb5を使っています。
フォームを動的に表示する場合、
モーダルで表示したら次の行でデリートするのは
わかっているのですが、

普通にショウする場合、
動的フォームを閉じた場合のデリートは
どのタイミング(どのイベント)で
行えばよいのでしょうか?

動的フォームのcpp hにデリートを書く?
動的フォームが閉じた時の報告が親フォーム
にくればいいんですが・・・
いろいろ調べたのですが、どうも。
教えてください。

240 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:32:07 ]
動的フォームのCloseイベントでthis->Release();じゃなかったっけ。
あとTCustomForm派生クラスはdeleteとかでデストラクタ直接呼び出したらだめ。


241 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 20:18:04 ]
どうもです。
試してみます。

242 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 20:27:26 ]
VCL6のソース読んだらCloseイベントでActionにcaFree突っ込めば勝手にRelease呼んでくれるっぽい

243 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 20:55:30 ]
CBuilder 6を使っていますが、randomize()関数を呼び出しても乱数発生ルーチンが
初期化されていないようで、プログラムを実行するたびにrandom()関数が同じ値を
返してきます。RandSeed変数に出鱈目な値を入れてもrandomize()を呼び出しても
結果は変わりません。どんな原因が考えられるでしょうか。尚、Randomize()関数は
フォームのコンストラクタの中で呼び出しています。



244 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:16:37 ]
>>243
randomizeとRandomize両方表記してるけど、どっち?
BCBにはどっちも存在して、random()に対応するのはrandomizeだけど、それは合ってる?

245 名前:デフォルトの名無しさん [2007/11/12(月) 21:20:33 ]
>>243
種をstaticで保持しておかないとだめなんじゃないの?PCの乱数なんて周期があってそこから切り出すだけなんだから。


246 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:22:06 ]
レス有難うございます。
Randomize()を呼んでも"r"andomize()を呼んでも結果は同じでした。実際の乱数
発生はrandom()関数を呼び出しています。尚、randomize()に対応するのはrandom()
とのことですが、Randomize()に対応するのはrandom()とは別にあるのでしょうか。

247 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:29:34 ]
>>246
System::Randomizeは下の関数に対応
System::RandG
System::RandomFrom
System::RandomRange

randomize, srandはrandom、randに対応

上がVCLの乱数ルーチンで下はC標準関数。

で、乱数の初期化はsrand((unsigned)QueryPerformanceCounter());ならまず重複しないかと。
(パフォーマンスカウンタの戻り値が64bitだから桁あふれの警告出るかもしらん)

248 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:35:29 ]
む、参照返しで戻り値がBOOLだた。
LARGE_INTEGER seed;
QueryPerformanceCounter(&seed);
srand(seed.LowPart);
大抵は
srand(GetTickCount());
で十分だが。

249 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:41:31 ]
有難うございます。
早速RandomFrom()を使ってみたところ、コンパイルエラー(未定義の関数)が出てしまいました。
Randomize()に関してはエラーは出ません。プロジェクトに何かライブラリを追加しなくては
ならないのでしょうか。

250 名前:249 mailto:sage [2007/11/12(月) 21:47:06 ]
失礼。
RandomFrom()ではなくRandomRange()でした。

251 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:51:54 ]
>>249
ヘルプ見れ。
Pascalソースでuses MathってやるようにC++ソースだと#include <Math.hpp>が必要。
ヘルプの読み方は覚えておいたほうがいい。

252 名前:249 mailto:sage [2007/11/12(月) 21:53:23 ]
自己解決しました。

RandomRange()はvcl\math.hppで宣言されていますね。プログラムの先頭でこのファイルを
インクルードしたらビルドできるようになりました。又、乱数発生機構もきちんと初期化
されているようです。プログラムを走らせるたびにRandomRange()から違う値が返ってきます。
どうもありがとうございました。

253 名前:249 mailto:sage [2007/11/12(月) 21:54:08 ]
>>251
失礼、かぶってしまいました。



254 名前:デフォルトの名無しさん [2007/11/13(火) 03:52:42 ]
超初心者質問失礼します。classの練習で数字の合計値をdisplayする問題を、
classをいくつか作ってやろうとしたのですがどうしてもうまくいきません。
結局自分は下のように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;
}

255 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 09:10:37 ]
BCB5の者です。
趣味でフリーソフトつくっていますが、
オプションフォームをnewで呼び出すか
起動と同時にロードしておくか
どちらがいいのか迷っています。
ソフト自体の大きさは単体のみの動作で
1MB程度です。

一般配布を意識した場合、
オプションフォーオムはバックグラウンドに
待機させておくものでしょうか?
それとも呼び出し毎にロードするものでしょうか?
なお、常駐ソフトです。

オプションはダイアログ形式で
部品の数は20個ほどです。

256 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 09:37:11 ]
>オプションはダイアログ形式で 部品の数は20個ほどです。

今のPC/dozなら、リソース的には無問題だが、

>起動と同時にロードしておくか

コード的に素直じゃない。

さらに、オプション内容をフォームに保持させたりすると、プログラムが崩れてきたり。

フォームを開く時点でnewしてグローバルはなるべく無い方が良い。
どうしても消せないグローバルはあると思うが、グローバルフォームっていうのは...

257 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 10:31:17 ]
よくわかりました。
一般作法ってのは聞かないと
わからないものですから。
助かりました。

258 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 10:42:24 ]
Win9xを考慮しなくて良いなら別に動的に作らんでも良いんじゃないの〜

259 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 10:59:08 ]
別に全部グローバルで良いんじゃないの〜
ってこと?

260 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 08:03:49 ]
>>258
VB or JAVA プログラマみたいな発想でつな

261 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 10:56:40 ]
BuilderはVB感覚で使ってるからね〜

262 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 12:42:39 ]
VB->BCBはまったく違和感がない。
最近ここに張り付いたBCB5厨だけど、
ヴァーアップを考えています。
ターボCとBCB2007のどちらかとおもっています。
ベンダーのページみたら
ターボCでもいけそうな・・・
どうなんだろ。
用途は、ちょっとしたアプリ程度で、通信なんか使わない。

263 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 13:17:22 ]
>用途は、ちょっとしたアプリ程度で、通信なんか使わない。

今の時代超便利だお。

だってIndyをポトペタしただけで、データ渡しの手段が増えるんだから。



264 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 19:20:09 ]
へぇ。
ターボCでもOK?ですか

265 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 19:47:34 ]
って、言ったけど・・・。
ターボCの情報はスレチガイでつか?

266 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 19:47:51 ]
YES

267 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 21:15:22 ]
んなこたーない

TurboC++Expはコンポーネントの追加ができないからプロジェクトにIndyのユニット追加してソース上で自分で宣言/newしないとダメ。
Pro買うんなら2007かっとけ(TurboC++ = C++Builder2006 = C++Builder10)

268 名前:デフォルトの名無しさん [2007/11/16(金) 08:33:42 ]
SQLでLIKE %あ%としたときに
パソコンによって
あ ア ア が対象になるパソコンと
あ しか対象にならないパソコンがありますが
なにか環境が必要になってくるのでしょうか?
いろいろ調べてますが決め手がわかりません
よろしくお願いします。

269 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 11:12:43 ]
>あ ア ア が対象になるパソコンと
>あ しか対象にならないパソコンがありますが
んなこたーない
LIKE '%あ%' クォートつけるべし
スレ違いだ

270 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 00:20:19 ]
static_castって、何をするものなのですか?普通の型変換と何が違うのでしょうか。
コードを書いていて、うまくいくのだけど、何をしているのか分からないと気持ち悪いし、問題もあるだろうし。


271 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 10:19:20 ]
ttp://ray.sakura.ne.jp/tips/cast.html

272 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 22:27:43 ]
>>271
トン。読んでみます。

273 名前:デフォルトの名無しさん [2007/11/27(火) 10:42:05 ]
質問です。
TStringList* lst;
lstに文字列をセットして
char* p=lst->Text.c_str();
として文字列先頭アドレスを求めて処理をしている部分があったのですが
ある特定文字列のときに、pがNULLになります。
でも、
AnsiString str=lst->Text;
char* p=str.c_str();
とすると正常に文字列先頭がセットされます。
この二つで違いが出る理由は何故なのでしょうか。




274 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 10:51:04 ]
物が違うから。

275 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:12:57 ]
pがNULLってのは勘違いのはず。ただ無効な領域を指しているのでアクセスした時の動作は不定。

p = lst->Text.c_str()の実際の動作は、p = lst->GetTextStr().c_str()なので、
pはGetTextStrが返す一時オブジェクトが持つバッファを指していることになる。
上の式の評価後に一時オブジェクトは破棄されてpの参照先も無効になる。

276 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 15:04:54 ]
ひさびさにくだスレが正常に機能してる例をみた

277 名前:273 mailto:sage [2007/11/27(火) 20:10:11 ]
>>275
超ありがとうございます。
とてもよくわかりました。
ちゃんと表示されていないのは大きな文字列のときでした。
小さな文字列のときは、一時的なバッファがたまたま破壊されなかったので
正常に動いているように見えたのですね。


278 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:56:19 ]
質問です。
下記 __finallyの中のA位置で、返そうとしている戻り値を知りたいのですが
result変数を作る以外の方法はないでしょうか?

int hoge() {
 try{
  if(...) return 1;
  if(...) return 2;
  if(...) return 3;
  if(...) return 4;
  throw;
 }__fianlly{
   (A)
 }
}

279 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 08:05:12 ]
fianlly

280 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 08:47:01 ]
無理でしょ

281 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 10:21:32 ]
むしろresult作らない理由がないとおもう。
コスト云々なら例外処理やめてgotoで(A)に飛ばした方がはるかにコスト低いし。

282 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 10:28:46 ]
どちらかというと、finallyはDelphi用であって、C++には元々無いもの。
Delphiにfinallyが必須なのはFreeのためであり、C++ではローカルオブジェクトの使用が推奨されている。

try finallyとtry except(←こっちはC++標準)のネストやその中でのthrow や return は言語規定されてないんじゃないかと思うのでやヴぁ目。

逆にローカル変数やローカルオブジェクトは推奨なので、
>result変数を作る以外の方法はないでしょうか?
という考えがワケワカメ。

283 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 10:34:18 ]
C++でもWindowsAPIのハンドル閉じたりするのにfinallyは有用よ。
最近のC++処理系は大抵__finally使えるし。



284 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 10:37:50 ]
finallyが有用なのと各種処理系で実装されているのは認めますが(実際自分も使ってる)、
finallyと例外catch(上では間違えてexceptって書いちゃった)系や、returnを組み合わせちゃダメ。

何でかっていうと、tryを2つ組み合わせて、その中でreturnすると、一番外のfinallyを通過しない。
ソースコードを読む上ではfinallyは必ず通るって頭で読むから、バグの元になるだけだお。

285 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 11:50:46 ]
むしろreturnできる処理でどう__finally使うのか






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<254KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef