C++Builder相談室 Part19

1デフォルトの名無しさん
C++Builderに関する質問・回答や議論等を行う相談室スレッド。
※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/
2デフォルトの名無しさん: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
3デフォルトの名無しさん:2008/08/01(金) 16:32:38
<Tipsなど>
Borland 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/
4デフォルトの名無しさん: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/
5デフォルトの名無しさん:2008/08/01(金) 16:35:23
<参考図書>
C++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の解説書も役に立ちます。
6デフォルトの名無しさん:2008/08/01(金) 16:36:02
<過去スレ (html化済)>
C++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
7デフォルトの名無しさん:2008/08/04(月) 11:18:22
NET FrameworkのControlってどやったら使えるんですかね?
コンパイルエラーになっちゃうんだけど
8デフォルトの名無しさん:2008/08/05(火) 00:51:26
よくわからんけど、C++Builderは.NETアプリを作るためのものじゃないが。C#かVB.NETじゃない?
9デフォルトの名無しさん:2008/08/05(火) 10:09:40
いえ、CBuilder2007なんですが
ヘルプにはしっかりと出てるんですよねこれ。
10デフォルトの名無しさん:2008/08/05(火) 11:06:57
5や6使いが多いからなぁ
11デフォルトの名無しさん:2008/08/05(火) 21:50:07
いやいや、C++Builderでは.NETアプリケーション作れませんてば。
12デフォルトの名無しさん:2008/08/06(水) 10:22:27
>>11
m9(^Д^)プギャーーーッ
13デフォルトの名無しさん:2008/08/06(水) 15:00:01
Builder5でStrCmpLogicalWを使う方法を教えて><
14デフォルトの名無しさん:2008/08/07(木) 11:52:01
ListViewのカラムヘッダーの色を変える方法を教えてくれ
15デフォルトの名無しさん:2008/08/09(土) 23:12:14
>>13
shlwapi.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に追加

これでいけた。
16デフォルトの名無しさん:2008/08/12(火) 16:45:58
さっさと教えろクズ
17デフォルトの名無しさん:2008/08/12(火) 19:51:03
わ、ゴキブリがしゃべった
18デフォルトの名無しさん:2008/08/13(水) 14:00:38
東京のゴキブリは喋るんだよ。
田舎者は知らなかっただろうけど。
19デフォルトの名無しさん:2008/08/13(水) 22:52:49
環境: C++Builder5, Win2k
実行ファイル(C:\test.exe)のショートカットを作り、
そのショートカットを適当な所(C:\tekito\test.exeへのショートカット)に移動し、
ショートカットをダブルクリックして実行したとします。
その時、'C:\tekito\test.exeへのショートカット'文字列を得たいのですが、どうすればいいでしょうか。
20デフォルトの名無しさん:2008/08/13(水) 23:11:16
無理じゃね?
21デフォルトの名無しさん:2008/08/14(木) 08:52:11
>>19
意味が良くわからん。

実行ファイルのショートカットを作って、
その実行ファイルを別のところに移動するの?
移動するのはショートカットの方?

ショートカットを移動してそのショートカットをダブルクリックして実行したときに、
その呼び出し元のショートカットのパスを知りたいって事か?


22デフォルトの名無しさん:2008/08/14(木) 11:32:11
初歩的なことですが・・・

ヘッダーに
typedef struct{
  String ss;
  int aa;
} GG;
があって
ヘッダのprivateに実体をとったときに
GG g[2];

cppで↓みたいな感じで代入ってできないですかね?
g[0]=GG{ "abc", 0 };
23デフォルトの名無しさん:2008/08/14(木) 11:35:07
struct GG{
  GG(String a, int b) : ss(a), aa(b) {}
  String ss;
  int aa;
};

g[0] = GG("abc", 0);
24デフォルトの名無しさん:2008/08/14(木) 11:36:00
あとコピーコンストラクタと代入演算子のオーバーロードもしておくといいお
25デフォルトの名無しさん:2008/08/14(木) 11:51:23
>>23
GG(String a, int b) : ss(a), aa(b) {}の行でエラーが出ました><
26デフォルトの名無しさん:2008/08/14(木) 12:01:19
あ、違った。

struct GG{
  GG(String a, int b) : ss(a), aa(b) {}
  String ss;
  int aa;
};
GG g[2];  ←ここでエラー
g[0] = GG("abc", 0);
27デフォルトの名無しさん:2008/08/14(木) 12:07:18
あ、デフォルトコンストラクタ入れたら通りましたありがとうございます。
28デフォルトの名無しさん:2008/08/14(木) 13:59:53
String ss;

char ss[24];
ってしたときのコンストラクタの記述を教えてください><
29デフォルトの名無しさん:2008/08/14(木) 14:48:59
コンストラクタ内でstrcpyでもしとけ
30デフォルトの名無しさん:2008/08/14(木) 14:49:34
わかりました><
31デフォルトの名無しさん:2008/08/14(木) 21:09:44
>>19です。
>>20,21 返信ありがとうございます。
> ショートカットを移動してそのショートカットをダブルクリックして実行したときに、
> その呼び出し元のショートカットのパスを知りたいって事か?
そうです。
32デフォルトの名無しさん:2008/08/14(木) 21:14:56
>>31
それを知ってなにをしたいのか書けば代案とか出せるんだが。
コマンドラインスイッチやカレントディレクトリで代用とかはできんの?
33デフォルトの名無しさん:2008/08/16(土) 14:06:49
>>32
返信ありがとうございます。
参考にさせて頂き、コマンドラインパラメータで代用しました。
作ったソフト(RandExec.exe)は以下のような物です。

例えば、「RandExec.exe C:\Data\!*.wav」として実行すると、
「C:\Data\」ディレクトリにある、拡張子「wav」のファイルのうち、
先頭に「!」が付いている名前のファイルをランダムで1つ実行します。

FindFirst()のお陰でワイルドカード文字が使えるのですが、
残念ながら、「RandExec.exe C:\*\start.wav」のように、
パスの途中にはワイルドカード文字を使えないようです。
これを実現したいのですが、どういう手段が考えられるでしょうか。
適したコンポーネントはご存じないでしょうか。
34デフォルトの名無しさん:2008/08/16(土) 14:28:08
>>33
普通に実装したら?

まず、ワイルドカード (* ?) を探して、その手前の \ を探す、
ワイルドカードの次の \ を探す、\ で挟まれてればそれはフォルダのワイルドカード、
最初の \ の手前までのフォルダで FindFirst して上のワイルドカードと一致するか検索、
ってやれば簡単にできそう。
35デフォルトの名無しさん:2008/08/16(土) 16:22:51
入力が"C:\Data\sound*\snd*.wav"なら
strtokとかでC: Data sound snd* snd*.wavに分割
先頭から次の要素接続>FindFirst/FindNextで複数マッチした場合はその中からランダムに選択、でまた次の要素接続ってやってけば簡単だろ
36デフォルトの名無しさん:2008/08/20(水) 14:06:58
今度Vista対応を行わないといけなくなったのですが
マニフェスト記述例やデータ保存箇所のルールなどBCBやDelphiで
作成したプログラムに対しても参考になるような情報が書いてある
書籍って何か無いでしょうか?(CマガのMookは買いました)
37デフォルトの名無しさん:2008/08/21(木) 22:03:33
Delphi 2007 for Win32によるWindows Vista対応
ttp://dn.codegear.com/jp/article/34159
tp://bekins.borland.com/groups/jp/events/devcamp/04/devcamp04_g4.pdf
3836:2008/08/22(金) 15:17:18
>37
参考になりました
これを足がかりに少し進めてみます
39デフォルトの名無しさん:2008/08/22(金) 15:26:46
WinXP SP3だけど、

exeにマウス右クリックすると、
「マニフェスト ファイルを作成」
というポップアップメニューが出るお。
40デフォルトの名無しさん:2008/08/22(金) 17:10:39
>39
社内でSP3を入れたXPを探してきて見てみたけど・・・・出なかった。
何が要因でそれが表示されるようになるんだろう。
4139:2008/08/22(金) 17:17:31
え”、そうなの?

自分も知りたい。
42デフォルトの名無しさん:2008/08/25(月) 12:51:45
>39
VisualStudio入ってない?
4339:2008/08/25(月) 12:56:35
V$6なので、関係無いと思いますが。
44デフォルトの名無しさん:2008/08/26(火) 19:37:23
ところでCodeGearの次スレってたたないの?
せっかく2009が発売されるのに・・・
45デフォルトの名無しさん:2008/08/26(火) 19:53:04
【Embarcadero】CodeGearオッチャ その11
http://pc11.2ch.net/test/read.cgi/tech/1219157228/
46デフォルトの名無しさん:2008/08/27(水) 10:04:48
thx
値段たっかいなー
ご祝儀にしてもこれはちょっと辛いわ
47デフォルトの名無しさん:2008/08/27(水) 12:31:05
BCB5+vistaを使っています。

CodeGuardを使いたいのですが、大量にログが出てしまいました。
見てみるとどうもライブラリ内のAnsiString::cat_printfらしく、とりあえず
ライブラリ内と標準ライブラリのチェックだけはずしたいのですが
方法はないでしょうか?
※include の前に #pragma option -vG- を入れても引っかかって
 しまいました。
48デフォルトの名無しさん:2008/08/27(水) 17:15:53
BCB6で、
>メモリストリームの拡大中にメモリが足りなくなりました
エラーが出た場合、
どういう対処がありますでしょうか?
49デフォルトの名無しさん:2008/08/27(水) 22:29:08
>>48
その不具合に直接の関係があるかどうかは判らないけど、BCB6ではメモリ管理周りに不具合が残されたままなので
ひとまずfastmmをプロジェクトに追加してみたらどう?
5048:2008/08/28(木) 08:42:56
サンクス>>49
fastmmをプロジェクトに追加したら治りマスタ。

今のfastmmってDLLも不要になってるんですね。

自分がfastmmが嫌いなのは、プロジェクトに組み込まれたか組み込まれてないか、見た目で分からないんですよね。
判定する方法はないんでしょうか?
51デフォルトの名無しさん:2008/08/28(木) 17:21:40
Builder2007で質問ですが
Form1からForm2を表示させたら何故かForm2がfsStayOnTopみたいになって
Form2が常にトップで表示されるんですが何故ですか?
両方ともFormStyleはfsNormalです。
52デフォルトの名無しさん:2008/08/28(木) 17:23:02
Form1をParent設定したからじゃね?
53デフォルトの名無しさん:2008/08/28(木) 17:30:08
してないですししたらForm1にめりこみません?
54デフォルトの名無しさん:2008/08/28(木) 17:35:21
ShowModalで表示させてない?
55デフォルトの名無しさん:2008/08/28(木) 17:39:22
いえ、Showでいっといてます。

ちなみに、モーダルだと下フォーム(Form1)をクリってもアクティブにならないですが
>>51の現象はForm1はアクティブにはなるのですがForm2が常に前面にあるんですう
うーん、今までBuilder5でやってたのと同じなんですが、2007で仕様が変わったとか?
56デフォルトの名無しさん:2008/08/28(木) 21:25:39
57デフォルトの名無しさん:2008/08/29(金) 18:06:17
>>56
そそそそあqwせdrftgyふじこlそれだ!!
ありがとうありがとう><

しっかしこんなすぐわかるバグを放置ってなんなんだいったい
58デフォルトの名無しさん:2008/08/29(金) 18:09:34
あー!
ListViewのOwnerDataをtrueにしてあれすると
MultiSelectが使えないよおおおおおおおおおおおおおおおおおおおおー
複数選択するとSelCountが0になるうううううううううううう
たすけてー><
59デフォルトの名無しさん:2008/09/01(月) 09:56:29
te
60デフォルトの名無しさん:2008/09/01(月) 09:58:37
StringGridでカーソルを行選択にできますが
これをListViewみたいにマルチセレクトする方法を教えてくださいよ
61デフォルトの名無しさん:2008/09/01(月) 16:48:43
更に質問
StringGridのDrawCellで各セルを描画してんだけど
Invalidate呼んだら表示されてるとこ全部あれしちゃうんで
これ指定した行だけ更新するほうほうをさっさと教えてくださいよ
62デフォルトの名無しさん:2008/09/02(火) 19:15:50
ListViewで1行づつ背景の色を変える方法を教えてください><
63デフォルトの名無しさん:2008/09/09(火) 06:57:56
>>33です。
>>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);
    }
  }
}
64デフォルトの名無しさん:2008/09/09(火) 21:57:25
>62
OnCustomDrawItemイベントでSender.Canvas.Brush.Colorを変更するだけ。
65デフォルトの名無しさん:2008/09/11(木) 21:52:29
2009入れたんですけど、2007で通ったコンパイルが通らないです。
widestring は wchar_t* に変換できないってどうすればいいのでしょ?

WideString( fi.FullName );
66デフォルトの名無しさん:2008/09/18(木) 20:04:25
TToolBarの中のTToolButtonを真ん中に持ってきたいのですが、
方法無いのでしょうか?
6766:2008/09/18(木) 20:11:25
Indentプロパティに0以上の値を設定すればよかったです。。
半年も悩んだのに、書き込んだ瞬間わかるとは。。
68デフォルトの名無しさん:2008/09/19(金) 13:13:29
BCB5で突然CPUウィンドウが表示され続ける現象が出始めてしました

○問題
 統合環境からのデバック実行時にCPUウィンドウが表示され続ける
○解ったこと
 ListViewの項目幅を変更した時にCPUウィンドウが表示される
○その他情報
・Vista用のマニフェストを追加
・Listviewとは関係無い箇所の修正
・プログラムへのバージョン情報の埋め込み
この3点は元に戻してみましたが代わりありません
数日前のソースに戻すと問題無く動作します

DelphiMLで同様の現象が出た人が居たのですがその方はXP3を当てることで直ったそうですが
今の開発環境はすでにSP3が入っているのでこのような変化を付けることが出来ません
問題が発生しているListViewにはまったく手を入れていません

何か対策をご存じな方がおられましたらお願いいたします
69デフォルトの名無しさん:2008/09/19(金) 22:48:13
マニフェストが怪しくね?システム側にキャッシュされるという話を読んだことがあるし。
7068:2008/09/20(土) 08:52:23
マニフェストがキャッシュされる話は自分も聞いたことがあるのですが
外部マニフェストでは無く実行ファイルの中に入れているので影響は無いと思っていました
(実行ファイルのパスとタイムスタンプでキャッシュしてると理解してます)

困った・・・・
7168:2008/09/20(土) 15:14:16
解決しました
原因は指摘の通りマニフェスト
一時は外しても再現してたのですがすべてのプロジェクトの再構築で再現しなくなりました

マニフェストのほうですがMicrosoft.Windows.Common-Controlsを指定しているブロックの部分が
引っかかっていたみたいです(目的としてはAdmin権限必須の指定だけでよかった)
丁度Vista対応実例があったのでそのマニフェストを流用していたために疑うのが遅れました
72sage:2008/09/21(日) 07:40:54
 Turbo C++でフリーカーソル無効化アドインを使っていたのですが、
hotfixを当ててから効果がなくなってしまいました。
TC++をインストールしなおす以外に何かよい方法はないでしょうか?
73デフォルトの名無しさん:2008/09/21(日) 11:14:12
C++Builder2009が届いたんで、今までの環境を移行して今まで組んだプログラム
を修正して動かしたりしているんだが、ASCII文字だけがどうしてもうまくいかん......

元々、外国の特殊文字(Latin1/2)の文字入力の為に作ったソフトで、
ASCIIのウムラウトとかをキーボードから":u"とか入力して表示できる
ようにしてたんだが、C++Builder2009でコンパイルしてテストすると
"・"になっちゃうんだよね。

要は、ASCIIコードの特殊文字を表示させたいんだけれども、
どういう風にすればいいか分かる人いない?
やっぱり、Unicode対応しちゃったから今までのASCIIは完全にダメなんかな?
74デフォルトの名無しさん:2008/09/21(日) 11:28:07
要は今までANSI(ISO 8859系)で処理してたてことだよね?AnsiStringで処理しておいて
表示のみUnicodeStringにするとかそのくらいしか思い浮かばないな。
75デフォルトの名無しさん:2008/09/21(日) 12:04:00
>>74
そういう方法しかないかなぁ......
一応試しているんだけれど、TEncodeingでUnicode化もうまくいかないんだよね......
TBytesにAnsiStringを変換しないとUnicode化はできないみたいなんだけれども、
これもうまくいかない......
76デフォルトの名無しさん:2008/09/22(月) 07:05:05
>>75
もしよかったらバージョンいくつからの以降で、
どの程度ソースの変更が必要だったか教えて欲しい。
77デフォルトの名無しさん:2008/09/23(火) 09:38:40
>>76
えっと、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ファイルを追加してコンパイルするとリンクも通る。
78デフォルトの名無しさん:2008/09/23(火) 10:22:15
>>77
ありがとう。L マクロか。

私も5からの以降なんだけど、
フォームは作り直さないとやっぱりダメ?
>フォームのcpp ←dfm の間違いだったらいいんだけど・・・
79デフォルトの名無しさん:2008/09/23(火) 10:55:33
>>78
あっ、フォームを作り直す必要はないよ。
作り直す必要があるのはプロジェクトファイルね。
新規でVCLフォームアプリケーションを作成して、最初にあるuit1をプロジェクト
から削除後、C++Builder5で作ったdfmのあるCPPファイルをプロジェクト
にD&Dすると、dfmとcppとhファイルが勝手に追加されるから、
その後ならリンクも正常に通るよ。
80デフォルトの名無しさん:2008/09/23(火) 21:08:50
>>79
ありがとう!
決心しました。
明日アップグレード金振り込んできます。

デヴェロッパーズキャンプとか出たのに、
そういう肝心なことは聞きにくかった。
っていうか、Builder5 からの移行って時点で
聞きにくかった・・・。
81デフォルトの名無しさん:2008/09/23(火) 22:42:54
>>80
お役に立てたら何よりだよ。

とりあえず、C++Builder2007でも通らなかったものはある。
具体的にはTarCtrlsっていうVCL。
これは、dsinintf.hppっていうのを使っているが、これがC++Builder2007
の時点でファイル名が変わってたっぽい。
で、そのファイル名に変更してみたんだが、クラス名も変わってるみたいで
簡単には移植できなさそうで諦めたよ。

そういったものを使ってなければ、移植に関してはそんなに問題はないと思うよ。
82デフォルトの名無しさん:2008/09/24(水) 10:13:25
>>81
重ね重ね、ありがとう。

VCL でも整理されたクラスとかあるんだね。
TarCtrls は多分使ってないと思う。
あんまり VCL でも変わったのは使わないようにしてるから、
意外と移植の手間は少なそうな気がしてきた。

それより、Lマクロがめんどくさそう・・・。
83デフォルトの名無しさん:2008/09/24(水) 11:56:47
AnsiString、WideString、UnicodeStringでtypedefで置き換えできる位の互換性持たせてくれと思う・・
84デフォルトの名無しさん:2008/09/25(木) 14:07:34
2009トライアル版にBCB6のプロジェクトを読み込ませてビルドを試みてるけど,書き直しが結構大変。
>>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とごっちゃになったヘルプはなんとかならのか!
85デフォルトの名無しさん:2008/09/25(木) 15:24:28
>2009トライアル版にBCB6のプロジェクトを読み込ませてビルドを試みてるけど,

BCB6を使ってるとは同じ身だorz

誰か対応方法wiki化しる!
86デフォルトの名無しさん:2008/09/25(木) 16:06:32
>std::stringstream使わなきゃなんないし
#define _TCAPTION(str) std::string(str.c_str())
でいいじゃん
8784:2008/09/25(木) 16:10:03
>>86
いや,TCaption=std::stringじゃなくてTCaption=UnicodeStringだってことがわかったんでいいんだ。
紛らわしいこと書いてスマソ。
88デフォルトの名無しさん:2008/09/28(日) 13:42:03
うにこでStringはt_str()で_TCHARが返るよ
89デフォルトの名無しさん:2008/09/28(日) 13:44:10
9080:2008/09/29(月) 22:12:58
ビルダー2009コネーヨー> ヽ(´Д`)ノ

もう2日まって来なかったら、連絡してみよう・・・。
91デフォルトの名無しさん:2008/09/30(火) 12:53:19
StrToInt では16進数文字列が変換できないの?
自分で HexToInt なる関数をつくってしまったわい。
92デフォルトの名無しさん:2008/09/30(火) 13:19:32
>>91
変換する文字列の頭に 0x つければできるよ。
93デフォルトの名無しさん:2008/09/30(火) 16:15:04
>>91 m9(^Д^)
94デフォルトの名無しさん:2008/09/30(火) 16:24:31
こういうのは自作した方が良い。
9580:2008/09/30(火) 16:25:12
今日届いた。一応解決したからかきこんどきます。スレ汚し、スマヌ。
インストールする気が全く起きん・・・。
96デフォルトの名無しさん:2008/09/30(火) 19:00:11
>91
'$'+でももちろんおk
97貧乏学生:2008/09/30(火) 19:27:05
質問です。
ファイルをリストボックス上にスクロールダウンして
リストボックスにファイルのパスが表示されるプログラムが
出来なくて困っています。
ご存知の方いらっしゃいましたらご指導よろしくお願いします。
98デフォルトの名無しさん:2008/09/30(火) 19:37:26
>>97
どこの言葉だよ・・・。
99デフォルトの名無しさん:2008/09/30(火) 20:32:09
にh(ry
100デフォルトの名無しさん:2008/09/30(火) 20:36:32
リストボックスにD&Dでリストボックスにファイルパスを表示する
ということ?
101貧乏学生:2008/09/30(火) 20:38:00
>>100
そうです。お教えください。よろしくお願いします。
102デフォルトの名無しさん:2008/09/30(火) 20:39:30
貧乏な学生達はD&Dのことをスクロールダウンというのか・・・
103デフォルトの名無しさん:2008/09/30(火) 20:48:38
どこの国からの留学生だヨ。
104デフォルトの名無しさん:2008/09/30(火) 23:20:09
>>101
DragAcceptFiles を使う。
あとは DragQueryFile 辺りを調べてみて。
105デフォルトの名無しさん:2008/10/01(水) 03:17:36
コンポなかったっけ?まあ、APIでやったほうがパッケージ管理の必要ないから楽だけど。

>>102
D&Dっていったらダンジョンズ・アンド・ドラゴンズだろ
106デフォルトの名無しさん:2008/10/01(水) 08:27:09
アイコンにファイルをドラッグ&ドロップしたら
アプリが起動するって
どういう仕組みになってるんだろ?
107デフォルトの名無しさん:2008/10/01(水) 08:41:02
>>106
それをやるのが OS の GUI。
108デフォルトの名無しさん:2008/10/01(水) 09:47:12
>>106
コマンドラインパラメータにドラッグ&ドロップされたファイル名が入ってくるから,
_argv[]とかParamStr()で取れるよ...って,そういう話じゃないのかな?
109デフォルトの名無しさん:2008/10/01(水) 11:32:30
C++B 2009のトライアル版を使っています。
各コンポーネントのCaption表示をリソース管理でローカライズすることは
出来たのですが、動的に表示を変える場合に用意した文字列を、リソース管理
でのローカライズ方法が分かりません。どなたか御教授下さい。

ちなみに、Caption表示等のリソースファイル(dfm, rc)とは別に文字列を定義
するファイルを作らないといけないんですかね?
110デフォルトの名無しさん:2008/10/01(水) 12:09:25
EXEといっしょにリソース入れるなら分けた意味ないだろ。
入れ替えたいなら、普通DLLでリソース持つわな。
111デフォルトの名無しさん:2008/10/01(水) 13:38:11
DLLですか・・・。
C++Bのエディットで表示したソース上で日本語以外のワイド文字が
入力出来ないみたいなんで、入力が出来るトランスレーションエディ
タで一緒に編集できる方法があればと思ったのですが。
112デフォルトの名無しさん:2008/10/01(水) 14:05:49
簡単に編集したかったら
>>109 のように独自定義ファイル作って、実行時に読み込んで割り付けると楽だと思うが。

別にリソースでわざわざ持たせなくてもいいんだろ?
113106:2008/10/01(水) 15:21:24
>>108
そういうことダス。
ベリベリサンキュ。
114デフォルトの名無しさん:2008/10/01(水) 15:26:33
そうですね。
独自定義ファイルやDLLを作成するにしても外部ファイルが増
えてしまうので、出来れば増やしたくないってのがありますが
結局リソースファイル作る時点で増えるんで、独自定義ファイル
でまとめたほうが楽ですね。
115デフォルトの名無しさん:2008/10/01(水) 15:32:12
そうそう、独自定義ファイルをUTF-8で作っておいたら無問題。

それと編集しやすいファイル記述形式は、

>AAA=menu click

みたいな1行単位。

これだと、TStringListにロードさせたあとは、Valuesで取れるし、
テキトーにファイルにコメント書いても悪影響ないし、
それとか、いざ、Win以外の開発が発生してもロードクラスを簡単に作れる。
116115:2008/10/01(水) 15:35:45
さらに自分の場合、

>Form1="送信フォーム"
>Form1.Label1="送信設定"
>Form1.Button1="送信"

みたいにしといて、
TStringListを渡しておいたら、
勝手にフォームのコントロールを検索してのキャプション書き換える
クラス作ちゃったw

注意点は、メモ帳でファイル書き換えても自分の直した行しか変わらず問題ないが、
ワードパッドとかで書きかえるとファイル保存するときにUNICODE勝手にいじられちゃう。
117115:2008/10/01(水) 15:40:46
ついでにヒントを書いておくと、

・ファイルロードするTStringListクラスを保持したLangListクラス
・ロードしたものでコントロールのキャプション書き換えるクラス

は別々にしておいた方が良い。

なぜかというと、ロードしたクラスのみを使う場合があります。

例)
throw Exception(LangList.ValuesAnsi("MSG.CannotCreateFile") + SDestFile);

(LangListからUTF8でとるときは、LangList.ValuesUtf8("MSG.CannotCreateFile")とか書く)
118デフォルトの名無しさん:2008/10/01(水) 15:55:30
109です。

>>115
似たようなことをやっていたのですが、
自分の場合リストからロードする時にValue使わずに、
わざわざ文字列比較して引っかけてたんで、すごく
参考になります。

わざわざ、独自定義ファイルの作り方を教えて下さって
ありがとうございます!!
119デフォルトの名無しさん:2008/10/02(木) 00:03:06
このあいだのデベロッパーキャンプで高橋さんが.pasファイルにresourcestringを書いといて
リンクすればいい、ってのをやってた希ガス。標準的な手法があるなら独自にやるのは無駄では?
ttp://dn.codegear.com/jp/article/38706
これのB3かな?あとは
ttp://dybdahl.dk/dxgettext/
こゆのとか。
120デフォルトの名無しさん:2008/10/02(木) 00:26:23
なるほど。それはいいことを聞いた。
で、ヘルプの「アプリケーションのローカライズ」で検索したらなんか出てきたよ。
今勉強中。
121デフォルトの名無しさん:2008/10/02(木) 17:35:37
AnsiStringで文字列末に\0を二つ追加したいのですが、

AnsiString str;
str += "\0\0";

ではだめそうでした。char* に変換するのも面倒で、
なんかいい方法無いでしょうか。
122デフォルトの名無しさん:2008/10/02(木) 21:07:52
>>121
大丈夫なようだが。

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";
}
123デフォルトの名無しさん:2008/10/02(木) 21:47:12
悪い。AnsiStringでは"\0"のデータを直接演算できないみたいだね。
cat_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";
124121:2008/10/03(金) 15:45:35
>>122-123 おお、cat_printfなんてものがあるんですね、
ありがとうございました!
使うところはもちろんSHFileOperationなのでした。
125デフォルトの名無しさん:2008/10/07(火) 07:00:06
2009でPNG画像使おうとするとうまくいかない

新規プロジェクトのフォームに貼った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マシン)
まともに使えている人いる? おかしいのは俺のところだけか?
それとも、何か情報ある?
126デフォルトの名無しさん:2008/10/07(火) 14:57:15
>>125

リリースノートによると、画像処理のパッケージがVCLJPGからVCLIMGに代わったからその影響みたい。
ttps://forums.codegear.com/thread.jspa?messageID=17336䎸

その、VCLIMGパッケージがリンクできていないようだから、どこか適当なソースに、
#pragma link "vclimg.lib"か#pragma link "vclimg.bpi"を追加すれば出来た。
127125:2008/10/07(火) 22:40:45
>>126
さんきゅ 動いたよ!
今後の事考えると面倒なんで、Pnglang.hppに#pragma link "vclimg.lib"書き加えたw
128デフォルトの名無しさん:2008/10/09(木) 22:29:52
フォームにパネルを均等に配置してるのですが、
最大化した時に、フォームのサイズに合わせて配置したパネルも一緒に拡大する方法を教えてください
オブジェクトインスペクタの設定でできますか?
129デフォルトの名無しさん:2008/10/09(木) 23:41:18
>128
Anchors
130デフォルトの名無しさん:2008/10/10(金) 20:41:01
データダイアグラムの使い方がよくわかりません
誰か教えて
131デフォルトの名無しさん:2008/10/11(土) 01:36:14
>>129
アンカーでどうやって均等配置できるんですか??
LeftとRightをtrueですか?
そうしたらLeftの位置は変わらないからRightが伸びてパネルがかぶるし・・・
どうすればいいんでしょうか?
132デフォルトの名無しさん:2008/10/11(土) 12:25:15
>>131
どういう状態にしたいかがよく分からんが、新しくPanelを作ってBevelOuter
をbvNoneにし、その上に今のPanelを置いてAnchorsを変えればいいんじゃない?
133デフォルトの名無しさん:2008/10/11(土) 18:54:02
>>128
OnResizeイベントでダメなん?
134デフォルトの名無しさん:2008/10/11(土) 19:26:56
>>132
えとですね。
例えばフォームWidthが200として横に均等にパネルを4つ並べます。
こんな感じで↓(とりあえず横が分かれば縦もわかるので今は高さを考慮しない)
隙間(20)パネル(25)隙間(20)パネル(25)隙間(20)パネル(25)隙間(20)パネル(25)隙間(20)
これをフォームのWidthを倍の400にした時に
隙間(40)パネル(50)隙間(40)パネル(50)隙間(40)パネル(50)隙間(40)パネル(50)隙間(40)
こんな感じに間隔もパネル幅も倍になってほしいのですが。。。
これってプロパティだけでできますか?
>>133
自分で計算してパネルの位置と幅を調整しなさいよってことですか?
135デフォルトの名無しさん:2008/10/11(土) 20:00:23
普通こういう風にしないか?

void __fastcall TForm1::FormResize(TObject *Sender)
{
Panel1->Width = Form1->Width * 0.5;
Panel2->Left = Form1->Width * 0.5;
Panel2->Width = Form1->Width * 0.5;
}
136デフォルトの名無しさん:2008/10/12(日) 14:09:50
>>135
それが普通かどうかはわかりませんが
オブジェクトインスペクタで設計時にやる方法があるのかなって思ってききました
できないならやはりResizeで自分で計算するしかないですよね
137デフォルトの名無しさん:2008/10/12(日) 15:38:01
>136
OnResizeで全部自前計算でFA。
138132:2008/10/12(日) 21:32:48
>>134
ん~......
色々試してみたが、今の所できんかった。
こういうのって半分パズルだよなぁ......
できない事はないのかもしれんが、オレはちょっとできんかった。
139デフォルトの名無しさん:2008/10/12(日) 22:40:16
>>134
へたにフォームのプロパティでぐちゃぐちゃやるより、手で書いた方が良いと思う。
140デフォルトの名無しさん:2008/10/13(月) 12:33:23
>>137
やっぱそれでFAですかね。
>>138
何か出来そうな気はするんですよね。でもたぶんできないっぽいような
>>139
アンカーとかである程度はできるから簡単にできるのなっておもいまして

とりあえずResizeでFindComponentでパネル取ってやりまーす
エロい人達ありがとう
141デフォルトの名無しさん:2008/10/15(水) 00:24:22
>>140
>134の状態だと、例えば1ピクセルだけフォームを広げてみた場合、パネルと隙間の増分ピクセル数が
小数になっちゃう
Anchorとかのプロパティでは、フォームのリサイズのピクセル数がそのまま各コントロールに影響するの
で、根本的に無理があるね

142デフォルトの名無しさん:2008/10/17(金) 17:47:42
C++Builder6のIDEで質問があります。
ソース内の関数使用箇所から実装部へジャンプする操作(マウス・キーコンビネーションなど)
はないのでしょうか。
MyFunc();
をクリックか何かして
void MyFunc(void)
{
...
}
へジャンプするみたいな感じです。あちこちで調べたんですが、どうしてもわかりません。

143デフォルトの名無しさん:2008/10/17(金) 18:22:16
>>142
右クリック→定義の検索、ではだめなん?
144デフォルトの名無しさん:2008/10/17(金) 22:37:16
142です。
右クリック->定義の検索 だと宣言部(.hの方)にジャンプしますよね?
.cppの方を見たいのです。人の作ったソースを追っかける時にこの機能が無いと不便で仕方ないんです…
それとも何か条件で.hに行ったり.cppに行ったりするのかな?
VC++だと一度ビルドしてクラス情報を生成しないとダメ、みたいなのがあるけど、BCBにもあるんですかね?
一応このプロジェクトはビルドしてEXE作ってるけど…
145デフォルトの名無しさん:2008/10/17(金) 23:54:34
.hに飛ぶのは、.cppの方がすでにビルドされていてバイナリになって
不可視になってる事があるからじゃない?

例えば配布されているライブラリとかそうじゃん。
.cppはいつもCtrl+Fで検索してるけど。
146デフォルトの名無しさん:2008/10/20(月) 10:07:29
test
147デフォルトの名無しさん:2008/10/21(火) 16:15:58
2007でエディタにアウトラインっぽいのがありますがこれOFFにできますか?
148デフォルトの名無しさん:2008/10/21(火) 22:19:58
できない
149デフォルトの名無しさん:2008/10/23(木) 11:56:54
Memo1に60行の乱数を出したんですけど、この60行の配列の平均を取った数字を
Edit1に出したいのですがなかなかどうすればいいんでしょうか・・
どなたかアドバイスお願いします。
150デフォルトの名無しさん:2008/10/23(木) 13:19:28
ヒント
Lines->Strings
StrToInt
151デフォルトの名無しさん:2008/10/23(木) 13:20:52
>>149
//---------------------------------------------------------------------------
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);
}
152デフォルトの名無しさん:2008/10/23(木) 13:30:27
データはコントロールじゃなくてコード内で保持した方がよくね?

std::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());
}
153デフォルトの名無しさん:2008/10/23(木) 16:01:04
》150》151》152 ありがとうございました!おかげさまでなんとかつくり終えることができました
154デフォルトの名無しさん:2008/10/23(木) 16:03:10
そういう安価のつけかたもあんか
いや、あるんか
155デフォルトの名無しさん:2008/10/23(木) 16:14:07
>>153, >>154

さすがにコンパイルエラーになったけど, 150 >> 151 >> 152; ならコンパイル通ったw
156デフォルトの名無しさん:2008/10/23(木) 16:18:52
そう言えばC++Builderの<<、>>演算子のキモい使い方があったような
何に使うんだっけ?

確かビットを立てたり外したりするのに使った記憶が
157デフォルトの名無しさん:2008/10/23(木) 16:27:23
集合型のエミュレーションだね
Set型
158155:2008/10/23(木) 16:29:41
>>156
ヲイヲイ,<< と >> はCの時代からビットシフト演算子だよ。C++になってから >> cout とか別の使い方で
定義されるようになった。>>155だってビットシフトの意味があるからコンパイルが通るだと思う。
150数ビットもシフトしてどうすんの?...なんだけどw
159155:2008/10/23(木) 16:30:30
あぁ,スマソ。そっちの話か。
160デフォルトの名無しさん:2008/10/23(木) 16:34:11
>>157
ああ、それだ。滅多に使わないから忘れかけてた。
Delphiならスマートに書けるのだがC++Builderならムリヤリ感が。

>>158
まあそういう事だ。
161デフォルトの名無しさん:2008/10/23(木) 16:44:00
>>160
普段はオブジェクトインスペクタからいじっちゃうからね
コードでいじる場合はどうしてもヘルプ頼りに
162デフォルトの名無しさん:2008/10/23(木) 16:52:42
そういやオープン配列もだいぶ無茶してたよなあ
TVarRecとか
カッコを二重に書かなければならないのを時々忘れる
163デフォルトの名無しさん:2008/10/23(木) 16:54:48
オープン配列は大抵Formatに使うことが多いから、Format使わずにAnsiString::sprintf()でやってるな
164デフォルトの名無しさん:2008/10/29(水) 11:22:19
すみません教えてください。。。
C++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:xxx@xxx.xxx 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");
165デフォルトの名無しさん:2008/10/30(木) 16:49:46
ブタ共さっさと教えてください
166デフォルトの名無しさん:2008/10/30(木) 16:53:58
Indyでやるだろ、jk。
167デフォルトの名無しさん:2008/10/30(木) 16:58:20
最近の子はマニュアル読んでとりあえずできるかテストしてみようって事しないんだな
168デフォルトの名無しさん:2008/10/30(木) 17:02:53
Indyならフォームにペタっと貼るだけ。
169デフォルトの名無しさん:2008/10/30(木) 18:41:08
知らないならレスしないで下さいよ。ウザくてかなわん
170デフォルトの名無しさん:2008/10/30(木) 19:02:18
その程度ができないのになんでプログラムなんて書いてるの?バカなの?
171デフォルトの名無しさん:2008/10/31(金) 15:32:06
アイコン化されたフォームを元に戻す方法を教えてブタ共よ
172デフォルトの名無しさん:2008/10/31(金) 15:37:40
Application->Restoreでできたわ
ほんとお前らって何の役にも立たないブタだよな・・・
173デフォルトの名無しさん:2008/10/31(金) 16:27:08
役に立たないブタはageます
174デフォルトの名無しさん:2008/11/01(土) 00:31:47
自力でできたということは、自力でやらせようとした人間達の狙いは大成功したということで、
役に立たないどころかすべてが計算通りに進んだということですw
175デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/11/03(月) 20:44:28
AnsiString as;使ってなくね
いらないけどさ
180デフォルトの名無しさん:2008/11/03(月) 20:46:46
>>179
ごめんそうです
削ってくらはい
181デフォルトの名無しさん:2008/11/03(月) 20:56:09
>>177>>178
ありがとうございます!
csv形式のテキストはオープンダイアログから読み込みその中から抽出することはできるのでしょうか

また先ほどの文で
DelimiterとDelimitedTextはTStringListのメンバーではないと言われるのですが
何か宣言文などが必要なのでしょうか。

まだまだ初心者でして;いろいろご迷惑かけてすいません。
182デフォルトの名無しさん:2008/11/03(月) 21:17:26
>>181
>csv形式のテキストはオープンダイアログから読み込みその中から抽出することはできるのでしょうか

できます。
TOpenDialog->Filesに入ります。

>DelimiterとDelimitedTextはTStringListのメンバーではないと言われるのですが
>何か宣言文などが必要なのでしょうか。

えっもしかしてC++Builderのバージョンは5以前ですか?
183デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/11/04(火) 19:29:47
>>183
返事が遅れてすいません。ありがとうございました!大変感謝しています
こちらのやり方で動きました。c++builderはver5を使っています
あと桁数をコンマの数をかえるとのことなのですが、
桁数を変える場合は5桁表示するならpos 5 にすればよいことはいじっていてわかったのですが
コンマの位置を変える場合どの部分を変えていけばよいのでしょうか・・・
よろしければアドバイスお願いします><

実際の応用テキストではさらに数字が多く6番目数字(コンマ5つ目)が00:00:00(桁数は変化しない)以外の時に
11番目(コンマ10個目)の数字を表示するようにしたいのです。実際に表示したい数字も小数点を含む5.55(桁数は変化しない)などです。
185デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/11/04(火) 20:21:50
public:
__property AnsiString Cells [int rows] [int cols]= {read=GetCell, write=SetCell};

こんなメンバ持たせたCSVクラス作って使ってるなぁ
188デフォルトの名無しさん:2008/11/04(火) 20:29:44
>>187
BCBはDelphiとのインターフェースが割合簡単に取れるから、
Delphiで書かれたcsvパッケージでも入れたら楽でしょうね。
189デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/11/04(火) 20:33:23
>>189
今回のプログラムは00:00:00の桁数については決め打ちしていませんので
"00:00:00"を"00:00:00:00"に変更すればいいです。
191デフォルトの名無しさん:2008/11/04(火) 20:56:52
>>190
わざわざありがとうございます;;どうやら勘違いしていたようでした。
実際の00:00:00:00のテキストのほうではコンマごとにわかりやすいように半角スペースがついており
半角スペース5列数字、半角スペース1列数字、半角スペース1列数字、半角スペース3列数字・・・
などのように書かれており上記のプログラムで半角スペースも認識されるため正しい数字が出せていないようでした。
(半角スペースを全部埋めていった場合正しい数字がでました。)
半角スペースを含んだ上で数値を出したいのですがこういう場合どのようにすればいいのでしょうか。
192デフォルトの名無しさん:2008/11/04(火) 21:03:36
>>191
これ以上後出し条件はやめてください。
どこかのロダにそのテキストをうpしていただけませんか。
193デフォルトの名無しさん:2008/11/04(火) 21:06:59
つーかもうC++Builderの話題じゃなくなってるし
TStringsListのバージョンは古くて使えないしだから
C++相談室にでも書いてみたら?
194デフォルトの名無しさん:2008/11/04(火) 21:08:06
まぁ・・・ね
あなた専用のサポートスレではないんですよって感じですかね
195デフォルトの名無しさん:2008/11/04(火) 21:13:55
例えサポートスレだとしてもこんな感じで次々に条件を変えられたら
イラッと来ると思うけどね
196デフォルトの名無しさん:2008/11/04(火) 21:18:54
おれは、CSV文字列1行を
TStringListに分解する関数を作って使ってる。
この関数1個あれば、CSVを全然意識せずに文字列として扱える。
197デフォルトの名無しさん:2008/11/04(火) 21:25:44
全然関係ない話だけど俺はBCB3から2009まで買ってきたなあ
最初の頃は全然使い方が分からなくて、その頃に丁度Delphi6
のフリー版が出たので、Delphi本をBCBに翻訳しながら打ち込んで
動かす事で覚えたっけ。

お陰様でBCB6からは自由自在に使えるようになった。参考書も
BCB用が皆無の頃でDelphi本を買って参考にしたっけ。
198デフォルトの名無しさん:2008/11/04(火) 21:31:37
せっかく教えて頂いたのに重ね重ね申し訳ありませんでした・・・;;
次からはもう少し慎重に確認していくように注意します。
ここから先は自己解決していきたいと思います。
何度も教えていただきありがとうございました!!
199デフォルトの名無しさん:2008/11/04(火) 21:32:21
VCLがObject Pascalで書かれているのでそれをC++で動かすために
少しの言語拡張とC++のクラスの柔軟性とマクロの多用で対応して
いるが、今見ても頭がおかしい人が設計したんじゃないかと思う事がある
200デフォルトの名無しさん:2008/11/05(水) 09:16:56
>>196
CommaTextというプロパティがあってね・・・
1例だけ特殊対応しなければいけないけど大抵はこのプロパティだけで大丈夫だな
201デフォルトの名無しさん:2008/11/05(水) 12:43:08
CommaTextでは正しく解釈できない場合があるし
CSVの記述が正確ではない場合
悲惨な結果をもたらすことになる。
趣味なら笑って済ますことも出来るだろうが
業務用プログラムでは、
とてもじゃないが、CommaTextは使えない。
202デフォルトの名無しさん:2008/11/05(水) 13:39:21
>>200
それスペースまで区切りとみなしちゃうだろ?
""で囲ってあればいいけどそうでないのってどうしてる?
203デフォルトの名無しさん:2008/11/05(水) 13:41:32
CSVのラインを解釈してバラして保持するクラスを自作すれば無問題。
その後、TStringList系は使いまくってるけど。
204203:2008/11/05(水) 13:42:27
さらにそのCSVの1ラインを解釈して保持するクラスに、TStringListとの入出力を持たせればおk。
205デフォルトの名無しさん:2008/11/05(水) 13:49:10
正しく解釈出来ないのが"で括られてない項目のスペースだな
>>201CSVの記述が正確では無かったら何やっても悲惨になるんだがw
俺はStringListに分解したあとにチェック入れてる
206デフォルトの名無しさん:2008/11/05(水) 13:57:34
TStringListのDelimiterとDelimitedTextってC++Builder5にないけど
これって6から?
207デフォルトの名無しさん:2008/11/05(水) 13:59:24
>>206
そう
俺はBCB6から本格的にBCBを使い出したからBCB5以前の
奴とは話が時々合わず苦労する
208デフォルトの名無しさん:2008/11/05(水) 14:01:56
5から6へのバージョンうpは安定してるし、
Indy増えるし、やっぱそれに関しては無条件バージョンうpじゃね?


6から200Xへはやったことないガクブル
209デフォルトの名無しさん:2008/11/05(水) 14:24:24
2009使ってるけどこれどう見ても2006や2007と大差ないんだけど
Delphi + BCB で3万円が妥当な価格だと思う
エンバカは高く設定し過ぎ
210デフォルトの名無しさん:2008/11/05(水) 16:24:57
バカだから仕方ない
211デフォルトの名無しさん:2008/11/09(日) 20:51:23
2009出たけど配布用の仕組みって入ってる?JavaWebStartみたいな。
業務アプリはネイティブで作ると楽だけど配布がウザすぎてWebにしたくなる。
212デフォルトの名無しさん:2008/11/11(火) 17:24:47
VCLのラジオボタンをCLXのラジオボタンと同じ動きにする方法ってありませんか?

CLXアプリをVCLアプリに書き換えてるんですが、CLXのラジオボタンがスペーキーを押すまでチェックされないみたいなので…

環境はCLX→6.0 VCL→2007です
213デフォルトの名無しさん:2008/11/11(火) 19:38:51
>>210
バカに貢俺らって、バカ馬鹿だな
214デフォルトの名無しさん:2008/11/11(火) 20:12:42
だがそれがいい
215デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/11/16(日) 15:34:11
足し算できてる。文字列の足し算が。
C++のデータには「型」があるんよ。数値とか文字とか。
StrToIntとかで数値に変換してから足せ。
217デフォルトの名無しさん: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個の配列です。
218デフォルトの名無しさん:2008/11/16(日) 16:46:25
A1->Strings[i].ToStrInt()
219デフォルトの名無しさん:2008/11/16(日) 16:48:05
ちごた

A1->Strings[j].ToDouble()
220デフォルトの名無しさん:2008/11/16(日) 16:59:45
AnsiStringで受け取る必要ないのぜ。
221デフォルトの名無しさん:2008/11/16(日) 17:04:48
>>219
ありがとうございます。
うまく変換して計算することができました。
222デフォルトの名無しさん:2008/11/16(日) 17:24:36
2007/2009はAnsiStringTでヘルプ探さないと見つからないな
223デフォルトの名無しさん:2008/11/17(月) 15:37:38
WINDOWS95で動くのはどのバージョンまでですか?
224デフォルトの名無しさん:2008/11/17(月) 16:26:55
とりあえず、BCB6は動く。
225デフォルトの名無しさん:2008/11/17(月) 16:45:24
BCB6はとりあえず動くね。
226デフォルトの名無しさん:2008/11/17(月) 16:57:01
ただ、ヘルプ周りはWindows2000以降じゃないと‥‥
227デフォルトの名無しさん:2008/11/17(月) 17:07:16
逆に、ヘルプ周りはWindows2000以降じゃないとアレ
228デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/11/18(火) 14:04:08
Resolving the EPackageRegistrationException error in BDS 2006 on Windows Vista
ttp://support.codegear.com/article/36202
230デフォルトの名無しさん:2008/11/18(火) 22:52:25
レスありがとうございます。
教えて頂いたリンク先にあった内容や、
ttp://support.codegear.com/article/37345にあった内容を試したのですが、全く状況に変化が見られませんでした…
どうも無理そうなので、とりあえずVista正式対応を待つことにします。
231デフォルトの名無しさん:2008/11/18(火) 23:08:46
素直に2007か2009を買うしかないね。Turbo Explorer?正式対応?残念ながら無理でしょ…。
232デフォルトの名無しさん:2008/11/25(火) 13:49:41
TBitmapからTIconのハンドルを取得する方法を教えてください
できますん。
234デフォルトの名無しさん:2008/12/03(水) 11:42:25
ShowHint=trueにするとコントロールにカーソルがくると自動でヒントが表示されますが
指定コントロールのヒントを手動で表示される方法を教えてください
235デフォルトの名無しさん:2008/12/03(水) 22:57:47
そのコントロールにCM_HINTSHOWをPerformすればいいみたいだけど、パラメータが問題かな?
236デフォルトの名無しさん:2008/12/04(木) 10:40:48
>>235
なるほど。
まずはちょっと試してみますありがとう
237デフォルトの名無しさん:2008/12/04(木) 22:47:38
Turbo C++ ExploerのdbExpressって、リモートでFirebird2.x接続は無理?
ローカルはOK、リモートでもコネクションは繋がってテーブル名は見える。
が、テーブルを開こうとするとエラー65535がでて繋がらない。
238デフォルトの名無しさん:2008/12/08(月) 17:23:25
メモ1に



















とこのような感じで0と1が何千行と出されているのですがメモの上から順番にforで回して
1が出た場合その行数とそこから1がどれだけ続いたかカウントしていくプログラムを作成したいのですが
どういったようにつくっていけばよいのでしょうか?
239デフォルトの名無しさん:2008/12/08(月) 17:26:46
普通に作れば良いと思うのだが、
先ず何が問題?

・C++文法
・ファイル操作
・ロジックの書き方
240デフォルトの名無しさん:2008/12/08(月) 17:34:38
>>238
それってMemoでなくても配列の中に1がいくつ続いているかを
数えるのと同じ問題だよね
241デフォルトの名無しさん:2008/12/08(月) 18:05:48
>>239-240
お前等が馬鹿すぎてワロタ
知らないならレスするなよクズ共

>>238は普通にTMemoでどうやって書くかを聞いてんだろw

Memo->Lines->Count
Memo->Lines->Strings[i]
242デフォルトの名無しさん:2008/12/08(月) 18:10:12
>>241
??
243デフォルトの名無しさん:2008/12/08(月) 18:12:35
ここはクズのすくつでつねw
244デフォルトの名無しさん:2008/12/08(月) 18:18:49
クズって言う奴はクズじゃないんだよ
245デフォルトの名無しさん:2008/12/08(月) 22:00:28
>>238 は
何がわからないのかを書いていない。
基本的に質問の仕方を知らない。
きっと何がわからないのかさえわからないのだろう。
そんな人は、たぶん論理的に組み上げていく
プログラミングということはムリなのではないかと思う。
丸投げで全部教えてもらいたかったら
C/C++の宿題を片付けます 119代目
http://pc11.2ch.net/test/read.cgi/tech/1228313292/
こっちで聞くべき
246デフォルトの名無しさん:2008/12/09(火) 10:29:15
>>245
答え方がわからないならレスしないで下さい。ウザイだけです。
247デフォルトの名無しさん:2008/12/09(火) 11:07:58
>>246
おいばかやめろ
Win32APIスレから出てこないでください
248デフォルトの名無しさん:2008/12/09(火) 15:57:06
ここにまで屑が侵食してきたか・・・
249デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/12/14(日) 08:53:26
日本語プログラミングですねわかります
251デフォルトの名無しさん:2008/12/15(月) 00:47:49
アカデミック版ってインストール時になんか問題ある?
252デフォルトの名無しさん:2008/12/15(月) 00:51:00
インスコ時はないんじゃない?
ちゃんとした店なら買う時に学生証見せてなんか書かなきゃいけないと思うけど
253デフォルトの名無しさん:2008/12/15(月) 14:15:38
昔の学割版には、作ったプログラムは有償無償関係なく公開禁止っていうキツいルールがあったけど
あれ今もあるのかな
254デフォルトの名無しさん:2008/12/15(月) 17:20:08
Delphi.Personalityってなんですか?

dclusr.dpkを読み込もうとすると、これがないって
えらーになるんですが、

Delphiをインストールしないとダメですか?
255デフォルトの名無しさん:2008/12/15(月) 17:22:20
どれ?
256デフォルトの名無しさん:2008/12/18(木) 14:45:24
Panelとかコントロールの標準カーソルを指定カーソルファイル(*.cur)に変更する方法を教えてください
257デフォルトの名無しさん:2008/12/18(木) 14:51:33
>>256
TScreen::Cursors
258デフォルトの名無しさん:2008/12/18(木) 15:01:00
>>257
そこにLoadCursorでぶち込むんですよね?
それってリソースに予めないとダメですよね?
259デフォルトの名無しさん:2008/12/18(木) 15:07:37
LoadCursorFromFileというAPIがあってですね‥‥
260デフォルトの名無しさん:2008/12/18(木) 15:09:12
259補足。
ただし、現在はLoadCursorやLoadCursorFromFileは後方互換性のためのAPIで、LoadImageが推奨されてる。
261デフォルトの名無しさん:2008/12/18(木) 15:10:58
>>259
そんなのがあったんですかあああああああああああああああ!!
ああ、おかげで思った通りのアレができますた!
ありがとうございます。
262デフォルトの名無しさん:2008/12/18(木) 15:14:15
>>260
補足までありがとう。
LoadImageもぐぐってみます。
263デフォルトの名無しさん:2008/12/19(金) 22:03:33
BCB6から2009への乗り換えがスゲー苦労する
何か良い方法ないですか?
264デフォルトの名無しさん:2008/12/19(金) 23:51:11
VC++よりBCBを使うメリットってなんですか?
逆なら枚挙に暇が無いが・・・
265デフォルトの名無しさん:2008/12/20(土) 00:08:04
>264
RADなところかな。
266デフォルトの名無しさん:2008/12/20(土) 02:09:12
http://lupus.is.kochi-u.ac.jp/~shiota/graphprog/sj/graphprog.html
ここにあるソースをコンパイルしようとしたのですが、
上手くいかないので助言お願いします。

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

コンパイルの環境はBCC55でCPADからビルドしてます。
ソースに問題があるのか、
環境が悪いのかだけでも分かれば教えてください。
267デフォルトの名無しさん:2008/12/20(土) 02:16:36
こっちへどうぞ
ttp://pc11.2ch.net/test/read.cgi/tech/1135127048/

でも何がどういう風にうまくいかないのかをきちんと書かないと誰も答えてくれないと思うが。
268デフォルトの名無しさん:2008/12/20(土) 14:12:37
VC++MFCでちょっと凝ったUIを作成しようとすると
地獄のようにコードを記述する必要がある。
Builderなら部品をちょこちょこと置いて
コードをちょこっと記述すればエエ。
工数が1/10くらいになるわ。
269デフォルトの名無しさん:2008/12/22(月) 17:23:26
>263
BCB6から2007なら簡単です。
2007で「BCB6のプロジェクトファイル(*.bpr)」を読み込んで
2007のプロジェクトファイル(*.cbproj)に書き出して、メイクするだけでOKである。

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

270デフォルトの名無しさん:2008/12/23(火) 17:02:36
どうして、2009で「ユニコードライブラリを使う」をVSのように、
プロジェクト・オプションにしなかったんだろう。
271デフォルトの名無しさん:2008/12/23(火) 22:02:52
>>263
自分が苦労したのは、AnsiString::c_strをAnsiString::t_strにしたりとか、VCL関数に渡す文字列リテラルをワイド文字列にしたくらいかな。
この辺は、Rubyでスクリプトを書いて何とかした。
TRegIniFileやTIniFileがほとんどだったから、ReadStringとかが見つかったらワイド文字列に変換するって感じ。

>>270
多分、両方メンテしなければならないからかな。
プロジェクトオプションで分けて欲しかったのは同意。
272デフォルトの名無しさん:2008/12/25(木) 13:55:44
PanelのCaptionに書いてる文字がパネルに収まってるかどうかを判断する方法を教えてください
273デフォルトの名無しさん:2008/12/25(木) 16:12:29
>>272
Panelのサイズを調べて、Bevelとかの幅をそこから引いて、実際の表示領域のサイズを出す
PanelのFontでCaptionに設定してある文字列のサイズを調べる
両者を比べる
274デフォルトの名無しさん:2008/12/25(木) 16:21:11
>>273
文字列のサイズはどうやって調べればいいんですか?
275デフォルトの名無しさん:2008/12/25(木) 16:24:17
Win32APIで、指定文字を書いた場合のRectをとれたはずだが?
276デフォルトの名無しさん:2008/12/25(木) 16:26:16
>>275
知らないならレスしないで下さい。ウザイだけです。
277デフォルトの名無しさん:2008/12/25(木) 16:29:10
>>276
正解をレスしようと思ったけどやめたw
ヒント:Win32APIの文字列描画系APIをパラメータを含めて片っ端から調べろ。
278デフォルトの名無しさん:2008/12/25(木) 16:39:08
>知らないならレスしないで下さい。ウザイだけです。
あれれ?
なんだただのでじゃヴか
279デフォルトの名無しさん:2008/12/25(木) 17:12:10
>知らないならレスしないで下さい。ウザイだけです。

これって貼り付いてるアンチだとオモ。
質問書いたらこれ書かれたことある。
アンチは加齢にスルーw
280273:2008/12/25(木) 17:28:32
>>274
TCanvasに、自分(TCanvas)に設定されているTFontを使って、指定した
文字列を描画する際のサイズを調べるメソッドがある(と思った)

>>279
というか、そのコピペはプログラミング系のスレとかでよく見る
アンチ以前の、単なる茶々入れも多いよ。カレーにするーには同意
281デフォルトの名無しさん:2008/12/25(木) 17:33:32
>>280
あった。
TextExtentが領域、TextHeightが高さ、TextWidthが幅を返すね。
282デフォルトの名無しさん:2008/12/25(木) 18:15:13
そういや、なんでVCLリファレンスってTRectとTPointがRECT、POINTの派生ってこと書かれてないんだろ。
Types.hppだと struct TRect : public RECT ってなってるし、派生って事知らないといろいろ面倒だと思うんだが‥‥
283デフォルトの名無しさん:2008/12/25(木) 22:23:08
>>279
それはWinAPIスレで流行ってますよ
是非いらっしゃってください
お待ちしております
284デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/12/30(火) 17:28:00
AnsiString().sprintf() って使えるはずだろ
286デフォルトの名無しさん:2008/12/30(火) 18:13:30
わかりにくいかな

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

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

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

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

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

"%f"な
289デフォルトの名無しさん:2008/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));
}

どうすれば普通の数値になるかアドバイスお願いします。
290289:2008/12/30(火) 21:22:12
解決しました。
291デフォルトの名無しさん:2008/12/31(水) 00:52:22
馬鹿だろ
292デフォルトの名無しさん:2009/01/08(木) 17:26:06
2007って64ビットXPに対応してる?
293デフォルトの名無しさん:2009/01/10(土) 14:33:32
いまだにBCB6なんですが2009買うメリットありますか
既存コンポーネントも強化と書かれてますがどんなもんでしょう
2007くらいまでは案内の手紙も来てたのになー
294デフォルトの名無しさん:2009/01/10(土) 15:50:46
VC++2008expressでいい
295デフォルトの名無しさん:2009/01/10(土) 21:08:24
BCBスレでVCを薦めるとな
296デフォルトの名無しさん:2009/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デフォルトの名無しさん:2009/01/11(日) 00:30:35
>>296
BCC6.1.0だと落ちないね
298デフォルトの名無しさん:2009/01/14(水) 20:15:40
CodeGear RAD Studio 2007 を使っております。

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

299デフォルトの名無しさん:2009/01/14(水) 20:57:44
wchar_t だろ。
_stprintf_sはしらないけど、C言語標準の関数で置き換えれば?
たとえばだ。
#define   _stprintf_s(・・・)   sprintf(・・・)
など。
300デフォルトの名無しさん: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;
}
301298:2009/01/14(水) 22:42:27
>>299 さん、>>300 さん、お答えありがとうございます。

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

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

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

CodeGear RAD Studio 2007 (C++Builder) には、
こういうマクロ定義はされていないのでしょうか。
こういった作業はすべてユーザーにゆだねられているのでしょうか?
302デフォルトの名無しさん:2009/01/15(木) 11:39:30
>>301
tchar.hインクルードしてる?
303デフォルトの名無しさん:2009/01/15(木) 16:50:00
DirectShowを使うのにstrmiids.libが必要なんですが
プラットフォームSDK付属のだとリンクエラーになります。
B++Builder用はどこにありますか?
304デフォルトの名無しさん:2009/01/15(木) 16:53:26
>>303
http://www.clootie.ru/cbuilder/index.html
これとかは?
使ったこと無いからわからないけど
305デフォルトの名無しさん:2009/01/15(木) 16:55:47
>>304
ありがとうございます。
このサイトにしっかりとありました(;´Д`)
ttp://www.clootie.ru/cbuilder/index.html#DX_CBuilder_SDKs
306デフォルトの名無しさん:2009/01/20(火) 20:53:45
307デフォルトの名無しさん:2009/01/22(木) 15:31:26
DIBをTBitmapに変換する方法を教えてくださいい
308デフォルトの名無しさん:2009/01/22(木) 17:40:38
>>307
そのDIBが

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

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

パレット付き画像だとちょっと手間が増える。
309デフォルトの名無しさん:2009/02/03(火) 19:52:26
TImageListのn番目の画像をTImageに表示する方法を教えてください
310デフォルトの名無しさん:2009/02/06(金) 15:52:23
C++Builder2007って64bitのXPに対応してる?
普通に動作はするんだけど64bitアプリ作れますか?
311デフォルトの名無しさん:2009/02/06(金) 18:40:07
312デフォルトの名無しさん:2009/02/07(土) 10:32:46
C++Builder2010をお待ちください> 64bit
313デフォルトの名無しさん:2009/02/07(土) 22:14:31
待っている間に Qt Creator で御機嫌 64bit 開発できるようになってたりして
314デフォルトの名無しさん:2009/02/09(月) 11:10:38
a
315デフォルトの名無しさん:2009/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デフォルトの名無しさん:2009/02/10(火) 12:58:20
ヒント: TListViewの実態はWindozの標準コントロールで昔は無かった
317デフォルトの名無しさん:2009/02/10(火) 13:05:30
そんなヒントいらねえよカス
知らないならレスするなクズ
318デフォルトの名無しさん:2009/02/10(火) 20:04:02
マルチスレッドに対応した高速なJPEGデコーダのライブラリはありませんか?
319デフォルトの名無しさん:2009/02/11(水) 00:39:57
いま、C++Builder5 から C++Builder2009 に移行中なんだけど、
どうしてもわからないところがある。

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

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

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

3.はがんばれば解決出来そうだけど、1と2、特に2はちょっと解決できそうにない。
解決方法をご存じの方がいたら、ぜひ教えてください。
320デフォルトの名無しさん:2009/02/11(水) 01:46:24
1は解決しました。

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

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

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

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

こんどは、

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

というエラーが出るようになった。文字列周りはかなり変わってるから、バグが潜んでるのかも知れない。
322デフォルトの名無しさん:2009/02/17(火) 15:01:24
プログラム初心者です。

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

お願いします。
323デフォルトの名無しさん:2009/02/17(火) 15:05:50
信号入力待ちとは何ぞや?
324デフォルトの名無しさん:2009/02/17(火) 15:06:25
WaitForSingleなんちゃらとか?
それかスレッド
325デフォルトの名無しさん:2009/02/17(火) 15:07:39
ヒント: 正しいアイドルループ(Application->ProcessMessages()) もしくは 別スレッド
326デフォルトの名無しさん:2009/02/17(火) 15:40:12
>>325
いや関数から抜けてないんだろ。
それなのにProcessMessagesとか馬鹿ならレスするなよクズ
327322:2009/02/17(火) 15:50:38
API関数はwinsockのaccept()です。

別スレッドでやってみます。
スレッドは使ったことがないので何かあったらまたお願いします。m(__)m
328デフォルトの名無しさん:2009/02/17(火) 17:08:41
これじゃね?

>winsock2でaccept()を中断する
ttp://memolet.blog22.fc2.com/blog-category-41.html
329デフォルトの名無しさん:2009/02/18(水) 11:22:07
>>Delスレ954
if (typeid(E) == typeid(EInOutError)) {
}
330デフォルトの名無しさん:2009/02/18(水) 11:27:46
ちなみに、この比較はDelphi形式のクラスでのみ有効。
(typeid自体はC++標準だけど、本来はキャスト元の型は取れない。C++BuilderのDelphiクラスサポート用の拡張機能に依存)
331デフォルトの名無しさん:2009/02/19(木) 06:45:13
InheritsFromでいいんでない?
332デフォルトの名無しさん:2009/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デフォルトの名無しさん:2009/03/01(日) 10:03:57
>>332
TCriticalSectionが必要なんじゃない?
334デフォルトの名無しさん:2009/03/02(月) 09:14:14
>TCriticalSection

Crytical Section ってVCLラップされてたんだ。知らなかった。
まさかMutexはラップされてないおね?
335デフォルトの名無しさん:2009/03/02(月) 12:39:04
C++Builder2009でFindFirstの再帰処理でファイル一覧を取りたいんですけど
Debug::Heap Block at xxxx とか Invalid address xxxが出る。
何故だろう?(BCB5では問題なし)

誰か助けて....
336デフォルトの名無しさん:2009/03/02(月) 12:41:38
アプリのヒープサイズかスタックサイズが小さく設定されてるとか?
337デフォルトの名無しさん:2009/03/02(月) 13:27:45
設定はBCB5もBCB2009も同じなんです。
338デフォルトの名無しさん:2009/03/02(月) 13:44:09
同じにしたらVCLが肥大化した分、メモリ的に2009が不利じゃね?
339デフォルトの名無しさん:2009/03/02(月) 14:01:48
ヒープサイズやスタックサイズを大きく設定するという意味ですか?
340デフォルトの名無しさん:2009/03/02(月) 14:13:44
下にサブディレクトリのない末端のディレクトリ基点にFindFirstしてもエラー出る?
出ないならただのスタックオーバーフローじゃないかと。
341デフォルトの名無しさん:2009/03/02(月) 14:41:59
FindFirstの再帰処理で階層が深くなった時に出る次第です。
やはりスタックオーバーフローでしょうか
342デフォルトの名無しさん:2009/03/02(月) 14:47:37
再帰つかうなよ
343デフォルトの名無しさん:2009/03/02(月) 14:54:26
他にいい方法あんの?
344デフォルトの名無しさん:2009/03/02(月) 15:01:11
>再帰つかうなよ
どのように処理するとよいのでしょうか?
345デフォルトの名無しさん:2009/03/02(月) 15:16:07
>>342はいつもの煽るだけの無知なクズとみた
346デフォルトの名無しさん:2009/03/02(月) 15:23:35
フォルダ名をキューに入れて、findnext出来なくなったら
先頭を呼び出して奨める
347デフォルトの名無しさん:2009/03/02(月) 15:28:46
>>346
335じゃないけど意味がわからないからもうちょい詳しく教えて
348デフォルトの名無しさん:2009/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デフォルトの名無しさん:2009/03/02(月) 15:42:37
御迷惑をお掛けしています、環境に問題があるのかもしれません。
BCB2009はVirtualPC上で動作させており、FindFirstしている場所は
VirtualPC上のネットワークドライブです。
この時にDebug::Heap Block at xxxx とか Invalid address xxxが出ています。
ローカルのC:\\とかを指してやると正常に動作しています。

350デフォルトの名無しさん:2009/03/02(月) 15:52:29
仮想PCの性能不足だろ
再帰使うなよ
351デフォルトの名無しさん:2009/03/02(月) 15:54:13
vipが今日でなくなる?vipperどもが運営に宣戦布告!!!!!

 http://takeshima.2ch.net/test/read.cgi/news4vip/1235974776/
352デフォルトの名無しさん:2009/03/02(月) 15:55:32
>>仮想PCの性能不足だろ
無知でした、皆様ありがとうございます。
353デフォルトの名無しさん:2009/03/02(月) 15:58:27
>>348
335じゃないけど、ディレクトリをどんどんケツにくっつけてサーチしろってことかな?
俺もよく再帰使うからちょっと気になって横うんこしてしまったぜ
354デフォルトの名無しさん:2009/03/02(月) 16:00:54
全ての再帰は、ループ処理で書き換えられる。 再帰定理とかいうのがある。
355デフォルトの名無しさん:2009/03/02(月) 16:05:31
>>354
だからなんだよクズ
356デフォルトの名無しさん:2009/03/02(月) 16:07:38
再帰定理というのがあって、再帰とループは機能的に違いがないことが証明されているそうです。
つまり、原理的には再帰で書けるコードはループで書けるんだそうです。
Scheme(LISP系の関数型プログラミング言語)だと、繰り返しはループじゃなくて再帰を使うんだそうです。
357デフォルトの名無しさん:2009/03/02(月) 16:16:59
>>356
んじゃ>>350はなんなの?
358デフォルトの名無しさん:2009/03/02(月) 16:21:38
違いはないから、メモリ管理をコンパイラに任せず自分でやれって事だ
再帰使うとスタックオバーフロが起こりうる
359デフォルトの名無しさん:2009/03/02(月) 16:25:48
スタック領域はコンパイル時に決定されてしまうだろ。
だから予定外のメモリ確保が出てくる再帰使うと停止する。
動的確保なら、OSがスワップとかしてなんとかできる。
360デフォルトの名無しさん:2009/03/02(月) 22:02:32
つかどんだけ深い階層になってるんだ?リパースポイント(FILE_ATTRIBUTE_REPARSE_POINT)とか設定されてね?
361デフォルトの名無しさん:2009/03/02(月) 22:46:44
>356
スタックの類使わなくても書けるの?
362デフォルトの名無しさん:2009/03/03(火) 05:37:46
まだ初心者なのですが、batファイルをC++builder6で
ボタンを押したら実行するようにしたいので

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

と書いたのですが、うまくいきません・・・どなたか教えてくださいOTL
363デフォルトの名無しさん:2009/03/03(火) 07:55:49
↑解決しました、スレ汚しすまそOTL
364333:2009/03/03(火) 19:45:29
遅レススマヌ
>>334
ヘルプでTMutexで調べるとあるみたいだぞ?
365334:2009/03/04(水) 09:24:55
orz

そうなんだ。
知らないから、Win32APIベタでコールしちゃってるよ。
366332:2009/03/05(木) 19:13:35
>333
ありがとうございます。
末端のソケットに対するアクセスには排他はかけていませんでした。
同時にアクセスできるのは1スレッドだけというシングルコアに絆された思い込みがありましたので・・・。
早速試してみます。

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

ちなみに現行バージョンではIndy系を推奨しているようです。
排他で解決できればとりあえず目的は達成されるのでここまでにしたいと思います。
ありがとうございました。
367デフォルトの名無しさん:2009/03/06(金) 20:40:01
DLL内部の関数からDLLに組み込んだフォームやApplication->MessageBox()を呼ぶと、
通常の子ウィンドウと違ってウィンドウがタスクバーに表示されてしまいます。
DLLロード後にメインフォームのハンドルをDLLに渡してやることで
どうやらうまく行くようなのですが、手法的にスッキリしません。
もっとスマートに行う方法はないものでしょうか。BCB6を使っています。
368デフォルトの名無しさん:2009/03/06(金) 21:15:46
>DLLロード後にメインフォームのハンドルをDLLに渡してやることで
十分スマートじゃないか?
つかそうするのが普通だろ?
369367:2009/03/06(金) 22:25:48
>>368
やっぱりそうですか?
ロードと同時にDllEntryPoint()でなんとかできないのかなーと思ったんですが。
とりあえず邪道ではないようで安心しました。ありがとうございました。
370デフォルトの名無しさん:2009/03/06(金) 22:55:50
ウインドウハンドルを要求するAPI関数が
どこからリンクされているか考えれば問題ないとわかるはず…
371デフォルトの名無しさん:2009/03/13(金) 15:01:44
2007でwsprintfやlstrcpyが未定義エラーになっちゃうんだけど
オプションのどこいじればいいですか?
ちなみに、他のプロジェクトだとちゃんとコンパイル通ります。
なんか1つのプロジェクトだけこのエラーでるんです・・・
372デフォルトの名無しさん:2009/03/15(日) 10:33:12
VistaでCB2007使い始めたんだがOpenDialogを開こうとしてもなぜか必ず失敗するorz

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

何も間違ってないはずなのに!
373デフォルトの名無しさん:2009/03/15(日) 14:28:51
まあどう考えても
バグだらけだろ。
374デフォルトの名無しさん:2009/03/16(月) 08:51:47
>>327
OpenDialogが開くダイアログ位置おぼえてるっぽくて、
全然開かない現象がBCB6+xpであった。

Project1.bpr/Project1.exe の組み合わせで発生して、
同じプロジェクト名だと再発するんだが、
違うプロジェクト名にしたら現象消えた。
まだ原因を追っかけてはいない。
375デフォルトの名無しさん:2009/03/16(月) 10:39:42
2009って64ビットに対応してる?
376デフォルトの名無しさん:2009/03/16(月) 11:09:52
対応している。
377デフォルトの名無しさん:2009/03/16(月) 11:33:22
え”、ウソだろ?
そうなら、2009買って64bit調査開始しなきゃならんやん。
378デフォルトの名無しさん:2009/03/16(月) 12:01:30
>>376
嘘つけ!
379デフォルトの名無しさん:2009/03/16(月) 12:28:43
対応して犬
380デフォルトの名無しさん:2009/03/16(月) 13:19:47
対応している言葉は間違えない
ただ、
64ビットのコードを吐くとは言っていない
381デフォルトの名無しさん:2009/03/16(月) 13:24:34
対応してぬこ
382デフォルトの名無しさん:2009/03/16(月) 13:40:32
>>380みたいなクズってまだいたのね
383デフォルトの名無しさん:2009/03/16(月) 15:14:26
>>380
お前みたいなカスはレスするなよ
384デフォルトの名無しさん:2009/03/16(月) 20:07:58
このスレはカスとクズとゲスで出来ています
385デフォルトの名無しさん:2009/03/16(月) 22:42:12
正直、BCB2009自体がカスなんだがな。
386デフォルトの名無しさん:2009/03/16(月) 23:13:55
もう注文しちゃいましたよ>>385
というかCCBが正しいのかな?
CODEGEAR C++ Builder2009
387デフォルトの名無しさん:2009/03/17(火) 00:06:25
CordGuardが止まらない
388デフォルトの名無しさん:2009/03/17(火) 00:16:31
それなんてロマンチック?
389デフォルトの名無しさん:2009/03/17(火) 10:16:48
スペル違うし
390デフォルトの名無しさん:2009/03/17(火) 19:46:26
くだすれの方で誰も答えてくれないのでマルチになりますが質問させて下さい
ウィキペディアに、

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

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

http://www.clootie.ru/cbuilder/

このページで公開されてるライブラリ使わなくても、正規のDirectXを使えるってことですか?
391デフォルトの名無しさん:2009/03/17(火) 22:25:52
>>390
半分は。
DirectX9が入っているが、d3d9x.libなどが無い。
チュートリアルの1は何とか何もしないでいける程度。
392デフォルトの名無しさん:2009/03/18(水) 03:25:27
>>391
それはサポートしているとは言えないんじゃ…
393デフォルトの名無しさん:2009/03/18(水) 16:47:33
2009のチラシが届いたんだが使い勝手はどんなもん?
未だBCB6の俺としてはそろそろOSも変わるかもしれんしバージョンアップ考えた方がいいかなと思ってるんだが
394デフォルトの名無しさん:2009/03/18(水) 16:50:14
まだチラシが届きません(><;)
395デフォルトの名無しさん:2009/03/19(木) 02:34:42
>>375

ttp://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.
396デフォルトの名無しさん:2009/03/19(木) 17:22:06
コンパイルするとたまに作成するアプリのアイコンがデフォのアイコンになっちゃうんだけど
これ原因わかる人いる?
ちなみに、他PCで同じプロジェクトを何度コンパイルしてもちゃんと指定したアイコンになってます。
397デフォルトの名無しさん:2009/03/19(木) 17:24:06
ねーよw
398デフォルトの名無しさん:2009/03/19(木) 17:28:40
いや、お前達みたいな奴に聞いても無駄だってわかってはいるんですが
もしかしたら同じ症状の人がいたらラッキーかなっておもったんで
399デフォルトの名無しさん:2009/03/19(木) 17:41:03
>>396
Builderのバージョンとかは果敢機会?
400デフォルトの名無しさん:2009/03/19(木) 18:18:30
>>399
あ、そういえばそうですよね。
まあ言っても無駄だとおもうけど。
C++Builder5 proですよ。
401デフォルトの名無しさん:2009/03/19(木) 18:23:44
それって昔あったOSのバグだろ。
402デフォルトの名無しさん:2009/03/19(木) 19:07:22
OSの方ですか・・・
OSはXPSP2なんですがSP1をアップデートしてSP2にしたんですが
これが途中でエラー出てあれなんだよばかなんですよね。
あ、そういやSP1のPCでやってもダメなのあったなあ
4台で試して2台が現象発生だこのやろう!!
403デフォルトの名無しさん:2009/03/19(木) 19:09:39
C++Builder2009Proがきたぞ
インストールだ
404デフォルトの名無しさん:2009/03/19(木) 19:32:08
2007と何処が違うのか教えてくれ
405デフォルトの名無しさん:2009/03/19(木) 19:58:08
2007がない
406デフォルトの名無しさん:2009/03/19(木) 20:54:26
強制的にユーザ登録ってなんだよ。
しかも登録先が英語・・・
407デフォルトの名無しさん:2009/03/19(木) 21:16:23
何故に最新のSP3にしないのだろう。
408デフォルトの名無しさん:2009/03/19(木) 23:41:02
C++Builder 6
ボタンとかタブのカラーは変えられないのですか?
409デフォルトの名無しさん:2009/03/20(金) 00:00:31
BCBuilder5とC++Builder2009って同居させても問題ないよね?
410デフォルトの名無しさん:2009/03/20(金) 00:12:19
2009のクイックスタートガイドに
実行環境っていうのがあるんだけど
作ったアプリケーションが動作する環境っていう意味なの?
411デフォルトの名無しさん:2009/03/20(金) 01:04:25
>>409

OK
412デフォルトの名無しさん:2009/03/20(金) 01:39:34
>>408
先に古い方からインスコ
413デフォルトの名無しさん:2009/03/20(金) 20:52:33
別スレッドを動かしている時、スレッドが終了したかどうかを確認する方法を教えて下さい
お願いします。
414デフォルトの名無しさん:2009/03/20(金) 21:06:00
TThread とかだったらHandleやThreadIDプロパティをチェックするとか
415デフォルトの名無しさん:2009/03/20(金) 22:33:27
処理が終了したのか、スレッド自体が終了して消え去ったのかでだいぶ違うけど
後者なのかな。
416デフォルトの名無しさん:2009/03/20(金) 22:56:41
>>396
遅レスだが、会社で組んだソフトがその現象になって困ったことがあったよ。
確か、プロジェクトファイル(.bprファイル)をテキストエディタで開いて、
<LIBRARIES value=だか<SPARELIBS value=の最初のlib
を最後に移動して保存して、BCB5で開いてリコンパイルしたら直ったと思うよ。
417デフォルトの名無しさん:2009/03/20(金) 23:03:41
418413:2009/03/21(土) 11:28:05
初心者なもので

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

>>415
後者です
419デフォルトの名無しさん:2009/03/21(土) 14:13:18
WaitForSingleObjectでTThread.Handleを待機。
420デフォルトの名無しさん:2009/03/21(土) 17:55:06
>>418
TThread *Thread として(実際はTThreadの派生系)

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

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

2)OnTerminate イベントを使う
void __fastcall ThreadTerminated(TObject*){ /* スレッド終了時に処理をさせる。処理はメインスレッド内で実行される。*/}
Thread->OnTerminate=ThreadTerminated;
421デフォルトの名無しさん:2009/03/22(日) 15:43:47
>>413
TThread.Finished プロパティを調べる。trueなら終了。
422デフォルトの名無しさん:2009/03/22(日) 18:52:50
ちょっと質問。
C++Builder2009Pro。
アプリケーション作成時のデフォルトアイコンあるでしょ。
あれって変えられない?
デフォルトがヘッドギアってダサすぎです
423デフォルトの名無しさん:2009/03/22(日) 20:23:44
C++Builder6だとプロジェクトのオプションとかで変えられたけど
2009は持ってない。
424デフォルトの名無しさん:2009/03/22(日) 21:27:37
C++Builder2009でもプロジェクトオプションで変更できる
425デフォルトの名無しさん:2009/03/22(日) 21:49:45
あーえっと。
新規プロジェクト→アイコン変える
のようにプロジェクトの作成のたびにアイコンを変えるのがめんどくさい。

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

プロジェクトが作成されるたびにデフォルトで指定したアイコンになっていてほしい。
426デフォルトの名無しさん:2009/03/22(日) 21:52:03
427デフォルトの名無しさん:2009/03/22(日) 21:59:58
アイコンファイル自体を置換してしまえ
428デフォルトの名無しさん:2009/03/22(日) 22:05:04
そそうか
デフォルトのオプション設定でアプリケーションの項目がないからあきらめてた
あまりにもダサいから必ず変えるように仕向けたいのか
残念だ
ありがとう

置換?できるのか?
429デフォルトの名無しさん:2009/03/24(火) 20:16:41
どこかにアイコンのリソースはある筈だからそれを変えられればいいだよな
430デフォルトの名無しさん:2009/03/24(火) 20:46:21
どこか知らないならレスするなよクズ
431デフォルトの名無しさん:2009/03/24(火) 20:48:03
ヘタな釣りw
432デフォルトの名無しさん:2009/03/24(火) 21:00:09
ちょっと探してみたけど.resや.icoの形ではないみたいだなあ
どこに組み込まれてるんだろ

まあ、そもそもそんな必要があるとは思えないけどね
433デフォルトの名無しさん:2009/03/24(火) 22:22:18
DLLじゃね
434デフォルトの名無しさん:2009/03/24(火) 22:35:27
そんな必死になることなのか
435デフォルトの名無しさん:2009/03/24(火) 22:47:56
アイコンなんてクリック数回で変えられるじゃん。
だいたい、作るプログラムは全部デフォルトのままかよ。
436デフォルトの名無しさん:2009/03/24(火) 23:11:22
別にいいじゃん
ネタとして話をしても
437デフォルトの名無しさん:2009/03/25(水) 00:07:54
自分だけで使うものとかさ、アイコンを変更するまでもないんだけどあのアイコンはいやだから毎回変えているんだ。
WindowsフォルダのTASKMAN.EXEみたいなアイコンにしている。
438デフォルトの名無しさん:2009/03/25(水) 14:15:53
グローバル変数の評価式だけ???やデタラメな数字になってしまうたすけてください
439デフォルトの名無しさん:2009/03/25(水) 14:19:47
グローバル変数はなくすべきだろ、常考。
440デフォルトの名無しさん:2009/03/25(水) 14:23:49
最適化が有効になってるんじゃねえのか。
441デフォルトの名無しさん:2009/03/25(水) 15:42:08
もっかいBuild allしてみ
442デフォルトの名無しさん:2009/03/25(水) 17:10:11
1行エディットして改行したただけで
それ以降のブレークポイントがみんなズレるんだけど
なんかいい方法ないかな
443デフォルトの名無しさん:2009/03/25(水) 21:17:02
WSACreateEvent とか WSAEnumNetworkEvents あたりの関数が外部シンボルが未解決とリンカエラーでるのは何でなんだぜ?
444443:2009/03/25(水) 21:54:34
自己解決。
Ws2_32.libをプロジェクトに追加したらリンクできた。
445デフォルトの名無しさん:2009/03/27(金) 13:19:40
>>442
プログラムのフォルダをコピーしたりしなかったか?
446デフォルトの名無しさん:2009/03/27(金) 21:33:32
起動時にオープンダイアログ開こうとしたらエラーになるんで
間にShowMessage入れて見たらオープンダイアログ開くようになったんだけど
これどういう事?
447デフォルトの名無しさん:2009/03/27(金) 22:09:11
起動時ってどのタイミング?
エラーって何?
448デフォルトの名無しさん:2009/03/27(金) 23:01:41
フォームのインスタンス?作成時
オープンダイアログが失敗した時やキャンセルした時に返るfalse
449デフォルトの名無しさん:2009/03/27(金) 23:03:17
×インスタンス
○コンストラクタでしたw
1年ぶりに手を付けてますw
450デフォルトの名無しさん:2009/03/28(土) 03:30:19
>>446
途中に関数挟むとスタックの状態が変わるので、それまで出ていたバグが
出なくなったように見える事があるよ。

OpenDialogが内部で利用するGetOpenFileName()は過去に何度か拡張されて、
関数が使用する構造体のサイズも変わった。それがエラーの原因じゃないかなあ。
_WIN32_WINNTとOPENFILENAME::lStructSizeがうまく対応取れていないような気がする。
解決しないなら、直接GetOpenFileName()呼んで回避してください。

もし単にXPスタイルのダイアログ開きたいだけならマニフェスト埋め込めば楽かと。
451デフォルトの名無しさん:2009/03/28(土) 04:20:49
フォームのconstructor、特にメインフォームの場合は、色々な初期化が終わってないから、その辺りじゃないの?
ダイアログの親ウインドウがまだ使える状態じゃないとか。オープンダイアログがコンポーネントの事だったら、それ
の初期化完了も確認しないとまずいし。

OnCreateとか、OnIdleとか使った方がよさげ。
452デフォルトの名無しさん:2009/03/28(土) 11:26:45
コンストラクタでやるのはせいぜいユーザ定義メンバの初期化
__publishedに触るのはOnCreateから
453デフォルトの名無しさん:2009/03/28(土) 11:29:22
なんか昔マニュアルにOnCreateとコンストラクタに処理を書くと
不都合が生じるからコンストラクタに書いてくれって載ってた気がする
454デフォルトの名無しさん:2009/03/28(土) 13:08:01
でもコンストラクタ内ではフォームの初期化が完了してないから
VCLをいじるような記述をすると高い確率で動作が変になる。

変数への代入程度で留めておくべきだろう。
455デフォルトの名無しさん:2009/03/28(土) 13:20:53
メインフォームのコンストラクタであまりいろんな処理をするのはお勧めできない。呼び出し時点がApplication.Runより
前なんだから。
456デフォルトの名無しさん:2009/03/28(土) 20:37:20
通信は独自の方法でしたい
HTMLの表示はコンポーネントを使いたい
なんてコンポーネントを使えばいいのかな?

C++Builder 2009
457デフォルトの名無しさん:2009/03/29(日) 14:22:30
C++Builder2009買ったんだけど、
ユーザー登録カードのユーザーIDって
Developer Networkに登録したやつを書けばいいの?
458デフォルトの名無しさん:2009/03/29(日) 17:36:23
いや、過去に買ったことがなければ空欄でいいと思う。過去に買ったことがあればDMとかに書いてあるやつ。
459デフォルトの名無しさん:2009/04/07(火) 10:23:17
ワイド文字列定数を標準にできませんか?
460デフォルトの名無しさん:2009/04/07(火) 13:29:53
C++Builder2007でwsprintf等のAPIを呼ぶと未定義のシンボルエラーがでるのですが
これはどこをいじくると正常にコンパイルできるようになりますか?
461デフォルトの名無しさん:2009/04/07(火) 13:34:49
ちなみにWindows.hをインクルードしても同じエラーが出るのですが
他のプロジェクトだと普通にコンパイルが通ってます。。
他のプロジェクトとオプションを見比べてみたのですが同じでした。。。
何が原因なのでしょうか
462デフォルトの名無しさん:2009/04/07(火) 22:52:45
user32.lib
463デフォルトの名無しさん:2009/04/08(水) 09:56:10
あ、すんません。
>>460ですが、エラーの出るプロジェクトでも
記述するソースによってエラーが出たりでなかったりします。
5つcppファイルがあるのですが、そのうち1つのソースにwsprintfを記述するとエラーはでません・・・
その他の4つのソースに書くとコンパイルエラーがでます。もうわけがわかりません
464デフォルトの名無しさん:2009/04/08(水) 10:23:57
まず間違いなく、単純ミス。
それ以上は、エスパーじゃないからわからん。
465デフォルトの名無しさん:2009/04/08(水) 11:10:10
やっぱそう思いますよね・・・
単純なミスならシンボルエラーは出ないんだけど・・・
同じコードをコピペしてるからスペルミスは無いし・・・
466デフォルトの名無しさん:2009/04/08(水) 12:20:26
プログラミング歴は長いのですが,正式に習っていないので,恐らく簡単と
思われることでつまずきました。最近 C++Builder 6 に代えて
Turbo C++ Explorer を使い始めたのですが,

[リンカ エラー] Error: ファイル 'UNIT1.DFM' を開けません

が発生したとき,これを解決する方法が分りません。お教え下されば幸です。
宜しくお願いします。
467デフォルトの名無しさん:2009/04/08(水) 12:22:47
> 'UNIT1.DFM'

を用意する。
ってか、ファイル間違って消しちゃったんじゃないの?
そうなら、フォーム作り直しw
468デフォルトの名無しさん:2009/04/08(水) 13:05:42
>>467
<466>です。早速コメント有難うございます。
'Unit1.dfm' は存在します。該エラーは,例えば作成した project を収めた
フォルダーを移動したり,別の場所にコピーして開いたときなどに発生します
が,そのような場合に必ず起きる訳でもなく,原因が分りません。
小生とは別の方の同様の質問が,
http://gimite.net/bcbqtree/qtreemain.cgi?mode=thread&thread=1117
にありますが,アドバイスは寄せられていません。
469467:2009/04/08(水) 13:08:32
>最近 C++Builder 6 に代えて Turbo C++ Explorer を使い始めたのですが,

あ、BCB6なら使ってるけど、TCEは使ってないので分かりません。。。
470デフォルトの名無しさん:2009/04/08(水) 13:25:16
>>469
<466>です。再々のレスポンス有難うございました。小生も当面,BCB6 に戻ろう
かと思います。
471デフォルトの名無しさん:2009/04/08(水) 14:16:37
>>468
作成したプロジェクトを「別の名前を付けて保存」を選んで移動させた?
それともエクスプローラーで移動?
フルパスが書かれてるかも知れないからチェックした方が良い。
プロジェクトファイルをテキストエディタで開いてみ。
472デフォルトの名無しさん:2009/04/08(水) 14:17:30
>>460
違うかも知れないけど

#include <tchar.h>

って書いてみて。
違ってたらゴメン。
473デフォルトの名無しさん:2009/04/08(水) 14:34:20
>>472
情報ありがとうございます。
それをインクルードしてみましたが未定義のシンボルエラーがでます。。。

うーん、何で同じプロジェクトでコンパイルが通るソースと通らないソースがあるのだろうか・・・
474デフォルトの名無しさん:2009/04/08(水) 14:58:34
コンパイルエラーなのかリンカエラーなのかちゃんと書きな。
475デフォルトの名無しさん:2009/04/08(水) 15:07:25
>>474
ログもちゃんと読めない馬鹿はレスしないで下さいね。
お前みたいな奴のレスなんて期待してませんから^^
476デフォルトの名無しさん:2009/04/08(水) 15:20:33
>>473
何か変わったことはやってますか?
たとえば、古いバージョンと共存させたりしているとか、
ダイレクトXを使っているとか。
477デフォルトの名無しさん:2009/04/08(水) 15:39:00
バックグラウンドコンパイルって無くなったのか?
478デフォルトの名無しさん:2009/04/08(水) 15:53:20
ヒント:高速コンパイルユニットに差し替え
479デフォルトの名無しさん:2009/04/08(水) 16:03:36
>>476
あ、するどいですね!
DirectShow使ってます。

>>475
フォローありがとん
480デフォルトの名無しさん:2009/04/08(水) 16:13:20
<466, 470>です。
>>471のヒント有難うございました。解決しました。
Project1.bdsproj をクリーンにするには,新たに簡単な
VCLアプリケーションを作って別のフォルダーに保存し,
そこにある unit1.cpp, unit1.dfm, unit1.h に前のものを
上書きして再コンパイルすればよいことも分りました。
数週間来の憂鬱から開放されました。
再度お礼申上げます。

481デフォルトの名無しさん:2009/04/08(水) 16:30:24
bdsprojの中フルパスなんかな?
いやな仕様だね。
482デフォルトの名無しさん:2009/04/08(水) 16:57:39
>>479
strsafe.h をインクルードしてるかどうかチェックしてみて。
多分それじゃないかなぁ?
そのヘッダの中を覗いてみ。
483デフォルトの名無しさん:2009/04/08(水) 17:16:22
>>482
確かにDShow.hにstrsafe.hがインクルードされてました!
んでその中を見るとなにやらwsprintf等のAPIを
#undefしたり#defineしたり怪しい事やってますね・・・
484デフォルトの名無しさん:2009/04/08(水) 17:23:50
>>483
それはセキュリティ的に非推奨のメソッドを削除しちゃってくれてる。
使わないか、ヘッダを変更するかはあなた次第。
485デフォルトの名無しさん:2009/04/08(水) 17:29:48
>>484
なるほど原因がわかってスッキリしました!
ありがとうございます。
486デフォルトの名無しさん:2009/04/13(月) 13:04:49
エクスプローラが落ちた際に、タスクトレイに表示させたアイコンも消えてしまいますが、
エクスプローラが落ちた際に、自動的に復活するにはどうしたらよいのでしょうか?
487デフォルトの名無しさん:2009/04/13(月) 13:14:14
それWINAPIの領域だろ
なんか登録状態を取得する方法あると思うけど
488♪ ◆QS1LouL6pU :2009/04/13(月) 14:29:01 BE:798862638-PLT(15254)
エクスプローラが落ちてアイコンが消えた時、ウィンドウメッセージが飛んで来るはず。
それを処理する。
どんなメッセージかは覚えてない。
489デフォルトの名無しさん:2009/04/13(月) 14:56:29
何故わざわざコテを付けるのかが不明
しかも曖昧なことしか言ってないし
490♪ ◆QS1LouL6pU :2009/04/13(月) 15:32:01 BE:998577465-PLT(15254)
お前みたいな馬鹿でもNG設定出来るように付けついるのさ。
491デフォルトの名無しさん:2009/04/13(月) 16:16:58
付けついる
492デフォルトの名無しさん:2009/04/13(月) 16:29:09
493デフォルトの名無しさん:2009/04/13(月) 19:00:41
付けついる
494デフォルトの名無しさん:2009/04/14(火) 10:07:19
付けついる
495デフォルトの名無しさん:2009/04/14(火) 10:09:49
KETUXILE
496デフォルトの名無しさん:2009/04/14(火) 14:24:04
Builder6でフォームが非アクティブになっても、メニューの状態(表示色)が変化しないように
するにはどうしたらよいのでしょう?

現在フォームにMainMenuを貼っています。
フォームがアクティブの時は黒で、非アクティブの時は薄いグレーで表示されますが、
常にメニューの色は黒にしておきたいのですが、どなたか方法をご存知の方いらっしゃいませんか?
497デフォルトの名無しさん:2009/04/14(火) 14:25:36
ん?メニュー?
498デフォルトの名無しさん:2009/04/14(火) 14:34:57
>>496
Windows のコントロールの機能なので、自前で描画するしかないような気がする。
499taguti:2009/04/14(火) 15:36:53
6個のreal型変数x1、y1、x2、y2、x3、y3を定義しそれぞれに実数つを読み込んで、xy平面上の3点
(x1、y1)(x2、y2)(x3、y3)を頂点に持つ三角形の面積を計算して、その値を表示するプログラムを作成してください。
・公式:底辺x高さ÷2を使って計算してください。
お願いします!!
500デフォルトの名無しさん:2009/04/14(火) 15:41:26
>>496
できない。どうしてもやりたいならツールバーでメニューを構成すること。
501デフォルトの名無しさん:2009/04/14(火) 15:55:47
>>499
宿題スレでも池
502デフォルトの名無しさん:2009/04/14(火) 15:58:20
503デフォルトの名無しさん:2009/04/15(水) 14:24:20
三週間くらい前にユーザー登録のはがき送ったんだけど、まだ何の連絡もない
けっこう時間かかるの?
504デフォルトの名無しさん:2009/04/15(水) 21:29:06
最近はユーザ登録ってレスポンスなしのような希ガス。あとユーザ登録とEDNのアクティベーションは
関連してないと思う。
505デフォルトの名無しさん:2009/04/15(水) 23:03:56
でもレスポンスないとユーザーIDがわからないよ
バージョンアップ版インストールするのにユーザーIDとか必要なんじゃないの?
506デフォルトの名無しさん:2009/04/16(木) 00:07:58
あ、そういやそうか。でもインストールにはライセンス証書の内容とEDNアカウントしか必要ない。
購入は直販してたときはチェックされてたけど今はどうだろ?
直接電凸か公式フォーラムで聞いてみたら?
507デフォルトの名無しさん:2009/04/16(木) 10:08:43
現在、Builder6からBuilder2009へ移行作業をしている。
以下のエラーが表示される

[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のライブラリを指定してないか
だど思う。

これに対処の仕方を分かっている方がおられるなら、教えて下さい。
環境については、デフォルトのままである。
508デフォルトの名無しさん:2009/04/16(木) 11:08:01
現在、Builder6からBuilder2009へ移行作業をしている。
以下のエラーが表示される

[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のライブラリを指定してないか
だど思う。

これに対処の仕方を分かっている方がおられるなら、教えて下さい。
プログラミング環境については、デフォルトのままである。

509デフォルトの名無しさん:2009/04/16(木) 11:56:17
現在、Builder6からBuilder2009へ移行作業をしている。
以下のエラーが表示される

[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のライブラリを指定してないか
だど思う。

これに対処の仕方を分かっている方がおられるなら、教えて下さい。
プログラミング環境については、デフォルトのままである。
510デフォルトの名無しさん:2009/04/16(木) 13:17:12
やめて!
511デフォルトの名無しさん:2009/04/17(金) 11:01:01
TMediaPlayerでマイク入力の音声をwavに出力するやりかたを教えてください
512デフォルトの名無しさん:2009/04/22(水) 14:56:29
リージョンについて教えてください。

Imageの画像を回転させたいのですが、その時に枠も一緒に回転させたいと思っています。
リージョンの機能を使えば枠の形を変形できるそうですが、角度等を細かく指定することはできますでしょうか?
調べてみたところ、決まった形を組み合わせることは出来るようですが、四角い枠に角度を指定して回転させることはできませんでした。

よろしくお願いします。
513デフォルトの名無しさん:2009/04/22(水) 17:39:56
>>512
WinAPIのGDI関連のリージョン?
あれ、自由フォーマットにするには
ライン単位で切ったリージョンを合成するしかないよ。
514デフォルトの名無しさん:2009/04/22(水) 21:36:09
>512
何をしたいのかよくわからん。枠って何?リージョンってのは形状だけのデータで、
クリッピングという行為に使えるというだけ。画像の一部をクリップしたものを任意の角度で
回転したいということなのかな?それなら元画像をリージョンでクリップしたものと
それ以外の部分に分けて、クリップしたものを回転して、合成すればいいんじゃない?
とエスパーしてみる。
515デフォルトの名無しさん:2009/04/22(水) 21:52:37
リージョンって左回りに座標指定するんだっけ?

そしたら回転を表す行列で座標変換したらどうか?
画面のちらつきはダブルバッファで抑えるとして
516デフォルトの名無しさん:2009/04/24(金) 13:26:27
2009でMAXDOUBLE (1.7976931348623158E+308)が0になる、
QC見ると直したみたいな事になってるんだけど違うんだろうか。
517デフォルトの名無しさん:2009/05/01(金) 07:40:41
質問なんですけど、C++でjavaのeclipseみたいに文法ミスやスペルミスなどをデバックする前から波線などで表示してくれまるソフトを探しているのですが、
C++Builderは似たような機能ってついてますか?
518デフォルトの名無しさん:2009/05/01(金) 23:51:40
コードインサイト?
519デフォルトの名無しさん:2009/05/10(日) 21:06:09
TComboBoxでEnabledをfalseにすると、文字の色がグレーになりますが、
これを黒にする方法がありますか。
520デフォルトの名無しさん:2009/05/10(日) 21:09:19
オーナードロー(自分でコードごりごり書いて描画する)なら実現できるけど簡単じゃない。
それ以外の方法はない。
521デフォルトの名無しさん:2009/05/10(日) 22:03:36
VCLのソースが付属してるんだから適当に書き換えて
コンパイルしちまえば?
522デフォルトの名無しさん:2009/05/10(日) 22:16:16
Panelに乗っけてPanelをfalseにするという手もあるが▼もそのままになるな
523デフォルトの名無しさん:2009/05/11(月) 17:49:08
教えて下さい。
呼び出し履歴のような、関数実行ログという感じの
関数名をファイル出力する機能を作りたいです。
関数ごとに処理を記述するのではなくて、出来るだけ少ない記述で
実現したいです。
例外処理が発生した時のトレースが出来ればと。
意味分かんないようでしたらすみません。
524デフォルトの名無しさん:2009/05/11(月) 20:18:35
例外処理を捕まえる必要があるなら
try/catchをちゃんと記述すべきだろ。
525デフォルトの名無しさん:2009/05/11(月) 20:28:22
>523
デバッガ上で確認じゃ駄目なん?例外の発生は設定次第で記録されるはず。
もうすこし具体的に状況を説明するといい方法がでてくるかもね。
526デフォルトの名無しさん:2009/05/11(月) 20:29:53
どの関数で例外が出ているかを知りたいんでないの?
関数特有の例外ならいいけどメモリ違反とかさ。
予測していない例外の場合はつぶしておきたいと。
527デフォルトの名無しさん:2009/05/11(月) 20:49:23
だったら、Codeguardを有効にすればいいだけじゃん。

528デフォルトの名無しさん:2009/05/11(月) 22:02:28
ひさびさにCodeGuardオンにしてみたら
DynamicArrayをPascalでSetLengthしてるとブーブー言うんだがバグか?
529523:2009/05/11(月) 22:22:14
説明不足ですみません。
526さんの言われている通り、どの関数で例外が出ているのかを知りたいです。
制御系ソフトのコンソール部をBuilder2009で作っています。
そのソフトは長時間(1週間以上)起動しているためか、最初の頃は出ない
読み込み違反等の障害メッセージが突如出てしまいます。
524さんが言われる通り、try/catchを記述すればいいのですが、
関数も多くなってきて、出来るだけソースを短く出来ればと考えています。
527さんの入れているCodeguardも考えたのですが、リリース版などでは
重くなると聞いたもので。
分かりづらくてすみません。
530デフォルトの名無しさん:2009/05/12(火) 00:03:45
どの関数か、だけなら
マップファイルでも出せばアドレスはわかるんでないのかな
531デフォルトの名無しさん:2009/05/12(火) 00:53:19
例外の種類を見れば、どの関数で発生しているのかの当たりは付けられるんじゃないの。
そしてあやしそうなところだけでも、catchすればいいのでは。
532デフォルトの名無しさん:2009/05/12(火) 01:10:55
C++例外じゃなくて
ぬるぽ読み込み違反とかのWin32例外だろ。
「xxxxの命令がnnnnのメモリを参照しました云々」てやつ。
xxxxがわかるならどこで違反してるかもわかるでしょ。
533デフォルトの名無しさん:2009/05/12(火) 01:28:37
>>529
CodeGuard掛ければ一発じゃん
534デフォルトの名無しさん:2009/05/12(火) 21:03:22
とりあえず>532はガッ
535デフォルトの名無しさん:2009/05/13(水) 15:40:05
pasの日本語定数を使うと化けるんだがどうすりゃいいんだこれ?
536デフォルトの名無しさん:2009/05/14(木) 00:14:35
環境とか状況とか具体的に。そんだけじゃイミフ。
537デフォルトの名無しさん:2009/05/14(木) 11:36:50
const AAA='あああ'

ってのがhppで

#define AAA L"\x82\xa0\x82\xa0\x82\xa0"

ってなって代入しても元に戻らないの
とりあえずconst:Pchar='' にしといたが不便だ
538デフォルトの名無しさん:2009/05/14(木) 18:34:40
__int64を文字列にする方法とかを教えてください
539デフォルトの名無しさん:2009/05/14(木) 18:36:15
>>538
sprintf(str, "%Ld", int64);
540デフォルトの名無しさん:2009/05/14(木) 18:50:32
>>539
このブタ野郎っ!
できました!ありがとう
541デフォルトの名無しさん:2009/05/15(金) 20:57:00
テキストデータを印刷したいです。
TPrinterで印刷するのはめんどくさいし、
プリビューとかもできないので、
TQuickReportを使えないかと思うのですが、
Datasetの設定をどうにかごまかそうとしている
#じゃないと印刷してくれない模様
のですが、その方法が見つけられません。
お知恵をおねがいします。
542デフォルトの名無しさん:2009/05/15(金) 21:00:09
541>>
あ、すみません、BCB5です。
よろしくおねがいします。
543デフォルトの名無しさん:2009/05/16(土) 01:18:36
Datasetなんて使う必要なし。
TQRMemoに全部吐け
544デフォルトの名無しさん:2009/05/16(土) 11:39:54
BCB2009のUnicodeStringからByte単位で操作するにはどうすれば良いのでしょうか?
545デフォルトの名無しさん:2009/05/16(土) 15:20:30
普通Unicodeならwchar単位で操作しない?
どうしてもしたいんならchar*にキャストすれば
546デフォルトの名無しさん:2009/05/16(土) 16:01:25
>>543
レスありがとうです。
その方法は最初に試しました。
が、QuickRep1->Print()とかしても何も印刷しなかったですし、
QuickRep1->Preview()しても何も表示しないので、
マニュアルのヘルプにあるようにてっきり
DatasetがActiveでないせいだとおもったのですが。
フォームにQuickReport張って、TQRMemo張って、
QuickRep1->Print()だけでは設定が足りないですか?
547デフォルトの名無しさん:2009/05/16(土) 18:15:11
>>545
レスありがとうございます。
とりあえず希望の動作になりましたが、いまいち仕組みがわかりません。

UnicodeString rcvBuf = Socket->ReceiveText();
wchar_t A = rcvBuf[1]; --> 0x2006
switch ( char(A) ) {
case LT_ACK:
     処理A
break;
}

このときにchar(A)は0x06となって希望の動作をしますがrcvBuf[1]から0x20を
取得したい場合は、どうのようになるのでしょうか?
548デフォルトの名無しさん:2009/05/17(日) 11:06:33
>541

QuickRepotは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;
549デフォルトの名無しさん:2009/05/17(日) 11:21:52
>547
char* pa = (char*)&A;
pa[0];//0x06
pa[1];//0x20

だが、そもそもReceiveTextを使ってる時点で間違ってる。
最初からReceiveBufを使ってchar配列に取り込めば余計な事考えずに済む。
550デフォルトの名無しさん:2009/05/18(月) 09:44:48
>549
できました!ありがとう
勉強になりますた。


551デフォルトの名無しさん:2009/05/18(月) 12:16:19
548>>
>TQRStringsBandを使うのがポイントだと思う
これでした。
で、TQRStringsBand#Itemsをいくつか登録すると、
その数だけTQRStringsBandの内容が繰り返されました。
ここから暫くは自力でいけそうです。
ありがとうです。
552デフォルトの名無しさん:2009/05/18(月) 15:00:28
BluetoothAPIの使い方を勉強中です。
BluetoothApis.hってのが必要なようなのですが、
何処で手に入るのでしょうか
ググってもVSの記事ばっかりで、
VSはたぶん最初から入ってるんですよねきっと。
もしかしてBCB5ではムリですか?
553デフォルトの名無しさん:2009/05/18(月) 15:46:45
>>552
求めているのはRFCOMMというものらしいです。
テキスト通信がしたいだけなのですが、
なんだかムズすぎです;
554デフォルトの名無しさん:2009/05/18(月) 22:49:40
>552
Delphiなら
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
555デフォルトの名無しさん:2009/05/19(火) 09:30:55
>>554
惜しい。そのものな感じのがありますね。> JEDI
.pasだから読めるかなと思ったのですが...orz
556デフォルトの名無しさん:2009/05/19(火) 11:19:44
BluetoothApis.h
Windows Platform SDKに含まれていました。
サンプルコードのコメントが沢山あるので、
これでなんとかなるカモ。
557デフォルトの名無しさん:2009/05/19(火) 11:23:23
>BluetoothApis.h
レポート希望

558デフォルトの名無しさん:2009/05/19(火) 12:24:04
ざっとですが読み終わりました。
BluetoothApis.hでは、
Radio Enumuration, Device Enumuration, Radio Authenticationなど
ができるだけでした。
そこから先はソケットを使う模様です。
わかんないことばっかしでメゲそう orz
559デフォルトの名無しさん:2009/05/19(火) 12:43:29
え”、そうなの?
Bluttooth使うのって難しいの?
使う予定あるんだけど。
560デフォルトの名無しさん:2009/05/19(火) 13:18:56
BCB2009の評価版を使い始めたんだけど、
ヘルプでページ内のリンクを開いた後、「戻る」ボタンで戻ってくると
必ず戻ってきたページの先頭にスクロールがリセットされるんだけど、
これって仕様?
使い難くって仕方ない
561デフォルトの名無しさん:2009/05/19(火) 13:34:09
ヘルプが使いにくいのは仕様ですが、何か?
ただ、1つ1つのクラス仕様は小さくて見やすいんじゃないかと。
562デフォルトの名無しさん:2009/05/19(火) 15:24:07
今はMSもこのDocumentExplorerとかいうのを使ってるんだろうか
あまりに糞すぎる
563デフォルトの名無しさん:2009/05/19(火) 15:47:51
昔からヘルプは糞糞言われてたけど、WinHelpだったころはリファレンスとして見れば悪くなかったと思うんだけどな
軽いし、例もあったし
564デフォルトの名無しさん:2009/05/19(火) 16:06:12
>>559
ムズイです。
SocketがOKな人は平気なのかもしれないですけど、
ググっても引っ掛からない理由が判る気が。
途中からはTSocketで...ってワケにはいかないのかな。
ってどっちみちSocketわかんないから同じか。orz
565デフォルトの名無しさん:2009/05/19(火) 16:26:07
あの意味不明なヘルプよりヘルプ見るとソース出てくる様にした方がわかりやすいよな
566デフォルトの名無しさん:2009/05/19(火) 16:41:16
回答ありがとう
使いにくいヘルプは仕様なのね、残念

もうひとつ教えて
hとcppだけある状態で独自のコンポーネントってインストールできる?
bplにビルドしないと駄目?
567デフォルトの名無しさん:2009/05/19(火) 16:59:07
>>566
は2009での質問です。
6向けの「コンポーネント活用ガイド Vol2」にはhとcppだけ指定して
追加する方法が書かれていますが、2009では通用しないです
568デフォルトの名無しさん:2009/05/21(木) 14:23:18
TTimerを動的に作成する場合引数に何を指定すればいいですか?
569デフォルトの名無しさん:2009/05/21(木) 15:04:06
this
570デフォルトの名無しさん:2009/05/21(木) 15:04:42
作る場所のクラスがTFormなら、thisでいいんでないか。
571デフォルトの名無しさん:2009/05/21(木) 15:08:07
作る場所はTFormじゃなくて、自作クラスなんですが・・・
それでもできますか?
572デフォルトの名無しさん:2009/05/21(木) 15:12:19
>>571
その自作クラスが Classes::TComponent の派生ならOK。
どうしてもならTApplicationでも渡しておけばいいし。
573デフォルトの名無しさん:2009/05/21(木) 15:18:28
>>572
あ、違います・・
何からも発生してないうんこクラスです。。
でも、そこら辺をあれするとできそうですね。
ありがとうございました。
574デフォルトの名無しさん:2009/05/21(木) 15:29:44
>>573
じゃNULLでも渡しておけば?
その自作クラスのデストラクタで確実に delete 出来るようにしておけば問題ないし。
575デフォルトの名無しさん:2009/05/21(木) 15:33:45
TTimerは、WM_TIMERメッセージを受け取って、動作する。
つまり、メッセージループがあるとこを指定してやんないといけない。
だからNULLなんて論外。
独自のクラスでメッセージを受け取れないなら
ダミーのウインドウを作成してそこで受け取るか、メインウインドウでメッセージを受け取るようにするなり
の対応が必要。
576デフォルトの名無しさん:2009/05/21(木) 15:37:33
>>575
実際にやってみてそういっているのか?
577デフォルトの名無しさん:2009/05/21(木) 15:48:35
>>568のうんこですが
Timer1 = new TTimer( Application );
Timer1->OnTimer = Timer1Timer;
で、ざっくり思った通りの動きになりました~
578デフォルトの名無しさん:2009/05/21(木) 15:51:57
>>575
TTimerはNULL指定しても動作するし。
そもそもTTImerに渡す最下位クラスであるTComponentにはウインドウハンドルないし。
TTimerに渡す引数はオーナーを明示するだけでしかない。
オーナーが削除されたときに安全に、その子コンポーネントを削除するしくみ、それを提供するTComponentクラス。
明示的に削除するのであればオーナーをTComponentの派生にする必要はない。

>>577
あいあい。
579デフォルトの名無しさん:2009/05/26(火) 12:10:04
PDFファイルを指定されたファイル名ごとに、指定された別々の
プリンタに対して出力するプログラムを作ってるんだけど、
PDFをうまく印刷する方法ってないでしょうか?

やりたいい事:
プリンタが複数台有って、ファイル名で印刷するプリンタを
指定して、そのプリンタで印刷を行う。
プリンタはそれぞれ縮小印刷とか、用紙の設定、両面印刷等を
Windowsのドライバで指定してある。
*プリンタはゼロックスのMFP、キャノンのインクジェットプリンタをUSB接続。

試したこと:
MSのOpenPrinterの参考ページを元に、Winに設定されている
プリンタに対してbyte*で読み込んだデータを流してみる。
*プリンタ設定のJob一覧には表示されるけど、出力されず。

TPrinterで、とにかくデータを書いてみる。
*バイナリのデータを直接出力する方法がわからなかった……。

なんとか、お知恵を拝借できないものでしょうか。
580デフォルトの名無しさん:2009/05/26(火) 17:30:01
>>579
PDFを扱うライブラリはあるの?
581579:2009/05/26(火) 18:50:19
>>580
まだ、何をどこまでやれるのかを試してる段階で、とにかく
PostScript対応如何にかかわらずどうすればプリンタにデータを
投げられるかを試してる段階で……。
ライブラリに関しても、まだ調査さえしてない段階です。
582デフォルトの名無しさん:2009/05/26(火) 18:56:43
とりあえずPDFを出すならそっちが出来ることが大前提じゃないの?
583デフォルトの名無しさん:2009/05/26(火) 19:17:40
>>581
TPrinterの方しかわからないけど、

Printer()->BeginDoc();
Printer()->Canvas に対して印刷したいドキュメントは描画する。
Printer()->EndDoc();

ってやる。
もちろんBeginDoc();の前にプリンタ関連の各種設定をしておくこと。

584デフォルトの名無しさん:2009/05/26(火) 19:18:24
Printer()->Canvas に対して印刷したいドキュメントを描画する。

↑ね。
585デフォルトの名無しさん:2009/05/26(火) 22:14:38
>>プリンタに対してbyte*で読み込んだデータを流してみる。
この発想は無かったw
586デフォルトの名無しさん:2009/05/26(火) 23:48:21
すごく壮大なことを考えているわけではない、とすると。PDFは何らかのライブラリ類に解釈させて、
プリンタに送る必要がある。ということでPDFを処理できるもの、といったらやっぱりAdobeの製品
(AcrobatやReader)が最初に浮かんでくる。このあたりから攻めるべきじゃないかな。
587デフォルトの名無しさん:2009/05/27(水) 11:43:15
2007でReleaseでコンパイルしても2007がインスコされてないPCで
作ったソフトを起動するとC3280MT.DLLが無いってエラーがでます。
これオプションのどこを設定したら出なくなりますか?
588デフォルトの名無しさん:2009/05/27(水) 11:58:39
>>507
プロジェクト→オプション→動的RTLをfalseにする
589デフォルトの名無しさん:2009/05/27(水) 11:59:24
×>>507
>>587
590579:2009/05/27(水) 12:10:16
>>580
いろいろありがとう。
スケジュール的にDLLまで調査する時間がなさそうなので、
今回は「通常使うプリンタ」を動的に変更してAcrobatReaderに
頑張ってもらう方向で逃げようと思います。
というか、お客さんにそれで十分じゃね?って言われた……。
591デフォルトの名無しさん:2009/05/27(水) 13:46:34
>>588
あ、ほんとだできたありがとう
これコードガードのあれっぽかたから
そっちばっかりみてますた
592デフォルトの名無しさん:2009/05/27(水) 18:34:12
>>591
なぜ、そう思う?
『Run Time Library』だろ、それ。
593デフォルトの名無しさん:2009/05/27(水) 22:26:53
>>592
ぐぐたらコードガードって出たんだ馬鹿はレスするな
594デフォルトの名無しさん:2009/05/27(水) 23:30:12
ここではスレチなのは分かってるんですがどこへ書き込めばいいか分からなかったので
お許しください。

VC++6.0でのプロジェクトは今のC++Builder無償版でコンパイルできるのでしょうか?
どなたか教えてください。もしくは、誘導お願いします。
595デフォルトの名無しさん:2009/05/27(水) 23:32:52
Turboは知らないけど、6ProはプロジェクトコンバータとMFCはついてる
596デフォルトの名無しさん:2009/05/27(水) 23:41:02
早速のレス、ありがとうございます。
すみません、質問に書き忘れたのですがDLLを作る
プロジェクトなら行けるとかそういうことはありませんか?
新規に購入する資金がなくて。
597デフォルトの名無しさん:2009/05/28(木) 03:50:53
簡単に確認できるんだからやってみればいいだろ。
598デフォルトの名無しさん:2009/05/28(木) 08:15:43
一応TurboC++無料版をダウンロードして入れようとしてたんですけど、
簡単にはインスコさせてくれないみたいなので教えてもらいたかった。
599デフォルトの名無しさん:2009/05/28(木) 10:15:27
>>597みたいなクズはレスしないで欲しいね
600デフォルトの名無しさん:2009/05/28(木) 10:18:23
自作自演大流行だな
601デフォルトの名無しさん:2009/05/28(木) 10:26:53
フリーソフトのインストールさえ出来ない奴がプログラミングできる訳ねえじゃん。
602デフォルトの名無しさん:2009/05/28(木) 13:47:05
いや、Turbo シリーズのインスコは、ハマると厄介だぞ。
603デフォルトの名無しさん:2009/05/28(木) 15:35:22
最近のゆとりは淫寿古さえできないのか
604デフォルトの名無しさん:2009/05/28(木) 15:38:33
>>603がゆとりって事だけはわかった。
605デフォルトの名無しさん:2009/05/28(木) 15:40:23
>>604は禿
606598:2009/05/28(木) 19:59:31
Microsoft.NET 1.1ランタイムとかも入れなきゃいけないみたいなので
目的としていることが出来るならインスコするけど、インスコして
出来なかったじゃイヤなので。
普段は今だにDelphi使いなので、C++に用がなくて
出来るだけ余計なものは入れたくないんだ。
607デフォルトの名無しさん:2009/05/28(木) 20:10:02
まるで.NET Frameworkは汚れ扱いだな。
608デフォルトの名無しさん:2009/05/28(木) 20:17:34
アップデートは全部切ってウィルスに感染するタイプだな
609598:2009/05/28(木) 20:22:37
HDDが30Gのノートだからね。
アップデートはするし、カスペル入れてるけど普段は切ってるな。
で、VC++6.0のDLLのソースはコンパイルできるの?
610デフォルトの名無しさん:2009/05/29(金) 16:27:01
ひどい開発環境だね。そんなオンボロノートPCなら今らな中古で1万くらいで買える。
OSはWindows98かね。
611デフォルトの名無しさん:2009/05/29(金) 16:58:28
Torbo-C++か

中国製のコンパイラらしいけど
612デフォルトの名無しさん:2009/05/29(金) 19:27:58
SSDですが何か?
613デフォルトの名無しさん:2009/05/29(金) 19:36:56
>HDDが30Gのノートだからね。
>HDDが30Gのノートだからね。
>HDDが30Gのノートだからね。
HDD
614デフォルトの名無しさん:2009/05/29(金) 22:13:22
結局馬鹿ばっか
615デフォルトの名無しさん:2009/05/29(金) 22:14:36
>>610
で、だからなんだね、チミ
616デフォルトの名無しさん:2009/05/29(金) 22:22:30
チミ
617デフォルトの名無しさん:2009/05/30(土) 00:15:13
メモリ2G HDD250Gとかのノートパソコンが4万円台で売っている時代だからね。
618デフォルトの名無しさん:2009/05/31(日) 02:58:17
619デフォルトの名無しさん:2009/05/31(日) 10:51:58
もうそんな時代なのか・・・・。でっかい箱のくせにメモリ768kのおれ。これは厄介なことになってきたぞ。
620デフォルトの名無しさん:2009/05/31(日) 12:28:48
メモリ1GB 1000円未満になって久しい訳だが・・・
621デフォルトの名無しさん:2009/05/31(日) 12:34:59
768kってH98?TOWNS?
622デフォルトの名無しさん:2009/05/31(日) 12:44:11
メモリ2Gでも狭えや
623デフォルトの名無しさん:2009/05/31(日) 12:56:12
>>621
それはコンベンショナルメモリのサイズ
624デフォルトの名無しさん:2009/05/31(日) 14:33:53
昔は1バイトでも節約しようと必死だったのに最近のゆとり世代ときたら
625デフォルトの名無しさん:2009/05/31(日) 14:52:20
>>620
DDR2は値上がり基調
626デフォルトの名無しさん:2009/05/31(日) 19:30:34
最近は横ばいだろ
627デフォルトの名無しさん:2009/06/03(水) 00:47:44
主流がDDR3に移り始めたからこれ以上DDR2安くならんと思うよ
628デフォルトの名無しさん:2009/06/10(水) 22:50:53
しつもんです。
BDS2006使ってます。
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全部を検索したけど、見つかりませんでした。
どうなってるんでしょうか。
629デフォルトの名無しさん:2009/06/10(水) 23:26:13
>>628
OSがVistaとか?
630デフォルトの名無しさん:2009/06/10(水) 23:38:36
OSはWindowsXPです。
ExplorerでHDDを全部検索してみたのですが、
該当するiniファイルはありませんでした。
631デフォルトの名無しさん:2009/06/11(木) 09:28:12
ChangeFileExt(Application->ExeName, ".ini")
の戻り値の場所、ちゃんと見た?
632628:2009/06/11(木) 19:53:09
もちろん確認しています。
exeが存在している場所と同じディレクトリとなっています。
パスがおかしいということもありません。パスに漢字も使っていません。
exeとかobjとかはちゃんとあり、iniファイルだけありません。
でもなぜか、
ReadInteger
すると、正しい値が返ってきます。
なぞです。
633デフォルトの名無しさん:2009/06/11(木) 20:19:12
>>632
念のためフォルダオプションで
・隠しファイル属性をすべて表示 をチェック
・保護されたファイルをオペレーティングシステムファイルを表示をしない のチェックをはずす
をして確認してみたらどうだろう
634628:2009/06/11(木) 20:38:06
それはすでにやってあります。
AnsiString 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は見つかりません。
ふしぎです。
635デフォルトの名無しさん:2009/06/11(木) 20:54:00
他のiniファイルを作って実験してみたら?
636デフォルトの名無しさん:2009/06/11(木) 21:15:51
>>634
その昔、
「clock」っていうファイルは
禁断のファイル名だったよ。
637デフォルトの名無しさん:2009/06/11(木) 21:21:32
>>634
実際にはレジストリに書き出されていたりしない?
638デフォルトの名無しさん:2009/06/11(木) 21:26:01
と思ったけど仕様が変更されたってわけでもなさそうか。
639628:2009/06/11(木) 21:33:40
原因わかりました~
ご指摘の通り、レジストリに書き込まれていました。
[HKEY_CURRENT_USER\Software\Microsoft\Clock]
にありました。
実行ファイル名を、Clock.exeからClock2009.exeに変更したら
ちゃんとiniファイルが作成されます。
やっと解決しました。どうもありがとうございます。
Clock.iniというファイル名は使ってはいけないってことなんでしょうか。
それとも、TIniFile のバグ?
640デフォルトの名無しさん:2009/06/11(木) 21:51:17
CLOCKとかPRNって使っちゃだめなファイル名じゃなかった?
641デフォルトの名無しさん:2009/06/12(金) 10:14:59
PRNはデバイスファイルで予約されてるけど、CLOCKはSDKのNaming a Fileには載ってないなぁ
642デフォルトの名無しさん:2009/06/12(金) 10:18:56
CLOCK$はだめだね
CONも
643デフォルトの名無しさん:2009/06/12(金) 17:06:13
CONとPRNとAUXはDOS全てだったけど
CLOCKは98独自だったような曖昧な記憶
644デフォルトの名無しさん:2009/06/20(土) 16:57:38
64bitアプリケーションは作れるの?
645デフォルトの名無しさん:2009/06/20(土) 17:13:34
>>644
Commodore
646デフォルトの名無しさん:2009/06/22(月) 16:25:19
builder2007でですが、
TStringListのLoadFromFileにファイル名を与えないと例外になるのはいいのですが
例外をtry~catchで受けてるのにデバッガがアクセス違反エラーを出してそこで落ちてしまいます
オプションのデバッガでプログラムで受けるようにしてるのですが
他のどこを設定したらいいですか?
647デフォルトの名無しさん:2009/06/22(月) 18:00:14
ユーザー還元セール忘れてた
あと数日か、買うかどうするか・・・
648デフォルトの名無しさん:2009/06/22(月) 18:47:56
ユーザー還元セール?アカデミックキャンペーンてやつとはまた別?
このキャンペーンてさ、買うときに学生証の提示必須かと思ったら

>本製品の購入には学生証・教職員証のご提示は不要ですので

って書いてるけど、これって社会人でもOKってこと?
それなら買おうかな。
649デフォルトの名無しさん:2009/06/22(月) 18:56:21
アカデミックではないと思う
春頃に封書で届いた
内容はこれ↓

http://www.codegear.com/jp/article/39555
650デフォルトの名無しさん:2009/06/22(月) 19:00:25
うが~。クダランIDEのバグで半日潰れた!!!
一応、同様な症状に見舞われた人の為に。

C++Builder2009使用中withXP(どちらも最新)

まだIDEの調子は完全じゃ無いのな。(もうアフォとしか…)

正確には統合環境の問題だと思うんだが、ソースでの右クリックによる
コピペがオカシクなり始めたと思ったら、今度はあらぬ所でコンパイルエラー。
始まりは…

>>>>> SelectDirectory("フォルダセレクト", "\\", SelectDir)
コンパイラ:「そんな関数あるかい!」

…おぃおぃ。今まで通ってたろ?ってのに。徐々に他にも今までに無い警告多数。
エラー多数。
…で、問題箇所のみ抜粋して、新たにプロジェクト作成してコンパイル。
ー>何も問題無し。(-_-;

プロジェクトクリーンアップするも効果無し、仕方なく全プロジェクトを閉じた上で
C++Builderを終了し、該当プロジェクトファイルを削除し、ソース以外を全て削除し、
C++Builderを再起動後、新規プロジェクト作成し、該当ソースを加えコンパイル。
ー>何も問題無し。(-_-;

プロジェクトファイルがオカシクなって、何処かにキャッシュ(それとも
プリコンパイルヘッダ?がオカシク?)されとったんか?まったく。

まとめて書いてしまえばなんて事ないんですけど…数行のソースならともかく、
ある程度の規模のソース書いてれば、エラーが出れば自分が何か「やらかした…」
と思って、必死にソースから原因を探そうとするじゃないですか…。

あ~腹立つ!!
651デフォルトの名無しさん:2009/06/22(月) 19:13:29
未熟杉
おかしくなったら、全部閉じて再起動。
これ常識。
別に、Builderだけの話じゃない。VSだって同様だ。
652650:2009/06/22(月) 19:47:21
>>651
VSで同様な目に逢った事無いもんで。
653デフォルトの名無しさん:2009/06/22(月) 21:47:46
コピペできなくなることはたまにあるな
折りたたみ機能とかいらん機能の弊害だろう
654デフォルトの名無しさん:2009/06/23(火) 00:32:14
>>653
でも、あれはあれで便利な時もあるんですよ、たまに。…って弊害が大きくちゃ
仕方ないですね。

どうにも、IDEってか、エディタのソースがどうなってるのか一度見てみたい。
時々カーソル位置を上手く認識してなかったり、コピペがおかしくなったり。

特に大きめのソース&複数のソースのデバッグを続けると発生し易いような。
(ソースデバッガ兼用な所も一因なのかな)(↑使い方に問題有りかも?C++なのに
ってか、OOPなのに…?って事かな)

いずれにせよ、少しでもおかしくなったら、まずIDEを疑えって事ですね。
655デフォルトの名無しさん:2009/06/23(火) 00:45:23
BCB6はええよ
BCB5のときに俺がバグ報告をFAXで3枚も送ってやったからそれが6ではちゃんと直ってるし、まあデバッグ実行で例外出しまくってると動作がおかしくなったりBCB自体に例外が出て終了できなくなったりなんてことはたまにあるけど致命的なものはないしね
動作も軽いしもう最高だよ!
656デフォルトの名無しさん:2009/06/23(火) 10:49:50
>BCB6はええよ

良すぎるでかんわ。
657デフォルトの名無しさん:2009/06/23(火) 14:42:21
2009って64bitOSに対応してる?
658デフォルトの名無しさん:2009/06/23(火) 16:08:52
64bitは2010だろ。
っていつ出るんだろう。
2009は2008年に出た希ガス。
659デフォルトの名無しさん:2009/06/23(火) 16:11:54
つーか、UIを2010から5のUIに戻してほしい
660デフォルトの名無しさん:2009/06/23(火) 16:38:36
2009ってWin98で動くプログラムも作成できる?
661デフォルトの名無しさん:2009/06/23(火) 16:40:04
2009ってキーボードに付いた精子を綺麗に拭き取ることできる?
662デフォルトの名無しさん:2009/06/23(火) 17:18:48
Windowsのフォルダ選択ダイアログって開けましたっけ?
663デフォルトの名無しさん:2009/06/23(火) 17:22:47
なにを?
664デフォルトの名無しさん:2009/06/23(火) 22:58:28
SelectDirectoryのoverload版で。
665デフォルトの名無しさん:2009/06/25(木) 10:26:27
>overload版で。

これって何ですか?
666デフォルトの名無しさん:2009/06/25(木) 11:07:22
マルチな上にヘルプも読まない人には無理。
667デフォルトの名無しさん:2009/06/25(木) 11:37:17
知らないならレスしないで下さい。ウザいだけです。
668665:2009/06/25(木) 11:57:36
 ↑(667)
いつもはりつきご苦労様です。
669665:2009/06/25(木) 17:48:54
>>664
ヘルプを見たら、2つ関数があって分かりました。
はっきり言って、Exsampleをコピペして動作見たのが間違いだった(><;)
670デフォルトの名無しさん:2009/06/27(土) 21:23:42
質問です。
1画素4バイト(ゴミ, R, G, B各1バイト)のデータが
long img[4*160*120];の配列に格納されています。
これを160x120のカラー画像として、TCanvasにDrawメソッドで
描画するにはどうしたらいいのでしょうか?
img配列をTBitmap(?)などに格納すればいいみたいですが、
どのように格納すればいいのか分かりません。
よろしくお願いします。
671670:2009/06/27(土) 22:45:46
>>670 long img[160*120]です。すみません。
672デフォルトの名無しさん:2009/06/27(土) 23:48:06
RGB関数で色指定して、1dotづつ書いていくのでは出目なの?
673デフォルトの名無しさん:2009/06/28(日) 00:37:00
>>670
ScanLine()を使えば少しは速くなる
ドット単位で打つと猛烈に時間がかかる
674デフォルトの名無しさん:2009/06/28(日) 02:29:26
>>672-673
ありがとうございます。ScanLine()でやってみたいと思います。
675デフォルトの名無しさん:2009/07/05(日) 14:51:56
はじめまして、BCB6使い始めて間もない初心者です。

StringGridのセルを結合する方法が分かりませんorz
先輩方、どうかご教示を(´・ω・`)
676デフォルトの名無しさん:2009/07/05(日) 15:15:47
できない
677デフォルトの名無しさん:2009/07/05(日) 15:28:00
678デフォルトの名無しさん:2009/07/06(月) 00:16:05
>>677

有難うございます!

しかし解決できずorz
もっと勉強しないとだなぁ・・・('A`)
679デフォルトの名無しさん:2009/07/06(月) 01:13:01
ほらできないw
680デフォルトの名無しさん:2009/07/06(月) 01:13:38
有償でよければ
ttp://www.tmssoftware.com/site/gridpack.asp
こんなのとか。
681デフォルトの名無しさん:2009/07/06(月) 20:37:53
StringGridは出来が悪いから使わない方がいいよね
682デフォルトの名無しさん:2009/07/06(月) 21:10:17
>>680

有償版があるくらいにアレなんですね、わざわざ有難うございます!

StringGridは2009だとその辺が改善されてるんですかね?
というか2009BCB以外に安いですね、高いけど('A`)
683デフォルトの名無しさん:2009/07/07(火) 00:05:02
StringGridはStringのGridでしかない
改良コンポなんかごろごろしてるから探せ
684デフォルトの名無しさん:2009/07/07(火) 09:45:25
Builder2009のHelpにStringGridの項目無いよ
相変わらずヘルプは腐ってるな
685デフォルトの名無しさん:2009/07/07(火) 10:25:26
>>684
StringGridで検索しているに1000万ジンバブエドル
686デフォルトの名無しさん:2009/07/07(火) 14:30:09
セルの結合はうまくいったのですが
横スクロールすると結合したセルの表示がおかしくなります。
どうすればいいですか?
687デフォルトの名無しさん:2009/07/07(火) 14:40:15
Refresh or InvalidRect
688デフォルトの名無しさん:2009/07/07(火) 14:46:29
>>687
DrawCellイベント内なのでRefreshをすると永遠にチラつきまくりますが、
InvalidRectはヘルプに載ってないのですがAPIですか?
689デフォルトの名無しさん:2009/07/07(火) 14:51:09
InvalidateRect
でした。

>DrawCellイベント内なので

スクロールの終了後にコールすれば良いんジャマイカ?
690デフォルトの名無しさん:2009/07/07(火) 14:52:31
>>689
これは失礼しました。
TopLeftChangedでやればよかったんですよね^^
とりあえずTopLeftChangedでやったらうまくいきましたが
InvalidateRectも調べてみます。
ありがとうございました
691デフォルトの名無しさん:2009/07/09(木) 14:16:35
たすけてーーー。

今回、初めてC++Builder5を使用してプログラムを作成していますが
何もわからない。

1、以下のようなテキストファイルが存在する。
---------------------------------
1の要求を受付ました。
1の要求の応答を送信しました。
2の要求を受け付けました。
2の要求の応答を送信しました。
              <-どんどん新しいデータが入る。

---------------------------------

2、テキストファイルのデータを新しいもの順に表示する。

※↓textArea??MeMo????
--------------------------------- ↑新
2の要求の応答を送信しました。 <-新しいデータが来るたび一番上に追加される。
2の要求を受け付けました。
1の要求の応答を送信しました。
1の要求を受付ました。


--------------------------------- ↓古

上記のようなものを実現したいのですが、さっぱりわかりません。
誰か教えてください・・・(;;)w
692デフォルトの名無しさん:2009/07/09(木) 14:22:35
「○○の□□を△△した」に分解してソートすればいいんじゃね?
693デフォルトの名無しさん:2009/07/09(木) 14:47:55
TStringListでLoadして逆からSaveすればいいんじゃね?
694デフォルトの名無しさん:2009/07/09(木) 15:14:51
>>692
>>693
ありがとう
しかしぺーぺーですのでわかりません。
もっとくやしくお願いします。
695デフォルトの名無しさん:2009/07/09(木) 15:56:03
>>964
このブタ野郎がっ!!

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;
696デフォルトの名無しさん:2009/07/09(木) 16:12:53
>>695
ソートじゃきっとまずいだろ
ちゃんと逆順になめなきゃ

「表示する」ってんだから
保存は不要だろうけど

ファイル読みの排他処理も気になるが
まあ、ときどきチェックして
変化分だけ先頭に追加表示かな
697デフォルトの名無しさん: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
698デフォルトの名無しさん:2009/07/09(木) 16:35:20
>>695
ぶひっ

>>696
>>697
ありがとう
本当に助かりました。
699デフォルトの名無しさん:2009/07/09(木) 16:36:26
っと思いましたが、もう一点いいですか?
700デフォルトの名無しさん:2009/07/09(木) 16:40:13
テキストファイル
      ---------------
      |       |
常に    |       |   常に
書き込み-> |       |  <-読み込み
      |       |
      |       |
      ---------------

を行うわけですが、問題ないですか?
問題がある場合は、みなさんはどのように対応していますか?
701デフォルトの名無しさん:2009/07/09(木) 16:42:09

おうっ!壊れた。
初心者ですので勘弁してください。

ひとつのログファイルに常に書き込むプログラムと常に読み込むプログラムが
いるけど大丈夫ですか?
702デフォルトの名無しさん:2009/07/09(木) 17:54:29
そういう場合はRDBを使います。
無料のものならFirebird。
703デフォルトの名無しさん:2009/07/09(木) 18:00:28
テキストファイルで読み書きする仕様なんだ・・・
どうすれば良い○| ̄|_
704デフォルトの名無しさん:2009/07/09(木) 18:14:53
CreateFileでググる
705696:2009/07/09(木) 18:19:17
>>702
ただのログファイルの表示に
それはないだろ

>>701
書き込み側のプログラムは
既存のものなのか?
書き直しはできるのか?

あーあ、現実逃避中
706デフォルトの名無しさん:2009/07/09(木) 18:23:30
>>704
グググってみる

>>705
書き込み側のプログラムも新規作成します。
何か良い案がありますか。
707デフォルトの名無しさん:2009/07/09(木) 22:09:30
内部的にStringListを持ってログの生成閲覧はそいつを起点にする
テキストファイルはログの保存だけに使う
708デフォルトの名無しさん:2009/07/09(木) 22:22:01
そのテキストって新しい行を追加し続けるだけ?
一定数行を越えると古いものを削除したりするの?

二つのプロセスが一つのファイルいじるならミューテクスとかで排他制御するといいよ。
709デフォルトの名無しさん:2009/07/10(金) 02:11:20
ファイル入出力は、オープン時にちゃんと排他制御の機能がある訳だが。
710696:2009/07/10(金) 09:19:48
>>706
どうしてふたつのプログラムにするのかわからんが
要はプログラム間通信ということだな。

簡単には、書き込みファイルの存在をフラグとして
読み込み側で読んだら消すというハンドシェイクをする。
必要なら読み込み側で別ファイルに保存する。
もちろん、書き込み側はログを遅延書き込みできなきゃダメだが。

>>709
それももちろん必要だが、それだけで解決できないよね。
711デフォルトの名無しさん:2009/07/10(金) 12:27:28
>>710
簡単に解決できるだろ。
712デフォルトの名無しさん:2009/07/10(金) 13:53:26
>>711
リトライするってこと?
713デフォルトの名無しさん:2009/07/10(金) 18:05:17
書き込み側は、FILE_SHARE_READ指定
読み込み側は、FILE_SHARE_WRITE指定
で問題なく読み書きできるだろ。
714デフォルトの名無しさん:2009/07/10(金) 22:46:12
>>713
その設定でオープンしたまま処理するの?
タイミングによっては、どこまでが読めてくるのか
心配なのだが・・・

691さん、実験してみて
715デフォルトの名無しさん:2009/07/12(日) 20:23:17
BCB5の『開発者ガイド』やヘルプファイルを1日や2日読んだだけでは
何の成果も得られません。
それでも、何ヶ月も毎日読み続けてたら、Windowsプログラムを作れるように
なりますか。
それとも、ニートになって毎日起きてる時間の全部を、その学習に費やして
10年という歳月を掛けても、無理ですか。
716デフォルトの名無しさん:2009/07/12(日) 21:06:48
知識というのは使ってこそ覚えられるもの
読み続ける、学習を続けるだけでは一生無理

何が言いたいかというととにかくまずプログラムを書け
動くものを作れ
簡単なものから徐々にレベルアップしていけばいい
実践のなかで知識の本質を理解しろ
717デフォルトの名無しさん:2009/07/12(日) 21:58:18
何もわからん奴に
とにかく作れと云っても無理ぽ
何もわからんのだから。
一番の近道は、ソースを読むこと。
評判のいいソース、あるいは自分が作りたいプログラムに近いものの
ソースを読み、実際にコンパイルして動かして動作を確認する。
そして、ちょっとだけプログラムを変更してみて
自分の思った通りに動くかどうかを確認する。
まあ、こんなところからやってみるのが現実的であろう。

718デフォルトの名無しさん:2009/07/13(月) 19:25:54
>>707 - 717
みんなアドバイスありがとう
ログもDBで管理するようになりました。
いいのかな???まぁいいや。

BCB5でのDBアクセスの方法等を調査しなくては...。
719デフォルトの名無しさん:2009/07/13(月) 20:51:06
>>718
BCBは基本的に殆どのライブラリをVCLに頼っているから
Delphiの参考書があればほとんどそのまま移植できる
720デフォルトの名無しさん:2009/07/14(火) 09:32:38
まあ C++ の皮をかぶせた Delphi だからな。
できないのは class of に相当する定義だけじゃない?
721デフォルトの名無しさん:2009/07/14(火) 09:53:42
>BCB5

.pasファイルをそのままプロジェクトに組み込めるw

Delphiで作成したクラスは、実体宣言できなくて、”ポインタ宣言&new”というのが最大の制限。
722デフォルトの名無しさん:2009/07/14(火) 10:30:21
しかしなぜか AnsiString だけは実体宣言するという。
723デフォルトの名無しさん:2009/07/14(火) 10:33:54
Delphiではクラスじゃないから
724デフォルトの名無しさん:2009/07/14(火) 11:21:28
そう、だるふぃのソースを移植する必要さえない。
pasソースをBuilderのプロジェクトにぶちこめばいい。
725デフォルトの名無しさん:2009/07/14(火) 17:31:18
OpenJaneのソースをBCB5でコンパイルできないんだが・・・
726デフォルトの名無しさん:2009/07/14(火) 21:10:08
はぁーー。
先週から常連になってきたペーペーです。
新たな問題が発生しました・・・。助けてください。

2台のPCが存在します。
各PCには共有フォルダと作業用フォルダを持っています。

PC1からPC2へ何か要求を行う場合、PC2の共有フォルダに要求が入力された
ファイルが置かれます。

各PCは自分の共有フォルダをポーリングしていて、ファイルを発見した場合
そのファイルを作業フォルダに移動させます。(要求の処理は他の人の担当です)
(コピー後削除? 切り取りはできますか?)

上記の動作をexeを起動したら自動的にスレッドを起こして、その中で行う
みたいです。

まず、スレッドって何?から話が始まって、とりあえずそこはなんとなく理解
できました。
しかし、スレッドの起こす方法や、起動時に自動ってどうやって??
で詰まっています。

要は、何もわからない状況です。助けてください。
周りにC++できる人が一人もいないのです・・・。
DBアクセスもできていなのに・・・。泣きたい。
727デフォルトの名無しさん:2009/07/14(火) 21:13:58
なんかIndyのHTTPサーバコンポとかでやった方が手っ取り早いような
728デフォルトの名無しさん:2009/07/14(火) 22:22:20
>726
その腐った仕様は誰がどうやって決めたんだ?排他処理は?スレッドの必要性は?
とそんなことをそいつにちゃんと考えさせろ。

スレッドはTThreadを派生させて作る。
729デフォルトの名無しさん:2009/07/14(火) 23:22:25
>>726
お前にはまだ早い
730デフォルトの名無しさん:2009/07/14(火) 23:35:35
スレッドの意味が間違っている様な悪寒
731デフォルトの名無しさん:2009/07/14(火) 23:42:46
プログラミングの勉強課題じゃねえの?w
実用的とは考えにくいなー
732デフォルトの名無しさん:2009/07/15(水) 05:04:17
スレッドの初歩として
セマフォー or CriticalSectionの概念を理解させるために
問題を単純化して、ファイルで制御させる目的で
どっかの田舎の専門学校が学生に出した課題
って感じだな。
733デフォルトの名無しさん:2009/07/15(水) 09:58:57
いやいや>>726の文句を言ってる連中は無知としか言いようがないなあ
たしかに>>726はプログラムの知識は文句言ってる貴様らと大差はないが
実際に運用するときはこんな使い方をするところもある
734デフォルトの名無しさん:2009/07/15(水) 10:09:32
>>731-732
説明が悪いので勘違いされたかもしれませんが
勉強課題ではないんです。

自分の担当分以外は全く理解できていませんが、
これが一番良い方法らしいです。

>>733
ありがとう
少し落ちこんでいました。

>>729
の言うと通り、技術的にまだ未熟ですので皆さんに助けを
お願いしたいのです。
735デフォルトの名無しさん:2009/07/15(水) 10:22:57
>>733
発言力はあるが、知識のない奴が
たくさんいるからな
736デフォルトの名無しさん:2009/07/15(水) 10:31:23
>>726
タイマーでやるよりはスッドレの方が好みだな。
同期に関して、Windows のセマフォは実装に問題があるから、
使うときは良く考えた方がいい。大抵はミューテックスか
クリティカルセクションで事足りるけど。

とりあえず思いついたことだけ。
要点もまとめられないほどわかってないやつをこのような場所で
サポートするのは至難だと思うな。
737デフォルトの名無しさん:2009/07/15(水) 10:33:00
とりあえずここは口だけのクズが多い
738デフォルトの名無しさん:2009/07/15(水) 16:32:17
同意だが、普遍的過ぎるぞ。
その「ここ」には「地球」すら違和感なく入る。
739デフォルトの名無しさん:2009/07/16(木) 15:54:51
【緊急】
誰かBCB5でのSetTimer,KillTimerの使い方おしえて
740デフォルトの名無しさん:2009/07/16(木) 16:38:40
急いでいるので早く教えて
741デフォルトの名無しさん:2009/07/16(木) 16:41:00
>>740
コラ
偽者め
お前が教えろ
742デフォルトの名無しさん:2009/07/16(木) 16:42:28
TTimerではダメなのか?
743デフォルトの名無しさん:2009/07/16(木) 16:43:31
>>>742
知らんなら黙ってろカス

知ってる人早く教えてください
詳しく
744デフォルトの名無しさん:2009/07/16(木) 17:12:42
SetTimer(うんちゃら)
KillTimer(なんちゃら)
知らんけど。
745デフォルトの名無しさん:2009/07/16(木) 17:22:18
>>744
早く調べて教えろボケ
746デフォルトの名無しさん:2009/07/16(木) 17:24:56
747デフォルトの名無しさん:2009/07/16(木) 17:55:55
>>746
長すぎて読む気がしないからまとめろ無能
748デフォルトの名無しさん:2009/07/16(木) 18:24:52
>>746
いつまで待たせる気だ
無能め
749デフォルトの名無しさん:2009/07/16(木) 18:31:53
750デフォルトの名無しさん: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);
}
//---------------------------------------------------------------------------
751デフォルトの名無しさん:2009/07/18(土) 09:08:32
ただしこれだとstaticだから、Timer1より使いにくいこと請け合い。
SetPropとか使ってthisを渡すとかすんのかな・・・めんどくさ
752デフォルトの名無しさん:2009/07/28(火) 16:39:00
TImageに24ビットカラーのビットマップを読み込んで
それをそのまま>PixelFormat = pf8bitにして
Image->Canvas->Pixelsで1ピクセルずつ読んで白黒変換して
ScanLineにぶち込んだら表示がカラーのままで変になるのですが
読み込んだビットマップを0~255階調の白黒にする方法を教えてください
753デフォルトの名無しさん:2009/07/28(火) 18:20:37
>>752
パレットを自分でつくって割り当てろ
754デフォルトの名無しさん:2009/07/28(火) 18:38:52
マジかよめんどくせーよ
他にやりかたあんだろ?
755デフォルトの名無しさん:2009/07/28(火) 18:41:59
知っているけどお前の態度が気に入らない
756デフォルトの名無しさん:2009/07/28(火) 18:44:44
RGB 白黒 変換でググる
757デフォルトの名無しさん:2009/07/28(火) 18:44:55
>>752
void __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;
}
758デフォルトの名無しさん:2009/07/29(水) 10:24:55
>>757
24ビットカラーを白黒化する計算は知っているのでパレットを使わずにやりたかったんだが
普通にPixelsから読んだ色をそのまま白黒化してまたPixelsに入れればできました。
ソースありがとう
759デフォルトの名無しさん:2009/07/29(水) 16:22:24
>24ビットカラーを白黒化する計算
気になるけどたぶん、単純にR、G、Bを足して3で割って平均値をTColor(RGB(R,B,G))とかしていれてるんでしょ?
760デフォルトの名無しさん:2009/07/29(水) 16:27:07
>>759
めんどくせー奴だなしかし
白黒化計算でぐぐれ馬鹿
二度とくだらねーレスすんじゃねーぞゴミが
761デフォルトの名無しさん:2009/07/31(金) 10:30:47
指定したMDI子フォームをアクティブにする方法を教えてください
762デフォルトの名無しさん:2009/07/31(金) 11:03:54
>>761
WM_MDIACTIVATE
763デフォルトの名無しさん:2009/07/31(金) 11:38:30
>>762
フォームのメソッドとかはないですか?
764デフォルトの名無しさん:2009/07/31(金) 21:27:21
Altキーを押しながらエンターキーを押すと、
ビープ音が鳴るが、これを止める方法は無いのかな?
エクセルでセル内で改行を入れるとき、
Alt+Enterで行うが、これに似た処理を作成したいので。
765デフォルトの名無しさん:2009/07/31(金) 23:57:06
>763
単にその子フォーム.Show;じゃだめ?
766デフォルトの名無しさん:2009/08/01(土) 01:53:57
若干使い方が変わるかもしれないけどこういうのがあった。

> Previous メソッドは,フォームシーケンス内の前の MDI の子フォームをアクティブフォームにします。

> void __fastcall Previous(void);
767デフォルトの名無しさん:2009/08/01(土) 07:41:19
C++Builder4を使ってますが、外部プログラム(例えばメモ帳)を起動させるにはどうすればいいですか?
768デフォルトの名無しさん:2009/08/01(土) 10:15:30
ShellExecute
769デフォルトの名無しさん:2009/08/01(土) 10:45:58
>>767
ShellExecuteEx
770デフォルトの名無しさん:2009/08/01(土) 12:40:36
System
771デフォルトの名無しさん:2009/08/01(土) 14:00:53
後ろにExつけて改良バージョンを示すのはどこの風習?
MS?

俺Ex
772デフォルトの名無しさん:2009/08/01(土) 14:02:20
OSを作った会社とは別の会社がプログラム開発のソフト作れるってすごいな。
linuxのようにソースを公開してないOSなのにこんな製品を作れるとは。
773デフォルトの名無しさん:2009/08/01(土) 20:45:26
未公開APIをM$に金払って教えてもらってるんかね
774デフォルトの名無しさん:2009/08/02(日) 01:59:45
なにを言ってるんだろうこの人たちは・・・
775デフォルトの名無しさん:2009/08/02(日) 20:45:05
ShellExecuteはコンパイルエラー出ると思ったら、shellapi.hが必要なのね
ヘルプに書いてないからわかんないよ

どうもありがとうございました
776デフォルトの名無しさん:2009/08/03(月) 10:26:58
>>765
うはwwwwwww
灯台アレだったwww
Showでサックリおkだった
>>766
それやNextは知ってたんですが、アクティブにするだけだから
メソッド一発でできそうな気がしてたんですねよ
777デフォルトの名無しさん:2009/08/03(月) 13:45:56
BCB5でいいリファクタリングツール?みたいな物ありますか?
どの関数がどれくらい呼び出されているかを知りたいのですが。
778デフォルトの名無しさん:2009/08/03(月) 19:54:36
こんなの?
ttp://www.lw-tech.com/
779デフォルトの名無しさん: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

簡単かもしれませんが、教えてください。
780デフォルトの名無しさん:2009/08/04(火) 13:11:24
779です。

//===================================
//ファイルから暗号化画像ファイルを読み込む
//===================================
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->

}
781777:2009/08/04(火) 19:53:53
>>778
やっぱり有料か英語のものしかなさそうなんですね。
ありがとう。
782デフォルトの名無しさん:2009/08/04(火) 23:23:34
>>779
復号時にメモリストリームに書き込んで、そのメモリストリームから
JPEG読み込めばいいんじゃない?
783デフォルトの名無しさん: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;

}
784デフォルトの名無しさん:2009/08/05(水) 22:18:21
追加努力。やはりわかりません。
bmp->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;
785デフォルトの名無しさん:2009/08/06(木) 00:32:17
>>784
メモリストリームに書き込んだ後、Positionを先頭に戻さないとダメなんじゃない?
786デフォルトの名無しさん:2009/08/06(木) 06:45:55
うまくいきました。
基礎的なことを教えていただき、
ありがとうございました。
787デフォルトの名無しさん:2009/08/06(木) 18:23:40
2chにUnicodeを投稿するプログラムを作っています

C++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(";");
}
788デフォルトの名無しさん:2009/08/06(木) 18:42:28
スレ乱立ソフト?
789デフォルトの名無しさん:2009/08/06(木) 18:48:50
いえ違います
他の国の文字を&#xxxxx;という形に一括変換するソフトを
作っているのですが・・・
790デフォルトの名無しさん:2009/08/08(土) 12:33:51
BCB6しか持ってないからUnicodeString≒WideStringとして考えるけど
2バイトキャラなのでchar形に変換するのまずい。
あと oparator [] が使えると思うのでシンプルにこれでどうだろう?

s = ustr.SubString(i, 2);
Edit2->Text += AnsiString().sprintf("\&#%I16u%I16u;", s[0], s[1]);
791デフォルトの名無しさん:2009/08/08(土) 17:32:54
>>790
レスありがとうございます
C++Builder2009なのでUnicodeStringを持っているので
それで何とかならないかと思っていたのですが・・・

おっしゃる通りAnsiString一本でやろうとしたらERangeError
が出ます
792デフォルトの名無しさん:2009/08/08(土) 18:04:29
>>787
>+ AnsiString().printf("%u", static_cast<unsigned>(((char*)s.data())[2])) + " "
>+ AnsiString().printf("%u", static_cast<unsigned>(((char*)s.data())[1])) + " "

ここのインデックス 0、1 じゃねーの?
793デフォルトの名無しさん:2009/08/08(土) 18:47:40
>>787
UnicodeString s = …
UnicodeString u;
for (int i = 1; i <= s.Length(); ++i)
{
u += "&#" + IntToStr(static_cast<int>(s[i])) + ";";
}
Edit1->Text = u;
794デフォルトの名無しさん:2009/08/09(日) 11:31:54
>>793
うまく行きました。ありがとうございました。

>>792
そうですね。でも0、1にしてもだめなんです。
795デフォルトの名無しさん:2009/08/09(日) 20:41:33
Visual Studio .NET 2003とC++Builder 5の双方を、同じ電子計算機上入れると、
双方をIDEデバッグ実行を両立できないな。
他人はその辺どうしてんだ。
796デフォルトの名無しさん:2009/08/09(日) 20:50:30
>>795
日本語でOK
俺はDelphi2009、C++Builder2009とVS.NET2008を
同じマシンに入れているが何の問題も無いぞ
797デフォルトの名無しさん:2009/08/09(日) 23:30:34
>795
両立は無理。レジストリファイルでも使って随時切り替えるしかない。
まあVSにしておく方がお勧めですわな
798デフォルトの名無しさん:2009/08/10(月) 23:40:10
いまだにBCB6使ってんだが、今ネイティブ開発の主流ってなに?VS?
というかネイティブ自体が主流じゃないの…か?
799デフォルトの名無しさん:2009/08/10(月) 23:46:43
主流はVC++でMFCかATLだろ。生産性は絶望的だけどな。あとはDelphiとC++Builderだが、
マイナーなのは否定しない。生産性は高いけどな。他の選択肢は…もうなくなってしまった。
800デフォルトの名無しさん:2009/08/10(月) 23:46:48
>>798
分野・業種にもよるのでそこまで条件書かないと答えようがないんじゃないか
801デフォルトの名無しさん:2009/08/10(月) 23:49:00
生産性の高さ*だけ*を言うならJavaかC#なんだが
どちらもネイティブではないしなあ

まあC#はngenを通せば見かけ上ネイティブにはなるが
802デフォルトの名無しさん:2009/08/11(火) 08:46:36
C++ Builderで困る事って無いお。
803デフォルトの名無しさん:2009/08/11(火) 09:20:44
BCB6にWin7だとリファレンスががががが
ばあさんや、Win7用のWinHlp32.exeはまだかいな
804デフォルトの名無しさん:2009/08/11(火) 18:29:31
ユーザが編集可能な
Wiki Helpみたいなのがあればイイのになぁ。
そうすれば、腐ったヘルプに悩む必要も無くなるのに。
基本的には、VCLのリファレンス形式で
バージョンによる違いと、豊富な例を載せてくれれば。
805デフォルトの名無しさん:2009/08/12(水) 19:27:53
MLなんで衰退しちゃったんだおー><
806デフォルトの名無しさん:2009/08/13(木) 09:52:36
スクロールバーのスクロールするあの四角の長さを変える方法を教えてください
807デフォルトの名無しさん:2009/08/13(木) 12:16:12
>>806
コントロールのWidth(もしくはHight)プロパティと ScrollBer->Max に依存する
808デフォルトの名無しさん:2009/08/13(木) 15:03:07
そんな下らない事はききたくないぼけ
pageでできたこの役立たず
809デフォルトの名無しさん:2009/08/15(土) 02:14:29
TListViewのKeyDownイベントでスペースキーが押された際選択されているアイテムのチェックを反転する処理を

for( 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です。
スペースを使用するのを変えずに選択されたアイテムが問題なく反転する方法はないでしょうか?
810デフォルトの名無しさん:2009/08/15(土) 05:27:03
>>809
ItemFocusedで現在フォーカスが当たっているアイテムが分かる
811デフォルトの名無しさん:2009/08/15(土) 22:36:02
基本的なことで恐縮ですが
Builderでクラスを作成すると、constructorは自動作成されますけど
destructorは作成されません。
これって、VCLを継承したクラスは、destructorは使わない方がイイということなんでしょうか。
それとも、別に深い意味はないんでしょうか。
812デフォルトの名無しさん:2009/08/15(土) 22:54:34
>>811
virtual なんで。
下位クラスの destructor が呼ばれていて、そのクラスに開放すべきデータがないなら不要です。
自分で new したものについては自動で解放されないので 明示的に destructor を作成です。
813デフォルトの名無しさん:2009/08/15(土) 22:56:28
あー>>812はVCLを継承したクラスね
814811:2009/08/15(土) 23:16:23
さんくすです。
後始末用に自前でdestructorを作っていい訳ですね。
815812:2009/08/15(土) 23:27:17
>>812
>下位クラスの destructor が呼ばれていて
ごめん、上位クラス(継承元)の間違い。
816デフォルトの名無しさん:2009/08/15(土) 23:55:26
□■□■□■□■□■□■□■□■
現在、複数の韓国IPより2chが攻撃を受けています。
その為、下記スレにて作戦本部を設営しています。
数多くの人たちの力が必要です。
今こそ2chの力を結集しましょう!!

http://c.2ch.net/test/-/news4vip/1250344557/

■現状
現在第一波攻撃終了(挨拶程度)
十分な手応えを得る

第二波予定
8月16日に予定本部にて逐次確認を!
(コミケ組み帰還後の22時を目処に本作戦を実行する)

※予備日 8月17日夜を予定
□■□■□■□■□■□■□■□■
817デフォルトの名無しさん:2009/08/16(日) 20:07:36
>>810
ありがとうございました。
無事できました。
818デフォルトの名無しさん:2009/08/16(日) 21:46:50
イメージに張り付けたJpegを下記の方法で印刷したところ、
大変小さくいんさつされ、しかもドットがぼやけて印刷(PDF)されます。

以下のソースで注意するところがあれば、
教えてください。


void __fastcall TForm2::Button1Click(TObject *Sender)
{
if(PrintDialog1->Execute()){
Printer()->BeginDoc();
Printer()->Canvas->Draw(0, 0, Image1->Picture->Graphic);
Printer()->EndDoc();
}

}
819デフォルトの名無しさん:2009/08/16(日) 22:59:57
画面は72dpi位だが、プリンターは最低でも300dpiはあるだろう。
820デフォルトの名無しさん:2009/08/16(日) 23:25:17
つまり、A4に出力したければ、imageのdpiという値をA4サイズ位に
大きく(imageのWidthとHeight)する必要がある。

という風にレスを受けて思いました。
つまり、印刷時に、ImageのWidthとHeightを一時的に
大きくして、
Printer()->Canvas->Draw
する。と理解しました。

Image1->Width=1000;
Image1->Height=1000;

やりましたが、だめでした。
821デフォルトの名無しさん:2009/08/17(月) 00:42:16
FAQだけど、Image-Graphic->Widthみたいにしないと
もう少し基本を理解した方が良い
822デフォルトの名無しさん:2009/08/17(月) 00:46:37
こぴぺみすったけど、わかるよね
Imageでなく、内包しているPictureのサイズを変更しないと駄目
823デフォルトの名無しさん:2009/08/17(月) 00:51:18
精度求めないならStretchDrawでいいわけだし
824デフォルトの名無しさん:2009/08/17(月) 08:26:08
内部のPictureサイズかなとおもっていましたが、
とりあえず、Imageのサイズを変更した結果です。

なお、読み込みjpegをwinフォトギャラリで印刷(pdf)したところ、
普通に印刷できます。

このことから、Imageかなと思ったしだいです。

つまり、Imageに読み込んだ時、
Pictureのサイズが変更されたとなります。
なお、読み込みには、プロパティーのpictureから
静的に読み込んでいます。
825デフォルトの名無しさん:2009/08/17(月) 21:18:40
どうしようもない人だな。
826デフォルトの名無しさん:2009/08/18(火) 17:08:37
TChartを印刷する方法を教えてください
827デフォルトの名無しさん:2009/08/18(火) 17:13:09
あ、すみません言い忘れですが
Printer->Canvasの指定したRectに描画したいです。
828デフォルトの名無しさん:2009/08/19(水) 11:24:21
質問です(BCB6):
プロジェクトコードっていうか、WinMainの入った.cppってありますよね?
そのWinMain部分をifdefでカットして、複数の物を使うって、ありでしょうか?
今そうやったところ、リンクが遅いように見えるのですが、禁じてなのかな?
829デフォルトの名無しさん:2009/08/19(水) 11:39:19
TChartの折れ線グラフで折れ線グラフを2つ使用して
1つは普通にグラフを書いてもう1つは指定した範囲に四角書きたくて
AddXYで四角になるようにXとYの値を入れても四角になってくれません
TChartって戻る線は書けないんですか?
830デフォルトの名無しさん:2009/08/19(水) 14:32:59
TChartのPointerでポイントとポイントを線で結ぶにはどうしたらいいですか?
831デフォルトの名無しさん:2009/08/19(水) 18:52:53
>828
IDEが作ったコードは
プロジェクトの設定等を変えると自動的に変更される可能性がある。
そのときに余計なコードがあると元に戻らなくなる可能性がある。
それでも泣かないなら、やってもいい。

リンクが遅いのは気のせい。
832823:2009/08/19(水) 19:58:13


とりあえず、やってみまつ
833デフォルトの名無しさん:2009/08/19(水) 19:58:55

ゴメン、823じゃなくて、828です。
834デフォルトの名無しさん:2009/08/23(日) 14:37:04
Delphiに感染するウィルスってC++Builderにも感染する?
フォルダ調べると sysconst.dcu があるんだけど
835デフォルトの名無しさん:2009/08/24(月) 10:21:55
それ知りたいおね。

C++ BuilderってDelphiの上にC++インターフェース被せただけだし。
836デフォルトの名無しさん:2009/08/24(月) 15:32:12
TOpenDialogで開いた時に日時の新しいもの順に表示させておく方法を教えてください
837デフォルトの名無しさん:2009/08/24(月) 17:19:52
興味本位にbcb5でboost1.39をコンパイルしてみましたが
うまくいきませんでした。(正規表現を使ってみたかった)
無いなら無いで問題ないのですが、みなさんboostは使ってますか?
838デフォルトの名無しさん:2009/08/24(月) 17:24:17
>>837
bcbboostってのがあるけどさすがに5でビルドは無理そう
ttp://bcbboost.sourceforge.net/
839デフォルトの名無しさん:2009/08/24(月) 19:32:40
BCB6でboostを使ってるんですが、
プリコンパイルヘッダに入らないんで毎回コンパイルに凄い時間が掛かる。
何とかビルド時間短縮する方法ないんかね?
840デフォルトの名無しさん:2009/08/24(月) 20:18:10
#pragma hdrstop加えてもだめ?
841デフォルトの名無しさん:2009/08/24(月) 20:25:53
>>836
TWinControlのWndProc DefWndProcとか使ってWM_CREATEをフックして、FolderView(SysListView32)を操作するしかないんじゃないかな
842デフォルトの名無しさん:2009/08/24(月) 20:52:19
>>837
国産鬼車が使える
Rubyも使ってるらしい実績
843デフォルトの名無しさん:2009/08/24(月) 20:59:47
ヘッダ内に

 const int hoge=0;

のような定数宣言があるとPCHが作れないんじゃなかったか?
たぶんhdrstopでは意味がない。


844デフォルトの名無しさん:2009/08/24(月) 21:00:53
Delphi用のTRegExprを使うという邪道もBCBなら許されてる
845デフォルトの名無しさん:2009/08/24(月) 22:57:07
設定でプリコンパイルのパスを削除すると次から自動で規定の場所に作ってくれるようになるけどそれとは関係ないかな
846デフォルトの名無しさん:2009/08/25(火) 01:16:28
>>843
そうなんだ
ヘッダだけインクルードして一度コンパイル済みのlibを
#pragma link "***.lib"
とかやってもだめなの?
847デフォルトの名無しさん:2009/08/25(火) 01:18:42
libじゃないobjだ
848デフォルトの名無しさん:2009/08/25(火) 12:49:33
>>837
正規表現だけでいいならpcre使うとか。
http://qux.haun.org/note0309.html
849デフォルトの名無しさん:2009/08/25(火) 14:41:18
なぜ鬼車使わずにマイナーなやつ紹介するのかわからん。
国産だから日本語に向いている事は間違いない。 
利用実績が多く信頼ある、
850デフォルトの名無しさん:2009/08/25(火) 14:42:55
>>838
専用のがあるんですね。参考にしてみます。
>>842
Rubyで使われてるんですか。
やっぱり触っとくべきか・・
>>844
一応標準に入ってたTRegexpの存在は知っていたのですが
ヘルプが見つからなかったので、本格的に使うなら資料の多
そうなboostの方がいいのかなと考えていました。
>>848
正規表現だけではなく他の気になる機能も触る、もしくは参考
にしてみたかった次第です。
(とんでもなく勉強になると聞いたので)
PCREの存在は知らなかったので参考にしてみます。

みなさん、ありがとうございました。




851デフォルトの名無しさん:2009/08/25(火) 14:45:59
>>842>>849
鬼車って正規表現ライブラリだったんですね。
失礼しました。
こちらも参考にしてみます。ありがとう。
852デフォルトの名無しさん:2009/08/25(火) 14:51:08
>>850
JRubyには入ってるらしいが、Rubyに入ってるという記事は見つからない。
Rubyと鬼車の作者は仲が悪いらしい。今は知らない。



JRuby 1.1 RC版登場 - 鬼車取り込みと143の問題修正
http://journal.mycom.co.jp/news/2008/01/09/029/index.html
853デフォルトの名無しさん:2009/08/25(火) 14:56:10
>>851
鬼車は導入が簡単。 BCBでも動作する。 
boostの正規表現は、最新版BCBでも動作しないと思う。 
必要な部品の一部がコンパイルとおらないため。
854デフォルトの名無しさん:2009/08/25(火) 19:36:08
>>853
cb2009で使ってるよ。
855デフォルトの名無しさん:2009/08/26(水) 01:32:56
正規表現で( )に挟まれている部分を抽出しようと、
\(.*?\)という検索したら期待の動作しなくて困った。
\\(.*?\\)が正解なんだな。 これは気を付けないと間違えます。
数時間悩んだ。 正規表現の\と、C言語の\が同時に出てくるケース。
856デフォルトの名無しさん:2009/08/26(水) 10:26:08
TChartで動的にシリーズを追加する方法を教えてください
857デフォルトの名無しさん:2009/08/27(木) 01:46:43
失礼します。
BCB6で下記URLの通りに入力してみましたが、プレビュー画面に何も表示されません。
何が問題なのでしょうか・・・?
Edit1->Textには当然文字を入れてあります。
http://www2.ttcn.ne.jp/tkky/Tips/QuickRep/quickrep1.htm
858デフォルトの名無しさん:2009/08/27(木) 16:09:55
>>849
他がマイナーと言いながらマイナーな奴紹介するおまいが好きだw
859デフォルトの名無しさん:2009/08/27(木) 16:26:40
うるせー雑魚
860デフォルトの名無しさん:2009/08/27(木) 20:36:34
>857
最低一つバンドが必要ですな。ディデールバンドとか。
その上にTQRLabelを配置すると印刷されるようになる。
861デフォルトの名無しさん:2009/08/27(木) 21:37:35
>>860
おお、出来ました!
QuickRepを貼りつけただけじゃダメなんですね。
ありがとうございます!!
862デフォルトの名無しさん:2009/08/28(金) 13:24:40
BCB5を使用しています。

極まれにデストラクタが呼ばれなくなることがあるんですが
そういう経験ありませんか?
何かこうすれば起きるみたいなことがあれば教えて頂きたいです。

自分の場合
・三項演算子を使用している
・参照、ポインタではないクラスを返す関数で直接メンバを使う
 Func().Func(); とか(もしかしてこれ自体がまずい?)
・テンプレートを使用している
上記が絡むとまれに現象が出ていました。
デストラクタが呼ばれたかは理由がありCodeGuardではなく
intカウンタでやってました。

自分のバグではないかと思っていましたが、クラス自体は変えないで
すこし書き方を変えると直ったりとなかなか再現できずにいます。


863デフォルトの名無しさん:2009/08/29(土) 03:54:27
>>851
boostはバージョンいくつかでボーランドの古いコンパイラーのサポート切ってる。
だからバージョンによっては何してもコンパイル通らない。
864デフォルトの名無しさん:2009/09/01(火) 12:07:14
QuickRepでDBなしで表を印刷したいのですが
StringBandを2つ追加し、そこにLabelは追加して
項目名とデータを書くところまではいいのですが線が書けません
枠線は設定できるのですが、各々のセルを区切るための縦線とかは
どうやってかけばいいですか?
LabelのFrameだと左右中央配置はできても縦の中央配置ができないっていう
とんでもないバグがあるし・・・
Shapeを1つ1つ配置するしかないですか?
865デフォルトの名無しさん:2009/09/02(水) 23:51:39
正直、面倒だね。
ClientDataSetでも使って出力した方が手っ取り早い。
866デフォルトの名無しさん:2009/09/07(月) 17:42:06
TChartでクリック位置のY軸値とX軸値を取得する方法を教えてください
867デフォルトの名無しさん:2009/09/08(火) 06:54:06
>>864
普通のアプリレベルならTPanelでいいんだけどな
868デフォルトの名無しさん:2009/09/09(水) 15:56:01
だれか>>866を教えてください><
869デフォルトの名無しさん:2009/09/09(水) 16:58:41
MouseDown
870デフォルトの名無しさん:2009/09/09(水) 17:07:55
だれか>>866を教えてください><
871デフォルトの名無しさん:2009/09/09(水) 17:40:03
だれか>>866を教えてください><
872デフォルトの名無しさん:2009/09/10(木) 15:55:26
MemCheckについて教えていただきたいのですが、
BCC5でも使用できるでしょうか?

ttp://www.yks.ne.jp/~hori/MemCheck.html

ためしに組み込んでみましたが、開始ログ以外にログがうまくでません。

デルファイでしか無理でしょうか?
873デフォルトの名無しさん:2009/09/10(木) 17:27:24
だれか>>866を教えてください><
874デフォルトの名無しさん:2009/09/10(木) 21:26:21
>>868
>>870
>>871

>>869で答えは出ている
875デフォルトの名無しさん:2009/09/10(木) 21:28:44
グラフ上でのX軸、Y軸ってことか?
876デフォルトの名無しさん:2009/09/10(木) 21:56:51
ハァ?
877デフォルトの名無しさん:2009/09/11(金) 10:38:37
だれか>>866を教えてください><
878デフォルトの名無しさん:2009/09/11(金) 12:04:46
でけた・・・
MouseDown とか馬鹿みたいなレスしかできない奴じゃ知らなかったんだろうな
879デフォルトの名無しさん:2009/09/11(金) 14:13:38
まーた基地外が湧いてるな
880デフォルトの名無しさん:2009/09/11(金) 14:45:57
だれか>>866が出した答えを教えてください><
881デフォルトの名無しさん:2009/09/11(金) 14:47:51
>>869>>879 ですねわかります。
882デフォルトの名無しさん:2009/09/11(金) 17:28:29
わかりません。あれはなんですか
883デフォルトの名無しさん:2009/09/11(金) 17:33:09
それです
884デフォルトの名無しさん:2009/09/11(金) 19:01:50
へんなおじさんです
885デフォルトの名無しさん:2009/09/12(土) 11:14:31
バカ専用の超初心者スレがだいぶ前にはあったよな。
あのスレが無くなってココにクレクレ小僧が来るようになってしまった訳か。
886デフォルトの名無しさん:2009/09/14(月) 14:22:57
>>885みたいなクズも来るようになっちゃったけどな
887デフォルトの名無しさん:2009/09/14(月) 16:07:57
2009Pro を使ってるんだけど、ソースを右クリックで出る、「別の編集ウィンドウで開く」で、
同じファイルを2つのウィンドウで開けることもあれば、ドックが外れるだけのこともある。
これってどういう法則があるの?イラツク。
888デフォルトの名無しさん:2009/09/14(月) 16:55:28
>856
Lineを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;
}
889デフォルトの名無しさん:2009/09/15(火) 11:48:10
>866
クリックではないけれど
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;

}
890デフォルトの名無しさん:2009/09/15(火) 12:58:11
えっ
891デフォルトの名無しさん:2009/09/15(火) 13:59:40
それ座標でないの?ww
892デフォルトの名無しさん:2009/09/15(火) 14:29:22
フォームのイベントが多すぎてコードが読みにくくなっています。

関連イベントに分類してユニットを分けて書くことはできるのでしょうか?
893デフォルトの名無しさん:2009/09/15(火) 14:38:12
できる
894デフォルトの名無しさん:2009/09/15(火) 14:56:15
ま、そのー・・・
やりかたっちゅーか・・・


おせて。。

実務じゃなく、趣味でやってるだけなんですが、
実務だったら、当然分離してやってるもんなんですか?
895デフォルトの名無しさん:2009/09/15(火) 15:04:19
できますよ
896デフォルトの名無しさん:2009/09/15(火) 15:19:28
にゃにゃん
897デフォルトの名無しさん:2009/09/15(火) 15:39:11
またエロか
898デフォルトの名無しさん:2009/09/15(火) 22:07:06
>892
ファイル->新規作成->ユニット
新たにつくったユニットに元のユニットのヘッダーをインクルード(ファイルー>ユニットを使う)
899デフォルトの名無しさん:2009/09/16(水) 13:00:03
でも分割するとデザイナやオブジェクトインスペクタからイベントハンドラのコードに
ジャンプできなくなるよね
900デフォルトの名無しさん:2009/09/16(水) 13:18:49
普通は処理側をクラス化して、
イベントハンドラ内を数行に短くする。
901デフォルトの名無しさん:2009/09/16(水) 14:29:18
TSpeedButtonをいくつか配置してGroupIndexを全て1にして
どれか押されたら凹んでるのが自動で凸になるようにしてるのですが
GroupBox内にあるTSpeedButtonはGroupIndexを1にしてもグループ外の
ボタンと同期してくれません。
そこでGroupBoxから出してGroupBoxの上に配置しようとしたら
前面表示にしてもGroupBoxの下に隠れてしまいます。
別グループのTSpeedButtonも同期させる方法を教えてください。。
902デフォルトの名無しさん:2009/09/17(木) 01:51:53
>>901
ヒント、Bevel
903デフォルトの名無しさん:2009/09/17(木) 10:09:08
>>902
知らないならレスしないで下さいウザいだけです。
904デフォルトの名無しさん:2009/09/17(木) 11:37:01
>>903
ヒント:ヘルプ読め、カス。
905デフォルトの名無しさん:2009/09/17(木) 11:58:54
>>904
日本語を理解してからレスして下さい。
906デフォルトの名無しさん:2009/09/17(木) 15:17:48
Program Files\Borland\CBuilder5\Bin直下にあるborlndmm.dllより、
EXEファイルがが生成されるフォルダにある同名のDLLを優先して呼び出す設定方法はあるでしょうか?
(プログラム上ではなく、開発環境の設定で)

Binフォルダのファイルを入れ替えるのが、一番簡単なのはわかっているのですが、
できればBinフォルダのファイルは入れ替えずに使用したいです。

お手数ですが、よろしくお願い致します。
907デフォルトの名無しさん:2009/09/17(木) 15:26:42
ん?
普通に最初はexeがあるフォルダを参照するんじゃね?
その後にパス参照じゃなかったっけ?
908デフォルトの名無しさん:2009/09/17(木) 15:37:54
>>907
私もそのように思っていたのですが、Binのファイルを削除すると正常に動作するので、
私の開発環境の設定では、おそらくBinフォルダを優先して参照しています。
909デフォルトの名無しさん:2009/09/17(木) 16:31:56
プロジェクトの設定でBinが優先されてるんじゃ?
910デフォルトの名無しさん:2009/09/17(木) 17:39:29
>>909
プロジェクトの設定の、どこを修正すればいいでしょうか?
プロジェクトオプションの、ディレクトリ条件で、
EXEフォルダを指し示すようにしてみたのですが、うまくいきませんでした。
911デフォルトの名無しさん:2009/09/17(木) 17:46:51
>>910
試していないけど、"APP名.exe.local" というダミーファイルを、EXEのフォルダに置いてみたらどうだろう?
912デフォルトの名無しさん:2009/09/17(木) 17:47:33
>>909
早く教えて
知ったかぶり?w
913デフォルトの名無しさん:2009/09/17(木) 20:04:32
ふつうに考えれば、Pathを追ってるだけじゃね?
914デフォルトの名無しさん:2009/09/17(木) 21:46:36
DLL検索順のレジストリは確認したのか?
915デフォルトの名無しさん:2009/09/18(金) 09:43:55
きえろぶっとばされんうちにな
916デフォルトの名無しさん:2009/09/18(金) 16:54:57
TChartのTChartShapeで質問ですが
これの位置大きさはX0,X1,Y0Y1に軸値を入れて設定しますが
これをリボンのポイントみたいにピクセルで3x3みたいに指定する方法を教えて下さい。
917デフォルトの名無しさん:2009/09/18(金) 17:30:49
なんでBCBとかDelphiの初心者ユーザはバカが多いんだ。。。
質問のレベルがVBユーザー並みだな
918デフォルトの名無しさん:2009/09/18(金) 18:16:34
>916
Use 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
919デフォルトの名無しさん:2009/09/18(金) 19:24:46
>>917
知らないならレスしない方がいいよ
920デフォルトの名無しさん:2009/09/18(金) 23:19:38
ていうかレスしない方がいいよ、経過報告も無いしね
921デフォルトの名無しさん:2009/09/22(火) 09:10:24
>889
少し直して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];
}
}
922デフォルトの名無しさん:2009/09/24(木) 07:54:46
AnsiStringでファイル名を入れてファイルサイズを取得する関数はありますか?
有りそうなんだけど無いのかなあ?
APIでやらなきゃだめかなあ?
923デフォルトの名無しさん:2009/09/24(木) 11:12:46
>>918
できましたありがとうございます

ちなみに、30,30の位置に10,10で○を書かせると○の左上が30,30になるのですが
これを○の中心にするにはどうしたらいいのでしょうか?
924デフォルトの名無しさん:2009/09/24(木) 11:17:27
25,25にすればいいんじゃね
その程度の計算ができないわけじゃあるまい
925デフォルトの名無しさん:2009/09/24(木) 11:38:59
>>924
まず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 );

座標をずらして表示位置を修正することは可能ですが
それをやるとスケール変更した場合(アップとか)場合におもいっきりずれた位置になります
スケール変更時に毎回計算し直して位置修正をせずにできるような方法が無いと不便なので
指定位置がシェイプの中心になるようなプロパティーありませんか?
必死にヘルプを見ているのですがみつからなくて・・・
926デフォルトの名無しさん:2009/09/25(金) 00:08:03
Each shape has two co-ordinates associated with it, top left and bottom right of the invisible rectangle that encloses the shape.
X0, Y0 , X1, Y1は必須なので924が正解じゃないかな
http://www.steema.com/のForumにでも 質問してみてはいかがでしょうか
927デフォルトの名無しさん:2009/09/25(金) 00:22:39
>922
TSearchRecでFindFirst 関数
928デフォルトの名無しさん:2009/09/25(金) 00:35:47
FindCloseを忘れずに。
929デフォルトの名無しさん:2009/09/25(金) 16:00:00
ひとつ巨大なソースがあり、こいつをincludeすると
F1008メモリ不足というコンパイルエラーになります
回避方法をお教え下さい
930デフォルトの名無しさん:2009/09/25(金) 20:58:41
そりゃ分割することでしょ。QCの40875、71343、71665がInternal Erroe F1008だね。
931本田:2009/09/26(土) 17:51:27
Object Windows Library
Inprise/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.
932本田:2009/09/27(日) 12:37:46
>>931
~ OWLNext project home ~
http://owlnext.sourceforge.net/
~ Setting up C++ Builder 2010 to work with OWLNext ~
http://owlnext.sourceforge.net/setupbds2010.html
933デフォルトの名無しさん:2009/09/27(日) 15:59:31
質問です。
C++Builder3で作成されたアプリケーションが
「・・・のアドレス何々でアドレス・・・に対する読み込み違反がおきました」
と表示されます。
このアプリは別のアプリケーションからのソケット通信で受信したときに発生しているようです。
客先に納入したアプリでこのようなエラーが突然発生したとの連絡があったようなのですが、
自分も含めて先輩も、このメッセージ表示だけでは分からないと匙を投げてます。
なんとかこの異常が発生しないようにしたいのですが、通信の受信後もいろんな
関数を呼び出しており、どこで発生しているか特定できません。
アドレス・・・というので、デバッグできるものでしょうか?
詳しい方、デバッグの方法を教えていただけたら嬉しいです。
よろしくお願いします。
934デフォルトの名無しさん:2009/09/27(日) 16:57:10
935デフォルトの名無しさん:2009/09/29(火) 01:08:34
質問です
TCheckListBoxを仮想モードにすると
チェックBOXをクリックしてもチェックがONになりません
このままでは使い物にならないんですが、何か回避方法ありますか?
936デフォルトの名無しさん:2009/09/29(火) 01:38:42
OnClickCheckイベントかなんかで自分でCheckedを反転する必要があるような希ガス。
937デフォルトの名無しさん:2009/09/29(火) 01:51:15
へえ
938デフォルトの名無しさん:2009/09/29(火) 11:18:42
MDI子フォームのタイトルバーを消す方法を教えて
939デフォルトの名無しさん:2009/09/29(火) 12:41:40
>>933
俺はC++Builderを使ってないが、それはWindowsの汎用エラーだろ
セグメンテーション違反でぐぐれ
そのメッセージだけじゃどうしようもないし、そういうときのためのtry~catch~finallyだろ
メモリアドレスからのデバッグもできるだろうけど、まずソースを洗ったり、エラーを再現した方が早いだろ

先輩もどうしたらいいかわからんとは、レベルの低い会社なんだな
俺が勤めてた超零細企業じゃとてもやっていけないぞ
940デフォルトの名無しさん:2009/09/29(火) 14:19:30
>>939
C++Builderを使ってないならレスしないで下さい。ウザいだけです。
941デフォルトの名無しさん:2009/09/29(火) 14:28:56

き え ろ ぶ っ と ば さ れ ん う ち に な
942デフォルトの名無しさん:2009/09/29(火) 18:46:23
TStringGridでInvalidateRowを使おうとしたらアクセスできないってほざかれるんだけど
これ使うにはどうしたらいいですか
943デフォルトの名無しさん:2009/09/29(火) 18:51:13
ようするにTStringGridで指定セルや行にInvalidateをしたいんですよ
普通にInvalidateすると全セルやっちゃうのでグリッドがチラつくから
指定した一部だけやりたいですが、他にいい方法あったらおしえてくらだい
944939:2009/09/29(火) 18:54:08
>>940-941
フィッシングでしたか
食いついてすいませんでした
しかし、あなたのフィッシングの腕前は太公望に遠く及ばないようですね
945デフォルトの名無しさん:2009/09/30(水) 10:34:19
MDIフォームで子フォームがMDIフォームからはみでても
MDIフォームのスクロールバーを出さないようにするにはどうしたらいいですか?
HorzScrollBarとかのVisibleをfalseにしても出てしまいます
946デフォルトの名無しさん:2009/09/30(水) 12:02:41
MDI親フォームのClientHandleがMDIクライアント領域のウィンドウハンドルなので、こいつのスタイルから
GetWindowLong/SetWindowLongでスクロールバーを外せばいいのではなかろうか。
947デフォルトの名無しさん:2009/10/01(木) 10:49:07
>>942
TCustomGrid(StringGrid1).InvalidateRow
948デフォルトの名無しさん:2009/10/01(木) 11:06:09
>>947
それでもまだ抽象クラスなんちゃらってエラーでちゃいますぅ
949デフォルトの名無しさん:2009/10/01(木) 11:07:37
TCustomGrid *cg = dynamic_cast<TCustomGrid *>(StringGrid);
cg->InvalidateRow( 0 );
とかやってみたけどやっぱりアクセスできないってエラーがでます
950デフォルトの名無しさん:2009/10/01(木) 11:23:32
TStringGrid1.Invalidate()
951デフォルトの名無しさん:2009/10/01(木) 11:32:09
わかる人いませんか?
952デフォルトの名無しさん:2009/10/01(木) 11:50:06
だからそんなメソッドねえって
953デフォルトの名無しさん:2009/10/01(木) 12:19:23
>>949
InvalidateRowはpublic関数じゃないのでクラス外からのアクセスは不可。

TStringGridを継承する新しいクラスを作成する。
//---------------------------------------------------------------------------
class THogeGrid : public TStringGrid
{
public:
   __fastcall THogeGrid(TComponent* Owner):TStringGrid(Owner){};
   void __fastcall InvalidateRow(int ARow){TStringGrid::InvalidateRow(ARow);};
};
//---------------------------------------------------------------------------
ただコンポーネントとして追加しない場合、コンポーネントの作成はユーザが行う必要があるのと
オブジェクトインスペクタが使えないので、プロパティ設定は初期化コードの中で行う。

これで、THogeGrid::InvalidateRowを外部から操作できる。
954デフォルトの名無しさん:2009/10/01(木) 12:33:58
単純な派生なら、コンポ登録しないでも派生元置いて、そのオブジェクトインスペクタ設定を反映させる方法もある。
955デフォルトの名無しさん:2009/10/01(木) 13:42:27
ああ、Delphiのスレじゃなかったのね。C++じゃ947は無理なのか。
956デフォルトの名無しさん:2009/10/01(木) 13:43:36
DelphiでもC++Builderでも基本同じ
それよりバージョン示せ
Delphi2010ではInvalidateRowが無いぞ
957デフォルトの名無しさん:2009/10/01(木) 13:56:34
>>953-956
C++Builder5 pro

とりあえずやりたい事は指定セル(行)のみの再描画なんですよこれが
普通にInvalidateだとセル全部にいっちゃうもんでチラつくんですよ
APIとかでもいいのないですかね?
958デフォルトの名無しさん:2009/10/01(木) 18:06:02
>>957
OwnerDrawにして、DrawCell関数でコントロールしたら
うまくいかないかなあ?
DefaultDrawingまでやめると大変だけど。
959デフォルトの名無しさん:2009/10/01(木) 18:20:30
>>958
DrawCellsイベントでセルに色つけたりしてるんですが
指定セルのDrawCellsイベントを呼びたいんですよね
960デフォルトの名無しさん:2009/10/01(木) 18:22:34
TChartのChartShapeで設計時はTextに値を入れてFontの色で
正常に表示されているのですが
ChartShapeを動的に作成してTextとFont->Colorを指定しても
フォントの色が黒になってしまいます。(Textの値は正常です)
これ実行時にはどうやってTextの色を指定したらいいですか?
961デフォルトの名無しさん:2009/10/01(木) 18:48:13
DrawCellsイベントって何だ?
DrawCellならそもそもセル指定だしな
962デフォルトの名無しさん:2009/10/01(木) 20:49:13
>959
最終的にはWin32APIのInvalidateRectを呼び出すことになるんだが、
そのために必要な座標計算はTCustomGridのInvalidateRowの内部で
やっていることをコンポーネントの外側で処理しなきゃいけないので面倒。
TCustomGrid.InvalidateRow -> TCustomGrid.InvalidateRect ->
TCustomGrid.GridRectToScreenRectという流れ。でもこの中で一番
スコープが外側なのはTCustomGrid.InvalidateRow(protected)なので、
TStringGridの派生クラスを作る、という>953が正解かも。Delphiなら
別解ありなんだが。
963デフォルトの名無しさん:2009/10/01(木) 20:58:12
つかInvalidateでチラつくんなら自分で原因作ってんだろ
964958:2009/10/01(木) 21:06:22
ちょっと待て、Invalidateなんかするから全部再描画するんじゃない?
元々、更新したCellだけ再描画されるばずだよ。
965デフォルトの名無しさん:2009/10/02(金) 09:02:51
>960 問題なく赤から綠に変わったけど
void __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;
}
966デフォルトの名無しさん:2009/10/02(金) 09:59:00
>>965
同じ事やっても変わらないからおかしいとおもって
色をclRedにしてみたら変わりました。
今まではclWhiteを指定したら白にならずに黒になってたもので・・・
何でこれ白はダメなんだろう・・・
ブラシとかぶったらダメなのかなあ
Transparent=trueにしてるからバックは関係ないかなっておもってるんだけど
とにかくありがとう
967デフォルトの名無しさん:2009/10/02(金) 10:06:20
うーん、Brushの色やスタイルを設計時と同じのにしてもやっぱ白だけはダメだあ
っておもってたらやっぱ設計時も白は表示されてませんでした・・・
これclWhiteはダメだけどclWindowとかなら白になってるなあ
なにこれバグですか?
968デフォルトの名無しさん:2009/10/02(金) 11:30:02
>966,965
MyShapeSeries->SeriesColor=clAqua; //clWhite以外を指定
これで白も表示されるはず。
969デフォルトの名無しさん:2009/10/02(金) 11:43:46
>>968
SeriesColorにclWhite以外を指定してFont->Color=clWhiteにしても黒になっちゃいました
まだ設計時でしかためしてませんが。
色々ありがとうございます
970デフォルトの名無しさん:2009/10/02(金) 11:49:17
すんません、更に質問ですが
TChartShapeに変数を追加したくて下記のようなクラスを作って
TChartShapeExを動的に作成してみたんですが・・・
class TChartShapeEx : TChartShape
{
public:
 int Index; // コントロールインデックス(0~n)
 int Mode; // 操作モード*/
};

TChartShapeのプロパティーやメソッドにアクセスしようとしたら
アクセスできないってコンパイルエラーが出ます・・
かなりお馬鹿な質問ですが、こういう場合はどうやって記述したらいいですか?
971デフォルトの名無しさん:2009/10/02(金) 21:12:04
>>970
class TChartShapeEx : TChartShape
   ↓
class TChartShapeEx : public TChartShape

にしてみたら?
972デフォルトの名無しさん:2009/10/05(月) 10:11:55
>>971
あ、そっか・・・・
public 抜けてたんだ・・・
ありがとう・・・・
973デフォルトの名無しさん:2009/10/05(月) 12:02:31
TChartShapeを円にして指定位置に表示させたのですが
TChartShapeの左上が原点になってしまいます。
これをTChartShapeの円の中心を原点にするにはどうしたらいいですか?
974デフォルトの名無しさん:2009/10/05(月) 16:52:23
TChartのCursorプロパティーで質問ですが
設計時にCursorを変更しておくと実行しても指定したカーソルになっているのですが
プログラム中でたとえば何かボタンを押した時に
Chart1->Cursor = crCross;
とすると変わってくれません。
どうしたら変わってくれるんでしょうか?
975デフォルトの名無しさん:2009/10/05(月) 18:44:52
>>974は解決しましたがその他に質問ですが

TChartで折れ線グラフを書いているのですが
その折れ線グラフのX軸値からY軸値を求める方法(メソッド)を教えて下さい・・・
976デフォルトの名無しさん:2009/10/05(月) 19:41:31
宿題スレかよ
977デフォルトの名無しさん:2009/10/06(火) 18:48:56
>>973を教えてください><
978デフォルトの名無しさん:2009/10/06(火) 22:24:51
位置の指定が左上なんだからサイズの半分を引いた位置に表示すればいいんじゃね?
979デフォルトの名無しさん:2009/10/06(火) 23:43:40
>>978
拡大や戻した時はどうするんですか?
Zoomとかのイベントで再計算ですか?
それはあまりにも悲しすぎて泣けてきました
980デフォルトの名無しさん:2009/10/07(水) 00:11:41
位置は値でもpixelでも指定できるんだから問題ないと思うが?でなければそもそもTChartShapeを
使うのが不適切な希ガス。何をしたいの?
981デフォルトの名無しさん:2009/10/07(水) 10:00:39
例えば軸値(ピクセルではない)X値30、Y値30に円を書きたいですが
円の左上を基点としてるから30,30に書かれない
グラフは全て軸値を元に作成しているからシェイプだけピクセルで位置をずらして書くのは不合理
だからプロパティーで基点をシェイプの中心にするものがあるのかとおもって聞いてみたんですが
982デフォルトの名無しさん:2009/10/07(水) 10:33:37
そういう時はそれ用のTPointSeriesを用意するのが普通じゃないかなぁ。
983デフォルトの名無しさん:2009/10/07(水) 10:54:49
あ、なるほど
シェイプじゃなくてポイントを使った方がいいですか
ちょっとそっちで試してみます
984デフォルトの名無しさん:2009/10/07(水) 18:42:58
表示しているTLineSeriesの色を変えるにはどうしたらいいですか?
TFastLineSeriesならSeriesColorで変更できますがTLineSeriesは変わりません
一旦消してサイドAddしあければダメでしょうか?
985デフォルトの名無しさん:2009/10/07(水) 22:30:56
変わるよ?
procedure 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つ追加した状態で。
986デフォルトの名無しさん:2009/10/07(水) 22:40:51
あ、ごめん。Delphiで書いちゃったけどわかるよね。
987デフォルトの名無しさん:2009/10/07(水) 23:32:22
>>985-986
あ、デルファイでも大丈夫です
すみません、明日試してみます。
ありがとうございます
988デフォルトの名無しさん:2009/10/08(木) 10:17:11
変化していないファイルの再コンパイルを避けるにはどうすれば良いんですか?
*.hを毎回読み込んでコンパイルしているみたいです。
ヘッダには関数の実体を書かずlibに関数の実体入れたら減らせるのはわかりますが。
調べたところ次の2点があると、プリコンパイル出来ないみたいです。
プリコンパイルではなくても、obj生成しておいて、それを使ってくれたら良いんですが。


ヘッダー内の関数にインラインでないものが含まれいる。  ヘッダー内にグローバル変数定義が含まれいる。
989デフォルトの名無しさん:2009/10/08(木) 10:43:12
>>985-986
シリーズリストからのアクセスだと動的に山ほどシリーズを追加しているので
リストの何番目かってのがいまいちわからないので直接作成した
LineSeriesでアクセスしたかったのですが、設計時にSeriesColorを変更すると
色が変わったので色々いじくってみたらどうやら
SeriesColorを変更する直前にColorEachPointをfalseにしてやると変わるみたいでした
予めColorEachPointにfalseを入れててもダメで色を変更する直前に
ColorEachPointを見てみてもfalseになってたので、何故か直前でfalseにしないとダメみたいでしたが・・・
990デフォルトの名無しさん
5だとpas使ってると毎回再構築になったなぁ