C++Builder相談室 Part13
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
05/02/15 20:58:38過去スレ・関連サイトは>>2-6あたり。
0313デフォルトの名無しさん
2005/03/24(木) 10:43:33ヘルプとか検索でかかるように、exeファイルがあるところに置くと
ちゃんと読めるんですが、フルパスを指定する方法を教えていただけないでしょうか
0314デフォルトの名無しさん
2005/03/24(木) 10:59:21"c:\\Program Files\\aaa\\bbb.ini"
みたいに?
それとも実行ファイルのフルパスがほしいのか?
0315デフォルトの名無しさん
2005/03/24(木) 11:19:02何がしたいのかわからん。
そもそもResultって何だ?
質問するときはソースは省くな。
0316デフォルトの名無しさん
2005/03/24(木) 13:05:17失礼しました
これだけ省いたらわからないですね。
WMIでIPアドレスを取得しようとしています
Variant Locator = CreateOleObject("WbemScripting.SWbemLocator");
Variant Service = Locator.Exec(Function("ConnectServer"));
Variant Set = Service.Exec(Function("ExecQuery") <<
"Select IPAddress
From Win32_NetworkAdapterConfiguration \
WHERE IPEnabled = true");
IUnknown* EnumUnknown = (IUnknown*)Set.Exec(PropertyGet("_NewEnum"));
IEnumVARIANT* Enum = 0;
if(EnumUnknown->QueryInterface(IID_IEnumVARIANT, (void**)&Enum) == S_OK) {
tagVARIANT tag;
unsigned long ret;
while(Enum->Next(1, &tag, &ret) == S_OK) {
Variant Result = &tag;
AnsiString IPAdress;
IPAdress = Result.Exec(PropertyGet("IPAdress"));
}
0317デフォルトの名無しさん
2005/03/24(木) 13:20:04ってできない?
0318デフォルトの名無しさん
2005/03/24(木) 13:25:220319デフォルトの名無しさん
2005/03/24(木) 13:28:17動かそうと試してみましたが、だめでした。
一応下記のページの関数は一通り試してみたのですが。
ttp://www.geocities.co.jp/SiliconValley-Sunnyvale/6128/builder/funclist/vararray.html
0320デフォルトの名無しさん
2005/03/24(木) 14:00:550321デフォルトの名無しさん
2005/03/24(木) 14:45:49WMIクエリアナライザってツールでSQLを走らせてみたら
結果も返ってきましたので、SQLの構文自体は間違っていませんでした。
配列ストリングは受け取り方が違うのでしょうか?
0322デフォルトの名無しさん
2005/03/24(木) 22:52:40#include <ComObj.hpp>
↓
#include <ComObj.hpp>
#include <vcl.h>
0323デフォルトの名無しさん
2005/03/25(金) 00:26:53IPAdressじゃなくてIPAddressじゃない?
0324デフォルトの名無しさん
2005/03/25(金) 14:51:440325デフォルトの名無しさん
2005/03/25(金) 14:57:010326デフォルトの名無しさん
2005/03/25(金) 15:54:02ばーか
0327321
2005/03/25(金) 15:59:40#define WIN32
#include <vcl.h>
#include <ComObj.hpp>
こういう感じで宣言してます。
>>323
指摘通り間違ってました。
修正したのですが、
ArrayVariantからStringに変換できないってメッセージはあいかわらずでます。
受け取るときにIPAddress(0)みたいに指定しないとだめなのかも・・・
ちょっと試してみて、また書き込みます
0328デフォルトの名無しさん
2005/03/25(金) 23:25:37どうしたらよいでしょうか?
0329デフォルトの名無しさん
2005/03/25(金) 23:27:28コンソール Wizard でできました。
0330デフォルトの名無しさん
2005/03/27(日) 15:39:130331デフォルトの名無しさん
2005/03/27(日) 15:44:50MSのサイトでDirectX SDKを落としてきなせぇ
0332デフォルトの名無しさん
2005/03/27(日) 15:59:43ライブラリは?
0333デフォルトの名無しさん
2005/03/27(日) 16:11:26http://clootie.narod.ru/cbuilder/index.html
こういうサイトの世話になりたまへ
0334デフォルトの名無しさん
2005/03/28(月) 00:53:03DirectShowはインポートライブラリなしだった気がする。
必要なのはヘッダだけ。
0335デフォルトの名無しさん
2005/03/28(月) 14:43:08リソースを開くたびにコントロールのサイズが微妙に変わってしまうのは既知??
使いづらいので結局PersonalかProfessionalを買おうかと思う今日この頃なのですが。
0336デフォルトの名無しさん
2005/03/28(月) 14:49:35ttp://shopping.itmedia.co.jp/soft_dev/1030301181.html
0337デフォルトの名無しさん
2005/03/28(月) 14:59:46BCB+VCLとBCC+ダイアログリソースエディタじゃやってることが全然違うんだが‥‥
0338デフォルトの名無しさん
2005/03/28(月) 15:22:46BCCFormなので、どちらかというと後者になるんだとおもいます。>>337
単純にまともに動いてくれるリソースエディタが欲しいんです。
BCCFormもちゃんと動いてくれればこれで十分なんですが。
となるとBCBではBCCFormみたいなことはできないってことですか?
0339デフォルトの名無しさん
2005/03/28(月) 15:28:130340デフォルトの名無しさん
2005/03/28(月) 16:04:32たびたびすいません。リソース判ったほうがいいんですけど、
結局.rc見たいなテキスト編集できるファイルはできるんですか?
コントロールがちゃんとぺたぺた貼れるのがいいんですが。
VC++にしろBCBにしろ、ちゃんと使えるリソースエディタが希望なんですが...
0341デフォルトの名無しさん
2005/03/28(月) 16:07:26だまされたと思ってbcb使ってみ
0342デフォルトの名無しさん
2005/03/28(月) 16:14:34騙されてみたいと思います。
0343デフォルトの名無しさん
2005/03/28(月) 16:25:34ただし、コンパイラの最適化があまり強力でないので、速度が必要な場合はVC toolkit 2003というフリーのが
MSから出ているので、それを使うべし。DirectXなんかも、これの方がよいと思われ。
0344デフォルトの名無しさん
2005/03/28(月) 16:36:20> 結局.rc見たいなテキスト編集できるファイルはできるんですか?
できない、独自形式で保存する
ただし、VC++とかでつくった.RCファイルとかの読み込みはできる
俺はテキストエディタで.RC1ファイル書いて読み込ませたりするけど
> コントロールがちゃんとぺたぺた貼れるのがいいんですが。
ぺたぺた貼れるよ、BCCFormより直感的につくれる、保存時にずれたリもしない
0346デフォルトの名無しさん
2005/03/28(月) 20:05:14とりあえず http://www.borland.co.jp/delphi/personal/ 触ってみれ。
BCBはDelphiのC++版。
組み方は全く同じ。
0347デフォルトの名無しさん
2005/03/29(火) 06:24:14C++なため、VBに比べて、WinAPI、OpenGLなどとの相性がいい
うざいランタイムが不要
Basicと比べて動作が高速
Cを学べばLinuxなどでgccなどを使うときなどに応用が利く
0348デフォルトの名無しさん
2005/03/29(火) 11:44:41昨日押入れをごそごそしたらVC6が出てきました。
セットアップしてBCCで作っていたソースを読み込ませたら、winsock.hで
ヒープ使い切ったとか言われて挫折しました。
winsock2.h は無いといわれました。
独自方式でリソースを保存するのがちょっと考えてしまいます。
やっぱり情報量は大事ですし。
VC++.NETかBCBか、Delphi使ってみて考えます。
0349デフォルトの名無しさん
2005/03/29(火) 12:14:05やはり情報量という点で王道に負けそうです。(藁
お騒がせしました。
0350デフォルトの名無しさん
2005/03/29(火) 12:29:55パスカルわからんやつにはさっぱりだと思うが
0351デフォルトの名無しさん
2005/03/29(火) 13:02:49なので気にしてませんから。Pascalが判らないのではなくて、使い方が判らなかっただけです。
なんにしても情報量が一番大事なので。
VC++.NETStandardが使いにくかったらBCBPersonalも試してみます。
0352デフォルトの名無しさん
2005/03/29(火) 13:13:33>なんにしても情報量が一番大事なので。
BCBで問題ないと思うが?
0353デフォルトの名無しさん
2005/03/29(火) 14:09:00とはいえこれは立場上の問題ですが。
0354デフォルトの名無しさん
2005/03/29(火) 14:15:230355デフォルトの名無しさん
2005/03/29(火) 17:10:240356デフォルトの名無しさん
2005/03/29(火) 17:17:490357デフォルトの名無しさん
2005/03/29(火) 17:25:100358デフォルトの名無しさん
2005/03/29(火) 17:30:51Va = VarArrayCreate(0,2,varString);
って感じで配列作ろうとしたらバリアント配列を作成できません
ってエラーがでるんですけど、この書き方おかしいですか?
0359デフォルトの名無しさん
2005/03/29(火) 18:08:30とりあえず「起動したらF9押してみろ」、といってやりたいですね
0360デフォルトの名無しさん
2005/03/29(火) 18:09:50まあ落ち着いてヘルプ見れ。
1つ目の引数で配列の構造を指定しなきゃいけないのに0はおかしい。
2つ目は常に奇数になる。
3つ目のvarStringはVarArrayCreateでは指定できない。
つまり全ての引数がおかしい。
0361321
2005/03/29(火) 19:38:42無念・・・
0362デフォルトの名無しさん
2005/03/29(火) 19:40:36>Variant Service = Locator.Exec(Function("ConnectServer"));
まず、こういう書き方をやめ、一行一命令のスタイルに汁。
そして、各戻り値をチェックしてみれ。
0363デフォルトの名無しさん
2005/03/29(火) 19:44:46たしかに全然違いますね
Delphiのソースから丸々パクって失敗しました
ありがとです
0364デフォルトの名無しさん
2005/03/29(火) 23:30:02を選択してF1押すと使用例まで見られるのだが
0365sage
2005/03/30(水) 09:02:22某のヘルプ・・・
0366デフォルトの名無しさん
2005/03/30(水) 13:21:440367デフォルトの名無しさん
2005/03/30(水) 18:39:590368デフォルトの名無しさん
2005/03/30(水) 18:45:080369デフォルトの名無しさん
2005/03/31(木) 22:56:19Windows 2000 Professional + Borland C++ Builder 5.0 Professional
一つめのForm(Form1)にTButton2つ(Button1、Button2)を配置
二つめのForm(Form2)にTImage1つ(Image1)を配置
の状態で
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2->Image1->Width = 50;
Form2->Image1->Height = 50;
Form2->Show();
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form2->Image1->Width = 250;
Form2->Image1->Height = 250;
Form2->Show();
}
void __fastcall TForm2::FormShow(TObject *Sender)
{
TRect rc(0,0,Image1->Width,Image1->Height);
Image1->Canvas->Brush->Color = clBlack;
Image1->Canvas->FillRect(rc);
}
としました。Button1を押した後、Form2を閉じ、Button2を押しても、50*50の領域しか塗りつぶされません。
まったく原因がわからないのですが、なぜなのでしょうか?ご教授ください。
0370デフォルトの名無しさん
2005/03/31(木) 23:23:31Form2->Image1->Width = w;
Form2->Image1->Height = h;
Form2->Image1->Picture->Bitmap->Width = w;
Form2->Image1->Picture->Bitmap->Height = h;
0371デフォルトの名無しさん
2005/03/31(木) 23:32:01TImage::Stretch = true;
0372369
2005/03/31(木) 23:42:23今まで悩んだのが嘘のようです。
ありがとうございました。
0373デフォルトの名無しさん
皇紀2665/04/01(金) 00:49:080374デフォルトの名無しさん
皇紀2665/04/01(金) 00:54:300375デフォルトの名無しさん
皇紀2665/04/01(金) 14:08:270376デフォルトの名無しさん
NGNGvoid __fastcall TForm1::Button1Click(TObject *Sender)
{
IdTCPServer1->DefaultPort = 4523;
IdTCPServer1->Active = true;
}
とやってボタンを押してもActiveがtrueになりません。
あと、IdTCPClientコンポーネントで
void __fastcall TForm1::Button2Click(TObject *Sender)
{
IdTCPClient1->Port = 4523;
IdTCPClient1->Host = "127.0.0.1";
IdTCPClient1->Connect();
}
とやってボタンを押すと、「モジュール 'rtl60.bpl' のアドレス 40006880 でアドレス 0000005C に対する読み込み違反がおきました。」
というエラーが出ます。
何が原因なのでしょうか?
環境はXP Pro、C++Builder6 Pro、Indy9.0.17です。
よろしくお願いします。
0377デフォルトの名無しさん
NGNG何処を弄れば出来ますかね?
メニュー2段と同じ高さにしたいのです。
0378デフォルトの名無しさん
NGNGShowCaptionを切らないといけないようですね。
ShowCaptionをtrueにしたまま48dotの高さにしたいんですが
どうすればいいでしょう?
0379デフォルトの名無しさん
2005/04/04(月) 10:57:470380デフォルトの名無しさん
2005/04/04(月) 13:47:530381デフォルトの名無しさん
2005/04/05(火) 11:40:10BCB6ではエラーは出ないものの、内容が常に0になっています。
Application変数がアクセスできているから、使えるはずだと思うんですが…。
一応環境はWin XP SP2 + BCB4 UP#4です。
0382デフォルトの名無しさん
2005/04/05(火) 13:36:510383デフォルトの名無しさん
2005/04/05(火) 18:14:480384デフォルトの名無しさん
2005/04/05(火) 18:16:010385デフォルトの名無しさん
2005/04/06(水) 10:29:330386デフォルトの名無しさん
2005/04/06(水) 13:27:18消去するのにも物凄い時間が掛かるのですが、改善する方法はないでしょうか?
0387デフォルトの名無しさん
2005/04/06(水) 13:30:52WindowsのIUnknown::Release()あたりで普通に使うから知ってる物だとばかり思ってたお>w<
0388デフォルトの名無しさん
2005/04/06(水) 13:30:550389デフォルトの名無しさん
2005/04/06(水) 13:35:01TListItems::BeginUpdate()
TListItems::EndUpdate()
使ってる?
0390デフォルトの名無しさん
2005/04/06(水) 15:28:39ものが出現してびっくりしました。なぜなんだろう。
それはともかく、Directの中に最新アップデートとしてアップデート#4のページが
リンクされていたので、果たしてこれを当てる必要があるのかどうか知りたくなり
ました。買ったのは最近とはいえ、わりと放置気味の商品だったので...
現在使用しているBCB6はV.6.0 (Bld 10.157)となっていますが、パッチの
必要はあるでしょうか。
0391381
2005/04/06(水) 16:20:28> C++Builder Direct
気に入らなければ「ツール|環境オプション」のC++Builder Directタブで設定汁。
> アップデート#4
とりあえずあてとけ。重要なところが直ってないけど。
ところで俺の質問に答えてけれ。
0392デフォルトの名無しさん
2005/04/06(水) 16:25:43>>388のいうようにOwnerDataを使う。
データの登録時間も削除時間も実質0。
ただ、BCB5のOwnerDataにはメモリリークのバグがあり、
BCB4にもあるのではないかと思われるので要注意。
0394デフォルトの名無しさん
2005/04/06(水) 17:24:34環境がBCB4ちゅうから、BCB4なら知らねーやと思ってレスしなかったんだけど、文中は6か。
うちのBCB6は正しい値らしきものを返してるぞ。
0395デフォルトの名無しさん
2005/04/06(水) 19:34:10値を取得したいのですが、何か方法はありますか?
0396デフォルトの名無しさん
2005/04/07(木) 02:25:07VBAの下の2行がどうしても出来ないですヽ(´Д`;)ノ
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 121.5, 14.25, 12.75, 42.75).Select
Selection.ShapeRange.Line.ForeColor.SchemeColor = 64
Excel_2k::Shape* Shape;
Shape = ExcelWorksheet->Shapes->AddShape(msoShapeRectangle, Left, Top, Width, Height);
Shape->Select(TNoParam());
//ここまではOK(シェープの作成と選択)
Shape->get_Fill()->get_ForeColor()->set_rgb(ColorToRGB(clBlack)); //ここがエラーになる
どなたか解る方が居たら助けてほしいですm(_ _)m
0397デフォルトの名無しさん
2005/04/07(木) 08:56:10簡単なものであれば、「SelectDirectory()」を使うという手がある。
欠点としては、ネットワークドライブを認識できない問題がある。
http://www.borland.co.jp/qanda/cbuilder/c0005004.html
0398381
2005/04/07(木) 10:36:41おわ、最後の最後であほなことを。orz
環境はWin XP SP2 + BCB6 UP#4です。orz=3
使えてるっすか。なんでウチは0なんだ?
0399デフォルトの名無しさん
2005/04/07(木) 10:57:45あかん。うちも 0 だわ。
同じくWin XP SP2 + BCB6 UP#4。
0400デフォルトの名無しさん
2005/04/07(木) 15:28:01>>396
Excel_2k::FillFormatDisp fill = shape->Fill;
Excel_2k::ColorFormatDisp color = fill.ForeColor;
color.rgb = clBlack;
0401デフォルトの名無しさん
2005/04/07(木) 18:45:03> Shape->get_Fill()->get_ForeColor()->set_rgb(ColorToRGB(clBlack));
こういう書き方はあかんぞ。インターフェースが解放されないから。
0402396
2005/04/07(木) 23:58:31キタ━━━━(゚∀゚)━━━━!!!!!! 動きました!! 見事にシェープが黒になりました。
ありがとうございます。1週間これにはまって、諦めてエクセルのセルにRGB値を入れて
VBAのマクロで対応するしかないかな〜と思っていた所なので本当に助かりましたm(_ _)m
本当にありがとうございますm(_ _)m
>401
もしお時間があれば、もうちょっと詳しくご説明して頂けると嬉しいですm(_ _)m
とりあえずソース中でget_****()->get_***() と書いてあった所は全て直しました。
0403デフォルトの名無しさん
2005/04/08(金) 01:30:47get_Fillもget_ForeColorもその他もろもろ、みんなインターフェースへのポインタを返してるわけだ。
>>396のShapeもインターフェースへのポインタだ。使い終わったインターフェースはReleaseしないといけない。
Excel_2k::FillFormat* fill = shape->get_Fill();
fill->Release();
こういう風に取得と解放がセットになるわけだ。get_Fill()->get_ForeColor() じゃ解放の余地がない。
ちなみにTComInterfaceみたいな便利テンプレートクラスを使えば、解放は変数の寿命と同時に自動的に行われる。
TComInterface<Excel_2k::FillFormat> fill = shape->get_Fill();
//fill->Release(); 要らない
たいていのインターフェースは既にTComInterfaceでラップされてて、
FillFormatならFillFormatPtr、ShapeならShapePtrという風に〜Ptrという名前でtypedefされてる。
Excel_2k::ShapePtr shape = ExcelWorksheet1->Shapes->AddShape(msoShapeRectangle, 0, 0, 100, 100);
Excel_2k::FillFormatPtr fill = shape->Fill;
こういうのを使えば解放忘れの心配がない。
0404デフォルトの名無しさん
2005/04/08(金) 06:12:070405デフォルトの名無しさん
2005/04/08(金) 17:20:36http://members3.jcom.home.ne.jp/jellyjam/pages/Del/graph.html
0406デフォルトの名無しさん
2005/04/08(金) 17:23:58Graphics::TBitmap *Bmp1,
Graphics::TBitmap *Bmp2, //{ビットマップ}
float Alpha, //{透過度}
TColor TransParentColor) //{背景色(完全透過します)}
{
0407デフォルトの名無しさん
2005/04/08(金) 17:58:13アルファ処理ごときで浮動小数点演算使うことはないだろうに‥‥
0408デフォルトの名無しさん
2005/04/08(金) 18:08:000409デフォルトの名無しさん
2005/04/08(金) 18:34:15Graphics::TBitmap *Bmp1,
Graphics::TBitmap *Bmp2, //{ビットマップ}
float Alpha, //{透過度}
TColor TransParentColor) //{背景色(完全透過します)}
{
int i, j, k, v, z;
TRect Rect1, Rect2, Rect3;
//Pnt1, Pnt2 : PRGBArray;
Byte *Pnt1, *Pnt2; // scanlines
float Alp;
Bmp1->PixelFormat = pf24bit;
Bmp2->PixelFormat = pf24bit;
//半透明コピー開始
//コピー領域をキャッチ
Rect1 = Rect(0, 0, Bmp2->Width, Bmp2->Height);
OffsetRect(Rect1, X, Y);
0410デフォルトの名無しさん
2005/04/08(金) 18:41:58画像の合成処理
http://www.cutt.co.jp/book/4-87783-124-X.html
47-9
アルファブレンド(1)
47-10
アルファブレンド(2)
47-11
ウォーターマーク設定
47-12
電子透かし
47-13
隠し絵
0411デフォルトの名無しさん
2005/04/08(金) 18:42:140412デフォルトの名無しさん
2005/04/08(金) 18:46:09■ このスレッドは過去ログ倉庫に格納されています