C++Builder相談室 Par ..
170:デフォルトの名無しさん
08/10/30 19:02:18
その程度ができないのになんでプログラムなんて書いてるの?バカなの?
171:デフォルトの名無しさん
08/10/31 15:32:06
アイコン化されたフォームを元に戻す方法を教えてブタ共よ
172:デフォルトの名無しさん
08/10/31 15:37:40
Application->Restoreでできたわ
ほんとお前らって何の役にも立たないブタだよな・・・
173:デフォルトの名無しさん
08/10/31 16:27:08
役に立たないブタはageます
174:デフォルトの名無しさん
08/11/01 00:31:47
自力でできたということは、自力でやらせようとした人間達の狙いは大成功したということで、
役に立たないどころかすべてが計算通りに進んだということですw
175:デフォルトの名無しさん
08/11/03 20:06:59
csv方式で
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にだしたいのですがどのようにすればよいでしょうか
176:デフォルトの名無しさん
08/11/03 20:10:04
ずれていたので再投稿します
csv方式で
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にだしたいのですがどのようにすればよいでしょうか
177:デフォルトの名無しさん
08/11/03 20:28:15
void __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[2] != "000")
Memo1->Lines->Add(Data->Strings[3]);
}
delete Data;
}
178:デフォルトの名無しさん
08/11/03 20:30:24
ごめんこっちで
void __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;
}
}
179:デフォルトの名無しさん
08/11/03 20:44:28
AnsiString as;使ってなくね
いらないけどさ
180:デフォルトの名無しさん
08/11/03 20:46:46
>>179
ごめんそうです
削ってくらはい
181:デフォルトの名無しさん
08/11/03 20:56:09
>>177>>178
ありがとうございます!
csv形式のテキストはオープンダイアログから読み込みその中から抽出することはできるのでしょうか
また先ほどの文で
DelimiterとDelimitedTextはTStringListのメンバーではないと言われるのですが
何か宣言文などが必要なのでしょうか。
まだまだ初心者でして;いろいろご迷惑かけてすいません。
182:デフォルトの名無しさん
08/11/03 21:17:26
>>181
>csv形式のテキストはオープンダイアログから読み込みその中から抽出することはできるのでしょうか
できます。
TOpenDialog->Filesに入ります。
>DelimiterとDelimitedTextはTStringListのメンバーではないと言われるのですが
>何か宣言文などが必要なのでしょうか。
えっもしかしてC++Builderのバージョンは5以前ですか?
183:デフォルトの名無しさん
08/11/03 23:14:27
しばらく待ってみましたが返事がないのでDelimiterを使わないバージョンを
書いてみました。
コンマの数や桁数などは決め打ちになってますので必要ならば適宜変更して
ください。
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());
}
}
}
184:デフォルトの名無しさん
08/11/04 19:29:47
>>183
返事が遅れてすいません。ありがとうございました!大変感謝しています
こちらのやり方で動きました。c++builderはver5を使っています
あと桁数をコンマの数をかえるとのことなのですが、
桁数を変える場合は5桁表示するならpos 5 にすればよいことはいじっていてわかったのですが
コンマの位置を変える場合どの部分を変えていけばよいのでしょうか・・・
よろしければアドバイスお願いします><
実際の応用テキストではさらに数字が多く6番目数字(コンマ5つ目)が00:00:00(桁数は変化しない)以外の時に
11番目(コンマ10個目)の数字を表示するようにしたいのです。実際に表示したい数字も小数点を含む5.55(桁数は変化しない)などです。
185:デフォルトの名無しさん
08/11/04 20:07:38
>>184
かなり汚いですが一応動くので載せておきます。
コンマの位置を変えるには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++;
}
次に続く
186:デフォルトの名無しさん
08/11/04 20:08:38
std::string::size_type pos2 = str.find(',', pos) + 1;
if (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[] の機能を自前で書けばすっきりするはずです。
187:デフォルトの名無しさん
08/11/04 20:21:50
public:
__property AnsiString Cells [int rows] [int cols]= {read=GetCell, write=SetCell};
こんなメンバ持たせたCSVクラス作って使ってるなぁ
188:デフォルトの名無しさん
08/11/04 20:29:44
>>187
BCBはDelphiとのインターフェースが割合簡単に取れるから、
Delphiで書かれたcsvパッケージでも入れたら楽でしょうね。
189:デフォルトの名無しさん
08/11/04 20:31:03
>>185>>186
ありがとうございます。重ね重ねすいません;;
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など)でこちらも桁数については変りません。
190:デフォルトの名無しさん
08/11/04 20:33:23
>>189
今回のプログラムは00:00:00の桁数については決め打ちしていませんので
"00:00:00"を"00:00:00:00"に変更すればいいです。
191:デフォルトの名無しさん
08/11/04 20:56:52
>>190
わざわざありがとうございます;;どうやら勘違いしていたようでした。
実際の00:00:00:00のテキストのほうではコンマごとにわかりやすいように半角スペースがついており
半角スペース5列数字、半角スペース1列数字、半角スペース1列数字、半角スペース3列数字・・・
などのように書かれており上記のプログラムで半角スペースも認識されるため正しい数字が出せていないようでした。
(半角スペースを全部埋めていった場合正しい数字がでました。)
半角スペースを含んだ上で数値を出したいのですがこういう場合どのようにすればいいのでしょうか。
192:デフォルトの名無しさん
08/11/04 21:03:36
>>191
これ以上後出し条件はやめてください。
どこかのロダにそのテキストをうpしていただけませんか。
193:デフォルトの名無しさん
08/11/04 21:06:59
つーかもうC++Builderの話題じゃなくなってるし
TStringsListのバージョンは古くて使えないしだから
C++相談室にでも書いてみたら?
194:デフォルトの名無しさん
08/11/04 21:08:06
まぁ・・・ね
あなた専用のサポートスレではないんですよって感じですかね
195:デフォルトの名無しさん
08/11/04 21:13:55
例えサポートスレだとしてもこんな感じで次々に条件を変えられたら
イラッと来ると思うけどね
196:デフォルトの名無しさん
08/11/04 21:18:54
おれは、CSV文字列1行を
TStringListに分解する関数を作って使ってる。
この関数1個あれば、CSVを全然意識せずに文字列として扱える。
197:デフォルトの名無しさん
08/11/04 21:25:44
全然関係ない話だけど俺はBCB3から2009まで買ってきたなあ
最初の頃は全然使い方が分からなくて、その頃に丁度Delphi6
のフリー版が出たので、Delphi本をBCBに翻訳しながら打ち込んで
動かす事で覚えたっけ。
お陰様でBCB6からは自由自在に使えるようになった。参考書も
BCB用が皆無の頃でDelphi本を買って参考にしたっけ。
198:デフォルトの名無しさん
08/11/04 21:31:37
せっかく教えて頂いたのに重ね重ね申し訳ありませんでした・・・;;
次からはもう少し慎重に確認していくように注意します。
ここから先は自己解決していきたいと思います。
何度も教えていただきありがとうございました!!
199:デフォルトの名無しさん
08/11/04 21:32:21
VCLがObject Pascalで書かれているのでそれをC++で動かすために
少しの言語拡張とC++のクラスの柔軟性とマクロの多用で対応して
いるが、今見ても頭がおかしい人が設計したんじゃないかと思う事がある
200:デフォルトの名無しさん
08/11/05 09:16:56
>>196
CommaTextというプロパティがあってね・・・
1例だけ特殊対応しなければいけないけど大抵はこのプロパティだけで大丈夫だな
201:デフォルトの名無しさん
08/11/05 12:43:08
CommaTextでは正しく解釈できない場合があるし
CSVの記述が正確ではない場合
悲惨な結果をもたらすことになる。
趣味なら笑って済ますことも出来るだろうが
業務用プログラムでは、
とてもじゃないが、CommaTextは使えない。
202:デフォルトの名無しさん
08/11/05 13:39:21
>>200
それスペースまで区切りとみなしちゃうだろ?
""で囲ってあればいいけどそうでないのってどうしてる?
203:デフォルトの名無しさん
08/11/05 13:41:32
CSVのラインを解釈してバラして保持するクラスを自作すれば無問題。
その後、TStringList系は使いまくってるけど。
204:203
08/11/05 13:42:27
さらにそのCSVの1ラインを解釈して保持するクラスに、TStringListとの入出力を持たせればおk。
205:デフォルトの名無しさん
08/11/05 13:49:10
正しく解釈出来ないのが"で括られてない項目のスペースだな
>>201CSVの記述が正確では無かったら何やっても悲惨になるんだがw
俺はStringListに分解したあとにチェック入れてる
206:デフォルトの名無しさん
08/11/05 13:57:34
TStringListのDelimiterとDelimitedTextってC++Builder5にないけど
これって6から?
207:デフォルトの名無しさん
08/11/05 13:59:24
>>206
そう
俺はBCB6から本格的にBCBを使い出したからBCB5以前の
奴とは話が時々合わず苦労する
208:デフォルトの名無しさん
08/11/05 14:01:56
5から6へのバージョンうpは安定してるし、
Indy増えるし、やっぱそれに関しては無条件バージョンうpじゃね?
6から200Xへはやったことないガクブル
209:デフォルトの名無しさん
08/11/05 14:24:24
2009使ってるけどこれどう見ても2006や2007と大差ないんだけど
Delphi + BCB で3万円が妥当な価格だと思う
エンバカは高く設定し過ぎ
210:デフォルトの名無しさん
08/11/05 16:24:57
バカだから仕方ない
211:デフォルトの名無しさん
08/11/09 20:51:23
2009出たけど配布用の仕組みって入ってる?JavaWebStartみたいな。
業務アプリはネイティブで作ると楽だけど配布がウザすぎてWebにしたくなる。
212:デフォルトの名無しさん
08/11/11 17:24:47
VCLのラジオボタンをCLXのラジオボタンと同じ動きにする方法ってありませんか?
CLXアプリをVCLアプリに書き換えてるんですが、CLXのラジオボタンがスペーキーを押すまでチェックされないみたいなので…
環境はCLX→6.0 VCL→2007です
213:デフォルトの名無しさん
08/11/11 19:38:51
>>210
バカに貢俺らって、バカ馬鹿だな
214:デフォルトの名無しさん
08/11/11 20:12:42
だがそれがいい
215:デフォルトの名無しさん
08/11/16 15:27:45
A1とA2にはTStringlistで500行の数字の配列が格納されています。
その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の同じ行の数字が並んで表示されているだけなの
ですがこれでは配列の足し算はできていないのでしょうか?
どなたかよければアドバイスお願いします。
216:デフォルトの名無しさん
08/11/16 15:34:11
足し算できてる。文字列の足し算が。
C++のデータには「型」があるんよ。数値とか文字とか。
StrToIntとかで数値に変換してから足せ。
217:デフォルトの名無しさん
08/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個の配列です。
218:デフォルトの名無しさん
08/11/16 16:46:25
A1->Strings[i].ToStrInt()
219:デフォルトの名無しさん
08/11/16 16:48:05
ちごた
A1->Strings[j].ToDouble()
220:デフォルトの名無しさん
08/11/16 16:59:45
AnsiStringで受け取る必要ないのぜ。
221:デフォルトの名無しさん
08/11/16 17:04:48
>>219
ありがとうございます。
うまく変換して計算することができました。
222:デフォルトの名無しさん
08/11/16 17:24:36
2007/2009はAnsiStringTでヘルプ探さないと見つからないな
223:デフォルトの名無しさん
08/11/17 15:37:38
WINDOWS95で動くのはどのバージョンまでですか?
224:デフォルトの名無しさん
08/11/17 16:26:55
とりあえず、BCB6は動く。
225:デフォルトの名無しさん
08/11/17 16:45:24
BCB6はとりあえず動くね。
226:デフォルトの名無しさん
08/11/17 16:57:01
ただ、ヘルプ周りはWindows2000以降じゃないと‥‥
227:デフォルトの名無しさん
08/11/17 17:07:16
逆に、ヘルプ周りはWindows2000以降じゃないとアレ
228:デフォルトの名無しさん
08/11/18 02:53:53
VistaにTurbo C++ Explorerをインストールしましたが、起動時に以下のエラーが表示されて起動できません。
どのようにすれば良いのでしょうか。
モジュール '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 は動作を停止しました
問題が発生したため、プログラムが正しく動作しなくなりました。このプログラムを閉じてください。
229:デフォルトの名無しさん
08/11/18 14:04:08
Resolving the EPackageRegistrationException error in BDS 2006 on Windows Vista
URLリンク(support.codegear.com)
230:デフォルトの名無しさん
08/11/18 22:52:25
レスありがとうございます。
教えて頂いたリンク先にあった内容や、
URLリンク(support.codegear.com)にあった内容を試したのですが、全く状況に変化が見られませんでした…
どうも無理そうなので、とりあえずVista正式対応を待つことにします。
231:デフォルトの名無しさん
08/11/18 23:08:46
素直に2007か2009を買うしかないね。Turbo Explorer?正式対応?残念ながら無理でしょ…。
232:デフォルトの名無しさん
08/11/25 13:49:41
TBitmapからTIconのハンドルを取得する方法を教えてください
233:何をしたいのかを具体的に書けば有効な回答が得られるのでは?
08/11/25 22:38:53
できますん。
234:デフォルトの名無しさん
08/12/03 11:42:25
ShowHint=trueにするとコントロールにカーソルがくると自動でヒントが表示されますが
指定コントロールのヒントを手動で表示される方法を教えてください
235:デフォルトの名無しさん
08/12/03 22:57:47
そのコントロールにCM_HINTSHOWをPerformすればいいみたいだけど、パラメータが問題かな?
236:デフォルトの名無しさん
08/12/04 10:40:48
>>235
なるほど。
まずはちょっと試してみますありがとう
237:デフォルトの名無しさん
08/12/04 22:47:38
Turbo C++ ExploerのdbExpressって、リモートでFirebird2.x接続は無理?
ローカルはOK、リモートでもコネクションは繋がってテーブル名は見える。
が、テーブルを開こうとするとエラー65535がでて繋がらない。
238:デフォルトの名無しさん
08/12/08 17:23:25
メモ1に
0
0
0
0
1
1
0
0
1
1
・
・
・
1
1
0
0
0
とこのような感じで0と1が何千行と出されているのですがメモの上から順番にforで回して
1が出た場合その行数とそこから1がどれだけ続いたかカウントしていくプログラムを作成したいのですが
どういったようにつくっていけばよいのでしょうか?
239:デフォルトの名無しさん
08/12/08 17:26:46
普通に作れば良いと思うのだが、
先ず何が問題?
・C++文法
・ファイル操作
・ロジックの書き方
240:デフォルトの名無しさん
08/12/08 17:34:38
>>238
それってMemoでなくても配列の中に1がいくつ続いているかを
数えるのと同じ問題だよね
241:デフォルトの名無しさん
08/12/08 18:05:48
>>239-240
お前等が馬鹿すぎてワロタ
知らないならレスするなよクズ共
>>238は普通にTMemoでどうやって書くかを聞いてんだろw
Memo->Lines->Count
Memo->Lines->Strings[i]
242:デフォルトの名無しさん
08/12/08 18:10:12
>>241
??
243:デフォルトの名無しさん
08/12/08 18:12:35
ここはクズのすくつでつねw
244:デフォルトの名無しさん
08/12/08 18:18:49
クズって言う奴はクズじゃないんだよ
245:デフォルトの名無しさん
08/12/08 22:00:28
>>238 は
何がわからないのかを書いていない。
基本的に質問の仕方を知らない。
きっと何がわからないのかさえわからないのだろう。
そんな人は、たぶん論理的に組み上げていく
プログラミングということはムリなのではないかと思う。
丸投げで全部教えてもらいたかったら
C/C++の宿題を片付けます 119代目
スレリンク(tech板)
こっちで聞くべき
246:デフォルトの名無しさん
08/12/09 10:29:15
>>245
答え方がわからないならレスしないで下さい。ウザイだけです。
247:デフォルトの名無しさん
08/12/09 11:07:58
>>246
おいばかやめろ
Win32APIスレから出てこないでください
248:デフォルトの名無しさん
08/12/09 15:57:06
ここにまで屑が侵食してきたか・・・
249:デフォルトの名無しさん
08/12/09 23:48:23
>>238
今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"の始まり)
・変わり目でプログラムで行う処理を切り替える。(カウント中と、結果表示&カウント終了)
とするのが一つの方法。
250:デフォルトの名無しさん
08/12/14 08:53:26
日本語プログラミングですねわかります
251:デフォルトの名無しさん
08/12/15 00:47:49
アカデミック版ってインストール時になんか問題ある?
252:デフォルトの名無しさん
08/12/15 00:51:00
インスコ時はないんじゃない?
ちゃんとした店なら買う時に学生証見せてなんか書かなきゃいけないと思うけど
253:デフォルトの名無しさん
08/12/15 14:15:38
昔の学割版には、作ったプログラムは有償無償関係なく公開禁止っていうキツいルールがあったけど
あれ今もあるのかな
254:デフォルトの名無しさん
08/12/15 17:20:08
Delphi.Personalityってなんですか?
dclusr.dpkを読み込もうとすると、これがないって
えらーになるんですが、
Delphiをインストールしないとダメですか?
255:デフォルトの名無しさん
08/12/15 17:22:20
どれ?
256:デフォルトの名無しさん
08/12/18 14:45:24
Panelとかコントロールの標準カーソルを指定カーソルファイル(*.cur)に変更する方法を教えてください
257:デフォルトの名無しさん
08/12/18 14:51:33
>>256
TScreen::Cursors
258:デフォルトの名無しさん
08/12/18 15:01:00
>>257
そこにLoadCursorでぶち込むんですよね?
それってリソースに予めないとダメですよね?
259:デフォルトの名無しさん
08/12/18 15:07:37
LoadCursorFromFileというAPIがあってですね‥‥
260:デフォルトの名無しさん
08/12/18 15:09:12
259補足。
ただし、現在はLoadCursorやLoadCursorFromFileは後方互換性のためのAPIで、LoadImageが推奨されてる。
261:デフォルトの名無しさん
08/12/18 15:10:58
>>259
そんなのがあったんですかあああああああああああああああ!!
ああ、おかげで思った通りのアレができますた!
ありがとうございます。
262:デフォルトの名無しさん
08/12/18 15:14:15
>>260
補足までありがとう。
LoadImageもぐぐってみます。
263:デフォルトの名無しさん
08/12/19 22:03:33
BCB6から2009への乗り換えがスゲー苦労する
何か良い方法ないですか?
264:デフォルトの名無しさん
08/12/19 23:51:11
VC++よりBCBを使うメリットってなんですか?
逆なら枚挙に暇が無いが・・・
265:デフォルトの名無しさん
08/12/20 00:08:04
>264
RADなところかな。
266:デフォルトの名無しさん
08/12/20 02:09:12
URLリンク(lupus.is.kochi-u.ac.jp)
ここにあるソースをコンパイルしようとしたのですが、
上手くいかないので助言お願いします。
コンパイルしたいのは下の3つです。
graph.h
planar.h
planarq.c
コンパイルの環境はBCC55でCPADからビルドしてます。
ソースに問題があるのか、
環境が悪いのかだけでも分かれば教えてください。
267:デフォルトの名無しさん
08/12/20 02:16:36
こっちへどうぞ
スレリンク(tech板)
でも何がどういう風にうまくいかないのかをきちんと書かないと誰も答えてくれないと思うが。
268:デフォルトの名無しさん
08/12/20 14:12:37
VC++MFCでちょっと凝ったUIを作成しようとすると
地獄のようにコードを記述する必要がある。
Builderなら部品をちょこちょこと置いて
コードをちょこっと記述すればエエ。
工数が1/10くらいになるわ。
269:デフォルトの名無しさん
08/12/22 17:23:26
>263
BCB6から2007なら簡単です。
2007で「BCB6のプロジェクトファイル(*.bpr)」を読み込んで
2007のプロジェクトファイル(*.cbproj)に書き出して、メイクするだけでOKである。
俺も2009のユニコード関係の処理で困っている。
270:デフォルトの名無しさん
08/12/23 17:02:36
どうして、2009で「ユニコードライブラリを使う」をVSのように、
プロジェクト・オプションにしなかったんだろう。
271:デフォルトの名無しさん
08/12/23 22:02:52
>>263
自分が苦労したのは、AnsiString::c_strをAnsiString::t_strにしたりとか、VCL関数に渡す文字列リテラルをワイド文字列にしたくらいかな。
この辺は、Rubyでスクリプトを書いて何とかした。
TRegIniFileやTIniFileがほとんどだったから、ReadStringとかが見つかったらワイド文字列に変換するって感じ。
>>270
多分、両方メンテしなければならないからかな。
プロジェクトオプションで分けて欲しかったのは同意。
272:デフォルトの名無しさん
08/12/25 13:55:44
PanelのCaptionに書いてる文字がパネルに収まってるかどうかを判断する方法を教えてください
273:デフォルトの名無しさん
08/12/25 16:12:29
>>272
Panelのサイズを調べて、Bevelとかの幅をそこから引いて、実際の表示領域のサイズを出す
PanelのFontでCaptionに設定してある文字列のサイズを調べる
両者を比べる
274:デフォルトの名無しさん
08/12/25 16:21:11
>>273
文字列のサイズはどうやって調べればいいんですか?
275:デフォルトの名無しさん
08/12/25 16:24:17
Win32APIで、指定文字を書いた場合のRectをとれたはずだが?
276:デフォルトの名無しさん
08/12/25 16:26:16
>>275
知らないならレスしないで下さい。ウザイだけです。
277:デフォルトの名無しさん
08/12/25 16:29:10
>>276
正解をレスしようと思ったけどやめたw
ヒント:Win32APIの文字列描画系APIをパラメータを含めて片っ端から調べろ。
278:デフォルトの名無しさん
08/12/25 16:39:08
>知らないならレスしないで下さい。ウザイだけです。
あれれ?
なんだただのでじゃヴか
279:デフォルトの名無しさん
08/12/25 17:12:10
>知らないならレスしないで下さい。ウザイだけです。
これって貼り付いてるアンチだとオモ。
質問書いたらこれ書かれたことある。
アンチは加齢にスルーw
280:273
08/12/25 17:28:32
>>274
TCanvasに、自分(TCanvas)に設定されているTFontを使って、指定した
文字列を描画する際のサイズを調べるメソッドがある(と思った)
>>279
というか、そのコピペはプログラミング系のスレとかでよく見る
アンチ以前の、単なる茶々入れも多いよ。カレーにするーには同意
281:デフォルトの名無しさん
08/12/25 17:33:32
>>280
あった。
TextExtentが領域、TextHeightが高さ、TextWidthが幅を返すね。
282:デフォルトの名無しさん
08/12/25 18:15:13
そういや、なんでVCLリファレンスってTRectとTPointがRECT、POINTの派生ってこと書かれてないんだろ。
Types.hppだと struct TRect : public RECT ってなってるし、派生って事知らないといろいろ面倒だと思うんだが‥‥
283:デフォルトの名無しさん
08/12/25 22:23:08
>>279
それはWinAPIスレで流行ってますよ
是非いらっしゃってください
お待ちしております
284:デフォルトの名無しさん
08/12/30 17:07:05
double A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15に値が入っており
一つのMemoに全てを書き出していきたいのですが
c言語と同じく
printf("%d,%d,%d,%d,%d\n",A1,A2,A3,A4,A5);
printf("%d,%d,%d,%d,%d\n",B1,B2,B3,B4,B5);
printf("%d,%d,%d,%d,%d\n",C1,C2,C3,C4,C5);
このような感じで書き出してCSV形式に3行5列の形に一つのmemoに書き出す方法はないでしょうか?
使用しているのはc++builder5です。
よろしくお願いします。
285:デフォルトの名無しさん
08/12/30 17:28:00
AnsiString().sprintf() って使えるはずだろ
286:デフォルトの名無しさん
08/12/30 18:13:30
わかりにくいかな
Memo1->Lines->Add(AnsiString().sprintf("%d,%d,%d,%d,%d\n",A1,A2,A3,A4,A5));
のように書ける
287:デフォルトの名無しさん
08/12/30 18:57:46
doubleなのに%d指定なのは構わないのかな。まあいいけど
でも”c言語と同じくmemoに書き出す”というのがイミフメ
あとC言語系のプログラマーなら、アルファベットの大文字小文字はしっかり使い分ける
癖は付けた方がいいとおも
288:デフォルトの名無しさん
08/12/30 18:58:56
あごめんそうだな
コピペしただけだから"\n"まで入ってしまってたし
"%f"な
289:デフォルトの名無しさん
08/12/30 19:09:39
>>285>>286ありがとうございます。
方法を変えてやってみたらうまくCSV形式に表示はされたのですが、
引き算の値がエクセルで計算した結果と明らかに違う数値になってMemo5に表示されます。(-1.59444444444503E-02とか)
Memo1,2,3,4には0.035083333などの少数の値が5行入っています。
AnsiString H1,H2,H3;
for(int I = 0; I < 5; I++){
H1 = Memo1->Lines->Strings[I] - Memo4->Lines->Strings[I];
H2 = Memo2->Lines->Strings[I] - Memo4->Lines->Strings[I];
H3 = Memo3->Lines->Strings[I] - Memo4->Lines->Strings[I];
Memo5->Lines->Add(AnsiString().sprintf("%s,%s,%s",H1,H2,H3));
}
どうすれば普通の数値になるかアドバイスお願いします。
290:289
08/12/30 21:22:12
解決しました。
291:デフォルトの名無しさん
08/12/31 00:52:22
馬鹿だろ
292:デフォルトの名無しさん
09/01/08 17:26:06
2007って64ビットXPに対応してる?
293:デフォルトの名無しさん
09/01/10 14:33:32
いまだにBCB6なんですが2009買うメリットありますか
既存コンポーネントも強化と書かれてますがどんなもんでしょう
2007くらいまでは案内の手紙も来てたのになー
294:デフォルトの名無しさん
09/01/10 15:50:46
VC++2008expressでいい
295:デフォルトの名無しさん
09/01/10 21:08:24
BCBスレでVCを薦めるとな
296:デフォルトの名無しさん
09/01/10 21:40:55
struct T {
typedef void (T::*fn_t)();
void f();
int test(fn_t fn) {
do { } while (0); // inline不可にしないと再現しない
if (fn == &T::f) {
return 1;
}
return 0;
}
};
BCB6だと(bcc5.6.4)このコードで落ちるんだが
新しいのだと大丈夫なのかな。
(ifの行を
const fn_t cmp = &T::f;
if (fn == cmp) {
に変えれば落ちない)
まあメンバ関数へのポインタを変数と直接比較なんて普通やらんが。
他にも落ちる時があるんだが
こっちはどういう状態で再現するのかわからないし
そもそもコンパイルエラー時だけなのでなんとかなるんだけど。
297:デフォルトの名無しさん
09/01/11 00:30:35
>>296
BCC6.1.0だと落ちないね
298:デフォルトの名無しさん
09/01/14 20:15:40
CodeGear RAD Studio 2007 を使っております。
VC2005 で作られたコンソールアプリをコンパイルしようとしたのですが、
wcha_t と _stprintf_s を使っているところが通りません。どうすればよいでしょうか?
299:デフォルトの名無しさん
09/01/14 20:57:44
wchar_t だろ。
_stprintf_sはしらないけど、C言語標準の関数で置き換えれば?
たとえばだ。
#define _stprintf_s(・・・) sprintf(・・・)
など。
300:デフォルトの名無しさん
09/01/14 21:54:40
可変個引数をそれで置き換えるのはきつくないか。
こんな感じじゃないと。
#ifdef _UNICODE
typedef wchar_t TCHAR;
#define _vstprintf vswprintf
#else
typedef char TCHAR;
#define _vstprintf vsprintf
#endif
int _stprintf_s(const TCHAR* buf, size_t /* ignore */, const TCHAR* format, ...) {
va_list args;
va_start(args, format);
int ret = _vstprintf(buf, format, args);
va_end(args);
return ret;
}
301:298
09/01/14 22:42:27
>>299 さん、>>300 さん、お答えありがとうございます。
ここでVCの話をするとおかしくなるとは思いますが、
VCでしたら _stprintf と書いておき
プロジェクトオプションで...
マルチバイトキャラセット(MBCS)を選べば、
_stprintf は sprintf に置き換えられ、
ユニコードキャラセット(UNICODE)を選べば
_stprintf_s は swprintf に置き換えられるのですが、
CodeGear RAD Studio 2007 (C++Builder) には、
こういうマクロ定義はされていないのでしょうか。
こういった作業はすべてユーザーにゆだねられているのでしょうか?
302:デフォルトの名無しさん
09/01/15 11:39:30
>>301
tchar.hインクルードしてる?
303:デフォルトの名無しさん
09/01/15 16:50:00
DirectShowを使うのにstrmiids.libが必要なんですが
プラットフォームSDK付属のだとリンクエラーになります。
B++Builder用はどこにありますか?
304:デフォルトの名無しさん
09/01/15 16:53:26
>>303
URLリンク(www.clootie.ru)
これとかは?
使ったこと無いからわからないけど
305:デフォルトの名無しさん
09/01/15 16:55:47
>>304
ありがとうございます。
このサイトにしっかりとありました(;´Д`)
URLリンク(www.clootie.ru)
306:デフォルトの名無しさん
09/01/20 20:53:45
C++ Builder 6 Update
C++Builder 6 Enterprise
fURLリンク(ftpd.codegear.com)
C++Builder 6 Professional
fURLリンク(ftpd.codegear.com)
C++Builder 6 Personal
fURLリンク(ftpd.codegear.com)
Readme
fURLリンク(ftpd.codegear.com)
307:デフォルトの名無しさん
09/01/22 15:31:26
DIBをTBitmapに変換する方法を教えてくださいい
308:デフォルトの名無しさん
09/01/22 17:40:38
>>307
そのDIBが
もし単なる配列なら
・TBitmap::ScanLineでアドレスを取得して、自分で一行ずつDIB→TBitmapへコピー
・StretchDIBits()を使ってDIB→TBitmapへ転送
もしDIBSectionみたいにHDCが利用できるなら
・BitBlt()やStretchBlt()でDIB→TBitmapへ転送
パレット付き画像だとちょっと手間が増える。
309:デフォルトの名無しさん
09/02/03 19:52:26
TImageListのn番目の画像をTImageに表示する方法を教えてください
310:デフォルトの名無しさん
09/02/06 15:52:23
C++Builder2007って64bitのXPに対応してる?
普通に動作はするんだけど64bitアプリ作れますか?
311:デフォルトの名無しさん
09/02/06 18:40:07
_
312:デフォルトの名無しさん
09/02/07 10:32:46
C++Builder2010をお待ちください> 64bit
313:デフォルトの名無しさん
09/02/07 22:14:31
待っている間に Qt Creator で御機嫌 64bit 開発できるようになってたりして
314:デフォルトの名無しさん
09/02/09 11:10:38
a
315:デフォルトの名無しさん
09/02/10 12:55:23
ListViewの行入れ替えをしたくて以下の関数を作ったんですが
BCB5ではうまく行ってるのですがBCB1でやるとコンパイルエラーがでます
void ListViewExchange( TListItems *tListItems, const int iIndex1, const int iIndex2 )
{
TListItem *listitem = new TListItem( tListItems );
listitem->Assign( (TListItem *)tListItems->Item[iIndex1] );
tListItems->Item[iIndex1] = tListItems->Item[iIndex2];
tListItems->Item[iIndex2] = listitem;
delete listitem;
}
エラー内容はAssignにアクセスできないって事なんですが
BCB1で行入れ替えする時にいい方法があったら教えてください。
316:デフォルトの名無しさん
09/02/10 12:58:20
ヒント: TListViewの実態はWindozの標準コントロールで昔は無かった
317:デフォルトの名無しさん
09/02/10 13:05:30
そんなヒントいらねえよカス
知らないならレスするなクズ
318:デフォルトの名無しさん
09/02/10 20:04:02
マルチスレッドに対応した高速なJPEGデコーダのライブラリはありませんか?
319:デフォルトの名無しさん
09/02/11 00:39:57
いま、C++Builder5 から C++Builder2009 に移行中なんだけど、
どうしてもわからないところがある。
1.XP Style の見た目
プロジェクトを新規で立ち上げると、XP のスタイルになるんだけど、
古いプロジェクトを読み込むとどうしても出来ない。
TXPMan あたりなのかなぁ、と思うんだけど、良くわからん。
2.リンク時に VCLJPG.BPI がないというエラーがでる
普通にコンパイルするだけでこれが見つからないというエラーがでる。
検索をかけるとどうやら無くなったらしいけど、特に Jpeg を使っていない
ようなプロジェクトでも発生する。
3.コンポーネントのインストール
以前作ったコンポーネントをインストールするやりかたがイマイチわからない。
3.はがんばれば解決出来そうだけど、1と2、特に2はちょっと解決できそうにない。
解決方法をご存じの方がいたら、ぜひ教えてください。
320:デフォルトの名無しさん
09/02/11 01:46:24
1は解決しました。
プロジェクトオプション
↓
アプリケーション
↓
ランタイムテーマを有効にする
ですね。
厨な感じでスマン・・・。
321:デフォルトの名無しさん
09/02/11 21:41:33
319だけど、3.も一応解決した。コンポーネントはもう一回作り直す必要があるみたい。
コンポーネント自体はコードのみで動くからそんなに大変ではないけれど、面倒と言えば面倒。
イベントの引数などが変わってるから、殆どの場合、書き直す必要があるから仕方がないのかもしれない。
ただし、注意点があって、コンポーネントのインストール、削除、を繰り返してると、
レジストリにゴミが残る。これが残ってると、一般保護違反が起きてコンポーネントのインストールが出来なくなる。
その場合には、レジストリエディタでコンポーネントの名前で検索、その項目を削除してやる必要がある。
2はまだ試してないけど、プロジェクトでリンクしているライブラリをチェックし直してみようと思ってる。
こんどは、
[BCC32 エラー] systvar.h(198): E2316 'data' は 'WideString' のメンバではない
[BCC32 エラー] systvar.h(327): E2316 'data' は 'WideString' のメンバではない
というエラーが出るようになった。文字列周りはかなり変わってるから、バグが潜んでるのかも知れない。
322:デフォルトの名無しさん
09/02/17 15:01:24
プログラム初心者です。
C++Builder2006でAPIを使ったアプリケーションを作っています。
信号入力待ちになるAPI関数を使うと信号入力があるまでアプリケーションが固まってしまい
終了のXも受け付けない状態になります。(信号入力があると動き出します)
固まらないようにプログラムを作るにはどうすれば良いのでしょう?
お願いします。
323:デフォルトの名無しさん
09/02/17 15:05:50
信号入力待ちとは何ぞや?
324:デフォルトの名無しさん
09/02/17 15:06:25
WaitForSingleなんちゃらとか?
それかスレッド
325:デフォルトの名無しさん
09/02/17 15:07:39
ヒント: 正しいアイドルループ(Application->ProcessMessages()) もしくは 別スレッド
326:デフォルトの名無しさん
09/02/17 15:40:12
>>325
いや関数から抜けてないんだろ。
それなのにProcessMessagesとか馬鹿ならレスするなよクズ
327:322
09/02/17 15:50:38
API関数はwinsockのaccept()です。
別スレッドでやってみます。
スレッドは使ったことがないので何かあったらまたお願いします。m(__)m
328:デフォルトの名無しさん
09/02/17 17:08:41
これじゃね?
>winsock2でaccept()を中断する
>URLリンク(memolet.blog22.fc2.com)
329:デフォルトの名無しさん
09/02/18 11:22:07
>>Delスレ954
if (typeid(E) == typeid(EInOutError)) {
}
330:デフォルトの名無しさん
09/02/18 11:27:46
ちなみに、この比較はDelphi形式のクラスでのみ有効。
(typeid自体はC++標準だけど、本来はキャスト元の型は取れない。C++BuilderのDelphiクラスサポート用の拡張機能に依存)
331:デフォルトの名無しさん
09/02/19 06:45:13
InheritsFromでいいんでない?
332:デフォルトの名無しさん
09/02/27 02:27:10
C++Builder6のTServerSocketを使ったことある方教えてください。
フォームに張り付けた一つのTServerSocketを非同期設定で
特定ポートにてオープンし、最大100クライアント接続される
ハブ的なアプリケーションを作っています。
OnConnect毎にユニークなCustomWinSocketが落ちてきて、
それをTThreadのインスタンスへ渡し、受信はスレッドへのイベント通知、
送信はスレッドの任意タイミングという設計です。
ソケットとスレッドが1:1になるイメージで、1伝文最大100バイト、
高負荷時には600伝文/s程のやりとりなのですが、
マルチコア環境で動作させると高負荷時の受信ラッシュで
コンポーネントがお亡くなりになる現象が発生してしまいます。
各コネクションが同時に送信すると、75/100のソケットが受信イベントを受け取りますが、
以降待てど暮らせどイベントが発生しない(OnErrorでさえ!)という状況です。
WireSharkで見ると全てのコネクションでデータのやり取りが完遂し、
サーバも受信数分ACKをキチンと返しているのですが、
何故か上に上がってこない…
シングルコア上では今のところ起きていないので、
マルチコア特有の問題なのかな、と勘繰っております。
でもI/O周りは排他処理されていないわけないとも思えますし・・・
コンポーネントのマルチコア対応状況の情報があれば教えていただけませんでしょうか。
よろしくお願いします。
333:デフォルトの名無しさん
09/03/01 10:03:57
>>332
TCriticalSectionが必要なんじゃない?
334:デフォルトの名無しさん
09/03/02 09:14:14
>TCriticalSection
Crytical Section ってVCLラップされてたんだ。知らなかった。
まさかMutexはラップされてないおね?
335:デフォルトの名無しさん
09/03/02 12:39:04
C++Builder2009でFindFirstの再帰処理でファイル一覧を取りたいんですけど
Debug::Heap Block at xxxx とか Invalid address xxxが出る。
何故だろう?(BCB5では問題なし)
誰か助けて....
336:デフォルトの名無しさん
09/03/02 12:41:38
アプリのヒープサイズかスタックサイズが小さく設定されてるとか?
337:デフォルトの名無しさん
09/03/02 13:27:45
設定はBCB5もBCB2009も同じなんです。
338:デフォルトの名無しさん
09/03/02 13:44:09
同じにしたらVCLが肥大化した分、メモリ的に2009が不利じゃね?
339:デフォルトの名無しさん
09/03/02 14:01:48
ヒープサイズやスタックサイズを大きく設定するという意味ですか?
340:デフォルトの名無しさん
09/03/02 14:13:44
下にサブディレクトリのない末端のディレクトリ基点にFindFirstしてもエラー出る?
出ないならただのスタックオーバーフローじゃないかと。
341:デフォルトの名無しさん
09/03/02 14:41:59
FindFirstの再帰処理で階層が深くなった時に出る次第です。
やはりスタックオーバーフローでしょうか
342:デフォルトの名無しさん
09/03/02 14:47:37
再帰つかうなよ
343:デフォルトの名無しさん
09/03/02 14:54:26
他にいい方法あんの?
344:デフォルトの名無しさん
09/03/02 15:01:11
>再帰つかうなよ
どのように処理するとよいのでしょうか?
345:デフォルトの名無しさん
09/03/02 15:16:07
>>342はいつもの煽るだけの無知なクズとみた
346:デフォルトの名無しさん
09/03/02 15:23:35
フォルダ名をキューに入れて、findnext出来なくなったら
先頭を呼び出して奨める
347:デフォルトの名無しさん
09/03/02 15:28:46
>>346
335じゃないけど意味がわからないからもうちょい詳しく教えて
348:デフォルトの名無しさん
09/03/02 15:36:21
たとえばc:\aの仕方。
フォルダa1,a2,a3を見つけたら、
que[0][0]="a1"; que[0][1]="a2"; que[0][2]="a3";
と登録。
queの初めを呼び出して連結する。 c:\a\a1をサーチ。
フォルダb1,b2をque[1][0]="b1"; que[1][1]="b2"; と登録。
各階層ごとqueが無くなったら上へもどる。
349:デフォルトの名無しさん
09/03/02 15:42:37
御迷惑をお掛けしています、環境に問題があるのかもしれません。
BCB2009はVirtualPC上で動作させており、FindFirstしている場所は
VirtualPC上のネットワークドライブです。
この時にDebug::Heap Block at xxxx とか Invalid address xxxが出ています。
ローカルのC:\\とかを指してやると正常に動作しています。
350:デフォルトの名無しさん
09/03/02 15:52:29
仮想PCの性能不足だろ
再帰使うなよ
351:デフォルトの名無しさん
09/03/02 15:54:13
vipが今日でなくなる?vipperどもが運営に宣戦布告!!!!!
スレリンク(news4vip板)
352:デフォルトの名無しさん
09/03/02 15:55:32
>>仮想PCの性能不足だろ
無知でした、皆様ありがとうございます。
353:デフォルトの名無しさん
09/03/02 15:58:27
>>348
335じゃないけど、ディレクトリをどんどんケツにくっつけてサーチしろってことかな?
俺もよく再帰使うからちょっと気になって横うんこしてしまったぜ
354:デフォルトの名無しさん
09/03/02 16:00:54
全ての再帰は、ループ処理で書き換えられる。 再帰定理とかいうのがある。
355:デフォルトの名無しさん
09/03/02 16:05:31
>>354
だからなんだよクズ
356:デフォルトの名無しさん
09/03/02 16:07:38
再帰定理というのがあって、再帰とループは機能的に違いがないことが証明されているそうです。
つまり、原理的には再帰で書けるコードはループで書けるんだそうです。
Scheme(LISP系の関数型プログラミング言語)だと、繰り返しはループじゃなくて再帰を使うんだそうです。
357:デフォルトの名無しさん
09/03/02 16:16:59
>>356
んじゃ>>350はなんなの?
358:デフォルトの名無しさん
09/03/02 16:21:38
違いはないから、メモリ管理をコンパイラに任せず自分でやれって事だ
再帰使うとスタックオバーフロが起こりうる
359:デフォルトの名無しさん
09/03/02 16:25:48
スタック領域はコンパイル時に決定されてしまうだろ。
だから予定外のメモリ確保が出てくる再帰使うと停止する。
動的確保なら、OSがスワップとかしてなんとかできる。
360:デフォルトの名無しさん
09/03/02 22:02:32
つかどんだけ深い階層になってるんだ?リパースポイント(FILE_ATTRIBUTE_REPARSE_POINT)とか設定されてね?
361:デフォルトの名無しさん
09/03/02 22:46:44
>356
スタックの類使わなくても書けるの?
362:デフォルトの名無しさん
09/03/03 05:37:46
まだ初心者なのですが、batファイルをC++builder6で
ボタンを押したら実行するようにしたいので
ShellExecute(Handle,"open",ファイル名.c_str,NULL,NULL,SW_SHOW);
と書いたのですが、うまくいきません・・・どなたか教えてくださいOTL
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5031日前に更新/113 KB
担当:undef