くだすれC++Builder(超初心者用)その3
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/02/12(月) 03:39:51もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
C++Builder使いが優しくコメントを返しますが、
お礼はC++Builderの布教と初心者の救済をお願いします。
Borland Home Page http://www.borland.co.jp/
<過去スレ>
くだすれC++Builder(超初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1117225464/l50
くだすれC++Builder(超初心者用)その2
http://pc10.2ch.net/test/read.cgi/tech/1144308804/l50
<兄弟スレ>
くだすれDelphi(超初心者用)その39
http://pc10.2ch.net/test/read.cgi/tech/1169386914/l50
0362デフォルトの名無しさん
2008/01/16(水) 23:03:39> シリアルポートからのオン信号とオフ信号を受信して
受信処理はどうなってるの?というかオン信号とオフ信号って?
> その間の時間を
どうやって取得してる?
> 何かパソコンの設定のような気もしますが
まず自分のコードを疑おう。
> どなたかわかりますか?
エスパー求むってこと?
0363デフォルトの名無しさん
2008/01/16(水) 23:28:12説明不足でした。
特定コマンドをオン信号 オフ信号として判断してます。
0364デフォルトの名無しさん
2008/01/16(水) 23:41:13阿呆の見本なら居るようだが。
0365デフォルトの名無しさん
2008/01/17(木) 07:40:26試しに複数の方法で計測してみたらどうだ?
1、VCL Now() 関数の差
windowsAPI
2 GetTickCount()の差
3 GetMessageTime()
4、timeGetTime()
5、QueryPerformanceCounter()/QueryPerformanceFrequency
0366デフォルトの名無しさん
2008/01/17(木) 08:37:09親切に対応して頂き有り難う御座います。
試してみます。
0367デフォルトの名無しさん
2008/01/17(木) 09:51:170368デフォルトの名無しさん
2008/01/19(土) 18:42:14何ミリ秒後に処理を行うというプログラムを書きたいのですが、
時刻をミリ秒以下の単位で加算できるような関数はないでしょうか?
一応、単一スレッドで、複数の処理を実行しないといけないので、Sleep
による停止は出来ません。
例えば、こんな感じで使いたい:
time = getTime();
time1 += 3500;
time2 += 4000;
:
for(;;){
now = getTime();
if( now >= time1 ){
doSometing();
time1 = now + 3500
}
if( now >= time2 ){
doSometing();
time2 = now + 3500
}
:
}
0369デフォルトの名無しさん
2008/01/19(土) 19:54:10BCB5で作ったソースを読み込み実行すると
パラメータSenderは一度も使用されないと警告がでます。
気になります。
警告を外すのもなんですし。
警告が55もだされるのもいやなんですが。
みなさんはどんな感じなのでしょうか?
void __fastcall TForm1::Button8Click(TObject *Sender)
ちなみに呼び方はBCB7でOK?
0370デフォルトの名無しさん
2008/01/19(土) 20:43:28void __fastcall TForm1::Button8Click(TObject *)
{...
とかパラメータを型だけにして仮引数名を書かないってのはだめですか?
0371デフォルトの名無しさん
2008/01/19(土) 20:51:06がっつり怒られました^^;
0372デフォルトの名無しさん
2008/01/19(土) 20:55:05いろいろやってみます。
Senderってなんだっけ?
調べてみます。ども、助かりました。
0373デフォルトの名無しさん
2008/01/19(土) 21:01:26timeGetTimeの戻値を加算で出来ました。
0374370
2008/01/19(土) 21:06:480375デフォルトの名無しさん
2008/01/19(土) 21:06:59消したら警告はきれいさっぱり。
ほんとにいいのか?ま、いいか
0376デフォルトの名無しさん
2008/01/19(土) 21:20:42了解です。
0377デフォルトの名無しさん
2008/01/19(土) 21:45:26完全にオーバースペックになるけどパフォーマンスカウンタ使うと恐ろしい精度で計測できるよ
0378370
2008/01/19(土) 22:17:200379デフォルトの名無しさん
2008/01/21(月) 16:25:37TImage* img=new TImage(this);
img->Height=16;
img->Width=16;
Image1->Picture->Icon->Handle=LoadIcon(NULL,IDI_APPLICATION);
すると大きいアイコンの左上1/4が取得されてしまいました。
小さいアイコンをリソースから取得するにはどうすればいいのでしょうか、教えてください。
0380デフォルトの名無しさん
2008/01/21(月) 16:43:010381デフォルトの名無しさん
2008/01/21(月) 19:55:02プロのプログラマでもあまりにレベルが低い人が多すぎます。
そんな人に限って、自分のレベルの低さを自覚していない、、、
本人は構わないかもしれませんが、その下についた新人プログラマは
たまったものではありません。(私が経験しました。)
今になって分かりました。
彼らもまた、理解できていなかったのです。
プログラミング言語の一番の習得の近道はきちんと理解している人にアドバイスをもらうこと。です。
(何といったって、参考にしようとする市販の本さえ、 きちんと説明してくれていないのですから、
その証拠にC言語の学習で悩む人がどんなに多いことか)
私のC言語に取り組んだ7年間をすべてぶつけたつもりでテキストを作りました。
私の会社の後輩からは、どんなテキストよりもわかりやすかった!や、
今まで教えてくれていた先輩や、テキストたちが、ちゃんと理解できていないことがわかりました。
と、嬉しいコメントをたくさんもらいました。
そしてなにより、彼らの社内での評価がとても高いということが、私の誇りです。
宣伝と言ってしまえば、そうなってしまうかもしれませんが、ひとりでも多くのプログラマを救いたい。
プログラムの世界そのものの実力を底あげに貢献し、
無意味なバグに、残業したり、悩んだりして欲しくないのです。
興味がある方はどうか、下のサイトをみてみてください。
http://mori.eco.to/
0382デフォルトの名無しさん
2008/01/21(月) 21:42:300383デフォルトの名無しさん
2008/01/21(月) 21:49:200384デフォルトの名無しさん
2008/01/22(火) 00:03:25ExtractIconEx
0385デフォルトの名無しさん
2008/01/22(火) 00:03:530386デフォルトの名無しさん
2008/01/22(火) 00:14:57おまえ、2chに宣伝出したら、広告料すごいぞ?
最初にレス書いた時の許諾事項は読んだよな?大丈夫なのか?
0387デフォルトの名無しさん
2008/01/22(火) 10:07:360388デフォルトの名無しさん
2008/01/23(水) 00:33:410389デフォルトの名無しさん
2008/01/29(火) 03:30:36としたあと、その開放完了をWaitForSingleObjectのように低い負荷で待ちたいと考えています。
どのようにすればよいでしょうか。
よろしくお願いします。
0390デフォルトの名無しさん
2008/01/29(火) 07:50:02どっちにしても、メインスレッドでメッセージポンプ回してやらないとPostMessage
しただけじゃいつまでたっても終了しないよ。
0391デフォルトの名無しさん
2008/01/29(火) 10:22:48下記のように定義して、abcの要素数分(5個)をdefの大きさ(x)にしたいのですが
abcを書き換えても、xが自動的に決まるように書くにはどう記述すれいいですか。
AnsiString abc[]={
"111.",
"222",
"333",
"444",
"555"
};
int def[x];
0392デフォルトの名無しさん
2008/01/29(火) 12:34:46http://blogs.wankuma.com/melt/archive/2007/09/01/93176.aspx
0393デフォルトの名無しさん
2008/01/29(火) 13:02:17ありがとう。
_countof()はBuilderには無いんですね。エラーですた。
template <typename _CountofType, size_t _SizeOfArray>
char (*__countof_helper(_CountofType (&_Array)[_SizeOfArray]))[_SizeOfArray];
#define _countof(_Array) sizeof(*__countof_helper(_Array))
これをこぴってきて
_countof(abc) にて要素数が簡単に取得できるようになりました。
0394デフォルトの名無しさん
2008/01/29(火) 17:14:232007でコンパイルしたらリソースリークが発生した。なんで?
sys\sysutils.pasの何行目とか表示してるけど、このファイルどこにあるの?
エディタのメッセージからは開けなかった。環境変数がおかしいのかな?
0395デフォルトの名無しさん
2008/01/29(火) 18:57:59windows タスクバーのボリュームコントロールをプログラムから開くには?
スタート・メニューは、webから探した
HWND hTaskBar=FindWindow(PChar("Shell_TrayWnd"), NULL);
if (SetForegroundWindow(hTaskBar)){
PostMessage(hTaskBar, WM_USER+0x0104, 0, 0);
}
で開けたので、似たような方法で出来ると思うのですが???
0396デフォルトの名無しさん
2008/01/29(火) 19:13:230397389
2008/01/29(火) 21:04:42ありがとうございます。
DLLを作っているのですけれども、ホストの終了時に呼ばれる関数内でフォームを解放し、それが完了したらホストに値を返すようにしたいです。
だから別スレッドでは無いと思います。
0398デフォルトの名無しさん
2008/01/29(火) 21:06:13レス感謝です。
実は先ほどボンヤリとsystem32フォルダを眺めていてsndvol32.exeを見つけ
WINEXECで開けました。
メインのボリュームだけで良かったんだけど、取り合えず良しとします。
最終的にはアプリ内の自作スライドでこのマスター・ボリュームをコントロール
したくてWin32 API プログラマーズ リファレンスと格闘中です(^^;)
0399デフォルトの名無しさん
2008/01/29(火) 23:23:07FastMMで詳細を表示させてみたら?
0400394
2008/02/01(金) 21:51:01原因はよくわからんが、同じ処理を2回やってたのがまずかったらしい。
AnsiStringに数字を入力するときにエラー処理として
try{
edit->Text.ToDouble();
}catch{
edit->Text="1.0";
}
みたいなコード書いてて、この処理の後に別の関数呼ぶんだけど
同じような処理の後、描画の処理になってたのを
このコードの別の関数を呼ぶ場所に描画の関数を書いたらエラーは出なくなったよ。
何でエラーが出たのかさっぱりわからん。
とりあえず自己解決しました。
FastMMはこれから作るプログラム全部に導入しようと思います
ありがとう。
0401デフォルトの名無しさん
2008/02/06(水) 14:17:190402デフォルトの名無しさん
2008/02/07(木) 06:40:370403デフォルトの名無しさん
2008/02/16(土) 13:24:18AnsiString t="";
s.printf("t=%s",t);
とすると、s が "t=(null)"
となってしまいます。
この(null)を出力させないようにするには、
s が "t="となるようにするにはどうすればいいでしょうか。
0404デフォルトの名無しさん
2008/02/16(土) 13:43:330405デフォルトの名無しさん
2008/02/16(土) 14:28:37早々に、さんくすです。
0406デフォルトの名無しさん
2008/02/27(水) 10:05:06上に持って来ることは出来ますか?
なんか使いづらくて
0407デフォルトの名無しさん
2008/02/27(水) 12:07:370408デフォルトの名無しさん
2008/02/28(木) 01:06:00昔のバージョンでは1発で目的のファイルを開けたのに
つかいにくく感じるのは自分だけなのか
0409デフォルトの名無しさん
2008/03/02(日) 15:40:26修復できる方法はないでしょうか
0410デフォルトの名無しさん
2008/03/02(日) 17:55:190411デフォルトの名無しさん
2008/03/02(日) 17:56:040412デフォルトの名無しさん
2008/03/04(火) 09:56:40プログラム上からのフォルダーのリネーム
ってどうやるんでしょう?
環境XP+BCB++V5。手段は問いません。
0413デフォルトの名無しさん
2008/03/04(火) 10:30:12Sysutils::RenameFile(const AnsiString OldName, const AnsiString NewName);
0414デフォルトの名無しさん
2008/03/04(火) 19:57:19レス有難う
ファイルじゃなくてフォルダ
(ディレクトリ)のリネームなんですよ
RenameFile(a,b)ではエラーになりますね。
ヒントなのかな・・・読めない・・?
0415デフォルトの名無しさん
2008/03/04(火) 21:02:040416デフォルトの名無しさん
2008/03/04(火) 21:18:06お手軽にMoveFileのUnicode版使えば?
0417デフォルトの名無しさん
2008/03/04(火) 21:52:34image->canvas->pixel[x][y] = (TColor)((a[x][y] >> 16) | (b[x][y] >> 8) | (c[x][y]))
でCanvasに書き、それを
SavePictureDialogでビットマップに保存しているのですが、
保存されるファイルが32bitのビットマップになっているようです。(ファイルサイズ的に)
これを24bitのビットマップで保存したいのですが、どのようにすれば宜しいのでしょうか?
0418デフォルトの名無しさん
2008/03/04(火) 22:40:53でいいんじゃね?
0419デフォルトの名無しさん
2008/03/04(火) 23:28:54非BCB環境のwin2000で実行したところ、
CG32.DLLがないと怒られます。開発環境では動きます。
オプション->デバッグ->CodeGuardの有効チェックボタンfalseと
ツール->CodeGuardの環境設定->CodeGuard無効としてます。
バージョンはC++Builder(R) 2007 R2 Version 11.0.2902.10471で、
sp2とは書いていないのですが、最新と思ってます。
参考に以下のサイトを参考にしましたが、
うまくいきません。情報があれば教えてください。
tp://www.gesource.jp/weblog/archives/2007/08/cbuilder2007cg32dll.html
0420デフォルトの名無しさん
2008/03/05(水) 00:57:03の追加情報にバージョンの確認方法書いてあるからまずはそれをチェックしてみれ
0421デフォルトの名無しさん
2008/03/05(水) 01:14:29追加情報
1. このパッチを適用した後も、バージョン情報ダイアログに表示されるバージョン番号は変わりませんが、
bin ディレクトリにあるファイルのタイムスタンプは、11:02になります。
bds.exeが4:04でした。
インストール4回目だわさorz
あしたやってみます。
インストールキャッシュの有無の確認方法ってありますか?
また、インストール時キャッシュの保存ってあったっけ?
情報ありがとうございました。
0422417
2008/03/05(水) 19:44:28出来ました!ありがとうございます。
しかし、同じコードを書いた別のプロジェクトがあるんですが、それは24bitのビットマップで保存されているんですよね。
imageコンポート上かどっかで設定が出来るんですかね
0423デフォルトの名無しさん
2008/03/05(水) 21:43:120424デフォルトの名無しさん
2008/03/05(水) 22:48:52CG32.DLLの件のものです。
意気揚々とアンインスコに取り掛かり、
せいぜい1h程度と思いきや2h以上orzで、
再インスコで以下のキャッシュの削除の有無の
選択画面を期待しながら「次」を押すと
ttp://support.codegear.com/jp/article/images/36815/03000008.png
そんな画面が出ずにガンガン突き進んで
無事?完了
で、なぜキャッシュの運用を聞いてこないか
理解できない。
ちなみに、インスコプログラムのバック画像は
グリッド状のドーム天井を背景に
パルテノン神殿っぽい建物の画像で、
ttp://support.codegear.com/jp/article/images/36815/03000008.png
は12345といったプログラムコードの背景なので・・・
つかれた。情報あれば、教えてください。
0425デフォルトの名無しさん
2008/03/05(水) 23:25:24無料インストールサポートあったでしょ。たしか。
0426デフォルトの名無しさん
2008/03/06(木) 10:09:310427デフォルトの名無しさん
2008/03/10(月) 21:16:11以下のソースで、実行F9とビルド時S+F9では挙動がことなりよくわからなくなっています。
実行時は普通にアクティブなソフトの全パスが表示されますが、ビルドしたのを実行すると取得できません。
何かの勘違いか、コンパイラの使用知識不足としか思えません。よくないところを教えていただけないでしょうか?
#include <vcl.h>
#include <psapi.h>
#pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{ HWND hWnd=GetForegroundWindow();
bool blJEJ=false; DWORD dwPID; GetWindowThreadProcessId(hWnd, &dwPID);
hWnd = OpenProcess(PROCESS_ALL_ACCESS, 0, dwPID);
DWORD ReturnSize;
if(!hWnd){ ShowMessage("if(!hWnd)");//デバッグ用//ここにhWndの値をShowMessageするにはどうすりゃいいんだ? }
if(hWnd){
char buf[MAX_PATH];
HMODULE hMod; DWORD size;
EnumProcessModules(hWnd, &hMod, sizeof(hMod) ,&size);
GetModuleFileNameEx(hWnd, hMod, buf, sizeof(buf));
CloseHandle(hWnd);//これの意味がわからない。
AnsiString str=fname; ShowMessage(str);
}
//---------------------------------------------------------------------------
へたなコードですが、素人なのでご容赦を
0428デフォルトの名無しさん
2008/03/11(火) 00:16:57hWnd = OpenProcess(PROCESS_ALL_ACCESS, 0, dwPID);
DWORD ReturnSize;
if(!hWnd){ ShowMessage("if(!hWnd)");/
どうも、if(!hWnd)がtrueになるみたいです。
ほとほと困りました。なにとどご支援お願いいたします。
状況説明に不足がございましたら、レスしていただければ
助かります。
0429デフォルトの名無しさん
2008/03/11(火) 01:03:08OpenProcess() の戻り値とOSの関係とか、権限とかはOK?
0430デフォルトの名無しさん
2008/03/11(火) 09:19:33ShowMessage("if(!hWnd)");//デバッグ用//ここにhWndの値をShowMessageするにはどうすりゃいいんだ?
↓
IntToStr(hWnd) or IntToStr(hWnd) or AnsiString().sprintf("%08X", hWnd)
0431デフォルトの名無しさん
2008/03/11(火) 09:28:41OpenProcessの戻り値はHANDLE型。
0432デフォルトの名無しさん
2008/03/11(火) 09:52:09能とか表があると、gccのコンパイルが失敗するので、ソースファイルをUTF8にしたいんでつよね。
0433デフォルトの名無しさん
2008/03/11(火) 10:08:31>OpenProcessの戻り値をHWNDに入れてる。
OpenProcessの戻り値はHANDLE型。
ちょっと見えてきました。
まずは型の勉強をしてみます。
APIの型ってよくわからないんです。
でも、実行では動くのにビルドでは動かない。
ビルドはできるのに。ちくしょう!
夜やってみます。キャストの件ありがとうございます。
0434デフォルトの名無しさん
2008/03/11(火) 12:53:33GetLastError()を調べたところ、
5が帰ってきました。
p://onegland.hp.infoseek.co.jp/wincgi/help/winerror.txt
によると5は
5: アクセスは拒否されました。
とあり、悲しい限りです。
なんらかの対策はないでしょうか?
0435デフォルトの名無しさん
2008/03/11(火) 12:56:410436デフォルトの名無しさん
2008/03/11(火) 14:36:340437デフォルトの名無しさん
2008/03/11(火) 19:34:26だめでした。
「ウインドウハンドル ファイル名」でググッて
実装しているんですが。
GetForegroundWindowして、希望のexeがトップかどうかを
調べてるだけなんです。。。
ほかにいい方法ありませんか?
あきらかにAPIの問題だけど、あのスレ結構きついんだなぁ。
BCBしかわからんし。すれ違いかな?しつこくて申し訳ないです。
0438デフォルトの名無しさん
2008/03/11(火) 19:58:210439デフォルトの名無しさん
2008/03/11(火) 20:09:03調べたいのです。
そのため、GetForegroundWindowでウインドウハンドルを求めて、
アプリ名を検出し、特定のアプリかどうかの文字列判定をしています。
というわけで、アプリ名を知りたいのではないのです。
具体的には、作ってるのはユーティリティで、特定のアプリを
操作しているときに、激しく自前ソフトを実行し、
非特定アプリを操作しているときは、特定のアプリかどうかの
判定のみを実行するのです。ぅ〜ん、うまくいかないなぁ。
実行とビルド実行でこれだけ差がでるとつらいなぁ。
0440デフォルトの名無しさん
2008/03/11(火) 20:29:05HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, pid);
0441デフォルトの名無しさん
2008/03/11(火) 20:44:04おみごと!
どうにか動きました。よくわかんないけど。
いろいろありがとうございました。
0442デフォルトの名無しさん
2008/03/11(火) 20:44:14DWORD pid;
GetWindowThreadProcessId(hWnd, &pid);
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,pid);
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(PROCESSENTRY32);
bool ret = Process32First(snapshot, &pe32);
while(ret) {
if( pid == pe32.th32ProcessID ) ShowMessage(pe32.szExeFile);
ret = Process32Next(snapshot, &pe32);
}
CloseHandle(snapshot);
0443デフォルトの名無しさん
2008/03/11(火) 21:09:039xにも対応させたいし。って対応可能??
では。
0444デフォルトの名無しさん
2008/03/12(水) 01:15:57NT系でフルパス取るにはやっぱりPSAPIで取らないとだめ。
あと9x対応にするにはGetModuleFileNmaeExとEnumProcessModulesをLoadLibrary/GetProcAddressでロードしないとエラーが出る。
0445デフォルトの名無しさん
2008/03/12(水) 02:01:47TListViewにて
ListView1->ViewStyle=vsReport;にして
ListView1->Columns->Items[0]->Alignment=taRightJustify;
としても、文字列表示が左寄せのままです。
他の列はちゃんと右寄せに表示されます。
先頭列を右寄せで表示するにはどうすればいいでしょうか。
0446デフォルトの名無しさん
2008/03/12(水) 06:14:060447デフォルトの名無しさん
2008/03/13(木) 01:31:11最初のカラムのAlignmentが無効なのはコモンコントロールの仕様じゃなかったっけ?
0448デフォルトの名無しさん
2008/03/20(木) 20:01:53プルダウンリストで表示するプロパティを探しているのですが、
わかりません。教えていただければ助かります。
リストボックスでなくてもいいです。
コンボボックスのように入力は受け付けたくありません。
例としてはIEのインターネットオプションのプログラムタグの
HTMLエディタや電子メールといったリストボックスです。
0449デフォルトの名無しさん
2008/03/20(木) 20:25:270450デフォルトの名無しさん
2008/03/20(木) 20:28:39ありがとございました。
0451デフォルトの名無しさん
2008/03/20(木) 22:39:55今までGCCでやっていたときには同じフォルダにテキストファイル
おいておけばよかったんですが
Turbo C++に変えてからは同じフォルダに置いてもできません
0452デフォルトの名無しさん
2008/03/20(木) 22:50:540453デフォルトの名無しさん
2008/03/20(木) 23:22:49できました
テキストファイルをプロジェクトファイルにおいていました
実行ファイルはDebug_Build内に作られるんですね
0454デフォルトの名無しさん
2008/03/21(金) 00:43:11SetCurrentDirectory(ExtractFileDir(Application->ExeName).c_str());
とか書いておけばいい
0455デフォルトの名無しさん
2008/03/21(金) 23:52:200456デフォルトの名無しさん
2008/03/26(水) 01:10:47TListViewでチェックボックスを表示した場合とTCheckListBoxに表示される
チェックボックスでは見た目が違うのですが(TListViewに表示される方が枠が黒く太い)
これをTCheckListBoxで使われているようなチェックボックスに変える簡単な方法は
ないでしょうか?
0457デフォルトの名無しさん
2008/03/27(木) 09:12:23ダイアログボックスでOKボタンが押されたときに、TEditの内容が未入力だったら
TEditにカーソルを持っていき、入力をしてもらうようにしたいと考えています。
カーソルを持っていくには、
Edit1->SetFocus();で出来たのですが
OKボタンがおされたときに、OKBtnClick(TObject *Sender)で
Edit1のなかみを調べて、何も入っていなければ
Edit1->SetFocus();を実行しても、ダイアログが閉じてしまいます。
これは、ボタンにModalResult=mrOkを指定しているからだとは思います。
OKボタンがおされたときに、Edit1がカラならEdit1へ
ちゃんと入力されていれば、そのままダイアログを閉じたいのですが
どうすればよいでしょうか。
0458デフォルトの名無しさん
2008/03/27(木) 09:23:51Edit1->SetFocus();
ModalResult = mrNone;
}
0459デフォルトの名無しさん
2008/03/27(木) 09:30:420460デフォルトの名無しさん
2008/03/27(木) 11:18:26>>459
できました。
どうもありがとうございます。
0461デフォルトの名無しさん
2008/04/04(金) 07:54:34AnsiString str;
int index;
if(index!=0)
str="AAA";
else
str="BBB";
これは、
str= index!=0 ? str="AAA" : str="BBB";
このように書けば良いのはわかるのですが、
if(index!=0)
str.printf("%d",a);
else
str.printf("%d",b);
これの三項演算子での記述の仕方がわかりません。
indext!=0 ? (str=str.printf("%d",a)) : (str=str.printf("%d",b));
とすると、strにはstrの長さが文字として入ってしまいました。
■ このスレッドは過去ログ倉庫に格納されています