C++Builder相談室 Part19
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/08/01(金) 16:30:32※2008/07よりCodeGear(Borland IDE/DB部門)はBorlandからEmbarcaderoに移動しました
【前スレ】
C++Builder相談室 Part18
http://pc11.2ch.net/test/read.cgi/tech/1188607282/
過去スレ・関連サイトは>>2-7あたり。
※Borland C++ Compiler 5.5.1についての質問は以下のスレへ
タダで使えるBorland C++ Part5
http://pc11.2ch.net/test/read.cgi/tech/1135127048/
※BDS(Borland Developer Studio)の総合スレはこちら
Borland Developer Studio 2006 No.13
http://pc11.2ch.net/test/read.cgi/tech/1175861395/
※CodeGear(Borland/Embarcadero)関連はこちら
【CodeGear】Embarcaderoオッチャ その10
http://pc11.2ch.net/test/read.cgi/tech/1216250111/
<関連スレ>
くだすれC++Builder(超初心者用)その3
http://pc11.2ch.net/test/read.cgi/tech/1171219191/
[Tips]Borland C++Builder ちょいテク No.01
http://pc11.2ch.net/test/read.cgi/tech/1154580209/
【Delphi】 Indyコンポーネント 【C++Builder】
http://pc8.2ch.net/test/read.cgi/tech/1093654251/
0233何をしたいのかを具体的に書けば有効な回答が得られるのでは?
2008/11/25(火) 22:38:530234デフォルトの名無しさん
2008/12/03(水) 11:42:25指定コントロールのヒントを手動で表示される方法を教えてください
0235デフォルトの名無しさん
2008/12/03(水) 22:57:470236デフォルトの名無しさん
2008/12/04(木) 10:40:48なるほど。
まずはちょっと試してみますありがとう
0237デフォルトの名無しさん
2008/12/04(木) 22:47:38ローカルはOK、リモートでもコネクションは繋がってテーブル名は見える。
が、テーブルを開こうとするとエラー65535がでて繋がらない。
0238デフォルトの名無しさん
2008/12/08(月) 17:23:250
0
0
0
1
1
0
0
1
1
・
・
・
1
1
0
0
0
とこのような感じで0と1が何千行と出されているのですがメモの上から順番にforで回して
1が出た場合その行数とそこから1がどれだけ続いたかカウントしていくプログラムを作成したいのですが
どういったようにつくっていけばよいのでしょうか?
0239デフォルトの名無しさん
2008/12/08(月) 17:26:46先ず何が問題?
・C++文法
・ファイル操作
・ロジックの書き方
0240デフォルトの名無しさん
2008/12/08(月) 17:34:38それってMemoでなくても配列の中に1がいくつ続いているかを
数えるのと同じ問題だよね
0241デフォルトの名無しさん
2008/12/08(月) 18:05:48お前等が馬鹿すぎてワロタ
知らないならレスするなよクズ共
>>238は普通にTMemoでどうやって書くかを聞いてんだろw
Memo->Lines->Count
Memo->Lines->Strings[i]
0242デフォルトの名無しさん
2008/12/08(月) 18:10:12??
0243デフォルトの名無しさん
2008/12/08(月) 18:12:350244デフォルトの名無しさん
2008/12/08(月) 18:18:490245デフォルトの名無しさん
2008/12/08(月) 22:00:28何がわからないのかを書いていない。
基本的に質問の仕方を知らない。
きっと何がわからないのかさえわからないのだろう。
そんな人は、たぶん論理的に組み上げていく
プログラミングということはムリなのではないかと思う。
丸投げで全部教えてもらいたかったら
C/C++の宿題を片付けます 119代目
http://pc11.2ch.net/test/read.cgi/tech/1228313292/
こっちで聞くべき
0246デフォルトの名無しさん
2008/12/09(火) 10:29:15答え方がわからないならレスしないで下さい。ウザイだけです。
0247デフォルトの名無しさん
2008/12/09(火) 11:07:58おいばかやめろ
Win32APIスレから出てこないでください
0248デフォルトの名無しさん
2008/12/09(火) 15:57:060249デフォルトの名無しさん
2008/12/09(火) 23:48:23今C++Builder動く環境にないので疑似コードで。
変数start_posに-1を代入。(-1は「カウントしてない」というマーキング)
変数iを使って、メモ1の最初から最後までループを回す。{
start_posの値が-1で、{
メモ1の行iの内容が"1"なら、{
start_posにiの値を代入。
}
}
そうじゃなくて、{
メモ1の行iの内容が"0"なら、{
start_posの値が"1"の開始位置を指しているので、これを表示。
そして(i-start_pos)の計算結果が"1"の続いた個数なので、これも表示。
次のカウントのために、start_posに-1を代入する。
}
}
}
連続したデータを処理するときはいろんなやり方があるけど、
・データの変わり目に注目する。("1"の始まりと、"1"の終わり="0"の始まり)
・変わり目でプログラムで行う処理を切り替える。(カウント中と、結果表示&カウント終了)
とするのが一つの方法。
0250デフォルトの名無しさん
2008/12/14(日) 08:53:260251デフォルトの名無しさん
2008/12/15(月) 00:47:490252デフォルトの名無しさん
2008/12/15(月) 00:51:00ちゃんとした店なら買う時に学生証見せてなんか書かなきゃいけないと思うけど
0253デフォルトの名無しさん
2008/12/15(月) 14:15:38あれ今もあるのかな
0254デフォルトの名無しさん
2008/12/15(月) 17:20:08dclusr.dpkを読み込もうとすると、これがないって
えらーになるんですが、
Delphiをインストールしないとダメですか?
0255デフォルトの名無しさん
2008/12/15(月) 17:22:200256デフォルトの名無しさん
2008/12/18(木) 14:45:240257デフォルトの名無しさん
2008/12/18(木) 14:51:33TScreen::Cursors
0258デフォルトの名無しさん
2008/12/18(木) 15:01:00そこにLoadCursorでぶち込むんですよね?
それってリソースに予めないとダメですよね?
0259デフォルトの名無しさん
2008/12/18(木) 15:07:370260デフォルトの名無しさん
2008/12/18(木) 15:09:12ただし、現在はLoadCursorやLoadCursorFromFileは後方互換性のためのAPIで、LoadImageが推奨されてる。
0261デフォルトの名無しさん
2008/12/18(木) 15:10:58そんなのがあったんですかあああああああああああああああ!!
ああ、おかげで思った通りのアレができますた!
ありがとうございます。
0262デフォルトの名無しさん
2008/12/18(木) 15:14:15補足までありがとう。
LoadImageもぐぐってみます。
0263デフォルトの名無しさん
2008/12/19(金) 22:03:33何か良い方法ないですか?
0264デフォルトの名無しさん
2008/12/19(金) 23:51:11逆なら枚挙に暇が無いが・・・
0265デフォルトの名無しさん
2008/12/20(土) 00:08:04RADなところかな。
0266デフォルトの名無しさん
2008/12/20(土) 02:09:12ここにあるソースをコンパイルしようとしたのですが、
上手くいかないので助言お願いします。
コンパイルしたいのは下の3つです。
graph.h
planar.h
planarq.c
コンパイルの環境はBCC55でCPADからビルドしてます。
ソースに問題があるのか、
環境が悪いのかだけでも分かれば教えてください。
0267デフォルトの名無しさん
2008/12/20(土) 02:16:36ttp://pc11.2ch.net/test/read.cgi/tech/1135127048/
でも何がどういう風にうまくいかないのかをきちんと書かないと誰も答えてくれないと思うが。
0268デフォルトの名無しさん
2008/12/20(土) 14:12:37地獄のようにコードを記述する必要がある。
Builderなら部品をちょこちょこと置いて
コードをちょこっと記述すればエエ。
工数が1/10くらいになるわ。
0269デフォルトの名無しさん
2008/12/22(月) 17:23:26BCB6から2007なら簡単です。
2007で「BCB6のプロジェクトファイル(*.bpr)」を読み込んで
2007のプロジェクトファイル(*.cbproj)に書き出して、メイクするだけでOKである。
俺も2009のユニコード関係の処理で困っている。
0270デフォルトの名無しさん
2008/12/23(火) 17:02:36プロジェクト・オプションにしなかったんだろう。
0271デフォルトの名無しさん
2008/12/23(火) 22:02:52自分が苦労したのは、AnsiString::c_strをAnsiString::t_strにしたりとか、VCL関数に渡す文字列リテラルをワイド文字列にしたくらいかな。
この辺は、Rubyでスクリプトを書いて何とかした。
TRegIniFileやTIniFileがほとんどだったから、ReadStringとかが見つかったらワイド文字列に変換するって感じ。
>>270
多分、両方メンテしなければならないからかな。
プロジェクトオプションで分けて欲しかったのは同意。
0272デフォルトの名無しさん
2008/12/25(木) 13:55:440273デフォルトの名無しさん
2008/12/25(木) 16:12:29Panelのサイズを調べて、Bevelとかの幅をそこから引いて、実際の表示領域のサイズを出す
PanelのFontでCaptionに設定してある文字列のサイズを調べる
両者を比べる
0274デフォルトの名無しさん
2008/12/25(木) 16:21:11文字列のサイズはどうやって調べればいいんですか?
0275デフォルトの名無しさん
2008/12/25(木) 16:24:170276デフォルトの名無しさん
2008/12/25(木) 16:26:16知らないならレスしないで下さい。ウザイだけです。
0277デフォルトの名無しさん
2008/12/25(木) 16:29:10正解をレスしようと思ったけどやめたw
ヒント:Win32APIの文字列描画系APIをパラメータを含めて片っ端から調べろ。
0278デフォルトの名無しさん
2008/12/25(木) 16:39:08あれれ?
なんだただのでじゃヴか
0279デフォルトの名無しさん
2008/12/25(木) 17:12:10これって貼り付いてるアンチだとオモ。
質問書いたらこれ書かれたことある。
アンチは加齢にスルーw
0280273
2008/12/25(木) 17:28:32TCanvasに、自分(TCanvas)に設定されているTFontを使って、指定した
文字列を描画する際のサイズを調べるメソッドがある(と思った)
>>279
というか、そのコピペはプログラミング系のスレとかでよく見る
アンチ以前の、単なる茶々入れも多いよ。カレーにするーには同意
0281デフォルトの名無しさん
2008/12/25(木) 17:33:32あった。
TextExtentが領域、TextHeightが高さ、TextWidthが幅を返すね。
0282デフォルトの名無しさん
2008/12/25(木) 18:15:13Types.hppだと struct TRect : public RECT ってなってるし、派生って事知らないといろいろ面倒だと思うんだが‥‥
0283デフォルトの名無しさん
2008/12/25(木) 22:23:08それはWinAPIスレで流行ってますよ
是非いらっしゃってください
お待ちしております
0284デフォルトの名無しさん
2008/12/30(火) 17:07:05一つの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です。
よろしくお願いします。
0285デフォルトの名無しさん
2008/12/30(火) 17:28:000286デフォルトの名無しさん
2008/12/30(火) 18:13:30Memo1->Lines->Add(AnsiString().sprintf("%d,%d,%d,%d,%d\n",A1,A2,A3,A4,A5));
のように書ける
0287デフォルトの名無しさん
2008/12/30(火) 18:57:46でも”c言語と同じくmemoに書き出す”というのがイミフメ
あとC言語系のプログラマーなら、アルファベットの大文字小文字はしっかり使い分ける
癖は付けた方がいいとおも
0288デフォルトの名無しさん
2008/12/30(火) 18:58:56コピペしただけだから"\n"まで入ってしまってたし
"%f"な
0289デフォルトの名無しさん
2008/12/30(火) 19:09:39方法を変えてやってみたらうまく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));
}
どうすれば普通の数値になるかアドバイスお願いします。
0290289
2008/12/30(火) 21:22:120291デフォルトの名無しさん
2008/12/31(水) 00:52:220292デフォルトの名無しさん
2009/01/08(木) 17:26:060293デフォルトの名無しさん
2009/01/10(土) 14:33:32既存コンポーネントも強化と書かれてますがどんなもんでしょう
2007くらいまでは案内の手紙も来てたのになー
0294デフォルトの名無しさん
2009/01/10(土) 15:50:460295デフォルトの名無しさん
2009/01/10(土) 21:08:240296デフォルトの名無しさん
2009/01/10(土) 21:40:55typedef 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) {
に変えれば落ちない)
まあメンバ関数へのポインタを変数と直接比較なんて普通やらんが。
他にも落ちる時があるんだが
こっちはどういう状態で再現するのかわからないし
そもそもコンパイルエラー時だけなのでなんとかなるんだけど。
0297デフォルトの名無しさん
2009/01/11(日) 00:30:35BCC6.1.0だと落ちないね
0298デフォルトの名無しさん
2009/01/14(水) 20:15:40VC2005 で作られたコンソールアプリをコンパイルしようとしたのですが、
wcha_t と _stprintf_s を使っているところが通りません。どうすればよいでしょうか?
0299デフォルトの名無しさん
2009/01/14(水) 20:57:44_stprintf_sはしらないけど、C言語標準の関数で置き換えれば?
たとえばだ。
#define _stprintf_s(・・・) sprintf(・・・)
など。
0300デフォルトの名無しさん
2009/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;
}
0301298
2009/01/14(水) 22:42:27ここでVCの話をするとおかしくなるとは思いますが、
VCでしたら _stprintf と書いておき
プロジェクトオプションで...
マルチバイトキャラセット(MBCS)を選べば、
_stprintf は sprintf に置き換えられ、
ユニコードキャラセット(UNICODE)を選べば
_stprintf_s は swprintf に置き換えられるのですが、
CodeGear RAD Studio 2007 (C++Builder) には、
こういうマクロ定義はされていないのでしょうか。
こういった作業はすべてユーザーにゆだねられているのでしょうか?
0302デフォルトの名無しさん
2009/01/15(木) 11:39:30tchar.hインクルードしてる?
0303デフォルトの名無しさん
2009/01/15(木) 16:50:00プラットフォームSDK付属のだとリンクエラーになります。
B++Builder用はどこにありますか?
0304デフォルトの名無しさん
2009/01/15(木) 16:53:26http://www.clootie.ru/cbuilder/index.html
これとかは?
使ったこと無いからわからないけど
0305デフォルトの名無しさん
2009/01/15(木) 16:55:47ありがとうございます。
このサイトにしっかりとありました(;´Д`)
ttp://www.clootie.ru/cbuilder/index.html#DX_CBuilder_SDKs
0306デフォルトの名無しさん
2009/01/20(火) 20:53:45C++Builder 6 Enterprise
ftp://ftpd.codegear.com/devsupport/cbuilder/cb6/japanese/cb6_upd4_ent.exe
C++Builder 6 Professional
ftp://ftpd.codegear.com/devsupport/cbuilder/cb6/japanese/cb6_upd4_pro.exe
C++Builder 6 Personal
ftp://ftpd.codegear.com/devsupport/cbuilder/cb6/japanese/cb6_upd4_pers.exe
Readme
ftp://ftpd.codegear.com/devsupport/cbuilder/cb6/japanese/readme_64.txt
0307デフォルトの名無しさん
2009/01/22(木) 15:31:260308デフォルトの名無しさん
2009/01/22(木) 17:40:38そのDIBが
もし単なる配列なら
・TBitmap::ScanLineでアドレスを取得して、自分で一行ずつDIB→TBitmapへコピー
・StretchDIBits()を使ってDIB→TBitmapへ転送
もしDIBSectionみたいにHDCが利用できるなら
・BitBlt()やStretchBlt()でDIB→TBitmapへ転送
パレット付き画像だとちょっと手間が増える。
0309デフォルトの名無しさん
2009/02/03(火) 19:52:260310デフォルトの名無しさん
2009/02/06(金) 15:52:23普通に動作はするんだけど64bitアプリ作れますか?
0311デフォルトの名無しさん
2009/02/06(金) 18:40:070312デフォルトの名無しさん
2009/02/07(土) 10:32:460313デフォルトの名無しさん
2009/02/07(土) 22:14:310314デフォルトの名無しさん
2009/02/09(月) 11:10:380315デフォルトの名無しさん
2009/02/10(火) 12:55:23BCB5ではうまく行ってるのですが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で行入れ替えする時にいい方法があったら教えてください。
0316デフォルトの名無しさん
2009/02/10(火) 12:58:200317デフォルトの名無しさん
2009/02/10(火) 13:05:30知らないならレスするなクズ
0318デフォルトの名無しさん
2009/02/10(火) 20:04:020319デフォルトの名無しさん
2009/02/11(水) 00:39:57どうしてもわからないところがある。
1.XP Style の見た目
プロジェクトを新規で立ち上げると、XP のスタイルになるんだけど、
古いプロジェクトを読み込むとどうしても出来ない。
TXPMan あたりなのかなぁ、と思うんだけど、良くわからん。
2.リンク時に VCLJPG.BPI がないというエラーがでる
普通にコンパイルするだけでこれが見つからないというエラーがでる。
検索をかけるとどうやら無くなったらしいけど、特に Jpeg を使っていない
ようなプロジェクトでも発生する。
3.コンポーネントのインストール
以前作ったコンポーネントをインストールするやりかたがイマイチわからない。
3.はがんばれば解決出来そうだけど、1と2、特に2はちょっと解決できそうにない。
解決方法をご存じの方がいたら、ぜひ教えてください。
0320デフォルトの名無しさん
2009/02/11(水) 01:46:24プロジェクトオプション
↓
アプリケーション
↓
ランタイムテーマを有効にする
ですね。
厨な感じでスマン・・・。
0321デフォルトの名無しさん
2009/02/11(水) 21:41:33コンポーネント自体はコードのみで動くからそんなに大変ではないけれど、面倒と言えば面倒。
イベントの引数などが変わってるから、殆どの場合、書き直す必要があるから仕方がないのかもしれない。
ただし、注意点があって、コンポーネントのインストール、削除、を繰り返してると、
レジストリにゴミが残る。これが残ってると、一般保護違反が起きてコンポーネントのインストールが出来なくなる。
その場合には、レジストリエディタでコンポーネントの名前で検索、その項目を削除してやる必要がある。
2はまだ試してないけど、プロジェクトでリンクしているライブラリをチェックし直してみようと思ってる。
こんどは、
[BCC32 エラー] systvar.h(198): E2316 'data' は 'WideString' のメンバではない
[BCC32 エラー] systvar.h(327): E2316 'data' は 'WideString' のメンバではない
というエラーが出るようになった。文字列周りはかなり変わってるから、バグが潜んでるのかも知れない。
0322デフォルトの名無しさん
2009/02/17(火) 15:01:24C++Builder2006でAPIを使ったアプリケーションを作っています。
信号入力待ちになるAPI関数を使うと信号入力があるまでアプリケーションが固まってしまい
終了のXも受け付けない状態になります。(信号入力があると動き出します)
固まらないようにプログラムを作るにはどうすれば良いのでしょう?
お願いします。
0323デフォルトの名無しさん
2009/02/17(火) 15:05:500324デフォルトの名無しさん
2009/02/17(火) 15:06:25それかスレッド
0325デフォルトの名無しさん
2009/02/17(火) 15:07:390326デフォルトの名無しさん
2009/02/17(火) 15:40:12いや関数から抜けてないんだろ。
それなのにProcessMessagesとか馬鹿ならレスするなよクズ
0327322
2009/02/17(火) 15:50:38別スレッドでやってみます。
スレッドは使ったことがないので何かあったらまたお願いします。m(__)m
0328デフォルトの名無しさん
2009/02/17(火) 17:08:41>winsock2でaccept()を中断する
>ttp://memolet.blog22.fc2.com/blog-category-41.html
0329デフォルトの名無しさん
2009/02/18(水) 11:22:07if (typeid(E) == typeid(EInOutError)) {
}
0330デフォルトの名無しさん
2009/02/18(水) 11:27:46(typeid自体はC++標準だけど、本来はキャスト元の型は取れない。C++BuilderのDelphiクラスサポート用の拡張機能に依存)
0331デフォルトの名無しさん
2009/02/19(木) 06:45:130332デフォルトの名無しさん
2009/02/27(金) 02:27:10フォームに張り付けた一つのTServerSocketを非同期設定で
特定ポートにてオープンし、最大100クライアント接続される
ハブ的なアプリケーションを作っています。
OnConnect毎にユニークなCustomWinSocketが落ちてきて、
それをTThreadのインスタンスへ渡し、受信はスレッドへのイベント通知、
送信はスレッドの任意タイミングという設計です。
ソケットとスレッドが1:1になるイメージで、1伝文最大100バイト、
高負荷時には600伝文/s程のやりとりなのですが、
マルチコア環境で動作させると高負荷時の受信ラッシュで
コンポーネントがお亡くなりになる現象が発生してしまいます。
各コネクションが同時に送信すると、75/100のソケットが受信イベントを受け取りますが、
以降待てど暮らせどイベントが発生しない(OnErrorでさえ!)という状況です。
WireSharkで見ると全てのコネクションでデータのやり取りが完遂し、
サーバも受信数分ACKをキチンと返しているのですが、
何故か上に上がってこない…
シングルコア上では今のところ起きていないので、
マルチコア特有の問題なのかな、と勘繰っております。
でもI/O周りは排他処理されていないわけないとも思えますし・・・
コンポーネントのマルチコア対応状況の情報があれば教えていただけませんでしょうか。
よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています