C++Builder相談室 Part19
レス数が950を超えています。1000を超えると書き込みができなくなります。
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/
0002デフォルトの名無しさん
2008/08/01(金) 16:31:53公式サイト
http://www.codegear.com/jp/products/cppbuilder
builder-ML 過去ログブラウザ
http://leed.issp.u-tokyo.ac.jp/~takeuchi/builder/browse.cgi
http://www.sfdata.jp/ML/cbuilder/newlog.php?ml=cbuilder
C++Builder メーリングリスト
http://www.sfdata.jp/ML/menu.php?ml=cbuilder
C++Builder ML
http://www.jpdoc.com/cbuilder/
nifty/Delphi & Borland Users Forum
http://fdelphi.info/
BCBWiki
http://wiki.livedoor.jp/a7m/d/FrontPage
<Update>
BDSアップデート
http://www.codegear.com/downloads/regusers/devstudio
BCB6/US SP1 は BCB6/JP 製品版に含まれています。
C++Builder 6 Update4 日本語版
C++Builder 6 Linker Update
http://www.codegear.com/downloads/regusers/cppbuilder
0003デフォルトの名無しさん
2008/08/01(金) 16:32:38Borland C++Builder最新リンク2005(リンク集)
http://www2.famille.ne.jp/~akio1998/l_cpb.html
C++Builderのお部屋(Tips系)
http://www.ne.jp/asahi/nagoya/ahomaro/builder/
C++Builderによるプログラミング(Tips系)
http://www.geocities.co.jp/SiliconValley/7201/
BCB Tips(Tips系)
http://members.at.infoseek.co.jp/mchos/bcb_tips/
C++Builder Tips(Tips系)
http://www.geocities.co.jp/SiliconValley/4805/bcbtips/bcbtips000.htm
C++Builderのお部屋(Tips系)
http://www.ne.jp/asahi/nagoya/ahomaro/builder/index.html
Wininet Programing(Tips系)
http://www.geocities.co.jp/SiliconValley-PaloAlto/1512/
Dr.Bob's C++Builder Gate(Tips系)
http://www.drbob42.com/cbuilder/index.htm
猫でもわかるプログラミング(一般)
http://www.kumei.ne.jp/c_lang/
Delphian World(コンポーネントライブラリ)
<行方不明>
DelWiki 避難所。
http://delwiki.info/
0004デフォルトの名無しさん
2008/08/01(金) 16:34:04<<フリー>>
フリーカーソル無効化アドイン
http://homepage1.nifty.com/fuu/software/nonfreecursor.htm
GExperts−IDE拡張
http://www.gexperts.org/
BorCVS - IDEにCVSを統合
http://borcvs.sourceforge.net/
Indy
http://www.indyproject.org/
JCL
http://homepages.borland.com/jedi/jcl/
JVCL
http://homepages.borland.com/jedi/jvcl/
TurboPower
http://sourceforge.net/users/tpsfadmin/
<<有料>>
TMS Component Studio
http://www.tmssoftware.com/
0005デフォルトの名無しさん
2008/08/01(金) 16:35:23C++Builder 6コンポーネント活用ガイド&実践プログラミング
Vol.1
http://www.amazon.co.jp/exec/obidos/ASIN/4877830618
Vol.2 実践テクニック編
http://www.amazon.co.jp/exec/obidos/ASIN/4877830626
Vol.3 データベーステクニック編
http://www.amazon.co.jp/exec/obidos/ASIN/4877830634
Vol.4 インターネット編1
http://www.amazon.co.jp/exec/obidos/ASIN/4877831061
Vol.5 インターネット編2
http://www.amazon.co.jp/exec/obidos/ASIN/4877831088
Vol.6 グラフィックス・画像処理編1
http://www.amazon.co.jp/exec/obidos/ASIN/4877831231
Vol.7 グラフィックス・画像処理編2
http://www.amazon.co.jp/exec/obidos/ASIN/487783124X
※BCBの定番解説書。BCBを購入したけど何から勉強したら良いか
判らないという人は取り合えずVol2から読みましょう。
※データベースやインターネット関連はDelphiの解説書も役に立ちます。
0006デフォルトの名無しさん
2008/08/01(金) 16:36:02C++Builder相談室
http://piza2.2ch.net/tech/kako/969/969458279.html
新C++Builder相談室(C++Builder相談室 Part2)
http://pc.2ch.net/tech/kako/997/997074601.html
C Builder相談室 Part3
http://pc3.2ch.net/tech/kako/1016/10160/1016065855.html
C++Builder相談室 Part4
http://pc5.2ch.net/tech/kako/1035/10355/1035596146.html
C++Builder相談室 Part5
http://pc5.2ch.net/tech/kako/1045/10455/1045542179.html
C++Builder相談室 Part6
http://pc5.2ch.net/tech/kako/1054/10542/1054280736.html
C++Builder相談室 Part7
http://pc5.2ch.net/tech/kako/1061/10615/1061594556.html
<無償版>
Turbo C++ Explorer (C++Builder2006(10)相当)
http://www.turboexplorer.com/jp/cpp
116 名前:デフォルトの名無しさん[sage] 投稿日:2006/11/04(土) 17:25:13
ttp://beeography.wordpress.com/2006/09/12/just-wanna-let-you-know/
ここに書いてある方法でTurbo Exprorerでも合法にコンポ入れれるよ
117 名前:デフォルトの名無しさん[sage] 投稿日:2006/11/04(土) 18:02:21
あとこれ。
dclusr経由のコンポーネントインストールが、ライセンス違反かどうかの話。
ttp://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200609/06090014.txt
0007デフォルトの名無しさん
2008/08/04(月) 11:18:22コンパイルエラーになっちゃうんだけど
0008デフォルトの名無しさん
2008/08/05(火) 00:51:260009デフォルトの名無しさん
2008/08/05(火) 10:09:40ヘルプにはしっかりと出てるんですよねこれ。
0010デフォルトの名無しさん
2008/08/05(火) 11:06:570011デフォルトの名無しさん
2008/08/05(火) 21:50:070012デフォルトの名無しさん
2008/08/06(水) 10:22:27m9(^Д^)プギャーーーッ
0013デフォルトの名無しさん
2008/08/06(水) 15:00:010014デフォルトの名無しさん
2008/08/07(木) 11:52:010015デフォルトの名無しさん
2008/08/09(土) 23:12:14shlwapi.hが古いのとshlwapi.dllのインポートライブラリがないのが原因
MSからPlatformSDK落としてきて最新のshlwapi.hを入手するか
shlwapi.hに LWSTDAPI_(int) StrCmpLogicalW(LPCWSTR psz1, LPCWSTR psz2); 追加
implib.exe shlwapi.lib shlwapi.dll でインポートライブラリを作り
tlib.exe lib\import32.lib + shlwapi.lib 上記dll内のAPIをimport32.libに追加
これでいけた。
0016デフォルトの名無しさん
2008/08/12(火) 16:45:580017デフォルトの名無しさん
2008/08/12(火) 19:51:030018デフォルトの名無しさん
2008/08/13(水) 14:00:38田舎者は知らなかっただろうけど。
0019デフォルトの名無しさん
2008/08/13(水) 22:52:49実行ファイル(C:\test.exe)のショートカットを作り、
そのショートカットを適当な所(C:\tekito\test.exeへのショートカット)に移動し、
ショートカットをダブルクリックして実行したとします。
その時、'C:\tekito\test.exeへのショートカット'文字列を得たいのですが、どうすればいいでしょうか。
0020デフォルトの名無しさん
2008/08/13(水) 23:11:160021デフォルトの名無しさん
2008/08/14(木) 08:52:11意味が良くわからん。
実行ファイルのショートカットを作って、
その実行ファイルを別のところに移動するの?
移動するのはショートカットの方?
ショートカットを移動してそのショートカットをダブルクリックして実行したときに、
その呼び出し元のショートカットのパスを知りたいって事か?
0022デフォルトの名無しさん
2008/08/14(木) 11:32:11ヘッダーに
typedef struct{
String ss;
int aa;
} GG;
があって
ヘッダのprivateに実体をとったときに
GG g[2];
cppで↓みたいな感じで代入ってできないですかね?
g[0]=GG{ "abc", 0 };
0023デフォルトの名無しさん
2008/08/14(木) 11:35:07GG(String a, int b) : ss(a), aa(b) {}
String ss;
int aa;
};
g[0] = GG("abc", 0);
0024デフォルトの名無しさん
2008/08/14(木) 11:36:000025デフォルトの名無しさん
2008/08/14(木) 11:51:23GG(String a, int b) : ss(a), aa(b) {}の行でエラーが出ました><
0026デフォルトの名無しさん
2008/08/14(木) 12:01:19struct GG{
GG(String a, int b) : ss(a), aa(b) {}
String ss;
int aa;
};
GG g[2]; ←ここでエラー
g[0] = GG("abc", 0);
0027デフォルトの名無しさん
2008/08/14(木) 12:07:180028デフォルトの名無しさん
2008/08/14(木) 13:59:53を
char ss[24];
ってしたときのコンストラクタの記述を教えてください><
0029デフォルトの名無しさん
2008/08/14(木) 14:48:590030デフォルトの名無しさん
2008/08/14(木) 14:49:340031デフォルトの名無しさん
2008/08/14(木) 21:09:44>>20,21 返信ありがとうございます。
> ショートカットを移動してそのショートカットをダブルクリックして実行したときに、
> その呼び出し元のショートカットのパスを知りたいって事か?
そうです。
0032デフォルトの名無しさん
2008/08/14(木) 21:14:56それを知ってなにをしたいのか書けば代案とか出せるんだが。
コマンドラインスイッチやカレントディレクトリで代用とかはできんの?
0033デフォルトの名無しさん
2008/08/16(土) 14:06:49返信ありがとうございます。
参考にさせて頂き、コマンドラインパラメータで代用しました。
作ったソフト(RandExec.exe)は以下のような物です。
例えば、「RandExec.exe C:\Data\!*.wav」として実行すると、
「C:\Data\」ディレクトリにある、拡張子「wav」のファイルのうち、
先頭に「!」が付いている名前のファイルをランダムで1つ実行します。
FindFirst()のお陰でワイルドカード文字が使えるのですが、
残念ながら、「RandExec.exe C:\*\start.wav」のように、
パスの途中にはワイルドカード文字を使えないようです。
これを実現したいのですが、どういう手段が考えられるでしょうか。
適したコンポーネントはご存じないでしょうか。
0034デフォルトの名無しさん
2008/08/16(土) 14:28:08普通に実装したら?
まず、ワイルドカード (* ?) を探して、その手前の \ を探す、
ワイルドカードの次の \ を探す、\ で挟まれてればそれはフォルダのワイルドカード、
最初の \ の手前までのフォルダで FindFirst して上のワイルドカードと一致するか検索、
ってやれば簡単にできそう。
0035デフォルトの名無しさん
2008/08/16(土) 16:22:51strtokとかでC: Data sound snd* snd*.wavに分割
先頭から次の要素接続>FindFirst/FindNextで複数マッチした場合はその中からランダムに選択、でまた次の要素接続ってやってけば簡単だろ
0036デフォルトの名無しさん
2008/08/20(水) 14:06:58マニフェスト記述例やデータ保存箇所のルールなどBCBやDelphiで
作成したプログラムに対しても参考になるような情報が書いてある
書籍って何か無いでしょうか?(CマガのMookは買いました)
0037デフォルトの名無しさん
2008/08/21(木) 22:03:33ttp://dn.codegear.com/jp/article/34159
tp://bekins.borland.com/groups/jp/events/devcamp/04/devcamp04_g4.pdf
003836
2008/08/22(金) 15:17:18参考になりました
これを足がかりに少し進めてみます
0039デフォルトの名無しさん
2008/08/22(金) 15:26:46exeにマウス右クリックすると、
「マニフェスト ファイルを作成」
というポップアップメニューが出るお。
0040デフォルトの名無しさん
2008/08/22(金) 17:10:39社内でSP3を入れたXPを探してきて見てみたけど・・・・出なかった。
何が要因でそれが表示されるようになるんだろう。
004139
2008/08/22(金) 17:17:31自分も知りたい。
0042デフォルトの名無しさん
2008/08/25(月) 12:51:45VisualStudio入ってない?
004339
2008/08/25(月) 12:56:350044デフォルトの名無しさん
2008/08/26(火) 19:37:23せっかく2009が発売されるのに・・・
0045デフォルトの名無しさん
2008/08/26(火) 19:53:04http://pc11.2ch.net/test/read.cgi/tech/1219157228/
0046デフォルトの名無しさん
2008/08/27(水) 10:04:48値段たっかいなー
ご祝儀にしてもこれはちょっと辛いわ
0047デフォルトの名無しさん
2008/08/27(水) 12:31:05CodeGuardを使いたいのですが、大量にログが出てしまいました。
見てみるとどうもライブラリ内のAnsiString::cat_printfらしく、とりあえず
ライブラリ内と標準ライブラリのチェックだけはずしたいのですが
方法はないでしょうか?
※include の前に #pragma option -vG- を入れても引っかかって
しまいました。
0048デフォルトの名無しさん
2008/08/27(水) 17:15:53>メモリストリームの拡大中にメモリが足りなくなりました
エラーが出た場合、
どういう対処がありますでしょうか?
0049デフォルトの名無しさん
2008/08/27(水) 22:29:08その不具合に直接の関係があるかどうかは判らないけど、BCB6ではメモリ管理周りに不具合が残されたままなので
ひとまずfastmmをプロジェクトに追加してみたらどう?
005048
2008/08/28(木) 08:42:56fastmmをプロジェクトに追加したら治りマスタ。
今のfastmmってDLLも不要になってるんですね。
自分がfastmmが嫌いなのは、プロジェクトに組み込まれたか組み込まれてないか、見た目で分からないんですよね。
判定する方法はないんでしょうか?
0051デフォルトの名無しさん
2008/08/28(木) 17:21:40Form1からForm2を表示させたら何故かForm2がfsStayOnTopみたいになって
Form2が常にトップで表示されるんですが何故ですか?
両方ともFormStyleはfsNormalです。
0052デフォルトの名無しさん
2008/08/28(木) 17:23:020053デフォルトの名無しさん
2008/08/28(木) 17:30:080054デフォルトの名無しさん
2008/08/28(木) 17:35:210055デフォルトの名無しさん
2008/08/28(木) 17:39:22ちなみに、モーダルだと下フォーム(Form1)をクリってもアクティブにならないですが
>>51の現象はForm1はアクティブにはなるのですがForm2が常に前面にあるんですう
うーん、今までBuilder5でやってたのと同じなんですが、2007で仕様が変わったとか?
0056デフォルトの名無しさん
2008/08/28(木) 21:25:39Vista対策の弊害
0057デフォルトの名無しさん
2008/08/29(金) 18:06:17そそそそあqwせdrftgyふじこlそれだ!!
ありがとうありがとう><
しっかしこんなすぐわかるバグを放置ってなんなんだいったい
0058デフォルトの名無しさん
2008/08/29(金) 18:09:34ListViewのOwnerDataをtrueにしてあれすると
MultiSelectが使えないよおおおおおおおおおおおおおおおおおおおおー
複数選択するとSelCountが0になるうううううううううううう
たすけてー><
0059デフォルトの名無しさん
2008/09/01(月) 09:56:290060デフォルトの名無しさん
2008/09/01(月) 09:58:37これをListViewみたいにマルチセレクトする方法を教えてくださいよ
0061デフォルトの名無しさん
2008/09/01(月) 16:48:43StringGridのDrawCellで各セルを描画してんだけど
Invalidate呼んだら表示されてるとこ全部あれしちゃうんで
これ指定した行だけ更新するほうほうをさっさと教えてくださいよ
0062デフォルトの名無しさん
2008/09/02(火) 19:15:500063デフォルトの名無しさん
2008/09/09(火) 06:57:56>>34 >>35 返信ありがとうございました。
お陰様で、かなめの部分はこんな感じでできました。
void FindPathPattern(TStringList *paths, AnsiString dir, const TStringList *items, int level)
{
TSearchRec sr;
int attr;
if (level < items->Count-1) {
// フォルダ検索&再帰
attr = faAnyFile;
if (FindFirst(dir+items->Strings[level], attr, sr) == 0) {
do {
if (sr.Attr & faDirectory) {
FindPathPattern(paths, dir+sr.Name+"\\", items, level+1);
}
} while (FindNext(sr) == 0);
FindClose(sr);
}
}
else {
// ファイル検索&保存
attr = faAnyFile & ~faDirectory;
if (FindFirst(dir+items->Strings[level], attr, sr) == 0) {
do {
paths->Add(dir+sr.Name);
} while (FindNext(sr) == 0);
FindClose(sr);
}
}
}
0064デフォルトの名無しさん
2008/09/09(火) 21:57:25OnCustomDrawItemイベントでSender.Canvas.Brush.Colorを変更するだけ。
0065デフォルトの名無しさん
2008/09/11(木) 21:52:29widestring は wchar_t* に変換できないってどうすればいいのでしょ?
WideString( fi.FullName );
0066デフォルトの名無しさん
2008/09/18(木) 20:04:25方法無いのでしょうか?
006766
2008/09/18(木) 20:11:25半年も悩んだのに、書き込んだ瞬間わかるとは。。
0068デフォルトの名無しさん
2008/09/19(金) 13:13:29○問題
統合環境からのデバック実行時にCPUウィンドウが表示され続ける
○解ったこと
ListViewの項目幅を変更した時にCPUウィンドウが表示される
○その他情報
・Vista用のマニフェストを追加
・Listviewとは関係無い箇所の修正
・プログラムへのバージョン情報の埋め込み
この3点は元に戻してみましたが代わりありません
数日前のソースに戻すと問題無く動作します
DelphiMLで同様の現象が出た人が居たのですがその方はXP3を当てることで直ったそうですが
今の開発環境はすでにSP3が入っているのでこのような変化を付けることが出来ません
問題が発生しているListViewにはまったく手を入れていません
何か対策をご存じな方がおられましたらお願いいたします
0069デフォルトの名無しさん
2008/09/19(金) 22:48:13007068
2008/09/20(土) 08:52:23外部マニフェストでは無く実行ファイルの中に入れているので影響は無いと思っていました
(実行ファイルのパスとタイムスタンプでキャッシュしてると理解してます)
困った・・・・
007168
2008/09/20(土) 15:14:16原因は指摘の通りマニフェスト
一時は外しても再現してたのですがすべてのプロジェクトの再構築で再現しなくなりました
マニフェストのほうですがMicrosoft.Windows.Common-Controlsを指定しているブロックの部分が
引っかかっていたみたいです(目的としてはAdmin権限必須の指定だけでよかった)
丁度Vista対応実例があったのでそのマニフェストを流用していたために疑うのが遅れました
0072sage
2008/09/21(日) 07:40:54hotfixを当ててから効果がなくなってしまいました。
TC++をインストールしなおす以外に何かよい方法はないでしょうか?
0073デフォルトの名無しさん
2008/09/21(日) 11:14:12を修正して動かしたりしているんだが、ASCII文字だけがどうしてもうまくいかん......
元々、外国の特殊文字(Latin1/2)の文字入力の為に作ったソフトで、
ASCIIのウムラウトとかをキーボードから":u"とか入力して表示できる
ようにしてたんだが、C++Builder2009でコンパイルしてテストすると
"・"になっちゃうんだよね。
要は、ASCIIコードの特殊文字を表示させたいんだけれども、
どういう風にすればいいか分かる人いない?
やっぱり、Unicode対応しちゃったから今までのASCIIは完全にダメなんかな?
0074デフォルトの名無しさん
2008/09/21(日) 11:28:07表示のみUnicodeStringにするとかそのくらいしか思い浮かばないな。
0075デフォルトの名無しさん
2008/09/21(日) 12:04:00そういう方法しかないかなぁ......
一応試しているんだけれど、TEncodeingでUnicode化もうまくいかないんだよね......
TBytesにAnsiStringを変換しないとUnicode化はできないみたいなんだけれども、
これもうまくいかない......
0076デフォルトの名無しさん
2008/09/22(月) 07:05:05もしよかったらバージョンいくつからの以降で、
どの程度ソースの変更が必要だったか教えて欲しい。
0077デフォルトの名無しさん
2008/09/23(火) 09:38:40えっと、CodeGearウオッチャスレにも書いてるから、
重複するけれども、こんな感じ。
まぁ、やり方が分かれば、手間は掛かるかもだけれども難しい事はないよ。
C++Builder2007とC++Builder5からの移行だよ。
例1)MessageBoxに直接文字列セット
Applcation->MessageBox("mes","mes",MB_OK);
↓
Applcation->MessageBox(L"mes",L"mes",MB_OK);
例2)AnsiString型に文字列をセットしてMessageBox出力
AnsiString str="mes";
Applcation->MessageBox(str.c_str(),str.c_str(),MB_OK);
↓
UnicodeString str="mes";
Applcation->MessageBox(str.w_str(),str.w_str(),MB_OK);
例3)DelphiのVCL登録
Char→AnsiChar
PChar→PAnsiChar
例4)C++Builder5からの移行
C++Builder5から移行して、例1とか例2とかの修正後、
リンカエラーが出た場合の対処として、新規プロジェクトを作成
してフォームのCPPファイルを追加してコンパイルするとリンクも通る。
0078デフォルトの名無しさん
2008/09/23(火) 10:22:15ありがとう。L マクロか。
私も5からの以降なんだけど、
フォームは作り直さないとやっぱりダメ?
>フォームのcpp ←dfm の間違いだったらいいんだけど・・・
0079デフォルトの名無しさん
2008/09/23(火) 10:55:33あっ、フォームを作り直す必要はないよ。
作り直す必要があるのはプロジェクトファイルね。
新規でVCLフォームアプリケーションを作成して、最初にあるuit1をプロジェクト
から削除後、C++Builder5で作ったdfmのあるCPPファイルをプロジェクト
にD&Dすると、dfmとcppとhファイルが勝手に追加されるから、
その後ならリンクも正常に通るよ。
0080デフォルトの名無しさん
2008/09/23(火) 21:08:50ありがとう!
決心しました。
明日アップグレード金振り込んできます。
デヴェロッパーズキャンプとか出たのに、
そういう肝心なことは聞きにくかった。
っていうか、Builder5 からの移行って時点で
聞きにくかった・・・。
0081デフォルトの名無しさん
2008/09/23(火) 22:42:54お役に立てたら何よりだよ。
とりあえず、C++Builder2007でも通らなかったものはある。
具体的にはTarCtrlsっていうVCL。
これは、dsinintf.hppっていうのを使っているが、これがC++Builder2007
の時点でファイル名が変わってたっぽい。
で、そのファイル名に変更してみたんだが、クラス名も変わってるみたいで
簡単には移植できなさそうで諦めたよ。
そういったものを使ってなければ、移植に関してはそんなに問題はないと思うよ。
0082デフォルトの名無しさん
2008/09/24(水) 10:13:25重ね重ね、ありがとう。
VCL でも整理されたクラスとかあるんだね。
TarCtrls は多分使ってないと思う。
あんまり VCL でも変わったのは使わないようにしてるから、
意外と移植の手間は少なそうな気がしてきた。
それより、Lマクロがめんどくさそう・・・。
0083デフォルトの名無しさん
2008/09/24(水) 11:56:470084デフォルトの名無しさん
2008/09/25(木) 14:07:34>>77のMessageBoxも沢山あるんだけど,何しろヘルプがバグだらけで正しい書き直し方がわかるまでに
時間がかかる。
・UnicodeStringのc_str()メソッドはwchar_t*を返すとヘルプには書いてあるが,実際にはchar*が返される。
wchar_t*を返すのはw_str()だった。
・ExceptionクラスのMessageプロパティの型はヘルプによればAnsiStringだが,実際にはUnicodeString。
・DateTimeToString関数のプロトタイプはヘルプではDateTimeToString(AnsiString, const AnsiString, TDateTime);
となっているが,正しくはDateTimeToString(UnicodeString &, const UnicodeString, TDateTime);らしい。
結局ヘルプではAnsiString→UnicodeStringの書き換えがまともに行われてないんだということがやっとわかった。
それにしても&くらい抜かさずにちゃんと書いて欲しい...
ところで2009ではTEditのTextやTButtonのCaptionなんかが軒並みAnsiStringからTCaptionという型に変わって
るんだけど,ヘルプにはTCaptionはstringだと書いてある。これってstd::stringのことなの?
だとすると,ToInt()とかないからstd::stringstream使わなきゃなんないし,今までインデックスが1からだったのが
0からになるし,エライ騒ぎなんだが...と思ったら,違うみたい。デフォルトではstringはUnicodStringだそうな。
もーようわからん。Delphiとごっちゃになったヘルプはなんとかならのか!
0085デフォルトの名無しさん
2008/09/25(木) 15:24:28BCB6を使ってるとは同じ身だorz
誰か対応方法wiki化しる!
0086デフォルトの名無しさん
2008/09/25(木) 16:06:32#define _TCAPTION(str) std::string(str.c_str())
でいいじゃん
008784
2008/09/25(木) 16:10:03いや,TCaption=std::stringじゃなくてTCaption=UnicodeStringだってことがわかったんでいいんだ。
紛らわしいこと書いてスマソ。
0088デフォルトの名無しさん
2008/09/28(日) 13:42:030089デフォルトの名無しさん
2008/09/28(日) 13:44:10ttp://www.ruche-home.net/?%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%2F%BE%AE%A5%CD%A5%BF%BD%B8%2FUnicode%C2%D0%B1%FE%A5%B3%A1%BC%A5%C7%A5%A3%A5%F3%A5%B0
009080
2008/09/29(月) 22:12:58もう2日まって来なかったら、連絡してみよう・・・。
0091デフォルトの名無しさん
2008/09/30(火) 12:53:19自分で HexToInt なる関数をつくってしまったわい。
0092デフォルトの名無しさん
2008/09/30(火) 13:19:32変換する文字列の頭に 0x つければできるよ。
0093デフォルトの名無しさん
2008/09/30(火) 16:15:040094デフォルトの名無しさん
2008/09/30(火) 16:24:31009580
2008/09/30(火) 16:25:12インストールする気が全く起きん・・・。
0096デフォルトの名無しさん
2008/09/30(火) 19:00:11'$'+でももちろんおk
0097貧乏学生
2008/09/30(火) 19:27:05ファイルをリストボックス上にスクロールダウンして
リストボックスにファイルのパスが表示されるプログラムが
出来なくて困っています。
ご存知の方いらっしゃいましたらご指導よろしくお願いします。
0098デフォルトの名無しさん
2008/09/30(火) 19:37:26どこの言葉だよ・・・。
0099デフォルトの名無しさん
2008/09/30(火) 20:32:090100デフォルトの名無しさん
2008/09/30(火) 20:36:32ということ?
0101貧乏学生
2008/09/30(火) 20:38:00そうです。お教えください。よろしくお願いします。
0102デフォルトの名無しさん
2008/09/30(火) 20:39:300103デフォルトの名無しさん
2008/09/30(火) 20:48:380104デフォルトの名無しさん
2008/09/30(火) 23:20:09DragAcceptFiles を使う。
あとは DragQueryFile 辺りを調べてみて。
0105デフォルトの名無しさん
2008/10/01(水) 03:17:36>>102
D&Dっていったらダンジョンズ・アンド・ドラゴンズだろ
0106デフォルトの名無しさん
2008/10/01(水) 08:27:09アプリが起動するって
どういう仕組みになってるんだろ?
0107デフォルトの名無しさん
2008/10/01(水) 08:41:02それをやるのが OS の GUI。
0108デフォルトの名無しさん
2008/10/01(水) 09:47:12コマンドラインパラメータにドラッグ&ドロップされたファイル名が入ってくるから,
_argv[]とかParamStr()で取れるよ...って,そういう話じゃないのかな?
0109デフォルトの名無しさん
2008/10/01(水) 11:32:30各コンポーネントのCaption表示をリソース管理でローカライズすることは
出来たのですが、動的に表示を変える場合に用意した文字列を、リソース管理
でのローカライズ方法が分かりません。どなたか御教授下さい。
ちなみに、Caption表示等のリソースファイル(dfm, rc)とは別に文字列を定義
するファイルを作らないといけないんですかね?
0110デフォルトの名無しさん
2008/10/01(水) 12:09:25入れ替えたいなら、普通DLLでリソース持つわな。
0111デフォルトの名無しさん
2008/10/01(水) 13:38:11C++Bのエディットで表示したソース上で日本語以外のワイド文字が
入力出来ないみたいなんで、入力が出来るトランスレーションエディ
タで一緒に編集できる方法があればと思ったのですが。
0112デフォルトの名無しさん
2008/10/01(水) 14:05:49>>109 のように独自定義ファイル作って、実行時に読み込んで割り付けると楽だと思うが。
別にリソースでわざわざ持たせなくてもいいんだろ?
0113106
2008/10/01(水) 15:21:24そういうことダス。
ベリベリサンキュ。
0114デフォルトの名無しさん
2008/10/01(水) 15:26:33独自定義ファイルやDLLを作成するにしても外部ファイルが増
えてしまうので、出来れば増やしたくないってのがありますが
結局リソースファイル作る時点で増えるんで、独自定義ファイル
でまとめたほうが楽ですね。
0115デフォルトの名無しさん
2008/10/01(水) 15:32:12それと編集しやすいファイル記述形式は、
>AAA=menu click
みたいな1行単位。
これだと、TStringListにロードさせたあとは、Valuesで取れるし、
テキトーにファイルにコメント書いても悪影響ないし、
それとか、いざ、Win以外の開発が発生してもロードクラスを簡単に作れる。
0116115
2008/10/01(水) 15:35:45>Form1="送信フォーム"
>Form1.Label1="送信設定"
>Form1.Button1="送信"
みたいにしといて、
TStringListを渡しておいたら、
勝手にフォームのコントロールを検索してのキャプション書き換える
クラス作ちゃったw
注意点は、メモ帳でファイル書き換えても自分の直した行しか変わらず問題ないが、
ワードパッドとかで書きかえるとファイル保存するときにUNICODE勝手にいじられちゃう。
0117115
2008/10/01(水) 15:40:46・ファイルロードするTStringListクラスを保持したLangListクラス
・ロードしたものでコントロールのキャプション書き換えるクラス
は別々にしておいた方が良い。
なぜかというと、ロードしたクラスのみを使う場合があります。
例)
throw Exception(LangList.ValuesAnsi("MSG.CannotCreateFile") + SDestFile);
(LangListからUTF8でとるときは、LangList.ValuesUtf8("MSG.CannotCreateFile")とか書く)
0118デフォルトの名無しさん
2008/10/01(水) 15:55:30>>115
似たようなことをやっていたのですが、
自分の場合リストからロードする時にValue使わずに、
わざわざ文字列比較して引っかけてたんで、すごく
参考になります。
わざわざ、独自定義ファイルの作り方を教えて下さって
ありがとうございます!!
0119デフォルトの名無しさん
2008/10/02(木) 00:03:06リンクすればいい、ってのをやってた希ガス。標準的な手法があるなら独自にやるのは無駄では?
ttp://dn.codegear.com/jp/article/38706
これのB3かな?あとは
ttp://dybdahl.dk/dxgettext/
こゆのとか。
0120デフォルトの名無しさん
2008/10/02(木) 00:26:23で、ヘルプの「アプリケーションのローカライズ」で検索したらなんか出てきたよ。
今勉強中。
0121デフォルトの名無しさん
2008/10/02(木) 17:35:37AnsiString str;
str += "\0\0";
ではだめそうでした。char* に変換するのも面倒で、
なんかいい方法無いでしょうか。
0122デフォルトの名無しさん
2008/10/02(木) 21:07:52大丈夫なようだが。
AnsiString str = "abc";
str += "\0\0";
Edit1->Text = str;
if (str.SubString(4, 1) == "\0") {
Label1->Caption = "\\0";
}
if (str.SubString(5, 1) == "\0") {
Label2->Caption = "\\0";
}
0123デフォルトの名無しさん
2008/10/02(木) 21:47:12cat_printf()を使ったらうまくいった。
AnsiString str = "abc";
str.cat_printf("%c%c", 0, 0);
Edit1->Text = str;
Label3->Caption = str.Length();
if (str[4] == 0)
Label1->Caption = "\\0";
if (str[5] == 0)
Label2->Caption = "\\0";
0124121
2008/10/03(金) 15:45:35ありがとうございました!
使うところはもちろんSHFileOperationなのでした。
0125デフォルトの名無しさん
2008/10/07(火) 07:00:06新規プロジェクトのフォームに貼ったTImageにPNGを読み込ませておいてビルド→
[ILINK32 エラー] Error: 未解決の外部参照 'Pnglang::_EPngInvalidCRCText' が C:\PROGRAM FILES\CODEGEAR\RAD STUDIO\6.0\LIB\OBJ\PNGIMAGE.OBJ から参照されました
(もちろん、Pnglang.hppとPnglang.objは存在する)
読み込ませずにビルドしても同じ。TImageを貼っただけではうまくいくので、PNGを読み込ませた時に挿入さ
れた#include <pngimage.hpp>を削ってみるとビルドはとおるが、TImageの(TPictureの)LoadFromFileなどで
読み込もうとしても未サポートの拡張子と言われる
じゃあ、TPngImageを使おうと思っても、これはpngimage.hppで宣言されているのでインクルードしないとコン
パイルできないが、インクルードするとリンクエラー
試しに別のマシンに2009インストールして試してみたけど同じだった(両方ともXPマシン)
まともに使えている人いる? おかしいのは俺のところだけか?
それとも、何か情報ある?
0126デフォルトの名無しさん
2008/10/07(火) 14:57:15リリースノートによると、画像処理のパッケージがVCLJPGからVCLIMGに代わったからその影響みたい。
ttps://forums.codegear.com/thread.jspa?messageID=17336䎸
その、VCLIMGパッケージがリンクできていないようだから、どこか適当なソースに、
#pragma link "vclimg.lib"か#pragma link "vclimg.bpi"を追加すれば出来た。
0127125
2008/10/07(火) 22:40:45さんきゅ 動いたよ!
今後の事考えると面倒なんで、Pnglang.hppに#pragma link "vclimg.lib"書き加えたw
0128デフォルトの名無しさん
2008/10/09(木) 22:29:52最大化した時に、フォームのサイズに合わせて配置したパネルも一緒に拡大する方法を教えてください
オブジェクトインスペクタの設定でできますか?
0129デフォルトの名無しさん
2008/10/09(木) 23:41:18Anchors
0130デフォルトの名無しさん
2008/10/10(金) 20:41:01誰か教えて
0131デフォルトの名無しさん
2008/10/11(土) 01:36:14アンカーでどうやって均等配置できるんですか??
LeftとRightをtrueですか?
そうしたらLeftの位置は変わらないからRightが伸びてパネルがかぶるし・・・
どうすればいいんでしょうか?
0132デフォルトの名無しさん
2008/10/11(土) 12:25:15どういう状態にしたいかがよく分からんが、新しくPanelを作ってBevelOuter
をbvNoneにし、その上に今のPanelを置いてAnchorsを変えればいいんじゃない?
0133デフォルトの名無しさん
2008/10/11(土) 18:54:02OnResizeイベントでダメなん?
0134デフォルトの名無しさん
2008/10/11(土) 19:26:56えとですね。
例えばフォームWidthが200として横に均等にパネルを4つ並べます。
こんな感じで↓(とりあえず横が分かれば縦もわかるので今は高さを考慮しない)
隙間(20)パネル(25)隙間(20)パネル(25)隙間(20)パネル(25)隙間(20)パネル(25)隙間(20)
これをフォームのWidthを倍の400にした時に
隙間(40)パネル(50)隙間(40)パネル(50)隙間(40)パネル(50)隙間(40)パネル(50)隙間(40)
こんな感じに間隔もパネル幅も倍になってほしいのですが。。。
これってプロパティだけでできますか?
>>133
自分で計算してパネルの位置と幅を調整しなさいよってことですか?
0135デフォルトの名無しさん
2008/10/11(土) 20:00:23void __fastcall TForm1::FormResize(TObject *Sender)
{
Panel1->Width = Form1->Width * 0.5;
Panel2->Left = Form1->Width * 0.5;
Panel2->Width = Form1->Width * 0.5;
}
0136デフォルトの名無しさん
2008/10/12(日) 14:09:50それが普通かどうかはわかりませんが
オブジェクトインスペクタで設計時にやる方法があるのかなって思ってききました
できないならやはりResizeで自分で計算するしかないですよね
0137デフォルトの名無しさん
2008/10/12(日) 15:38:01OnResizeで全部自前計算でFA。
0138132
2008/10/12(日) 21:32:48ん〜......
色々試してみたが、今の所できんかった。
こういうのって半分パズルだよなぁ......
できない事はないのかもしれんが、オレはちょっとできんかった。
0139デフォルトの名無しさん
2008/10/12(日) 22:40:16へたにフォームのプロパティでぐちゃぐちゃやるより、手で書いた方が良いと思う。
0140デフォルトの名無しさん
2008/10/13(月) 12:33:23やっぱそれでFAですかね。
>>138
何か出来そうな気はするんですよね。でもたぶんできないっぽいような
>>139
アンカーとかである程度はできるから簡単にできるのなっておもいまして
とりあえずResizeでFindComponentでパネル取ってやりまーす
エロい人達ありがとう
0141デフォルトの名無しさん
2008/10/15(水) 00:24:22>134の状態だと、例えば1ピクセルだけフォームを広げてみた場合、パネルと隙間の増分ピクセル数が
小数になっちゃう
Anchorとかのプロパティでは、フォームのリサイズのピクセル数がそのまま各コントロールに影響するの
で、根本的に無理があるね
0142デフォルトの名無しさん
2008/10/17(金) 17:47:42ソース内の関数使用箇所から実装部へジャンプする操作(マウス・キーコンビネーションなど)
はないのでしょうか。
MyFunc();
をクリックか何かして
void MyFunc(void)
{
...
}
へジャンプするみたいな感じです。あちこちで調べたんですが、どうしてもわかりません。
0143デフォルトの名無しさん
2008/10/17(金) 18:22:16右クリック→定義の検索、ではだめなん?
0144デフォルトの名無しさん
2008/10/17(金) 22:37:16右クリック->定義の検索 だと宣言部(.hの方)にジャンプしますよね?
.cppの方を見たいのです。人の作ったソースを追っかける時にこの機能が無いと不便で仕方ないんです…
それとも何か条件で.hに行ったり.cppに行ったりするのかな?
VC++だと一度ビルドしてクラス情報を生成しないとダメ、みたいなのがあるけど、BCBにもあるんですかね?
一応このプロジェクトはビルドしてEXE作ってるけど…
0145デフォルトの名無しさん
2008/10/17(金) 23:54:34不可視になってる事があるからじゃない?
例えば配布されているライブラリとかそうじゃん。
.cppはいつもCtrl+Fで検索してるけど。
0146デフォルトの名無しさん
2008/10/20(月) 10:07:290147デフォルトの名無しさん
2008/10/21(火) 16:15:580148デフォルトの名無しさん
2008/10/21(火) 22:19:580149デフォルトの名無しさん
2008/10/23(木) 11:56:54Edit1に出したいのですがなかなかどうすればいいんでしょうか・・
どなたかアドバイスお願いします。
0150デフォルトの名無しさん
2008/10/23(木) 13:19:28Lines->Strings
StrToInt
0151デフォルトの名無しさん
2008/10/23(木) 13:20:52//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
for (int i = 0; i < 60; i++) {
Memo1->Lines->Add(AnsiString(std::rand()));
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
double sum = 0.;
for (int i = 0; i < Memo1->Lines->Count; i++)
sum += Memo1->Lines->Strings[i].ToDouble();
Edit1->Text = AnsiString(sum / Memo1->Lines->Count);
}
0152デフォルトの名無しさん
2008/10/23(木) 13:30:27std::vector<int> results;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
for(int i = 0; i < 60; i++) {
int value = std::rand();
results.push_back(value);
Memo1->Lines->Add(AnsiString(value));
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
double sum = 0.;
for(std::vactor<int>::iterator it = results.begin(); it < results.end(); it++)
sum += *it;
Edit1->Text = AnsiString(sum / result.size());
}
0153デフォルトの名無しさん
2008/10/23(木) 16:01:040154デフォルトの名無しさん
2008/10/23(木) 16:03:10いや、あるんか
0155デフォルトの名無しさん
2008/10/23(木) 16:14:07さすがにコンパイルエラーになったけど, 150 >> 151 >> 152; ならコンパイル通ったw
0156デフォルトの名無しさん
2008/10/23(木) 16:18:52何に使うんだっけ?
確かビットを立てたり外したりするのに使った記憶が
0157デフォルトの名無しさん
2008/10/23(木) 16:27:23Set型
0158155
2008/10/23(木) 16:29:41ヲイヲイ,<< と >> はCの時代からビットシフト演算子だよ。C++になってから >> cout とか別の使い方で
定義されるようになった。>>155だってビットシフトの意味があるからコンパイルが通るだと思う。
150数ビットもシフトしてどうすんの?...なんだけどw
0159155
2008/10/23(木) 16:30:300160デフォルトの名無しさん
2008/10/23(木) 16:34:11ああ、それだ。滅多に使わないから忘れかけてた。
Delphiならスマートに書けるのだがC++Builderならムリヤリ感が。
>>158
まあそういう事だ。
0161デフォルトの名無しさん
2008/10/23(木) 16:44:00普段はオブジェクトインスペクタからいじっちゃうからね
コードでいじる場合はどうしてもヘルプ頼りに
0162デフォルトの名無しさん
2008/10/23(木) 16:52:42TVarRecとか
カッコを二重に書かなければならないのを時々忘れる
0163デフォルトの名無しさん
2008/10/23(木) 16:54:480164デフォルトの名無しさん
2008/10/29(水) 11:22:19C++BuilderでVBスクリプト?を使ってSNMPで値の送受信を行いたいのですが
VBのソースは以下の通りです
Dim objSNMP
Set objSNMP = CreateObject("OlePrn.OleSNMP")
objSNMP.Open "192.168.0.40", "public", 2, 1000
Dim myObjectValue
ObjectValue = objSNMP.Get(".1.3.6.1.2.1.1.4.0")
WScript.Echo ObjectValue
objSNMP.Set ".1.3.6.1.2.1.1.4.0", CStr("e-mail:[email protected] tel:xxx-xxxx-xxxx")
Dim myChangedObjectValue
myChangedObjectValue = objSNMP.Get(".1.3.6.1.2.1.1.4.0")
objSNMP.Close()
これをC++Builderではどのような記述になるのでしょうか?
CreateObjectはたぶんこんな感じになると思うのですが
この続きの記述を教えてください。。
Variant cn = Variant::CreateObject("OlePrn.OleSNMP");
0165デフォルトの名無しさん
2008/10/30(木) 16:49:460166デフォルトの名無しさん
2008/10/30(木) 16:53:580167デフォルトの名無しさん
2008/10/30(木) 16:58:200168デフォルトの名無しさん
2008/10/30(木) 17:02:530169デフォルトの名無しさん
2008/10/30(木) 18:41:080170デフォルトの名無しさん
2008/10/30(木) 19:02:180171デフォルトの名無しさん
2008/10/31(金) 15:32:060172デフォルトの名無しさん
2008/10/31(金) 15:37:40ほんとお前らって何の役にも立たないブタだよな・・・
0173デフォルトの名無しさん
2008/10/31(金) 16:27:080174デフォルトの名無しさん
2008/11/01(土) 00:31:47役に立たないどころかすべてが計算通りに進んだということですw
0175デフォルトの名無しさん
2008/11/03(月) 20:06:59656,000,1123,5454
756,000,5454,3455
545,001,6565,4554 6565
545,002,5455,7775 → 5455
223,006,5656,9898 5656
054,004,5554,5554 5554
・ ・
・ ・
・ ・
843,022,6643,4443 6643
565,011,3434,4455 3434
656,000,3343,2432
789,000,5545,6665
こんな感じで配列が並んでいるのですが各数列の2番目数字が000以外のときに
3番目の数字だけを配列として順にMemo1にだしたいのですがどのようにすればよいでしょうか
0176デフォルトの名無しさん
2008/11/03(月) 20:10:04csv方式で
656,000,1123,5454
756,000,5454,3455
545,001,6565,4554 6565
545,002,5455,7775 → 5455
223,006,5656,9898 5656
054,004,5554,5554 5554
・ ・
・ ・
・ ・
843,022,6643,4443 6643
565,011,3434,4455 3434
656,000,3343,2432
789,000,5545,6665
こんな感じで配列が並んでいるのですが各数列の2番目数字が000以外のときに
3番目の数字だけを配列として順にMemo1にだしたいのですがどのようにすればよいでしょうか
0177デフォルトの名無しさん
2008/11/03(月) 20:28:15{
std::ifstream ifs("File1.txt");
std::string str;
AnsiString as;
if (ifs) {
TStringList* Data = new TStringList;
Data->Delimiter = ',';
while (std::getline(ifs, str)) {
Data->DelimitedText = str.c_str();
if (Data->Strings[2] != "000")
Memo1->Lines->Add(Data->Strings[3]);
}
delete Data;
}
0178デフォルトの名無しさん
2008/11/03(月) 20:30:24void __fastcall TForm1::Button1Click(TObject *Sender)
{
std::ifstream ifs("File1.txt");
std::string str;
AnsiString as;
if (ifs) {
TStringList* Data = new TStringList;
Data->Delimiter = ',';
while (std::getline(ifs, str)) {
Data->DelimitedText = str.c_str();
if (Data->Strings[1] != "000")
Memo1->Lines->Add(Data->Strings[2]);
}
delete Data;
}
}
0179デフォルトの名無しさん
2008/11/03(月) 20:44:28いらないけどさ
0180デフォルトの名無しさん
2008/11/03(月) 20:46:46ごめんそうです
削ってくらはい
0181デフォルトの名無しさん
2008/11/03(月) 20:56:09ありがとうございます!
csv形式のテキストはオープンダイアログから読み込みその中から抽出することはできるのでしょうか
また先ほどの文で
DelimiterとDelimitedTextはTStringListのメンバーではないと言われるのですが
何か宣言文などが必要なのでしょうか。
まだまだ初心者でして;いろいろご迷惑かけてすいません。
0182デフォルトの名無しさん
2008/11/03(月) 21:17:26>csv形式のテキストはオープンダイアログから読み込みその中から抽出することはできるのでしょうか
できます。
TOpenDialog->Filesに入ります。
>DelimiterとDelimitedTextはTStringListのメンバーではないと言われるのですが
>何か宣言文などが必要なのでしょうか。
えっもしかしてC++Builderのバージョンは5以前ですか?
0183デフォルトの名無しさん
2008/11/03(月) 23:14:27書いてみました。
コンマの数や桁数などは決め打ちになってますので必要ならば適宜変更して
ください。
void __fastcall TForm1::Button2Click(TObject *Sender)
{
OpenDialog1->Execute();
std::ifstream ifs(OpenDialog1->FileName.c_str());
std::string str;
if (ifs)
while (std::getline(ifs, str)) {
std::string::size_type pos = str.find(',') + 1;
if (str.substr(pos, 3) != "000") {
pos = str.find(',', pos) + 1;
Memo1->Lines->Add(str.substr(pos, 4).c_str());
}
}
}
0184デフォルトの名無しさん
2008/11/04(火) 19:29:47返事が遅れてすいません。ありがとうございました!大変感謝しています
こちらのやり方で動きました。c++builderはver5を使っています
あと桁数をコンマの数をかえるとのことなのですが、
桁数を変える場合は5桁表示するならpos 5 にすればよいことはいじっていてわかったのですが
コンマの位置を変える場合どの部分を変えていけばよいのでしょうか・・・
よろしければアドバイスお願いします><
実際の応用テキストではさらに数字が多く6番目数字(コンマ5つ目)が00:00:00(桁数は変化しない)以外の時に
11番目(コンマ10個目)の数字を表示するようにしたいのです。実際に表示したい数字も小数点を含む5.55(桁数は変化しない)などです。
0185デフォルトの名無しさん
2008/11/04(火) 20:07:38かなり汚いですが一応動くので載せておきます。
コンマの位置を変えるにはfor文の数字をいじればいいですが、
できればコンマn番目から次のコンマもしくは行末までの文字列を
取り出す関数を別に作ってそれを呼び出した方が綺麗に書けると
思います。
void __fastcall TForm1::Button4Click(TObject *Sender)
{
OpenDialog1->Execute();
std::ifstream ifs(OpenDialog1->FileName.c_str());
std::string str;
if (ifs)
while (std::getline(ifs, str)) {
std::string::size_type pos = 0;
for (int i = 0; i < 5; i++) {
if((pos = str.find(',', pos)) == std::string::npos)
goto next;
pos++;
}
次に続く
0186デフォルトの名無しさん
2008/11/04(火) 20:08:38if (str.substr(pos, pos2 - pos - 1) != "00:00:00") {
pos = pos2;
for (int i = 0; i < 3; i++) {
if((pos = str.find(',', pos)) == std::string::npos)
goto next;
pos++;
}
pos2 = str.find(',', pos);
if (pos2 == std::string::npos)
pos2 = pos;
else
pos2++;
Memo1->Lines->Add(str.substr(pos2, 4).c_str());
}
next:;
}
}
要するにTStrings::operator[] の機能を自前で書けばすっきりするはずです。
0187デフォルトの名無しさん
2008/11/04(火) 20:21:50__property AnsiString Cells [int rows] [int cols]= {read=GetCell, write=SetCell};
こんなメンバ持たせたCSVクラス作って使ってるなぁ
0188デフォルトの名無しさん
2008/11/04(火) 20:29:44BCBはDelphiとのインターフェースが割合簡単に取れるから、
Delphiで書かれたcsvパッケージでも入れたら楽でしょうね。
0189デフォルトの名無しさん
2008/11/04(火) 20:31:03ありがとうございます。重ね重ねすいません;;
if (str.substr(pos, pos2 - pos - 1) != "00:00:00") の部分がよくわからなくて
6番目の数字が00:00:00場合読み込まないようにするのではなく一つ増えて00:00:00:00の場合に読み込まないようにするには
どのように変更したらいいのでしょうか・・
実際11番目の数字(6.44や9.88など桁数は変らず)を表示させるときは6番目の数字が00:00:00:00以外のとき(00:00:00:45や00:00:05:35など)でこちらも桁数については変りません。
0190デフォルトの名無しさん
2008/11/04(火) 20:33:23今回のプログラムは00:00:00の桁数については決め打ちしていませんので
"00:00:00"を"00:00:00:00"に変更すればいいです。
0191デフォルトの名無しさん
2008/11/04(火) 20:56:52わざわざありがとうございます;;どうやら勘違いしていたようでした。
実際の00:00:00:00のテキストのほうではコンマごとにわかりやすいように半角スペースがついており
半角スペース5列数字、半角スペース1列数字、半角スペース1列数字、半角スペース3列数字・・・
などのように書かれており上記のプログラムで半角スペースも認識されるため正しい数字が出せていないようでした。
(半角スペースを全部埋めていった場合正しい数字がでました。)
半角スペースを含んだ上で数値を出したいのですがこういう場合どのようにすればいいのでしょうか。
0192デフォルトの名無しさん
2008/11/04(火) 21:03:36これ以上後出し条件はやめてください。
どこかのロダにそのテキストをうpしていただけませんか。
0193デフォルトの名無しさん
2008/11/04(火) 21:06:59TStringsListのバージョンは古くて使えないしだから
C++相談室にでも書いてみたら?
0194デフォルトの名無しさん
2008/11/04(火) 21:08:06あなた専用のサポートスレではないんですよって感じですかね
0195デフォルトの名無しさん
2008/11/04(火) 21:13:55イラッと来ると思うけどね
0196デフォルトの名無しさん
2008/11/04(火) 21:18:54TStringListに分解する関数を作って使ってる。
この関数1個あれば、CSVを全然意識せずに文字列として扱える。
0197デフォルトの名無しさん
2008/11/04(火) 21:25:44最初の頃は全然使い方が分からなくて、その頃に丁度Delphi6
のフリー版が出たので、Delphi本をBCBに翻訳しながら打ち込んで
動かす事で覚えたっけ。
お陰様でBCB6からは自由自在に使えるようになった。参考書も
BCB用が皆無の頃でDelphi本を買って参考にしたっけ。
0198デフォルトの名無しさん
2008/11/04(火) 21:31:37次からはもう少し慎重に確認していくように注意します。
ここから先は自己解決していきたいと思います。
何度も教えていただきありがとうございました!!
0199デフォルトの名無しさん
2008/11/04(火) 21:32:21少しの言語拡張とC++のクラスの柔軟性とマクロの多用で対応して
いるが、今見ても頭がおかしい人が設計したんじゃないかと思う事がある
0200デフォルトの名無しさん
2008/11/05(水) 09:16:56CommaTextというプロパティがあってね・・・
1例だけ特殊対応しなければいけないけど大抵はこのプロパティだけで大丈夫だな
0201デフォルトの名無しさん
2008/11/05(水) 12:43:08CSVの記述が正確ではない場合
悲惨な結果をもたらすことになる。
趣味なら笑って済ますことも出来るだろうが
業務用プログラムでは、
とてもじゃないが、CommaTextは使えない。
0202デフォルトの名無しさん
2008/11/05(水) 13:39:21それスペースまで区切りとみなしちゃうだろ?
""で囲ってあればいいけどそうでないのってどうしてる?
0203デフォルトの名無しさん
2008/11/05(水) 13:41:32その後、TStringList系は使いまくってるけど。
0204203
2008/11/05(水) 13:42:270205デフォルトの名無しさん
2008/11/05(水) 13:49:10>>201CSVの記述が正確では無かったら何やっても悲惨になるんだがw
俺はStringListに分解したあとにチェック入れてる
0206デフォルトの名無しさん
2008/11/05(水) 13:57:34これって6から?
0207デフォルトの名無しさん
2008/11/05(水) 13:59:24そう
俺はBCB6から本格的にBCBを使い出したからBCB5以前の
奴とは話が時々合わず苦労する
0208デフォルトの名無しさん
2008/11/05(水) 14:01:56Indy増えるし、やっぱそれに関しては無条件バージョンうpじゃね?
6から200Xへはやったことないガクブル
0209デフォルトの名無しさん
2008/11/05(水) 14:24:24Delphi + BCB で3万円が妥当な価格だと思う
エンバカは高く設定し過ぎ
0210デフォルトの名無しさん
2008/11/05(水) 16:24:570211デフォルトの名無しさん
2008/11/09(日) 20:51:23業務アプリはネイティブで作ると楽だけど配布がウザすぎてWebにしたくなる。
0212デフォルトの名無しさん
2008/11/11(火) 17:24:47CLXアプリをVCLアプリに書き換えてるんですが、CLXのラジオボタンがスペーキーを押すまでチェックされないみたいなので…
環境はCLX→6.0 VCL→2007です
0213デフォルトの名無しさん
2008/11/11(火) 19:38:51バカに貢俺らって、バカ馬鹿だな
0214デフォルトの名無しさん
2008/11/11(火) 20:12:420215デフォルトの名無しさん
2008/11/16(日) 15:27:45そのA1とA2の配列の計算をしたいのですが
AnsiString k1;
for(int j=0;j<500;j++){
k1 = A1->Strings[j] + A2->Strings[j];
Memo1->Lines->Add(k1);
}
こんな形でやってみたところA1とA2の同じ行が足し算されず
メモにはA1とA2の同じ行の数字が並んで表示されているだけなの
ですがこれでは配列の足し算はできていないのでしょうか?
どなたかよければアドバイスお願いします。
0216デフォルトの名無しさん
2008/11/16(日) 15:34:11C++のデータには「型」があるんよ。数値とか文字とか。
StrToIntとかで数値に変換してから足せ。
0217デフォルトの名無しさん
2008/11/16(日) 16:13:42型で変換してみたのですが少数を含んだ数値の配列で
strtodで
AnsiString k1;
for(int j=0;j<500;j++){
k1 = strtod(A1->Strings[j]) + strtod(A2->Strings[j]);
Memo1->Lines->Add(k1);
}
と書いたときTStringlistに格納しているものなので、AnsiStringに一致するものが見つからないと出て
しまいます。どのような変換で書いていけばよいのでしょうか
各配列の数値は 197.543545 や54.47673423のような数値の500個の配列です。
0218デフォルトの名無しさん
2008/11/16(日) 16:46:250219デフォルトの名無しさん
2008/11/16(日) 16:48:05A1->Strings[j].ToDouble()
0220デフォルトの名無しさん
2008/11/16(日) 16:59:450221デフォルトの名無しさん
2008/11/16(日) 17:04:48ありがとうございます。
うまく変換して計算することができました。
0222デフォルトの名無しさん
2008/11/16(日) 17:24:360223デフォルトの名無しさん
2008/11/17(月) 15:37:380224デフォルトの名無しさん
2008/11/17(月) 16:26:550225デフォルトの名無しさん
2008/11/17(月) 16:45:240226デフォルトの名無しさん
2008/11/17(月) 16:57:010227デフォルトの名無しさん
2008/11/17(月) 17:07:160228デフォルトの名無しさん
2008/11/18(火) 02:53:53どのようにすれば良いのでしょうか。
モジュール 'rtl100.bpl' のアドレス 51F515BE でアドレス 00000008 に対する読み込み違反がおきました。
EPackageRegistrationException がモジュール coreide100.bpl の 000DCB21 で発生しました。
登録プロシージャ Cppproject.IDERegister (パッケージ c:\program files\borland\bds\4.0\Bin\bcdide100.pbl) が例外クラス EOleSysError を生成しました: クラスが登録されていません, ClassID: {F8FEDD39-E3CE-4B8D-A657-9CA24686881F}.
モジュール 'coreide100.bpl' のアドレス 20BA0DAF でアドレス 00000004 に対する読み込み違反がおきました。
モジュール 'designide100.bpl' のアドレス 20EE71DE でアドレス 00000000 に対する読み込み違反がおきました。
Borland® Developer Studio for Windows は動作を停止しました
問題が発生したため、プログラムが正しく動作しなくなりました。このプログラムを閉じてください。
0229デフォルトの名無しさん
2008/11/18(火) 14:04:08ttp://support.codegear.com/article/36202
0230デフォルトの名無しさん
2008/11/18(火) 22:52:25教えて頂いたリンク先にあった内容や、
ttp://support.codegear.com/article/37345にあった内容を試したのですが、全く状況に変化が見られませんでした…
どうも無理そうなので、とりあえずVista正式対応を待つことにします。
0231デフォルトの名無しさん
2008/11/18(火) 23:08:460232デフォルトの名無しさん
2008/11/25(火) 13:49:410233何をしたいのかを具体的に書けば有効な回答が得られるのでは?
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周りは排他処理されていないわけないとも思えますし・・・
コンポーネントのマルチコア対応状況の情報があれば教えていただけませんでしょうか。
よろしくお願いします。
0333デフォルトの名無しさん
2009/03/01(日) 10:03:57TCriticalSectionが必要なんじゃない?
0334デフォルトの名無しさん
2009/03/02(月) 09:14:14Crytical Section ってVCLラップされてたんだ。知らなかった。
まさかMutexはラップされてないおね?
0335デフォルトの名無しさん
2009/03/02(月) 12:39:04Debug::Heap Block at xxxx とか Invalid address xxxが出る。
何故だろう?(BCB5では問題なし)
誰か助けて....
0336デフォルトの名無しさん
2009/03/02(月) 12:41:380337デフォルトの名無しさん
2009/03/02(月) 13:27:450338デフォルトの名無しさん
2009/03/02(月) 13:44:090339デフォルトの名無しさん
2009/03/02(月) 14:01:480340デフォルトの名無しさん
2009/03/02(月) 14:13:44出ないならただのスタックオーバーフローじゃないかと。
0341デフォルトの名無しさん
2009/03/02(月) 14:41:59やはりスタックオーバーフローでしょうか
0342デフォルトの名無しさん
2009/03/02(月) 14:47:370343デフォルトの名無しさん
2009/03/02(月) 14:54:260344デフォルトの名無しさん
2009/03/02(月) 15:01:11どのように処理するとよいのでしょうか?
0345デフォルトの名無しさん
2009/03/02(月) 15:16:070346デフォルトの名無しさん
2009/03/02(月) 15:23:35先頭を呼び出して奨める
0347デフォルトの名無しさん
2009/03/02(月) 15:28:46335じゃないけど意味がわからないからもうちょい詳しく教えて
0348デフォルトの名無しさん
2009/03/02(月) 15:36:21フォルダ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が無くなったら上へもどる。
0349デフォルトの名無しさん
2009/03/02(月) 15:42:37BCB2009はVirtualPC上で動作させており、FindFirstしている場所は
VirtualPC上のネットワークドライブです。
この時にDebug::Heap Block at xxxx とか Invalid address xxxが出ています。
ローカルのC:\\とかを指してやると正常に動作しています。
0350デフォルトの名無しさん
2009/03/02(月) 15:52:29再帰使うなよ
0351デフォルトの名無しさん
2009/03/02(月) 15:54:13http://takeshima.2ch.net/test/read.cgi/news4vip/1235974776/
0352デフォルトの名無しさん
2009/03/02(月) 15:55:32無知でした、皆様ありがとうございます。
0353デフォルトの名無しさん
2009/03/02(月) 15:58:27335じゃないけど、ディレクトリをどんどんケツにくっつけてサーチしろってことかな?
俺もよく再帰使うからちょっと気になって横うんこしてしまったぜ
0354デフォルトの名無しさん
2009/03/02(月) 16:00:540355デフォルトの名無しさん
2009/03/02(月) 16:05:31だからなんだよクズ
0356デフォルトの名無しさん
2009/03/02(月) 16:07:38つまり、原理的には再帰で書けるコードはループで書けるんだそうです。
Scheme(LISP系の関数型プログラミング言語)だと、繰り返しはループじゃなくて再帰を使うんだそうです。
0358デフォルトの名無しさん
2009/03/02(月) 16:21:38再帰使うとスタックオバーフロが起こりうる
0359デフォルトの名無しさん
2009/03/02(月) 16:25:48だから予定外のメモリ確保が出てくる再帰使うと停止する。
動的確保なら、OSがスワップとかしてなんとかできる。
0360デフォルトの名無しさん
2009/03/02(月) 22:02:320361デフォルトの名無しさん
2009/03/02(月) 22:46:44スタックの類使わなくても書けるの?
0362デフォルトの名無しさん
2009/03/03(火) 05:37:46ボタンを押したら実行するようにしたいので
ShellExecute(Handle,"open",ファイル名.c_str,NULL,NULL,SW_SHOW);
と書いたのですが、うまくいきません・・・どなたか教えてくださいOTL
0363デフォルトの名無しさん
2009/03/03(火) 07:55:490365334
2009/03/04(水) 09:24:55そうなんだ。
知らないから、Win32APIベタでコールしちゃってるよ。
0366332
2009/03/05(木) 19:13:35ありがとうございます。
末端のソケットに対するアクセスには排他はかけていませんでした。
同時にアクセスできるのは1スレッドだけというシングルコアに絆された思い込みがありましたので・・・。
早速試してみます。
バージョンアップ検討中の名目でEmbarcaderoにマルチコア対応状況を
ダメ元で確認してみたところ、かなり丁寧に教えてもらえました。
結論としてC++Builder6のTServerSocketとTClientSocketに関しては
マルチコア環境での動作保障をしていないとのことです。
以降のバージョンでこれらのコンポーネントが無くなっていた時点で気付くべきでしたorz
ちなみに現行バージョンではIndy系を推奨しているようです。
排他で解決できればとりあえず目的は達成されるのでここまでにしたいと思います。
ありがとうございました。
0367デフォルトの名無しさん
2009/03/06(金) 20:40:01通常の子ウィンドウと違ってウィンドウがタスクバーに表示されてしまいます。
DLLロード後にメインフォームのハンドルをDLLに渡してやることで
どうやらうまく行くようなのですが、手法的にスッキリしません。
もっとスマートに行う方法はないものでしょうか。BCB6を使っています。
0368デフォルトの名無しさん
2009/03/06(金) 21:15:46十分スマートじゃないか?
つかそうするのが普通だろ?
0369367
2009/03/06(金) 22:25:48やっぱりそうですか?
ロードと同時にDllEntryPoint()でなんとかできないのかなーと思ったんですが。
とりあえず邪道ではないようで安心しました。ありがとうございました。
0370デフォルトの名無しさん
2009/03/06(金) 22:55:50どこからリンクされているか考えれば問題ないとわかるはず…
0371デフォルトの名無しさん
2009/03/13(金) 15:01:44オプションのどこいじればいいですか?
ちなみに、他のプロジェクトだとちゃんとコンパイル通ります。
なんか1つのプロジェクトだけこのエラーでるんです・・・
0372デフォルトの名無しさん
2009/03/15(日) 10:33:12if(!OpenDialog1->Execute())return;
ShowMessage(OpenDialog1->FileName);
何も間違ってないはずなのに!
0373デフォルトの名無しさん
2009/03/15(日) 14:28:51バグだらけだろ。
0374デフォルトの名無しさん
2009/03/16(月) 08:51:47OpenDialogが開くダイアログ位置おぼえてるっぽくて、
全然開かない現象がBCB6+xpであった。
Project1.bpr/Project1.exe の組み合わせで発生して、
同じプロジェクト名だと再発するんだが、
違うプロジェクト名にしたら現象消えた。
まだ原因を追っかけてはいない。
0375デフォルトの名無しさん
2009/03/16(月) 10:39:420376デフォルトの名無しさん
2009/03/16(月) 11:09:520377デフォルトの名無しさん
2009/03/16(月) 11:33:22そうなら、2009買って64bit調査開始しなきゃならんやん。
0378デフォルトの名無しさん
2009/03/16(月) 12:01:30嘘つけ!
0379デフォルトの名無しさん
2009/03/16(月) 12:28:430380デフォルトの名無しさん
2009/03/16(月) 13:19:47ただ、
64ビットのコードを吐くとは言っていない
0381デフォルトの名無しさん
2009/03/16(月) 13:24:340382デフォルトの名無しさん
2009/03/16(月) 13:40:320383デフォルトの名無しさん
2009/03/16(月) 15:14:26お前みたいなカスはレスするなよ
0384デフォルトの名無しさん
2009/03/16(月) 20:07:580385デフォルトの名無しさん
2009/03/16(月) 22:42:120386デフォルトの名無しさん
2009/03/16(月) 23:13:55というかCCBが正しいのかな?
CODEGEAR C++ Builder2009
0387デフォルトの名無しさん
2009/03/17(火) 00:06:250388デフォルトの名無しさん
2009/03/17(火) 00:16:310389デフォルトの名無しさん
2009/03/17(火) 10:16:480390デフォルトの名無しさん
2009/03/17(火) 19:46:26ウィキペディアに、
>C++ Builderの新しい版ではMFCやDirectXなどもサポートしている。
って書かれてるんですが、それって
http://www.clootie.ru/cbuilder/
このページで公開されてるライブラリ使わなくても、正規のDirectXを使えるってことですか?
0391デフォルトの名無しさん
2009/03/17(火) 22:25:52半分は。
DirectX9が入っているが、d3d9x.libなどが無い。
チュートリアルの1は何とか何もしないでいける程度。
0392デフォルトの名無しさん
2009/03/18(水) 03:25:27それはサポートしているとは言えないんじゃ…
0393デフォルトの名無しさん
2009/03/18(水) 16:47:33未だBCB6の俺としてはそろそろOSも変わるかもしれんしバージョンアップ考えた方がいいかなと思ってるんだが
0394デフォルトの名無しさん
2009/03/18(水) 16:50:140395デフォルトの名無しさん
2009/03/19(木) 02:34:42ttp://en.wikipedia.org/wiki/C++ Builder
>A future version of CodeGear C++Builder (codenamed Commodore) will support x86-64 and create x86-64 Native code.
0396デフォルトの名無しさん
2009/03/19(木) 17:22:06これ原因わかる人いる?
ちなみに、他PCで同じプロジェクトを何度コンパイルしてもちゃんと指定したアイコンになってます。
0397デフォルトの名無しさん
2009/03/19(木) 17:24:060398デフォルトの名無しさん
2009/03/19(木) 17:28:40もしかしたら同じ症状の人がいたらラッキーかなっておもったんで
0399デフォルトの名無しさん
2009/03/19(木) 17:41:03Builderのバージョンとかは果敢機会?
0400デフォルトの名無しさん
2009/03/19(木) 18:18:30あ、そういえばそうですよね。
まあ言っても無駄だとおもうけど。
C++Builder5 proですよ。
0401デフォルトの名無しさん
2009/03/19(木) 18:23:440402デフォルトの名無しさん
2009/03/19(木) 19:07:22OSはXPSP2なんですがSP1をアップデートしてSP2にしたんですが
これが途中でエラー出てあれなんだよばかなんですよね。
あ、そういやSP1のPCでやってもダメなのあったなあ
4台で試して2台が現象発生だこのやろう!!
0403デフォルトの名無しさん
2009/03/19(木) 19:09:39インストールだ
0404デフォルトの名無しさん
2009/03/19(木) 19:32:080405デフォルトの名無しさん
2009/03/19(木) 19:58:080406デフォルトの名無しさん
2009/03/19(木) 20:54:26しかも登録先が英語・・・
0407デフォルトの名無しさん
2009/03/19(木) 21:16:230408デフォルトの名無しさん
2009/03/19(木) 23:41:02ボタンとかタブのカラーは変えられないのですか?
0409デフォルトの名無しさん
2009/03/20(金) 00:00:310410デフォルトの名無しさん
2009/03/20(金) 00:12:19実行環境っていうのがあるんだけど
作ったアプリケーションが動作する環境っていう意味なの?
0411デフォルトの名無しさん
2009/03/20(金) 01:04:25OK
0412デフォルトの名無しさん
2009/03/20(金) 01:39:34先に古い方からインスコ
0413デフォルトの名無しさん
2009/03/20(金) 20:52:33お願いします。
0414デフォルトの名無しさん
2009/03/20(金) 21:06:000415デフォルトの名無しさん
2009/03/20(金) 22:33:27後者なのかな。
0416デフォルトの名無しさん
2009/03/20(金) 22:56:41遅レスだが、会社で組んだソフトがその現象になって困ったことがあったよ。
確か、プロジェクトファイル(.bprファイル)をテキストエディタで開いて、
<LIBRARIES value=だか<SPARELIBS value=の最初のlib
を最後に移動して保存して、BCB5で開いてリコンパイルしたら直ったと思うよ。
0417デフォルトの名無しさん
2009/03/20(金) 23:03:410419デフォルトの名無しさん
2009/03/21(土) 14:13:180420デフォルトの名無しさん
2009/03/21(土) 17:55:06TThread *Thread として(実際はTThreadの派生系)
方法は2種類あると思う。
1)待機関数、Handleを使う
if(WaitForSingleObject((HANDLE)Thread->Handle,0)==WAIT_TIMEOUT) { /* スレッドは実行中 */}
else { /* スレッドは終了している */}
2)OnTerminate イベントを使う
void __fastcall ThreadTerminated(TObject*){ /* スレッド終了時に処理をさせる。処理はメインスレッド内で実行される。*/}
Thread->OnTerminate=ThreadTerminated;
0421デフォルトの名無しさん
2009/03/22(日) 15:43:47TThread.Finished プロパティを調べる。trueなら終了。
0422デフォルトの名無しさん
2009/03/22(日) 18:52:50C++Builder2009Pro。
アプリケーション作成時のデフォルトアイコンあるでしょ。
あれって変えられない?
デフォルトがヘッドギアってダサすぎです
0423デフォルトの名無しさん
2009/03/22(日) 20:23:442009は持ってない。
0424デフォルトの名無しさん
2009/03/22(日) 21:27:370425デフォルトの名無しさん
2009/03/22(日) 21:49:45新規プロジェクト→アイコン変える
のようにプロジェクトの作成のたびにアイコンを変えるのがめんどくさい。
アイコンを変えておく→新規プロジェクトうんぬん。
プロジェクトが作成されるたびにデフォルトで指定したアイコンになっていてほしい。
0426デフォルトの名無しさん
2009/03/22(日) 21:52:030427デフォルトの名無しさん
2009/03/22(日) 21:59:580428デフォルトの名無しさん
2009/03/22(日) 22:05:04デフォルトのオプション設定でアプリケーションの項目がないからあきらめてた
あまりにもダサいから必ず変えるように仕向けたいのか
残念だ
ありがとう
置換?できるのか?
0429デフォルトの名無しさん
2009/03/24(火) 20:16:410430デフォルトの名無しさん
2009/03/24(火) 20:46:210431デフォルトの名無しさん
2009/03/24(火) 20:48:030432デフォルトの名無しさん
2009/03/24(火) 21:00:09どこに組み込まれてるんだろ
まあ、そもそもそんな必要があるとは思えないけどね
0433デフォルトの名無しさん
2009/03/24(火) 22:22:180434デフォルトの名無しさん
2009/03/24(火) 22:35:270435デフォルトの名無しさん
2009/03/24(火) 22:47:56だいたい、作るプログラムは全部デフォルトのままかよ。
0436デフォルトの名無しさん
2009/03/24(火) 23:11:22ネタとして話をしても
0437デフォルトの名無しさん
2009/03/25(水) 00:07:54WindowsフォルダのTASKMAN.EXEみたいなアイコンにしている。
0438デフォルトの名無しさん
2009/03/25(水) 14:15:530439デフォルトの名無しさん
2009/03/25(水) 14:19:470440デフォルトの名無しさん
2009/03/25(水) 14:23:490441デフォルトの名無しさん
2009/03/25(水) 15:42:080442デフォルトの名無しさん
2009/03/25(水) 17:10:11それ以降のブレークポイントがみんなズレるんだけど
なんかいい方法ないかな
0443デフォルトの名無しさん
2009/03/25(水) 21:17:020444443
2009/03/25(水) 21:54:34Ws2_32.libをプロジェクトに追加したらリンクできた。
0445デフォルトの名無しさん
2009/03/27(金) 13:19:40プログラムのフォルダをコピーしたりしなかったか?
0446デフォルトの名無しさん
2009/03/27(金) 21:33:32間にShowMessage入れて見たらオープンダイアログ開くようになったんだけど
これどういう事?
0447デフォルトの名無しさん
2009/03/27(金) 22:09:11エラーって何?
0448デフォルトの名無しさん
2009/03/27(金) 23:01:41オープンダイアログが失敗した時やキャンセルした時に返るfalse
0449デフォルトの名無しさん
2009/03/27(金) 23:03:17○コンストラクタでしたw
1年ぶりに手を付けてますw
0450デフォルトの名無しさん
2009/03/28(土) 03:30:19途中に関数挟むとスタックの状態が変わるので、それまで出ていたバグが
出なくなったように見える事があるよ。
OpenDialogが内部で利用するGetOpenFileName()は過去に何度か拡張されて、
関数が使用する構造体のサイズも変わった。それがエラーの原因じゃないかなあ。
_WIN32_WINNTとOPENFILENAME::lStructSizeがうまく対応取れていないような気がする。
解決しないなら、直接GetOpenFileName()呼んで回避してください。
もし単にXPスタイルのダイアログ開きたいだけならマニフェスト埋め込めば楽かと。
0451デフォルトの名無しさん
2009/03/28(土) 04:20:49ダイアログの親ウインドウがまだ使える状態じゃないとか。オープンダイアログがコンポーネントの事だったら、それ
の初期化完了も確認しないとまずいし。
OnCreateとか、OnIdleとか使った方がよさげ。
0452デフォルトの名無しさん
2009/03/28(土) 11:26:45__publishedに触るのはOnCreateから
0453デフォルトの名無しさん
2009/03/28(土) 11:29:22不都合が生じるからコンストラクタに書いてくれって載ってた気がする
0454デフォルトの名無しさん
2009/03/28(土) 13:08:01VCLをいじるような記述をすると高い確率で動作が変になる。
変数への代入程度で留めておくべきだろう。
0455デフォルトの名無しさん
2009/03/28(土) 13:20:53前なんだから。
0456デフォルトの名無しさん
2009/03/28(土) 20:37:20HTMLの表示はコンポーネントを使いたい
なんてコンポーネントを使えばいいのかな?
C++Builder 2009
0457デフォルトの名無しさん
2009/03/29(日) 14:22:30ユーザー登録カードのユーザーIDって
Developer Networkに登録したやつを書けばいいの?
0458デフォルトの名無しさん
2009/03/29(日) 17:36:230459デフォルトの名無しさん
2009/04/07(火) 10:23:170460デフォルトの名無しさん
2009/04/07(火) 13:29:53これはどこをいじくると正常にコンパイルできるようになりますか?
0461デフォルトの名無しさん
2009/04/07(火) 13:34:49他のプロジェクトだと普通にコンパイルが通ってます。。
他のプロジェクトとオプションを見比べてみたのですが同じでした。。。
何が原因なのでしょうか
0462デフォルトの名無しさん
2009/04/07(火) 22:52:450463デフォルトの名無しさん
2009/04/08(水) 09:56:10>>460ですが、エラーの出るプロジェクトでも
記述するソースによってエラーが出たりでなかったりします。
5つcppファイルがあるのですが、そのうち1つのソースにwsprintfを記述するとエラーはでません・・・
その他の4つのソースに書くとコンパイルエラーがでます。もうわけがわかりません
0464デフォルトの名無しさん
2009/04/08(水) 10:23:57それ以上は、エスパーじゃないからわからん。
0465デフォルトの名無しさん
2009/04/08(水) 11:10:10単純なミスならシンボルエラーは出ないんだけど・・・
同じコードをコピペしてるからスペルミスは無いし・・・
0466デフォルトの名無しさん
2009/04/08(水) 12:20:26思われることでつまずきました。最近 C++Builder 6 に代えて
Turbo C++ Explorer を使い始めたのですが,
[リンカ エラー] Error: ファイル 'UNIT1.DFM' を開けません
が発生したとき,これを解決する方法が分りません。お教え下されば幸です。
宜しくお願いします。
0467デフォルトの名無しさん
2009/04/08(水) 12:22:47を用意する。
ってか、ファイル間違って消しちゃったんじゃないの?
そうなら、フォーム作り直しw
0468デフォルトの名無しさん
2009/04/08(水) 13:05:42<466>です。早速コメント有難うございます。
'Unit1.dfm' は存在します。該エラーは,例えば作成した project を収めた
フォルダーを移動したり,別の場所にコピーして開いたときなどに発生します
が,そのような場合に必ず起きる訳でもなく,原因が分りません。
小生とは別の方の同様の質問が,
http://gimite.net/bcbqtree/qtreemain.cgi?mode=thread&thread=1117
にありますが,アドバイスは寄せられていません。
0469467
2009/04/08(水) 13:08:32あ、BCB6なら使ってるけど、TCEは使ってないので分かりません。。。
0470デフォルトの名無しさん
2009/04/08(水) 13:25:16<466>です。再々のレスポンス有難うございました。小生も当面,BCB6 に戻ろう
かと思います。
0471デフォルトの名無しさん
2009/04/08(水) 14:16:37作成したプロジェクトを「別の名前を付けて保存」を選んで移動させた?
それともエクスプローラーで移動?
フルパスが書かれてるかも知れないからチェックした方が良い。
プロジェクトファイルをテキストエディタで開いてみ。
0472デフォルトの名無しさん
2009/04/08(水) 14:17:30違うかも知れないけど
#include <tchar.h>
って書いてみて。
違ってたらゴメン。
0473デフォルトの名無しさん
2009/04/08(水) 14:34:20情報ありがとうございます。
それをインクルードしてみましたが未定義のシンボルエラーがでます。。。
うーん、何で同じプロジェクトでコンパイルが通るソースと通らないソースがあるのだろうか・・・
0474デフォルトの名無しさん
2009/04/08(水) 14:58:340475デフォルトの名無しさん
2009/04/08(水) 15:07:25ログもちゃんと読めない馬鹿はレスしないで下さいね。
お前みたいな奴のレスなんて期待してませんから^^
0476デフォルトの名無しさん
2009/04/08(水) 15:20:33何か変わったことはやってますか?
たとえば、古いバージョンと共存させたりしているとか、
ダイレクトXを使っているとか。
0477デフォルトの名無しさん
2009/04/08(水) 15:39:000478デフォルトの名無しさん
2009/04/08(水) 15:53:200479デフォルトの名無しさん
2009/04/08(水) 16:03:36あ、するどいですね!
DirectShow使ってます。
>>475
フォローありがとん
0480デフォルトの名無しさん
2009/04/08(水) 16:13:20>>471のヒント有難うございました。解決しました。
Project1.bdsproj をクリーンにするには,新たに簡単な
VCLアプリケーションを作って別のフォルダーに保存し,
そこにある unit1.cpp, unit1.dfm, unit1.h に前のものを
上書きして再コンパイルすればよいことも分りました。
数週間来の憂鬱から開放されました。
再度お礼申上げます。
0481デフォルトの名無しさん
2009/04/08(水) 16:30:24いやな仕様だね。
0482デフォルトの名無しさん
2009/04/08(水) 16:57:39strsafe.h をインクルードしてるかどうかチェックしてみて。
多分それじゃないかなぁ?
そのヘッダの中を覗いてみ。
0483デフォルトの名無しさん
2009/04/08(水) 17:16:22確かにDShow.hにstrsafe.hがインクルードされてました!
んでその中を見るとなにやらwsprintf等のAPIを
#undefしたり#defineしたり怪しい事やってますね・・・
0484デフォルトの名無しさん
2009/04/08(水) 17:23:50それはセキュリティ的に非推奨のメソッドを削除しちゃってくれてる。
使わないか、ヘッダを変更するかはあなた次第。
0485デフォルトの名無しさん
2009/04/08(水) 17:29:48なるほど原因がわかってスッキリしました!
ありがとうございます。
0486デフォルトの名無しさん
2009/04/13(月) 13:04:49エクスプローラが落ちた際に、自動的に復活するにはどうしたらよいのでしょうか?
0487デフォルトの名無しさん
2009/04/13(月) 13:14:14なんか登録状態を取得する方法あると思うけど
それを処理する。
どんなメッセージかは覚えてない。
0489デフォルトの名無しさん
2009/04/13(月) 14:56:29しかも曖昧なことしか言ってないし
0491デフォルトの名無しさん
2009/04/13(月) 16:16:580492デフォルトの名無しさん
2009/04/13(月) 16:29:09つhttp://hp.vector.co.jp/authors/VA000092/win32/misc.html
0493デフォルトの名無しさん
2009/04/13(月) 19:00:410494デフォルトの名無しさん
2009/04/14(火) 10:07:190495デフォルトの名無しさん
2009/04/14(火) 10:09:490496デフォルトの名無しさん
2009/04/14(火) 14:24:04するにはどうしたらよいのでしょう?
現在フォームにMainMenuを貼っています。
フォームがアクティブの時は黒で、非アクティブの時は薄いグレーで表示されますが、
常にメニューの色は黒にしておきたいのですが、どなたか方法をご存知の方いらっしゃいませんか?
0497デフォルトの名無しさん
2009/04/14(火) 14:25:360498デフォルトの名無しさん
2009/04/14(火) 14:34:57Windows のコントロールの機能なので、自前で描画するしかないような気がする。
0499taguti
2009/04/14(火) 15:36:53(x1、y1)(x2、y2)(x3、y3)を頂点に持つ三角形の面積を計算して、その値を表示するプログラムを作成してください。
・公式:底辺x高さ÷2を使って計算してください。
お願いします!!
0500デフォルトの名無しさん
2009/04/14(火) 15:41:26できない。どうしてもやりたいならツールバーでメニューを構成すること。
0501デフォルトの名無しさん
2009/04/14(火) 15:55:47宿題スレでも池
0502デフォルトの名無しさん
2009/04/14(火) 15:58:20マルチ乙
http://pc12.2ch.net/test/read.cgi/tech/1237091698/493
http://pc12.2ch.net/test/read.cgi/tech/1232055225/770
http://pc12.2ch.net/test/read.cgi/tech/1217575832/499
http://pc12.2ch.net/test/read.cgi/tech/1235927586/774
http://pc12.2ch.net/test/read.cgi/tech/1212498448/876
http://pc12.2ch.net/test/read.cgi/tech/1212409946/66
http://pc12.2ch.net/test/read.cgi/tech/1217575832/499
http://pc12.2ch.net/test/read.cgi/tech/1192201659/808
http://pc12.2ch.net/test/read.cgi/tech/1205156417/821
http://pc12.2ch.net/test/read.cgi/tech/1238032584/16
http://pc12.2ch.net/test/read.cgi/tech/1224719784/934
0503デフォルトの名無しさん
2009/04/15(水) 14:24:20けっこう時間かかるの?
0504デフォルトの名無しさん
2009/04/15(水) 21:29:06関連してないと思う。
0505デフォルトの名無しさん
2009/04/15(水) 23:03:56バージョンアップ版インストールするのにユーザーIDとか必要なんじゃないの?
0506デフォルトの名無しさん
2009/04/16(木) 00:07:58購入は直販してたときはチェックされてたけど今はどうだろ?
直接電凸か公式フォーラムで聞いてみたら?
0507デフォルトの名無しさん
2009/04/16(木) 10:08:43以下のエラーが表示される
[ILINK32 エラー] Error: 未解決の外部参照 '__fastcall Inglobalprotocols::
CopyFileTo(const System::UnicodeString, const System::UnicodeString)' が
D:\C_SOURCE\CRHENKAN2\DEBUG_BUILD\UNIT1.OBJ から参照されました
プログラム内でIndy10内のCopyFileTo関数を使用している。
エラーの原因は
1.Indy10のライブラリがないか、
2.リンク指定時にIndy10のライブラリを指定してないか
だど思う。
これに対処の仕方を分かっている方がおられるなら、教えて下さい。
環境については、デフォルトのままである。
0508デフォルトの名無しさん
2009/04/16(木) 11:08:01以下のエラーが表示される
[ILINK32 エラー] Error: 未解決の外部参照 '__fastcall Inglobalprotocols::
CopyFileTo(const System::UnicodeString, const System::UnicodeString)' が
D:\C_SOURCE\CRHENKAN2\DEBUG_BUILD\UNIT1.OBJ から参照されました
プログラム内でIndy10内のCopyFileTo関数を使用している。
エラーの原因は
1.Indy10のライブラリがないか、
2.リンク指定時にIndy10のライブラリを指定してないか
だど思う。
これに対処の仕方を分かっている方がおられるなら、教えて下さい。
プログラミング環境については、デフォルトのままである。
0509デフォルトの名無しさん
2009/04/16(木) 11:56:17以下のエラーが表示される
[ILINK32 エラー] Error: 未解決の外部参照 '__fastcall Inglobalprotocols::
CopyFileTo(const System::UnicodeString, const System::UnicodeString)' が
D:\C_SOURCE\CRHENKAN2\DEBUG_BUILD\UNIT1.OBJ から参照されました
プログラム内でIndy10内のCopyFileTo関数を使用している。
エラーの原因は
1.Indy10のライブラリがないか、
2.リンク指定時にIndy10のライブラリを指定してないか
だど思う。
これに対処の仕方を分かっている方がおられるなら、教えて下さい。
プログラミング環境については、デフォルトのままである。
0510デフォルトの名無しさん
2009/04/16(木) 13:17:120511デフォルトの名無しさん
2009/04/17(金) 11:01:010512デフォルトの名無しさん
2009/04/22(水) 14:56:29Imageの画像を回転させたいのですが、その時に枠も一緒に回転させたいと思っています。
リージョンの機能を使えば枠の形を変形できるそうですが、角度等を細かく指定することはできますでしょうか?
調べてみたところ、決まった形を組み合わせることは出来るようですが、四角い枠に角度を指定して回転させることはできませんでした。
よろしくお願いします。
0513デフォルトの名無しさん
2009/04/22(水) 17:39:56WinAPIのGDI関連のリージョン?
あれ、自由フォーマットにするには
ライン単位で切ったリージョンを合成するしかないよ。
0514デフォルトの名無しさん
2009/04/22(水) 21:36:09何をしたいのかよくわからん。枠って何?リージョンってのは形状だけのデータで、
クリッピングという行為に使えるというだけ。画像の一部をクリップしたものを任意の角度で
回転したいということなのかな?それなら元画像をリージョンでクリップしたものと
それ以外の部分に分けて、クリップしたものを回転して、合成すればいいんじゃない?
とエスパーしてみる。
0515デフォルトの名無しさん
2009/04/22(水) 21:52:37そしたら回転を表す行列で座標変換したらどうか?
画面のちらつきはダブルバッファで抑えるとして
0516デフォルトの名無しさん
2009/04/24(金) 13:26:27QC見ると直したみたいな事になってるんだけど違うんだろうか。
0517デフォルトの名無しさん
2009/05/01(金) 07:40:41C++Builderは似たような機能ってついてますか?
0518デフォルトの名無しさん
2009/05/01(金) 23:51:400519デフォルトの名無しさん
2009/05/10(日) 21:06:09これを黒にする方法がありますか。
0520デフォルトの名無しさん
2009/05/10(日) 21:09:19それ以外の方法はない。
0521デフォルトの名無しさん
2009/05/10(日) 22:03:36コンパイルしちまえば?
0522デフォルトの名無しさん
2009/05/10(日) 22:16:160523デフォルトの名無しさん
2009/05/11(月) 17:49:08呼び出し履歴のような、関数実行ログという感じの
関数名をファイル出力する機能を作りたいです。
関数ごとに処理を記述するのではなくて、出来るだけ少ない記述で
実現したいです。
例外処理が発生した時のトレースが出来ればと。
意味分かんないようでしたらすみません。
0524デフォルトの名無しさん
2009/05/11(月) 20:18:35try/catchをちゃんと記述すべきだろ。
0525デフォルトの名無しさん
2009/05/11(月) 20:28:22デバッガ上で確認じゃ駄目なん?例外の発生は設定次第で記録されるはず。
もうすこし具体的に状況を説明するといい方法がでてくるかもね。
0526デフォルトの名無しさん
2009/05/11(月) 20:29:53関数特有の例外ならいいけどメモリ違反とかさ。
予測していない例外の場合はつぶしておきたいと。
0527デフォルトの名無しさん
2009/05/11(月) 20:49:230528デフォルトの名無しさん
2009/05/11(月) 22:02:28DynamicArrayをPascalでSetLengthしてるとブーブー言うんだがバグか?
0529523
2009/05/11(月) 22:22:14526さんの言われている通り、どの関数で例外が出ているのかを知りたいです。
制御系ソフトのコンソール部をBuilder2009で作っています。
そのソフトは長時間(1週間以上)起動しているためか、最初の頃は出ない
読み込み違反等の障害メッセージが突如出てしまいます。
524さんが言われる通り、try/catchを記述すればいいのですが、
関数も多くなってきて、出来るだけソースを短く出来ればと考えています。
527さんの入れているCodeguardも考えたのですが、リリース版などでは
重くなると聞いたもので。
分かりづらくてすみません。
0530デフォルトの名無しさん
2009/05/12(火) 00:03:45マップファイルでも出せばアドレスはわかるんでないのかな
0531デフォルトの名無しさん
2009/05/12(火) 00:53:19そしてあやしそうなところだけでも、catchすればいいのでは。
0532デフォルトの名無しさん
2009/05/12(火) 01:10:55ぬるぽ読み込み違反とかのWin32例外だろ。
「xxxxの命令がnnnnのメモリを参照しました云々」てやつ。
xxxxがわかるならどこで違反してるかもわかるでしょ。
0533デフォルトの名無しさん
2009/05/12(火) 01:28:37CodeGuard掛ければ一発じゃん
0534デフォルトの名無しさん
2009/05/12(火) 21:03:220535デフォルトの名無しさん
2009/05/13(水) 15:40:050536デフォルトの名無しさん
2009/05/14(木) 00:14:350537デフォルトの名無しさん
2009/05/14(木) 11:36:50ってのがhppで
#define AAA L"\x82\xa0\x82\xa0\x82\xa0"
ってなって代入しても元に戻らないの
とりあえずconst:Pchar='' にしといたが不便だ
0538デフォルトの名無しさん
2009/05/14(木) 18:34:400539デフォルトの名無しさん
2009/05/14(木) 18:36:15sprintf(str, "%Ld", int64);
0540デフォルトの名無しさん
2009/05/14(木) 18:50:32このブタ野郎っ!
できました!ありがとう
0541デフォルトの名無しさん
2009/05/15(金) 20:57:00TPrinterで印刷するのはめんどくさいし、
プリビューとかもできないので、
TQuickReportを使えないかと思うのですが、
Datasetの設定をどうにかごまかそうとしている
#じゃないと印刷してくれない模様
のですが、その方法が見つけられません。
お知恵をおねがいします。
0542デフォルトの名無しさん
2009/05/15(金) 21:00:09あ、すみません、BCB5です。
よろしくおねがいします。
0543デフォルトの名無しさん
2009/05/16(土) 01:18:36TQRMemoに全部吐け
0544デフォルトの名無しさん
2009/05/16(土) 11:39:540545デフォルトの名無しさん
2009/05/16(土) 15:20:30どうしてもしたいんならchar*にキャストすれば
0546デフォルトの名無しさん
2009/05/16(土) 16:01:25レスありがとうです。
その方法は最初に試しました。
が、QuickRep1->Print()とかしても何も印刷しなかったですし、
QuickRep1->Preview()しても何も表示しないので、
マニュアルのヘルプにあるようにてっきり
DatasetがActiveでないせいだとおもったのですが。
フォームにQuickReport張って、TQRMemo張って、
QuickRep1->Print()だけでは設定が足りないですか?
0547デフォルトの名無しさん
2009/05/16(土) 18:15:11レスありがとうございます。
とりあえず希望の動作になりましたが、いまいち仕組みがわかりません。
UnicodeString rcvBuf = Socket->ReceiveText();
wchar_t A = rcvBuf[1]; --> 0x2006
switch ( char(A) ) {
case LT_ACK:
処理A
break;
}
このときにchar(A)は0x06となって希望の動作をしますがrcvBuf[1]から0x20を
取得したい場合は、どうのようになるのでしょうか?
0548デフォルトの名無しさん
2009/05/17(日) 11:06:33QuickRepotはDelphi6でしか使ったこと無いから憶測だが、
TQRStringsBandを使うのがポイントだと思う
1) 新規作成からレポートを作成
2) TQRStringsBandを一つ貼り付ける。DetailBandは削除
3) レポート本体(TQuickReport)のFunctionsプロパティを見ると、
QRSTRINGSBAND1という変数が出来ているはずなので確認。
4) 1)のバンドにTQRExprを貼り付ける
5) QRExprのExpressionに"QRSTRINGSBAND1"をセット
(意味がわからなければTQRStringsBandのヘルプ見れ)
6) 印刷する時は次のように
qrep = new TQuickReport1(this):
qrep->QRStringsBand1->Items->Assign(Memo1->Lines);
qrep->Print();
delete qrep;
0549デフォルトの名無しさん
2009/05/17(日) 11:21:52char* pa = (char*)&A;
pa[0];//0x06
pa[1];//0x20
だが、そもそもReceiveTextを使ってる時点で間違ってる。
最初からReceiveBufを使ってchar配列に取り込めば余計な事考えずに済む。
0550デフォルトの名無しさん
2009/05/18(月) 09:44:48できました!ありがとう
勉強になりますた。
0551デフォルトの名無しさん
2009/05/18(月) 12:16:19>TQRStringsBandを使うのがポイントだと思う
これでした。
で、TQRStringsBand#Itemsをいくつか登録すると、
その数だけTQRStringsBandの内容が繰り返されました。
ここから暫くは自力でいけそうです。
ありがとうです。
0552デフォルトの名無しさん
2009/05/18(月) 15:00:28BluetoothApis.hってのが必要なようなのですが、
何処で手に入るのでしょうか
ググってもVSの記事ばっかりで、
VSはたぶん最初から入ってるんですよねきっと。
もしかしてBCB5ではムリですか?
0553デフォルトの名無しさん
2009/05/18(月) 15:46:45求めているのはRFCOMMというものらしいです。
テキスト通信がしたいだけなのですが、
なんだかムズすぎです;
0554デフォルトの名無しさん
2009/05/18(月) 22:49:40Delphiなら
Project JEDI API Header Library
ttp://www.delphi-jedi.org/apilibrary.html
にあるけど、C++Builderの場合はWDKなのかな?
WDK の入手方法
ttp://www.microsoft.com/japan/whdc/DevTools/WDK/WDKpkg.mspx
0555デフォルトの名無しさん
2009/05/19(火) 09:30:55惜しい。そのものな感じのがありますね。> JEDI
.pasだから読めるかなと思ったのですが...orz
0556デフォルトの名無しさん
2009/05/19(火) 11:19:44Windows Platform SDKに含まれていました。
サンプルコードのコメントが沢山あるので、
これでなんとかなるカモ。
0557デフォルトの名無しさん
2009/05/19(火) 11:23:23レポート希望
0558デフォルトの名無しさん
2009/05/19(火) 12:24:04BluetoothApis.hでは、
Radio Enumuration, Device Enumuration, Radio Authenticationなど
ができるだけでした。
そこから先はソケットを使う模様です。
わかんないことばっかしでメゲそう orz
0559デフォルトの名無しさん
2009/05/19(火) 12:43:29Bluttooth使うのって難しいの?
使う予定あるんだけど。
0560デフォルトの名無しさん
2009/05/19(火) 13:18:56ヘルプでページ内のリンクを開いた後、「戻る」ボタンで戻ってくると
必ず戻ってきたページの先頭にスクロールがリセットされるんだけど、
これって仕様?
使い難くって仕方ない
0561デフォルトの名無しさん
2009/05/19(火) 13:34:09ただ、1つ1つのクラス仕様は小さくて見やすいんじゃないかと。
0562デフォルトの名無しさん
2009/05/19(火) 15:24:07あまりに糞すぎる
0563デフォルトの名無しさん
2009/05/19(火) 15:47:51軽いし、例もあったし
0564デフォルトの名無しさん
2009/05/19(火) 16:06:12ムズイです。
SocketがOKな人は平気なのかもしれないですけど、
ググっても引っ掛からない理由が判る気が。
途中からはTSocketで...ってワケにはいかないのかな。
ってどっちみちSocketわかんないから同じか。orz
0565デフォルトの名無しさん
2009/05/19(火) 16:26:070566デフォルトの名無しさん
2009/05/19(火) 16:41:16使いにくいヘルプは仕様なのね、残念
もうひとつ教えて
hとcppだけある状態で独自のコンポーネントってインストールできる?
bplにビルドしないと駄目?
0567デフォルトの名無しさん
2009/05/19(火) 16:59:07は2009での質問です。
6向けの「コンポーネント活用ガイド Vol2」にはhとcppだけ指定して
追加する方法が書かれていますが、2009では通用しないです
0568デフォルトの名無しさん
2009/05/21(木) 14:23:180569デフォルトの名無しさん
2009/05/21(木) 15:04:060570デフォルトの名無しさん
2009/05/21(木) 15:04:420571デフォルトの名無しさん
2009/05/21(木) 15:08:07それでもできますか?
0572デフォルトの名無しさん
2009/05/21(木) 15:12:19その自作クラスが Classes::TComponent の派生ならOK。
どうしてもならTApplicationでも渡しておけばいいし。
0573デフォルトの名無しさん
2009/05/21(木) 15:18:28あ、違います・・
何からも発生してないうんこクラスです。。
でも、そこら辺をあれするとできそうですね。
ありがとうございました。
0574デフォルトの名無しさん
2009/05/21(木) 15:29:44じゃNULLでも渡しておけば?
その自作クラスのデストラクタで確実に delete 出来るようにしておけば問題ないし。
0575デフォルトの名無しさん
2009/05/21(木) 15:33:45つまり、メッセージループがあるとこを指定してやんないといけない。
だからNULLなんて論外。
独自のクラスでメッセージを受け取れないなら
ダミーのウインドウを作成してそこで受け取るか、メインウインドウでメッセージを受け取るようにするなり
の対応が必要。
0576デフォルトの名無しさん
2009/05/21(木) 15:37:33実際にやってみてそういっているのか?
0577デフォルトの名無しさん
2009/05/21(木) 15:48:35Timer1 = new TTimer( Application );
Timer1->OnTimer = Timer1Timer;
で、ざっくり思った通りの動きになりました〜
0578デフォルトの名無しさん
2009/05/21(木) 15:51:57TTimerはNULL指定しても動作するし。
そもそもTTImerに渡す最下位クラスであるTComponentにはウインドウハンドルないし。
TTimerに渡す引数はオーナーを明示するだけでしかない。
オーナーが削除されたときに安全に、その子コンポーネントを削除するしくみ、それを提供するTComponentクラス。
明示的に削除するのであればオーナーをTComponentの派生にする必要はない。
>>577
あいあい。
0579デフォルトの名無しさん
2009/05/26(火) 12:10:04プリンタに対して出力するプログラムを作ってるんだけど、
PDFをうまく印刷する方法ってないでしょうか?
やりたいい事:
プリンタが複数台有って、ファイル名で印刷するプリンタを
指定して、そのプリンタで印刷を行う。
プリンタはそれぞれ縮小印刷とか、用紙の設定、両面印刷等を
Windowsのドライバで指定してある。
*プリンタはゼロックスのMFP、キャノンのインクジェットプリンタをUSB接続。
試したこと:
MSのOpenPrinterの参考ページを元に、Winに設定されている
プリンタに対してbyte*で読み込んだデータを流してみる。
*プリンタ設定のJob一覧には表示されるけど、出力されず。
TPrinterで、とにかくデータを書いてみる。
*バイナリのデータを直接出力する方法がわからなかった……。
なんとか、お知恵を拝借できないものでしょうか。
0580デフォルトの名無しさん
2009/05/26(火) 17:30:01PDFを扱うライブラリはあるの?
0581579
2009/05/26(火) 18:50:19まだ、何をどこまでやれるのかを試してる段階で、とにかく
PostScript対応如何にかかわらずどうすればプリンタにデータを
投げられるかを試してる段階で……。
ライブラリに関しても、まだ調査さえしてない段階です。
0582デフォルトの名無しさん
2009/05/26(火) 18:56:430583デフォルトの名無しさん
2009/05/26(火) 19:17:40TPrinterの方しかわからないけど、
Printer()->BeginDoc();
Printer()->Canvas に対して印刷したいドキュメントは描画する。
Printer()->EndDoc();
ってやる。
もちろんBeginDoc();の前にプリンタ関連の各種設定をしておくこと。
0584デフォルトの名無しさん
2009/05/26(火) 19:18:24↑ね。
0585デフォルトの名無しさん
2009/05/26(火) 22:14:38この発想は無かったw
0586デフォルトの名無しさん
2009/05/26(火) 23:48:21プリンタに送る必要がある。ということでPDFを処理できるもの、といったらやっぱりAdobeの製品
(AcrobatやReader)が最初に浮かんでくる。このあたりから攻めるべきじゃないかな。
0587デフォルトの名無しさん
2009/05/27(水) 11:43:15作ったソフトを起動するとC3280MT.DLLが無いってエラーがでます。
これオプションのどこを設定したら出なくなりますか?
0588デフォルトの名無しさん
2009/05/27(水) 11:58:39プロジェクト→オプション→動的RTLをfalseにする
0589デフォルトの名無しさん
2009/05/27(水) 11:59:24○>>587
0590579
2009/05/27(水) 12:10:16いろいろありがとう。
スケジュール的にDLLまで調査する時間がなさそうなので、
今回は「通常使うプリンタ」を動的に変更してAcrobatReaderに
頑張ってもらう方向で逃げようと思います。
というか、お客さんにそれで十分じゃね?って言われた……。
0591デフォルトの名無しさん
2009/05/27(水) 13:46:34あ、ほんとだできたありがとう
これコードガードのあれっぽかたから
そっちばっかりみてますた
0592デフォルトの名無しさん
2009/05/27(水) 18:34:12なぜ、そう思う?
『Run Time Library』だろ、それ。
0593デフォルトの名無しさん
2009/05/27(水) 22:26:53ぐぐたらコードガードって出たんだ馬鹿はレスするな
0594デフォルトの名無しさん
2009/05/27(水) 23:30:12お許しください。
VC++6.0でのプロジェクトは今のC++Builder無償版でコンパイルできるのでしょうか?
どなたか教えてください。もしくは、誘導お願いします。
0595デフォルトの名無しさん
2009/05/27(水) 23:32:520596デフォルトの名無しさん
2009/05/27(水) 23:41:02すみません、質問に書き忘れたのですがDLLを作る
プロジェクトなら行けるとかそういうことはありませんか?
新規に購入する資金がなくて。
0597デフォルトの名無しさん
2009/05/28(木) 03:50:530598デフォルトの名無しさん
2009/05/28(木) 08:15:43簡単にはインスコさせてくれないみたいなので教えてもらいたかった。
0599デフォルトの名無しさん
2009/05/28(木) 10:15:270600デフォルトの名無しさん
2009/05/28(木) 10:18:230601デフォルトの名無しさん
2009/05/28(木) 10:26:530602デフォルトの名無しさん
2009/05/28(木) 13:47:050603デフォルトの名無しさん
2009/05/28(木) 15:35:220604デフォルトの名無しさん
2009/05/28(木) 15:38:330605デフォルトの名無しさん
2009/05/28(木) 15:40:230606598
2009/05/28(木) 19:59:31目的としていることが出来るならインスコするけど、インスコして
出来なかったじゃイヤなので。
普段は今だにDelphi使いなので、C++に用がなくて
出来るだけ余計なものは入れたくないんだ。
0607デフォルトの名無しさん
2009/05/28(木) 20:10:020608デフォルトの名無しさん
2009/05/28(木) 20:17:340609598
2009/05/28(木) 20:22:37アップデートはするし、カスペル入れてるけど普段は切ってるな。
で、VC++6.0のDLLのソースはコンパイルできるの?
0610デフォルトの名無しさん
2009/05/29(金) 16:27:01OSはWindows98かね。
0611デフォルトの名無しさん
2009/05/29(金) 16:58:28中国製のコンパイラらしいけど
0612デフォルトの名無しさん
2009/05/29(金) 19:27:580613デフォルトの名無しさん
2009/05/29(金) 19:36:56>HDDが30Gのノートだからね。
>HDDが30Gのノートだからね。
HDD
0614デフォルトの名無しさん
2009/05/29(金) 22:13:220615デフォルトの名無しさん
2009/05/29(金) 22:14:36で、だからなんだね、チミ
0616デフォルトの名無しさん
2009/05/29(金) 22:22:300617デフォルトの名無しさん
2009/05/30(土) 00:15:130618デフォルトの名無しさん
2009/05/31(日) 02:58:170619デフォルトの名無しさん
2009/05/31(日) 10:51:580620デフォルトの名無しさん
2009/05/31(日) 12:28:480621デフォルトの名無しさん
2009/05/31(日) 12:34:590622デフォルトの名無しさん
2009/05/31(日) 12:44:110623デフォルトの名無しさん
2009/05/31(日) 12:56:12それはコンベンショナルメモリのサイズ
0624デフォルトの名無しさん
2009/05/31(日) 14:33:530625デフォルトの名無しさん
2009/05/31(日) 14:52:20DDR2は値上がり基調
0626デフォルトの名無しさん
2009/05/31(日) 19:30:340627デフォルトの名無しさん
2009/06/03(水) 00:47:440628デフォルトの名無しさん
2009/06/10(水) 22:50:53BDS2006使ってます。
Clock.exeという簡単な時計プログラムを作りました。
ウインドウの位置を覚えておくために
TIniFile *ini;
ini = new TIniFile(ChangeFileExt(Application->ExeName, ".ini"));
ini->WriteInteger("Main","Top",Top);
ini->WriteInteger("Main","Left",Left);
delete ini;
としてiniファイルを作成して覚えておくことにしました。
プログラム起動時に下記の通りに読み出しています。
TIniFile *ini;
ini=new TIniFile(ChangeFileExt(Application->ExeName,".ini"));
Top=ini->ReadInteger("Main","Top",320);
Left=ini->ReadInteger("Main","Left",320);
delete ini;
これでちゃんとウインドウの位置を覚えてくれて動作に問題はないのですが
ふと気づいたんですが、作成されているハズのiniファイルがないんです。
どこにも。HDD全部を検索したけど、見つかりませんでした。
どうなってるんでしょうか。
0629デフォルトの名無しさん
2009/06/10(水) 23:26:13OSがVistaとか?
0630デフォルトの名無しさん
2009/06/10(水) 23:38:36ExplorerでHDDを全部検索してみたのですが、
該当するiniファイルはありませんでした。
0631デフォルトの名無しさん
2009/06/11(木) 09:28:12の戻り値の場所、ちゃんと見た?
0632628
2009/06/11(木) 19:53:09exeが存在している場所と同じディレクトリとなっています。
パスがおかしいということもありません。パスに漢字も使っていません。
exeとかobjとかはちゃんとあり、iniファイルだけありません。
でもなぜか、
ReadInteger
すると、正しい値が返ってきます。
なぞです。
0633デフォルトの名無しさん
2009/06/11(木) 20:19:12念のためフォルダオプションで
・隠しファイル属性をすべて表示 をチェック
・保護されたファイルをオペレーティングシステムファイルを表示をしない のチェックをはずす
をして確認してみたらどうだろう
0634628
2009/06/11(木) 20:38:06AnsiString str;
str=ChangeFileExt(Application->ExeName,".ini");
if(FileExists(str)==true){
Application->MessageBox("OK", "正常", MB_OK);
}else{
Application->MessageBox("NG", "異常", MB_OK);
}
としてもNGが表示されます。
str=ChangeFileExt(Application->ExeName,".obj");
とすると、ちゃんとOKが表示されます。
ファイル検索ツールでHDD全部を検索しても
Clock.iniは見つかりません。
ふしぎです。
0635デフォルトの名無しさん
2009/06/11(木) 20:54:000636デフォルトの名無しさん
2009/06/11(木) 21:15:51その昔、
「clock」っていうファイルは
禁断のファイル名だったよ。
0637デフォルトの名無しさん
2009/06/11(木) 21:21:32実際にはレジストリに書き出されていたりしない?
0638デフォルトの名無しさん
2009/06/11(木) 21:26:010639628
2009/06/11(木) 21:33:40ご指摘の通り、レジストリに書き込まれていました。
[HKEY_CURRENT_USER\Software\Microsoft\Clock]
にありました。
実行ファイル名を、Clock.exeからClock2009.exeに変更したら
ちゃんとiniファイルが作成されます。
やっと解決しました。どうもありがとうございます。
Clock.iniというファイル名は使ってはいけないってことなんでしょうか。
それとも、TIniFile のバグ?
0640デフォルトの名無しさん
2009/06/11(木) 21:51:170641デフォルトの名無しさん
2009/06/12(金) 10:14:590642デフォルトの名無しさん
2009/06/12(金) 10:18:56CONも
0643デフォルトの名無しさん
2009/06/12(金) 17:06:13CLOCKは98独自だったような曖昧な記憶
0644デフォルトの名無しさん
2009/06/20(土) 16:57:380645デフォルトの名無しさん
2009/06/20(土) 17:13:34Commodore
0646デフォルトの名無しさん
2009/06/22(月) 16:25:19TStringListのLoadFromFileにファイル名を与えないと例外になるのはいいのですが
例外をtry〜catchで受けてるのにデバッガがアクセス違反エラーを出してそこで落ちてしまいます
オプションのデバッガでプログラムで受けるようにしてるのですが
他のどこを設定したらいいですか?
0647デフォルトの名無しさん
2009/06/22(月) 18:00:14あと数日か、買うかどうするか・・・
0648デフォルトの名無しさん
2009/06/22(月) 18:47:56このキャンペーンてさ、買うときに学生証の提示必須かと思ったら
>本製品の購入には学生証・教職員証のご提示は不要ですので
って書いてるけど、これって社会人でもOKってこと?
それなら買おうかな。
0649デフォルトの名無しさん
2009/06/22(月) 18:56:21春頃に封書で届いた
内容はこれ↓
http://www.codegear.com/jp/article/39555
0650デフォルトの名無しさん
2009/06/22(月) 19:00:25一応、同様な症状に見舞われた人の為に。
C++Builder2009使用中withXP(どちらも最新)
まだIDEの調子は完全じゃ無いのな。(もうアフォとしか…)
正確には統合環境の問題だと思うんだが、ソースでの右クリックによる
コピペがオカシクなり始めたと思ったら、今度はあらぬ所でコンパイルエラー。
始まりは…
>>>>> SelectDirectory("フォルダセレクト", "\\", SelectDir)
コンパイラ:「そんな関数あるかい!」
…おぃおぃ。今まで通ってたろ?ってのに。徐々に他にも今までに無い警告多数。
エラー多数。
…で、問題箇所のみ抜粋して、新たにプロジェクト作成してコンパイル。
ー>何も問題無し。(-_-;
プロジェクトクリーンアップするも効果無し、仕方なく全プロジェクトを閉じた上で
C++Builderを終了し、該当プロジェクトファイルを削除し、ソース以外を全て削除し、
C++Builderを再起動後、新規プロジェクト作成し、該当ソースを加えコンパイル。
ー>何も問題無し。(-_-;
プロジェクトファイルがオカシクなって、何処かにキャッシュ(それとも
プリコンパイルヘッダ?がオカシク?)されとったんか?まったく。
まとめて書いてしまえばなんて事ないんですけど…数行のソースならともかく、
ある程度の規模のソース書いてれば、エラーが出れば自分が何か「やらかした…」
と思って、必死にソースから原因を探そうとするじゃないですか…。
あ〜腹立つ!!
0651デフォルトの名無しさん
2009/06/22(月) 19:13:29おかしくなったら、全部閉じて再起動。
これ常識。
別に、Builderだけの話じゃない。VSだって同様だ。
0653デフォルトの名無しさん
2009/06/22(月) 21:47:46折りたたみ機能とかいらん機能の弊害だろう
0654デフォルトの名無しさん
2009/06/23(火) 00:32:14でも、あれはあれで便利な時もあるんですよ、たまに。…って弊害が大きくちゃ
仕方ないですね。
どうにも、IDEってか、エディタのソースがどうなってるのか一度見てみたい。
時々カーソル位置を上手く認識してなかったり、コピペがおかしくなったり。
特に大きめのソース&複数のソースのデバッグを続けると発生し易いような。
(ソースデバッガ兼用な所も一因なのかな)(↑使い方に問題有りかも?C++なのに
ってか、OOPなのに…?って事かな)
いずれにせよ、少しでもおかしくなったら、まずIDEを疑えって事ですね。
0655デフォルトの名無しさん
2009/06/23(火) 00:45:23BCB5のときに俺がバグ報告をFAXで3枚も送ってやったからそれが6ではちゃんと直ってるし、まあデバッグ実行で例外出しまくってると動作がおかしくなったりBCB自体に例外が出て終了できなくなったりなんてことはたまにあるけど致命的なものはないしね
動作も軽いしもう最高だよ!
0656デフォルトの名無しさん
2009/06/23(火) 10:49:50良すぎるでかんわ。
0657デフォルトの名無しさん
2009/06/23(火) 14:42:210658デフォルトの名無しさん
2009/06/23(火) 16:08:52っていつ出るんだろう。
2009は2008年に出た希ガス。
0659デフォルトの名無しさん
2009/06/23(火) 16:11:540660デフォルトの名無しさん
2009/06/23(火) 16:38:360661デフォルトの名無しさん
2009/06/23(火) 16:40:040662デフォルトの名無しさん
2009/06/23(火) 17:18:480663デフォルトの名無しさん
2009/06/23(火) 17:22:470664デフォルトの名無しさん
2009/06/23(火) 22:58:280665デフォルトの名無しさん
2009/06/25(木) 10:26:27これって何ですか?
0666デフォルトの名無しさん
2009/06/25(木) 11:07:220667デフォルトの名無しさん
2009/06/25(木) 11:37:170668665
2009/06/25(木) 11:57:36いつもはりつきご苦労様です。
0669665
2009/06/25(木) 17:48:54ヘルプを見たら、2つ関数があって分かりました。
はっきり言って、Exsampleをコピペして動作見たのが間違いだった(><;)
0670デフォルトの名無しさん
2009/06/27(土) 21:23:421画素4バイト(ゴミ, R, G, B各1バイト)のデータが
long img[4*160*120];の配列に格納されています。
これを160x120のカラー画像として、TCanvasにDrawメソッドで
描画するにはどうしたらいいのでしょうか?
img配列をTBitmap(?)などに格納すればいいみたいですが、
どのように格納すればいいのか分かりません。
よろしくお願いします。
0672デフォルトの名無しさん
2009/06/27(土) 23:48:060673デフォルトの名無しさん
2009/06/28(日) 00:37:00ScanLine()を使えば少しは速くなる
ドット単位で打つと猛烈に時間がかかる
0674デフォルトの名無しさん
2009/06/28(日) 02:29:26ありがとうございます。ScanLine()でやってみたいと思います。
0675デフォルトの名無しさん
2009/07/05(日) 14:51:56StringGridのセルを結合する方法が分かりませんorz
先輩方、どうかご教示を(´・ω・`)
0676デフォルトの名無しさん
2009/07/05(日) 15:15:470677デフォルトの名無しさん
2009/07/05(日) 15:28:00?ttp://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200407/04070056.txt
0678デフォルトの名無しさん
2009/07/06(月) 00:16:05有難うございます!
しかし解決できずorz
もっと勉強しないとだなぁ・・・('A`)
0679デフォルトの名無しさん
2009/07/06(月) 01:13:010680デフォルトの名無しさん
2009/07/06(月) 01:13:38ttp://www.tmssoftware.com/site/gridpack.asp
こんなのとか。
0681デフォルトの名無しさん
2009/07/06(月) 20:37:530682デフォルトの名無しさん
2009/07/06(月) 21:10:17有償版があるくらいにアレなんですね、わざわざ有難うございます!
StringGridは2009だとその辺が改善されてるんですかね?
というか2009BCB以外に安いですね、高いけど('A`)
0683デフォルトの名無しさん
2009/07/07(火) 00:05:02改良コンポなんかごろごろしてるから探せ
0684デフォルトの名無しさん
2009/07/07(火) 09:45:25相変わらずヘルプは腐ってるな
0685デフォルトの名無しさん
2009/07/07(火) 10:25:26StringGridで検索しているに1000万ジンバブエドル
0686デフォルトの名無しさん
2009/07/07(火) 14:30:09横スクロールすると結合したセルの表示がおかしくなります。
どうすればいいですか?
0687デフォルトの名無しさん
2009/07/07(火) 14:40:150688デフォルトの名無しさん
2009/07/07(火) 14:46:29DrawCellイベント内なのでRefreshをすると永遠にチラつきまくりますが、
InvalidRectはヘルプに載ってないのですがAPIですか?
0689デフォルトの名無しさん
2009/07/07(火) 14:51:09でした。
>DrawCellイベント内なので
スクロールの終了後にコールすれば良いんジャマイカ?
0690デフォルトの名無しさん
2009/07/07(火) 14:52:31これは失礼しました。
TopLeftChangedでやればよかったんですよね^^
とりあえずTopLeftChangedでやったらうまくいきましたが
InvalidateRectも調べてみます。
ありがとうございました
0691デフォルトの名無しさん
2009/07/09(木) 14:16:35今回、初めてC++Builder5を使用してプログラムを作成していますが
何もわからない。
1、以下のようなテキストファイルが存在する。
---------------------------------
1の要求を受付ました。
1の要求の応答を送信しました。
2の要求を受け付けました。
2の要求の応答を送信しました。
<-どんどん新しいデータが入る。
---------------------------------
2、テキストファイルのデータを新しいもの順に表示する。
※↓textArea??MeMo????
--------------------------------- ↑新
2の要求の応答を送信しました。 <-新しいデータが来るたび一番上に追加される。
2の要求を受け付けました。
1の要求の応答を送信しました。
1の要求を受付ました。
--------------------------------- ↓古
上記のようなものを実現したいのですが、さっぱりわかりません。
誰か教えてください・・・(;;)w
0692デフォルトの名無しさん
2009/07/09(木) 14:22:350693デフォルトの名無しさん
2009/07/09(木) 14:47:550695デフォルトの名無しさん
2009/07/09(木) 15:56:03このブタ野郎がっ!!
TStringList *sl = new TStringList( );
sl->LoadFromFile( "元ファイル" );
sl->Stringsをソート
sl->SaveToFile( "新ファイル" );
delete sl;
めんどいなら↓
TStringList *sl = new TStringList( );
TStringList *wl = new TStringList( );
sl->LoadFromFile( "元ファイル" );
wl->Clear( );
for( int i = sl->Count - 1; i>= 0; i -- ){
wl->Add( sl->Strings[i] );
}
wl->SaveToFile( "新ファイル" );
delete wl;
delete sl;
0696デフォルトの名無しさん
2009/07/09(木) 16:12:53ソートじゃきっとまずいだろ
ちゃんと逆順になめなきゃ
「表示する」ってんだから
保存は不要だろうけど
ファイル読みの排他処理も気になるが
まあ、ときどきチェックして
変化分だけ先頭に追加表示かな
0697デフォルトの名無しさん
2009/07/09(木) 16:32:52>>696
TStringListのソートじゃアレだとおもったからソースはかかなかった。
自分で逆からぐるぐるやればアレ。
表示だけなら
TStringList *sl = new TStringList( );
sl->LoadFromFile( "元ファイル" );
for( int i = sl->Count - 1; i>= 0; i -- ){
Memo1->Lines->Add( sl->Strings[i] );
}
delete sl;
これでいいんじゃね?
これはTMemoに書いてるがそこを変えればおk
0699デフォルトの名無しさん
2009/07/09(木) 16:36:260700デフォルトの名無しさん
2009/07/09(木) 16:40:13---------------
| |
常に | | 常に
書き込み-> | | <-読み込み
| |
| |
---------------
を行うわけですが、問題ないですか?
問題がある場合は、みなさんはどのように対応していますか?
0701デフォルトの名無しさん
2009/07/09(木) 16:42:09おうっ!壊れた。
初心者ですので勘弁してください。
ひとつのログファイルに常に書き込むプログラムと常に読み込むプログラムが
いるけど大丈夫ですか?
0702デフォルトの名無しさん
2009/07/09(木) 17:54:29無料のものならFirebird。
0703デフォルトの名無しさん
2009/07/09(木) 18:00:28どうすれば良い○| ̄|_
0704デフォルトの名無しさん
2009/07/09(木) 18:14:530705696
2009/07/09(木) 18:19:17ただのログファイルの表示に
それはないだろ
>>701
書き込み側のプログラムは
既存のものなのか?
書き直しはできるのか?
あーあ、現実逃避中
0707デフォルトの名無しさん
2009/07/09(木) 22:09:30テキストファイルはログの保存だけに使う
0708デフォルトの名無しさん
2009/07/09(木) 22:22:01一定数行を越えると古いものを削除したりするの?
二つのプロセスが一つのファイルいじるならミューテクスとかで排他制御するといいよ。
0709デフォルトの名無しさん
2009/07/10(金) 02:11:200710696
2009/07/10(金) 09:19:48どうしてふたつのプログラムにするのかわからんが
要はプログラム間通信ということだな。
簡単には、書き込みファイルの存在をフラグとして
読み込み側で読んだら消すというハンドシェイクをする。
必要なら読み込み側で別ファイルに保存する。
もちろん、書き込み側はログを遅延書き込みできなきゃダメだが。
>>709
それももちろん必要だが、それだけで解決できないよね。
0711デフォルトの名無しさん
2009/07/10(金) 12:27:28簡単に解決できるだろ。
0712デフォルトの名無しさん
2009/07/10(金) 13:53:26リトライするってこと?
0713デフォルトの名無しさん
2009/07/10(金) 18:05:17読み込み側は、FILE_SHARE_WRITE指定
で問題なく読み書きできるだろ。
0714デフォルトの名無しさん
2009/07/10(金) 22:46:12その設定でオープンしたまま処理するの?
タイミングによっては、どこまでが読めてくるのか
心配なのだが・・・
691さん、実験してみて
0715デフォルトの名無しさん
2009/07/12(日) 20:23:17何の成果も得られません。
それでも、何ヶ月も毎日読み続けてたら、Windowsプログラムを作れるように
なりますか。
それとも、ニートになって毎日起きてる時間の全部を、その学習に費やして
10年という歳月を掛けても、無理ですか。
0716デフォルトの名無しさん
2009/07/12(日) 21:06:48読み続ける、学習を続けるだけでは一生無理
何が言いたいかというととにかくまずプログラムを書け
動くものを作れ
簡単なものから徐々にレベルアップしていけばいい
実践のなかで知識の本質を理解しろ
0717デフォルトの名無しさん
2009/07/12(日) 21:58:18とにかく作れと云っても無理ぽ
何もわからんのだから。
一番の近道は、ソースを読むこと。
評判のいいソース、あるいは自分が作りたいプログラムに近いものの
ソースを読み、実際にコンパイルして動かして動作を確認する。
そして、ちょっとだけプログラムを変更してみて
自分の思った通りに動くかどうかを確認する。
まあ、こんなところからやってみるのが現実的であろう。
0718デフォルトの名無しさん
2009/07/13(月) 19:25:54みんなアドバイスありがとう
ログもDBで管理するようになりました。
いいのかな???まぁいいや。
BCB5でのDBアクセスの方法等を調査しなくては...。
0719デフォルトの名無しさん
2009/07/13(月) 20:51:06BCBは基本的に殆どのライブラリをVCLに頼っているから
Delphiの参考書があればほとんどそのまま移植できる
0720デフォルトの名無しさん
2009/07/14(火) 09:32:38できないのは class of に相当する定義だけじゃない?
0721デフォルトの名無しさん
2009/07/14(火) 09:53:42.pasファイルをそのままプロジェクトに組み込めるw
Delphiで作成したクラスは、実体宣言できなくて、”ポインタ宣言&new”というのが最大の制限。
0722デフォルトの名無しさん
2009/07/14(火) 10:30:210723デフォルトの名無しさん
2009/07/14(火) 10:33:540724デフォルトの名無しさん
2009/07/14(火) 11:21:28pasソースをBuilderのプロジェクトにぶちこめばいい。
0725デフォルトの名無しさん
2009/07/14(火) 17:31:180726デフォルトの名無しさん
2009/07/14(火) 21:10:08先週から常連になってきたペーペーです。
新たな問題が発生しました・・・。助けてください。
2台のPCが存在します。
各PCには共有フォルダと作業用フォルダを持っています。
PC1からPC2へ何か要求を行う場合、PC2の共有フォルダに要求が入力された
ファイルが置かれます。
各PCは自分の共有フォルダをポーリングしていて、ファイルを発見した場合
そのファイルを作業フォルダに移動させます。(要求の処理は他の人の担当です)
(コピー後削除? 切り取りはできますか?)
上記の動作をexeを起動したら自動的にスレッドを起こして、その中で行う
みたいです。
まず、スレッドって何?から話が始まって、とりあえずそこはなんとなく理解
できました。
しかし、スレッドの起こす方法や、起動時に自動ってどうやって??
で詰まっています。
要は、何もわからない状況です。助けてください。
周りにC++できる人が一人もいないのです・・・。
DBアクセスもできていなのに・・・。泣きたい。
0727デフォルトの名無しさん
2009/07/14(火) 21:13:580728デフォルトの名無しさん
2009/07/14(火) 22:22:20その腐った仕様は誰がどうやって決めたんだ?排他処理は?スレッドの必要性は?
とそんなことをそいつにちゃんと考えさせろ。
スレッドはTThreadを派生させて作る。
0729デフォルトの名無しさん
2009/07/14(火) 23:22:25お前にはまだ早い
0730デフォルトの名無しさん
2009/07/14(火) 23:35:350731デフォルトの名無しさん
2009/07/14(火) 23:42:46実用的とは考えにくいなー
0732デフォルトの名無しさん
2009/07/15(水) 05:04:17セマフォー or CriticalSectionの概念を理解させるために
問題を単純化して、ファイルで制御させる目的で
どっかの田舎の専門学校が学生に出した課題
って感じだな。
0733デフォルトの名無しさん
2009/07/15(水) 09:58:57たしかに>>726はプログラムの知識は文句言ってる貴様らと大差はないが
実際に運用するときはこんな使い方をするところもある
0734デフォルトの名無しさん
2009/07/15(水) 10:09:32説明が悪いので勘違いされたかもしれませんが
勉強課題ではないんです。
自分の担当分以外は全く理解できていませんが、
これが一番良い方法らしいです。
>>733
ありがとう
少し落ちこんでいました。
>>729
の言うと通り、技術的にまだ未熟ですので皆さんに助けを
お願いしたいのです。
0735デフォルトの名無しさん
2009/07/15(水) 10:22:57発言力はあるが、知識のない奴が
たくさんいるからな
0736デフォルトの名無しさん
2009/07/15(水) 10:31:23タイマーでやるよりはスッドレの方が好みだな。
同期に関して、Windows のセマフォは実装に問題があるから、
使うときは良く考えた方がいい。大抵はミューテックスか
クリティカルセクションで事足りるけど。
とりあえず思いついたことだけ。
要点もまとめられないほどわかってないやつをこのような場所で
サポートするのは至難だと思うな。
0737デフォルトの名無しさん
2009/07/15(水) 10:33:000738デフォルトの名無しさん
2009/07/15(水) 16:32:17その「ここ」には「地球」すら違和感なく入る。
0739デフォルトの名無しさん
2009/07/16(木) 15:54:51誰かBCB5でのSetTimer,KillTimerの使い方おしえて
0740デフォルトの名無しさん
2009/07/16(木) 16:38:400741デフォルトの名無しさん
2009/07/16(木) 16:41:00コラ
偽者め
お前が教えろ
0742デフォルトの名無しさん
2009/07/16(木) 16:42:280743デフォルトの名無しさん
2009/07/16(木) 16:43:31知らんなら黙ってろカス
知ってる人早く教えてください
詳しく
0744デフォルトの名無しさん
2009/07/16(木) 17:12:42KillTimer(なんちゃら)
知らんけど。
0745デフォルトの名無しさん
2009/07/16(木) 17:22:18早く調べて教えろボケ
0746デフォルトの名無しさん
2009/07/16(木) 17:24:560747デフォルトの名無しさん
2009/07/16(木) 17:55:55長すぎて読む気がしないからまとめろ無能
0748デフォルトの名無しさん
2009/07/16(木) 18:24:52いつまで待たせる気だ
無能め
0749デフォルトの名無しさん
2009/07/16(木) 18:31:53ttp://oshiete1.goo.ne.jp/qa3499000.html?ans_count_asc=20
0750デフォルトの名無しさん
2009/07/18(土) 09:04:36********* unit1.h のTFormのpublicに追加
public: // ユーザー宣言
UINT_PTR myEvent;
static int CALLBACK MyTimerProc(HWND hWnd, UINT uMsg, UINT_PTR nIDEvent, DWORD dwTime);
********* unit1.cpp
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
myEvent = NULL;
SetTimer(this->Handle, myEvent, 1000, (TIMERPROC)MyTimerProc);
}
//---------------------------------------------------------------------------
int CALLBACK TForm1::MyTimerProc(HWND hWnd, UINT uMsg, UINT_PTR nIDEvent, DWORD dwTime)
{
Form1->Caption = AnsiString(rand() % 100); //適当にキャプション変えてみる
return 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
KillTimer(this->Handle, myEvent);
}
//---------------------------------------------------------------------------
0751デフォルトの名無しさん
2009/07/18(土) 09:08:32SetPropとか使ってthisを渡すとかすんのかな・・・めんどくさ
0752デフォルトの名無しさん
2009/07/28(火) 16:39:00それをそのまま>PixelFormat = pf8bitにして
Image->Canvas->Pixelsで1ピクセルずつ読んで白黒変換して
ScanLineにぶち込んだら表示がカラーのままで変になるのですが
読み込んだビットマップを0〜255階調の白黒にする方法を教えてください
0753デフォルトの名無しさん
2009/07/28(火) 18:20:37パレットを自分でつくって割り当てろ
0754デフォルトの名無しさん
2009/07/28(火) 18:38:52他にやりかたあんだろ?
0755デフォルトの名無しさん
2009/07/28(火) 18:41:590756デフォルトの名無しさん
2009/07/28(火) 18:44:440757デフォルトの名無しさん
2009/07/28(火) 18:44:55void __fastcall TForm1::Button1Click(TObject *Sender)
{
Graphics::TBitmap *bmp = new Graphics::TBitmap(); //同じサイズの8bitTBitmapを作成
bmp->PixelFormat= pf8bit;
bmp->Width = Image1->Picture->Bitmap->Width;
bmp->Height = Image1->Picture->Bitmap->Height;
//グレイスケールパレット作成
struct {
WORD palVersion;
WORD palNumEntries;
PALETTEENTRY palent[256];
} LOGPAL;
LOGPAL.palVersion = 0x300;
LOGPAL.palNumEntries = 256;
for (int i=0; i<256; i++) {
LOGPAL.palent[i].peRed = (BYTE)i;
LOGPAL.palent[i].peGreen = (BYTE)i;
LOGPAL.palent[i].peBlue = (BYTE)i;
LOGPAL.palent[i].peFlags = 0;
}
bmp->Palette = CreatePalette((LOGPALETTE*)&LOGPAL); //グレイスケールのパレットにする
// 元の画像から1ピクセルずつ読んで近似パレットで1ピクセルずつ描画
for(int y=0;y<Image1->Picture->Bitmap->Height;y++) for(int x=0;x<Image1->Picture->Bitmap->Width;x++){
((BYTE*)bmp->ScanLine[y])[x] = GetNearestPaletteIndex(bmp->Palette, (COLORREF)Image1->Canvas->Pixels[x][y]);
}
Image2->Picture->Assign(bmp);
delete bmp;
}
0758デフォルトの名無しさん
2009/07/29(水) 10:24:5524ビットカラーを白黒化する計算は知っているのでパレットを使わずにやりたかったんだが
普通にPixelsから読んだ色をそのまま白黒化してまたPixelsに入れればできました。
ソースありがとう
0759デフォルトの名無しさん
2009/07/29(水) 16:22:24気になるけどたぶん、単純にR、G、Bを足して3で割って平均値をTColor(RGB(R,B,G))とかしていれてるんでしょ?
0760デフォルトの名無しさん
2009/07/29(水) 16:27:07めんどくせー奴だなしかし
白黒化計算でぐぐれ馬鹿
二度とくだらねーレスすんじゃねーぞゴミが
0761デフォルトの名無しさん
2009/07/31(金) 10:30:470762デフォルトの名無しさん
2009/07/31(金) 11:03:54WM_MDIACTIVATE
0763デフォルトの名無しさん
2009/07/31(金) 11:38:30フォームのメソッドとかはないですか?
0764デフォルトの名無しさん
2009/07/31(金) 21:27:21ビープ音が鳴るが、これを止める方法は無いのかな?
エクセルでセル内で改行を入れるとき、
Alt+Enterで行うが、これに似た処理を作成したいので。
0765デフォルトの名無しさん
2009/07/31(金) 23:57:06単にその子フォーム.Show;じゃだめ?
0766デフォルトの名無しさん
2009/08/01(土) 01:53:57> Previous メソッドは,フォームシーケンス内の前の MDI の子フォームをアクティブフォームにします。
> void __fastcall Previous(void);
0767デフォルトの名無しさん
2009/08/01(土) 07:41:190768デフォルトの名無しさん
2009/08/01(土) 10:15:300769デフォルトの名無しさん
2009/08/01(土) 10:45:58ShellExecuteEx
0770デフォルトの名無しさん
2009/08/01(土) 12:40:360771デフォルトの名無しさん
2009/08/01(土) 14:00:53MS?
俺Ex
0772デフォルトの名無しさん
2009/08/01(土) 14:02:20linuxのようにソースを公開してないOSなのにこんな製品を作れるとは。
0773デフォルトの名無しさん
2009/08/01(土) 20:45:260774デフォルトの名無しさん
2009/08/02(日) 01:59:450775デフォルトの名無しさん
2009/08/02(日) 20:45:05ヘルプに書いてないからわかんないよ
どうもありがとうございました
0776デフォルトの名無しさん
2009/08/03(月) 10:26:58うはwwwwwww
灯台アレだったwww
Showでサックリおkだった
>>766
それやNextは知ってたんですが、アクティブにするだけだから
メソッド一発でできそうな気がしてたんですねよ
0777デフォルトの名無しさん
2009/08/03(月) 13:45:56どの関数がどれくらい呼び出されているかを知りたいのですが。
0778デフォルトの名無しさん
2009/08/03(月) 19:54:36ttp://www.lw-tech.com/
0779デフォルトの名無しさん
2009/08/04(火) 13:09:03画像の取り扱い方がよくわからず、ヒントを教えていただけないでしょうか?
環境 ビスタ bcb2007
jpgファイルを読み込み、一部暗号化しファイル生成。
暗号化ファイルを読み込み、jpgファイルを生成。
解読jpgファイルをTimageに表示させることができました。
目標は、
暗号化ファイルをjpgファイルを書き込みせず、
デコードしたcharをjpgファイルを生成せずに、
Timageに表示させたいと考えています。
(解読ファイルの生成を抑える。高速化)
参考
tp://www.c3.club.kyutech.ac.jp/gamewiki/index.php?%B0%C5%B9%E6%B2%BD%A4%B7%A4%E8%A4%A6
簡単かもしれませんが、教えてください。
0780デフォルトの名無しさん
2009/08/04(火) 13:11:24//===================================
//ファイルから暗号化画像ファイルを読み込む
//===================================
if (FileOpenDialog1->Execute() == true) {
char *pcInFileName = FileOpenDialog1->FileName.c_str();
FILE *fp = fopen(pcInFileName,"rb");
fseek(fp,0,SEEK_END);
int iSize = ftell(fp);
char *pcInBuffer = new char[iSize];
fseek(fp,0,SEEK_SET);
fread(pcInBuffer,sizeof(char),iSize,fp);
fclose(fp);
//====================================
//解読
//====================================
char *pcOutBuffer = new char[iSize];
// fp = fopen(acOutFileName,"wb");
Decode(pcInBuffer,pcOutBuffer,iSize); //解読
// fwrite(pcOutBuffer,sizeof(char),iSize,fp);
// fclose(fp);
//====================================
//解読のcharをImageに書き込み
//====================================
imgMain->
}
0782デフォルトの名無しさん
2009/08/04(火) 23:23:34復号時にメモリストリームに書き込んで、そのメモリストリームから
JPEG読み込めばいいんじゃない?
0783デフォルトの名無しさん
2009/08/05(水) 20:16:42お手上げです。
???の部分がよくわかりません。
//ファイルからRead
if (OpenDialog1->Execute() == true) {
char *pcInFileName = OpenDialog1->FileName.c_str();
FILE *fp = fopen(pcInFileName,"rb");
fseek(fp,0,SEEK_END);
int iSize = ftell(fp);
char *pcInBuffer = new char[iSize];
fseek(fp,0,SEEK_SET);
fread(pcInBuffer,sizeof(char),iSize,fp);
fclose(fp);
char *pcOutBuffer = new char[iSize];
Decode(pcInBuffer,pcOutBuffer,iSize); //解読
TMemoryStream *ms = new TMemoryStream;
//ストリームのポジションを移動
ms->Position = 0;
//ストリームの中身を書き換え
ms->Write(pcOutBuffer, iSize);
//解除ファイルを表示する。
imgMain->Picture->LoadFromStream(ms); //???
delete ms;
}
0784デフォルトの名無しさん
2009/08/05(水) 22:18:21bmp->Assign(jpeg); //ビットマップに変換。
この部分で、JPEGエラー #42がでます。
画像は編集しなくてもいいので、jpegを直接imageに焼きつけられたらいいんですが。
imgMain->Canvas->Draw(0, 0,jpeg);
char *pcOutBuffer = new char[iSize];
Decode(pcInBuffer,pcOutBuffer,iSize); //解読
TMemoryStream *ms = new TMemoryStream;
//ストリームのポジションを移動
ms->Position = 0;
//ストリームに書き込み
ms->Write(pcOutBuffer, iSize);
/*
Graphics::TBitmap *bm =new Graphics::TBitmap;
bm->LoadFromStream (ms);
*/
TJPEGImage* jpeg= new TJPEGImage;
jpeg->LoadFromStream(ms);
Graphics::TBitmap* bmp= new Graphics::TBitmap;
bmp->Assign(jpeg); //ビットマップに変換。
imgMain->Canvas->Draw(0, 0, bmp);
delete ms;
delete jpeg;
delete bmp;
0785デフォルトの名無しさん
2009/08/06(木) 00:32:17メモリストリームに書き込んだ後、Positionを先頭に戻さないとダメなんじゃない?
0786デフォルトの名無しさん
2009/08/06(木) 06:45:55基礎的なことを教えていただき、
ありがとうございました。
0787デフォルトの名無しさん
2009/08/06(木) 18:23:40C++Builder2009なのですが、UnicodeStringとかBytesOf()を
使ってもなぜかうまく行きません
何が悪いのでしょうか
(全部&#2;とか&#3;とかになります)
UnicodeString ustr = Edit1->Text, s;
Edit3->Text = ustr.Length();
for (int i = 1; i <= ustr.Length(); i++) {
s = ustr.SubString(i, 2);
Edit2->Text = Edit2->Text + AnsiString("")
+ AnsiString().printf("%u", static_cast<unsigned>(((char*)s.data())[2])) + " "
+ AnsiString().printf("%u", static_cast<unsigned>(((char*)s.data())[1])) + " "
+ AnsiString(";");
}
0788デフォルトの名無しさん
2009/08/06(木) 18:42:280789デフォルトの名無しさん
2009/08/06(木) 18:48:50他の国の文字を&#xxxxx;という形に一括変換するソフトを
作っているのですが・・・
0790デフォルトの名無しさん
2009/08/08(土) 12:33:512バイトキャラなのでchar形に変換するのまずい。
あと oparator [] が使えると思うのでシンプルにこれでどうだろう?
s = ustr.SubString(i, 2);
Edit2->Text += AnsiString().sprintf("\%I16u%I16u;", s[0], s[1]);
0791デフォルトの名無しさん
2009/08/08(土) 17:32:54レスありがとうございます
C++Builder2009なのでUnicodeStringを持っているので
それで何とかならないかと思っていたのですが・・・
おっしゃる通りAnsiString一本でやろうとしたらERangeError
が出ます
0792デフォルトの名無しさん
2009/08/08(土) 18:04:29>+ AnsiString().printf("%u", static_cast<unsigned>(((char*)s.data())[2])) + " "
>+ AnsiString().printf("%u", static_cast<unsigned>(((char*)s.data())[1])) + " "
ここのインデックス 0、1 じゃねーの?
0793デフォルトの名無しさん
2009/08/08(土) 18:47:40UnicodeString s = …
UnicodeString u;
for (int i = 1; i <= s.Length(); ++i)
{
u += "" + IntToStr(static_cast<int>(s[i])) + ";";
}
Edit1->Text = u;
0794デフォルトの名無しさん
2009/08/09(日) 11:31:54うまく行きました。ありがとうございました。
>>792
そうですね。でも0、1にしてもだめなんです。
0795デフォルトの名無しさん
2009/08/09(日) 20:41:33双方をIDEデバッグ実行を両立できないな。
他人はその辺どうしてんだ。
0796デフォルトの名無しさん
2009/08/09(日) 20:50:30日本語でOK
俺はDelphi2009、C++Builder2009とVS.NET2008を
同じマシンに入れているが何の問題も無いぞ
0797デフォルトの名無しさん
2009/08/09(日) 23:30:34両立は無理。レジストリファイルでも使って随時切り替えるしかない。
まあVSにしておく方がお勧めですわな
0798デフォルトの名無しさん
2009/08/10(月) 23:40:10というかネイティブ自体が主流じゃないの…か?
0799デフォルトの名無しさん
2009/08/10(月) 23:46:43マイナーなのは否定しない。生産性は高いけどな。他の選択肢は…もうなくなってしまった。
0800デフォルトの名無しさん
2009/08/10(月) 23:46:48分野・業種にもよるのでそこまで条件書かないと答えようがないんじゃないか
0801デフォルトの名無しさん
2009/08/10(月) 23:49:00どちらもネイティブではないしなあ
まあC#はngenを通せば見かけ上ネイティブにはなるが
0802デフォルトの名無しさん
2009/08/11(火) 08:46:360803デフォルトの名無しさん
2009/08/11(火) 09:20:44ばあさんや、Win7用のWinHlp32.exeはまだかいな
0804デフォルトの名無しさん
2009/08/11(火) 18:29:31Wiki Helpみたいなのがあればイイのになぁ。
そうすれば、腐ったヘルプに悩む必要も無くなるのに。
基本的には、VCLのリファレンス形式で
バージョンによる違いと、豊富な例を載せてくれれば。
0805デフォルトの名無しさん
2009/08/12(水) 19:27:530806デフォルトの名無しさん
2009/08/13(木) 09:52:360807デフォルトの名無しさん
2009/08/13(木) 12:16:12コントロールのWidth(もしくはHight)プロパティと ScrollBer->Max に依存する
0808デフォルトの名無しさん
2009/08/13(木) 15:03:07pageでできたこの役立たず
0809デフォルトの名無しさん
2009/08/15(土) 02:14:29for( int i = 0; i < ListView->Items->Count; i++ ){
if( ListView->Items->Item[ i ]->Selected ){
ListView->Items->Item[ i ]->Checked = !ListView->Items->Item[ i ]->Checked;
}
}
こんな感じで実装しました。
しかし、通常のTListViewの仕様によって一番最後にクリックしたアイテムだけ反転が更に反転して元に戻ってしまいます。
Builderは2009です。
スペースを使用するのを変えずに選択されたアイテムが問題なく反転する方法はないでしょうか?
0810デフォルトの名無しさん
2009/08/15(土) 05:27:03ItemFocusedで現在フォーカスが当たっているアイテムが分かる
0811デフォルトの名無しさん
2009/08/15(土) 22:36:02Builderでクラスを作成すると、constructorは自動作成されますけど
destructorは作成されません。
これって、VCLを継承したクラスは、destructorは使わない方がイイということなんでしょうか。
それとも、別に深い意味はないんでしょうか。
0812デフォルトの名無しさん
2009/08/15(土) 22:54:34virtual なんで。
下位クラスの destructor が呼ばれていて、そのクラスに開放すべきデータがないなら不要です。
自分で new したものについては自動で解放されないので 明示的に destructor を作成です。
0813デフォルトの名無しさん
2009/08/15(土) 22:56:280814811
2009/08/15(土) 23:16:23後始末用に自前でdestructorを作っていい訳ですね。
0816デフォルトの名無しさん
2009/08/15(土) 23:55:26現在、複数の韓国IPより2chが攻撃を受けています。
その為、下記スレにて作戦本部を設営しています。
数多くの人たちの力が必要です。
今こそ2chの力を結集しましょう!!
http://c.2ch.net/test/-/news4vip/1250344557/
■現状
現在第一波攻撃終了(挨拶程度)
十分な手応えを得る
第二波予定
8月16日に予定本部にて逐次確認を!
(コミケ組み帰還後の22時を目処に本作戦を実行する)
※予備日 8月17日夜を予定
□■□■□■□■□■□■□■□■
0817デフォルトの名無しさん
2009/08/16(日) 20:07:36ありがとうございました。
無事できました。
0818デフォルトの名無しさん
2009/08/16(日) 21:46:50大変小さくいんさつされ、しかもドットがぼやけて印刷(PDF)されます。
以下のソースで注意するところがあれば、
教えてください。
void __fastcall TForm2::Button1Click(TObject *Sender)
{
if(PrintDialog1->Execute()){
Printer()->BeginDoc();
Printer()->Canvas->Draw(0, 0, Image1->Picture->Graphic);
Printer()->EndDoc();
}
}
0819デフォルトの名無しさん
2009/08/16(日) 22:59:570820デフォルトの名無しさん
2009/08/16(日) 23:25:17大きく(imageのWidthとHeight)する必要がある。
という風にレスを受けて思いました。
つまり、印刷時に、ImageのWidthとHeightを一時的に
大きくして、
Printer()->Canvas->Draw
する。と理解しました。
Image1->Width=1000;
Image1->Height=1000;
やりましたが、だめでした。
0821デフォルトの名無しさん
2009/08/17(月) 00:42:16もう少し基本を理解した方が良い
0822デフォルトの名無しさん
2009/08/17(月) 00:46:37Imageでなく、内包しているPictureのサイズを変更しないと駄目
0823デフォルトの名無しさん
2009/08/17(月) 00:51:180824デフォルトの名無しさん
2009/08/17(月) 08:26:08とりあえず、Imageのサイズを変更した結果です。
なお、読み込みjpegをwinフォトギャラリで印刷(pdf)したところ、
普通に印刷できます。
このことから、Imageかなと思ったしだいです。
つまり、Imageに読み込んだ時、
Pictureのサイズが変更されたとなります。
なお、読み込みには、プロパティーのpictureから
静的に読み込んでいます。
0825デフォルトの名無しさん
2009/08/17(月) 21:18:400826デフォルトの名無しさん
2009/08/18(火) 17:08:370827デフォルトの名無しさん
2009/08/18(火) 17:13:09Printer->Canvasの指定したRectに描画したいです。
0828デフォルトの名無しさん
2009/08/19(水) 11:24:21プロジェクトコードっていうか、WinMainの入った.cppってありますよね?
そのWinMain部分をifdefでカットして、複数の物を使うって、ありでしょうか?
今そうやったところ、リンクが遅いように見えるのですが、禁じてなのかな?
0829デフォルトの名無しさん
2009/08/19(水) 11:39:191つは普通にグラフを書いてもう1つは指定した範囲に四角書きたくて
AddXYで四角になるようにXとYの値を入れても四角になってくれません
TChartって戻る線は書けないんですか?
0830デフォルトの名無しさん
2009/08/19(水) 14:32:590831デフォルトの名無しさん
2009/08/19(水) 18:52:53IDEが作ったコードは
プロジェクトの設定等を変えると自動的に変更される可能性がある。
そのときに余計なコードがあると元に戻らなくなる可能性がある。
それでも泣かないなら、やってもいい。
リンクが遅いのは気のせい。
0832823
2009/08/19(水) 19:58:13とりあえず、やってみまつ
0833デフォルトの名無しさん
2009/08/19(水) 19:58:55ゴメン、823じゃなくて、828です。
0834デフォルトの名無しさん
2009/08/23(日) 14:37:04フォルダ調べると sysconst.dcu があるんだけど
0835デフォルトの名無しさん
2009/08/24(月) 10:21:55C++ BuilderってDelphiの上にC++インターフェース被せただけだし。
0836デフォルトの名無しさん
2009/08/24(月) 15:32:120837デフォルトの名無しさん
2009/08/24(月) 17:19:52うまくいきませんでした。(正規表現を使ってみたかった)
無いなら無いで問題ないのですが、みなさんboostは使ってますか?
0838デフォルトの名無しさん
2009/08/24(月) 17:24:17bcbboostってのがあるけどさすがに5でビルドは無理そう
ttp://bcbboost.sourceforge.net/
0839デフォルトの名無しさん
2009/08/24(月) 19:32:40プリコンパイルヘッダに入らないんで毎回コンパイルに凄い時間が掛かる。
何とかビルド時間短縮する方法ないんかね?
0840デフォルトの名無しさん
2009/08/24(月) 20:18:100841デフォルトの名無しさん
2009/08/24(月) 20:25:53TWinControlのWndProc DefWndProcとか使ってWM_CREATEをフックして、FolderView(SysListView32)を操作するしかないんじゃないかな
0842デフォルトの名無しさん
2009/08/24(月) 20:52:19国産鬼車が使える
Rubyも使ってるらしい実績
0843デフォルトの名無しさん
2009/08/24(月) 20:59:47const int hoge=0;
のような定数宣言があるとPCHが作れないんじゃなかったか?
たぶんhdrstopでは意味がない。
0844デフォルトの名無しさん
2009/08/24(月) 21:00:530845デフォルトの名無しさん
2009/08/24(月) 22:57:070846デフォルトの名無しさん
2009/08/25(火) 01:16:28そうなんだ
ヘッダだけインクルードして一度コンパイル済みのlibを
#pragma link "***.lib"
とかやってもだめなの?
0847デフォルトの名無しさん
2009/08/25(火) 01:18:420848デフォルトの名無しさん
2009/08/25(火) 12:49:33正規表現だけでいいならpcre使うとか。
http://qux.haun.org/note0309.html
0849デフォルトの名無しさん
2009/08/25(火) 14:41:18国産だから日本語に向いている事は間違いない。
利用実績が多く信頼ある、
0850デフォルトの名無しさん
2009/08/25(火) 14:42:55専用のがあるんですね。参考にしてみます。
>>842
Rubyで使われてるんですか。
やっぱり触っとくべきか・・
>>844
一応標準に入ってたTRegexpの存在は知っていたのですが
ヘルプが見つからなかったので、本格的に使うなら資料の多
そうなboostの方がいいのかなと考えていました。
>>848
正規表現だけではなく他の気になる機能も触る、もしくは参考
にしてみたかった次第です。
(とんでもなく勉強になると聞いたので)
PCREの存在は知らなかったので参考にしてみます。
みなさん、ありがとうございました。
0851デフォルトの名無しさん
2009/08/25(火) 14:45:59鬼車って正規表現ライブラリだったんですね。
失礼しました。
こちらも参考にしてみます。ありがとう。
0852デフォルトの名無しさん
2009/08/25(火) 14:51:08JRubyには入ってるらしいが、Rubyに入ってるという記事は見つからない。
Rubyと鬼車の作者は仲が悪いらしい。今は知らない。
JRuby 1.1 RC版登場 - 鬼車取り込みと143の問題修正
http://journal.mycom.co.jp/news/2008/01/09/029/index.html
0853デフォルトの名無しさん
2009/08/25(火) 14:56:10鬼車は導入が簡単。 BCBでも動作する。
boostの正規表現は、最新版BCBでも動作しないと思う。
必要な部品の一部がコンパイルとおらないため。
0854デフォルトの名無しさん
2009/08/25(火) 19:36:08cb2009で使ってるよ。
0855デフォルトの名無しさん
2009/08/26(水) 01:32:56\(.*?\)という検索したら期待の動作しなくて困った。
\\(.*?\\)が正解なんだな。 これは気を付けないと間違えます。
数時間悩んだ。 正規表現の\と、C言語の\が同時に出てくるケース。
0856デフォルトの名無しさん
2009/08/26(水) 10:26:080857デフォルトの名無しさん
2009/08/27(木) 01:46:43BCB6で下記URLの通りに入力してみましたが、プレビュー画面に何も表示されません。
何が問題なのでしょうか・・・?
Edit1->Textには当然文字を入れてあります。
http://www2.ttcn.ne.jp/tkky/Tips/QuickRep/quickrep1.htm
0858デフォルトの名無しさん
2009/08/27(木) 16:09:55他がマイナーと言いながらマイナーな奴紹介するおまいが好きだw
0859デフォルトの名無しさん
2009/08/27(木) 16:26:400860デフォルトの名無しさん
2009/08/27(木) 20:36:34最低一つバンドが必要ですな。ディデールバンドとか。
その上にTQRLabelを配置すると印刷されるようになる。
0861デフォルトの名無しさん
2009/08/27(木) 21:37:35おお、出来ました!
QuickRepを貼りつけただけじゃダメなんですね。
ありがとうございます!!
0862デフォルトの名無しさん
2009/08/28(金) 13:24:40極まれにデストラクタが呼ばれなくなることがあるんですが
そういう経験ありませんか?
何かこうすれば起きるみたいなことがあれば教えて頂きたいです。
自分の場合
・三項演算子を使用している
・参照、ポインタではないクラスを返す関数で直接メンバを使う
Func().Func(); とか(もしかしてこれ自体がまずい?)
・テンプレートを使用している
上記が絡むとまれに現象が出ていました。
デストラクタが呼ばれたかは理由がありCodeGuardではなく
intカウンタでやってました。
自分のバグではないかと思っていましたが、クラス自体は変えないで
すこし書き方を変えると直ったりとなかなか再現できずにいます。
0863デフォルトの名無しさん
2009/08/29(土) 03:54:27boostはバージョンいくつかでボーランドの古いコンパイラーのサポート切ってる。
だからバージョンによっては何してもコンパイル通らない。
0864デフォルトの名無しさん
2009/09/01(火) 12:07:14StringBandを2つ追加し、そこにLabelは追加して
項目名とデータを書くところまではいいのですが線が書けません
枠線は設定できるのですが、各々のセルを区切るための縦線とかは
どうやってかけばいいですか?
LabelのFrameだと左右中央配置はできても縦の中央配置ができないっていう
とんでもないバグがあるし・・・
Shapeを1つ1つ配置するしかないですか?
0865デフォルトの名無しさん
2009/09/02(水) 23:51:39ClientDataSetでも使って出力した方が手っ取り早い。
0866デフォルトの名無しさん
2009/09/07(月) 17:42:060867デフォルトの名無しさん
2009/09/08(火) 06:54:06普通のアプリレベルならTPanelでいいんだけどな
0868デフォルトの名無しさん
2009/09/09(水) 15:56:010869デフォルトの名無しさん
2009/09/09(水) 16:58:410870デフォルトの名無しさん
2009/09/09(水) 17:07:550871デフォルトの名無しさん
2009/09/09(水) 17:40:030872デフォルトの名無しさん
2009/09/10(木) 15:55:26BCC5でも使用できるでしょうか?
ttp://www.yks.ne.jp/~hori/MemCheck.html
ためしに組み込んでみましたが、開始ログ以外にログがうまくでません。
デルファイでしか無理でしょうか?
0873デフォルトの名無しさん
2009/09/10(木) 17:27:240874デフォルトの名無しさん
2009/09/10(木) 21:26:21>>870
>>871
>>869で答えは出ている
0875デフォルトの名無しさん
2009/09/10(木) 21:28:440876デフォルトの名無しさん
2009/09/10(木) 21:56:510877デフォルトの名無しさん
2009/09/11(金) 10:38:370878デフォルトの名無しさん
2009/09/11(金) 12:04:46MouseDown とか馬鹿みたいなレスしかできない奴じゃ知らなかったんだろうな
0879デフォルトの名無しさん
2009/09/11(金) 14:13:380880デフォルトの名無しさん
2009/09/11(金) 14:45:570881デフォルトの名無しさん
2009/09/11(金) 14:47:510882デフォルトの名無しさん
2009/09/11(金) 17:28:290883デフォルトの名無しさん
2009/09/11(金) 17:33:090884デフォルトの名無しさん
2009/09/11(金) 19:01:500885デフォルトの名無しさん
2009/09/12(土) 11:14:31あのスレが無くなってココにクレクレ小僧が来るようになってしまった訳か。
0886デフォルトの名無しさん
2009/09/14(月) 14:22:570887デフォルトの名無しさん
2009/09/14(月) 16:07:57同じファイルを2つのウィンドウで開けることもあれば、ドックが外れるだけのこともある。
これってどういう法則があるの?イラツク。
0888デフォルトの名無しさん
2009/09/14(月) 16:55:28Lineを2本加える時、こんな感じでやってた
MyLineSeries[0]=new TLineSeries(Chart1);
MyLineSeries[1]=new TLineSeries(Chart1);
for(int i=0;i<=1;i++){
MyLineSeries[i]->ParentChart=Chart1;
MyLineSeries[i]->HorizAxis=aBottomAxis;
MyLineSeries[i]->XValues->DateTime=true;
MyLineSeries[i]->VertAxis=aBothVertAxis;
}
0889デフォルトの名無しさん
2009/09/15(火) 11:48:10クリックではないけれど
void __fastcall TForm1::Chart1MouseMove(TObject *Sender, TShiftState Shift, int X,
int Y)
{
StatusBar1->Panels->Items[0]->Text=X;
StatusBar1->Panels->Items[1]->Text=Y;
int iCursol1,iCursol2;
iCursol1=Chart1->Axes->Bottom->CalcPosPoint(X);
iCursol2=Chart1->Axes->Left->CalcPosPoint(Y);
StatusBar1->Panels->Items[2]->Text=iCursol1;
StatusBar1->Panels->Items[3]->Text=iCursol2;
}
0890デフォルトの名無しさん
2009/09/15(火) 12:58:110891デフォルトの名無しさん
2009/09/15(火) 13:59:400892デフォルトの名無しさん
2009/09/15(火) 14:29:22関連イベントに分類してユニットを分けて書くことはできるのでしょうか?
0893デフォルトの名無しさん
2009/09/15(火) 14:38:120894デフォルトの名無しさん
2009/09/15(火) 14:56:15やりかたっちゅーか・・・
おせて。。
実務じゃなく、趣味でやってるだけなんですが、
実務だったら、当然分離してやってるもんなんですか?
0895デフォルトの名無しさん
2009/09/15(火) 15:04:190896デフォルトの名無しさん
2009/09/15(火) 15:19:280897デフォルトの名無しさん
2009/09/15(火) 15:39:110898デフォルトの名無しさん
2009/09/15(火) 22:07:06ファイル−>新規作成−>ユニット
新たにつくったユニットに元のユニットのヘッダーをインクルード(ファイルー>ユニットを使う)
0899デフォルトの名無しさん
2009/09/16(水) 13:00:03ジャンプできなくなるよね
0900デフォルトの名無しさん
2009/09/16(水) 13:18:49イベントハンドラ内を数行に短くする。
0901デフォルトの名無しさん
2009/09/16(水) 14:29:18どれか押されたら凹んでるのが自動で凸になるようにしてるのですが
GroupBox内にあるTSpeedButtonはGroupIndexを1にしてもグループ外の
ボタンと同期してくれません。
そこでGroupBoxから出してGroupBoxの上に配置しようとしたら
前面表示にしてもGroupBoxの下に隠れてしまいます。
別グループのTSpeedButtonも同期させる方法を教えてください。。
0902デフォルトの名無しさん
2009/09/17(木) 01:51:53ヒント、Bevel
0903デフォルトの名無しさん
2009/09/17(木) 10:09:08知らないならレスしないで下さいウザいだけです。
0904デフォルトの名無しさん
2009/09/17(木) 11:37:01ヒント:ヘルプ読め、カス。
0905デフォルトの名無しさん
2009/09/17(木) 11:58:54日本語を理解してからレスして下さい。
0906デフォルトの名無しさん
2009/09/17(木) 15:17:48EXEファイルがが生成されるフォルダにある同名のDLLを優先して呼び出す設定方法はあるでしょうか?
(プログラム上ではなく、開発環境の設定で)
Binフォルダのファイルを入れ替えるのが、一番簡単なのはわかっているのですが、
できればBinフォルダのファイルは入れ替えずに使用したいです。
お手数ですが、よろしくお願い致します。
0907デフォルトの名無しさん
2009/09/17(木) 15:26:42普通に最初はexeがあるフォルダを参照するんじゃね?
その後にパス参照じゃなかったっけ?
0908デフォルトの名無しさん
2009/09/17(木) 15:37:54私もそのように思っていたのですが、Binのファイルを削除すると正常に動作するので、
私の開発環境の設定では、おそらくBinフォルダを優先して参照しています。
0909デフォルトの名無しさん
2009/09/17(木) 16:31:560910デフォルトの名無しさん
2009/09/17(木) 17:39:29プロジェクトの設定の、どこを修正すればいいでしょうか?
プロジェクトオプションの、ディレクトリ条件で、
EXEフォルダを指し示すようにしてみたのですが、うまくいきませんでした。
0911デフォルトの名無しさん
2009/09/17(木) 17:46:51試していないけど、"APP名.exe.local" というダミーファイルを、EXEのフォルダに置いてみたらどうだろう?
0912デフォルトの名無しさん
2009/09/17(木) 17:47:33早く教えて
知ったかぶり?w
0913デフォルトの名無しさん
2009/09/17(木) 20:04:320914デフォルトの名無しさん
2009/09/17(木) 21:46:360915デフォルトの名無しさん
2009/09/18(金) 09:43:550916デフォルトの名無しさん
2009/09/18(金) 16:54:57これの位置大きさはX0,X1,Y0Y1に軸値を入れて設定しますが
これをリボンのポイントみたいにピクセルで3x3みたいに指定する方法を教えて下さい。
0917デフォルトの名無しさん
2009/09/18(金) 17:30:49質問のレベルがVBユーザー並みだな
0918デフォルトの名無しさん
2009/09/18(金) 18:16:34Use pixels or Axis co-ordinates to set the X, Y bounds of the Shape.
The position ( Left, Top ) of a Shape can be specified as axis values, while the size of the Shape (Width and Height) could be specified in screen pixels:
Series1.XYStyle := xysAxisOrigin;
Series1.X0 := EncodeDate( 1998, 1,1 ); <-- in BottomAxis scales
Series1.Y0 := 1234.56; <--- in LeftAxis scales
Series1.X1:=100 ; <-- 100 pixels Width
Series1.Y1:=30 ; <--- 30 pixels Height
0919デフォルトの名無しさん
2009/09/18(金) 19:24:46知らないならレスしない方がいいよ
0920デフォルトの名無しさん
2009/09/18(金) 23:19:380921デフォルトの名無しさん
2009/09/22(火) 09:10:24少し直してSeries1の値も表示させてみた
void __fastcall TForm1::Chart1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y)
{
StatusBar1->Panels->Items[0]->Text=Chart1->Axes->Bottom->CalcPosPoint(X);
StatusBar1->Panels->Items[1]->Text=Chart1->Axes->Left->CalcPosPoint(Y);
if(Series1->XValues->Count!=0){
int iCount=0;
while(iCount!=Series1->XValues->Count){
if(Chart1->Axes->Bottom->CalcPosPoint(X)<=Series1->XValues->Items[iCount]) break;
iCount++;
}
StatusBar1->Panels->Items[2]->Text=Series1->XValues->Items[iCount];
StatusBar1->Panels->Items[3]->Text=Series1->YValues->Items[iCount];
}
}
0922デフォルトの名無しさん
2009/09/24(木) 07:54:46有りそうなんだけど無いのかなあ?
APIでやらなきゃだめかなあ?
0923デフォルトの名無しさん
2009/09/24(木) 11:12:46できましたありがとうございます
ちなみに、30,30の位置に10,10で○を書かせると○の左上が30,30になるのですが
これを○の中心にするにはどうしたらいいのでしょうか?
0924デフォルトの名無しさん
2009/09/24(木) 11:17:27その程度の計算ができないわけじゃあるまい
0925デフォルトの名無しさん
2009/09/24(木) 11:38:59まずX軸値と座標値は違う点を考慮して頂きたい
計算だけなら下ので軸値は求まります。
int xx = tChartShape->CalcXPosValue( dXVal );
int yy = tChartShape->CalcYPosValue( dYVal );
tChartShape->X0 = tChartShape->XScreenToValue( xx - tChartShape->X1 / 2 );
tChartShape->Y0 = tChartShape->YScreenToValue( yy - tChartShape->Y1 / 2 );
座標をずらして表示位置を修正することは可能ですが
それをやるとスケール変更した場合(アップとか)場合におもいっきりずれた位置になります
スケール変更時に毎回計算し直して位置修正をせずにできるような方法が無いと不便なので
指定位置がシェイプの中心になるようなプロパティーありませんか?
必死にヘルプを見ているのですがみつからなくて・・・
0926デフォルトの名無しさん
2009/09/25(金) 00:08:03X0, Y0 , X1, Y1は必須なので924が正解じゃないかな
http://www.steema.com/のForumにでも 質問してみてはいかがでしょうか
0927デフォルトの名無しさん
2009/09/25(金) 00:22:39TSearchRecでFindFirst 関数
0928デフォルトの名無しさん
2009/09/25(金) 00:35:470929デフォルトの名無しさん
2009/09/25(金) 16:00:00F1008メモリ不足というコンパイルエラーになります
回避方法をお教え下さい
0930デフォルトの名無しさん
2009/09/25(金) 20:58:410931本田
2009/09/26(土) 17:51:27Inprise/Borland
http://cc.codegear.com/partners/bcb5/exclusive/object_windows_library/index.html
This release of the Object Windows Library is based on the OWL 5.4
release and is denoted as OWL 5.5.
It has been ported to Borland C++Builder 5 by Yura Bidus, author of OWLNExt.
It includes source code and debug and release libraries of, OWL, BIDS and OCF.
0932本田
2009/09/27(日) 12:37:46~ OWLNext project home ~
http://owlnext.sourceforge.net/
~ Setting up C++ Builder 2010 to work with OWLNext ~
http://owlnext.sourceforge.net/setupbds2010.html
0933デフォルトの名無しさん
2009/09/27(日) 15:59:31C++Builder3で作成されたアプリケーションが
「・・・のアドレス何々でアドレス・・・に対する読み込み違反がおきました」
と表示されます。
このアプリは別のアプリケーションからのソケット通信で受信したときに発生しているようです。
客先に納入したアプリでこのようなエラーが突然発生したとの連絡があったようなのですが、
自分も含めて先輩も、このメッセージ表示だけでは分からないと匙を投げてます。
なんとかこの異常が発生しないようにしたいのですが、通信の受信後もいろんな
関数を呼び出しており、どこで発生しているか特定できません。
アドレス・・・というので、デバッグできるものでしょうか?
詳しい方、デバッグの方法を教えていただけたら嬉しいです。
よろしくお願いします。
0934デフォルトの名無しさん
2009/09/27(日) 16:57:10つ ttp://leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/browse.cgi?index=68566
0935デフォルトの名無しさん
2009/09/29(火) 01:08:34TCheckListBoxを仮想モードにすると
チェックBOXをクリックしてもチェックがONになりません
このままでは使い物にならないんですが、何か回避方法ありますか?
0936デフォルトの名無しさん
2009/09/29(火) 01:38:420937デフォルトの名無しさん
2009/09/29(火) 01:51:150938デフォルトの名無しさん
2009/09/29(火) 11:18:420939デフォルトの名無しさん
2009/09/29(火) 12:41:40俺はC++Builderを使ってないが、それはWindowsの汎用エラーだろ
セグメンテーション違反でぐぐれ
そのメッセージだけじゃどうしようもないし、そういうときのためのtry〜catch〜finallyだろ
メモリアドレスからのデバッグもできるだろうけど、まずソースを洗ったり、エラーを再現した方が早いだろ
先輩もどうしたらいいかわからんとは、レベルの低い会社なんだな
俺が勤めてた超零細企業じゃとてもやっていけないぞ
0940デフォルトの名無しさん
2009/09/29(火) 14:19:30C++Builderを使ってないならレスしないで下さい。ウザいだけです。
0941デフォルトの名無しさん
2009/09/29(火) 14:28:56き え ろ ぶ っ と ば さ れ ん う ち に な
0942デフォルトの名無しさん
2009/09/29(火) 18:46:23これ使うにはどうしたらいいですか
0943デフォルトの名無しさん
2009/09/29(火) 18:51:13普通にInvalidateすると全セルやっちゃうのでグリッドがチラつくから
指定した一部だけやりたいですが、他にいい方法あったらおしえてくらだい
0945デフォルトの名無しさん
2009/09/30(水) 10:34:19MDIフォームのスクロールバーを出さないようにするにはどうしたらいいですか?
HorzScrollBarとかのVisibleをfalseにしても出てしまいます
0946デフォルトの名無しさん
2009/09/30(水) 12:02:41GetWindowLong/SetWindowLongでスクロールバーを外せばいいのではなかろうか。
0947デフォルトの名無しさん
2009/10/01(木) 10:49:07TCustomGrid(StringGrid1).InvalidateRow
0948デフォルトの名無しさん
2009/10/01(木) 11:06:09それでもまだ抽象クラスなんちゃらってエラーでちゃいますぅ
0949デフォルトの名無しさん
2009/10/01(木) 11:07:37cg->InvalidateRow( 0 );
とかやってみたけどやっぱりアクセスできないってエラーがでます
0950デフォルトの名無しさん
2009/10/01(木) 11:23:320951デフォルトの名無しさん
2009/10/01(木) 11:32:090952デフォルトの名無しさん
2009/10/01(木) 11:50:060953デフォルトの名無しさん
2009/10/01(木) 12:19:23InvalidateRowはpublic関数じゃないのでクラス外からのアクセスは不可。
TStringGridを継承する新しいクラスを作成する。
//---------------------------------------------------------------------------
class THogeGrid : public TStringGrid
{
public:
__fastcall THogeGrid(TComponent* Owner):TStringGrid(Owner){};
void __fastcall InvalidateRow(int ARow){TStringGrid::InvalidateRow(ARow);};
};
//---------------------------------------------------------------------------
ただコンポーネントとして追加しない場合、コンポーネントの作成はユーザが行う必要があるのと
オブジェクトインスペクタが使えないので、プロパティ設定は初期化コードの中で行う。
これで、THogeGrid::InvalidateRowを外部から操作できる。
0954デフォルトの名無しさん
2009/10/01(木) 12:33:580955デフォルトの名無しさん
2009/10/01(木) 13:42:270956デフォルトの名無しさん
2009/10/01(木) 13:43:36それよりバージョン示せ
Delphi2010ではInvalidateRowが無いぞ
0957デフォルトの名無しさん
2009/10/01(木) 13:56:34C++Builder5 pro
とりあえずやりたい事は指定セル(行)のみの再描画なんですよこれが
普通にInvalidateだとセル全部にいっちゃうもんでチラつくんですよ
APIとかでもいいのないですかね?
0958デフォルトの名無しさん
2009/10/01(木) 18:06:02OwnerDrawにして、DrawCell関数でコントロールしたら
うまくいかないかなあ?
DefaultDrawingまでやめると大変だけど。
0959デフォルトの名無しさん
2009/10/01(木) 18:20:30DrawCellsイベントでセルに色つけたりしてるんですが
指定セルのDrawCellsイベントを呼びたいんですよね
0960デフォルトの名無しさん
2009/10/01(木) 18:22:34正常に表示されているのですが
ChartShapeを動的に作成してTextとFont->Colorを指定しても
フォントの色が黒になってしまいます。(Textの値は正常です)
これ実行時にはどうやってTextの色を指定したらいいですか?
0961デフォルトの名無しさん
2009/10/01(木) 18:48:13DrawCellならそもそもセル指定だしな
0962デフォルトの名無しさん
2009/10/01(木) 20:49:13最終的にはWin32APIのInvalidateRectを呼び出すことになるんだが、
そのために必要な座標計算はTCustomGridのInvalidateRowの内部で
やっていることをコンポーネントの外側で処理しなきゃいけないので面倒。
TCustomGrid.InvalidateRow -> TCustomGrid.InvalidateRect ->
TCustomGrid.GridRectToScreenRectという流れ。でもこの中で一番
スコープが外側なのはTCustomGrid.InvalidateRow(protected)なので、
TStringGridの派生クラスを作る、という>953が正解かも。Delphiなら
別解ありなんだが。
0963デフォルトの名無しさん
2009/10/01(木) 20:58:120964958
2009/10/01(木) 21:06:22元々、更新したCellだけ再描画されるばずだよ。
0965デフォルトの名無しさん
2009/10/02(金) 09:02:51void __fastcall TForm1::Button3Click(TObject *Sender)
{
if(MyShapeSeries) delete MyShapeSeries;
MyShapeSeries=new TChartShape(Chart1);
MyShapeSeries->ParentChart=Chart1;
MyShapeSeries->HorizAxis=aBottomAxis;
MyShapeSeries->VertAxis=aBothVertAxis;
MyShapeSeries->Font->Color=clRed;
MyShapeSeries->Text->Add("Color");
}
void __fastcall TForm1::Button4Click(TObject *Sender)
{
if(MyShapeSeries) MyShapeSeries->Font->Color=clGreen;
}
0966デフォルトの名無しさん
2009/10/02(金) 09:59:00同じ事やっても変わらないからおかしいとおもって
色をclRedにしてみたら変わりました。
今まではclWhiteを指定したら白にならずに黒になってたもので・・・
何でこれ白はダメなんだろう・・・
ブラシとかぶったらダメなのかなあ
Transparent=trueにしてるからバックは関係ないかなっておもってるんだけど
とにかくありがとう
0967デフォルトの名無しさん
2009/10/02(金) 10:06:20っておもってたらやっぱ設計時も白は表示されてませんでした・・・
これclWhiteはダメだけどclWindowとかなら白になってるなあ
なにこれバグですか?
0968デフォルトの名無しさん
2009/10/02(金) 11:30:02MyShapeSeries->SeriesColor=clAqua; //clWhite以外を指定
これで白も表示されるはず。
0969デフォルトの名無しさん
2009/10/02(金) 11:43:46SeriesColorにclWhite以外を指定してFont->Color=clWhiteにしても黒になっちゃいました
まだ設計時でしかためしてませんが。
色々ありがとうございます
0970デフォルトの名無しさん
2009/10/02(金) 11:49:17TChartShapeに変数を追加したくて下記のようなクラスを作って
TChartShapeExを動的に作成してみたんですが・・・
class TChartShapeEx : TChartShape
{
public:
int Index; // コントロールインデックス(0〜n)
int Mode; // 操作モード*/
};
TChartShapeのプロパティーやメソッドにアクセスしようとしたら
アクセスできないってコンパイルエラーが出ます・・
かなりお馬鹿な質問ですが、こういう場合はどうやって記述したらいいですか?
0971デフォルトの名無しさん
2009/10/02(金) 21:12:04class TChartShapeEx : TChartShape
↓
class TChartShapeEx : public TChartShape
にしてみたら?
0972デフォルトの名無しさん
2009/10/05(月) 10:11:55あ、そっか・・・・
public 抜けてたんだ・・・
ありがとう・・・・
0973デフォルトの名無しさん
2009/10/05(月) 12:02:31TChartShapeの左上が原点になってしまいます。
これをTChartShapeの円の中心を原点にするにはどうしたらいいですか?
0974デフォルトの名無しさん
2009/10/05(月) 16:52:23設計時にCursorを変更しておくと実行しても指定したカーソルになっているのですが
プログラム中でたとえば何かボタンを押した時に
Chart1->Cursor = crCross;
とすると変わってくれません。
どうしたら変わってくれるんでしょうか?
0975デフォルトの名無しさん
2009/10/05(月) 18:44:52TChartで折れ線グラフを書いているのですが
その折れ線グラフのX軸値からY軸値を求める方法(メソッド)を教えて下さい・・・
0976デフォルトの名無しさん
2009/10/05(月) 19:41:310977デフォルトの名無しさん
2009/10/06(火) 18:48:560978デフォルトの名無しさん
2009/10/06(火) 22:24:510979デフォルトの名無しさん
2009/10/06(火) 23:43:40拡大や戻した時はどうするんですか?
Zoomとかのイベントで再計算ですか?
それはあまりにも悲しすぎて泣けてきました
0980デフォルトの名無しさん
2009/10/07(水) 00:11:41使うのが不適切な希ガス。何をしたいの?
0981デフォルトの名無しさん
2009/10/07(水) 10:00:39円の左上を基点としてるから30,30に書かれない
グラフは全て軸値を元に作成しているからシェイプだけピクセルで位置をずらして書くのは不合理
だからプロパティーで基点をシェイプの中心にするものがあるのかとおもって聞いてみたんですが
0982デフォルトの名無しさん
2009/10/07(水) 10:33:370983デフォルトの名無しさん
2009/10/07(水) 10:54:49シェイプじゃなくてポイントを使った方がいいですか
ちょっとそっちで試してみます
0984デフォルトの名無しさん
2009/10/07(水) 18:42:58TFastLineSeriesならSeriesColorで変更できますがTLineSeriesは変わりません
一旦消してサイドAddしあければダメでしょうか?
0985デフォルトの名無しさん
2009/10/07(水) 22:30:56procedure TForm1.FormShow(Sender: TObject);
var
I,X,Y: Integer;
begin
for I := 0 to 99 do
begin
X := I;
Y := I;
Chart1.SeriesList.Items[0].AddXY(X,y)
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Chart1.SeriesList.Items[0].Color := clBlue;
end;
Chart1にはTLineSeriesを1つ追加した状態で。
0986デフォルトの名無しさん
2009/10/07(水) 22:40:510987デフォルトの名無しさん
2009/10/07(水) 23:32:22あ、デルファイでも大丈夫です
すみません、明日試してみます。
ありがとうございます
0988デフォルトの名無しさん
2009/10/08(木) 10:17:11*.hを毎回読み込んでコンパイルしているみたいです。
ヘッダには関数の実体を書かずlibに関数の実体入れたら減らせるのはわかりますが。
調べたところ次の2点があると、プリコンパイル出来ないみたいです。
プリコンパイルではなくても、obj生成しておいて、それを使ってくれたら良いんですが。
ヘッダー内の関数にインラインでないものが含まれいる。 ヘッダー内にグローバル変数定義が含まれいる。
0989デフォルトの名無しさん
2009/10/08(木) 10:43:12シリーズリストからのアクセスだと動的に山ほどシリーズを追加しているので
リストの何番目かってのがいまいちわからないので直接作成した
LineSeriesでアクセスしたかったのですが、設計時にSeriesColorを変更すると
色が変わったので色々いじくってみたらどうやら
SeriesColorを変更する直前にColorEachPointをfalseにしてやると変わるみたいでした
予めColorEachPointにfalseを入れててもダメで色を変更する直前に
ColorEachPointを見てみてもfalseになってたので、何故か直前でfalseにしないとダメみたいでしたが・・・
0990デフォルトの名無しさん
2009/10/08(木) 11:05:43レス数が950を超えています。1000を超えると書き込みができなくなります。