C++Builder相談室 Part17
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/11/08(水) 02:01:27【前スレ】
C++Builder相談室 Part16
http://pc8.2ch.net/test/read.cgi/tech/1138766165/l50
過去スレ・関連サイトは>>2-7あたり。
※Borland C++ Compiler 5.5.1についての質問は以下のスレへ
タダで使えるBorland C++ Part4
http://pc8.2ch.net/test/read.cgi/tech/1091066805/l50
※BDS(Borland Developer Studio)の総合スレはこちら
Borland Developer Studio 2006 No.10
http://pc8.2ch.net/test/read.cgi/tech/1162262669/l50
0391デフォルトの名無しさん
2007/05/11(金) 19:19:57ありがとうございます!
RequestLiveを Trueで正常に書き込みができました。
ところで質問なのですが、
TQueryならSQLを使うべきですか?
AppendRecordを使っても特に問題はないですよね?
まだDBは不慣れで何をどう使っていいのやらわかっていなくて・・・
0392デフォルトの名無しさん
2007/05/11(金) 19:28:10どんなSQLが流れてるか確認できるからいい。
あと、複数のテーブルをジョインしている場合でも
追加や編集、削除ができる。
あ、それからデータベースがOracleとかだと、
Appendや Editがたまにうまくいかないことがあった。
0393デフォルトの名無しさん
2007/05/11(金) 19:29:47Delphiだけど。
ttp://www.wwlnk.com/boheme/delphi/dbtips/css0350.htm
0394デフォルトの名無しさん
2007/05/11(金) 19:44:09ありがとうございます。
そのサイトで勉強してみます!
ちなみにDBはMySQLを使ってます。
0395デフォルトの名無しさん
2007/05/11(金) 22:10:15増殖してるんだけど、これプリコンパイルヘッダとかいうやつですか?
0396デフォルトの名無しさん
2007/05/11(金) 22:14:50そうです。タイムスタンプも新しいだろ?
実際時々プリコンパイルヘッダは壊れる事があるので定期的に削除を
お勧めする。*.csmというのもプリコンパイルヘッダ。
0397デフォルトの名無しさん
2007/05/11(金) 22:45:52ありがとう
csmが数十メガとかなってた
0398デフォルトの名無しさん
2007/05/13(日) 12:45:09try{
try{
if( ...) return false;
}
catch(...){
}
}
__finally{
}
return true;
これってtryのifでreturnしたら__finallyに入らないんですが書き方間違ってますか?
0399デフォルトの名無しさん
2007/05/13(日) 14:22:23C++の規格に __finally なんてものはない。
0400デフォルトの名無しさん
2007/05/13(日) 15:16:07んじゃC++Builderの話でいいんだね
んで、これ書き方間違ってる?
0401デフォルトの名無しさん
2007/05/13(日) 15:18:57ごめん、独自拡張まわりの仕様なんて知らね。
0402デフォルトの名無しさん
2007/05/13(日) 15:58:550403デフォルトの名無しさん
2007/05/13(日) 16:08:20入ったよ???
#include <iostream>
main()
{
using namespace std;
try
{
try
{
if(1) return 1;
throw;
}
catch(...)
{
cout << "..." << endl;
}
}
__finally
{
cout << "finally" << endl;
}
}
finally
0404デフォルトの名無しさん
2007/05/13(日) 16:45:160405デフォルトの名無しさん
2007/05/14(月) 08:55:09ANSI。
>__try (と__finally)
独自文法に使われている。
しかし、某C++、VC++、gccにはあるみたい
0406デフォルトの名無しさん
2007/05/14(月) 11:03:20C++ならスタックにインスタンス取ればデストラクタを自動的に呼べるが
Delphiはヒープにしかインスタンスが作れない。
だから、確実に解放するにはfinallyの導入が必要。
インスタンスを確実に解放するための仕掛けだから、
例外だろうがreturn だろうがgotoだろうが、ブロックを抜けるなら必ず実行されなければいけない。
0407デフォルトの名無しさん
2007/05/14(月) 11:39:32ぅぅ、やっぱりifのreturnでサックリと関数から抜けちゃって__finally無視されてます・・・
try{
try{
if(1) return;
}
catch(...){
Caption = "catch";
}
}
__finally{
Caption = "finally";
}
ちなみに、C++Builder5 Proです。
0408407
2007/05/14(月) 11:46:210409デフォルトの名無しさん
2007/05/14(月) 11:50:20tryを二重に重ねているからだめなんだろう。
内側のtryブロックにも__finallyを書いたらどうか。
0410407
2007/05/14(月) 11:51:18try{
if(1) return;
}
__finally{
Caption = "finally";
}
以前誰かが↓を最強って言ってたけどなんでうまくいかないのかなあ?
try{
try{}
catch(...){}
}
__finally{}
なにかプロジェクトオプションで設定がいるとかですかね?
0411407
2007/05/14(月) 11:52:52あ、すみません。
それは具体的にはどういうコードになるでしょうか?
0412デフォルトの名無しさん
2007/05/14(月) 11:54:31BCC5.8.2でやったらちゃんと__finallyの部分が実行された。
0413デフォルトの名無しさん
2007/05/14(月) 11:55:33いや、>>409は無視してくれ。
俺の所ではちゃんと__finally節が実行されたわ。
0414407
2007/05/14(月) 11:57:36すんません、C++Builderで議論をお願いします。
0415デフォルトの名無しさん
2007/05/14(月) 12:01:02だからC++Builderでやってるって。何ファビョってんの?
0416407
2007/05/14(月) 12:03:30ブチ切れないで下さい><
0417デフォルトの名無しさん
2007/05/14(月) 12:04:46文法が規定されていない。
対処として、
・try __finallyはC++らしくないので使わない
・try のネストは規定されてないので使わない
じゃね?
0418407
2007/05/14(月) 12:06:19それが正解ですね。
0419デフォルトの名無しさん
2007/05/14(月) 12:09:02catchとの組み合わせまで考えてなかったんだろな。
catch(...) を __except(true) にすれば動作はすると思うよ
0420デフォルトの名無しさん
2007/05/14(月) 12:12:36ちゃんと動くみたいだぞ。
0422デフォルトの名無しさん
2007/05/14(月) 12:28:07>ちゃんと動くみたいだぞ。
規定されてない文法に、ちゃんともちゃんとじゃないも無い。
ANSIがこの領域を定めた時点で、コンパイルエラー扱いになったり、
挙動が変更されるとか、ヤバイだけだよ。
0423デフォルトの名無しさん
2007/05/14(月) 13:38:53ただ、引数で受け取った変数はreturn文でfinallyに入った時に操作しようとすると参照先が無くなっててコケるっぽい。
後処理の中で使用する場合に予め関数内に定義した変数にコピーする必要があった。
0424407
2007/05/14(月) 14:25:58catch(...) を __except(true)にしてやってみました。
確かにreturnで抜けてもちゃんと__finallyに行ったのですが
今度は例外を発生させると「C++ Exception」ってエラーがでます・・・
0425407
2007/05/14(月) 14:33:05例外はthrow 1;で発生させたらC++ Exceptionエラーがでるのですが、
普通?に0除算エラーならちゃんと__excepに入って__finallyに入りました。
これちなみに、わざと例外を発生させたい場合はthrow何て記述すればいいですか?
0426デフォルトの名無しさん
2007/05/14(月) 14:35:240428デフォルトの名無しさん
2007/05/14(月) 21:21:55throw; ってやると受け取った例外を再スローできるのも覚えておいて。
0429407
2007/05/15(火) 09:58:57おはようございます。
え、それは知らなかった・・・
throw;ってやるとそこでエラーが出てたんですよ
だからthrow 1;とかしてた・・・
あ、やばい。この辺の仕様がいまいちわかってない
0430デフォルトの名無しさん
2007/05/15(火) 10:00:44catchの中でやってるんだよね?
それとcatch()の括弧の中も正しく書いてるよね?
0431デフォルトの名無しさん
2007/05/15(火) 10:26:26これなんのエラー?
0432407
2007/05/15(火) 10:35:55いえthrow;はcatchに行かせたくてtryでやってました。
エラーはAbnomal program terminationが出ます・・・
これをthrow 1;とかにするとエラーが出ずにちゃんとcatchに入るのですが・・・
0433デフォルトの名無しさん
2007/05/15(火) 10:39:52の後ろの( ) はどうなってる?
0434407
2007/05/15(火) 10:43:55catch(...){}
ってしてます・・・
0435デフォルトの名無しさん
2007/05/15(火) 10:51:13これじゃ、投げられた例外オブジェクトを、拾ってなくね?
0436407
2007/05/15(火) 10:55:23なんでも拾おうとしてたんですが、普通はこういう使い方はしないもんですか?
0437デフォルトの名無しさん
2007/05/15(火) 11:01:04しません。
何をthrowしたのか受けられないからです。
で、catchってswitch文みたく書けるので、エラーオブジェクトを受ける書き方をして、
該当するところが無かった場合のためにcatch(...)も入れときますがそれはswtich文のdefaultみたいな扱い。
0438407
2007/05/15(火) 11:10:39switch使ってるくせにdefaultのみって感じでしたか・・・
そういう風に言われると確かに意味ないしそんな使い方はしないですよね
はぁ、この辺勉強不足だなあ
気分的には
if (...){
OK
}
else{
ERROR
}
みたいな感じで例外が発生したらオブジェクトが何であろうと全て一括中止処理をと・・・
0439デフォルトの名無しさん
2007/05/15(火) 11:16:40いや、それは正しいんだけど、エラーオブジェクトをキャッチしなきゃ。
catch(...)だとキャッチしてないじゃん。
0440気まぐれアナスイ
2007/05/15(火) 11:17:190441デフォルトの名無しさん
2007/05/15(火) 11:18:58こういう風に、catch(...)は最後の砦。
0442デフォルトの名無しさん
2007/05/15(火) 11:20:49> } catch (Exception &exception) {
で受けなきゃ。
DB系ライブラリとかIndyとかはExceptionクラスを派生したものを投げてくるので、
派生クラスでcatchすれば、もっとエラー情報を取れるお。
0446デフォルトの名無しさん
2007/05/15(火) 11:26:16で受けとけば、
exception.Message
にエラーの内容が入ってるんだよ。
VCLがセットした論理的なエラーメッセージの場合もあるし、
Win32APIのエラーコードからエラー文字列を設定している場合もあるし。
だから、exception.Messageを書かずに、BCBスレで質問すること自体反則!
0447デフォルトの名無しさん
2007/05/15(火) 11:27:22>throw Exception("わざと");
を
> } catch (Exception &exception) {
で受けると、
>exception.Message
の中身は、"わざと"。
0448デフォルトの名無しさん
2007/05/15(火) 11:28:51> } catch (Exception &exception) {
の中で、throw; と書くと、exceptionを投げることになるが、
> } catch (...) {
て書いたって投げるもん無いやん。
あえて言えば、throw NULL; になってるかも。
0450407
2007/05/15(火) 11:35:27今Exceptionのヘルプみました。
Messageプロパティにメッセージ入ってました。
>>448
えっと根本が間違ってるかもしれませんが
catch (...)と記述すると投げるものがなくてもcatchに入るので(catch内ではオブジェクトの評価はしない)
とにかくエラーはreturnで返して処理を中止って発想でした
0451デフォルトの名無しさん
2007/05/15(火) 17:52:060452デフォルトの名無しさん
2007/05/15(火) 18:37:12サイズを変更できないウィンドウにしておいて、
プログラムでサイズを変更するようにすればいんじゃね?
0453デフォルトの名無しさん
2007/05/15(火) 20:30:06どういう状況なのかイマイチ分からんのだが
サイズ変更を抑制してたらどれくらい変更するのか決められないじゃないか
0454デフォルトの名無しさん
2007/05/15(火) 21:00:090455本田
2007/05/15(火) 23:36:27http://www.codegear.com/article/36464/
>SCOTTS VALLEY, Calif. - May 14, 2007 - CodeGear, a leader in developer tools,
> today announced C++Builder? 2007 -
>the world's only native C++ rapid application development (RAD) integrated development environment (IDE) for Microsoft? Windows.
>C++Builder 2007 provides support for Microsoft Windows Vista,
>enabling developers to seamlessly upgrade existing C++ applications to support Vista
> and rapidly build new Windows applications that take advantage of the new Vista Aero user interfaces.
0457デフォルトの名無しさん
2007/05/17(木) 16:00:47なんとかarray?
ヘルプ見たくてもスペルがわからないからおしえてください
0458デフォルトの名無しさん
2007/05/17(木) 16:51:300459デフォルトの名無しさん
2007/05/17(木) 19:32:00XPだとちゃんとログインプロンプトがでるのですが
2003サーバーで行うとログインプロンプトがでてきてくれません。
なにか特別なことをするのでしょうか?
0460デフォルトの名無しさん
2007/05/17(木) 20:27:19初心者です。教えてください。
visualbasic c++を用いて、デスクトップ上にあるエクセルファイルをオープンして、
中に書いてあるデータをreadwriteしてプログラムで解析かけたいんですけど、
デスクトップ上(あるいはパス指定)にあるファイルをopenする方法を教えてください。
よろしくお願いします。
0461デフォルトの名無しさん
2007/05/18(金) 00:56:07デスクトップの取得はこれな。Desktopに書き換える。
http://www2u.biglobe.ne.jp/~shinta/cbuilder/_BT_Tips_Ctt.htm#SystemfolderwoSyutokusuru
あとはコンポーネントのOffice2kパネルのやつ使えばできるんじゃね?
0462デフォルトの名無しさん
2007/05/18(金) 10:48:13例えば
1.5、20.9とあったばあいに" 1.5"みたいに1.5の前に1つスペースを入れたいのですが
%2.1fとしたときにxx.x形式みたいな、足らないところにスペースを
0463デフォルトの名無しさん
2007/05/18(金) 10:52:380464デフォルトの名無しさん
2007/05/18(金) 14:01:43それ知ってたんですがフォーマットのとこは何てかけばいいですか?
少数無しなら"%3.3d"とかしたらスペースはいるんですが
少数がある場合のそこの記述を教えてください
0465デフォルトの名無しさん
2007/05/18(金) 14:03:49そういや"%3.1f"ってかいたら最初の3って全部の長さなんだよね・・・
だから普通に"%5.1f"ってかけばいいだけだった・・・
>>463
ありがとう、サックリとできました
0466デフォルトの名無しさん
2007/05/18(金) 15:00:47std::stringを使うなら面倒だがマニピュレータを使う方法もある。
#include <iostream>
#include <string>
#include <iomanip>
int main()
{
float f1 = 1.5f, f2 = 20.9f;
std::cout << '\'' << std::setw(4) << std::setprecision(3) <<std::setfill(' ') << f1 << "\'\n";
std::cout << '\'' << std::setw(4) << f2 << '\'';
}
0467デフォルトの名無しさん
2007/05/19(土) 15:10:15なんで?
0468デフォルトの名無しさん
2007/05/19(土) 15:14:070469デフォルトの名無しさん
2007/05/20(日) 07:26:360470デフォルトの名無しさん
2007/05/22(火) 16:52:34Postの際に「ほかのユーザーがレコードを変更したため編集を実行できませんでした.」
ってエラーが出るのですが、どうしたら書き込む事ができますか?
0471デフォルトの名無しさん
2007/05/23(水) 11:03:57例えばSTATEというフィールドがあってSTATEの値が1なら0にするSQLにしたばあいにエラーになります。
エラーはUpdateエラーとしかでません・・
しかし条件通りSTATEが1のだけちゃんと0になっています。
これを1レコードしかヒットしない条件にするとエラーがでなくなるのですが
Updateでフィールドの値を変更する時は複数レコードだと何故エラーになるのでしょうか?
0472デフォルトの名無しさん
2007/05/24(木) 02:09:12BCB5or6orBDS2006の環境のどれかで・・・
プラグイン?
0473デフォルトの名無しさん
2007/05/24(木) 08:42:580474デフォルトの名無しさん
2007/05/24(木) 21:53:390475デフォルトの名無しさん
2007/05/24(木) 23:12:02sqlite3.hをincludeしてsqlite3.dllをDLLloadしようと思うんだが
コンパイルするとヘッダー部でエラーが出てコンパイルできないんだが
この回避方法ってありませんか?
0476デフォルトの名無しさん
2007/05/24(木) 23:52:20ありがと
いいやつだな
でも、試してみたらコレ目的のフォーマット対応してなかった
モノクロTIFFのG4が使いたかったんよ
0477デフォルトの名無しさん
2007/05/25(金) 00:05:12ダウンしたらフォルダの中にexeがなかったのですが
どうすればいいでしょうか?・・・
0478デフォルトの名無しさん
2007/05/25(金) 00:08:30どのURLからなにをダウンロードしたのか正確に教えてもらえないのに
何と答えればいいでしょうか?・・・
0479デフォルトの名無しさん
2007/05/25(金) 00:12:53http://72.14.235.104/search?q=cache:95Q74q8y9IIJ:www.borland.co.jp/cppbuilder/freecompiler/+Borland+C%2B%2BCompiler+5.5&hl=ja&ct=clnk&cd=1&gl=jp&lr=lang_ja&client=firefox
からBorland C++Compiler 5.5 ダウソしました
0480デフォルトの名無しさん
2007/05/25(金) 00:36:44しかも俺が嫌いなfirefoxユーザかよ。そんな糞ブラウザ使ってるからダメなんだよ、バーカ。
http://www.codegear.com/jp/downloads/free/cppbuilder
こっちからダウンロードしれ。
0481デフォルトの名無しさん
2007/05/25(金) 02:21:50IE派ですか
0482デフォルトの名無しさん
2007/05/25(金) 08:03:010483デフォルトの名無しさん
2007/05/25(金) 09:55:33つ http://members.jcom.home.ne.jp/komina/wiki/4243422F53514C69746533A4F2BBEEA4B9.html#i6
これでいいのか分からんが。
0484デフォルトの名無しさん
2007/05/25(金) 15:26:26メールサーバーを経由せずにメールを送信する方法を教えてください><
0485デフォルトの名無しさん
2007/05/25(金) 16:07:08印刷してポストに投函しろ
0486デフォルトの名無しさん
2007/05/25(金) 16:26:460487デフォルトの名無しさん
2007/05/25(金) 17:13:200488デフォルトの名無しさん
2007/05/25(金) 17:16:31おやすみぼうや
0489デフォルトの名無しさん
2007/05/25(金) 17:30:440490デフォルトの名無しさん
2007/05/25(金) 17:33:33郵便局を経由せずに手紙を出す方法を教えてください
と言うことでしょうか?
■ このスレッドは過去ログ倉庫に格納されています