1 :
デフォルトの名無しさん :
2005/08/21(日) 17:48:30 C++Builderに関する質問・回答や議論等を行う相談室スレッド。
過去スレ・関連サイトは
>>2-7 あたり。
8 :
デフォルトの名無しさん :2005/08/21(日) 19:08:09
C++ Builder 5 Professional 持ってるが、不遇だな。 ちまたには、version 4 や 6 の本は普通に出版されているが、5 の本はほとんど 見たことが無い。 6 の本を買うと仮定すると、本の解説で 5 と 6 の違いが気になるわけだが、どこ ら辺に違いがあるか気になるもんだ。 6 の本でもほとんど支障なく学習できるんだったらいいけど。
>>9 4→5のタイミングが短すぎたんだっけ?
別に6本でも問題無いでしょ。VCLはあんま変わってないし。
正直BCBの参考書は、Delphi用の方が、内容が充実してるし種類もずっと多い と思う。 Delphi→BCBへの変換は、ほとんど一対一に対応しているので、一度Object Pascalを読めるようになれば、Delphiの本で十分。
12 :
デフォルトの名無しさん :2005/08/22(月) 17:34:01
リストビューでアイテムを選択しているときにCtrl+Cを押すとクリップボードに転送するようにしたいのですが、 ショートカットのイベントハンドラのようなものを実装するにはどうすればいいのでしょうか?
Delphi用という選択肢もあるわけだな、確かにそうだ。いいことを言った。 Pascalは知ってる。一冊の本をよく読んで練習問題のプログラムを書いたりしてた。 正に、Delphiの基礎学力をつけるのが目的でPascalを学習してたからな。 Object Pascalの学習はまだこれからだけど。 そういえば、VCL相談室というスレであってもいいなあ。 でも、言語を区別しておかないと、Object Pascalの知識の無い人には困るか。
Delphiのmessageキーワードがないばっかりに、BEGIN_MESSAGE_HANDLER〜 なんかの難解なマクロを使わないといけない。 あれ初心者には絶対理解不可能だと思った。逆にDelphiとBCBを両方使ってる と、「なんでmessageが無いんじゃゴルァ!」という事ですぐに見つけるわけだ。 BCBはC++の延長線上にある自然な拡張がされてない。全部Delphiの動作を エミュレートするようにされてしまってる。VCLがObject Pascal用にしか作られていな いので仕方ないとは言え、手抜きだなぁ。でもそのお陰で、Delphi用に作られた コンポーネントの有り難みを享受できるのも確かだが。
>>14 >BEGIN_MESSAGE_HANDLER
別に難解とは思わないが、その辺のBCB独自の拡張を簡単簡潔に網羅した
マニュアルが用意してあればいいんだがなぁ。
>>15 付属のあのごついマニュアルなんて、中身はHELPと全く同じだしな。
Open配列を真似るARRAYOFCONSTマクロなんか、ソース見てみると、
苦心の跡というよりはやっつけ仕事のように見える。
一応VCLのサポートのために追加されたキーワードと説明が、ヘルプの"拡張キーワード"ってページにまとまってるけどね。辿り付き辛いか。 __classid, __closure, __declspec(の一部), __property, __publishedと。 messageはあれば便利って程度だから、追加されなかったんでない?必要最低限のだけ追加したって感じで。 BEGIN_MESSAGE_HANDLER〜のマクロは、なんかダサいから使わないで、ウィンドウプロシージャでディスパッチしてる。 関数にするまでもない短いコードもよくあるしね。
>>17 プロパティはdefaultが使えないんだよね。もっともそれをやっちゃあ、
C++の名前照合規則をぶっ壊してしまうわけなんでやめたんだろうけど。
>>19 ごめん。使えないというより、Delphiとの意味が違ってる。
Delphiだと、クラス変数名書いただけで、あるプロパティが使われたでしょ。
BCBは初期値設定の意味になってる。
>>20 あ配列プロパティのdefaultか。普通のプロパティのは同じ意味だよね?
C++だとoperator[]があるからかな。ただBCBはVCLクラスがnewで作んなきゃいけないから、operator[]が定義されてても何か見た目がよくないね。
TStringList* pStrings = new TStringList();
:
(*pStrings)[0] = "hoge" は格好わるいから普通、pStrings->Strings[0] = "hoge" だろうね。
参照使えばDelphiぽくできるけど、いちいちちょっとね。
TStringList& strings = *pStrings;
strings[0] = "hoge";
>>21 はい、そうですぅ。済みません。
じゃじゃ馬BCB6で遊んでます。コンパイル速度も、今時のCPUなら十分速いし、
ちょっとしたGUIツールを作るにはぴったりです。
でも新製品が出ませんねorz
> BEGIN_MESSAGE_HANDLER こんなんがあるせいで、理解が少し遅れた。 ひたすら無駄なマクロ。
ま、確かに
>>17 さんみたいに、サブクラスで該当のメッセージだけ処理して、
後は次の所に放り投げれば済む話なんですよね。
Windowsのメッセージがチェイン構造になっているのは、初めて知った時は
ひたすら気持ち悪かった。
勉強がたりんなあ。 皆が何言ってるかさっぱりワカランorz
>>22 冬に出るだろ。
Delphi2006が‥‥
フリーコンパイラのBorland C++ Compiler 5.5 を使って300行のCプログラムをコンパイルしました。 しかしコマンドプロンプトからEXEファイルを実行しても全く動作しません。 試しにそのEXEファイルのソースのmainの一番最初に、print("check..");とか入れてみましたが、 こちらも表示されませんでした。 Cのプログラムでこんな事ってあるのでしょうか? コンパイラに原因は無いですよね・・・?
28 :
デフォルトの名無しさん :2005/08/23(火) 16:18:27
フリーコンパイラのBorland C++ Compiler 5.5 を使って300行のCプログラムをコンパイルしました。 しかしコマンドプロンプトからEXEファイルを実行しても全く動作しません。 試しにそのEXEファイルのソースのmainの一番最初に、print("check..");とか入れてみましたが、 こちらも表示されませんでした。 Cのプログラムでこんな事ってあるのでしょうか? コンパイラに原因は無いですよね・・・?
>>29 いえ、
test.cppを以下のようにコンパイル、実行しました
C:\ディレクトリ>bcc32 test.cpp
C:\ディレクトリ>省略(コンパイルが通ります)
そこで、text.exe(exeまで打たないと何故か実行できない)を実行します。
C;\ディレクトリ>text.exe (enter押します
test
C:\ディレクトリ>
このように出て、main関数が実行されません。
上のURLのところ行ってみます。
testとtextの2通りあるのは打ち間違いとして、 exeまで打たないと実行できないってヒジョーにアヤしげだなぁ
>>31 testの間違いです。。。
怪しげって何が怪しいんでしょうKA。
>>32 いや、何かそこに理由がありそうだなぁ、と。全然わかんないんだけどね。役立たずで申し訳ない
>>31 分からないのにスレ違いのネタ引っ張るなよ。
^^;
print("check.."); って何( ´∀`)? ってか、本当にコンパイル通ってるのかYO! #include <stdio.h> int main() { print("check"); return 0; } Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland test.cpp: エラー E2268 test.cpp 5: 未定義の関数 'print' を呼び出した(関数 main() ) *** 1 errors in Compile ***
だからおまいらスレ違いの話題をひっぱるなっつうの。
全然別の test.exeを実行していたりしたら笑うぞ。ホントに、そこにある test.exeを 実行しているのか? つーか、test をtextと書いたり、printとか何とか、 実際にやった内容と違うことばっかり書いて質問されてもなぁ・・・ 問題の切り分けをするなら、300行のナントカは、ともかく、最低限、 printfが1行だけある main() をコンパイルしてみて、できた実行ファイルを、 ルートからフルパスで指定して動かしてみること。 変なパスが通っていて、ヨソにあるexeを実行していたりしないか? あと、"check.." って、もしかして、改行マークなし? バッファのフラッシュを しないなら、\nがいるんじゃないかな。 いずれにせよ、完全にスレ違いなので、続きは誘導先でやってくれ。
こういうときには,症状が再現する最小限のソースコードをアップするのが常識だと思うがなぁ
41 :
40 :2005/08/24(水) 00:48:42
おっと,>39と少しかぶっちまったか
HelloWrld 表示するだけに不具合がでるコンパイラ なんてあるわけないし。 100%間違いなく、操作間違ってる。
43 :
デフォルトの名無しさん :2005/08/24(水) 11:35:30
TImageのCanvasに折れ線グラフを描画しているのですが Transparentをtrueにするとたまにグラフが描画されなくなります。 なんとなく、Canvasからはみ出たときに起こるのですが これの対処法を教えてください。
>>43 まずは「なんとなく」の部分をはっきりさせるべし
>>43 Transparentをtrueにしたとき透明表示される色は特に指定しなければ
確か一番左下のドットの色だっけか?
まずはsageようか。
46 :
デフォルトの名無しさん :2005/08/24(水) 13:20:48
質問するのに下げる理由はないよ。 sage厨はスルーで
>>45 ありがとうございます。
「一番左下のドットの色」で全ての謎がとけました。
グラフを描画する時にCanvasからはみだしてもちゃんと描画されるときと
されない時で描画されない時は左下のドットに描画してる時でした。
予めTransparentColorに色を与えておいて見事に解決しました。
49 :
デフォルトの名無しさん :2005/08/24(水) 18:08:29
フォームに乗ってる全てのコントロールを列挙する方法を教えてください
Componentsだった
自動作成の対象にしなかったフォームの表示方法を教えてください
TForm2 *form = new TForm2(this); form->Show();
すいません、C++Builder6のBDEもしくはdbExpressでMySQLとのSSL通信は可能でしょうか? MySQLのSSL通信機能はver4.1から正式にサポートされたものなんですが…。
54 :
30 :2005/08/30(火) 00:02:36
解決しました。 あるグローバル変数を配列を数千×数千で定義していたので出来ませんでした。 百×百位にしてコンパイルしたら実行できました。 しかし実行には.EXEつけないと無理ですが・・・。
>>54 うーん、まだまだあやしい。。。 けど、このスレで続けるのは変だから、
うだうだ書くのはやめておくね。
>>30 =54
『グローバル変数』なら配列の要素が大きくてもそこまで問題じゃないんじゃね?
仮にintで2000x2000だとしたら約15MBくらい
『オート変数』の間違いでは・・・
あと、exeつけないと実行できないんだったら、コマンドプロンプトで『notepad』は起動するんか?
馬鹿だなぁ。そんなレス構っちゃないんだよ。
59 :
デフォルトの名無しさん :2005/08/31(水) 23:16:09
Builder5です。 ファイル(F)-新規作成(N)のフォームタブに 自作のフォームを追加したいのですが、方法がよくわかりません。 プロジェクト(P)-リポジトリに追加(T)で追加できそうなのはわかったのですが、 フォームを新規作成した状態では、リポジトリに追加(T)は無効になっています。 どのようにすれば、自作フォームを追加できるでしょうか。 よろしくお願いします。
>>59 フォーム右クリックで「リポジトリに追加」
>>60 さんくすです。出来ました。
右クリックにあったんですね。気づきませんですた。
他のアプリのGUIをのっとって操作する事は可能ですか?
可能です
フックフック
65 :
デフォルトの名無しさん :2005/09/04(日) 00:36:16
アプリケーションのアイコンをImage1に描画 サイズは48×48 DrawIconEx(Image1->Canvas->Handle, 0, 0, Application->Icon->Handle, 48, 48, 0, 0, DI_NORMAL);
次バージョンがでるまで、あと何回枕を濡らせばいいのですか?
死ぬまで
69 :
デフォルトの名無しさん :2005/09/04(日) 12:55:46
ヘルプ参照しても見つけられないので質問を投げてみます。 double 型の変数から Currency 型の変数に値を変換して設定するための 標準的な関数がありそうな気がします(いや、きっとあるはず)が、見つけ られません・・・ おしえてくださいませ。m(_._)m ちなみに・・・ 文字列⇔Currency は、StrToCurr, CurrToStr Currency → double は operator double() など、その周辺はすぐ見つけられますね。 こういった逆引きって結構時間かかりまっすねぇ・・・ #Variant 型を経由しなきゃダメなんて落ちじゃないですよねー。
コンストラクタ __fastcall Currency(double val);
Currency& __fastcall operator =(double rhs);
初期化&代入できるんじゃん
なにか普通のメンバで行うしかないと思っているとこんな盲点に嵌まってしまう罠。
質問です。 メインフォームから動的に作成した子フォームを MDI親フォームとする方法を教えてください。
>>74 TFormはfsMDIChildeのとき、問答無用でメインフォームを親フォームにするみたいだな。
つうわけで無理っぽい。
76 :
デフォルトの名無しさん :2005/09/08(木) 01:48:16
VSS2005みたいにDelphi2006ベータ版配布するのか?? しないだろう。 ユーザは減っていくだけ!! もし、DELPHI2006無償配布を多くしたら復活の道あるのに。。
77 :
デフォルトの名無しさん :2005/09/08(木) 06:13:33
画像処理・エフェクト( 24ビットのビットマップのみ対応しています )
http://www.geocities.jp/octbery/program.html ・画像処理・エフェクトの準備
・グレースケール : 画像を白黒画像に変換
・2値化 : 特定のレベルをしきい値として、しきい値より明るいピクセルは白に、暗いピクセルは黒に変換
・階調の反転 : 画像の階調を反転
・ポスタリゼーション : 画像の階調を変える
・wipein : 画像をワイプイン
・wipeout : 画像をワイプアウト
・fadein : 画像をフェードインする
・fadeout : 画像をフェードアウトする
タイマー関連
・プログラムの実行時間を計測
その他
・コントロールの再描画時のちらつきを減らす
・midi音源から音を鳴らす
79 :
デフォルトの名無しさん :2005/09/08(木) 09:33:19
タスクバーを除いたデスクトップの領域を取得するには? Windows API SystemParametersInfo()を使用します。 Example: void __fastcall TForm1::Button1Click(TObject *Sender) { TRect r ; SystemParametersInfo(SPI_GETWORKAREA, 0, &r, 0); Form1->Top = r.Top; Form1->Left = r.Left; Form1->Width = r.Right - r.Left; Form1->Height = r.Bottom - r.Top; }
Screen->WorkAreaRect
>>75 CreateParamsがオーバーライド出きる様に変更されてて、
生成処理差し替え出きると思ったが。
82 :
質問者 :2005/09/08(木) 11:33:29
>>81 MDIChildのフォームの親フォーム(MDIForm)はメインフォームの子フォーム
である事が絶対でありメインフォーム自体を変更するのは無しです。
この方法は可能ですか?
83 :
Image :2005/09/08(木) 11:44:47
配列に読み込んだ画像データをImageに直接描画することを考えています。 その際ScanLineを使いたいと思っています。 Delphiではできたのですが、C++Bulderではよくわかりません。 変数の宣言等等含め教えていただけたらと思います。
>>83 たとえば24bit幅100pixelなビットマップの12行目を黒に塗りつぶす場合
int line = 12;
char* ptr = static_cast<char*>(Bitmap->Scanline[line]);
for(int i =0; i<100; i++)
{
*ptr = 0; ptr++; //青
*ptr = 0; ptr++; //赤
*ptr = 0; ptr++; //緑
}
あとは考えれ。
85 :
Image :2005/09/08(木) 12:34:43
>>84 回答ありがとうございます。
ごめんなさい。理解が追いつかないです。
配列に読み込んだデータImage[100][100]があるとすると
それはどのように扱うのですか?
Delphiでできたのに何でこれの理解が追いつかないのか ちょっとわからん
>>85 Scanlineの返す値が何なのか理解してるか?
88 :
Image :2005/09/08(木) 13:44:09
わからないから質問してみました。すみません ちなみにDelphiでは以下のように書きました。 for y:=0 to ysize-1 do begin p:=bmp.ScanLine[y]; {y列めのデータのアドレスにポインタをセット} for x:=0 to xsize-1 do begin c:=xy[y,x]-(wl-(ww div 2)); c:=(c*256) div ww; if c > 255 then c:=255; if c < 0 then c:=0; p^[x].r:=c ; p^[x].g:=c ; p^[x].b:=c ; end; end; form1.image1.Canvas.Draw(0,0,bmp); end;
89 :
Image :2005/09/08(木) 14:22:23
>>87 Bitmap->Scanline[line]
Bitmapの一列分のデータを返すものだとなんとなくですが
理解しています。
ただ、
BitMap.LoadFromFile('C:\Program Files\Common Files\Borland Shared\
Images\Splash\256color\factory.bmp');
みたいな感じに、先にBitmapに画像を読み込んでいるわけではないので
そのあたりがどのようになるか知りたかったわけです。
説明が悪くすみません。
Delphiユーザです。 予め読み込んでいない Bitmap は真っ白なビットマップです。 Scanline[y] が返すポインタは型なしですが、その内容は PixelFormat に依存します。 pf32bit ---- PRGBQuad pf24bit ---- PRGBTriple pf8bit 以下 ---- PByte ですから適切にキャストすると色データにアクセスできます。 逆にいうと ScanLine を使う前に PixelFormat が確定している必要があります。
91 :
デフォルトの名無しさん :2005/09/08(木) 21:26:17
タスクバーを除いたデスクトップの領域を取得するには? void __fastcall TForm1::Button1Click(TObject *Sender) { TRect r ; SystemParametersInfo(SPI_GETWORKAREA, 0, &r, 0); Form1->Top = r.Top; Form1->Left = r.Left; Form1->Width = r.Right - r.Left; Form1->Height = r.Bottom - r.Top; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { Form1->Top = Screen->WorkAreaRect.Top; Form1->Left = Screen->WorkAreaRect.Left; Form1->Width = Screen->WorkAreaRect.Right - Screen->WorkAreaRect.Left; Form1->Height = Screen->WorkAreaRect.Bottom - Screen->WorkAreaRect.Top; }
92 :
デフォルトの名無しさん :2005/09/08(木) 21:37:37
void __fastcall TForm1::Button1Click(TObject *Sender) { TRect r ; r = Screen->WorkAreaRect; Form1->Top = r.Top; Form1->Left = r.Left; Form1->Width = r.Right - r.Left; Form1->Height = r.Bottom - r.Top; }
Form1->BoundsRect = Screen->WorkAreaRect;
94 :
デフォルトの名無しさん :2005/09/09(金) 00:52:13
void __fastcall TForm1::Button1Click(TObject *Sender) { Caption = Screen->DefaultIme; }
95 :
デフォルトの名無しさん :2005/09/09(金) 00:59:30
Form1->BoundsRect = Screen->WorkAreaRect; Form1->BoundsRect = Monitor->WorkareaRect;
96 :
デフォルトの名無しさん :2005/09/09(金) 10:09:23
void __fastcall TForm1::Button1Click(TObject *Sender) { Button1->Caption = "C++Builder"; } void __fastcall TForm1::Button2Click(TObject *Sender) { Button1->Perform(BM_CLICK, 0, 0); }
97 :
デフォルトの名無しさん :2005/09/10(土) 06:01:33
http://sapporo.cool.ne.jp/tanomi/qanda/a047.html OnIdleイベントはTApplicationのイベントなのです。
なので、Applicationに割り当てます。
場所はコンストラクタが良いでしょう。
//Formのコンストラクタで
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Application->OnIdle = IdleHandler;
}
ちょっと思ったんですが .exe内の関数を.dllに入れて呼び出す場合は実行速度は 大して変わりないのでしょうか?
起動が遅くなるよ
101 :
98 :2005/09/10(土) 10:38:42
>>99-100 なるほど、処理速度自体は変わらないけど起動時読み込みにより
遅くなるって事ですね。
起動が遅くなる度合いは関数の数に関係なく.dllの数によるものですか?
102 :
デフォルトの名無しさん :2005/09/12(月) 04:14:24
103 :
デフォルトの名無しさん :2005/09/12(月) 05:38:10
C++Builder6 Proで国際化対応、すなわち英語と日本語の切り替えが出来るようなアプリケーションを作りたいのですが、 どのような方法が、良いのでしょうか? 起動時にOSの言語を判定して、キャプションやフォントを変更していく以外に何はよい方法はないでしょうか?
105 :
デフォルトの名無しさん :2005/09/12(月) 11:15:28
>>104 リソースdllを丸ごとすげ替える方法がある。
ヘルプ読め
>>106 ヘルプを読んでみたのですが、フォームの内容をDLLに保存する方法がよく分かりません
108 :
デフォルトの名無しさん :2005/09/13(火) 08:16:26
>>104 テキストファイルからボタンのキャプションなどを読み込めばいいのでは?
>>107 リソースdllウィザードとかその類いのが新規作成の中に無いか?
borland c++ builder 6.0 professional でSDLを導入しようと思ってます。 行ったことは、まず SDL-1.2.9.zipをダウンロードして展開。 中に入っていたBorland.zipを展開。(Borlandディレクトリができる) Borland\bcb6にlibSDL.bpgをダブルクリックする。 プロジェクトメニューからすべてのプロジェクトをメイクをしました。 そうすると、パッケージのインポートライブラリーが見つかりませんと出ました。 これは、同梱されていたBorland.htmlというファイルを参考に実行しましたが うまくできません。 どうやったらうまく導入できるんでしょうか?
>>111 試してみたけどプロジェクトが出鱈目な感じだった。一応できたので以下やってみた手順。
・aliens.exeプロジェクトは、aliens.cが見当たらないのであきらめる。libSDLプロジェクトグループからaliensを削除。デモゲームらしい。
・SDL.dllプロジェクトにSDL-1.2.9/src/cpuinfo/SDL_cpuinfo.cを追加する。
・SDLmain.libプロジェクトのSDL_main.cを削除して、代わりにSDL-1.2.9/src/main/win32/SDL_win32_main.cを追加する。
・IDEを閉じた状態で、SDL.bprとgraywin.bprをメモ帳等の適当なエディタで開いて、「<PACKAGES value=vcl.bpi rtl.bpi…略」となってる部分を、「<PACKAGES value=""/>」とするかこのノード自体を削除して保存する。
・libSDLを開いて、「すべてのプロジェクトを再構築」を実行。
・途中で何回かコンパイルエラーが出るので、その都度userWindowProcを(FARPROC)userWindowProcという風にキャストして再度コンパイル。
で、コンパイルはできた。
>>112 どうも試してくれありがとう。
あれから、色々検索しまして、簡単な導入方法がわかりました。
SDL-1.2.9-win32.zipの中のSDL.DLLをc:\windows\systemディレクトリに入れて
SDL-1.2.9.zipの中のborland.zipを展開した中に入っているものを全部borland C++ builder
をインストールした場所の各ディレクトリに入れました。
ヘッダファイルもinclude\SDKに入れまして、ライブラリもlib\SDKに入れてしまい
bcc32.cfgとilink32.cfgにパスを通して終わりです。
実際にSDLのテストプログラムをコンパイルしてみましたら、うまく実行できました。
>>113 やっぱランタイムだけでよかったのね。DLLをソースからビルドしたい理由があったのかと思った。
TMemoryStreamに読み込んだグレースケールなDIBを TImageに表示するにはどうすればいいのでしょうか? そのままTBitmap::ScanLineで読み込んでも変な表示がされるのみでしてorz
TBitmap には LoadFromStream ってメソッドが Delphi ではあるんだが
>>115 TImage::Picture::Bitmap::KiadFromStream使えば?
> そのままTBitmap::ScanLineで読み込んでも変な表示がされるのみでしてorz ScanLine でコピーするならパレットもグレースケール化しないとね。
119 :
115 :2005/09/15(木) 11:14:29
>>116 >>117 LoadFromStreamでは「ビットマップイメージが不正です」と言われてしまいます。
DIBフォーマットってTBitmapでは直接読めないのでしょうか?
この辺りの処理をちゃんとやってないからScanLineでもダメなのでしょうねorz
LoadFromStream で読めるのはビットマップのファイルイメージそのままのときだけ。 読み込み先の PixelFormat はどうなってます? pf8bit なら、パレットをグレイスケール化することは必須 pf24bit なら ScanLine は TRGBTriple へのポインタだから RGB に同じ値を与えてグレースケールにする pf32bit なら ScanLine は TRGBQuad 以下同上
>>115 Graphics:TBitmap::PixelFormatをいじったか?
pfDeviceにでもなってんじゃないの?pf1bitに変更汁。
> pf1bitに変更汁。 pf8bit だろ、グレイスケールといえば普通。pf1bit ならスケールなんてない。黒白
あれだな。昔の256色モード。パレットか。懐かしいな。
124 :
デフォルトの名無しさん :2005/09/15(木) 15:27:55
64bitプログラムは作れますか?
125 :
115 :2005/09/15(木) 16:04:38
PixelFormatはpf8bitにしてあります。 さっぱりワケわかめです。どうも読み込もうとしているDIBが画像データのみで、 ヘッダ情報が含まれていないようです。 ググっても、微に入り細に渡るBitmapフォーマットについての説明(勉強しているのなら ありがたいですが、それは時間のある時に…)はあっても「だからこうしろゴルァ!」という ズバッとしたサンプルソースがありませんorz
>>125 データにWindowsBitmapのヘッダ付いてないならScanlineで書き込むしかない。
127 :
115 :2005/09/15(木) 17:28:17
TBitmap::HandleTypeにbmDIBを設定し 上記のようにTBitmap::PixelFormatはpf8bitに設定して TBitmap::Canvas::Pixels[x][y]にDIBの画像データをちまちまと入れたら出来ました。 お騒がせしました。
パレットはどうなったん?
>>127 Pixelsは猛烈に遅くなるからやめい。
> TBitmap::Canvas::Pixels[x][y]にDIBの画像データをちまちまと入れたら出来ました。 Pixels 使うのは最低だな
>>127 だからScanLineを使って入れろというに。
Pixels使うと、一ドット毎にシステムコール起こるの知ってる?
バイナリファイルの内容をメモ帳の様にTMemoに読み込むには どうしたらいいでしょうか。当然NULLで文字が切れてしまいます。
134 :
デフォルトの名無しさん :2005/09/16(金) 09:07:48
#define NO_WIN32_LEAN_AND_MEAN
135 :
デフォルトの名無しさん :2005/09/18(日) 18:04:00
C++Builderを使用しているのですが、BuilderからExcelを操作する(グラフの書き方) 方法がわかりません。 Excelに数字を保存する方法はわかったのですが、グラフの書き方がわからないので、 知っている人がいれば教えてください。
とある行or列にデータが入ったら グラフが描かれるテンプレートを用意して xltとして保存しておいて Excelをコントロールするとき Excel起動後、新規シートではなく xltを読み込んで動作させてはいかがかと。
64ビットのプログラムは作れますか?
138 :
デフォルトの名無しさん :2005/09/18(日) 22:17:03
RichEditへの描画 投稿日 : 2005/08/01(Mon) 10:35 投稿者 : lovez00 RichEditにはCanvasプロパティがないので、 使い捨てCanvasを作れば解決です。 練習がんばってねー。 //------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { //使い捨てCanvas TCanvas *RECanvas = new TCanvas; RECanvas->Handle = GetDC( RichEdit1->Handle ); //ペン設定 RECanvas->Pen->Color = clBlack; RECanvas->Pen->Width = 2; //線を引く RECanvas->MoveTo( 0, 20 ); RECanvas->LineTo( RichEdit1->ClientWidth, 20 ); //使い終わったら消す delete RECanvas; }
139 :
デフォルトの名無しさん :2005/09/19(月) 14:39:17
デスクトップに文字などを表示するには void __fastcall TForm1::Button1Click(TObject *Sender) { TCanvas *c=new TCanvas; c->Handle= GetDC(0); //ここから好きな処理をする c->Font->Size= 100; c->TextOut(10,10,"いろは"); c->MoveTo(100,100); c->LineTo(500,500); //ここまで ReleaseDC(0,c->Handle); delete c; }
>>132 処理に困っているのは 0x00 だけ?
バイナリデータって聞くとそれ以外にも普通に表示されないコードが
あると思っちゃうけど無いの?
もしあるならどういう風に表示させるつもり?
TFileStream::Read() を使って unsigned char の配列に入れて
表示したいように加工してから表示・・・?
141 :
デフォルトの名無しさん :2005/09/21(水) 00:21:17
CppWebBrowser1NewWindow2(TObject *Sender, LPDISPATCH *ppDisp, VARIANT_BOOL *Cancel) { 一部省略 *ppDisp = CppWebBrowser->Application; } *ppDisp = CppWebBrowser->Application; ってどういう意味なのですか?一般的に
英語版Windows上で実行したときに、エラーメッセージを英語化したいのですが、どのようにしたらよいのでしょうか?
>>143 パッケージを使ってビルドすれば、BPLに対応するリソースdll(日本語ならJPN)が自動で選ばれる。リソースdllが無ければVCL内のメッセージについては英語のはず。
静的ビルドのときは、CDに入ってる(←バージョンによっては)英語版VCLでビルドするか、最悪でもやはりリソースとして.exeに埋めこまれてるのでリソース編集ツールで置き換えられる。
日本語ならJPだった。
146 :
デフォルトの名無しさん :2005/09/21(水) 11:19:32
C++BuilderのTPageControlで、一番最後のタブを削除すると 強制的に最初のタブがアクティブになってしまうけど、 私はその削除するタブの一個前をアクティブにしたいのだが、 どうすれば良いのですかね。今現在ページの移動が見苦しい <現在の擬似コーディング> //現在のページ数 int PageNum = PageCtrl->PageCount; //削除するページを得る(最後のページ) TTabSheet *pDelPage = PageCtrl->Pages[PageNum - 1]; //次にアクティブにするページ TTabSheet *pNextActivePage = PageCtrl->Pages[PageNum - 2]; //ページ削除(一旦先頭のページに移動) delete pDelPage; //次にアクティブにするページに移動(仕方なく入れてる) PageCtrl->ActivePage = pNextActivePage;
>>146 TPageControl::RemovePageをオーバライドするしか無いような‥‥
てかそこで削除したページの次を検索してそのページに切り替え動作やってるようだ。
149 :
146 :2005/09/21(水) 14:05:24
>>147 削除前に移動しても、やっぱり最初のページに移動してしまいます。
>>148 TPageControl::RemovePageは、privateにあって難しいかも。
VCLのソースそのものの書き換えが必要?
>>149 TPageControlを継承した派生クラス作って、
RemovePage()をオーバーライドでどう?
そういやTPageControlのRemovePageは呼び出す必要なかったな‥‥
153 :
146 :2005/09/22(木) 09:03:53
>>もっと詳しく・・
>>153 class Base {
private:
virtual void func() { cout << "Base::func()\n"; }
public:
virtual void funca() { func(); }
};
class Ext : public Base {
public:
virtual void func() { cout << "Ext::func()\n"; }
};
main() {
Ext a;
a.funca();
cout << endl;
}
良さげだね。SSE2は既にサポートしてるような。SSE3の間違いだべか。
157 :
デフォルトの名無しさん :2005/09/23(金) 23:37:18
名前 点数 二郎 90 一郎 70 太郎 80 点数をソートして、名前を点数順に取得する方法がわかりません。 知っている人がいれば教えてください。
158 :
デフォルトの名無しさん :2005/09/23(金) 23:44:00
>157 158じゃないけど、TStringListで良いんじゃないの? その場合、090という風に桁数を合わせないとダメだけど。 090二郎 070一郎 080三郎 という感じにして、Sort()で昇順になるから、逆順(高い者順)なら 下から取ってくれば良い。
>>157 //構造体を定義
struct name_value {
String name;
int value;
name_value( String n=EmptyStr, int v=0 ) : name(n), value(v) {};
};
bool operator<( const name_value& lh, const name_value& rh ) {
return lh.value < rh.value;
}
//こんなふうにつかう
#include <set>
void some_function()
{
typedef std::set<name_value> name_value_set;
name_value_set nvset;
nvset.insert( name_value("二郎",90) );
nvset.insert( name_value("一郎",70) );
nvset.insert( name_value("太郎",80) );
...
//あとは頭からでもけつからでも好きな方から読み出せばいい。
}
>>156 IDEの起動に物凄い時間がかかってメモリもありえないほど喰うけどな
162 :
デフォルトの名無しさん :2005/09/24(土) 12:33:01
>>162 そうか。
で、それがどうかしたか?
>>160 のソースに問題はないのでリンカエラーを起こしたのは君の責任だ。
>>162 俺は
>>160 さんのソースを打ち込んで、適当にアレンジしてMemoに
中身を貼り付けるようにしてみたが、ちゃんと動いたぞ。
165 :
:2005/09/24(土) 13:42:49
メッセージループをいじくるにはどうしたら言いのですか。 Windows用のPeekMessageとGDIを使った簡単なアニメーションと言うかゲームみたいなプログラムのソースを読んだんですが、C++Builderのプログラムに移植したいと思ったんですけど、PeekMessageを使っててメッセージループ中に他の自作関数を呼んだりしないといけません。 でもC++Builderのプログラムにはメッセージループがありません。どこにあるのですか?どうしたらカスタマイズできますか。
167 :
デフォルトの名無しさん :2005/09/24(土) 14:25:09
>>165 TApplicationクラスのprivate関数ProcessMessageにメッセージループはある
169 :
デフォルトの名無しさん :2005/09/24(土) 14:59:01
VBで言うところの strA = "Button1" From1.controls(strA).Visible = True みたいにBCBで Form1 -> strA -> Visible = True みたいには出来ますか。
>>169 String strA = "Button1";
Form1->FindChildControl(strA)->Visible = True;
ただし、実際はifでくくったほうが良い。
if ( TControl* ctrl = Form1->FincChildControl(strA) )
ctrl->Visible = True;
171 :
デフォルトの名無しさん :2005/09/24(土) 15:24:05
↑ ×True ○true ×FincChildControl ○FindChildControl
173 :
デフォルトの名無しさん :2005/09/24(土) 15:53:51
boostのBCBへのインストールの方法がよく分かりません。 boostを使えるようにする方法を教えてく浅い。
>>173 binフォルダ中のbcc32.cfgに
-I"C:\boost_1_33_0"等を追加。既に-Iがあると思うので、セミコロンで
区切って後ろに追加する。
buildは・・・・・諦めた方がいいかもね。
These are not planned. - Updates for BCB6 orz
重くなるだけみたいね
178 :
デフォルトの名無しさん :2005/09/24(土) 23:27:46
AnsiString z = "070"; 先頭の0を取り除く方法がわかりません。
>>178 z = AnsiString(z.ToInt());
180 :
デフォルトの名無しさん :2005/09/24(土) 23:32:29
>>178 AnsiString z = "070";
Caption = IntToStr( StrToInt(z) + 0 );
181 :
デフォルトの名無しさん :2005/09/24(土) 23:37:06
Caption = Format("%3.3d", OPENARRAY(TVarRec, (70))); //070
>>178 char *p=new char[z.Length()+1];
if(p){
strcpy(p,z.c_str());
z=AnsiString(p+1);
delete[] p;
}
183 :
デフォルトの名無しさん :2005/09/25(日) 00:20:32
>>157 void __fastcall TForm1::Button1Click(TObject *Sender)
{
TStringList* MyList = new TStringList();
AnsiString a = "070二郎";
AnsiString b = "100一郎";
AnsiString c = "080三郎";
MyList->Add(a);
MyList->Add(b);
MyList->Add(c);
MyList->Sort();
Memo1->Lines->Add(MyList->Count);
Memo1->Lines->Add(MyList->IndexOf(a));
Memo1->Lines->Add(MyList->IndexOf(c));
Memo1->Lines->Add(MyList->IndexOf(b));
Memo1->Lines->Add(MyList->Strings[0]);
Memo1->Lines->Add( ( (MyList->Strings[0]).SubString(1,3)).ToInt() );
Memo1->Lines->Add( ((WideString)MyList->Strings[0]).SubString(4,2) );
delete MyList;
}
>>157 >>178 ま、なんだ。こういうところで安易に質問する前に
自分でもちっと勉強しろって事だな。
185 :
:2005/09/25(日) 00:45:22
>>168 >>169 説明がわるかったけど、独自メッセージを処理したいというより
リアルタイム処理のためにGetMessageじゃなくてPeekMessageをつかったメッセージループとそのループ中に関数呼び出しを挿入したいということだけど、やっぱり分かりにくいか。
>>170 private関数じゃどうにもならないね。
Application->ProcessMessages()を使う
187 :
165 :2005/09/25(日) 05:39:28
アク禁くらってて慌ててたため、番号が間違えてました。
>>166 >>167 >>168 失礼しました。そしてありがとう。
>>168 >>186 メインループは書き換えられないけど、時間のかかるループの中でこれを呼べばいいみたいですね。
どうもありがとうございました。
>>185 タイマースレッド作ってSleepなりSetTimerなりでループ回してやれば?
189 :
デフォルトの名無しさん :2005/09/25(日) 12:26:41
メッセージをフックする ここではAPIを使用して自ウインドウへのメッセージ(WM_MOVE、WM_SIZE、WM_CLOSE)をフックする方法を説明します。このメッセージフックの方法は結構使えるので知らない人は覚えておきましょう。 ■使用するAPI関数 SetWindowLong(ウインドウに関する情報を設定する) CallWindowProc(Windowsメッセージをデフォルトのウインドウ プロシージャに渡す) ■メッセージ WM_MOVE(ウインドウが移動した時に送られる) WM_CLOSE(ウインドウを終了しろと言われた時に送られる) WM_SIZE(ウインドウのサイズが変更した時に送られる)
190 :
165 :2005/09/25(日) 12:28:11
>>188 うん、その方法もあるね。
たまたま見たプログラムがメッセージループをいじくるやつだから、Builderだとどうなるかと思ったんです。
コピペ荒らしにマジレスしちゃうが
>>189 WndProcオーバーライドしろと
192 :
デフォルトの名無しさん :2005/09/25(日) 17:26:37
>>192 そりゃ、スクロールイベントをShowMessageで止めてるんだからそうなるでしょ
>>192 if (msg == WM_VSCROLL)
OutputDebugString("The vertical scrollbar is scrolling!")
これで解決
別スレッドを作ってShowMessage(・∀・) そして、ダイアログボックスの嵐の罠(´Д`)
モーダルダイアログの意味が分かってないのね
198 :
デフォルトの名無しさん :2005/09/26(月) 00:12:18
199 :
デフォルトの名無しさん :2005/09/26(月) 10:22:21
//#include <mmsystem.h>
//#include <windows.h>
//Setting Master Volume
//
http://www.geocities.com/fekinci37/vol.htm void __fastcall TForm1::Button1Click(TObject *Sender)
{
DWORD Vollevel;
Vollevel = GetMixerVolume(GetMixerControlID (MIXERLINE_COMPONENTTYPE_DST_SPEAKERS));
//Vollevel = GetMixerVolume(GetMixerControlID (MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT));
//Vollevel = GetMixerVolume(GetMixerControlID (MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER));
if (Vollevel)
SetMixerVolume(GetMixerControlID (MIXERLINE_COMPONENTTYPE_DST_SPEAKERS), 0);
else
SetMixerVolume(GetMixerControlID (MIXERLINE_COMPONENTTYPE_DST_SPEAKERS), 65535);
}
200 :
デフォルトの名無しさん :2005/09/26(月) 13:46:27
201 :
デフォルトの名無しさん :2005/09/26(月) 18:11:59
>>200 Form1->TrackBar1->Max = 65535;
BCBに未来はあるんでしょうか?
C++に未来はあると俺は思う。 BCBに未来があるかどうかは、俺にはわからない。
Win32では「プロトタイプ→製品」に関して最強。自分が使えれば、BCBに未来が有っても無くても構わん。
205 :
デフォルトの名無しさん :2005/09/27(火) 20:35:38 0
フォームを消す!? 常駐系のアプリケーションを作成する場合など、タスクバーにアプリケーションのアイコンを表示したくない場合があります。 そんな時は、プロジェクトファイル(*.bpr)のソース(*.cpp)に以下のように追加します。 Project1.cpp WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { Application->Initialize(); Application->ShowMainForm = false; //これを追加 Application->CreateForm(__classid(TForm1), &Form1); Application->Run(); } catch (Exception &exception) { Application->ShowException(&exception); } return 0; } ただしこのままだと終了させる術がないので、タスクトレイにアイコンを表示するなどの処置はしておきましょう(^^; ただしShowMainFormプロパティはアプリケーションの起動時に表示するかしないかを決めています。 そこで、フォームを表示させたい場合はForm1->Show()などとして表示させましょう。
うざ
>>204 仕事で使いたいなと思っているんだけど
もう新製品が出ませんとかだとなかなかね〜
逆に言うと、環境の入れ替えは不要だけどな 移行のテストも新バージョンの隠れたバグにも悩まされない でも正直、環境入れ替えの移行テストもしたいし、SPが配布 されるのを心待ちにもしい・・・・・・・・・・・・・・・・・・・・・・
>>210 Delphi談話室と間違えました
マルチポスト御免なさい mOm
5と6ってどっちがバグ多いですか? 同じくらいならどっちを使うのがいいですか?
>>212 急ぎじゃなければDelphi2006待ってから決めるのが吉
TListViewでオーナードローを使ってCaptionとSubItemを違う色で表示したいのですが SubItemがCaptionと同じ色で表示されてしまいます。 void __fastcall TForm1::ListView1DrawItem( TCustomListView *Sender, TListItem *Item, TRect &Rect, TOwnerDrawState State) { TCanvas *canvas = Sender->Canvas; if (Item->Selected) { canvas->Brush->Color = clHighlight; } else { canvas->Brush->Color = clBlack; } canvas->Font->Color = clWhite; canvas->TextOutA(0, Item->Top, "Caption"); canvas->Font->Color = clFuchsia; canvas->TextOutA(ListView1->Columns->Items[0]->Width, SubItem); } どこがいけないのでしょうか。
>>213 急ぎではないですが、それはいつ発売されますか?
>>214 最近BCB触ってないからアレなんだが・・・↓のコードでいけないか?
void __fastcall TForm1::ListView1DrawItem(
TCustomListView *Sender, TListItem *Item, TRect &Rect,
TOwnerDrawState State)
{
TCanvas *canvas = Sender->Canvas;
if (Item->Selected)
{
canvas->Brush->Color = clHighlight;
}
else
{
canvas->Brush->Color = clBlack;
}
SetTextColor(canvas->Handle, clWhite); // ← 変更
canvas->TextOutA(0, Item->Top, "Caption");
SetTextColor(canvas->Handle, clFuchsia); // ← 変更
canvas->TextOutA(ListView1->Columns->Items[0]->Width, SubItem);
}
>>214 最後の行はcanvas->TextOutA(ListView1->Columns->Items[0]->Width, Item->Top, "SubItem");
の打ち間違い?だとして、それでちゃんと色分けされたけどな。
219 :
デフォルトの名無しさん :2005/09/28(水) 18:24:03
//
http://homepage3.nifty.com/endou/tips/01/tips1.htm void __fastcall TForm1::Button1Click(TObject *Sender)
{
Graphics::TBitmap *mBitMapA; //ビットマップオブジェクトの宣言
Graphics::TBitmap *mBitMapB; //A:ソース B:オブジェクト
mBitMapA = new Graphics::TBitmap();
mBitMapB = new Graphics::TBitmap();
mBitMapA->LoadFromFile("C:\\Program Files\\Common Files\\Borland Shared\\Images\\Splash\\256color\\factory.bmp"); //ソースファイルを読み込む
mBitMapA->PixelFormat = pf24bit; //24ビットのビットマップにする
mBitMapB->LoadFromFile("C:\\Program Files\\Common Files\\Borland Shared\\Images\\Splash\\256color\\factory.bmp");
mBitMapB->PixelFormat = pf24bit;
#define kR 2//RGBのオフセット値
#define kG 1//ビットマップの中では、B G Rの順に並んでいます。
#define kB 0
{
int x,y,w,h;
unsigned char*pA,*pB;
w = mBitMapA->Width;
h = mBitMapA->Height;
for(y=0; y<h; y++) {
pA = (unsigned char *)mBitMapA->ScanLine[y];
pB = (unsigned char *)mBitMapB->ScanLine[y];
for(x=0; x<w; x++) {
pB[x*3+kR] = (unsigned char)(255 - pA[x*3+kR]);
pB[x*3+kG] = (unsigned char)(255 - pA[x*3+kG]);
pB[x*3+kB] = (unsigned char)(255 - pA[x*3+kB]);
}
}
}
Form1->Canvas->Draw(0,0,mBitMapB);
}
>>216 delphi2006でC++が使えるの?
>>221 ほ〜 ありがとう
もうMFC使ってのGUIアプリ作るのは疲れたよ。
>>222 そんな目的なら現行 BCB6 を買っておきなよ。D2006 なんか期待しちゃだめ
MFCは単一ウィンドウ(ゲーム、物理シミュレーション)とか以外で使おうとは思わん・・・。
単一ウィンドウっつーかウィンドウのみの時、ね。
226 :
デフォルトの名無しさん :2005/09/29(木) 14:16:21
227 :
デフォルトの名無しさん :2005/09/29(木) 23:44:08
[リンカ 致命的エラー]fatal:オプションの間違い:2045;
228 :
デフォルトの名無しさん :2005/09/30(金) 11:01:40
新規作成でフレームを作成し、フォームにそのフレームを貼り付けたのですが そのフォーム内のイベントでフレーム無いのラベル等のキャプションを変更しようとするとエラーになります。 Frame1->Label1->Caption = "aaa"; 上記のコードを実行するときはすでにフレームのコンストラクタは呼ばれていますが
>>228 とりあえずオブジェクトインスペクタでフォームに乗っかってるフレームのNameを確認する。
230 :
デフォルトの名無しさん :2005/09/30(金) 11:28:08
>>229 貼り付けたフレームはフォームに貼り付けられたフレームにしかアクセスできませんか?
Frame11->Label1->Caption = "aaa";
たしかにこれならできますが、設計時にフレームを修正するとフォームに貼り付けてるフレームの内容も
同時に修正されるので、Frame1->Label1->Caption = "aaa";みたいに直接フレームないのラベル等の変更ができるかなっておもったんですが
これはできないってことですか?
232 :
デフォルトの名無しさん :2005/09/30(金) 11:40:02
>>231 あ、できないんですか。納得です。
しかしフォームに貼り付けたフレームのボタンのクリックイベントを作成すると
Frame21->BitBtnClick(Sender);
みたいに、フレームのボタンクリックイベントを呼んでるんですよね。
何故これを呼ぶことができるのにキャプションの変更が出来ないのかが謎だなあ
ちなみに、フレーム内のボタンのクリックイベントでラベルの変更を行うのは可能なんですよね。
なんでだろ・・
235 :
デフォルトの名無しさん :2005/09/30(金) 12:00:04
煽るのは誰でもできるけど説明はできないんだよね
>>235 煽らずに説明してやればいいのに。俺はできないけど。
定期的にageて質問者を装い荒らしに来る奴だな。 ageてバカっぽい質問してきたら気をつけろ!!
239 :
デフォルトの名無しさん :2005/09/30(金) 13:59:47
質問です。 DBGridはDataSourceを指定せずにStringGridみたいにCellsのようなプロパティーで文字を設定することはできるのでしょうか?
DrawCellで文字上書きくらいは出来るだろうが、自分はそういう亜流の苦労嫌い。
XMLの<dc:date>で使われる"2005-06-09T13:43:13+09:00"という風な 形式の日時をTDateTimeに変換する方法を教えて下さい。
>>241 TXSDateTime* xsDateTime = new TXSDateTime();
xsDateTime->XSToNative("2005-06-09T13:43:13+09:00");
xsDateTime->AsDateTime でTDateTimeとして取り出し。
243 :
241 :2005/09/30(金) 21:47:31
>>242 ありがとうございます、ただこのTXSDateTimeというのを使うには
何をincludeする必要があるんですかね?
BCB6Proを使っているのですが。
ヘルプ見たんですが、XSBuiltIns.hとかなさそうですし。
245 :
241 :2005/09/30(金) 22:23:50
>244 どうもありがとうございました。 hppだったんですね、hとcppと試して、hppを失念してました。 お陰で希望通り動作しました。
>>242 そんなクラスがあったのか。勉強になったよ。
自作する必要なかったじゃんか・・・orz
cppは試さんでしょ普通w
質問です。 TListViewの以下のイベントで処理を行いたい のですがどうすればいいですか? 1:横スクロールバーを操作した時 2:ViewStyle = vsReportの時のカラム幅を変更中 お願いします。
249 :
デフォルトの名無しさん :2005/10/03(月) 11:21:44
データベースを使わずにDBGridって使えますか?
>>249 MyBase、具体的にはTClientDataSet。
251 :
デフォルトの名無しさん :2005/10/04(火) 10:40:19
>>250 隊長!!
5にはTClientDataSetがありませんが!!
お前のバージョンなんて知らんがな
253 :
デフォルトの名無しさん :2005/10/04(火) 11:35:03
はっ!!
はっ!!
256 :
デフォルトの名無しさん :2005/10/05(水) 02:50:51
リスト4-8 新しいフォームオブジェクトの作成と表示 void __fastcall TMainForm::CreateNewForm(String Name) { TForm *NewForm = new TForm2(Application); NewForm->Caption = Name; NewForm->Show(); }
仕事でBCB使えるようになった〜! ここまでくるのに長かった・・
258 :
デフォルトの名無しさん :2005/10/05(水) 08:08:06
すいませんが、Dos窓で実行するアプリを起動する方法を教えていただけないでしょうか? ダブルクリックで起動すると数秒で終わるものなのですが、 パッとDos窓が立ち上がるのが分かります 出来たらこのDos窓が見えないように実行できるとすごくうれしいです よろしくお願いいたします
>>258 ShellExecuteで最後の引数をSW_HIDEにすればいいと思う
260 :
デフォルトの名無しさん :2005/10/05(水) 13:38:14
RichEdit1 でマウス・キー入力を禁止する方法(ReadOnly プロパティではなく)を 教えていただけないでしょうか? よろしくお願いいたします。
261 :
デフォルトの名無しさん :2005/10/05(水) 13:42:33
>>260 Application->OnMessage
WM_KEYDOWN
WM_LBUTTONDBLCLK マウスの左ボタンをダブルクリックした
WM_LBUTTONDOWN マウスの左ボタンが押された。
WM_LBUTTONUP マウスの左ボタンが離された。
WM_RBUTTONDBLCLK マウスの右ボタンをダブルクリックした
WM_RBUTTONDOWN マウスの右ボタンが押された
WM_RBUTTONUP マウスの右ボタンが離された
WM_MBUTTONDBLCLK マウスの中央ボタンをダブルクリックした
WM_MBUTTONDOWN 中央のマウス ボタンが押された
WM_MBUTTONUP 中央のマウス ボタンが離された
ハンドルを見て RichEdit1 宛てなら WM_KEYFIRST から WM_KEYLAST までと WM_MOUSEFIRST から WM_MOUSELAST までを 無視させる
俺の周波数は100Hz
264 :
デフォルトの名無しさん :2005/10/05(水) 22:04:27
>>260 MSG msg;
// キーボード
while( PeekMessage( &msg, Handle, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE ) );
// マウス
while( PeekMessage( &msg, Handle, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE ) );
そんなことしなくても Handled を true にするだけ。
266 :
デフォルトの名無しさん :2005/10/06(木) 04:27:22
void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg,
bool &Handled)
{
//
http://thunder.prohosting.com/~cbdn/anmessag.htm //additional applicationEvents1
if(Msg.message == WM_MOUSEMOVE)
{
Caption = "Moved to " + IntToStr(LOWORD(Msg.lParam))
+ " : " + IntToStr(HIWORD(Msg.lParam));
Handled = true;
}
}
267 :
デフォルトの名無しさん :2005/10/06(木) 09:59:22
>>265 さん
RichEdit1
Handled = true;
どのようにコードを書けばいいのでしょうか?
すみません、Delphi ユーザなもんで procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); begin if Msg.hwnd = RichEdit1.Handle then case Msg.message of WM_KEYFIRST..WM_KEYLAST, WM_MOUSEFIRST..WM_MOUSELAST: Handled := true; end; end;
269 :
デフォルトの名無しさん :2005/10/06(木) 11:54:50
>>260 >>262 さん
>>265 さん
>>268 さん
ご教授有難うございます。
void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg,
bool &Handled)
{
//RichEdit1でキー・マウス入力禁止(ReadOnly プロパティは使用しない)
//additional applicationEvents1
if (Msg.hwnd == RichEdit1->Handle)
{
if ( (WM_KEYFIRST <= Msg.message) && (Msg.message <= WM_KEYLAST) )
{
Handled = true;
}
else if( (WM_MOUSEFIRST <= Msg.message) && (Msg.message <= WM_MOUSELAST) )
{
Handled = true;
}
}
}
270 :
デフォルトの名無しさん :2005/10/06(木) 13:35:18
void __fastcall TForm1::Button1Click(TObject *Sender) { RichEdit1->Lines->Text = "12345\nabcde"; RichEdit1->SelStart = SendMessage(RichEdit1->Handle, EM_LINEINDEX, 2 - 1, 0) + 4; SendMessage(RichEdit1->Handle, EM_SCROLLCARET, 0, 0); RichEdit1->SetFocus(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { RichEdit1->Lines->Text = "あいうえお\nかきくけこ"; RichEdit1->SelStart = SendMessage(RichEdit1->Handle, EM_LINEINDEX, 2 - 1, 0) + 4; SendMessage(RichEdit1->Handle, EM_SCROLLCARET, 0, 0); RichEdit1->SetFocus(); } Button1は二行目の「d」と「e」の間でカーソルが点滅しますが、 Button2は二行目の「き」と「く」の間でカーソルが点滅します。 共通コードで二行目の四文字目と五文字目の間でカーソルを 点滅させる事は出来ないのでしょうか?
それは自分で1バイト文字か2バイト文字かを判断しないと。
272 :
デフォルトの名無しさん :2005/10/06(木) 13:41:39
> 共通コードで二行目の四文字目と五文字目の間でカーソルを Delphiだとこれでうまくいきます。 function CharactersToBytes(const s: string; posi: integer): integer; var w: WideString; t: string; begin w := s; t := Copy(w,1,posi); result := Length(t); end; procedure TForm1.Button1Click(Sender: TObject); var p: integer; begin RichEdit1.Lines.Text := '12345'#13#10'abcde'; p := CharactersToBytes(RichEdit1.Lines[2-1], 4); RichEdit1.SelStart := RichEdit1.Perform(EM_LINEINDEX,2 - 1, 0) + p; RichEdit1.Perform(EM_SCROLLCARET, 0, 0); RichEdit1.SetFocus; end;
つづき procedure TForm1.Button2Click(Sender: TObject); var p: integer; begin RichEdit1.Lines.Text := 'あいうえお'#13#10'かきくけこ'; p := CharactersToBytes(RichEdit1.Lines[2-1], 4); RichEdit1.SelStart := RichEdit1.Perform(EM_LINEINDEX,2 - 1, 0) + p; RichEdit1.Perform(EM_SCROLLCARET, 0, 0); RichEdit1.SetFocus; end;
275 :
デフォルトの名無しさん :2005/10/06(木) 15:51:26
Delphiスレ行きなさい
VCL のことは Delphi スレできいたほうがよさそう
guest:male 16
278 :
デフォルトの名無しさん :2005/10/06(木) 20:28:23
ようこそ裏2chへ^^
あ〜あ、IP晒しちゃったよ
280 :
デフォルトの名無しさん :2005/10/07(金) 00:38:03
>>270 >>272 さん
>>273-274 さん
ご教授有難うございます。
int CharactersToBytes0(const AnsiString s, int posi)
{
WideString w;
AnsiString t;
w = (WideString)s;
t = (AnsiString)w.SubString(1, posi);
return t.Length();
}
int CharactersToBytes(const String s, int posi)
{
WideString w;
String t;
w = (WideString)s;
t = (String)w.SubString(1, posi);
return t.Length();
}
281 :
デフォルトの名無しさん :2005/10/07(金) 00:39:52
続き void __fastcall TForm1::Button1Click(TObject *Sender) { int p; RichEdit1->Lines->Text = "12345\nabcde"; p = CharactersToBytes(RichEdit1->Lines->Strings[2-1], 4); RichEdit1->SelStart = SendMessage(RichEdit1->Handle, EM_LINEINDEX, 2 - 1, 0) + p; SendMessage(RichEdit1->Handle, EM_SCROLLCARET, 0, 0); RichEdit1->SetFocus(); } //---------------------------------------------------------------------------
282 :
デフォルトの名無しさん :2005/10/07(金) 00:42:09
続き void __fastcall TForm1::Button2Click(TObject *Sender) { int p; RichEdit1->Lines->Text = "あいうえお\nかきくけこ"; p = CharactersToBytes(RichEdit1->Lines->Strings[2-1], 4); RichEdit1->SelStart = SendMessage(RichEdit1->Handle, EM_LINEINDEX, 2 - 1, 0) + p; SendMessage(RichEdit1->Handle, EM_SCROLLCARET, 0, 0); RichEdit1->SetFocus(); } //---------------------------------------------------------------------------
283 :
デフォルトの名無しさん :2005/10/07(金) 00:44:18
続き void __fastcall TForm1::Button3Click(TObject *Sender) { int p; RichEdit1->Lines->Text = "12345\nabcde"; p = CharactersToBytes0(RichEdit1->Lines->Strings[2-1], 4); RichEdit1->SelStart = SendMessage(RichEdit1->Handle, EM_LINEINDEX, 2 - 1, 0) + p; SendMessage(RichEdit1->Handle, EM_SCROLLCARET, 0, 0); RichEdit1->SetFocus(); } //---------------------------------------------------------------------------
284 :
デフォルトの名無しさん :2005/10/07(金) 00:48:44
void __fastcall TForm1::Button4Click(TObject *Sender) { int p; RichEdit1->Lines->Text = "あいうえお\nかきくけこ"; p = CharactersToBytes0(RichEdit1->Lines->Strings[2-1], 4); RichEdit1->SelStart = SendMessage(RichEdit1->Handle, EM_LINEINDEX, 2 - 1, 0) + p; SendMessage(RichEdit1->Handle, EM_SCROLLCARET, 0, 0); RichEdit1->SetFocus(); } //-------------------------
286 :
デフォルトの名無しさん :2005/10/07(金) 02:05:30
きょうじゅ けう― 【教授】 (名)スル (1)0 1 (ア)児童・生徒に知識・技能を与え、そこからさらに知識への興味を呼び起こすこと。 (イ)専門的な学問・技芸を教えること。 「国文学を―する」「書道―」 (2)0 大学などの高等教育機関において、専門の学問・技能を教え、また自らは研究に従事する人の職名。助教授・講師の上位。
287 :
デフォルトの名無しさん :2005/10/07(金) 02:08:29
>>285 問題解決したコードを
掲示板にフィードバックしなくていいのでしょうか?
やたら定義とかにこだわるヤツはどこにでもいるもんだな
290 :
258 :2005/10/07(金) 04:40:15
>>259 急な用事で出かけてしまいネットもなかなか見れなくて御礼が遅くなってすみません
帰り次第試してみたいと思います ありがとうございました
だいぶ長いこと経ちますが、ボーランドは新しいコンパイラは出さないのでしょうか? せめてVCLはともかく、コンパイラだけでも新しくしてほしい。
>>291 次のバージョンでboostとか使えるらしいよ
そんなにいっぱいあげても boost に言及してるのはたった1行 - Conformance for Boost and ACE. Almost 100% ANSI conformance. いままで対応してなかったのが驚き
ハァハァ
統合しても御利益ないことはだれでも分かるわけで、某が今頃気づくのが不思議。 Delphi も for Win32 と for .NET を分けて欲しい。C# はいらん。
当面の一番の問題点はこれ。 These are not planned. - Updates for BCB6 ( ゚Д゚)ゴルァ!!約束が違うだろうが。
ははは、買う気になった? BCB ユーザで買うヤツがいるかなぁ・・・
どゆこと?
を?ついに某はDelphi、C#抜きのBCB新製品を出す気になったか。 頼むぜ某さん。
抜きじゃない。 商品としてはDelphi2006, C++Builder2006, C#Builder2006が用意されるが 中 身 は 同 じ 。 FAQに書いてある。 特定言語だけのインストールはできるらしい。
なんでC#なんかにちからをいれてるんだ?そんなのよりc++の方があとう的に利用人口が多いと思うのだが
>>303 ・・・・・BCB6からのアップデートパスが無い時点でもう(´Д⊂ モウダメポ
また10万とか用意せにゃいかんのか
アップデートパスはあるだろ。普通に。
>>291 ボーランドはコンパイラ製作の人間を大量解雇したらしいですよ
新しいコンパイラは期待できないでしょう
人員が減った事は確かですけど Delphiにinlineや演算子オーバーロードが加わったり C++のWIN64ネイティブ対応が予定されているなど コンパイラも新しくなってますよ。
>コンパイラ制作の人間を大量解雇 プロダクツが多量のバグの悪寒。Updateに次ぐUpdateかよ('A`)
BCB6までは怒濤のリリースだったのにそれ以降はさっぱり。 あまり短いサイクルだとアップグレードの負担が大きいけど、 逆に長すぎると最新技術に乗り遅れ。 MSの様にある程度定期的にリリースしてくれればいいのに。
>>308 予定するのは勝手だが、まともに動くかどうかは予定に入ってるのか?(笑
まともに動くもの出したって、どうせ
>>311 には使いこなせないから意味ないやん(笑
そうか、だからまともなの出さないのか。当分無理だな、こりゃ
ってか、もう無理っぽいよ。主力は Win64 に行ったし
もうBorlandはどこかに身売りしろよ
Delphiスレ行きなさい
ParadoxDBのBLOBフィールドをDBファイル間でコピーしようとしています。 TStream* sourcestream = sourcetable->CreateBlobStream(sourcetable->FieldByName("blobfield"), bmRead); desttable->Edit(); TStream* deststream = desttable->CreateBlobStream(desttable->FieldByName("blobfield"), bmWrite); deststream->CopyFrom(sourcestream, 0); desttable->Post(); delete wrtstrmp; delete sourcestream; 一行目、読み込み時に既にデータが足りないのですが、なにかおかしいでしょうか?
318 :
317 :2005/10/12(水) 18:50:55
ごめんなさい。この部分に来る前のバグでした。コーディングはコレで合ってました。失礼しました。
319 :
デフォルトの名無しさん :2005/10/12(水) 23:24:55
Windows2000,BCB5+SP1です。 mosaic.dllという渡された*TCanvasに描画するdllを作りました。 extern "C" __declspec(dllexport) void mosaic(TCanvas *Canvas,DynamicArray<TRect> &Rect,int rectnum,int pixelsize){ ほげほげ } そして、呼び出し側のプロジェクトにその際に出来たmosaic.libを追加し、 プロジェクトのオプションの遅延ロードするdllにmosaic.dllを追加、 呼び出し側に extern "C" __declspec(dllimport) void mosaic(TCanvas *Canvas,DynamicArray<TRect> &Rect,int rectnum,int pixelsize); と記述して、 Graphics::TBitmap *MyBitmap; MyBitmap=new Graphics::TBitmap; このへんでビットマップ初期化〜描画 MosaicRectはRectクラスの動的配列 mosaic(MyBitmap->Canvas,MosaicRect,MosaicRect.Length,8); などと呼び出しています。 一見うまくビットマップが処理されるのが画面でもわかるのですが、 一度でもdllの中で関数が渡す*Canvasのプロパティを変更したりメソッドを 使ったりすると (例えば、Canvas->Brush->Style=bsSolid; の一行だけ実行してreturnするようにdllを書き換えても) 呼び出し側で delete MyBitmap; のところで例外が発生してしまいます。 ここであえて解放しなければプログラムは所定の目的どおりの動作をするのですが、 気持ち悪くてしょうがありません。 どうしてこうなってしまうのでしょうか?
それは、DLL にVCLオブジェクトを渡してはいけない、有名な格言に違反してるから。 DLL と exe を同じ環境・バージョンでコンパイルしても、それぞれ別個のライブラリ を参照していることになるのですよ。
Delphi だと共通パッケージを使わない限り、一般に dll と exe の間で オブジェクトはやりとりできない。動くこともあるけど、たまたま VMT の 相対アドレスが一致していた偶然と考えるべき。FAQ ですね。
>>320-321 Delphi2まではIDEにインストールしたコンポーネントはdllにコンパイルされてたぞ?
一般的にダメというならCOMなんか成立しない。条件による。
VMTはふつーにPEローダーによって再配置されるし。
現に
>>319 も
> 一度でもdllの中で関数が渡す*Canvasのプロパティを変更したりメソッドを
> 使ったりすると
と、わかってる。
このケースがダメな理由は、TBitmapがグローバル変数を参照するから。具体的にはCanvasやBrush等のGDIオブジェクトがキャッシュされているから。
メモリマネージャを共有して、Canvasを使ったらFreeMemoryContextsを呼ぶようにして、Brushなんかは変更しないようにすれば良さげ。(VCLソースをざっと見た限り。他になんかあるかも)
ただ、別個に注意点が沢山出来て面倒なのと、コンパイラ・ライブラリが同じバージョンであることを保証できないのとで、普通はやらないから格言になってるけれど…。
無条件にダメとか偶然とかそんなのでは無い。
このケースなんかだと、Bitmap.Canvas.Handleだけ渡して、.dllの中で別にテンポラリのTCanvas作って、そのHandleに渡されたHandleを代入して使えばどう?
なんだか、めちゃくちゃなレスをつける人がいるんだな。本質を理解してないのが 見え見えですね。 > このケースなんかだと、Bitmap.Canvas.Handleだけ渡して、.dllの中で別にテンポラリのTCanvas作って、 > そのHandleに渡されたHandleを代入して使えばどう? TCanvas は、ペンやブラシなどリソースマネージャが関与するデバイスコンテキストハンドル のラッパです。DLL と exe とで別々のマネージャを持ってるのにハンドルだけ渡して うまくいくわけ無いでしょ。一見うまくいくとしても、一方での内容変更が他方での 変更に自動的に反映するわけじゃないので齟齬が生じます。 TCanvas.Handle を DLL と exe で渡せないことは Delphi-ML でも過去に話題になりました。 VCL オブジェクトは、exe 内、 dll 内 で作成してその中で使う分には問題ないです。 やり取りはできません。
324 :
デフォルトの名無しさん :2005/10/13(木) 12:47:16
教えて厨であることは重々承知しておりますが、教えてください。 PC−ネットワーク(TCP/IP)−装置 という構成でPCと装置間で、データの送受信を行いたいのですが、 PC上の制御ソフトではネットワーク通信を行うために必要なコンポーネント(ライブラリ?)はどのようなものでしょうか? 根本的にネットワーク通信のイロハのイの字も知らないため、ネット上でヒント等を探したりはしているのですが、なかなか要領を得られません・・・。orz 尚、制御ソフトの設計はC++Builder5を使用し、RS232CやGPIB通信プログラムの設計を行ったことはあります。 よろしくお願いします。
つ Indy
>>319 dll と exe は同一の仮想メモリ空間なんだから、mosaic がなにをするのか知らない
けど、ビットマップのピクセルをいじるんだったら、Scanline[] をポインタの配列
として渡したらどうでしょうか?
または、TCanvas で行き来できないので、TBitmap の SaveToStream() でメモリイメージ
としてやり取りするとか。
327 :
デフォルトの名無しさん :2005/10/13(木) 15:41:58
AplphaBlend API だと pf24bit でも1行で簡単にできるけどね。
329 :
319 :2005/10/13(木) 18:46:10
皆様ご指導ありがとうございます。 dll自体がよくわかっていないのですが、dllとexeはメモリは共有するがインスタンスを 共用できないのでしょうか。それが共通パッケージを使うとそれができる? 今回の目的は、dllファイルを削除することによって関数が無効になる処理を入れること ですので、共有ライブラリを使用する方法で試したらきちんとTBitmapが解放できました のでこれでいこうと思います。ありがとうございました。
>>323 は?
TCanvasは色々キャッシュされたりはするけれど結局単なるDCのラッパーで、たとえばHandleにGetDC(0)とかで取ってきたデスクトップ全体のデバイスコンテキストなんか代入して使えちゃったりするわけなんだが…。
できないのであれば、そもそもTCanvasのHandleが書き込み可能になってないだろ。
TCustomControl.PaintWindowなんか、Windowsから渡されたDCをCanvasのHandleに代入してるだけだぞ。
勿論、TCanvasは色々キャッシュしたりするので、その点は気を使う必要がある。
あと、オブジェクトそのものも、同バージョン同ライブラリが確実なのであれば、メモリマネージャ共有すれば、グローバル変数とかRTTIがexeとdllで別になることさえ気をつけてれば、渡せるよ。諸々の条件クリアがめんどくさいが。
BCB用のリファクタリングツールってないですか? 手動で変数名変えるのに疲れました・・・orz
together
334 :
デフォルトの名無しさん :2005/10/15(土) 23:58:58
TMemoの(総)行数ってわからないでしょうか? Memo1->Lines->Count がそうだと思ってやってみたのですがどうも違うみたいで・・・ よろしくお願いします
>334 いやそれでいいとおもいますけど? WordWrapがonだとうまくいかないかも
TStringList に写し取って Count とか
337 :
デフォルトの名無しさん :2005/10/16(日) 08:58:35
338 :
デフォルトの名無しさん :2005/10/16(日) 10:43:45
void __fastcall TForm1::Button1Click(TObject *Sender) { TStringList* MyList = new TStringList(); AnsiString a = "070二郎"; AnsiString b = "100一郎"; AnsiString c = "080三郎"; MyList->Add(a); MyList->Add(b); MyList->Add(c); MyList->Sort(); Memo1->Lines->Add(MyList->Count); Memo1->Lines->Add(MyList->IndexOf(a)); Memo1->Lines->Add(MyList->IndexOf(c)); Memo1->Lines->Add(MyList->IndexOf(b)); Memo1->Lines->Add(MyList->Strings[0]); Memo1->Lines->Add( ( (MyList->Strings[0]).SubString(1,3)).ToInt() ); Memo1->Lines->Add( ((WideString)MyList->Strings[0]).SubString(4,2) ); delete MyList; }
339 :
デフォルトの名無しさん :2005/10/16(日) 16:18:34
以下の例では TStatusBar と TRichEdit が必要です。フォームの OnCreate では,RichEdit のサイズ変更および RichEdit1SelectionChange で処理される OnSelectionChange イベントの設定を行います。 RichEdit コントロールで文字,もしくは範囲を選択すると,現在の文字位置や選択開始および終了位置の情報がステータスバーに表示されます(または,コードを直接 OnSelectionChange イベントハンドラに貼り付けることができます)。 void __fastcall TForm1::FormCreate(TObject *Sender) { RichEdit1->Align = alClient; RichEdit1->OnSelectionChange = RichEdit1SelectionChange; StatusBar1->SimplePanel = true; } //--------------------------------------------------------------------------- void __fastcall TForm1::RichEdit1SelectionChange(TObject *Sender) { StatusBar1->SimpleText = AnsiString("選択の開始: ") + IntToStr(RichEdit1->SelStart) + AnsiString("選択の終了: ") + IntToStr(RichEdit1->SelStart + RichEdit1->SelLength); } 選択の開始を行表示に変更する方法がわかりません。 よろしくお願いします。
EM_LINEFROMCHAR
341 :
334 :2005/10/16(日) 23:27:06
>>335-338 書き込みしてから急に用が出来てしまって、まだ出先で試していないのですが
帰ってすぐにやってみようと思います
みなさま本当にありがとうございました
342 :
デフォルトの名無しさん :2005/10/17(月) 00:26:49
ボーランドさんへ 製品情報だけでも早く公開してください。
画像のラベリング、特徴を調べたりする事のやり方、仕組みについて教えてください。 お願いします。
345 :
デフォルトの名無しさん :2005/10/19(水) 22:41:57
ユニットテストやってる人いますか?
YAML を扱えるライブラリないっすか?
347 :
デフォルトの名無しさん :2005/10/20(木) 23:41:02
Wavファイルの再生について教えてください sndPlaySound()で再生自体は出来たのですが、 指定した位置(ファイルの最初から一分後など)から再生をしたいのです 検索してみてDirectXとかを使うと出来そう(?)なことはわかったのですが 私にはちょっと敷居が高いような感じでした、、 よろしくお願いいたします
>>347 TMediaPlayer使って 1分後を
MediaPlayer1->Positionで指定して再生すれば?
349 :
デフォルトの名無しさん :2005/10/22(土) 08:37:01
OnCreate イベントは,フォームを作成したときに発生します。 __property Classes::TNotifyEvent OnCreate = {read=FOnCreate, write=FOnCreate, stored =IsForm}; 説明 OnCreate イベントハンドラを記述すると,フォームが作成され, TCustomForm のコンストラクタによって呼び出されたときに 特別な処理を実行することができます。イベントハンドラを実装, あるいは TCustomForm のコンストラクタのオーバーライドのいずれかを 行う必要がありますが,両方を行ってはなりません。 OnCreate イベントで作成されたオブジェクトは OnDestroy イベントで解放する必要があります。 フォームが作成されるとき,Visible プロパティが true であれば イベントが以下の順序で発生します。 1. OnCreate 2. OnShow 3. OnActivate 4. OnPaint 注意フォームのコンストラクタとのやり取りが不良になる可能性が あるので,C++Builder で OnCreate イベントを使うことはお勧めできません(OldCreateOrder を参照)。かわりに,フォームコンストラクタをオーバーライドすることをお勧めします。
350 :
デフォルトの名無しさん :2005/10/24(月) 12:44:51
すみません教えてください 10/12のWinUpdate MS-052を行ってから C++Builder5で作成した ActiveFormが動作しなくなりました ベリサインは取ってあります(本質的に関係ないですが) どなたか対応されたかたいますか?
みなさんmanifestファイルは付けていますか? 一応DelもBCBも6のバージョンまでは、公式にはマズイ ことになっているはずなんですけど。 WinSCPなんかは付いてますね。
352 :
デフォルトの名無しさん :2005/10/24(月) 18:30:52
manifest!manifest!manifest!
353 :
デフォルトの名無しさん :2005/10/26(水) 17:57:07
これを見たあなた!!ヾ(・ε・。) あなたゎこの1ヶ月以内に好きな人と両思い またゎ付き合っている子ゎすごくLOVE2になります!! それにゎこの文章をコピーして他の掲示板に3回別の掲示板に はればOK!!!たったこれだけであなたわぁ 最高の生活がおくれます!! ただしこれをしなかったら きっと両思いになることゎないでしょう!!(/□≦、) やった子ゎ今でゎ学校1のLOVE2カップルです!! これをやらなかった子ゎすぐに彼氏と別れてしまいました
自宅のローカルな掲示板でもOK?
355 :
デフォルトの名無しさん :2005/10/28(金) 22:41:04
384 :デフォルトの名無しさん :2005/10/28(金) 15:06:44
TPageControlの枠の色は親FormのColorと同じになりますが、
親FormのColorを実行中に変更してもすぐに反映されません。
一度Visibleをfalseにしてから再度trueにすると反映されますが、
もうちょっとスマートな方法は無いでしょうか。
385 :デフォルトの名無しさん :2005/10/28(金) 16:11:23
>>384 InvalidateRect(PageControl1->Handle, NULL, TRUE);
356 :
デフォルトの名無しさん :2005/10/30(日) 22:20:36
357 :
デフォルトの名無しさん :2005/10/30(日) 22:27:56
Description: Publisher writes: C++ with the Borland C++Builder presents comprehensively and systematically all language elements of the ANSI/ISO standard of C++. Contexts and language concepts are in the foreground. The author uses the version 6 of the Borland C++Builder as development system. This visual system is the C++ variant of the Pascal development system Delphi and makes a simple development of programs for Windows possible. Almost all examples and exercises are Windows programs. However, since the ANSI/ISO standard of C++ is in the foreground, this book is also suitable for readers who work with other compilers. The class library of the C++Builder (VCL) is used as an example of a class hierarchy. The CD-ROM contains many examples and exercises with solutions. Keywords: C++, C++ Builder, Client/Server, Programming Languages, Objectoriented Programming, Windows Programming Contents: From the contents: The Integrated Development Environment.- The Component Palette.- Elementary Data Types and Statements.- Structured Data Types and Predefined Classes.- Statements and Impressions. - Functions.- Modular Programming in Namespaces.- Object-Oriented Programming.- The Visual Component Library (VCL).- Templates and the STL.- Miscellaneous.- Bibliography.- Index.
358 :
デフォルトの名無しさん :2005/10/31(月) 13:54:49
Replace使ってExcelの文中に改行したいのですが Excelのマクロでどんな感じで処理しているか見て みたのですが、いまいち分かりません。 ご教授頂けないでしょうか? 作りたい処理(マクロで登録した手順)は [編集]置換→検索文字列入力→置換後の文字列入力部でCtrl+j→置換 です。 宜しくお願いします。
↑荒らし
Unicode使いたいなぁ
あたらしいバージョンはいつ発売するんですか?
363 :
デフォルトの名無しさん :2005/10/31(月) 23:07:39
絶対、来年!!!!!!!!!!!!
364 :
デフォルトの名無しさん :2005/11/01(火) 09:36:33
365 :
デフォルトの名無しさん :2005/11/01(火) 09:38:50
366 :
デフォルトの名無しさん :2005/11/01(火) 09:41:54
367 :
デフォルトの名無しさん :2005/11/01(火) 09:53:27
日本語版は来年のようだな VCLは英語版じゃどうしようもないのが悲しいな
>>365 Upgrageパスが残されていたか。正直ホッとした。
しかし4万超えるな。これだけ間を置いたから仕方ないのか。
今回、Professional高くねえ?
>>370 向こうの値段はこっちより高い。
6Proも実売$900-$1000はする。
372 :
:2005/11/01(火) 13:50:18
Java使っててBuilderにも興味あるんですが文字列はユニコードなの?Javaみたいに。 マルチバイト文字の処理の仕方しりません。教えて。
>>371 情報サンクス。じゃあ待つとするか。絶対買うからね>某
>>372 WindowsはUnicodeとマルチバイト(日本語ではShift-JIS)の両方から選べるようになっている。
ただしUnicodeはNT系限定という罠。
C++自体はWindowsと無関係にUnicodeもマルチバイトも好きに使えるから、
必要に応じてマルチバイトとUnicodeとを変換していけばいい。
×
>>373 ○
>>374 orz
しかし、どちらにしても許諾コードの取得には制限があるから、
意味ないと思うんだが。
今回のBCB2006は、boostへの対応度が100%近くになる
らしいので、凄く期待している。頼んだよ某さん。
378 :
デフォルトの名無しさん :2005/11/01(火) 22:56:27
379 :
デフォルトの名無しさん :2005/11/02(水) 00:12:10
BCB2006は、.NETに対応しないんですか?
.NET 対応は予定なし
.NETって普及してんの?
スレちがい
ちょっとぐらいええやんか、ケチ。
どんな巨大なoff topicも最初はちょっとだ。 言い出しっぺが自分の「ちょっとさ」を売りにすることで 免除されることなんて何も無い。
385 :
デフォルトの名無しさん :2005/11/02(水) 15:49:31
すみません、質問です。 三次元座標をプロットしていくようなプログラムは C++ビルダーでは難しいでしょうか? もし何か元になるようなプログラムがありましたら、 教えていただけると大変助かります。 よろしくお願いします。
386 :
デフォルトの名無しさん :2005/11/02(水) 16:22:23
何故にC++Builderでは難しいと思うかが謎
387 :
デフォルトの名無しさん :2005/11/02(水) 16:44:15
>>385 幾何計算が重要だろうから、開発ツールの差異なんか些細なもんじゃないか?
座標変換(3次元空間⇔2次元平面、2次元平面⇔スクリーン座標)だとか、設計の
方で時間と頭を使うと思うよ。
>>386 たぶん、
>>385 さんの脳内にある完成品と同じ機能を持った
コンポーネントがC++Builderに存在しないから、「C++Builderでは難しい」
ということになるのだと思う。
389 :
デフォルトの名無しさん :2005/11/02(水) 21:37:09
>>388 そんなコンポーネントはサードパーティーの高価なライブラリ
しか無さそうだ。俺はCAD設計で座標系は慣れたけど、最初の
作り込みは大変だぞ。ベクトル計算は浮動少数点数の誤差管理が
肝だし。趣味のプログラミングなら曖昧でも構わないが・・・
Excel貼り付けろって話じゃないかな
391 :
デフォルトの名無しさん :2005/11/03(木) 01:17:14
392 :
デフォルトの名無しさん :2005/11/03(木) 01:23:22
393 :
デフォルトの名無しさん :2005/11/03(木) 02:07:03
>>392 いやまあ、グローバル変数を使ったからといってパソコンが熱暴走して爆発すると
いうわけでもないので、個人で自分用にプログラムを作っている限りは、
構わないんじゃないかと・・・
グローバル変数が嫌われるのは、どこか知らないところで他人がいじっている
かも知れないけど、それを知るすべがないため。あるいは、逆に、どこかよそで
あらかじめ初期化もらっておかなければならないときに、その変数の値だけを
見たのでは、初期化されているかどうかを確認できないというため。
自分ひとりで小規模なプログラムを作っている場合なら、まあ問題ない。
で、勉強したいなら、"グローバル変数 シングルトン" で検索してみるといい。
これはC++Builder固有の話じゃなくてC++言語一般の質問にすべきものだから、
もし続けるならそちらのスレッドに移動しよう。
395 :
デフォルトの名無しさん :2005/11/03(木) 12:22:38
全く完全にスレ違いだけど、コピペ荒らし君だろうか???
反応してる香具師も荒らし
398 :
372 :2005/11/03(木) 17:26:05
>>375 すいません、返答遅れました。
教えてくれてどうもありがとう。
399 :
デフォルトの名無しさん :2005/11/04(金) 09:19:57
>>392 クラス内で定義された変数のことを、メンバ変数といい、
クラス内で定義された関数のことを、メンバ関数と呼びます。
メンバ変数は、通常 private: キーワードで指定して、
クラス外からアクセス出来ないようにします。メンバ関数は、
public: キーワードで指定して、外部からアクセス出来るようにしています。
クラス内だけからしかアクセス出来ない仕組みはカプセル化と
呼ばれますが、これのおかげでバグが出ても直ぐに修正出来る
プログラムを作ることが出来ます。クラス内のバグは、クラス内のみを
見れば良いということです。むやみやたらと、どこからでも参照出来る
グローバル変数を多用してしまうと、バグが出たときに非常に
修正しにくいプログラムになってしまいます。
400 :
デフォルトの名無しさん :2005/11/04(金) 09:21:24
401 :
デフォルトの名無しさん :2005/11/05(土) 16:00:40
すいません初歩的な質問ですが RichEdit内で現在カーソルがある所の(先頭からの)行数を知るにはどうすれば良いのでしょうか? よろしくお願いします。
402 :
デフォルトの名無しさん :2005/11/06(日) 10:47:17
EM_LINEFROMCHAR
勉強中の奴にいっとくが 主キーの定義は一つのカラムに。 内容はユニークなだけで意味の無いものにしておけよ。 参考書に書いてても伝票番号、明細番号とかの複合キーにしないように。
404 :
デフォルトの名無しさん :2005/11/06(日) 11:36:45
>>403 >参考書に書いてても伝票番号、明細番号とかの複合キーにしないように。
なんで?
>>404 意図的に "sag e"なんて書いてスレをあげるような
コピペ荒らしに、いちいち反応しない。スレの内容と何の
関係もないじゃん。
日付の文字列を、「Sat, 1 Oct 2005 17:50:11 +0900」のような英語表記で得たくて、次のように記述しました。 (filedate は、TDateTime型の変数) filedate.FormatString("ddd','d' 'mmm' 'yyyy' 'hh':'nn':'ss' +0900'"); すると、曜日の省略形(ddd)や、月の省略形(mmm)が、日本語表記になるようで、次のような文字列になってしまいました。 土, 1 10 2005 17:50:11 +0900 FormatStringメソッドを利用して、「Sat」とか「Oct」とかのような英語表記を得るにはどうすれば良いのでしょうか? ヘルプによると、曜日の省略形は ShortDayNames グローバル変数にあり、 月の省略形は ShortMonthNames グローバル変数にあると記述されています。 というわけで、以下のようにあらかじめ記述しておけば、英語表記にすることは 可能でした。 ShortDayNames[0] = "Sun"; ShortDayNames[1] = "Mon"; ShortDayNames[2] = "Tue"; ShortDayNames[3] = "Wed"; ShortDayNames[4] = "Thu"; ShortDayNames[5] = "Fri"; ShortDayNames[6] = "Sat"; しかし、どうもこの書き方はスマートではないような気がするのですが…。 何か TDateTime のメソッドなどを利用して、英語表記の日付(曜日と月)を得る方法はないものでしょうか?
>>407 WinAPIを直接呼べばできる。ほかのやり方はしらん。
TCHAR Buf[256];
SYSTEMTIME st;
GetSystemTime(&st);
LCID lcid = MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT);
GetDateFormat(lcid, 0, &st,
TEXT("ddd','d' 'MMM' 'yyyy'"), Buf, sizeof Buf / sizeof Buf[0]);
MessageBox(0, Buf, TEXT(""), MB_OK);
日付と時刻用にそれぞれGetDateFormatとGetTimeFormatという2つにわかれているのに注意。
BCB6でMP3ファイルを再生する方法を教えてください。
410 :
デフォルトの名無しさん :2005/11/07(月) 12:15:16
>>407 FormatString() を呼び出す前に SysLocale を設定すれば良いと思ったが失敗。
調べてみたら FormatString() 内部で呼び出している GetDataFormat() の第一引数が SysLocale では無く GetThreadLocale() だった。
結局
>>408 のようにするか、SetThreadLocale() 使ってロケールをセットするしかない見たい…さて、どちらが面倒だろう
あー、ロケール設定しても強制的に ShortDateNames を参照するようになってるのか… >SetThreadLocale() 使ってロケールをセットするしかない見たい は取り下げ
413 :
デフォルトの名無しさん :2005/11/08(火) 04:44:22
デフォルトプリンタを設定するAPIや例題などを知りたいのですが 宜しくお願いします。
414 :
デフォルトの名無しさん :2005/11/08(火) 10:36:01
"プリンターを初期化できません" のエラーが発生してしまいます。 通常はこのようなエラーは発生しませんが強制的にプリンターを初期化すると回避可能です。 #include <printers.hpp> __(途中省略)__ char p_name[256], p_drv[256], p_port[256]; THandle devm; TDevMode *dmw; //プリンターの設定を変更 //GetPrinter は2回呼び出して下さい。 //2回呼び出さないとプリンタ情報を取得できません。 Printer()->GetPrinter( p_name, p_drv, p_port, devm ); Printer()->GetPrinter( p_name, p_drv, p_port, devm ); Printer()->SetPrinter( p_name, p_drv, p_port, devm ); __(以下省略)__
415 :
デフォルトの名無しさん :2005/11/08(火) 10:36:54
GetDeviceCapsの引数(index)にはもっといろいろあります。 ちなみに、 HORZRES + PHYSICALOFFSETX * 2 = PHYSICALWIDTH VERTRES + PHYSICALOFFSETY * 2 = PHYSICALHEIGHT HORZRES / LOGPIXELSX * 25.4 = HORZSIZE VERTRES / LOGPIXELSY * 25.4 = VERTSIZE の関係があるようです。 で、例えば、mBitmapというビットマップデータをgPrintResの解像度(dpi)で印刷する場合 doubleLogPixelsX,LogPixelsY; TRectr; LogPixelsX = GetDeviceCaps(Printer()->Handle,LOGPIXELSX);//ディスプレイの幅のピクセル数(論理インチ当たり) 解像度(dpi) LogPixelsY = GetDeviceCaps(Printer()->Handle,LOGPIXELSY); r.left = gPrintOffX * LogPixelsX / 25.4;//左上のオフセット ピクセル換算 r.top = gPrintOffY * LogPixelsY / 25.4; r.right = r.left + mBitmap->Width * LogPixelsX / gPrintRes;//描画幅 ピクセル換算 r.bottom = r.top + mBitmap->Height * LogPixelsY / gPrintRes; Printer()->BeginDoc(); Printer()->Canvas->StretchDraw(r,mBitmap); Printer()->EndDoc(); のようにします。
416 :
デフォルトの名無しさん :2005/11/08(火) 17:38:52
WinInet.dllのFTP関連API一覧 API概要 InternetOpen接続のための情報を初期化する InternetConnectFTPサーバーと接続する FtpCreateDirectoryFTPサーバー上に新規ディレクトリを作成する FtpDeleteFileFTPサーバーからファイルを削除する FtpGetCurrentDirectoryFTPサーバー上のカレントディレクトリを取得する FtpGetFileFTPサーバーからファイルを取得する FtpPutFileFTPサーバーへファイルを転送する FtpRemoveDirectoryFTPサーバーからディレクトリを削除する FtpRenameFileFTPサーバー上のファイル名を変更する FtpSetCurrnetDirectoryFTPサーバー上のカレントディレクトリを指定する InternetCloseHandleInternetConnectで取得した情報領域を解放する FtpOpenFileFTPサーバー上で読み書きするファイルを指定する InternetQueryDataAvailable指定したファイルから読み込み済みのバイト数を返却する InternetReadFile指定したファイルから読み込む InternetWriteFile指定したファイルに書き込む InternetCloseHandleFtpOpenFileで取得した情報領域を解放する FtpFindFirstFile条件に一致するファイル名の集合を返却する InternetFindNextFileファイル名の集合からファイル名を取得する InternetCloseHandleFtpFindFirstFileで取得した情報領域を解放する
417 :
デフォルトの名無しさん :2005/11/09(水) 13:43:39
シェアウェアなどで、aviファイルをフレームレート毎に JPEG画像を生成できるものを使ったことがあるのですが、 それの逆で、複数枚のJPEG画像からaviファイルを生成する 方法を探しています。 windowsアプリが不慣れなもので、なかなか探せずにいるのですが DirectShowというのでできるのかなと思ったのですが、その見解 はあっていますでしょうか。 想定している環境は windows2000 server or windows2000 pro or windows xp pro です。 DirectShowというのは、DirectXの一部で上記のOSをインストールして あれば特にライセンス費用を払わなくても使用できるのですよね。 (基本的なことですみません) ほかにJPEG画像→avi生成ができるものがあれば教えてください。 開発環境はC++Builder6 proです。
TPageControl下のTTabの見出し(?)の文字の色をタブそれぞれ別に ダイナミックに変えることは可能でしょうか? もし可能でしたらその手法をお教え頂けないでしょうか?
419 :
デフォルトの名無しさん :2005/11/09(水) 19:06:00
>>409 ネタかもしれんがレスしとく
BCB標準のTMediaPlayerコンポじゃ再生できなかった気がする
デコーダのソースの扱いやストリーミングが面倒なら
DirectShowで再生するのが簡単
IGraphBuilder play mp3 でググりなー
現在アクティブのメモの内容をCtrl+Qでゲットするプログラムを 書いたつもりなのですが、ゲットしてきてくれません。 助言ください。 __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){ RegisterHotKey(Handle, 0x0000, MOD_CONTROL, 'Q'); } void __fastcall TForm1::FormDestroy(TObject *Sender){ UnregisterHotKey(Handle, 0x0000); } HWND __fastcall GetActiveInput(){ HWND h; DWORD pid; DWORD tid = GetWindowThreadProcessId(GetForegroundWindow(), &pid); if ( AttachThreadInput(GetCurrentThreadId(), tid, true) ){ h = GetFocus(); AttachThreadInput(GetCurrentThreadId(), tid, false); }else h = GetFocus(); return h; } void __fastcall TForm1::WMHotKey(TMessage & Msg){ if(MAKELPARAM(MOD_CONTROL,'Q') == Msg.LParam){ HWND hwnd = GetActiveInput(); std::vector<char> buffer(GetWindowTextLength(hwnd) + 1); // 持ってくる GetWindowText(hwnd, &buffer[0], buffer.size()); // 設定する SetWindowText(Memo1->Handle, &buffer[0]); } }
422 :
418 :2005/11/10(木) 11:37:39
>>419 ありがとうございました。以下、他の方の参考となれば。
TPageControl* MemoPage;
MemoPage->OwnerDraw = true;
MemoPage->OnDrawTab = MemoPageDrawTab;
//---------------------------------------------------------------------------
void __fastcall TMainForm::MemoPageDrawTab(TCustomTabControl *Control, int TabIndex, const TRect &Rect, bool Active)
{
RECT rect(Rect);
static const UINT opt(DT_VCENTER | DT_CENTER | DT_SINGLELINE);
// Tab自体の色
Control->Canvas->Brush->Color = clBtnFace;
Control->Canvas->FillRect(Rect);
// Tabの文字の色
Control->Canvas->Font->Color = TabIndex == 0 ? clBlack : clRed;
DrawText(Control->Canvas->Handle, MemoPage->Pages[TabIndex]->Caption.c_str(), MemoPage->Pages[TabIndex]->Caption.Length(), &rect,
opt
);
}
>>421 中身をじぇんぶ持ってくるんなら
TMemo::SelectAll();
TMemo::CopyToClipboard();
424 :
デフォルトの名無しさん :2005/11/12(土) 09:34:12
昨日まで、問題なく動作していたプログラムを、実行時パッケージ を使わない設定に直して、Build Allしたら、いきなりコンパイルエ ラーが出るようになりました。 設定を元に戻しても、直りません。いったいどうなっちゃんだろ〜 ファイル:func1.hの中で以下を定義しています。 #include <vcl.h> class A { int i1; public: void __fastcall fc1(TStringGrid *sp); }; TStringGridの型名がエラーと指摘されます。 午前中に出荷しなければならないのに・・・悪戦苦闘しています。 どなたかおわかりでしたら解決策をお教え下さい。お願いします。
とりあえずエラーの全文。設定変える前に何かやったとか
>>424 #include <Grids.hpp>は?
>>427 SelectDirectoryとか標準で入ってるだろ。
そもそもソース提供されてるんだから、それをそのままBCBでビルドすれば使える。
BCB6でDirectX9ってつかえないの?
マウスカーソル直下のコントロールを取得したいのですがうまくいきません。 if (this->ControlAtPos(this->ScreenToClient(Mouse->CursorPos), true, true) == ListView1) どうやったらListView1を取得できますか?
>>431 WindowFromPoint / CheldWindowFromPoint
434 :
デフォルトの名無しさん :2005/11/17(木) 20:30:24
標準キーボードのENTERキーなのか、 テンキーのENTERキーなのかを判定するには どのようにすればいいのでしょうか?
435 :
デフォルトの名無しさん :2005/11/17(木) 22:45:47
Builder 5使っています。 デバッグで、ある変数を書き換えたら止めるというのは、どうやればよいのでしょうか。
436 :
デフォルトの名無しさん :2005/11/18(金) 08:45:08
>>435 ブレークポイント一覧で、右クリック、プロパティ、ブレーク条件を設定でできない?
Delphiはこれで出来るんだけど・・・
何でC++Builder使いの方々は皆優しくて親切なんですか?
解決策があるから回答レスがある。
優しくない人は書き込まない・・・かな?
ティンポラリフォルダの場所を取得する方法を教えてください
>>441 char tempPath[MAX_PATH + 1];
GetTempPath(MAX_PATH, tempPath);
443 :
デフォルトの名無しさん :2005/11/18(金) 14:31:09
このスレは四個ぶんのバファリンから作られてます。
BCB6を使っています BCB固有の質問ではないかもしれませんがご容赦ください。(ぺこり) ある変数が桁あふれしたかを知りたいのですがどうすればいいでしょうか? CPUのオーバーフローレジスタ(?)を監視すればよいのかな?と思い、 ヘルプを調べてみたのですがそれらしい記述が見つけられませんでした。 よろしくお願いします。
フラグレジスタのOVとCYに注目。 符号付変数だとOVが1に、符号なし変数だとCYが1になります。 BCB6は手元にないのでわからんけど、レジスタは見れると思う。 「オーバーフロー フラグレジスタ」とかググったらすぐ見つかったぞ。
フラグレジスタをみるのは当然。どうやって見るかを質問してるんだろ
目で見る。耳で聞く。そして口から食べる。
例えば _EFLAGS & 1 でキャリーフラグが見えるよ と言ってみる
>>448 unsigned int flag;
__asm
{
pushfd
pop flag
}
if(flag & 0x80)
printf("overflow\n");
if(flag & 1)
printf("carry\n");
自分で調べる癖をつけましょう。
452 :
446 :2005/11/20(日) 00:45:19
>>447-451 どうもありがとうございます
helpを調べていたら「C++Builder のレジスタ疑似変数表」というのを
見つけました。
これの_FLAGSを見るとオーバーフローが分かりそうな感じ(まだ試してませんがw)
です。
お騒がせしました(*´∀`)
453 :
デフォルトの名無しさん :2005/11/20(日) 22:40:10
TSplitterにOnDblClickイベントを追加するにはどうしたらよいのでしょうか?
>>453 Parentに入ってるコントロールのウィンドウプロシージャをサブクラス化してメッセージぶんどってくるしかないんでない?
TGraphicControlはウィンドウ持たないし。
455 :
デフォルトの名無しさん :2005/11/22(火) 12:22:03
(数値地図から)200×200の数の行列?を読み込まし、iと、i+1と、j、 j+1で四点をとり、その4点の一番大きい値から小さい方へいくプログラムがつくれません 参照できるサイトありますか?わかる人いますか?ヒントください>< もう三ヶ月悩んでます、助けて 馬鹿な為ほんとプログラムわからないんです
山をだんだん降りていくようなこと? 単純にその4点の値を比較して小さいのを選ぶだけだと すぐに無限ループにはまりそうだけど
ダイクストラ法の話か?
おそらく、高度情報のはいった配列が与えられていて、 スタート点を指定すると、そこから低い方向に一歩ずつ下りていく ようなプログラムを作りたいんだろうな。 終了条件とか、同じ低さの点が二つ以上あったときにどうするのか とか、あいまいなところがかなりあるけど、まあそれはいいとして、 マルチポストはいただけない。 そもそも、VCともC++Builderとも関係ない、C/C++の一般的な 質問じゃないか。
VBでやれば?
C++Builder 6コンポーネント活用ガイド&実践プログラミング
Vol.4 インターネット編1、Vol.5 インターネット編2
がおもしろそうなので買おうかなと思ってAmazonのページを
見ていたら、Professional版じゃないとサンプルの一部しか
動かせないYO、みたいな不吉な書き込みがありました・・・orz
じぶんはPersonal版しか持っていないのですが、
http://www.cutt.co.jp/book/4-87783-106-1.html (Vol.4) (28〜32章)
http://www.cutt.co.jp/book/4-87783-108-8.html (Vol.5) (33〜39章)
買ってしまっても大丈夫でしょうか?
第9部 インターネットからのパソコンへのアクセス
第10部 メールプログラミング
第11部 Webクライアントプログラミング
第12部 応用プログラミング
第9部のFTPクライアントと第10部、第11部が動かせれば、
(できれば第12部も)買っても良いかなあ、なんて思うのですけども
結構値段が、いい値段だったりして・・・おもいきって勢いとかで
買いにくいです・・・orz
>>463 Indy9をインストールすればいいじゃん。
その本に書いてある以上の事が出来る。
>>464 最近プログラミングをやり始めたばっかりで、、、
C++Builder 6コンポーネント活用ガイド&実践プログラミング
のVol.6を、CD-ROMのサンプルコードを参考にしながら、さっき
一通り終わらせることができたみたいなかんじで、、、
Indy9が何なのか・・・C magaとかの連載で見たことがあるような・・・
コンポーネントの一種とか???あまりよくわからないんですけれども、
あの、その、Personal版でもVol4、Vol5は動かせるでしょうか?
Vol6でコードを打ってみて動かしてみて、プログラミングは面白いもの
なんだなぁ、なんて思ったりしていて、、、Vol4,5も書いてる人が同じ人
みたいなので、わかりやすいんじゃないかなぁ、実際、じぶんの手で
コードを打って動かしてみることが、このひとの本だったら、できるん
じゃないかなあ、なんて思っているかんじなのですけれども。。。
(なんかへたれですみません。。。orz)
467 :
465 :2005/11/24(木) 22:33:29
465です。 よく考えてみると、それは、作者さんに直接聞いたほうが 良いんジャマイカ、みたいな空気読めてない風な質問をして しまっているようなかんじになってしまっていて、すみません。 華麗にスルーでよろしくお願いしますw
すまんのう。 Personalを持っている人の話は、ここではあまり聞いたことがないんじゃよ。 Builder-MLででも聞いてみれば?
httpやftpならWinInetで十分な希ガス
471 :
デフォルトの名無しさん :2005/11/25(金) 09:36:19
てst
472 :
デフォルトの名無しさん :2005/11/25(金) 20:13:26
でもIndyの方が簡単
473 :
デフォルトの名無しさん :2005/11/26(土) 13:34:33
RichEditで選択した範囲の背景色を変える方法を 教えていただけないでしょうか。
ルートウィンドウ(バックグラウンドorデスクトップ)で右クリック・プロパティ 「デザイン」タブを選択し、「詳細設定」ボタンをクリック 「デザインの詳細」ダイアログ内で「指定する部分」を 「選択項目」にして、「色1(または背景色)」を変更。
475 :
デフォルトの名無しさん :2005/11/26(土) 16:31:13
SystemMetrics
477 :
デフォルトの名無しさん :2005/11/26(土) 19:05:47
すいません。質問なんですが、 csvをTStringListで受けて、その後構造体に入れるには どうすればいいのかわかりません。 確かTListだと TList *p_pList ; KOZOTAI *pData ; pData = (KOZOTAI*)p_pList->Items[0]; のような感じですぐ構造体に入れられたんですが、 TStringListの場合だとどうすればいいのでしょうか? 教えてください。
>>477 KOUZOUTAI の宣言を書いてみな。
KOUZOUTAI::operator=(AnsiString);を定義して KOUZOUTAI data; data = pStringList->Strings[0];
>>477 >TList *p_pList ;
>KOZOTAI *pData ;
>
>pData = (KOZOTAI*)p_pList->Items[0];
これはp_pList->Items[0]が返したTObject*型のポインタをキャストして
KOZOTAI*型ポインタ変数に代入しただけ
KOZOTAIのインスタンス(実体)には代入も何もしていない
>csvをTStringListで受けて、その後構造体に入れる
これはKOZOTAIのインスタンスに対して(必要なら生成した上で)値を代入するということでしょ
上のポインタ代入とは全く別の操作だよ
手順としては
1.ファイルをTStringListに読みこむ
2.各レコードをフィールドに分解する
3.それぞれの値をKOZOTAIのインスタンスのメンバに代入する
ってかんじ
別に難しい操作ではないが、
ポインタって何?インスタンスって何?というレベルだと自力ではしんどいかしれん
>>477 が何をしたいかワカラン
typedef struct tagKOZOTAI
{
Ansistring Data0;
Ansistring Data1;
・
・
・
}KOZOTAI;
void __fastcall TForm1::Button1Click(TObject *Sender) { KOZOTAI *pData; TStringList *p_pList = new TStringList; p_pList->LoadFromFile(C:\\***.csv); TStringList *lineList = new TStringList; for (int i = 0;i < p_pList->Count;i ++) { lineList->CommaText = p_pList->Strings[i]; pData->Data0 = lineList->Strings[0]; pData->Data1 = lineList->Strings[1]; ・ ・ ・ } delete lineList; delete p_pList; } こんな感じだろうか?
BCBってboost::string_algoもまともに通らないんだな
あと一ヶ月の辛抱だ・・・・多分・・・・
頼むぞBCB2005・・・・小金をよけて待ってる。
BCB2006だよ。
なんか統合された物が出るってニュースにあったけど? 単品で販売されるの?
今のところされない。8万用意して待ってろ。 BCBからのアップグレードもないんだっけ?
アカデミック版のProって素のProと内容違うんだっけ? 普通にそれ買う気でいるんだけど
発売まで一ヶ月切ってるのに、その辺の情報が全然ないな
492 :
デフォルトの名無しさん :2005/11/28(月) 04:04:41
ひでえな 買いたくもないDelphiも同梱で、8万払わされるのかよ。
494 :
デフォルトの名無しさん :2005/11/28(月) 04:35:42
※Borland C++Builder/C#Builder ユーザー様へは、別途バージョンアップのご案内をお送りいたします。Delphi、C++Builder、C#Builderを複数お持ちのユーザー様は、C++Builderからのバージョンアップ価格の方が安価になる場合がありますのでご注意ください。
もしかして64bit開発環境はなしなのか??? だとしたら・・・ゴミダ
>>490 商用に加えて成果物の教育目的外配布も不可なライセンス(学校事務等は可)
>>495 で、また来年大枚払って64ビット用のをかわなきゃいけないのか
VS2005は日本語版出荷になったら、お買い得キャンペーン始まるだろ。 恒例のキャッシュバックとか。 それに個人で使うなら、Team Systemなんて馬鹿高いもの買う奴などいないだろ。
テクノロジープレビュー・・・・
>>490 内容は一緒だけど、Borland社製品のアカデミック版は、商用利用一切不可であるばかりか、
使用用途が、プログラミング学習のみとされていて、下手するとフリーウェアの配布すら
しちゃいけないという話。
生き残る気がないのかな、この会社。
まぁ、MSのアカデミックはちとやり過ぎだと思うがね。一般ユーザー馬鹿にしすぎ
VirtualTreeViewについて質問させてください。 コンポーネントの新規作成からVirtualStringTreeを継承しただけの コンポーネントを作ってメイクしようしたのですが、 TBaseVirtualTree::DoGetHeaderCursor(void *&)と TBaseVirtualTree::OriginalWMNCPaint(void *)が未解決といわれます。 VirtualStringTree自体は問題なく動くのですが、どうしてこんなことが起こるのでしょうか?
>>505 >一般ユーザー馬鹿にしすぎ
一般ユーザーがCOMとドトネトとアンマネージドが混在する複雑怪奇に耐えられるかな。
ディスクの肥やしのM$DNも鬱陶しいお。
> 買いたくもないDelphiも同梱で、8万払わされるのかよ。 Del厨ですが、BCB 統合で値上がりして迷惑しています。
どっちかというと米価格(Proで市価$1000)に近づけただけな希ガス 英語版の値段は据え置きだったはずだし。
>>505 そういうものと思って諦めるしかない
Delphi使えばそんな馬鹿げた問題は起きないから、乗り換えるのもいいかも
滅茶苦茶な論理だな。不自由したいから Delphi に乗り換える、って馬鹿じゃないか。
> 英語版の値段は据え置きだったはずだし。 比較証拠求む。
とりあえずBCBからのアップグレードがなんぼになるのかそれが問題だ
>>506 BCBだとHICONやHCURSORの型はvoid*だけど、DelphiだとLongWordで定義されていて、これはBCBだとunsigned intにあたるから、みたい。
VirtualTrees.hppの該当の関数の宣言を下のように書き換えたらちゃんとリンクできた
virtual void __fastcall DoGetHeaderCursor(unsigned int& Cursor);
virtual void __fastcall OriginalWMNCPaint(unsigned int DC);
515 :
デフォルトの名無しさん :2005/11/30(水) 19:27:27
スクリーンセーバーのプレビュー画面を作りたい。 *.scr を /P ウィンドウハンドルの10進文字列 で起動すれば良いのが 分かったのだが、*.scr をコマンドライン引数つきで起動する方法が分からん。 例えば SHELLEXECUTEINFO Screxecinfo; memset(&Screxecinfo,0,sizeof(Screxecinfo)); Screxecinfo.cbSize = sizeof(Screxecinfo); Screxecinfo.lpVerb = "open"; Screxecinfo.lpFile = "ssbezier.scr"; Screxecinfo.lpParameters = "/P 123456"; Screxecinfo.fMask = SEE_MASK_NOCLOSEPROCESS; Screxecinfo.nShow = SW_SHOWDEFAULT; ShellExecuteEx(&Screxecinfo); とやっても、普通にスクリーンセーバーが立ち上がるだけ、 でも ssbezier.scr を ssbezier.exe に変えると、うまく行く。 ssbezier.scrはコピーして、ssbezier.exeにしたやつね どうにかならないかな
コンパネから呼ばれたときプレビューになるやん?
CreateProcessでやってみそ
dclusr.cppをコンパイルするとこのようなエラーが出てしまうのですが、 どのようにすれば直すことが出来ますか? [リンカ エラー] 'C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\LIB\DCLUSR.LIB' contains invalid OMF record, type 0x00
あー、なるなる・・・ とりあえず元CDからその.libを持ってきて(書き込み不可外して)やれば、 今までdclusrに追加したコンポーネントは消えちゃうけど復活可能。 あとは何でもdclusrに追加するんじゃなく、新規で作ったほうがいいかも。
520 :
515 :2005/12/01(木) 19:53:57
521 :
デフォルトの名無しさん :2005/12/01(木) 22:47:31
CoInitialize(NULL);って関数が使いたいんですが、 #define WIN32 #include <vcl.h> #include <ComObj.hpp> 以外に、必要なインクルードファイルってありますか? リリースコンパイル時に怒られます・・・
>>521 #include <objbase.h> だけでいいんでない
>>519 なるほど〜
ありがとうございました。
何とな直ったので、これからはそのように気を付けたいと思いますー
524 :
デフォルトの名無しさん :2005/12/02(金) 11:28:23
>>522 うまくいきました!
ありがとうございました
のC++Builderは来年末まで動作保証はないのかorz
526 :
デフォルトの名無しさん :2005/12/02(金) 15:33:31
C++Builder10っていつでるのよ
528 :
デフォルトの名無しさん :2005/12/02(金) 22:25:56
数値計算に適したフリーのコンポーネントはあるのでしょうか? 当方、主成分分析のプログラムを作りたくて探しているので すが見当たらないもので…
つvector<double>
valarrayなどと言ってみる。
データベースアプリケーションを開発する場合、 みなさんはどのデータベースを選択されているのでしょか? なんかParadoxはネットでも話題にも上らないし死にかけ? ローカルパターンと、ネットワーク共有パターンがあるとは思いますが。 環境はBuilder 5 又は 6 の、 Pro版程度を想定。
532 :
デフォルトの名無しさん :2005/12/03(土) 21:18:16
>>531 IBXを使用して、IBかFBかな。。
ローカルなら、FBのEmbeddedも使えるし。
どのくらいの規模のデータを扱うかと、用途にもよるんでないの?
2006のpro版にCodeGuardはつかないのか orz
それからリモートデバッガもついてると思うぞ。
536 :
533 :2005/12/03(土) 23:15:21
539 :
537 :2005/12/04(日) 17:39:04
開発が遅れているBCBには付いてなくて Delphiには付いているという可能性はあるけど 機能表が間違っているのは毎年恒例だから たぶん付いているんではないかと。 期待を込めて現在確認中。
540 :
538 :2005/12/04(日) 17:40:11
539は538の発言でした。スマソ。
流れが読めんw
Yahoo!オークション - 宇宙戦艦ヤマト 初期型(本物) HAT_99_99 (*): 森雪はいりませんがコスモクリーナーDは搭載されていますか。もし搭載 されているなら落札価格に含まれますか? 6月27日 18時53分. 答え. yamato_captain_okita (*): コスモクリーナーDは搭載されていますが、組み立てられていません。 ...
CordGuardってBCB6でもSP4当てるとおかしくならない?
CordGuardは初耳
>>543 おかしくなるって言うか、VCL関連のバグが露呈する場合があるな。
ま、だから助かってるんだけど。
546 :
538 :2005/12/05(月) 22:11:53
>>539 > 期待を込めて現在確認中。
Professional にもリモートデバッガは付いていると確認できますた。
547 :
デフォルトの名無しさん :2005/12/06(火) 02:50:48
どこかにOpenCvをbuilderにインストールする やり方書いてあるページありますか? 探しても見つからないっす。
>>547 暇だったのでやってみた
ライブラリのビルド
1. ilink32.cfgにC:\Program Files\Borland\CBuilder5\Lib\PSDKを追加(BCB5の場合)
2. コマンドプロンプトを起動し、以下のコマンドを。
cd C:\Program Files\OpenCV\_make
make /f makefile.bcc
3. C:\Program Files\OpenCV\binにできたDLLを%SYSTEMROOT%\SYSTEM32へコピー
サンプル
1. コマンドプロンプトで
cd C:\Program Files\OpenCV\samples\c
make /f makefile.bcc
BCBでやるには
インクルードパス
C:\Program Files\OpenCV\cxcore\include
C:\Program Files\OpenCV\cv\include
C:\Program Files\OpenCV\otherlibs\highgui 他にもあるけど省略。
ライブラリパス
C:\Program Files\OpenCV\lib
を設定し、C:\Program Files\OpenCV\lib内のlibファイルをリンクする
549 :
デフォルトの名無しさん :2005/12/06(火) 09:56:14
本日先ほど某よりバージョンアップの案内がきましたよ そこでちょい疑問が… Professional版でもUML開発出来るのでしょうか? それ以前に他バージョンとの違いがわかっていないのだが…
551 :
550 :2005/12/06(火) 13:31:02
自己レス Architectでしか対応していないね… それ以前にUML(Together)はC/C++には対応していないね…
バージョンアップ通知キタ*・゜゚・*:.。..。.:*・゜(゚∀゚)゚・*:.。. .。.:*・゜゚・*!!!!! すげー安いんだけど! BCBは6のできが悪かったから優遇されてんのかな?
>>552 普通にD2005からと同じ値段だぞ。
なにせBCBは6が最新版だからな( ノ∀`)
家にも通知キター! けど、Builder党な人は年明けまで申し込むべきじゃない?
555 :
デフォルトの名無しさん :2005/12/06(火) 22:52:46
学部で研究しています。 交通工学分野で、料金所混雑について調べています。 料金所利用車を、ETC利用車と人による料金支払いをする車に分けて、後者の車による渋滞にETC利用車が 巻き込まれる事象をシミュレートしたいと思っています。 到着率やETC普及率を変化させ、車の平均滞在時間がどのように変化してゆくのかを調べるために、プログラム を書こうとしているのですが、Visual C++で表現できるのでしょうか? 滞在時間を2次元のグラフィックで表したいのですが。
557 :
デフォルトの名無しさん :2005/12/06(火) 22:58:53
サンセット署とはなんですか??
>>552-554 4マソオーバーを覚悟していたけど、速攻で申し込んだぜ!!
で、問題は、このスレのテンプレにあるフリーのコンポーネントが使えるかどうか。
年末年始の休みはこいつと戯れよう。
早く来ないかな? チン☆⌒ 凵\(\・∀・)
>>554 年末くらいにアップデートがダウソできるから、無問題。
案内書まだ配達されない (´・ω・`) ちなみになんぼ? proからアップグレード
thx. 確かに安いなぁ
え?BCB2006がその値段なの?それともStudioの方?
>>563 Borland Developer Studio 2006
てか日本語版はBDSに一本化されてる
>>564 サンクス。それで安くなったんかなあ。ちとビックリ。
アップグレード案内は俺の所にはまだ来てないけど、明日ぐらいには
届くだろう。もちろんすぐに申し込む。Delphiイラネなんだが。
BCB2006は、アップデート#1を当てるまで動作を保証しないって噂
があるけど、本当なんだろうか。
>>566 度々ありがとう。年末にパッチ出るのね。安心した。まあ、年末がもしかしたら
来年初頭にずれるぐらいは覚悟しているが・・・・
Delphi では日本語版、特にProfessional は最大1ヶ月遅れだから ご注意あれ。
質問です カスタムコントロールをパッケージ化し、 フォームに貼り付けたのですが、 自分で作ったプロパティが、いくら設定しようとしても、リセットされてしまいます TEditに、InputCountというプロパティを追加し、 オブジェクト インスペクタのプロパティで、変更しようと思ったけれど、 LeftやTextといった元々あったプロパティしか変更できない 拡張クラスに、以下のコード入れて、後はGetとSetで引数のValueに FInputCountを代入・読出しているだけですが、他に何か必要なのでしょうか? よろしくお願いします private: void __fastcall SetInputCount(short Value); short __fastcall GetInputCount(void); short FInputCount; __published: __property short InputCount = {read=GetInputCount, write=SetInputCount};
570 :
569 :2005/12/07(水) 09:21:35
自己解決 orz クラスエクスプローラで入れたら、変更してました if文が一個増えただけで、何が変わったのかよく分かりませんが、解決しました お騒がせしました
キタ━━━━(゚∀゚)━━━━!! アップデート案内。 BCB6組は、今回は本当にお得だなぁ。C#やDelphiが必要ない人に 取ってはやや負担増だが、それはC#組やDelphi組にも言える事なんで、 目をつぶろう。 さっそく申し込んできまーす!
>取ってはやや負担増だが、それはC#組やDelphi組にも言える事なんで、 >目をつぶろう。 被害者が増えるんなら尚更気にしないと
Del厨は怒り狂ってたりして。
生徒「せんせー、寒いでーす」 教師「みんな寒いんだから我慢しろ!!」 生徒「だったらなんとかしろよ!!!」
おめーらが後のりしてきたくせに、よく言うよ。by Del厨
576 :
デフォルトの名無しさん :2005/12/07(水) 14:01:47
いつあたらしいのでんだ?
コンパイラv5.8ってのがどの程度boost通るのか心配だ。 VC並になってたら買う。
うちも案内きた
>>561 BCB5pro→BCB6proが3年前で25200円だったから
BCB単独アップグレードと考えても別に高くはないわな
Delphi C#がついてくると思えば安いし、
それが必要ない人間にとっては普通の値段じゃね?
それが必要ない人間にとってはもっと安いのを期待する、だろ普通 いらんものを買わされる感がイヤ。買うけど。
まったくだ。Borlandの糞野郎!!! 買うけど。
1Pro→3Pro、3Pro→4Pro、4Pro→5Proはいずれも21000円でした。
>>575 Object PascalはBorlandだけの専売特許ですね(クス
C++Builder5ユーザなんだけど、バージョンアップの案内来ない Builder5ユーザにはバージョンアップはないってことなのか Builder6はバージョンアップするメリット皆無だったから見送ったけど今回はバージョンアップしようと思ってたのにな
Borlandのサイトやバージョンアップ案内では敢えて言及していないっぽいけど、 この一緒についてくる腐れDelphiやC#は、 やっぱり.NET Framework 1.1対応で2.0は次バージョンで対応だと思って良い?
>>584 BCB Pro(BCB6を除く)は、37,800と書いてあるけど。送られてきた
バージョンアップ案内に。
> やっぱり.NET Framework 1.1対応で2.0は次バージョンで対応だと思って良い? そのとおり。ちなみに腐れDelphiではなく、Delphi に腐れBCBがついたものです。
588 :
デフォルトの名無しさん :2005/12/07(水) 20:24:37
目くそ鼻くそです
> 腐れBCB そうそう、パッチがないとたんなるプレビュー版なんだよな
お馬鹿なDel厨が住み着いたようだ。巣に帰れ。
教えてくれた人。腐れとか書いてごめんなさい。 てか、このバージョンアップって全部一緒にしてみましたって以外に何か意味あるの?
>>591 知らん。多分このスレは某の人も覗いているだろうから、俺の予想では
今回BCBを切り捨てる予定だったのが、無理矢理統合しちゃったって感じ?
別々に売るとかえってコストがかかるからかもね。
>そうそう、パッチがないとたんなるプレビュー版なんだよな >C++personality これはほんとだよ。
バージョンアップ案内が来たけど、 オレの興味を全く引き付けない冊子を作るセンスがすごいね。 6から長いこと待ったが、次のバージョンまで待ちでいいか。
重くなる
10年ぐらい前に IBMからMwaveとかっていう、モデムとサウントをDSPチップ1つで 実現する画期的なデバイスが出たけど、あれダメダメだったなぁ。 お互いが足引っ張り合ってもぅ。(今もあるのかな) あの時、機能はそれぞれ独立させた方が良いと思い知った。
Borland Developer Studio 2006 動作環境 Intel(R) Pentium(R) III/M 1.4 GHzまたはPentium IV 1.4 GHz以上 (Intel Pentium III/M 1.4 GHz以上またはPentium IV 2 GHz以上を推奨) 512 MBのRAM(1 GB以上を推奨)
お、重そう・・・・
かなり一般的なパソコンだと思うが。
Borland C++Builder 5 動作環境 Pentium/90(推奨Pentium/166以上)のCPU 48MBのメモリ(推奨64MB以上) 10倍重いんじゃないだろか >BDS2006
>>598 > 512 MBのRAM(1 GB以上を推奨)
俺のPCはAthlon64 3200+だが、メモリが1GBで推奨最低ラインだ orz
さくさく動作BCB6使い続けたほうがよくね? バグの心配もないし
当分の間は Borland Developer Studio 2006 と自分のプログラムと 両方のデバッグやらされる訳か。
606 :
デフォルトの名無しさん :2005/12/08(木) 00:42:41
>>548 ありがとうございます。大変助かりましたっす。
アップデート当てるのマンドクセ 年が明けてから買うことにするよ
とりあえずコンパイラの出来次第かな。 オマケっぽい扱いは変わってないから、VCL周りで不具合続出しそうで怖い。
VS 2005 beta2でさえ最小128M、推奨256Mなのに、なんでそんなに RAMがいるのかな。1G積んでるけど2Gにしようかな。多分、呼び出す DLLの数が増えているので、ディスクキャッシュ用に出来るだけ多く積ん どけ、って事だろうと思うけど。 PaintShopじゃあるまいし、そんなに多量のリソース何に使うんだろうか。
PhotoShop?
PaintShopって重いのか
ごめんPhotoShopですた。PaintShopって何やねん。
>>612 ちょwwwwwwwwwww PaintShopも一応そこそこの人気ソフトだぞwwwwwwwwwww
これを機会に、BCBもDelphiのように毎年VerUPしてくれるのだろうか。 どうも嫌な予感がしてならないんだが。
BCB は .NET 対応予定がないのだから、BDS がバージョンアップしてもつきあう必要 ないんじゃないの
あー、バグ放置 → 次バージョン持ち越し はあるかもね(笑
>BCB は .NET 対応予定がないのだから、 ソースは? 随分前のアナウンスでは対応すると逝ってたが。
> 随分前のアナウンスでは対応すると逝ってたが。 ソースプリーズ
>ソースプリーズ ソースプリーズ
>Microsoft .Net FrameworkをサポートするDelphiおよびC++Builderのリリースは2002年後半を予定。 Delphi はともかくBCB はキャンセルなのでは? ロードマップにもないし。
>>621 つ BDS2006(Del、BCB、C丼)
>>624 おおっ、見逃してた。すまぬ。
次の次の次ってことね。
> introduce managed C++ support これって、VCL.NET 使えるとか(あまり意味ないけど)ないんだったら、あんまり BCB にこだわ らなくてもすでに VC++ あるし。
そもそも某のツールで.NET使おうなんて誰も思わないよな
.NET は、ライブラリ自信がオブジェクトベースなので VCL を使うありがたみがない っていうか、使わない方がいいから、VCL を使える C++ である現行の BCB のメリット は .NET ではなくなるね。同じことは Delphi にも言えるけど。だから Delphi.NET は 苦戦してる。Pascal であって MS と競合してない分は Delphi はまだマシだけど。
わざわざPascalやC++で.NET使う酔狂も少ないだろう 当分はWin32アプリが主流なんだから、それがC++BuilderとDelphiの強みでしょ Borlandはそれがわかってないぽいけど
当分たってあと2年くらいでしょ。 そのために今 VerUp するのは、ほんと馬鹿らしい。 Win32 はもう追っかける価値なんてないのに。
手になじんだ現行ツールで十分だわな
2年じゃ絶対無理 .NETがネイティブサポートされて(Vistaの次バージョン)、 そのOSのシェアが50%を超えるまでは.NETアプリがメインにはならんよ
XP以前だと、コントロールたくさん載せるだけで もうもっさり動作だもん Win32だと一瞬で起動するようなツールが、.NETだと一呼吸待たされる MSも普及させたいならこのへんどうにかしろよ
634 :
デフォルトの名無しさん :2005/12/09(金) 12:09:28
いや、メインにはならんかもしれんが、Win32 はもう新しいものがないんだから 開発者としてはも、現行以上追っかける必要はない。 むしろ、Win32 がメインでなくなった後を考えておく方がよっぽど建設的。
と2002年から言い続けて早4年。 いまだにVista発売されず。
Win64 のネイティブサポートについてはどう思う?
> わざわざPascalやC++で.NET使う酔狂も少ないだろう Del厨がきいたら猛り狂うぞ。 C++ ユーザは、言語仕様が国際基準なので視野が広いね。 一社仕様のDelphi言語(Object Pascal)ユーザは、それしか見えてないから 万一(笑).NET がメインになったら、それで行くつもりらしいよ。
ほんとかいな 俺はDelphiメインだけど、Web や ML 見てる限り、 Delphi .NET と心中するようなのはそうそういないぞ つーか、C++Builder も言語仕様については独自拡張しすぎだろ __closure とかアレ何よ。便利だけど
拡張機能は、VCLをサポートするために必要なだけであって、 別にC++にあるべき機能を削って増やしてるわけじゃないんだから問題ないだろ。
> Delphi .NET と心中するようなのはそうそういないぞ ふむふむ、ということは Delphi の寿命ももう少しで終わりだね
>>629 によれば .NET で C++ 使う人も少なそうだから、BCB も終わり。
某で生き残りそうなのは C# だけ。でも、もろに MS とカブッテルのでこれも
終わり。
よい兆候はないものか? Win64?
> 某で生き残りそうなのは C# だけ。 コンパイラはMS製だよ。しいて言えば IDE だけが生き残るかも。まだ VS に負けてるけど。
つぎはぎの増築じゃなくて、 C#やJavaの良い部分を取り込んで、 BCBとdelphの間を統一的に行き来出来る今時のコンポーネントに作り直したら魅力的だと思う。 もちろんネイティブで。 某を使ってるのはネイティブでポトペタ最高!な部分を支持しているわけで。 .NETに魅力を感じるような人間は元々某を使わないと思う。 まぁ…開発者がMSに移籍してC#作ってるというのが今の某の迷走を物語る。
> .NETに魅力を感じるような人間は元々某を使わないと思う。 魅力がどうのじゃなくて、これがネイティブになった(?)ら某の開発環境は 終わりってことだよね。そうなるかどうかは未知だけど。
.Net自体がVMありきで設計されてるような感じがするのでネイティブにはならんだろう。
いや、当初計画では Longhorn でのネイティブは .NET ベースだった。 だから、あながち「ならんだろう」とはいえないよ。ハードがどれだけ 追いつくかにかかってる。
某が .NET に乗り出したのは、.NET ネイティブを見込んだから。 結果的に早すぎて失敗したけど。
予定は未定だな。 X86アーキから変わる前兆が全く無いからハードは関係ないだろうね。
アークテクチャでなくて、処理スピード。グラフィックも含めて
VMの上にOSが立ってるのをネイティブと言ってるのかぁ。感覚の違いだね。 当分は無理そうだな。
いやいや、OSの上にVMがたってるのよ
違いはネイティブな API がVM層にあって、従来型にAPI関数呼び出しは、むしろ遅くなる。
> 従来型にAPI関数呼び出しは、むしろ遅くなる。 ソースはどこなんでしょ。
IDE Compiler Speed Improvement Fixはやすぎ 164秒が15秒になったwww
imamamdegakuso
コンパイラをdcc32.exeに換えたらもっと早くなったwwwwうぇ
657 :
デフォルトの名無しさん :2005/12/09(金) 19:58:12
delphiより速い。感動した
何の時間?
660 :
デフォルトの名無しさん :2005/12/09(金) 20:38:15
キタキタキタキタ━━━(゚∀゚≡(゚∀゚≡゚∀゚)≡゚∀゚)━━━━!!!!!!!!!!
なんじゃこりゃあああああああああああああ
これウイルスじゃん
すげえ
キター
関係ない雑談は他でやれ
>>665 関係あるよ。入れてみ。正直びっくりした。
ウィルスの可能性を疑うなら、付属のソースを自分でビルドして
インストールすればいいし。
うはっコード補完はえええええ
バージョンアップのご案内キテター 相変わらずJCBカード使えネー
確かに3倍位速くなったがdelphiには遠いな。
ウィルスの可能性を疑うなら、付属のソースを自分でビルドして インストールすればいいし。 ↑こういう香具師って付属のソースがウイルスのソースだったらまんまとひっかかるんだろうか?
これメモリ喰いまくるじゃん。
この程度で足りなくなるほどしかメモリ積んでないマシンは 窓から投げ捨てるべき
>>656 bcc32にdelphiコンパイラ内蔵なのは知ってたが、
dcc32にもC++コンパイラ内蔵だったのか…
つーかこれやばくね? 今の時期にこんなの出たらBDS2006売れなくなっちゃうよ(wwwwwwwwwwwww
>>675 んなこたぁーない。
もう振り込んできてしまったよorz
133秒-105秒になった。大体*0.3秒だな
>>654 それマジかよw
36秒->9秒 まじでヤバイ。
これ使ってboostのヘッダとかもpchに押し込むと、 vc++6並に速くなるね。
>>671 ソースに一通り目を通さないとでも思ってるのだろうかこのバカは。
681 :
デフォルトの名無しさん :2005/12/10(土) 14:22:34
秒だけじゃなく行数も書こうよ
682 :
デフォルトの名無しさん :2005/12/10(土) 16:25:49
こんにちは C++ builder 6 を使っています。Image のクリア仕方を教えてください
Picture プロパティに NULL を代入とかだったような
684 :
デフォルトの名無しさん :2005/12/10(土) 17:08:36
ハッキリ分からない人はレスしないでください
>669 某のネットショップからならJCB使えたよ。
v5→v6 バージョンアップの時より 4,000円ちょい高いね。 Delphi無くていいから4,000円安くしてちょ。
688 :
デフォルトの名無しさん :2005/12/10(土) 23:35:22
Delphi外す改造に6,000円かかります
コマンドラインから del phi とすれば外れます
コンパイル速すぎフォーーーーーーーーーーーーー!!!!!!!!! ,、i`ヽ ,r‐'ァ `ヽ:: ::´ ヽ ヽ , -‐--、 / / ヽ \ I:::::::I_ _ / / ヽ ヽ i,(;;;ノI、;;;)l ,,/ , ' ヽ ` ー 、.,,ゝ´ヮ`,ノュ_, - ' r' ` 、_ /::: `山'::::: / ヽ:::::::::::|::::::::"",r‐' 〉::::::::|::::::::::¨/ /;;;;;;;/;;;;;;;;;;/ /;;;;;;;/:::::::::::《 <;;;;;;;《:::::::::::::ヽ / ヽI,r''"""^~ヽ / ,/ ヽ ヽ
DBGridである検索結果を表示してます このとき全てのデータを選択したいときってどうすればいいんですか? dgRowSelect、dgMultiSelectはtrueにしてます
693 :
デフォルトの名無しさん :2005/12/11(日) 13:08:04
BCBで作成したアプリケーションの起動時、以下のようなメッセージダイアログを 見た事がある方がいらっしゃいましたら、その時何が原因で発生したか情報提供を お願い致します。 『××の初期化に失敗しました』 ××の例:Button->Color 〃 Button->Font->Name 上記現象が極たまに発生する為、再現方法を特定したいのですが…。 開発環境: OS :WindowsXP Professional 日本語版 SP2 コンパイラ:Borland C++ Builder 6.0 日本語版 SP4
そのエラーメッセージ文字列で検索かけろや! そしたら、そのメッセージを出している箇所がわかるだろ。
えーと、TThread以外の方法で作成されたスレッドと VCLスレッドで同期を取りたいのですが、 うまい、というか標準的な方法みたいなのはありますか? 具体的には、VCLスレッド以外は非同期にアクションが起きて、 それをVCLスレッドに知らせ、それによってGUI画面を更新したい。 で、単純に別スレッドから「何かが起きた」ことを知らせるには SendMessageとPostMessageが使える(と思う)ので 適当なコントロールなりを非表示で作って そこのイベントハンドラで何かすれば良いのかとも思いますが こんなやり方で良いのかどうか。 それ(別スレッドなりからの通知)専用のメッセージとかがあれば 喜んで使うのですが。
696 :
693 :2005/12/11(日) 23:14:52
コメント頂くのはありがたいですが…ガラ悪いですねぇ…。> 694 恐らく現象をご存知の方でしたら、検索しろという話にはならないとは思いますが、 念の為に追記させて頂きます。 エラーメッセージは自前で出力しているわけではありません。 また、本問題の発生したプロジェクトのオプション設定についてですが、 デフォルトのままです。 但し、スタックサイズはかなり多めに増やしております。 有識者の方、コメントを宜しくお願い致します。
とりあえず何が吐いてるのかデバッガで追ったら?
698 :
デフォルトの名無しさん :2005/12/11(日) 23:21:26
スレッドの生成方法に関わらず、スレッドIDさえ判れば PostThreadMessage及びPeekMessageによる送受信にて通信可能です。 他にも方法はありますが、これが一般的ではないでしょうか?
699 :
693 :2005/12/11(日) 23:27:08
コメントありがとうございます。>697さん 発生頻度がかなり低く、且つ開発環境下では全く再現しない為、 追うに終えない状況です。 (現状、客先に納入するPCでしか発生しないんです) ある程度目星を付けれれば、無理矢理にでも置きやすい状況にして 解析を進める事が出来るのですが…。
>>693 釣りとしたらめっさ巧妙やな。
VCLのソース・リソース中に用意された文字列に「失敗」は沢山あるが
「初期化に失敗」は一言も無い。
grepかけてみたらいい。
Delphi7のVCLで確認したが、6系持ってる人も探してみてくれ。
OSのメッセージであればプロパティ名とか出るわきゃないしな。
なので、そのアプリケーションが独自にVCLのストリーミング機構弄って何かやってて独自のメッセージを出してるか、
でなければ釣りと思う。
701 :
695 :2005/12/11(日) 23:32:59
>>698 うーんと、すごいワガママで申し訳ないんですけど
単に同期を取れば良いだけなら、普通にEventやWaitForが使えるし
そっちを使うつもりなのですが
GUIスレッドに通知したいんですよね。
要はメッセージループを回しているスレッドに。
で、自分で全部やるならWM_USER+xとかを指定して
BEGIN_MESSAGE_MAPとかを使うのが筋なのかもしれませんが
そこまで大げさにしなくても
ポトペタでなんとかならないかな、と思いまして。
>>700 >6系
ない
ってか、んなもんそのアプリを動かして検証しなきゃどうにもならん
TActionのOnUpdateやらApplication.OnIdleやら状況の変化を拾えそうなタイミングを提供してくれるイベントは幾つかあるけれど…。 PostMessageが一番スマートで効率もいいと思う。
704 :
693 :2005/12/11(日) 23:55:26
コメントありがとうございます。> 700さん、702さん 未grepですし証拠も無いので説得力無しですが、釣りではありません。 700さんの仰る通り、プロパティ名がそのまま出る事自体、不思議で仕方ありません。 699に書きました通り、Builder上も特殊な設定は行っておりません。 とりあえず本メッセージが出力されたコンポーネントのソースをgrepして みましたが、そのような文言は存在しませんでした。 単純解決出来る問題であれば書き込みは致しません。 ググれば大概の事は判りますし。 とりあえず全ソース、grepかけてみます。
705 :
693 :2005/12/12(月) 00:09:58
grepかけてみました。 無いですね…。> BCB 6.0 開発環境(計3台)下では発生せず、何故か納入PCでのみ発生している為、 環境設定上の問題の可能性も…? 納入PCにもBCBはインストールしている為、環境は同様のはずなのですが…。 手詰まりです。ホントに…。
糞して寝ろ。
707 :
693 :2005/12/12(月) 00:34:41
低俗なレス無く、優良なスレッドとして存続させたいですねぇ…。> 706 700さんの仰る通り、プロパティ名がそのまま出る事自体がおかしいですし、 その辺りをキーに再解析してみたいと思います。
> 『××の初期化に失敗しました』 > ××の例:Button->Color > 〃 Button->Font->Name この例の部分の文字列はプログラムで文字列生成してるだろう。だからgrepしてもヒットしないだろ。 「初期化」とか「失敗」でgrepすれば出てくるだろ。 っていうか、Button->Font->Nameこんな文字列を表示している時点で、 システム側ではなく、自前のコード内だってことが一目でわかるだろ。普通。 てか俺も完全に釣られたのかな。
あー、それソフト関係ないよ。 memtest86とかかけてみ。エラーになってるから。
710 :
693 :2005/12/12(月) 09:16:05
コメント頂くのは非常にありがたいのですが… 当然、grepは『初期化』『失敗しました』等で行っております。 エラーとなるVCL名が固定ではないですし。 また、自前のコードで、プロパティ1つ1つをエラーチェックするような 無駄な処理(面倒な処理)も致しません…。
711 :
693 :2005/12/12(月) 10:23:41
本日、出力されたメッセージダイアログを再確認致しました。 コメント頂いた方には非常に申し訳ないのですが、以下のメッセージの 間違いだったようです。 『×× の読み込み中のエラー:無効なポイント操作』 ××の例:Button->Color 〃 Button->Font->Name VCLのソースを見てみましたが、プロパティの読み込みに失敗した時に このメッセージが出力されるようですね。 ※ちなみにExceptionによる出力です。 プロパティ名がそのまま表示されるようです。 自前のコードでの出力と思い込んでいる方々は参照なさって下さい。 おかげで解析を進めれそうです。 ありがとうございました。
>>711 エラーメッセージをそのまま貼らないのが悪い、
と言ういい見本だな。
だな
>自前のコードでの出力と思い込んでいる方々は参照なさって下さい。 自分で間違ったメッセージ書きこんで人を混乱させておきながら 何? この口のきき方。
そのエラーメッセージ見てなんのエラーかを考えろ。 バカでも解るだろ。 ポインタが無効なんだよ!ぼろPCなんて使ってるからそんなのが出るんだ。 目盛り新しいのに好感しなよ。ほうけ。
中学生かあるいは神様なんだろ
こんな人が作ったものが納入されてるところがカワイソス.......
エラーメッセージさえまともに確認しないで原因調査している阿呆もいるのだな。
MLでプリコンパイルヘッダの話が出てるけど、 ヘッダの中でstatic変数とか定義されてたらどうなるの? 実行時にメモリとか余計に喰っちゃうの?
>>721 ファイルスコープでのstaicの挙動は知ってるけどだからどうなるのかが知りたいって事なんだけど?
>>722 コンパイル単位で領域が確保されるから、、、それをインクルードする.Cや.CPPの
コンパイル結果の.OBJそれぞれにstatic変数が確保されるんだろうな。
725 :
695 :2005/12/13(火) 00:42:54
結局、ボタンをVisible=falseで貼り付けて、
FormのコンストラクタでButton->Handleを保存、
通知したいときにWM_LBUTTONUPをPostすることにしました。
OnMouseUpのハンドラでちゃんと動いてくれているみたいです。
>>698 さん
>>703 さん他、どうもありがとうございました。
>>723 プリコンパイルヘッダでも特別扱いはされないのね。
じゃあMLみたいにライブラリのヘッダは何でもかんでもプリコンパイルヘッダ詰め込んだらまずそうだね。
変数の宣言はヘッダファイルに置かずソース本体に置くことだ。 static変数でもグローバル変数と同じ様に気をつければOK。 まともなSI企業での職務プログラミングでは基本原則の一つなんで、 違反して言い訳すると、、、たぶん干されますな。
定数はヘッダに書いていいの?一般的な規則として。 それとも、externするのですか?
729 :
デフォルトの名無しさん :2005/12/13(火) 12:22:12
共通的に使用する定数であればヘッダ、そうでなければソースに定義します。 (共通的定数を、使用するソース毎にexternする人は少ないと思います)
「定数」はextern出来ないだろ
731 :
729 :2005/12/13(火) 17:57:50
それもそーだ。すまぬ。
これは古い手で蛇足かも知れないけど、 〜 数人で組むプロジェクトでよくある対策 〜 機能ごとに多数のソースに分割している場合で、共通なグローバル変数の 置き場を決めかねる事って結構あるんだよな。あちこちのソースで分散して 宣言していると、後でサーチが大変でデバッグも面倒だ。 そんな時はグローバル変数のみ宣言するソースを作ってしまう手がある。 commvalues.cやらCommValues.cppでまとめて宣言、ヘッダを工夫して使う。 #defineな共通定数や共通型宣言もcommdef.hやcommtypes.hなどに記述。 IDEの管理や埋め込みコードに縛られないC言語が主流のプロジェクト時代では 有効な統治ルールだったが、今でも使えるカイゼン技法かも。
定数に#defineなんていまどきつかわないでしょ、C++なら。
734 :
デフォルトの名無しさん :2005/12/13(火) 20:01:58
Cから脱却出来ず、未だに使ってる…。 そろそろ改めないとなぁ…。
ここ数年、define使ってないな。 大抵、enumにしてしまう。
#defineって、#pragma並にプリプロセッサやコンパイラ指令用途になったのか。 時代がenum標準になってたとは・・・浦島だ orz
enumつーかconstじゃね?
c++ では constだよねー
おまいら、const と #define は全然意味が違うだろ。 定数に意味のある名前を付けて可読性をよくするには、どうやってんだよ。
違ってようが、ガイドラインで#defineではなくconstを使うべし ってなってるんで
C++ Coding Standards:101 Rules, Guidelines > 社内ガイドライン > 部門ガイドライン > 俺様ガイドライン
static constは定数として一般的に認知されてるよな?
うほっ
普段は#define使うの?マジで?なんで?
ボウヤだからさ
そんなん人の勝手やん
確かに糞コード書くのも本人の自由。
750 :
デフォルトの名無しさん :2005/12/16(金) 16:52:25
AnsiStringのSubStringですが、 日本語文字列の部分文字列を作るときって、何文字目からかに依って 文字化けしませんか? 文字列をスクロールさせようとしたんですが、始め一・二文字がわけわからん文字に化けでます。 どうしたらこの問題を回避できますか?
>>750 TStringMbcsByteType ByteType(int index)
index 番目のバイトが2バイト文字の1バイト目のときは mbLeadByte を返し、
2バイト文字の2バイト目のときは mbTrailByte を返す。2バイト文字の一部
でない場合は mbSingleByte を返す。
WideStringで出来る気がする気がした
753 :
デフォルトの名無しさん :2005/12/16(金) 21:47:24
VCLオブジェクトいっぱい使った200回ぐらいまでの再帰関数を実装したら メモリ使用量(*´∀`)
755 :
デフォルトの名無しさん :2005/12/16(金) 23:17:23
2chブラウザ作ってるんですが、もっと高速にスクロールさせたいんです。 スクロールする時は事前にフィールドのビットマップを記憶しておいて、 新しく描く部分とビットマップをチョップしたのを併せて表示した方が高速なんですかね? 今は馬鹿正直にレスを描き直ししてます。 ペイントボックス使ってます。
DirectX使うのが一番早い。
757 :
デフォルトの名無しさん :2005/12/16(金) 23:26:58
_ _ r〜f⌒i しj__ ト√¨トー、 _ 厂ノ,..-ーt´¨i´:::::|⌒i;¬…tク-、 r〈 ,>イ:::|:::::|:::::|:::::|:::::::|::::::|::::::|:::::i¬ん、 >/l::::|:::⊥亠¬冖⌒ i冖ハ¬ト、,|::::|:::ヽ〉、 {シ,.:!ー'' r´/(⌒て_厂¬r⌒ヒ_ト、ゝ、i_::|:||:i:} ∠/rーtノ⌒ー’....................../.ト、゙i ゝr-、|:||:;ト、 ソー' i.............................../...〃.j\i........... しヘ::|( { ......|............./.. /..// / V......... しうノ l .....l.| /... // //─ - 、..........}Σト、ヽ、 ちゅぱちゅぱ美味しい ゙i i| ../ _≦./ =ー- 、|.. .. |⌒) \ヽ ゙i.....::゙i../,r):::;:d |ドく;;d |...........|.:::} l ヾi /∧ ...}〈ヘ{qトj」 └-''、⊥!........レ´ ゙i.i i‖ // ∧...::トヽ ̄ 、 j!.........,il' ゝi || 〃〃 i..::ト-ヽ、 ri、 ィ´|..... ,'| ヽi、 《 《 i、:|_ ` ー,- | ├<´ ト、|....../..|__,.-、 ||j /⌒\ ( ) | | | | │ │ ___________________________________ このスレを見た人は、10年以内にかならず氏にます。 でも、逃れる方法はあります、 ※10日以内に20箇所のスレにこれをはるのです。
>>755 いっそのこと、オフスクリーン描画してみては? TImage とか。
759 :
デフォルトの名無しさん :2005/12/17(土) 00:41:10
>>756 たかがブラウザでもdirectXって普通に使われてるものなんですか?
使ったこと無い、ってかアプリ作るの始めてだし。
>>758 オフスクリーン描画ってなんですか?
ダブルバッファみたいなものですか?
>>759 まさしく TImage
こいつのビットマップ面にテケトーに書き殴れば
WM_PAINTはこのコンポーネントがやってくれる
ビットマップ面(DIBだけどDDBもイケたかな?)のDC取れば
APIで書き殴り放題
だがしかし WM_PAINT をただしくハンドリングする方がやっぱり好き
と思う折れはオサーン
そもそもログテキストみたいな縦に長くなりがちな領域に
TImage割り当てるのは禿しくバッドだなw
761 :
デフォルトの名無しさん :2005/12/17(土) 00:52:12
>>760 ではdirectXならグットなんですか?
ScrollWindowEx なんかを使って本当に必要な部分だけを再描画するやりかたが定石でしょう。 それいがいの方法は有り余るマシンパワーに依存するやり方ですね。
なぜCppWebBrowserを使わない
764 :
デフォルトの名無しさん :2005/12/17(土) 01:08:07
765 :
デフォルトの名無しさん :2005/12/17(土) 01:13:24
>>763 出来合いの惣菜で用意したご飯はイマイチ美味しくないです><
素材の飼育までは出来ませんが、自分で料理はしたい。
そんな年頃です。
768 :
デフォルトの名無しさん :2005/12/17(土) 16:28:28
新コンポーネントを作成する時、どこのパレットページに登録するか迷うのですが、 自分用のパレットページは作成できないんですか?
769 :
デフォルトの名無しさん :2005/12/17(土) 16:36:15
自己解決しました
0) ActivePerlを呼び出せるライブラリあったら便利? 1) ActivePerlと連携できるコンポーネントあったら要る? 2) ActivePerlでVCLを使(ゲフンゲフン (配布条件にモロ抵触する罠)
771 :
デフォルトの名無しさん :2005/12/18(日) 04:56:51
772 :
デフォルトの名無しさん :2005/12/18(日) 04:59:18
■[Win32]SDK32:2つのENTERキーの違い JP77550の文書、MSのサイト内から消えてGoogleのキャッシュにしか 引っかからなくなってるので、後々の自分の為にメモ。 ユーザーが押下したENTERキーが標準キーボード側のENTERキーなのか、 テンキー側の ENTERキーなのかを判断したい場合、 どちらの動作もwParamに仮想キーコードのVK_RETURNが設定されて、 WM_KEYDOWNメッセージとWM_KEYUPメッセージが発行される。 メッセージのlParamの24ビットめをチェックする。キーが拡張キー ならばビット24は1になり、そうでなければ0になっている。 (これらのメッセージのlParamの内容は、SDK バージョン3.0の 「プログラマーズリファレンス Vol.1 概要」と、 「プログラマーズ リファレンス Vol.3 メッセージ、構造体、マクロ」の ドキュメントに記述されている) テンキー側にあるキー(ファンクションキーも含めて)は拡張キーになる。
773 :
デフォルトの名無しさん :2005/12/18(日) 05:00:03
サンプルコード: case WM_KEYDOWN: { if (wParam == VK_RETURN) { if (lParam & 0x1000000L) { // テンキー側のENTERキー } else { // 標準キーボード側の ENTER } } } break;
774 :
デフォルトの名無しさん :2005/12/18(日) 06:54:33
ってかBCB付属のAPIヘルプにちゃんと記載されてるんだけどね。>WM_KEYDOWN こういうのを灯台下暗しという
776 :
デフォルトの名無しさん :2005/12/18(日) 21:25:25
フォームをエスケープキーで閉じるうまい方法がありますか。 次のようにやると閉じるけど、音が鳴ってしまうのでいまいちです。 void __fastcall TForm::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if(Key == VK_ESCAPE) { Close(); } }
Key=0な
778 :
776 :2005/12/18(日) 22:21:34
>>777 Key = 0;
やってみたけど状況が変わらない。
どうしてだろ?
779 :
デフォルトの名無しさん :2005/12/19(月) 01:26:20
新コンポ作ってみたら、親ウインドウがないとか言って起動してくれません。 どういう事ですか?><
780 :
デフォルトの名無しさん :2005/12/19(月) 09:09:47
#include <mmsystem.h> PlaySound(0,0,SND_PURGE);
>>776 フォームにメニューかポップアップメニューを貼り付けているのなら、
そのメニューのアイテムにmnuExitを追加して、以下の様にする。
void __fastcall TForm::FormCreate(TObject *Sender)
{
・
・
・
mnuExit->ShortCut=ShortCut( VK_ESCAPE, TShiftState() );
・
・
・
}
void __fastcall TForm::mnuExitClick(TObject *Sender)
{
Close();
}
Edit1に例えば にしむら と入力して変換押すと 西村 になって確定したときに Edit2に にしむら とその変換する前の読みが入るようにするにはどうしたらいい?
783 :
779 :2005/12/19(月) 16:41:04
ParentプロパティをパブリッシュしてParentをメインウィンドウのフォームにしたら 今度はParentプロパティが無いとか言って起動してくれません><
>>783 =779
まず、日本語から勉強してくれ。
785 :
783 :2005/12/19(月) 18:19:11
TCustomControlから自作コンポーネントを作ろうと思いました。 インストールした後、フォームにポトペタしてビルドしアプリを実行しました。 すると親ウィンドウが無いという実行時の例外を発して起動しませんでした。 それで今度はコンポーネントにParentプロパティを__publish部に宣言して、 インストールし直してから、オブジェクトインスペクタのParentプロパティがポトペタしたフォームに なっている事を確認した上で再度ビルドし実行しました。 しかし今度も実行時の例外を発して起動しませんでした。 その時は、プロパティParentが存在しませんと言われました。 日本語訳するとこんな感じです><
>785 正直チンプンカンプンですな。 ヘルプの、目次>カスタムコンポーネントの作成>コンポーネント作成の概要 >インストール前のコンポーネントのテスト と次の >インストールしたコンポーネントのテスト あたりをしっかり読んでみてはどうですか。
>>785 ヘッダをアップすれ。
きっと一目で原因が判明する。
コンストラクタ宣言の引数が間違っているのではないかな。
コンストラクタ内(もちろんコンストラクタから呼び出される関数の中含めて)で Canvasに何か書くと、親ウィンドウが無いってエラー出るよ
あ、でもこれは設計時にフォームに貼った時点で出るから
>>785 のとは違うか
790 :
デフォルトの名無しさん :2005/12/20(火) 02:16:15
791 :
デフォルトの名無しさん :2005/12/20(火) 02:17:38
>>782 確定した時にKeyPressが呼ばれるから無理ぽじゃね?
「ポトペタ」てなんやねん
関西人にはわからない
796 :
デフォルトの名無しさん :2005/12/20(火) 19:09:43
ポトっと落としてペタっと貼りつけることです。
現在C++Builder5を使用中。 OSはWin2000およびXP。 起動すると、たまにコンポーネントパレットから一部のコンポーネントのアイコンが消えてしまうのですが、原因分かる方いますでしょうか? 自分で登録したものだけでなく、インストール時に標準で入っていたものまでなんです。 再インストールすると復活するのですが。 頻度としては年間で2、3回だけなんですけどね。
>>798 メモリのテストですか。
一応調べてみます。ありがとうございました。
でもメモリの問題で特定のファイルだけ壊れるなんてありえるんでしょうか・・・
あと怪しげなファイルクリーナーやレジストリクリーナーを走らせたりしているとか。 いろいろ試してみろ。
>>797 5 は確かにあったね。6 にしてから、一度も起こってないから、そういうもんなんじゃないかな。
俺は5でもそんな馬鹿げた現象は起きた事がなかった。 ぜってー何か原因がある。
803 :
801 :2005/12/21(水) 13:07:22
思い出した。5 じゃないや。 マシントラブルで消えてたんだった。失礼。
Delphi の場合だと、デスクトップのプロパティーから[設定][詳細]から ハードウェアアクセレレーションの設定の仕方で直る場合があったと思う。 うるおぼえですまんが。
おれもBuilder5で同ような現状に遭遇したことが1度だけある。 アイコンが消えるっても、本当に消える訳ではなく、表示がおかしくなるだけだったが。 まあ、バグなんだろうな。 ディスプレイドライバとの相性とかがあるのかもしれん。
情けは人のためならず 情緒 じょうちょ/じょうしょ
809 :
デフォルトの名無しさん :2005/12/22(木) 17:39:22
質問させてください!! BorlandC++を使用しています。 A.DLLでは、B.DLLの変数_bを使用します。 AのdefファイルのIMPORTSセクションに、B._bを記載しています。 B.lib(インポートライブラリ)をリンクしていないので、 リンクエラーになると思ったのですが、エラーになりません。 defファイルの記載を消すとリンクエラーになります。 defファイルのIMPORTセクションに 記載するれば、インポートライブラリを リンクしなくてもよいのでしょうか? よろしくお願いいたします。
いいえ
811 :
デフォルトの名無しさん :2005/12/23(金) 09:06:51
自作コンポーネントでプロパティでCanvasを利用するよう宣言した場合、 下位のブラシとかペンとかもろもろインスタンスの生成などはきちんと自動でしてくれますか? それとも自分でnew TCanvasとかする必要有りですか?
>>811 そら継承元次第
TCustomControl以下から継承したならCnavasは実装済みだな
813 :
デフォルトの名無しさん :2005/12/23(金) 20:00:18
>>812 そうですか。
なんでブラシの色とかにアクセスしようとしたら落ちるんだろ…
そりゃバグっているからに決まってるじゃん。
Borland Developer Studioって21日出荷予定に なってるけど、もう届いた人っている?
>>813 自前でCanvas用意してるならTCanvas::HandleにDCハンドル入れないと動かないぞ
TCanvasは単なるWindowsGDI APIのWrapperに過ぎないし。
TControlCanvasを使え。
TListViewをvsReportで使用し、マウス直下の項目のすぐ下に ラインを引きたいんですが一番いい方法は何でしょうか。 Canvasに直接描画すると項目を変更したときにラインを消す 処理をしたくないんでスマートな方法を教えてください。
マウスのある行に下線を引くなら簡単だけど マウスのある項だけに下線を引くのは、自分で描画するしかないんじゃないの。
DLL内のフォーム(vcl使用)を表示させるとタスクバーに そのウィンドウに対応したタブ(?)が出来ちゃいます。 これを表示させたくないんですがどうやれば表示せずに ウィンドウを表示できますか?
>>822 解決しますた、ありがとうございました。
タブコントロールのタブの切り替えで、コントロールの配置を変更してるのですが、 コントロールの数が多いせいか、チラつきます。 BeginUpdate()、EndUpdate()のような感じの関数はないでしょうか?
>>824 コントロールの移動の前後で、LockWindowUpdate をフォームに対して行ったら、だいぶ更新速度は速くなる様子。
(TabControlに対して行っても同じ効果だけど、うちの環境だとなぜか他のウィンドウやデスクトップがちらついた)
>824 Left Top じゃなくて SetBounds使う
->DoubleBuffed()
DoubleBufferdは意味ないんじゃない? グラフィックコントロールばかりならいいだろうけど。
質問です TStringListは内部にvectorを使用していますか?
830 :
デフォルトの名無しさん :2005/12/30(金) 13:44:03
>>829 何が聞きたいんだ?
STLのVectorを使ってるかと聞きたいのか?
それともアルゴリズムとしてVectorなのかと聞きたいのか?
STLのVector(実際にはTstringsだが)使ってないんじゃないの?
Delphiとの絡みも有るし・・・
>>829 VCLの実装はすべてDelphi(ObjectPascal)言語で書かれています。
832 :
本田 :2006/01/01(日) 06:01:33
> VCLの実装はすべてDelphi(ObjectPascal)言語で書かれています。 それじゃ遅いので一部ASM。
一部ASMもDelphi言語の仕様のうちだろ
本田ってTEditorの人?
Civic のひと
836 :
本田 :2006/01/03(火) 03:49:27
>>834 > 本田ってTEditorの人?
別人。
837 :
本田 :2006/01/03(火) 05:20:36
私です。
838 :
本田 :2006/01/03(火) 13:42:12
そうです。
スゲー
840 :
本田 :2006/01/03(火) 22:21:36
この贋物どもめっ
美奈子です。
dll内にvclのフォームを作ってもFormCreateだけでは Timerが動きません。ShowModalしないとうんともすんとも いわないのは仕様ですか?
それ当たり前。メッセージポンプがないから。モーダルループで動くのも当たり前。
Windows の仕様だ、とも言える。常識だが。
親持たないTTimer作ればいいじゃない。 親がなければ自分でメッセージ処理用ウィンドウ作るし。
ウィンドウつくってもメッセージポンプがないと動かないっしょ。 ここほんとに C++ スレなのか? Windows のプログラムについて知ってる人いないの?
TTimerとsdkのtimerがごっちゃになってるな
TStringList *tmpList = new TStringList; tmpList->Text = "AAA"; tmpList->Text += "AAA"; tmpList->Text += "AAA"; tmpList->Text += "AAA"; ShowMessage(tmpList->Text); delete tmpList; これ、1行しか表示されないんだけど、どうしてなの? Ansistring型に+=は有効なのに。
>848 BCB6ならヘルプ>キーワード>プロパティ,代入演算子,
>849 どうもありがとう〜 ダメなのは前から知ってたけど、やっと理由が分かってスッキリしました。
851 :
デフォルトの名無しさん :2006/01/08(日) 00:26:05
こんにちは。 BCB5でプログラムを作成しています。 プログラムが日本語版のWindowsで動いているか、そうでないかをプログラム中で 判別したいのですが、検索エンジンでさがしても適当なものを見つけることが できませんでした。ご存知の方、よろしくお願いします。
>>851 GetACPとかGetUserDefaultLangIDとか。
C++Builder6を使用していますが メモリ管理のことで少々不明な点があるので教えてください builderのコンパイラ性能がいまいちなので重い計算をする部分を Intelコンパイラを使ってLib or DLLで作り、それをBuilderでつくったソフトから 呼び出すような形態を想定しています。 その際に問題になるのがメモりマネージャーの違いだとおもうのですが 同じBuilder同士や、たとえばVC同士でもランタイムバージョンの違いで 問題になるようです。 今回のケースのような場合はどうすればよいのでしょう? ふつうにnew deleteを使うと問題がおきますよね?
>>853 WinAPIのHeapAlloc系を使うようにすれば、ヒープハンドルさえ同じなら平気。
ICCがVC++と同じだと仮定して、 VC++はHeapAllocをほぼそのまま呼び出してる。 一方、BCB(VCL)はHeapAllocで確保した領域を、さらに自前で管理している。 なので、呼び出し側と開放側が一致しないとまずい。 共用するには、>854の言うように、 HeapAllocなりで確保した領域をplacement newなりで初期化して使えばいいと思う。 deleteも、デストラクタを呼び出してからHeapFreeするようにして。 (VCLオブジェクトが内部で確保した領域は、開放もそっちを使うので問題ない)
構造体(POD)ならHeapAllocでいいけど、 クラスならoperator new/deleteをオーバーロードするとすっきりする。
>>853 dll内に実装したクラスをapp側からnewして利用したいって話?COMみたいなやり方は駄目?
外部へ公開するインタフェイス(抽象クラス)
interface ITest
{
virtual int Get( void ) = 0;
virtual void Set( int val ) = 0;
virtual int Release( void ) = 0;
};
実装(構築子やら参照カウンタは省略)
class TTest : public ITest
{
int m_val;
int Get( void ){ return m_val; }
void Set( int val ){ m_val = val; }
int Release( void ){ delete this; }
};
インスタンス作成関数
ITest* CreateTest( void )
{
return new TTest;
}
app側
ITest* Test = CreateTest();
Test->Set( 100 );
Test->Release();
BCBでnewした領域はBCBでdelete ICでnewした領域はICでdelete これじゃだめなのか?
それに加え、ICで作ったクラスの非仮想関数を呼び出すのなら、クラス自体のエクスポートが必要。 逆にBCBで作ったクラスの非仮想関数をICで呼び出すことはできない。
メモリの話題で思い出した。ビルダー6のメモリ管理周り怪しくね? void __fastcall TForm1::Button1Click(TObject *Sender) { //A BYTE *p = new BYTE[ 640*480*4 ]; Memo1->Lines->Add( (DWORD)p ); //B Graphics::TBitmap *Image = new Graphics::TBitmap; Image->PixelFormat = pf32bit; Image->Width = 100; Image->Height = 100; Image->Canvas->FillRect( TRect( 0, 0, 99, 99 ) ); delete Image; //C delete[] p; } Button1を押すと初回と二回目以降でアドレス変わるし 二回目以降に受け取る領域はStretchDIBits()の転送元にしようとしても失敗する (A→C→Bと並び換えたり、確保する領域を310432バイト以下にすると問題は起きない) VCのソースを基に自作したmalloc()とfree()を組み込んで回避したけど 新しいビルダーでは直ってるかな
>>860 > ビルダー6のメモリ管理周り怪しくね?
藻前の日本語の方が怪しいよ。
# > 初回と二回目以降でアドレス変わるし
# 何の?
# > 二回目以降に受け取る領域は
# 何の?
BCB6が未だにバグだらけなのは確かにそうだけど、どうしようもないんだよな
まあ
>>861 の方が阿呆だな。
関数名を見れば簡単に理解できるじゃん。
頭が狂ってるんじゃなくて、頭が悪いんです。単純に。
867 :
デフォルトの名無しさん :2006/01/13(金) 23:31:12
最近C++Builderのver6を使いはじめました。 IDEのエディタで、イベントハンドラなどを追加すると、 自動的に挿入される //----------------------- の横線がウザいです。 これを停止するオプションは無いのでしょうか?
>>860 自分もBuilder6を使って同じ現象を確認した。
オフトピだがFillRect()の記述が間違っていると思う。
正しくは、
Image->Canvas->FillRect( TRect( 0, 0, 100, 100 ) );
この関数の引数は、数学的に言うと左閉右開区間です。
Builder6のヘルプより引用
----------------------------------------------------------------------
FillRect メソッドはキャンバス上の指定した四角形を現在のブラシで塗りつぶします。
void __fastcall FillRect(const TRect &Rect);
説明
FillRect メソッドを呼び出すと,現在のブラシを使って四角形の領域を塗りつぶすこと
ができます。指定の領域を塗りつぶす場合,四角形の左と上の端は領域に含まれます
が,右と下の端は含まれません。
----------------------------------------------------------------------
俺もありえねーだろと思いつつ試してたんだけど、StretchDIBitsでまじでおかしくなったな。 メモリの確保をnew以外にするだけで直るんだけど、どういう理屈なんだこれ。
870 :
デフォルトの名無しさん :2006/01/14(土) 09:13:13
>>867 $(BCB)\Bin\bcb.bcfというファイルをエディタで編集します。
[Code Formatting]
Divider Line=
Divider Line Break=
を追加すると仕切り線が作られなくなります。
ヘルプのキーワードは「生成されたコード」です。
871 :
860 :2006/01/14(土) 16:49:56
>>862 ありがとう、今から落としてみるよ。
>>868 TRect/RECT
指摘、解説してくれてありがとう。
いろいろ値を変更しながら実験してた途中のコードを貼り付けて
しまったので前述のようになってしまった次第。
問題回避用に組み込んだコード(骨子のみ)
HANDLE g_hHeap;
void *malloc( size_t szAllocation ){ return HeapAlloc( g_hHeap, 0, szAllocation ); }
void free( void *Unused ){ HeapFree( g_hHeap, 0, Unused ); }
void _SetupHeap( void ){ g_hHeap = HeapCreate( 0, 4096, 0 ); }
void _CleanupHeap( void ){ HeapDestroy( g_hHeap ); }
#pragma startup _SetupHeap 0
#pragma exit _CleanupHeap 0
ヒープAPIに丸投げです(realloc()calloc()も同様)
グローバルのoperator new/new[]/delete/delete[]を自分で定義したらどう?
873 :
デフォルトの名無しさん :2006/01/19(木) 18:30:10
例のまんまコピペしてlocaltime関数を使うとCodeGuardでエラーになるんですが、なぜでしょうか?
BCB6のコードガードはUpdate1を適用すると支障が出るようになります。
875 :
デフォルトの名無しさん :2006/01/19(木) 18:56:17
確かにUpdate1してますが・・・ ではこの関数自体は問題なくCodeGuardオフでコンパイルしたらいいですか?
そうするとBCB6のプロジェクトがコンパイルできなくなるけどな
>>878 通称"Label2"バグが出る。
<property category="build.node" name="packages" value=
に、使われていないパッケージが入っていると出るようだ。
コンポーネントを登録したら、以降どのプロジェクトもコンパイルできなく
なったりする。その時は Dafault.bdsproj だったかそんな名前のファイル
から、使ってないコンポーネント名を手で削除しなければならない。
2006買ってないけど2006のコンパイラまわりだけ6に移植が正解なのかね‥‥
2006のコンパイラ廻りって6と比べてなんか良くなってるの?
6ではlexical_castが通ったの確認したけど それ以外どれが通るの?
>886 おやおや。先週の投稿なのに。 boostに、最新版のコンパイラだと不要なワークアラウンドコードが入ってるから、 その辺解決するパッチを今作ってるよ、という話。
889 :
デフォルトの名無しさん :2006/01/22(日) 00:13:04
2006にするとGUIとか変わるの? TStringGridとか機能アップしているのか気になる
あれは昔から糞だから期待しない方が
BCB6はインテリセンスがVC++より賢い。 VC++だと出ない候補も出してくれる(shared_ptrの中とか)
そういやSpeedFix入れてると「::」から補完動作してもIDEのエラー出なくなるのね。 (メッセージウィンドウにコンパイラ内部エラーが出て補完は出来ないけど)
>>893 戻り値はreturnに指定された値のコピーが作られ、そいつが返されるので問題ない。
あとそのコピーは最適化で省略されるようになっているかもしれない。
896 :
デフォルトの名無しさん :2006/01/23(月) 00:09:12
コンパイラはC99に対応しましたか?
>>896 だめだ。可変長配列が蹴られた(BCC 5.8.1)。
long long intは5.6の頃から使えるしなぁ。
VC8.0も今回はC99対応見送りだしなあ・・・・・ このままメジャーなコンパイラでは、C99対応は立ち消えか? gccがせめて100%対応になってくれれば。
可変長配列はどうでもいいが可変長引数マクロは対応して欲しい‥‥
ICCはメジャーじゃないのか…
すみません オブジェクト名を文字列で指定する方法ってありますでしょうか・・? たとえば String strTest = Edit1; strTest->Text = "ω"; いろいろ調べましたが・・・ わかるかたいらっしゃったら教えていただけますでしょうか。 よろしくお願いします
RTTIって使えないの?
対象がコンポならFindComponentがあるけども
905 :
デフォルトの名無しさん :2006/01/24(火) 16:41:29
aaa
906 :
デフォルトの名無しさん :2006/01/24(火) 18:55:56
新バージョンは最高ですか?
907 :
901 :2006/01/25(水) 00:41:11
解決しました! FindComponentでなんとかなりましたー
>906 BCB6よりはいいと思うよ。 その代わりメモリ1Gいるけど。
909 :
デフォルトの名無しさん :2006/01/25(水) 04:19:48
>>908 ではMMXPentium200MHzメモリ96MBの僕では無理ですね。
諦めて6使い続けます。
Celeron850MHz メモリ768MB(最大まで搭載)の漏れでも無理ですね。
911 :
デフォルトの名無しさん :2006/01/25(水) 17:48:44
ちとこのスレの趣旨とは異なるかもしれませんが質問です。 いままでBCBでプログラミングしてきたのですが BDSでASP.netのプログラムを組む必要が出てきました。 で、DELPHIとC#でどっちを選べばいいのか迷ってます。 VCLがつかえるDELPHIか、C/C++の文法に近いC#か・・ どっちがいいでしょうかね? ちなみにDELPHIもC#もプログラム経験はありません。
でるふぃどとねと
.NET 1.1で良い+BDSで組んでもOK=Delphi.NET .NET 2.0が必要=VS Expressを入手してC#で
914 :
911 :2006/01/25(水) 22:43:40
>>912 ,913
レスありがd
.NETが2.0でなければDELPHIのほうがいいのですね。
特にその辺は何も言われていないので1.1でも大丈夫です。
開発ツールも指定はないです。
Delphi.netでやってみようと思います。
(BCBは.net対応になったりしないんですかね?^^;)
> DELPHIのほうがいいのですね。 お仕事みたいですね。 とするとC#で作りはじめた方が安全かも。 余裕がある・趣味ならDelphiを押しますけど。
どっちも経験がないなら Delphi.NET を選ぶ理由はないだろ。 C# に比べてドマイナーで情報もほとんど無いし。 Delphi.NET は既存の Delphi ユーザが、しかたなく .NET やらなければ ならないときにしぶしぶ使うくらいしか存在理由はないだろ。
>C# に比べてドマイナーで情報もほとんど無いし。 C丼なんて存在も知られない超ドマイナー土着言語だ罠。
テンプレにある JCL,JVCL が使えません。まずは自宅PCを実験台にしようと。 BCB6パーソナル(1万円のやつ)sp4、WinXP ググってwiki2個あったけど、インスコしろとしか書いてません verをそろえろって書いてあったが、1個を解凍して、JCL,JVCL 2個でるタイプだから大丈夫だと思う パーソナル版でJVCL使えた人いたら、教えて下さい ちなみにJVCLってのは、フリーでボタンとかいっぱい入ってるやつです。
最初にJCLをインストールしてますか?
921 :
918 :2006/01/27(金) 09:30:11
会社のプロ版では問題なくできた >919 みなさんのオススメのコンポーネント群ってなんですか?
923 :
デフォルトの名無しさん :2006/01/27(金) 19:36:32
次回作は期待出来ますか?
TComboBox の OnMouseMove イベントってないですね。 自分でイベントを実装したいときはどうやればいいですか?
OnMouseMoveを__publishedに書いて公開してやればいいだけだけど、 スタイルによっては内部にEditコントロールを持ってるから、その部分のマウス移動まで捕らえたいなら、そいつをサブクラス化かな。
926 :
924 :2006/01/28(土) 15:25:09
927 :
デフォルトの名無しさん :2006/01/28(土) 20:14:07
継承元の'Label2'の解消法..まじかよ。 しばらくやる気なし。
ただプロジェクト作って元のプロジェクトからファイルぶち込むだけじゃん。 あ、他作コンポーネント使ってたら大変だね。 俺はコンポーネント使わず自前の関数で標準VCLいじって利用しているからなんの問題もなかった。
私の所ではBCB6で実行ファイルのサイズが大きくなると正常にコンパイルされなくなってしまいます。 バグなのか環境依存なのか・・・
コンパイルそのものに失敗するのか、リンクに失敗するのか、 実行ファイルはできるが実行時の挙動がおかしいのか、を詳しく書いた方がいいと思うよ。 Update#4とその後のリンカのアップデートは適用ずみ? もしBCBの実行ファイル自体のメモリ管理コードが引き起こしてる問題だとしたら 何も打つ手がないのかなあ・・・
931 :
929 :2006/01/29(日) 14:08:38
>>930 失礼しました。環境は以下の通りです。
Win2000sp4 MEM:320MB HDD:8GB(残1.2GB NTFS) BCB6 Update#4
いつも「実行時パッケージを使って構築」「共有RTL DLLを使う」のチェックを外しておりますが
どうも実行ファイルのサイズが1.5〜1.6MB位になるとおかしくなってくるようです。
これはUpdate#4適用前でも起こってました。
挙動はコンパイルやリンクの失敗、実行ファイルはできても直ぐに終了とか様々です。
しかもそうなるとそのユニット、フォームを使用している限り治りません。
プロジェクトグループにいくつもファイルを登録しててもおかしくなりますが
この場合は登録数を減らすと正常になります。
もしかしたら全ソースコードのサイズが絡んでいるのかもしれませんね。
その程度の大きさのアプリならいくつか作ってるけど、おかしくなった事ないな。
実行ファイルのサイズが大きくなるとって聞くとコードの絡め方が問題なんじゃ?って思ってしまう。 ローカル変数とグローバル変数のポインタで同じような名前があって、どっかで間違えて使用されているんじゃないかと思う。 ってそう言うことはないの? そもそもコンパイルやリンクの失敗って、どんなメッセージが出てるかが問題解決の糸口だろ。 >そうなるとそのユニット、フォームを使用している限り治りません。 って、そのフォームとユニットに問題があるって事だろ。
934 :
929 :2006/01/29(日) 15:25:36
初めに記述ミスを疑いましたが、丹念に見てもわかりませんでした。 コンパイル・リンカエラーは大体「未定義のシンボル」か「外部シンボル 〜 が未解決」が多いです。 でもきちんと宣言及びコードの記述もしてありますし、パスも通してあります。 実行時のエラーはメモリエラーが多いですが、最近では「この機能を使うライセンスを有しておりません」も出るようになりました。 しかし同様のコンポーネントを使用したソースをコンパイルして実行してもそんなエラーは出ません。 発病するとcpp,hファイルを症状が出る直前に戻しても治りませんが、 プロジェクトとフォームを新規に作成して、それ以外は症状が出る直前のからコピーしてくると正常になる事から 自分が記述したところ以外で何かが起こっていると思ったのですが・・・ BCB6が壊れているかもと再インストもしてみましたが未だ解決されません。
ところで、次スレってどうする? BDSスレに統合? それともver.6以前のユーザのために続ける?
>>935 分けたままでいいんでないの?でないと、Delphiとごっちゃになるし。
こっちは、Ver6以前のC++BuilderとBDSのC++Builderパーソナリティを対象にするということで。
BDSスレはBDS全般に関することにすればいいと思う。
>この機能を使うライセンスを有しておりません そんなメッセージ見たことない。 どっかからシェアのVCLコンポーネントでも入れてんの? 俺の推測だけど、そのコンポーネントはプロジェクトごとにレジストリかどっかにプロジェクト名とか残してて レジストして無い場合一定期間すぎたらそう言うメッセージを表示するようにプログラムしてあるんだと思う。 で、解除の方法は#defineとかであるコードを入力すれば制限無く利用できるとか。 要するに標準コンポーネント以外信用するなってこった。
938 :
929 :2006/01/29(日) 18:37:49
>>937 > >この機能を使うライセンスを有しておりません
> そんなメッセージ見たことない。
私もこのメッセージを見たのは初めてです。
でもコンポーネントはBCB6Proに付いてきたコンポーネントしか入れておりませんし、
正規に購入してインストール&ユーザー登録もしてありますからライセンス違反しているとも思えません。
本当はソースコード一式を何処かにULしたいところですが
生憎業務で使用するプログラムなのでそうもいかないのが残念です。
VCLのDB関係のソースに、そのメッセージを出すコードがあるから、確かに外部コンポじゃないね。 それは置いといて業務でそんな不安定な状態は泣けるね
一応ディスクとメモリのチェックをおすすめ。 ハードウェアに問題があるかもしらん。
941 :
本田 :2006/01/29(日) 23:22:53
943 :
929 :2006/01/30(月) 00:33:48
お答えして下さった皆様ありがとうございます。 今日HDD・メモリのチェックとilink32のアップデートを試してみます。
944 :
本田 :2006/01/30(月) 00:36:53
>>942 >Delphi 7 - Indy ヘルプファイル・アップデート
> 【ファイル名】d7help_indy_jp.zip
> 【ファイルサイズ】3,363,040 バイト
> 【対象アプリケーション】Delphi 7 Enterprise/Professional
> 【圧 縮】ZIP
> 【説 明】Delphi 7 のオンラインドキュメントのためのアップデートを提供いたします。 詳しくは、Delphi 7 ドキュメントアップデート・ダウンロードサービスを参照してください。
http://www.borland.co.jp/download/delphi.html
>>944 ありがとうございます
以下の用に書いて見ましたが
TIdHashMessageDigest5 *encoder = new TIdHashMessageDigest5();
T4x4LongWordRecord hash = encoder->HashValue(str);
[C++ エラー] unit1.cpp(169): E2034 'unsigned int' 型は 'unsigned int[4]' 型に変換できない
946 :
942 :2006/01/30(月) 01:13:06
途中で送ってしまいました。
947 :
942 :2006/01/30(月) 01:17:47
コンパイルが通りません で TIdHashMessageDigest5 *encoder = new TIdHashMessageDigest5(); unsigned int hash = encoder->HashValue(md5str); に変えて見たらコンパイルは通るのですが 実行時EAccessViolation で書き込み違反が起こります。
948 :
本田 :2006/01/30(月) 01:43:40
949 :
デフォルトの名無しさん :2006/01/30(月) 03:37:02
ジョーンズコンポーネントはありますか?
950 :
本田 :2006/01/30(月) 07:03:26
>>942 >Network Working Group R. Rivest
>Request for Comments: 1321 MIT Laboratory for Computer Science
> and RSA Data Security, Inc.
> April 1992
>
>
> The MD5 Message-Digest Algorithm
>
>Status of this Memo
http://www.ietf.org/rfc/rfc1321.txt
ファイル削除時にゴミ箱に入れたいのですが、何か簡単な方法はありませんか?
Indy10はC++Builderにインストールできるの?
>>947 TIdHashMessageDigest5利用したいなら、
IdHash.hppの typedef unsigned T4x4LongWordRecord[4]; をコメントアウトして、その下に
struct T4x4LongWordRecord {unsigned Value[4];}; を追加。
後は IdHash.hpp と IdHashMessageDigest.hpp にあるいくつかのクラスの HashValue メソッドの戻り値が
unsigned になってるので、全部 T4x4LongWordRecord に置き換える。
>>950 ありがとうございます
このソースを使えばいいんですね。
956 :
942 :2006/01/30(月) 11:22:25
それぞれファイルに落とし コンパイルしたら md5c.cは無事通りましたが mddriver.cが [C++ エラー] mddriver.c(104): E2451 未定義のシンボル MD_CTXとなってしまいます。 MD_CTXってのは何なんでしょか?
957 :
951 :2006/01/30(月) 15:49:16
Indy10 インストールしてみたひ
960 :
デフォルトの名無しさん :2006/01/30(月) 17:13:24
10まだ?
961 :
本田 :2006/01/31(火) 07:08:38
>>942 >This page describes md5,
>a command line utility usable on either Unix or MS-DOS/Windows,
>which generates and verifies message digests (digital signatures) using the MD5 algorithm.
>This program can be useful when developing shell scripts or Perl programs for software installation,
> file comparison, and detection of file corruption and tampering.
http://www.fourmilab.ch/md5/
962 :
デフォルトの名無しさん :2006/01/31(火) 09:57:49
次回作は何年後ですか?
>>957 MSDNで検索すれば出てくんジャマイカ?
>>918 pro版では問題なかったとのこと、やっばり personal はファイルが少ないせいで
少しばかりてこずるみたいですね。
私も personal なんですが、手順どおり JCL、JVCLの順でインストール。
JCLはインストール元のパスに日本語が含まれてると駄目。
JVCLは Interpreter と UIB とかいうコンポーネント(?)でエラーが出たのでインストール
しないようにすれば、とりあえず完了。
その後実際の project のコンパイル時に JvConsts.res、JvCtrls.res が無いとエラーが
出たので jvcl\resources の下からパスの通った適当なフォルダにコピー。
これで今のところ使いたいコンポーネントは問題無く使えてます。
ご参考まで。
C++Builder Personal 6を安く売ってるところ無いですか
>>966 そう言う事は、価格.comやベストゲートで聞け
<ちらしの裏> bcc5.5/bcb6のstat()って、ワイルドカードにもマッチしちゃうんだね。 Unix系のシステムコールでも、VCTKでも stat()は正しいファイル/ディレクトリ以外だと失敗するので stat()が取れなかったらワイルドカード stat()が取れてS_ISDIR()が成立したらディレクトリ それ以外はファイル みたいな事を共通ソースでやろうと思ってたんだけど ちょっと無理みたいね。 その他にも、Unixではstat("dirname/")が成功するのに bccもVCも失敗するという違いもあるし、 素直に#ifdefなりで切り分けてGetFileAttributesを使うべきかな。 </ちらしの裏>
969 :
デフォルトの名無しさん :2006/02/01(水) 04:29:31
正規表現を使いたい場合、何を使えばよいのでしょうか?
>>969 標準でPCRE入ってるしboost::regexも使える
972 :
デフォルトの名無しさん :2006/02/01(水) 12:44:05
次スレ誰かたててくれ
973 :
デフォルトの名無しさん :2006/02/01(水) 12:55:29
デルファイってただなの? どこまで使えるの?たたで
976 :
本田 :2006/02/02(木) 13:31:41
>>969 > 正規表現を使いたい場合、何を使えばよいのでしょうか?
>bmonkey's Delphi page
>正規表現を使った文字列探索/操作コンポーネント集
>
>バージョン
> 0.17
>配布ファイル
> REXP017.LZH (69,462 bytes)
>動作確認環境
> Windows 98 + Borland Delphi6 Japanese Personal edition。
> 1つ前のバージョン 0.16は Delphi2.0J と Delphi3.01J、C++Builder1J でも動いていました。今回の変更はバグの修正だけなので、確認はしていませんが、本バージョンもこれらの環境で引続き動作すると思います。
>ライセンス
> パブリックドメイン
>概要
http://homepage1.nifty.com/bmonkey/delphi/delphi.html
それawk相当の正規表現しかないよ
BCBでバックアップファイルを作らない方法ありますか?
>>978 ツール→エディタオプション→表示→バックアップファイルの作成をオフ
981 :
デフォルトの名無しさん :2006/02/05(日) 17:18:44
JCLと聞いて、秘められた暗い過去を思い出してしまった。
>>981 かーくーなーよー
(ちなみに俺はPL/Iだった)
983 :
デフォルトの名無しさん :2006/02/07(火) 19:29:01
俺の一番古い記憶は158の2頭立てだ。どうだ、恥ずかしいだろう。 あれ〜、お止めになって。
984 :
デフォルトの名無しさん :2006/02/10(金) 07:43:04
http://www.itmedia.co.jp/news/articles/0602/09/news010.html Borlandが開発ツールを売却、Segue Software買収
アプリケーションライフサイクル管理(ALM)推進の一環として、米Segue Softwareを買収し、統合開発環境(IDE)関連事業の売却先探しに当たる。
Borland Softwareは2月8日、アプリケーションライフサイクル管理(ALM)推進の一環として、統合開発環境(IDE)に関連した事業の一部を売却する計画を発表した。
売却の対象にはBorland Developer Studio(Delphi、C++Builder、C#Builder)とJBuilderが含まれる。BorlandではBear, Stearns & Co.と契約して売却先探しに当たる。
同時に、米Segue Softwareを約1億ドルで買収する合意を交わしたと発表した。同社はアプリケーションライフサイクルを通じたソフト品質定義、測定、管理、向上のための製品を提供している。
いずれも、拡大しているALMの分野で主導的な地位の確保を目指す戦略に沿ったものだとBorlandは説明している。
985 :
デフォルトの名無しさん :2006/02/10(金) 20:47:25
おぉ ついに。 売却でもいいと思うな。 業務開発で、今のボーランド系を主体に使うってのは バカげた選択と言わざるを得ない状況だしな。 出来がいい悪いの問題じゃねぇや。
986 :
本田 :2006/02/10(金) 21:22:49
>>985 > 業務開発で、今のボーランド系を主体に使うってのは
> バカげた選択と言わざるを得ない状況だしな。
ロングホーンがこけたので、
.netの行方も不透明だ、
何事にもリスクはある。
王道は無い。
>>986 リスクの有無じゃなく、大小の話しでしょ?
988 :
デフォルトの名無しさん :2006/02/11(土) 05:55:43
どこが買うんだろ MSが買ったら大笑いだけどな 赤字企業ではなく優良企業が買えばBorlandが持ってるよりいいかもな
Novell Salesforce.com Google. なんて言ってる人が居るみたいだけど・・・
未踏ソフトウェアなんてどうですか
>>989 面白い予想ですね。
その中のgoogleはいくら今、四方八方に唾付けてみてる状況とは言え、
今回は無いんじゃないかなぁ。 もし有ったらどんな展開するのか
面白いけども。
ボーランドは、開発補助系ソフトに移行ってことかな?
この市場はよく知らないが いいんじゃないかな、MSと真っ向勝負でもないし。
Salesforce.com が良いかな。 中小企業向けにCRMをカスタマイズする仕事なんかは Delphi/BCBにはうってつけかも。 で、しばらくしてMSが参入してきて、また揉めると。
埋め梅
ume
埋め
有須川せあらちゃん参上
ボーランド埋め
1000get
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。