C++Builder相談室 Part19at TECH
C++Builder相談室 Part19 - 暇つぶし2ch263:デフォルトの名無しさん
08/12/19 22:03:33
BCB6から2009への乗り換えがスゲー苦労する
何か良い方法ないですか?

264:デフォルトの名無しさん
08/12/19 23:51:11
VC++よりBCBを使うメリットってなんですか?
逆なら枚挙に暇が無いが・・・

265:デフォルトの名無しさん
08/12/20 00:08:04
>264
RADなところかな。

266:デフォルトの名無しさん
08/12/20 02:09:12
URLリンク(lupus.is.kochi-u.ac.jp)
ここにあるソースをコンパイルしようとしたのですが、
上手くいかないので助言お願いします。

コンパイルしたいのは下の3つです。
graph.h
planar.h
planarq.c

コンパイルの環境はBCC55でCPADからビルドしてます。
ソースに問題があるのか、
環境が悪いのかだけでも分かれば教えてください。

267:デフォルトの名無しさん
08/12/20 02:16:36
こっちへどうぞ
スレリンク(tech板)

でも何がどういう風にうまくいかないのかをきちんと書かないと誰も答えてくれないと思うが。

268:デフォルトの名無しさん
08/12/20 14:12:37
VC++MFCでちょっと凝ったUIを作成しようとすると
地獄のようにコードを記述する必要がある。
Builderなら部品をちょこちょこと置いて
コードをちょこっと記述すればエエ。
工数が1/10くらいになるわ。


269:デフォルトの名無しさん
08/12/22 17:23:26
>263
BCB6から2007なら簡単です。
2007で「BCB6のプロジェクトファイル(*.bpr)」を読み込んで
2007のプロジェクトファイル(*.cbproj)に書き出して、メイクするだけでOKである。

俺も2009のユニコード関係の処理で困っている。



270:デフォルトの名無しさん
08/12/23 17:02:36
どうして、2009で「ユニコードライブラリを使う」をVSのように、
プロジェクト・オプションにしなかったんだろう。

271:デフォルトの名無しさん
08/12/23 22:02:52
>>263
自分が苦労したのは、AnsiString::c_strをAnsiString::t_strにしたりとか、VCL関数に渡す文字列リテラルをワイド文字列にしたくらいかな。
この辺は、Rubyでスクリプトを書いて何とかした。
TRegIniFileやTIniFileがほとんどだったから、ReadStringとかが見つかったらワイド文字列に変換するって感じ。

>>270
多分、両方メンテしなければならないからかな。
プロジェクトオプションで分けて欲しかったのは同意。

272:デフォルトの名無しさん
08/12/25 13:55:44
PanelのCaptionに書いてる文字がパネルに収まってるかどうかを判断する方法を教えてください

273:デフォルトの名無しさん
08/12/25 16:12:29
>>272
Panelのサイズを調べて、Bevelとかの幅をそこから引いて、実際の表示領域のサイズを出す
PanelのFontでCaptionに設定してある文字列のサイズを調べる
両者を比べる


274:デフォルトの名無しさん
08/12/25 16:21:11
>>273
文字列のサイズはどうやって調べればいいんですか?

275:デフォルトの名無しさん
08/12/25 16:24:17
Win32APIで、指定文字を書いた場合のRectをとれたはずだが?

276:デフォルトの名無しさん
08/12/25 16:26:16
>>275
知らないならレスしないで下さい。ウザイだけです。

277:デフォルトの名無しさん
08/12/25 16:29:10
>>276
正解をレスしようと思ったけどやめたw
ヒント:Win32APIの文字列描画系APIをパラメータを含めて片っ端から調べろ。

278:デフォルトの名無しさん
08/12/25 16:39:08
>知らないならレスしないで下さい。ウザイだけです。
あれれ?
なんだただのでじゃヴか

279:デフォルトの名無しさん
08/12/25 17:12:10
>知らないならレスしないで下さい。ウザイだけです。

これって貼り付いてるアンチだとオモ。
質問書いたらこれ書かれたことある。
アンチは加齢にスルーw

280:273
08/12/25 17:28:32
>>274
TCanvasに、自分(TCanvas)に設定されているTFontを使って、指定した
文字列を描画する際のサイズを調べるメソッドがある(と思った)

>>279
というか、そのコピペはプログラミング系のスレとかでよく見る
アンチ以前の、単なる茶々入れも多いよ。カレーにするーには同意

281:デフォルトの名無しさん
08/12/25 17:33:32
>>280
あった。
TextExtentが領域、TextHeightが高さ、TextWidthが幅を返すね。

282:デフォルトの名無しさん
08/12/25 18:15:13
そういや、なんでVCLリファレンスってTRectとTPointがRECT、POINTの派生ってこと書かれてないんだろ。
Types.hppだと struct TRect : public RECT ってなってるし、派生って事知らないといろいろ面倒だと思うんだが‥‥


283:デフォルトの名無しさん
08/12/25 22:23:08
>>279
それはWinAPIスレで流行ってますよ
是非いらっしゃってください
お待ちしております

284:デフォルトの名無しさん
08/12/30 17:07:05
double A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15に値が入っており
一つのMemoに全てを書き出していきたいのですが
c言語と同じく
printf("%d,%d,%d,%d,%d\n",A1,A2,A3,A4,A5);
printf("%d,%d,%d,%d,%d\n",B1,B2,B3,B4,B5);
printf("%d,%d,%d,%d,%d\n",C1,C2,C3,C4,C5);
このような感じで書き出してCSV形式に3行5列の形に一つのmemoに書き出す方法はないでしょうか?

使用しているのはc++builder5です。
よろしくお願いします。

285:デフォルトの名無しさん
08/12/30 17:28:00
AnsiString().sprintf() って使えるはずだろ

286:デフォルトの名無しさん
08/12/30 18:13:30
わかりにくいかな

Memo1->Lines->Add(AnsiString().sprintf("%d,%d,%d,%d,%d\n",A1,A2,A3,A4,A5));

のように書ける

287:デフォルトの名無しさん
08/12/30 18:57:46
doubleなのに%d指定なのは構わないのかな。まあいいけど
でも”c言語と同じくmemoに書き出す”というのがイミフメ

あとC言語系のプログラマーなら、アルファベットの大文字小文字はしっかり使い分ける
癖は付けた方がいいとおも



288:デフォルトの名無しさん
08/12/30 18:58:56
あごめんそうだな

コピペしただけだから"\n"まで入ってしまってたし

"%f"な

289:デフォルトの名無しさん
08/12/30 19:09:39
>>285>>286ありがとうございます。
方法を変えてやってみたらうまくCSV形式に表示はされたのですが、
引き算の値がエクセルで計算した結果と明らかに違う数値になってMemo5に表示されます。(-1.59444444444503E-02とか)
Memo1,2,3,4には0.035083333などの少数の値が5行入っています。

AnsiString H1,H2,H3;

for(int I = 0; I < 5; I++){

H1 = Memo1->Lines->Strings[I] - Memo4->Lines->Strings[I];
H2 = Memo2->Lines->Strings[I] - Memo4->Lines->Strings[I];
H3 = Memo3->Lines->Strings[I] - Memo4->Lines->Strings[I];

Memo5->Lines->Add(AnsiString().sprintf("%s,%s,%s",H1,H2,H3));
}

どうすれば普通の数値になるかアドバイスお願いします。

290:289
08/12/30 21:22:12
解決しました。

291:デフォルトの名無しさん
08/12/31 00:52:22
馬鹿だろ

292:デフォルトの名無しさん
09/01/08 17:26:06
2007って64ビットXPに対応してる?

293:デフォルトの名無しさん
09/01/10 14:33:32
いまだにBCB6なんですが2009買うメリットありますか
既存コンポーネントも強化と書かれてますがどんなもんでしょう
2007くらいまでは案内の手紙も来てたのになー

294:デフォルトの名無しさん
09/01/10 15:50:46
VC++2008expressでいい

295:デフォルトの名無しさん
09/01/10 21:08:24
BCBスレでVCを薦めるとな

296:デフォルトの名無しさん
09/01/10 21:40:55
struct T {
 typedef void (T::*fn_t)();
 void f();
 int test(fn_t fn) {
  do { } while (0); // inline不可にしないと再現しない
  if (fn == &T::f) {
   return 1;
  }
  return 0;
 }
};

BCB6だと(bcc5.6.4)このコードで落ちるんだが
新しいのだと大丈夫なのかな。
(ifの行を
const fn_t cmp = &T::f;
if (fn == cmp) {
に変えれば落ちない)
まあメンバ関数へのポインタを変数と直接比較なんて普通やらんが。

他にも落ちる時があるんだが
こっちはどういう状態で再現するのかわからないし
そもそもコンパイルエラー時だけなのでなんとかなるんだけど。

297:デフォルトの名無しさん
09/01/11 00:30:35
>>296
BCC6.1.0だと落ちないね

298:デフォルトの名無しさん
09/01/14 20:15:40
CodeGear RAD Studio 2007 を使っております。

VC2005 で作られたコンソールアプリをコンパイルしようとしたのですが、
wcha_t と _stprintf_s を使っているところが通りません。どうすればよいでしょうか?



299:デフォルトの名無しさん
09/01/14 20:57:44
wchar_t だろ。
_stprintf_sはしらないけど、C言語標準の関数で置き換えれば?
たとえばだ。
#define   _stprintf_s(・・・)   sprintf(・・・)
など。

300:デフォルトの名無しさん
09/01/14 21:54:40
可変個引数をそれで置き換えるのはきつくないか。
こんな感じじゃないと。

#ifdef _UNICODE
typedef wchar_t TCHAR;
#define _vstprintf vswprintf
#else
typedef char TCHAR;
#define _vstprintf vsprintf
#endif

int _stprintf_s(const TCHAR* buf, size_t /* ignore */, const TCHAR* format, ...) {
 va_list args;
 va_start(args, format);
 int ret = _vstprintf(buf, format, args);
 va_end(args);
 return ret;
}

301:298
09/01/14 22:42:27
>>299 さん、>>300 さん、お答えありがとうございます。

ここでVCの話をするとおかしくなるとは思いますが、
VCでしたら _stprintf と書いておき

プロジェクトオプションで...
マルチバイトキャラセット(MBCS)を選べば、
_stprintf は sprintf に置き換えられ、

ユニコードキャラセット(UNICODE)を選べば
_stprintf_s は swprintf に置き換えられるのですが、

CodeGear RAD Studio 2007 (C++Builder) には、
こういうマクロ定義はされていないのでしょうか。
こういった作業はすべてユーザーにゆだねられているのでしょうか?

302:デフォルトの名無しさん
09/01/15 11:39:30
>>301
tchar.hインクルードしてる?

303:デフォルトの名無しさん
09/01/15 16:50:00
DirectShowを使うのにstrmiids.libが必要なんですが
プラットフォームSDK付属のだとリンクエラーになります。
B++Builder用はどこにありますか?

304:デフォルトの名無しさん
09/01/15 16:53:26
>>303
URLリンク(www.clootie.ru)
これとかは?
使ったこと無いからわからないけど

305:デフォルトの名無しさん
09/01/15 16:55:47
>>304
ありがとうございます。
このサイトにしっかりとありました(;´Д`)
URLリンク(www.clootie.ru)

306:デフォルトの名無しさん
09/01/20 20:53:45
C++ Builder 6 Update

C++Builder 6 Enterprise
fURLリンク(ftpd.codegear.com)
C++Builder 6 Professional
fURLリンク(ftpd.codegear.com)
C++Builder 6 Personal
fURLリンク(ftpd.codegear.com)
Readme
fURLリンク(ftpd.codegear.com)


307:デフォルトの名無しさん
09/01/22 15:31:26
DIBをTBitmapに変換する方法を教えてくださいい

308:デフォルトの名無しさん
09/01/22 17:40:38
>>307
そのDIBが

もし単なる配列なら
・TBitmap::ScanLineでアドレスを取得して、自分で一行ずつDIB→TBitmapへコピー
・StretchDIBits()を使ってDIB→TBitmapへ転送

もしDIBSectionみたいにHDCが利用できるなら
・BitBlt()やStretchBlt()でDIB→TBitmapへ転送

パレット付き画像だとちょっと手間が増える。

309:デフォルトの名無しさん
09/02/03 19:52:26
TImageListのn番目の画像をTImageに表示する方法を教えてください

310:デフォルトの名無しさん
09/02/06 15:52:23
C++Builder2007って64bitのXPに対応してる?
普通に動作はするんだけど64bitアプリ作れますか?

311:デフォルトの名無しさん
09/02/06 18:40:07


312:デフォルトの名無しさん
09/02/07 10:32:46
C++Builder2010をお待ちください> 64bit

313:デフォルトの名無しさん
09/02/07 22:14:31
待っている間に Qt Creator で御機嫌 64bit 開発できるようになってたりして

314:デフォルトの名無しさん
09/02/09 11:10:38
a

315:デフォルトの名無しさん
09/02/10 12:55:23
ListViewの行入れ替えをしたくて以下の関数を作ったんですが
BCB5ではうまく行ってるのですがBCB1でやるとコンパイルエラーがでます
void ListViewExchange( TListItems *tListItems, const int iIndex1, const int iIndex2 )
{
 TListItem *listitem = new TListItem( tListItems );
 listitem->Assign( (TListItem *)tListItems->Item[iIndex1] );
 tListItems->Item[iIndex1] = tListItems->Item[iIndex2];
 tListItems->Item[iIndex2] = listitem;
 delete listitem;
}
エラー内容はAssignにアクセスできないって事なんですが
BCB1で行入れ替えする時にいい方法があったら教えてください。

316:デフォルトの名無しさん
09/02/10 12:58:20
ヒント: TListViewの実態はWindozの標準コントロールで昔は無かった

317:デフォルトの名無しさん
09/02/10 13:05:30
そんなヒントいらねえよカス
知らないならレスするなクズ

318:デフォルトの名無しさん
09/02/10 20:04:02
マルチスレッドに対応した高速なJPEGデコーダのライブラリはありませんか?


319:デフォルトの名無しさん
09/02/11 00:39:57
いま、C++Builder5 から C++Builder2009 に移行中なんだけど、
どうしてもわからないところがある。

1.XP Style の見た目
プロジェクトを新規で立ち上げると、XP のスタイルになるんだけど、
古いプロジェクトを読み込むとどうしても出来ない。
TXPMan あたりなのかなぁ、と思うんだけど、良くわからん。

2.リンク時に VCLJPG.BPI がないというエラーがでる
普通にコンパイルするだけでこれが見つからないというエラーがでる。
検索をかけるとどうやら無くなったらしいけど、特に Jpeg を使っていない
ようなプロジェクトでも発生する。

3.コンポーネントのインストール
以前作ったコンポーネントをインストールするやりかたがイマイチわからない。

3.はがんばれば解決出来そうだけど、1と2、特に2はちょっと解決できそうにない。
解決方法をご存じの方がいたら、ぜひ教えてください。

320:デフォルトの名無しさん
09/02/11 01:46:24
1は解決しました。

プロジェクトオプション
 ↓
アプリケーション
 ↓
ランタイムテーマを有効にする

ですね。
厨な感じでスマン・・・。

321:デフォルトの名無しさん
09/02/11 21:41:33
319だけど、3.も一応解決した。コンポーネントはもう一回作り直す必要があるみたい。
コンポーネント自体はコードのみで動くからそんなに大変ではないけれど、面倒と言えば面倒。
イベントの引数などが変わってるから、殆どの場合、書き直す必要があるから仕方がないのかもしれない。

ただし、注意点があって、コンポーネントのインストール、削除、を繰り返してると、
レジストリにゴミが残る。これが残ってると、一般保護違反が起きてコンポーネントのインストールが出来なくなる。
その場合には、レジストリエディタでコンポーネントの名前で検索、その項目を削除してやる必要がある。

2はまだ試してないけど、プロジェクトでリンクしているライブラリをチェックし直してみようと思ってる。

こんどは、

[BCC32 エラー] systvar.h(198): E2316 'data' は 'WideString' のメンバではない
[BCC32 エラー] systvar.h(327): E2316 'data' は 'WideString' のメンバではない

というエラーが出るようになった。文字列周りはかなり変わってるから、バグが潜んでるのかも知れない。

322:デフォルトの名無しさん
09/02/17 15:01:24
プログラム初心者です。

C++Builder2006でAPIを使ったアプリケーションを作っています。
信号入力待ちになるAPI関数を使うと信号入力があるまでアプリケーションが固まってしまい
終了のXも受け付けない状態になります。(信号入力があると動き出します)
固まらないようにプログラムを作るにはどうすれば良いのでしょう?

お願いします。


323:デフォルトの名無しさん
09/02/17 15:05:50
信号入力待ちとは何ぞや?

324:デフォルトの名無しさん
09/02/17 15:06:25
WaitForSingleなんちゃらとか?
それかスレッド

325:デフォルトの名無しさん
09/02/17 15:07:39
ヒント: 正しいアイドルループ(Application->ProcessMessages()) もしくは 別スレッド

326:デフォルトの名無しさん
09/02/17 15:40:12
>>325
いや関数から抜けてないんだろ。
それなのにProcessMessagesとか馬鹿ならレスするなよクズ

327:322
09/02/17 15:50:38
API関数はwinsockのaccept()です。

別スレッドでやってみます。
スレッドは使ったことがないので何かあったらまたお願いします。m(__)m


328:デフォルトの名無しさん
09/02/17 17:08:41
これじゃね?

>winsock2でaccept()を中断する
URLリンク(memolet.blog22.fc2.com)

329:デフォルトの名無しさん
09/02/18 11:22:07
>>Delスレ954
if (typeid(E) == typeid(EInOutError)) {
}

330:デフォルトの名無しさん
09/02/18 11:27:46
ちなみに、この比較はDelphi形式のクラスでのみ有効。
(typeid自体はC++標準だけど、本来はキャスト元の型は取れない。C++BuilderのDelphiクラスサポート用の拡張機能に依存)

331:デフォルトの名無しさん
09/02/19 06:45:13
InheritsFromでいいんでない?

332:デフォルトの名無しさん
09/02/27 02:27:10
C++Builder6のTServerSocketを使ったことある方教えてください。
フォームに張り付けた一つのTServerSocketを非同期設定で
特定ポートにてオープンし、最大100クライアント接続される
ハブ的なアプリケーションを作っています。

OnConnect毎にユニークなCustomWinSocketが落ちてきて、
それをTThreadのインスタンスへ渡し、受信はスレッドへのイベント通知、
送信はスレッドの任意タイミングという設計です。

ソケットとスレッドが1:1になるイメージで、1伝文最大100バイト、
高負荷時には600伝文/s程のやりとりなのですが、
マルチコア環境で動作させると高負荷時の受信ラッシュで
コンポーネントがお亡くなりになる現象が発生してしまいます。

各コネクションが同時に送信すると、75/100のソケットが受信イベントを受け取りますが、
以降待てど暮らせどイベントが発生しない(OnErrorでさえ!)という状況です。

WireSharkで見ると全てのコネクションでデータのやり取りが完遂し、
サーバも受信数分ACKをキチンと返しているのですが、
何故か上に上がってこない…

シングルコア上では今のところ起きていないので、
マルチコア特有の問題なのかな、と勘繰っております。
でもI/O周りは排他処理されていないわけないとも思えますし・・・
コンポーネントのマルチコア対応状況の情報があれば教えていただけませんでしょうか。
よろしくお願いします。

333:デフォルトの名無しさん
09/03/01 10:03:57
>>332
TCriticalSectionが必要なんじゃない?


334:デフォルトの名無しさん
09/03/02 09:14:14
>TCriticalSection

Crytical Section ってVCLラップされてたんだ。知らなかった。
まさかMutexはラップされてないおね?

335:デフォルトの名無しさん
09/03/02 12:39:04
C++Builder2009でFindFirstの再帰処理でファイル一覧を取りたいんですけど
Debug::Heap Block at xxxx とか Invalid address xxxが出る。
何故だろう?(BCB5では問題なし)

誰か助けて....


336:デフォルトの名無しさん
09/03/02 12:41:38
アプリのヒープサイズかスタックサイズが小さく設定されてるとか?

337:デフォルトの名無しさん
09/03/02 13:27:45
設定はBCB5もBCB2009も同じなんです。


338:デフォルトの名無しさん
09/03/02 13:44:09
同じにしたらVCLが肥大化した分、メモリ的に2009が不利じゃね?

339:デフォルトの名無しさん
09/03/02 14:01:48
ヒープサイズやスタックサイズを大きく設定するという意味ですか?

340:デフォルトの名無しさん
09/03/02 14:13:44
下にサブディレクトリのない末端のディレクトリ基点にFindFirstしてもエラー出る?
出ないならただのスタックオーバーフローじゃないかと。

341:デフォルトの名無しさん
09/03/02 14:41:59
FindFirstの再帰処理で階層が深くなった時に出る次第です。
やはりスタックオーバーフローでしょうか

342:デフォルトの名無しさん
09/03/02 14:47:37
再帰つかうなよ

343:デフォルトの名無しさん
09/03/02 14:54:26
他にいい方法あんの?

344:デフォルトの名無しさん
09/03/02 15:01:11
>再帰つかうなよ
どのように処理するとよいのでしょうか?


345:デフォルトの名無しさん
09/03/02 15:16:07
>>342はいつもの煽るだけの無知なクズとみた

346:デフォルトの名無しさん
09/03/02 15:23:35
フォルダ名をキューに入れて、findnext出来なくなったら
先頭を呼び出して奨める

347:デフォルトの名無しさん
09/03/02 15:28:46
>>346
335じゃないけど意味がわからないからもうちょい詳しく教えて

348:デフォルトの名無しさん
09/03/02 15:36:21
たとえばc:\aの仕方。

フォルダa1,a2,a3を見つけたら、
que[0][0]="a1"; que[0][1]="a2"; que[0][2]="a3";
と登録。
queの初めを呼び出して連結する。 c:\a\a1をサーチ。
フォルダb1,b2をque[1][0]="b1"; que[1][1]="b2"; と登録。
各階層ごとqueが無くなったら上へもどる。

349:デフォルトの名無しさん
09/03/02 15:42:37
御迷惑をお掛けしています、環境に問題があるのかもしれません。
BCB2009はVirtualPC上で動作させており、FindFirstしている場所は
VirtualPC上のネットワークドライブです。
この時にDebug::Heap Block at xxxx とか Invalid address xxxが出ています。
ローカルのC:\\とかを指してやると正常に動作しています。



350:デフォルトの名無しさん
09/03/02 15:52:29
仮想PCの性能不足だろ
再帰使うなよ

351:デフォルトの名無しさん
09/03/02 15:54:13
vipが今日でなくなる?vipperどもが運営に宣戦布告!!!!!

 スレリンク(news4vip板)

352:デフォルトの名無しさん
09/03/02 15:55:32
>>仮想PCの性能不足だろ
無知でした、皆様ありがとうございます。

353:デフォルトの名無しさん
09/03/02 15:58:27
>>348
335じゃないけど、ディレクトリをどんどんケツにくっつけてサーチしろってことかな?
俺もよく再帰使うからちょっと気になって横うんこしてしまったぜ

354:デフォルトの名無しさん
09/03/02 16:00:54
全ての再帰は、ループ処理で書き換えられる。 再帰定理とかいうのがある。

355:デフォルトの名無しさん
09/03/02 16:05:31
>>354
だからなんだよクズ

356:デフォルトの名無しさん
09/03/02 16:07:38
再帰定理というのがあって、再帰とループは機能的に違いがないことが証明されているそうです。
つまり、原理的には再帰で書けるコードはループで書けるんだそうです。
Scheme(LISP系の関数型プログラミング言語)だと、繰り返しはループじゃなくて再帰を使うんだそうです。

357:デフォルトの名無しさん
09/03/02 16:16:59
>>356
んじゃ>>350はなんなの?

358:デフォルトの名無しさん
09/03/02 16:21:38
違いはないから、メモリ管理をコンパイラに任せず自分でやれって事だ
再帰使うとスタックオバーフロが起こりうる

359:デフォルトの名無しさん
09/03/02 16:25:48
スタック領域はコンパイル時に決定されてしまうだろ。
だから予定外のメモリ確保が出てくる再帰使うと停止する。
動的確保なら、OSがスワップとかしてなんとかできる。

360:デフォルトの名無しさん
09/03/02 22:02:32
つかどんだけ深い階層になってるんだ?リパースポイント(FILE_ATTRIBUTE_REPARSE_POINT)とか設定されてね?

361:デフォルトの名無しさん
09/03/02 22:46:44
>356
スタックの類使わなくても書けるの?

362:デフォルトの名無しさん
09/03/03 05:37:46
まだ初心者なのですが、batファイルをC++builder6で
ボタンを押したら実行するようにしたいので

ShellExecute(Handle,"open",ファイル名.c_str,NULL,NULL,SW_SHOW);

と書いたのですが、うまくいきません・・・どなたか教えてくださいOTL

363:デフォルトの名無しさん
09/03/03 07:55:49
↑解決しました、スレ汚しすまそOTL

364:333
09/03/03 19:45:29
遅レススマヌ
>>334
ヘルプでTMutexで調べるとあるみたいだぞ?

365:334
09/03/04 09:24:55
orz

そうなんだ。
知らないから、Win32APIベタでコールしちゃってるよ。

366:332
09/03/05 19:13:35
>333
ありがとうございます。
末端のソケットに対するアクセスには排他はかけていませんでした。
同時にアクセスできるのは1スレッドだけというシングルコアに絆された思い込みがありましたので・・・。
早速試してみます。

バージョンアップ検討中の名目でEmbarcaderoにマルチコア対応状況を
ダメ元で確認してみたところ、かなり丁寧に教えてもらえました。
結論としてC++Builder6のTServerSocketとTClientSocketに関しては
マルチコア環境での動作保障をしていないとのことです。
以降のバージョンでこれらのコンポーネントが無くなっていた時点で気付くべきでしたorz

ちなみに現行バージョンではIndy系を推奨しているようです。
排他で解決できればとりあえず目的は達成されるのでここまでにしたいと思います。
ありがとうございました。

367:デフォルトの名無しさん
09/03/06 20:40:01
DLL内部の関数からDLLに組み込んだフォームやApplication->MessageBox()を呼ぶと、
通常の子ウィンドウと違ってウィンドウがタスクバーに表示されてしまいます。
DLLロード後にメインフォームのハンドルをDLLに渡してやることで
どうやらうまく行くようなのですが、手法的にスッキリしません。
もっとスマートに行う方法はないものでしょうか。BCB6を使っています。

368:デフォルトの名無しさん
09/03/06 21:15:46
>DLLロード後にメインフォームのハンドルをDLLに渡してやることで
十分スマートじゃないか?
つかそうするのが普通だろ?

369:367
09/03/06 22:25:48
>>368
やっぱりそうですか?
ロードと同時にDllEntryPoint()でなんとかできないのかなーと思ったんですが。
とりあえず邪道ではないようで安心しました。ありがとうございました。

370:デフォルトの名無しさん
09/03/06 22:55:50
ウインドウハンドルを要求するAPI関数が
どこからリンクされているか考えれば問題ないとわかるはず…

371:デフォルトの名無しさん
09/03/13 15:01:44
2007でwsprintfやlstrcpyが未定義エラーになっちゃうんだけど
オプションのどこいじればいいですか?
ちなみに、他のプロジェクトだとちゃんとコンパイル通ります。
なんか1つのプロジェクトだけこのエラーでるんです・・・

372:デフォルトの名無しさん
09/03/15 10:33:12
VistaでCB2007使い始めたんだがOpenDialogを開こうとしてもなぜか必ず失敗するorz

if(!OpenDialog1->Execute())return;
ShowMessage(OpenDialog1->FileName);

何も間違ってないはずなのに!

373:デフォルトの名無しさん
09/03/15 14:28:51
まあどう考えても
バグだらけだろ。


374:デフォルトの名無しさん
09/03/16 08:51:47
>>327
OpenDialogが開くダイアログ位置おぼえてるっぽくて、
全然開かない現象がBCB6+xpであった。

Project1.bpr/Project1.exe の組み合わせで発生して、
同じプロジェクト名だと再発するんだが、
違うプロジェクト名にしたら現象消えた。
まだ原因を追っかけてはいない。

375:デフォルトの名無しさん
09/03/16 10:39:42
2009って64ビットに対応してる?

376:デフォルトの名無しさん
09/03/16 11:09:52
対応している。


377:デフォルトの名無しさん
09/03/16 11:33:22
え”、ウソだろ?
そうなら、2009買って64bit調査開始しなきゃならんやん。

378:デフォルトの名無しさん
09/03/16 12:01:30
>>376
嘘つけ!

379:デフォルトの名無しさん
09/03/16 12:28:43
対応して犬

380:デフォルトの名無しさん
09/03/16 13:19:47
対応している言葉は間違えない
ただ、
64ビットのコードを吐くとは言っていない


381:デフォルトの名無しさん
09/03/16 13:24:34
対応してぬこ


382:デフォルトの名無しさん
09/03/16 13:40:32
>>380みたいなクズってまだいたのね

383:デフォルトの名無しさん
09/03/16 15:14:26
>>380
お前みたいなカスはレスするなよ

384:デフォルトの名無しさん
09/03/16 20:07:58
このスレはカスとクズとゲスで出来ています

385:デフォルトの名無しさん
09/03/16 22:42:12
正直、BCB2009自体がカスなんだがな。

386:デフォルトの名無しさん
09/03/16 23:13:55
もう注文しちゃいましたよ>>385
というかCCBが正しいのかな?
CODEGEAR C++ Builder2009

387:デフォルトの名無しさん
09/03/17 00:06:25
CordGuardが止まらない

388:デフォルトの名無しさん
09/03/17 00:16:31
それなんてロマンチック?

389:デフォルトの名無しさん
09/03/17 10:16:48
スペル違うし

390:デフォルトの名無しさん
09/03/17 19:46:26
くだすれの方で誰も答えてくれないのでマルチになりますが質問させて下さい
ウィキペディアに、

>C++ Builderの新しい版ではMFCやDirectXなどもサポートしている。

って書かれてるんですが、それって

URLリンク(www.clootie.ru)

このページで公開されてるライブラリ使わなくても、正規のDirectXを使えるってことですか?


391:デフォルトの名無しさん
09/03/17 22:25:52
>>390
半分は。
DirectX9が入っているが、d3d9x.libなどが無い。
チュートリアルの1は何とか何もしないでいける程度。

392:デフォルトの名無しさん
09/03/18 03:25:27
>>391
それはサポートしているとは言えないんじゃ…


393:デフォルトの名無しさん
09/03/18 16:47:33
2009のチラシが届いたんだが使い勝手はどんなもん?
未だBCB6の俺としてはそろそろOSも変わるかもしれんしバージョンアップ考えた方がいいかなと思ってるんだが

394:デフォルトの名無しさん
09/03/18 16:50:14
まだチラシが届きません(><;)

395:デフォルトの名無しさん
09/03/19 02:34:42
>>375

URLリンク(en.wikipedia.org) Builder

>A future version of CodeGear C++Builder (codenamed Commodore) will support x86-64 and create x86-64 Native code.


396:デフォルトの名無しさん
09/03/19 17:22:06
コンパイルするとたまに作成するアプリのアイコンがデフォのアイコンになっちゃうんだけど
これ原因わかる人いる?
ちなみに、他PCで同じプロジェクトを何度コンパイルしてもちゃんと指定したアイコンになってます。


397:デフォルトの名無しさん
09/03/19 17:24:06
ねーよw

398:デフォルトの名無しさん
09/03/19 17:28:40
いや、お前達みたいな奴に聞いても無駄だってわかってはいるんですが
もしかしたら同じ症状の人がいたらラッキーかなっておもったんで

399:デフォルトの名無しさん
09/03/19 17:41:03
>>396
Builderのバージョンとかは果敢機会?

400:デフォルトの名無しさん
09/03/19 18:18:30
>>399
あ、そういえばそうですよね。
まあ言っても無駄だとおもうけど。
C++Builder5 proですよ。

401:デフォルトの名無しさん
09/03/19 18:23:44
それって昔あったOSのバグだろ。


402:デフォルトの名無しさん
09/03/19 19:07:22
OSの方ですか・・・
OSはXPSP2なんですがSP1をアップデートしてSP2にしたんですが
これが途中でエラー出てあれなんだよばかなんですよね。
あ、そういやSP1のPCでやってもダメなのあったなあ
4台で試して2台が現象発生だこのやろう!!


403:デフォルトの名無しさん
09/03/19 19:09:39
C++Builder2009Proがきたぞ
インストールだ

404:デフォルトの名無しさん
09/03/19 19:32:08
2007と何処が違うのか教えてくれ

405:デフォルトの名無しさん
09/03/19 19:58:08
2007がない

406:デフォルトの名無しさん
09/03/19 20:54:26
強制的にユーザ登録ってなんだよ。
しかも登録先が英語・・・

407:デフォルトの名無しさん
09/03/19 21:16:23
何故に最新のSP3にしないのだろう。


408:デフォルトの名無しさん
09/03/19 23:41:02
C++Builder 6
ボタンとかタブのカラーは変えられないのですか?

409:デフォルトの名無しさん
09/03/20 00:00:31
BCBuilder5とC++Builder2009って同居させても問題ないよね?

410:デフォルトの名無しさん
09/03/20 00:12:19
2009のクイックスタートガイドに
実行環境っていうのがあるんだけど
作ったアプリケーションが動作する環境っていう意味なの?

411:デフォルトの名無しさん
09/03/20 01:04:25
>>409

OK

412:デフォルトの名無しさん
09/03/20 01:39:34
>>408
先に古い方からインスコ

413:デフォルトの名無しさん
09/03/20 20:52:33
別スレッドを動かしている時、スレッドが終了したかどうかを確認する方法を教えて下さい
お願いします。


414:デフォルトの名無しさん
09/03/20 21:06:00
TThread とかだったらHandleやThreadIDプロパティをチェックするとか

415:デフォルトの名無しさん
09/03/20 22:33:27
処理が終了したのか、スレッド自体が終了して消え去ったのかでだいぶ違うけど
後者なのかな。


416:デフォルトの名無しさん
09/03/20 22:56:41
>>396
遅レスだが、会社で組んだソフトがその現象になって困ったことがあったよ。
確か、プロジェクトファイル(.bprファイル)をテキストエディタで開いて、
<LIBRARIES value=だか<SPARELIBS value=の最初のlib
を最後に移動して保存して、BCB5で開いてリコンパイルしたら直ったと思うよ。

417:デフォルトの名無しさん
09/03/20 23:03:41
URLリンク(page4.auctions.yahoo.co.jp)

418:413
09/03/21 11:28:05
初心者なもので

>>414
HandleやThreadIDプロパティってどのように記述するのですか?

>>415
後者です


419:デフォルトの名無しさん
09/03/21 14:13:18
WaitForSingleObjectでTThread.Handleを待機。

420:デフォルトの名無しさん
09/03/21 17:55:06
>>418
TThread *Thread として(実際はTThreadの派生系)

方法は2種類あると思う。

1)待機関数、Handleを使う
if(WaitForSingleObject((HANDLE)Thread->Handle,0)==WAIT_TIMEOUT) { /* スレッドは実行中 */}
else { /* スレッドは終了している */}

2)OnTerminate イベントを使う
void __fastcall ThreadTerminated(TObject*){ /* スレッド終了時に処理をさせる。処理はメインスレッド内で実行される。*/}
Thread->OnTerminate=ThreadTerminated;

421:デフォルトの名無しさん
09/03/22 15:43:47
>>413
TThread.Finished プロパティを調べる。trueなら終了。

422:デフォルトの名無しさん
09/03/22 18:52:50
ちょっと質問。
C++Builder2009Pro。
アプリケーション作成時のデフォルトアイコンあるでしょ。
あれって変えられない?
デフォルトがヘッドギアってダサすぎです

423:デフォルトの名無しさん
09/03/22 20:23:44
C++Builder6だとプロジェクトのオプションとかで変えられたけど
2009は持ってない。

424:デフォルトの名無しさん
09/03/22 21:27:37
C++Builder2009でもプロジェクトオプションで変更できる

425:デフォルトの名無しさん
09/03/22 21:49:45
あーえっと。
新規プロジェクト→アイコン変える
のようにプロジェクトの作成のたびにアイコンを変えるのがめんどくさい。

アイコンを変えておく→新規プロジェクトうんぬん。

プロジェクトが作成されるたびにデフォルトで指定したアイコンになっていてほしい。

426:デフォルトの名無しさん
09/03/22 21:52:03


427:デフォルトの名無しさん
09/03/22 21:59:58
アイコンファイル自体を置換してしまえ

428:デフォルトの名無しさん
09/03/22 22:05:04
そそうか
デフォルトのオプション設定でアプリケーションの項目がないからあきらめてた
あまりにもダサいから必ず変えるように仕向けたいのか
残念だ
ありがとう

置換?できるのか?

429:デフォルトの名無しさん
09/03/24 20:16:41
どこかにアイコンのリソースはある筈だからそれを変えられればいいだよな

430:デフォルトの名無しさん
09/03/24 20:46:21
どこか知らないならレスするなよクズ

431:デフォルトの名無しさん
09/03/24 20:48:03
ヘタな釣りw

432:デフォルトの名無しさん
09/03/24 21:00:09
ちょっと探してみたけど.resや.icoの形ではないみたいだなあ
どこに組み込まれてるんだろ

まあ、そもそもそんな必要があるとは思えないけどね

433:デフォルトの名無しさん
09/03/24 22:22:18
DLLじゃね

434:デフォルトの名無しさん
09/03/24 22:35:27
そんな必死になることなのか

435:デフォルトの名無しさん
09/03/24 22:47:56
アイコンなんてクリック数回で変えられるじゃん。
だいたい、作るプログラムは全部デフォルトのままかよ。


436:デフォルトの名無しさん
09/03/24 23:11:22
別にいいじゃん
ネタとして話をしても

437:デフォルトの名無しさん
09/03/25 00:07:54
自分だけで使うものとかさ、アイコンを変更するまでもないんだけどあのアイコンはいやだから毎回変えているんだ。
WindowsフォルダのTASKMAN.EXEみたいなアイコンにしている。

438:デフォルトの名無しさん
09/03/25 14:15:53
グローバル変数の評価式だけ???やデタラメな数字になってしまうたすけてください

439:デフォルトの名無しさん
09/03/25 14:19:47
グローバル変数はなくすべきだろ、常考。

440:デフォルトの名無しさん
09/03/25 14:23:49
最適化が有効になってるんじゃねえのか。


441:デフォルトの名無しさん
09/03/25 15:42:08
もっかいBuild allしてみ

442:デフォルトの名無しさん
09/03/25 17:10:11
1行エディットして改行したただけで
それ以降のブレークポイントがみんなズレるんだけど
なんかいい方法ないかな


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch