1 :
デフォルトの名無しさん :
02/10/26 10:35 C++Builderに関する質問・回答や議論等を行う相談室スレッド。
過去スレ・関連サイトは
>>2-4 あたり。
BCB6 SP2 を UI が化けないようにインストールする仕方。
上記(
>>4 )からダウンロード。シリアル等は必要なし。必要条件は CBuiler6 がインストール済みであること
SP2 をインストールする前に、bin ディレクトリの以下のファイルの拡張子を .jpn に変更しておく。
bcbide60.bpl -> bcbide60.jpn
coreide60.bpl -> coreide60.jpn
準備完了。BCB6_xxx_Upd2 を実行。
6 :
デフォルトの名無しさん :02/10/26 12:23
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |\´ー`)/| < どれどれ、おもしろそうなスレッドだ・・・ ○ \/ζ ○ \__________ | |旦 | | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | | | ∧_∧ ビリーー / ̄ ̄ ̄ ̄ ̄ |\ΦДΦ) /| < っざけんな!C++スレ多すぎだろが! ○ > ζ > ○ \_____ | < 旦 < | | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | | |
7 :
デフォルトの名無しさん :02/10/26 16:34
↓↓こういうのがSP2では落ちなくなったね。 std::ifstream iff; int main() { static std::ifstream ifs; } bcc32.exeが英語版になったのはご愛敬か?まあバグが取れているに 越したことはないけどね。
SP2になって改良された点は他に、STLを含むソースをコンパイルした時、 前バージョンではデバッグ画面がソースに一対一に対応せず、見づらかっ たが、SP2では良くなっている。 これで、STLがどのように機械語にコンパイルされるのか研究しやすくなっ た。BCCでSTLを勉強している人は、英語版になってもいいからSP2を当てる べきだ。
C++Builder7はいつ頃出るのですか?
12 :
デフォルトの名無しさん :02/10/29 21:53
閑古鳥スレage
13 :
デフォルトの名無しさん :02/10/29 23:34
どなたかdbExpress使ってみたことのある方いらっしゃいますか? バッファリングがサポートされてないので単方向のみのアクセスしか できないらしいのですが、やはりInterbase Expressを使うしかない のでしょうか?
14 :
デフォルトの名無しさん :02/10/30 00:56
13です。 いろいろと参考書を見ていたら(Delphi用のですけど^_^;)TClientDataSetや TSQLClientDataSetを使うことにより、バッファリングとアップデートが可能 になることがわかってきました。 データベースの使い方に関する資料が少ないので、まだ暗中模索の状態 ですが、データベースが自由自在に使いこなせるようになれば、C++Builder の使用範囲がずっと広がりそうです。
>>13 ,14
まず、sage ることを覚えてくれ。
それと、マニュアルは読んだのか?
わかりづらいマニュアルだけど最低限のことはかかれている。
CBuilder-ML に質問投げるなよ。 どうせなら、こっちになげろよ。
現在、コンパイラの日本語化ファイル作成中。 こいつらはファイルコピーではすまないので... 2ch と同程度の匿名性であぷできるところ、誰か教えて。
>>15 マニュアル読んでみたけど・・・・ひえ〜なんじゃこりゃ〜全然わからん。
これってある程度データベースを理解した人が読まないと、内容が
全く理解できないじゃん。
>>17 サンクス。
そりゃ、データベースアプリ開発ツールなんだから。 データベースのことは知っていることが前提。 たとえば SQL とは何か。とか。
>>20 ACCESSは一応簡単なプログラムならVBAで組んでいます。
SQLも理解しています。問題は、馴染みのないコンポーネントと
データベースをいかに結びつけるかということでして。
C+++Builderを使ってデータベースをいじろうと思ったのは、
ACCESSの速度に不満を感じたからでした。
しかし、私の会社の基幹業務は信じられない事にACCESSの
VBAで動いているのです。もちろんVBAなりの良い点はあり
ますが。
>>21 >馴染みのないコンポーネントとデータベースをいかに結びつけるかということでして。
使えるモノは大してVBと差はないだろ。後は勉強するだけだと思われ。
>>22 わかりました。精進します。
C++Builderは入り口は簡素なんですが奥行きが広いですねえ。
>>23 いや、必要最低限のことを覚えればいいと思われ。
VBシリーズがクソなのです。
>>24 VBはコンポーネントという考え方がないですからねえ。
それが分かれているだけだと考えればよいのかもしれません。
VBAは小規模なデータベースを操るには便利だけど、ちょっと規模が
大きくなると遅くて遅くて。インタプリタだから仕方ないけど。
26 :
デフォルトの名無しさん :02/10/30 23:16
遅くなりましたが新スレおめです えーとBCBで音を録音する、ということはできるのでしょうか またはそれに該当するコンポーネントは無いでしょうか Windowsの標準サウンドレコーダーじゃ60秒制限とかあるので・・・
27 :
デフォルトの名無しさん :02/10/30 23:28
最近、思うのです。GUIプログラムつくるのは 簡単・早い BCB=Del<<VB<<VC 面倒・遅い の順で修正や大幅な変更はVCの方が便利かと思うのだが。 BCBが一番気に入ってるんだけど。 なんせマイナーなんでいつまで先があるのかと…
>>25 > VBはコンポーネントという考え方がないですからねえ。
煽りにしては面白くないし、知識不足だとしたら馬鹿すぎる。
>>26 MediaPlayerコンポーネント使えば?
すげー。「コンパイラの日本語化ファイル」だね?手作業?
SP2だとXPスタイルにしたコンボボックスでバックスペースキーを押すと 全角文字が化け化けな表示になるの直ってますか?
>>34 VCL 部分は Delphi が直らないと直らないぞ。
その件に関しては、AutoCompletion とかいうなまえのプロパティを False に
すれば OK.
39 :
デフォルトの名無しさん :02/11/02 11:47
実行時パッケージを加えずに できるだけ小さなEXEを作りたいのですが なにかいい方法ありますか? 500kByte以下にしたいです。(50KByteぐらい) TFormとJpegとTImage使うだけで 500KByte はちょっと大きい
ObjectWindows(OWL)と言ってみるテスト
42 :
デフォルトの名無しさん :02/11/02 12:39
>>26 2分や5分のウェーブファイルを、あらかじめ用意しておけばいいんじゃないですか。
これらのファイルは、サウンドレコーダで、データの挿入でつくれますよ
EXE圧縮するやつで潰す
>>30 さん
>>42 さん
レス有り難うございました
検索したらいろいろ出てきたので自分でもがんばって作ってみようと思います
45 :
デフォルトの名無しさん :02/11/04 17:07
TCheckBoxにBS_PUSHLIKEを指定する方法しらない? 直接送ったらただのボタンになってしまった
外見だけじゃなくて動作までボタンになってしまう へこんだままになってくれない
>>47 何がしたいのか目的を書けよ厨房。
TCheckBoxにBS_PUSHLIKEを指定したら、ボタンになって当たり前だろ。
49 :
デフォルトの名無しさん :02/11/04 23:44
>>48 そのままだって。コモンコントロールでいうところのPUSHLIKEな
CHECKBOXにしたいのに、その無茶をすると
ただのPUSHBUTTONでのトグルになってしまう
(つまりTCheckBoxは単純にコモンコントロールを実装しただけではない)
プロパティには見つけられなかったがあるならそれでいいし、とにかく
その辺りを知っているなら教えてくれってことだ。(TCheckBoxではそもそも無理とか)
どうやらあなたはあまり詳しくないようだね
他の人よろしく
BCB5で質問です。 メディアプレーヤーコンポーネントでmp3とwavを同時に再生させるプログラムを作りました。 これをXPのマシンで走らせると途中で暴走してしまいます。 mp3の再生に問題があるみたいです。 すいません、アドバイスいただけませんでしょうか。
∫,,,,,,,,,∧,,∧
⊂,,,,,,,,,つ,,-д-ミつ
Win32 API by Object Pascal of Delphi
http://halbow.cool.ne.jp/ShousaiIndex.html これみたら、いいかも。
52 :
デフォルトの名無しさん :02/11/05 10:46
CBuilder5でSSL通信するコンポーネントってありますか? APIベースで作るのがあたりまえなのかな? すいませんがよろしくおながいします。
https でいいのなら WinInet.
口が悪いやつには教えたくないんだな
つーことで、borland の news に投稿。
57 :
デフォルトの名無しさん :02/11/07 02:57
タスクトレイに常駐し(Windowは不可視)waveファイル等を 演奏するソフトを作成しました。 で、この自作ソフトに他のexeから何か信号を送って ファイルの演奏や中止を操作したいのですが、 どうすればよいでしょうか? タスクトレイのアイコンのハンドルをどうにか取得して SendMessageやPostMessageあたりでどうにかなりそうなのかな? というところまではたどり着いたのですが、そこから先がお手上げ状態です。 この考えは正しいでしょうか? 現在は、以下のようなソースになっているのでメッセージマップに WM_PLAYとかWM_STOPとかを作って、それに対応した処理を書けば 良いのかな?と思っています。何かヒントだけでもお願いします。m(_ _)m //ヘッダーファイルの一部 public:// ユーザー宣言 void __fastcall TrayEvent(TMessage& Msg); BEGIN_MESSAGE_MAP MESSAGE_HANDLER(WM_USER+1, TMessage, TrayEvent); END_MESSAGE_MAP(TForm) //.cppファイルの一部 void __fastcall TFormMain::TrayEvent(TMessage& Msg) { switch(Msg.LParam){ case WM_RBUTTONDOWN: POINT P; GetCursorPos(&P); SetForegroundWindow(Handle); PopMenuIcon->Popup(P.x, P.y); break; } }
正しいです。
>>58 うぉーー!!!
ありがとう、これでまたやる気になってきたぞと。
たぶん、FindWindow(EX)関数を使うんですよね?
とりあえず、ガンガッテみます!!!
今時Builder5なんだけど、イメージコントロール等を使って 二枚の画像を重ね合わせて表示させることって可能ですかいのう?
可能です。
>61 ありがとう。やってみるにょ。
>>61 の回答でいいんだったら、質問する前に試せよ・・・。
ど素人だったのか・・・・?
65 :
デフォルトの名無しさん :02/11/10 11:38
TTreeView で、 item が選択されるとの文字の背景が青くなり選択状態に なりますが、フォーム内の他のコントロール(例えば TListView)に フォーカスを合わすとその青い背景が見えなくなり、 どの item が選択されているのか分からなくなってしまいます。 SelectedIndex でイメージを変えるのも手ですが、 Explorer のように背景を灰色とかにできるのがベストなのですが、 どういった方法がありますか?
ヘルプでTreeViewをひけば10番め以内にある
すみません。見逃してました…
ヒントというよりほとんど答えだな
しかし、StringGridなどはどうしてこんな変なスクロールバーなのだろうか・・・。 あえて特殊にする必要ないような気が。
70 :
デフォルトの名無しさん :02/11/12 12:03
BCB6で起動時に開くプロジェクトの設定はできないのでしょうか?
ショートカットを編集すれば?
昔はコマンドラインからプロジェクトファイルをビルドできたんだけど、 今のやつって無理なの?xml→makefile変換が面倒なんだけど。
>>71 最後に開いたプロジェクトをまた開いて欲しいな、と思ってるのでそれでは。
普通の統合環境ならこれくらいできるのだけどなぁ・・・。
[ツール]-[環境オプション]-[設定]-[自動保存の設定]-[プロジェクト デスクトップ]
>>73 最後に開いたプロジェクトが開いて欲しくない人もいる。ってことだけでしょ。
>>74 うまくいきました。ありがとうございます。
>>75 意味不明だよ。それくらい選択できるのが普通だってこと。
まぁ、Borlandの開発環境のUIがいまいちなのは伝統だからな。。。
78 :
デフォルトの名無しさん :02/11/15 10:48
罵りあいは止めよう。 罵倒レスは無視。
80 :
デフォルトの名無しさん :02/11/15 13:50
失礼します。 クリックした位置にグラフィックを表示したいんですが、 なんのコントロールを使ったらいいのでしょう? 要はクライアント領域を作成すればいいのでしょうが TMemoやTRichEditでは蔵違いだと思うので・・・ 当方Builder6です。 どうかよろしくお願いいたします。
質問の意味を理解しかねます
>>80 なにかこう、既存のアプリで似たようなことをしている物を紹介してくれると
質問の意図に気づきやすいんだけど。
>>81-82 レスありがとうございます。
例えば、オセロのように
クリックしたところに石を置くような動作を実現したいのです。
どのオブジェクトを使ってもうまくいかなくて・・・(´Д⊂
どうかよろしくお願いいたします
グリッドでいいのなら TGrid と OwnerDraw.
DrawGridがいいかもな。
>>84 >>85 ありがとうございます(´ー`)ノ
さっそく使ってみましたが、これでなんとかなりそうです。
まだ分かりませんが・・・
困ったことにヘルプを見てTGridなどの使い方を調べてみましたが
載っていません・(ノД`)ノ・゚・
また、DrawGridは「Additional」の欄に見つかりましたが
TGrid, OwnerDrawは探してもありませんでした。
何から何まですみません・・・
調べようにもヘルプにないのでどうしようもありませんでした・・・
87 :
デフォルトの名無しさん :02/11/15 21:58
画像を読み込んで表示させたいときウィンドウまたは、Imageの大きさを変えたいのだが、 プロパティのWidth,Heightをいじってもうまくいかんことがある。どうしたらいいのですか?
>>87 stretchとか何とかいうメソッドがあったと思う。
89 :
デフォルトの名無しさん :02/11/16 00:37
>>86 漏れも探してみたがヘルプにないな・・・
分からないときは鬱になるな。どこで調べればいいんだろう??
TImageを動的に作成して、マウス位置に貼り付けるってのでも 良いのではないでしょうか? なんとなくそっちの方が手軽な気がするんだけど、そうでもないのかな?
interbaseを使用しています。interbaseコンポーネントを使用してデータベースと 繋いでみたのですが、どうも日本語を認識してくれないようでエラーが出ます。 TIBDatabaseでは文字セットをSJIS_0208に設定してます。 そいつを継承したTIBTableを開こうとするとそのテーブルの中身に日本語が入って いるため、例外が出ます。 TIBTableのどこかに文字コードを設定してやらないといかんのか?と思っていろいろ 調べましたが全然わかりません。 どなたか教えて下さい。よろしくお願いします。
凡ミスだった。 interbaseの項目、よく見たらcharsetしてなかった。 スンマソン・・・。回線切って逝ってくる・・・。
94 :
デフォルトの名無しさん :02/11/16 12:20
ファイルに通し番号をつけて保存したいのですが、 SaveToFile((SaveDialog->FileName) + i); とすると、拡張子の後に番号がつけられてしまいます。 [ファイル名][番号].[拡張子] とするにはどうしたらいいでしょうか? あと出来れば、 000,001,002,・・・,100 といった感じに桁数に応じた0を頭に付けられるとうれしいです。
ChangeFileExt(FileName, "")で拡張子無しのファイル名が、 ExtractFileExt(FileName)で拡張子が得られるので、 iを挟んでくっつければいいです。 上記手段は、二つの関数に別れているため、'.'の検索が二度手間で、 効率を気にするなら、自前で'.'を検索して、挿入した方がいいのでしょうが、 ファイルのセーブというより重い処理のついでなので、気にすることはないでしょ。
>>95 即レス感謝です。おかげでできました。
ありがとうございます。
BCB5Proを使ってるんですが、 BDEをインストールさせずにADOを叩くことはできないんでしょうか?
>>97 con = CreateOleObject("ADODB.Connection");
rset = CreateOleObject("ADODB.Recordset");
とかで逝ける・・・という妄想をしてみましたが
実際どうなんでしょうか?>識者の方々
100 :
デフォルトの名無しさん :02/11/18 17:51
VCとBCBを区別するプリプロセッサ定義はないですか?
定義済みマクロ
>>100 VCは持ってないので知らんが、BCBなら __BORLANDC__ が定義される。
103 :
デフォルトの名無しさん :02/11/18 21:15
CB5で同一ファイルの末尾を削除するにはどうしたら良いのでしょうか。 下記の方法ではサイズが元のままで減りませんでした。 APIとかを使った方が良いのでしょうか? 方法1. fmOpenReadWriteでFileOpen→FileRead→データサイズ減→FileSeek(hdl,0,0)→FileWrite→FileClose 方法2. fmOpenReadでFileOpen→FileRead→FileClose →データサイズ減 fmOpenWriteでFileOpen→FileWrite→FileClose
>>97 やった事無いけど、タイプライブラリの取り込みで
どうにかなるんじゃないの?
106 :
デフォルトの名無しさん :02/11/19 12:02
>>104 ありがとうございます。
open()のO_TRUNCとか効果ないみたいですが、なんとか出来そうですね。
落ち着いて考えると、DeleteFileなんかと組み合わせればよかったのかな
>>97 ADOExpressを買うという手もあります。
>>106 例えば次のような例になります。FILEからfileno()でhandleを取得した場合、
fflush()を併用してもfclose()で切りつめたファイルが戻ってしまい、うまく
いかなかったです。
int main()
{
FILE *fo;
int handle;
if ((fo = fopen("test.txt", "w")) == NULL) exit(1);
fputs("1234567890", fo);
fclose(fo);
if ((handle = open("test.txt", O_RDWR | O_TEXT)) == -1) exit(1);
printf("ret code = %d\n", chsize(handle, 5));
close(handle);
return 0;
}
カットシステム刊のC++Builder6 コンポーネント活用ガイド&実践プログラミング をVol1、Vol2と2巻続きで買ってきた。(\4,600 + \3,000ナリ。) いやー予想以上に誤植がひどいですね。ある程度C++Builderの事をわかって 読まないと騙されます。 今までDelphiの入門書を読破してきたが、C++Builder用の書籍とだけあって、 BCBに特化した内容がないかと期待したが、そうでもなかった。まあいいか・・・・ Delphi用の書籍を読んで頭が痛くなる人にはいいかもしれない。
>>110 だって俺は出版社の回し者じゃないから、正直な感想を書きたいのでちゅ。
Delphiをマスターしている人は今更C++Builderの入門書なんか買わんだろうし、
俺自身ちょっと買って後悔しているので。
Vol.1の方ははっきし言って俺には”いらん”かったが、Vol.2の方はなかなか
面白い内容かもしれない。
今まで買ったVCL関連の書籍の中で一番役に立っているものは、 ASCII刊のBorland Delphi6 オフィシャルコースウェア基礎編+応用編 です。 Object PascalをC++に移植する腕もこれで鍛えられた。
BCB関係で良い本ってないらしいからねぇ。 2,3冊買ったけど、どれも良くもなく悪くもなく。ユーザー数少ないからかなぁ。
115 :
デフォルトの名無しさん :02/11/19 20:42
たしかに良い本は全くない。 だから、ANSI/ISO標準に対応した本を買うしかない。 評判の良い本だと言うのを買ってもダメダメなものばかり・・・。 ボーランドのユーザーが減っていくのは 初心者が使えるように解説した本がないというのが原因だと思う。 友人が買ってしまって教えるのに苦労しています。 解説サイトでもあればいいんだけど、ちょうどいいのがない。 一人で作るのも大変と言うことで それぞれが解説をアップするサイトでも作るのはどうでしょう。
116 :
デフォルトの名無しさん :02/11/19 20:44
暇なときにでも解説を書いて 1つのサイトにアップしていけば結構いいと思う。 分散させるとどこにあるかわからなくなるし。
どうしてもVC++やらVS.NETの本が多いからなぁ。 VS.NETとC++Builder,両方持ってる人います? いたらどのように使い分けてますか? (俺もなぜか,両方持ってるんだけど)
VS.NET・・・・・仕事用 C++Builer・・・・・趣味用
しまったC++Builderね。
RAD・・・・・初心者用 C++・・・・・中級クラス以上用 のような棲み分けがあるので、初心者がC++Builderに手を出すとC++で つまずく。中級者以上がC++Builderを使うとVC.NETでいいかと思ってしまう。 ニーズが少ないんだろうね。仕事はあまりないし(Delphiの方が多い)、趣味 でちょこちょこっといじるには重すぎる。濃い内容を持っていながら、使う人 の層が限られているみたい。
C++Builder - ツール。クラスのプロトタイピング、テスト。 VC++ - 本体。 複数人でやる仕事は、C++Builder を使える人が少ないので、 どうしても VC++ になる。 ツールとか、組み込む前のライブラリとか、一人でやって問題ないものは C++Builder でやる。そっちのが効率がいい。
カンマ編集CSVをそのままBDEで扱うにはどうしたらいいんでしょう? 普通にTQueryでSQL切ってオープンしたら、1行がカンマごと1つのフィールドになっちゃうんですが…
C++Builder便利なのになぁ。Borlandやる気なさそうだし仕方ないか。
>やる気なさそうだし そう? ところで CBuilder6 IDE のバグ、知っているのあったら教えて。 Update2 で直っていないやつがいいなぁ。
125 :
デフォルトの名無しさん :02/11/20 15:48
VCで作ったスタティックライブラリをリンクする事はできますか?
日本語版のアップデータが全然でないしね。 やっぱ、BCBは対応悪いよ。
ん?Update2 あてればいいじゃん。 なんでわざわざ「日本版」をまつの?
会社で使ってるものに余計なことは出来ないから。 オフィシャルに英語版のアップデートを当てろという話があれば別だが。
オフィシャルに Kylix3 Open/日本語版がでないように オフィシャルに Delphi7 Trial/日本語版がでないように オフィシャルに BCB6 アップデートの日本語版は出なくなったのさ。 だけど全部本国のサーバーに存在する。 いつまで笹塚に期待する気でいるんだ?あいつらは俺たちのことはもう忘れてる。
133 :
デフォルトの名無しさん :02/11/21 12:42
おおっ、UPDATA3だ。
>>132 サンクス
まあ、確かにあいつら最悪だな。
俺も乗り換えようかな。
>>なんでなんだよ? >>やる気がなくなったのか? ユーザーがバカばっかりだから日本に市場は無いと思ったんだろ。
んで、今度は何が直った?
とりあえず、
>>4 >>5 の方法で日本語 UI のまま動くことを確認しました。
既に .JPN ファイルを作っている人はそのまま Update3 を適用可能。
>>17 は必用なし。
コンパイラの文字列リソースが変更されている模様。
>>32 の BCC32.jpn は削除してください。改訂版は... 1日もらえる?
p.s. 今回は日本語ドキュメントが入っていませんね。方針が代わったのでしょうか。
おまえら日本語ごときにぐちぐちうるせーな。 そんなに嫌ならBorland商品なんか使うなよ。
>>137 それを英語で書けたらみんな黙って従うよ。
omaera Japanese gotokidegutigutiuruse-YO sonnnani iyanara Borland syo-hin nankatukaunaYO
140 :
デフォルトの名無しさん :02/11/21 16:15
クラス名(例:Onigiriクラス)が COnigiriの場合は、普通のクラス IOnigiriの場合は、インターフェースクラス みたいなプリフィックスありますが、 オリジナル(?)で TOnigiri ・・・ テンプレートクラス。内部の型を設定して使う。 BOnigiri ・・・ 継承して使う用(Base)。ウインドウ(コールバック部分)やスレッドクラスみたいなやつ みたいな感じで 勝手にやっていいのでしょうか? もし、開発チーム内でこんなことされたら勘弁と思う人とか居ます? あと、 構造体名の場合は、SOnigiriでいいのでしょうか? 何かプリフィックすあったら教えてください。
うええ 間違って、投稿しちゃいました。 C++相談室に行ってきます。 ここだと、 TOnigiri使うと怒られそう。
ねぇ。132 さんはどうやってこのファイルの存在を知ったの? まだどこにも記事が出てないんだけど... それに「フィールドテスター」に対するライセンス文書も入っているし。 確かに Update3 なんだけど、ちょっと怪しい...
不思議な情報がいっぱい ∧,,∧ 2タンはそいう場所なんでは? ,ミ ゚Д゚彡 ミ ∪
>>142 たまたま。(~・~)
ボーランドはFTPサイトがいろいろあるんだよ。
そうだね。まぁいいや。 Kylix3/Open のコンパイラのメッセージカタログが流用できそうなので、コンパイラメッセージの 日本語化は今晩か、明日にはどうにかなりそう。 コンパイラのバージョンが、5.6.2 にあがっていますね。
146 :
デフォルトの名無しさん :02/11/21 19:13
\ │ / / ̄\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ─( ゚ ∀ ゚ )< きりくすきりくす! \_/ \_________ / │ \ ∩ ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\∩ ∧ ∧ \( ゚∀゚)< きりくすきりくすきりくす!  ;きりくす〜〜〜! >( ゚∀゚ )/ | / \__________ ________/ | 〈 | | / /\_」 / /\」  ̄ / /
俺もDelphiに乗り換えるかなぁ。vs.netは重いし。
148 :
デフォルトの名無しさん :02/11/22 01:06
VBのLikeに相当する処理をBCBで行いたいのですが、代替となるものはあるのでしょうか? 正規表現を一から勉強して作るのは時間がかかりすぎるし……
>>148 もし、まんがいち、返事がきたら転載よろしゅう。
151 :
デフォルトの名無しさん :02/11/22 03:33
>>149 こんなのか(前半)
#define S1H(x) ((0x81 <= ((x) & 0xff)) && (((x) & 0xff) <= 0x9f))
#define S2H(x) ((0xe0 <= ((x) & 0xff)) && (((x) & 0xff) <= 0xef))
#define SH(x) (S1H(x) || S2H(x))
#define SL(x) ((0x40 <= ((x) & 0xff) <= 0xfc) && (((x) & 0xff) != 0x7f))
#define SP(p) (SH((p)[0]) && SL((p)[1]))
#define INC(p) ((*(p)) ? (SP(p) ? 2 : 1) : 0)
152 :
デフォルトの名無しさん :02/11/22 03:34
後半: bool like(const char *p, const char *s) { for (;;) { switch (*p) { case '\0': if (*s == '\0') return true; else return false; case '%': p++; for (;;) { if (like(p, s)) return true; if (*s == '\0') return false; else s += INC(s); } default: if (SP(p)) { if (p[0] != s[0]) return false; if (p[1] != s[1]) return false; } else { if (*p != *s) return false; } p += INC(p); s += INC(s); } } }
153 :
デフォルトの名無しさん :02/11/22 03:49
>>149 DelphiにMatchesMaskてのがあるから、dllにでもして(゚∀゚)アヒャ
それともBCB6に実装されてる?>持ってる人
BCB5には無いよ。
154 :
デフォルトの名無しさん :02/11/22 03:51
Masks漢字とか対応してる?ってか それ以前に真中とか先頭に*来るとちゃんと動かないよーな。
155 :
デフォルトの名無しさん :02/11/22 03:59
正直Likeは便利すぎ。 結構厄介かもな。
>>153 BCB6にはあるようだね。masks.hppに。
正規表現で良ければ、boostのRegex++使うとかってのはどう。
皆さんありがとうございます。 BCBの5なので無いです……Delphiもありません。 ハァ……
158 :
デフォルトの名無しさん :02/11/22 06:09
Likeと同じ動作に拘るならMatchesMaskをさらにカヴァーして使うしかない。
(ただしバグがあったような? 要確認)
正規表現ならば
>>156 氏紹介のRegex++を。
include\PCRE.H は? wchar でコンパイルすれば、そのまま使えるでしょ。
以外と早く返事来た 日本語版C++Builder 6 はアップデート#1は適用されております。 アップデート#2、#3につきましては現在、公開準備を進めており ます。今しばらくお待ちくださいますようお願い申し上げます。 ということだそうです。
>現在、公開準備を進めております。 何ヶ月放置してるんだよ.. JBuilder7 Update3 が3ヶ月遅れで公開されたことを考えると、Update#3 は来年頭か..
お盆前にもそんなような返事貰った記憶があるな。
Printer()->Canvas->CopyRect(rect, PaintBox->Canvas, rect); 上のようにPaintBoxの描画内容を印刷しようとしたのですが、できませんでした。 TBitmapを使わずに、領域を直接コピーして印刷できないのでしょうか? どなたか解決法を伝授願います。OSは2000、Versionは5proです。
BeginDoc()EndDoc()
>>164 レスありがとうございます。
その命令の中に書いてあるのですが、印刷できません。
ミ,,゚Д゚ミつ
D5の時点で2バイト文字にバグありです。
>>158 さん
その後治ったかどうかしらないけど、
どうせ治ってないんじゃないかな
(日本技術部ないし。)
この辺をみれば修正方法がのっているのですが
[Delphi:50700] Re: 文字列比較のワイルドカード文字
[Delphi:53856] Re: MatchesMask 関数でメモリーリーク
[Delphi:53862] Re:MatchesMask は 2 バイト文字非対応ですか?
[Delphi:53879] Re: MatchesMask は 2 バイト文字非対応ですか?
当然VCLのソースがいるんですな。
バグがちゃんと某から修正されていてその情報が
すぐに確認できればいいのにね。
どこか内緒の匿名でupりましょうか?
167 :
デフォルトの名無しさん :02/11/24 00:07
僕のビルダーver.1なんだけど、 何とかヴァージョン6にグレードアップできないかな?
168 :
デフォルトの名無しさん :02/11/24 00:46
>>166 50行程度の関数だから代わりを使うだけ。
>>151 のソースの%を*に変えてしまい、
?と[]の処理を追加すればいっちょあがり。
[]なしなら今手元にある。
>>163 TFrom->Print()じゃダメなん?
重ね重ねありがとうございます。
まずDelphiかBCB6の購入を上申してみます。
あと、
>>168 さんのソースが気になる……
171 :
デフォルトの名無しさん :02/11/24 06:43
>>170 bool wmatch(const char *p, const char *s) {
for (;;) {
switch (*p) {
case '\0':
if (*s == '\0') return true;
else return false;
case '*':
p++;
for (;;) {
if (wmatch(p, s)) return true;
if (*s == '\0') return false;
else s += INC(s);
}
case '?':
p++;
s += INC(s);
break;
default:
if (SP(p)) {
if (p[0] != s[0]) return false;
if (p[1] != s[1]) return false;
} else {
if (*p != *s) return false;
}
p += INC(p);
s += INC(s);
}
}
}
CLXコンポーネントのTTextBrowserを使って表示したリンクを初めてクリックした時、 テキスト(TTextBrowser->Text.Length() が 0になる)が消えるのは仕様でしょうか? 今のところ、初めてのリンククリックの時のみデータをリロードして誤魔化してますが 非効率極まりなくて泣けてきます。
あまりにも初歩的な質問ですみません。 コンパイルの方法を教えてください。 BCC32を実行はできますが、そこからのファイルのコンパイル方法が どうしてもわかりません。どうすればよろしいですか? よろしくお願いします。
あ、ソース上げるの忘れてました。 コンストラクタでm_isEverLinkClicked = m_isEverLinkBug = false;としています。 void __fastcall TChatForm::TextBrowserClick(TObject *Sender) { if(m_URL.Length() != 0){ #ifdef _WIN32 AnsiString url = m_URL; ::ShellExecute(NULL,NULL,url.c_str(),NULL,NULL,SW_SHOWNORMAL); #else (略) #endif m_isEverLinkClicked = true; } } void __fastcall TChatForm::TextBrowserTextChanged(TObject *Sender) { // Bug:Component // 内容:TTextBrowserのリンクを初めてクリックした時、テキストが消える // 対策:再度テキストをロードする if(m_isEverLinkClicked && m_isEverLinkBug == false){ if(TextBrowser->Text.Length() == 0){ m_SendTextStream->Seek(0,soFromBeginning); TextBrowser->LoadFromStream(m_SendTextStream); } m_isEverLinkBug = true; } }
177 :
デフォルトの名無しさん :02/11/26 15:02
C++Builderで、ボタンを押すとホームページを表示させることはできますか? ちなみに、C++Builder5ラーニングバージョンです。
いくらでも方法はあるんだけど。
179 :
デフォルトの名無しさん :02/11/26 15:26
インターネットエクスプローラを起動させることはできますかね。
できるよ。
182 :
デフォルトの名無しさん :02/11/26 15:39
方法など教えてもらえませんか? よろしくお願いします。
183 :
デフォルトの名無しさん :02/11/26 15:41
かぶっちゃいました。ごめんチャイ。
184 :
デフォルトの名無しさん :02/11/26 15:55
開くことができました。ありがとうございます。
185 :
デフォルトの名無しさん :02/11/26 15:59
先ほどのページを開くもので、
String s = "
http://www.yahoo.co.jp ";
ShellExecute(0, NULL,s,NULL,NULL, 0);
としたところ、
'AnsiString' 型は 'const char *' 型に変換できない
と出ました。どのようにしたらよろしいでしょうか?
186 :
デフォルトの名無しさん :02/11/26 16:17
みのもん
ShellExecute(0, NULL,s.c_str(),NULL,NULL, 0);
ありがとうございます。できました。
改行がCRLFのテキストファイルから1行ずつ読み込みたい(長さは一定ではない)のだがVCLさんにそんなやつないですか?
>>190 TStringList.LoadFromFile
AnsiString fName=ExtractFilePath(Application->ExeName)+"dummy.txt";
AnsiString dt;
TStringList *sl= new TStringList();
sl->LoadFromFile(fName);
dt=sl->Strings[0]; //1行目
ShowMessage(dt);
sl->Free();
>>191 TFileStreamばかりにらめこしてまつた。このへんはVCLに慣れてないととっさには出てきませんかね?
>>193 とっさというか私の定石なんで。
その代わりSAXとDOMの関係みたいに量が増えれば増えるほど効率は落ちますが。
ideに統合できるバージョン管理ソフトはないのかなぁ
「統合できる」って具体的にどんなことを期待しているの?
eclipseのような操作感を期待してます。
VC++で挫折しました。C++Builderはとっつき易そうでした。C++Builder は貧乏な私が買う価値がありますか?それともC++の勉強不足だ、帰れな のか教えてください。VBならAPI位なら使える程度です。
ニホンゴまちがえた。
Delphiが使ったことありません。どうすれば、、、。
どの辺で挫折しました? 配列やリストのようなデータ構造とか、ソートのようなアルゴリズムで挫折したなら、 言っちゃ悪いけど何やっても無理。 ウィンドウ関数やMFC、APIなどで挫折したなら、RAD可能なC++Bのほうが 学習カーブは緩いので、大丈夫と言えるんじゃない?
MFCでつまずきました。GUIが難しいんです。ぜんぜんVC++(ビジュアルじゃないC++) C++Bの"->"でGUIを書くのが不思議な感じするけど、簡単そう。 この違いはなぜなんだろう。
たのむ。荒らす気がないならあげるな
>>203 それはVCLが優れているからです。GUIの部品をコンポーネントとして
持っていて、それを組み合わせるだけで、極めて少ないコーディング
量で、Windowsプログラムが出来てしまいます。
もっともこれはDelphiも同じ。
WindowsのExplorerのエクスプローラーバーのフォルダツリーのような コンポーネントをCLXで作ろうと思っているのですが、 ネット等で調べたところVCLのサンプルしか見当たらず class PACKAGE TDirectoryTreeView : public TTreeView { //(省略) }; bool __fastcall TDirectoryTreeView::init(void) { HIMAGELIST img_list_handle; //(中略) img_list_handle = (HIMAGELIST)SHGetFileInfo( PAnsiChar(item_id_list), 0, &file_info, sizeof(file_info), SHGFI_PIDL | SHGFI_DISPLAYNAME | SHGFI_SYSICONINDEX | SHGFI_SMALLICON); if(img_list_handle == 0){ FIMalloc->Free(item_id_list); ShowMessage("SHGetFileInfo失敗\n" + AnsiString(__FILE__) + "\n(" + AnsiString(__LINE__) + ")"); exit(1); } 上のようにImageListのハンドルを取得し、 this->Images = new TImageList(this); this->Images->Handle = img_list_handle; としている例しか見つけられませんでした。 どうやらTCustomImageList::Images->HandleはVCLにしか存在しないようなので CLXでTImageListにアイコンを取得する方法をご存知の方がいらっしゃれば 御教授お願いいたします。 開発環境はWindows2000sp3、Borland C++ Builder6 Professionalで、 コンポーネント内のWindows、Linux固有のコードは#ifdef __WIN32__で 分けて書いています。
∧,,∧ えっと、TTreeView.Images ミ,,゚Д゚彡 にImageListを設定して ミつ[|lllll]). TreeNodeのImageIndexを… 〜ミ ミ ∪''∪ いや、よくわかないです。
>>206 ユーザにイメージリスト作らせてそれ代入させれば良いんでは?
BCB Update3の日本語化エラーメッセージファイルが欲しいよ〜。
>>207 すみません、私の説明不足でした。
TTreeView.Images に ImageList のポインタを設定して TreeNode の ImageIndex を
利用するのは分かったのですが、SHGetFileInfo で取得できるのは HIMAGELIST なので
TTreeView->Images->Handle = img_list_handle;
としているサンプルしか見当たらなかったのです。
しかし TTreeView.Images が Handle を持っているのはVCLだけのようなので、
CLXではどのようにしたら良いか分かりません。
HIMAGELIST が指し示す ImageList のポインタを TTreeView.Images に設定すれば
良いのだろうかと思ったので
TTreeView->Images = (TImageList *)img_list_handle;
も試してみたのですが、この行の実行時に AccessViolation を起こしてしまいました。
>>208 すみません、仰る事が上手く理解できませんでした。
あらかじめ用意しておいたイメージリストを、実行時にユーザーに選択させる
という事でしょうか?
もしそうならば、それは想定しているものとは違うものになってしまうので
残念ながらできません。
∧,,∧ /やっぱしよくわかなのですが ミ,,゚Д゚彡 < DelマガのVol22とかそれ前後の号に ミつ つ \CLXでファイルマネージャを作っている @ミ ミ 連載が載っているので ∪''∪ それを参考にしてみたらどうでしょうか。 ソースなら、Webでも手に入るし… (本買わないとダウソだめかもですが)
外部EXEを起動するコマンドって何? どっかのオブジェクトがメソッドとして持ってるのかな?
215 :
仕様書無しさん :02/12/01 15:05
>>214 system関数ですか!やってみます。
具体的にどうやって書けばいいですか?
>>210 楽しみにしております。僕も作り方が分かればお手伝いしたいのですが
全然わからなくて・・・
218 :
仕様書無しさん :02/12/01 16:36
>>214 DOSプロが邪魔です。。
ほかの方法はないですか?
222 :
デフォルトの名無しさん :02/12/01 23:07
>>1 ______
/_ |
/. \ ̄ ̄ ̄ ̄|
/ / ― ― |
| / - - |
||| (5 > |
| | | ┏━┓| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | | | ┃─┃| < こんなサイトを見つけた
|| | | | \ ┃ ┃/ \ 正直、スマンカッタ
| || | |  ̄ \_________
http://freeweb2.kakiko.com/saitama/
223 :
デフォルトの名無しさん :02/12/01 23:07
VCLのヘルプをコンバートして、MSDNに突っ込んだりってできませんか? PlatformSDKとVCLの検索が別々になってたりするので・・・
日本語エラーメッセージ結局来なかったな(´・ω・`)ショボーン
>>228 ありがとう&お疲れ様!
ホント、Borland Japanのサポート体制は腐っているよね。Update3どころか、
Update2も出てないんだから・・・・・
これで、最新のBCB環境を使うことができます。どうもありがとう!
230 :
デフォルトの名無しさん :02/12/03 11:59
うれしいのでage
Update3 は、“Public Beta”扱いだ。と US newsgroups で説明がでています。 後はドキュメントを差し換えるだけだそうなので、バイナリ差し換えは起きないものと 思われますが。 >Borland Japanのサポート体制は腐っているよね。 そんなことは無いよ。既に彼らの管理外にあるのだからしょうがない。
勝手に管理外にすんなよ。藁
いろいろあるんだよ.... 表に出せない社会の裏を感じ取ってくれぃ。
某 ML 等に転記できる方、よろしくね。 それと、正式に Update3 日本語版が出たら“かならず”そちらを当てること。 そうしないと「最新のBCB環境」にならないような気がとってもするなぁ。
なるほど。感謝祭休みで日本の火曜日早朝までずれ込んだわけだな?
236 :
デフォルトの名無しさん :02/12/03 13:04
無償のやつが使えません 自動設定setbccのstep3のパス優先度の選択の現在のパス設定に\command;がなぜかないのが原因っぽ いっす C++Builder5,5です
237 :
デフォルトの名無しさん :02/12/03 14:05
CPad使ってたけど C++Builder5.5は ダウンロードすべき?
239 :
デフォルトの名無しさん :02/12/03 14:57
サーンクス!!そんなスレがあったとは
240 :
デフォルトの名無しさん :02/12/03 15:00
こんにちは。 コンパイラにC++Builder5.5のbcc32.exeとCpadを使っていますが、 構造体メンバの配列をとても増やしたら (例えば {double x[1800][1800] double y[1800][1800] double z[1800][1800] }) Fatal: Error detected (LME1514) こんなエラーがでてしまいました。 構造体メンバの配列の大きさは減らしたくなく、 このエラーをとりたいのですが… どなたかアドバイスお願いします。
スタックサイズを超えてるからじゃない?
嫌がらせなのかなぁ? C++Builder5.5 なんて製品無いんだってば。 CBuiler は 5 か 6 BCC は 5.5
ちなみにC++Builder6 ServicePack3(public Beta)に付属のBCCは version 5.6.2ね。
>>243 製品名としては 5.6.x ってのは存在しないから。わかって言ってると思うけど。
>>240 どれだけのサイズになるか計算してみた?
(1800^2)*8*3バイトだよ。74メガ強だ。
さっさとGlobalAllocでもしなされ。
>>240 マジレスしようかどうか迷ったが・・・・
取り敢えず一番簡単な解決策はstatic領域に確保しなされ。
そーいやB-GEEKSを立ち読みしてたら、ワーム作成の解説しているところで 「フリーのコンパイラ、C++Builder5.5(bcc5.5)をダウンロードして、云々」って記述があった。 そのせいなのか? bccはフリーだけどBuilderはフリーじゃないし5.5じゃないんだよぅと突っ込みたかった。
>>228 thx
ありがたく使わせてもらってます。
>>247 てーことは、C++Builder5.5 って表記している輩はワーム作成者かい?
>>236 は俺です
確かread me かなにかからコピーして5,5をつけたしただけです
PC初心者なんでウィルスみたいなのはつくれません
read meです今確認、5,5はついてなかったので付け足したんだと思います いろいろ検索したあとだったので、検索欄に書いてあったのをコピーしたのかもしれないけど
C++Builder5,5と書いてしまっていたので迷惑をかけてました
255 :
デフォルトの名無しさん :02/12/04 09:22
Windows2000 + C++Builder5で開発をしています。 Excelのワークシートをフォーム上に表示させるにはどうすればいいですか? また、ワークシート上にある特定の名前を付けたオブジェクトの操作は可能ですか? よろしくおねがいします。
256 :
bloom :02/12/04 09:28
>>1-255 HTMLやってた時は楽しいからどんどん先に進めれたけど、
プログラミングの場合最初なんて変数とかポインタとか
つまらんもんばっか。
プログラミングでも最初から楽しくやれてるかたはいるのだろうか?
258 :
デフォルトの名無しさん :02/12/04 09:48
>>257 PHPがオススメなんで、WebProg板へ逝け。
愚痴をこぼされても困ってしまいますが。 ちゃんとした先生/学校/教科書で、一度しっかり勉強したほうが後々楽だと思います。 まじめに、プログラムに不向きな人はいますから、楽しくないことを無理に覚えなくても 良いかと。
>>255 Excel を ActiveX として取り込めばよいんだけど。
この説明で解りますか?
261 :
デフォルトの名無しさん :02/12/04 09:59
>>260 ありがとうございます、少し調べてみます。
>>258 今はHP作る気はない。
>>259 >ちゃんとした先生/学校/教科書で、一度しっかり勉強したほうが後々楽だと思います。
趣味でやってるんだけど。
>まじめに、プログラムに不向きな人はいますから、楽しくないことを無理に覚えなくても
良いかと。
いや、別に不向きだとはいってないよ。
本屋の初歩的な参考書を参考してできるけど
別に大して面白くないやんって不思議に思っただけ。
つうかこの板を見た限り本当に面白い部分を誰も赤の他人なんかには
教えたくないってわけだと思うけど、ちがうか?
すぐに目に見える結果がないと面白くないのか? だとすれば不向きだと思う。
趣味でやっていても、基礎を身につけるために勉強する方は世の中にたくさんいらっしゃいますが、 どう思われます? 本当に面白い部分って、人によって異なるから教えようが無い。ってのが真実ではないかな? テクニックや技法は教えられるけど、意欲やモチベーションってのは教える/教わるものではないでしょう? どう思います?
ネタはマ板でやれ (・∀・)カエレ!
わざわざ C++Builder相談室で聞くような話でもないしねぇ。 昨日からうろうろしている初心者ちゃんが逆切れしたのかなぁ。
>>263-264 「最初は基礎をいっぱい勉強せんといかんけどこれも
いつか俺がプログラマと呼ばれるための辛抱や。がんばるぞ!俺!」
っつーかお二人さんはこんなスタイルで勉強してきたんですか?
268 :
デフォルトの名無しさん :02/12/04 10:33
>>260 Formula One を使用するということでしょうか?
Excelのexeを別に起動させるのではなく、フォーム上に*.xlsファイルの
ワークシートを表示させたいのですが・・・。
よろしくおねがいします。
>>267 基礎部分そのものが面白いと思ってた。辛抱だとか思ったことはない。
BASIC パソコン付属のリファレンス
C K&R第2版
C++ TC++付属リファレンス、ARM
Delphi 付属リファレンス
だいたいこんなもので覚えた。
>>267 だから、技術が解らないのはおまえさんがアホだからなんだってば。
道具のせいにしちゃいかんよ。
>>269 >C K&R第2版
すごいね、あんた。
アゲっぱなしだしなぁ。嵐して楽しいか? HTML 作るより、結果がすぐ出るから、楽しいんだろうなぁ。
>>268 アプリケーションを動かす環境に Excel はインストール済みか?
> 251 さんへ。 ある程度は他人の意見も聞きなさいな。264 で問われている質問くらいは答えてちょうだいな。
275 :
デフォルトの名無しさん :02/12/04 10:58
>>273 ローカルのマシンにはExcel2000が入っています。
つーか、物を覚えることがなぜ苦痛なんだろう。 辛抱とかって感情が出てくることが解らないよ。
>>275 BCB5 でしょ。コンポーネントパレットに Server ってなかったかなぁ?
無ければ ActiveX の取り込みで Excel を指定すればコンポーネント化できるんだが。
>>271 別にすごくない。頭良くないし。
変な例えとかで解説されるよりも単刀直入に書かれてて
「それはそういうものなんだ」とスキップして困ったときにちゃんと
理解する方があってただけ。
BASICとCの間にZ80ASMをやってたからポインタはすぐ覚えた。
後は文法しか残ってないし、予約語が少ないからわりと簡単。
関数は必要なときに用意されてるかどうか調べる。
用意されてるのに自力で実装して大きく遠回りはしたけど。
>>276 >つーか、物を覚えることがなぜ苦痛なんだろう。
どっかのスレで「一日6時間以上みっちり勉強しても
ちゃんとしたプログラムが出来上がるまで一年以上はかかる。」
ってなことが書かれてたけど、
さすがに俺にそれは無理だと思った。
>>279 そんなの自分でやってみないとわからないだろ。
自分が作りたいものができればいいと思うし。
1ヶ月の研修で現場に放り出される職業プログラマと、どっちがいい?
小中学校の勉強も、大変でしたか?
>>264 に対するあなたの考えを聞きたいな。
>>257 コンピューターに限らず、何かを作るときってそれくらいの作業量は必要だと思うけどね。
もう少し大人になって、子供一匹育ててごらん。
24時間つきっきりで、独り立ちさせるまで18年くらいかかる。
それに比べりゃ...
>>263 >変な例えとかで解説されるよりも単刀直入に書かれてて
>「それはそういうものなんだ」とスキップして困ったときにちゃんと
>理解する方があってただけ。
うん、確かにそのやり方の方が楽しそうだし、
自分でどんどん先に進められる気がする。
俺が使った本なんてのは、一つのこと教えるのに
何個もの例えで書かれてあって、
それをいちいち呼んで解析するなんてめんどくさいなと思った。
しかし、読み返してみると、257 はコミュニケーションを否定しているか、 他人の文章を読まずに感想を書き連ねているのだね。 まぁこれで彼の心のモヤモヤが晴れるのなら、付き合ってあげてもいいが。
285 :
デフォルトの名無しさん :02/12/04 11:25
>>277 Serversはあります。
ワークシート上には、オブジェクトが配置されていますが、
そのオブジェクトも一緒に表示させないといけないのです。
可能でしょうか?
>>285 できなかったら質問してください。聞いてないでまずやってみれ。
>>264 >>274 >>281 >趣味でやっていても、基礎を身につけるために勉強する方は世の中にたくさんいらっしゃいますが、
>どう思われます?
尊敬します。
>本当に面白い部分って、人によって異なるから教えようが無い。ってのが真実ではないかな?
では自作のソースコードを公開しようとしないヤツがいっぱいいるのは
どうしてだろうか?
>テクニックや技法は教えられるけど、意欲やモチベーションってのは教える/教わるものではないでしょう?
昔なら自然に趣味が身につくんだけど、
最近はどうも自分から趣味を探すようにしている。
俺には趣味を持つ余裕がないってことなのか?
>小中学校の勉強も、大変でしたか?
塾に通ってたんで毎日の宿題の量がすごくて大変だな
と思ったことあるが、学校ではないです。
>もう少し大人になって、子供一匹育ててごらん。
年バレてます?俺
>24時間つきっきりで、独り立ちさせるまで18年くらいかかる。
お母さん、お父さん今までご苦労様でした。
>>257 悪いと思っているのなら、書かないほうが。行動で示しましょう。
>俺には趣味を持つ余裕がないってことなのか?
ほとんど人生相談なんだけど、冷静に自分を見詰めた結果がそれなら、そのとおりなのではないでしょうか。
尊敬はできるってことは理屈では解っている。ってことかな?
解っているけど体が動かない。ってことなら、もうどうしようもないですよ。
世の中には、体を動かす(学習する)人がいる。ってことで。
勉強する人が、すべて偉いわけでもないしね。
自分のペースでやりたいことをやったら?あんたの人生なんだし。
ただ、
>つうかこの板を見た限り本当に面白い部分を誰も赤の他人なんかには
>教えたくないってわけだと思うけど、ちがうか?
これは、逆恨みでしかないぞ。
>では自作のソースコードを公開しようとしないヤツがいっぱいいるのは >どうしてだろうか? オナーニを公開しようとしないヤツがいっぱいいるのはどうしてだろうか? つか、ソース公開したら「あなたの」何が変わるんだろ?
>>290 そこらへんの教科書に書いてるようなつまらないコードではないはず
だから、技術をパクるに決まってるだろーが。
だから、「楽しい」コードと「つまらない」コードがある。ってところが幻想なんだってばさ。 動いてなんぼのこの世界。 そこまで言うなら、gnu のコード、一通り読んでごらん。
なるほど。 HTML 書いてました。ってのも、他人のページの HTML コードをコピペしていただけなのだな。 自分書いたコードってどれくらいあるんだか。 まだ間に合うから、考え直しなさい。世の中そこまで甘くない。
コードをパクる。ってのは技術を盗むとはまったく別なんだけどね。 その違いがわかるようになるには、いろんな苦労が必要だよ > 257 いままで楽した分、頑張ってください。
>>292 無知な俺のために、ご教授ありがとうございました。
「無知な俺のために」余計な一言。 最後までアゲ嵐。 さすが。ガンガレ
結局のところ、画面になんらかの表示が出るのが楽しいコードと言ってるように思える。 そんなのごく一部分で、ほとんどが「つまらない」コード。VCLのソースでも見てみれば? おもしろいと思わなければやめられるのが趣味ってもんでしょ。
... じゃぁ、gnu じゃだめじゃん。彼の欲望を満たせない... VCL コードも、カラフルとは言いがたいしね。 いっそ、Mozilla/Gekko の HTML レンダリングモジュールを読んでみては?
>>258-298 結局のところ、自分の知識のなさが問題を引き起こしたのだと思う。
もう一度プログラミングのことをきちんと勉強してから発言しようと思う。
たくさんのレスをありがとうございます。
高校生か。テスト休みとかかな?引きこもりでは無いだろうな。 無いことが解っている知識は、時間さえあれば習得できます。 知らないことに気づかない知識を得ることは、一人では不可能に近い。 若いうちに、コンピューター/ネット以外のことも含めて、いろんなことを、 まんべんなく身に付けてくださいね。 頭のやわらかいうちに覚えたほうが楽ですよ。
301 :
デフォルトの名無しさん :02/12/04 18:22
Formula OneのスプレットシートにExcelのファイルを表示させるにはどうすればいいですか? それらしきプロパティが見当たらずに困っています。
302 :
デフォルトの名無しさん :02/12/04 18:37
304 :
デフォルトの名無しさん :02/12/04 18:52
>>302 では、どうにかしてExcelのファイルを表示させる方法はありませんか?
305 :
デフォルトの名無しさん :02/12/04 18:54
補足ですが、標準コンポーネントを使用して表示させたいのです。 クエリーなどから表示させるのではなく、 ワークシートの実態を表示させるにはどうすればいいでしょうか?
>>301 おまえ馬鹿か?教えてくれてるのに無視かよ。
>>305 OLE関係の標準コンポーネントあったと思うが。
>>306 たぶん
「
>>303 はサラのExcelファイルにデータを入れて保存する方法だろうが!
すでに保存してあるファイルを表示したいんだよ! その手順のコードを
無料で全て書きやがれ、この低脳!!」
と、自分で何もしようとしない教えて君だと思われ。
>>307 そのレスは昨日もついたんだけどね・・・。
>>277
Excel をアプリケーションに埋め込み OLE として表示させたい。 なのか Excel のデータをスプレッドシートのまま(何かで)表示させたいのか。 どちらも結構めんどくさいから、Server コンポーネントで Excel を起動させちゃうほうが 簡単かつ確実だよ。Server コンポーネントの使い方が分からない場合はまたそのように。
310 :
デフォルトの名無しさん :02/12/05 13:47
borland C++ builder 6 を使って コンソールアプリを作りたいのですが、 次のようなヘルプに載っているプログラムでさえ エラーが出ます。対処方を御指導願えませんでしょうか // // complex.cpp // #include <complex> #include <iostream> using namespace std; int main() { complex<double> a(1.2, 3.4); complex<double> b(-9.8, -7.6); a += b; a /= sin(b) * cos(a); b *= log(a) + pow(b, a); cout << "a = " << a << ", b = " << b << endl; return 0; } エラー コンパイル [C++ エラー] complex.cpp(9): E2451 未定義のシンボル complex [C++ エラー] complex.cpp(9): E2188 式の構文エラー [C++ エラー] complex.cpp(10): E2188 式の構文エラー[C++ エラー] complex.cpp(12): E2268 未定義の関数 'sin' を呼び出した [C++ エラー] complex.cpp(12): E2268 未定義の関数 'cos' を呼び出した 以上よろしくお願いします。
#include <math.h> // 追加 未定義のシンボル complex のほうはさいげんできないなぁ
>>310 >>311 変だな。何もエラーが出ないよ。
//
// complex.cpp
//
#include <complex>
#include <iostream>
int main()
{
std::complex<double> a(1.2, 3.4);
std::complex<double> b(-9.8, -7.6);
a += b;
a /= sin(b) * cos(a);
b *= log(a) + pow(b, a);
std::cout << "a = " << a << ", b = " << b << std::endl;
}
>>312 無意識に math.h 追加しちゃったみたいだ... ウツダシノウ...
std::complexを引数に取るsin、cosはmath.hでは定義されてないよね。
borland.co.jp のニュースグループに記事かいてるね。こいつめ。 newsgroups は IP もれるから、気をつけて?? どこでも、回答者は重なっていることが多いから、一つどころに絞ったほうがよいよ。
>complex<double> a(1.2, 3.4); で >[C++ エラー] complex.cpp(9): E2451 未定義のシンボル complex が出てしまう。ってことは、 using namespace std; が間違っているのかなぁ。けど、存在しない名前空間名ならちゃんとエラー出すしなぁ。 .. まさか、自前の complex.hpp とかがどっかに落ちていない?
>>310 まだ見てるかな?
一度、マシンを再起動させてから、Examples\StdLib に移動して、
>make
ってやってみて。
それで complx.exe がちゃんと作成されるなら、あなたの IDE 環境かプログラムに問題がある。
超初歩的な質問です ある計算をするアプリを作ったのですが、 計算が終了するまでは「応答なし」になってしまい、ウィンドウの移動などもできません。 どうすれば計算中でもウィンドウの移動などができるようになるのでしょうか? HELPやWEBなどで検索してみましたが、何をキーワードに検索すればいいのかもわからない くらいの初心者です。 「〜〜をキーワードに調べてみよ」といったことでも結構ですので、よろしくお願いします。
ProcessMessages
>>319 解決しました。
ありがとうございました。
321 :
デフォルトの名無しさん :02/12/07 18:19
>>317 最初にエラーが出ましたが、2回makeやったら、
普通に実行ファイルが出来てきました。
レス感謝です^^
std::complexはstd名前空間に包まれているはずなのですが、次のプログラムを コンパイルするとエラーが出ます。 #include <complex> int main() { std::complex<double> a, b; b = std::sin(a); } b = _STL::sin(a); とすれば通ります。_STLはSTLportの名前空間ですが、 stdと同じ意味になっているはずなので、どうもおかしいです。 algorithmのstd::removeも通りません。_STL::removeとすれば通ります。 C++Builder6は、名前空間に包まれている関数の多重定義の解決が うまくできないバグがあるようです。
このバグのお陰で、boost::numeric::ublasが全滅です。std::absとかstd::sqrtを 全部_STL::absとか_STL::sqrtに書き換えないとなりません。ああ面倒くさい。
>>322 そのバグは見覚えがある。昔のバージョンでSTLPort使おうとすると出るんじゃなかったっけ
#define _STL std するという対策をどっかで見た気がする。
本当に使ってるC++Builderのバージョンは6か?
とりあえず、C++ Builder 4、5、6、FreeCompiler 5.5 で問題なくコンパイルできてるんだが…
>>324 C++Builder6でコンパイルすると
>>322 のような症状が出ます。BCB4やBCB5は
STLportでないので症状は出ないと思います。C++Builder6でも、_USE_OLD_RW_STL
という、Rogue WaveのSTLを使うマクロを定義するとエラーが出ません。
恐らくC++Builder6がSTLportに対応しきれてないせいだと思います。
スマソ。もいっかい試したら確かに6だとエラーになった。 コンパイラ切り替えそこねてたみたい。 試しにSTLPortの最新版ならどうなるかと STLPort-5.0-0409 を落としてみたが 全然コンパイルが通らねぇ…
310です。 317さんのおかげで糸口をつくり、コンパイルできました。 すなわち、上のiostreamをiostream.hに変えたら通りました。 #include <complex> #include <iostream.h> using namespace std; int main() { complex<double> a(1.2, 3.4); complex<double> b(-9.8, -7.6); a += b; a /= sin(b) * cos(a); b *= log(a) + pow(b, a); cout << "a = " << a << ", b = " << b << endl; return 0; } iostreamとiostream.hの違いがよくわかりませんが 解決しました。ありがとうございました^^
328 :
デフォルトの名無しさん :02/12/09 17:49
PageControlにプログラムでタブを追加する方法を教えて下さい。
>>328 void __fastcall TForm1::Button1Click(TObject *Sender)
{
TTabSheet* tb;
tb = new TTabSheet(this);
tb->PageControl = PageControl1;
}
>>328 スマソ。コンストラクタに与えるのがthisではまずいかも。
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TTabSheet* tb;
PageControl1->MultiLine = true;
tb = new TTabSheet(PageControl1);
tb->PageControl = PageControl1;
}
331 :
デフォルトの名無しさん :02/12/09 18:15
>>329-330 いえ、コンストラクタがthisでもOKでした!
ありがとうございます。
332 :
デフォルトの名無しさん :02/12/09 18:19
あっ、もう1つ質問ですが、 TCppWebBrowserで表示しているページのURLを右クリックして出てくる ポップアップメニューの「新しいウィンドウで開く」をクリックすると IEが立ち上がってしまうのですが、これをTCppWebBrowserを新たに作成して そこに表示させるためには、どのようにすればいいのでしょうか?
OnNewWindow2でなんかやっとけ
334 :
デフォルトの名無しさん :02/12/09 18:25
335 :
デフォルトの名無しさん :02/12/09 18:36
>>333 あぁすみません・・御意と言いつつちょっとわからないので教えて下さい。
OnNewWindow2イベントで以下のようにタブシートとTCppWebBrowserを作成、
int n = Pc->PageCount;
Ts[n] = new TTabSheet(this);
Ts[n]->PageControl = Pc;
Ts[n]->Name = Format( "Ts%2.2d", ARRAYOFCONST((Ts[n]->PageIndex + 1)) );
Wb[n] = new TCppWebBrowser(this);
Wb[n]->TOleControl::Parent = Ts[n];
Wb[n]->Width = 400;
Wb[n]->Height = 200;
Wb[n]->Left = 2;
Wb[n]->Top = 2;
Wb[n]->Align = alClient;
Wb[n]->Visible = true;
Wb[n]->OnDocumentComplete = CppWebBrowserDocumentComplete;
Wb[n]->OnDownloadBegin = CppWebBrowserDownloadBegin;
Wb[n]->OnDownloadComplete = CppWebBrowserDownloadComplete;
Wb[n]->OnNewWindow2 = CppWebBrowserNewWindow2;
Wb[n]->OnProgressChange = CppWebBrowserProgressChange;
Pc->ActivePage = Ts[n];
この作成したTCppWebBrowserに飛び先のURLを表示する方法を教えて下さい。
いや、俺も正確にやったことないんだけどさ、 Cancelして、新しいTabSheetに作ったブラウザでNavigate2すればいいんじゃないの? 飛び先アドレスの取得は、クリックならStatusTextChange等で(およそ)出来たはず。 およそと書いたのは、なんか問題があるらしいとあぼーんスレで読んだ気がするから。 よく読んでないからわからんけどね。
Navigate2するときのURLってどうやって引っ張ってくるのでしょうか? StatusTextChangeってプロパティ?でアレですかー んーこの辺はちょっと難しそうですねー ここらの情報ってどこかに載ってるサイトないですかね?
あー何か「このイベントは使わないでください」っておもいっきり 書いてますねーこれ、あー、どうすればいいんだあああああああ
>337-338
私は遠慮なくStatusTextChangeイベントを使ってますよ。
特に問題はなさそう。
ただ、StatusTextChangeでは、#を含むURLが上手く取得出来なかったと
思います。(例えばGoogleの参照URLとか)
良かったら、これをどうぞ。
http://abone.pos.to/Code.txt
>>339 ふーふー(;´Д`)
激しく感謝します!
早速試してみます!!
341 :
デフォルトの名無しさん :02/12/10 12:09
>>339 あ、すみません・・
StatusTextChangeイベントが発生しないのですが、何か設定が必要なのでしょうか?
また、教えて頂いたソースでやってみたのですが、飛び先URL
じゃなくて、何か自分のURLぽかったのですが、ちょっと私のやり方が
アレかもなので、再度トライしてみます。
TMediaPlayerで表示される.AVIや.MPGの表示ウィンドゥをユーザー定義のTPanel にしているのですが、マウスでこの表示ウィンドゥのサイズを変更した時に、動画の サイズが変わってくれません。 何が間違っているのでしょうか? void __fastcall TViewForm::ViewPanelResize(TObject *Sender) { MainForm->MediaPlayer->DisplayRect.Right = ViewPanel->Width; MainForm->MediaPlayer->DisplayRect.Bottom = ViewPanel->Height; MainForm->MediaPlayer->Display = ViewPanel; }
342です。自己解決しますた。 DisplayRectのRightとかBottomメンバを個別に変えていてはだめなようです。TRectクラスを 一度に与えるとうまくリサイズできました。 MainForm->MediaPlayer->Display = ViewPanel; MainForm->MediaPlayer->DisplayRect = TRect( MainForm->MediaPlayer->DisplayRect.Left, MainForm->MediaPlayer->DisplayRect.Top, MainForm->MediaPlayer->DisplayRect.Left + ViewPanel->Width, MainForm->MediaPlayer->DisplayRect.Top + ViewPanel->Height );
すいません、質問させてください。 ウインドウハンドルがわかっている他のアプリケーションのウインドウの クライアント領域での相対的なマウスの座標を知りたいのですが、 先ず、GetCursorPos 関数でマウスのスクリーン座標を拾って 次にAPIの ScreenToClient 関数で目的の座標に変換しようとしたのですが、 コンパイルエラーが発生しました。 ならば今度はAPIの GetClientRect 関数でクライアント領域の左上の 座標を拾って目的の座標を計算しようとしたのですが、これもエラーと。 エラーメッセージを見た限りでは、これらのAPI関数はBCB6では使えないような雰囲気なんです。 何かいい方法・解決策がありましたら教えていただけませんか。 ソースの骨子は次のような感じです。 ヘッダーファイルはデフォルト状態から何も加えない状態で、目的のウインドウのハンドルを hWnd(既知)として、 { POINT pm; GetCursorPos(&pm); ScreenToClient(hWnd,&pm); //←ここでコンパイルエラー RECT rc; GetClientRect(hWnd,&rc); //←ここもコンパイルエラー }
せめて、コンパイルエラーの文言だけでもコピペしてね。 ScreenToClient を ::ScreenToClient にすればよくないかな?
上手くいきました。ありがとうございます。 忠告もありがとうございました。
TStringGridの特定のRowだけondrowcellでrepaintしたいんですけど うまくいかないです。 StringGrid->InvalidateRow(StringGrid->Row); を試してみましたが、だめでした。
>>347 何で特定のRowだけなの?TDrawGridとかで描画の激しく重いオブジェクトを
収めているのならわかるのだが、Stringでしょ?
最近C++Builder6使い始めて思ったんだが、せっかく使いやすいのにトラブルシュートや 応用事例(自前コンポーネント製作)の資料が異様に少ないのが残念だよね…Delphiの資料は多いんだけどなぁ… ここの板みたいな存在は貴重だね
>>349 Delphiの方に圧倒的にユーザーが流れているからだろ・・・・それに、VCLに関する
質問なら、Delphiに翻訳してから質問すれば、すぐ答えが返ってくる。
コンポーネントを自作するだけなら、Delphiの物がそのまま流用できるし。
区切り文字を指定して,AnsiStringをTStringListにばらすメソッドってないんかな?
区切り文字を指定して,AnsiStringをTStringListにばらすメソッドってないんかな?
>>353 やっぱり、DelimitedTextの方がいいや。
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString text = "123,45!6,789";
TStringList* ts1 = new TStringList();
TStringList* ts2 = new TStringList();
ts1->CommaText = text;
ts2->Delimiter = '!';
ts2->DelimitedText = text;
StringGrid1->Rows[0] = ts1;
StringGrid1->Rows[1] = ts2;
delete ts1;
delete ts2;
}
358 :
デフォルトの名無しさん :02/12/12 10:42
TCppWebBrowserでStatusTextChangeイベントが発生しないのですが どうすれば発生するようになるのでしょうか?
359 :
デフォルトの名無しさん :02/12/12 13:06
>>355 最新版にはそんなのがあるんだ。
BCB5->6の変更点で初めてうらやましく思った。
でも"で囲まれたところはやっぱり分割されないんだろうな…。
>QuoteChar プロパティは,DelimitedText プロパティで使われる引用符を指定します。
>(中略)
>QuoteChar プロパティを使うと,DelimitedText プロパティで各文字列を囲むのに
>使われる引用符を取得および設定できます。
というのが・・・あれ? "〜" 内に区切り文字があったら分割される方がいいの?
>>359
>QuoteChar プロパティは,DelimitedText プロパティで使われる引用符を指定します。
>(中略)
>QuoteChar プロパティを使うと,DelimitedText プロパティで各文字列を囲むのに
>使われる引用符を取得および設定できます。
というのが・・・あれ? "〜" 内に区切り文字があったら分割される方がいいの?
>>359
363 :
デフォルトの名無しさん :02/12/13 14:01
TCppWebBrowserってエンターキーって受け付けてくれないのですが 例えば表示している掲示版とかに書込みをするときとかに エンタキーを押しても何も反応しないんですよ・・ これって受け付けるようにする方法はありますか?
すいません、BCB5を使ってOpenGLを勉強してるんですが
ttp://www.wyatt100.freeserve.co.uk/download.htm のGLPNGを使ってPNGファイルを読み込みたいんですが、
ライブラリがうまく入りません。
coff2omfでglpng.libとglpngd.libを変換してみたのですがうまく変換できていないみたいで、
512Byteのファイルが出来上がるだけです。
もちろんそのまま\libに持っていってもだめでした。
うまくライブラリを入れる方法はありますでしょうか?
#エディタでソース書いてコマンドラインでmakeなのでBCCでも良かったり・・・
あれ?なんか改行が変になってしまった・・・ ごめんなさい
>>364 ソースが付属しているので、makefileをいじって新たにLIBファイルを作成したら?
367 :
デフォルトの名無しさん :02/12/14 20:47
368 :
デフォルトの名無しさん :02/12/14 20:55
>>366 ありがとうございます。
やはりそれしかないですか。
BCC用のMakefileがなかったので避けたかったんですががんばってみます。
>>369 TLIBはobjファイルをライブラリに追加する際に"+"記号をobjファイル名の前に
付けなければいけない事だけ注意すれば、割と楽に変更できました。
現在BCB6でCLXのVisualComponentを作っていて、Maskを用いてMouseDown等を矩形以外で捕獲したいのですが TWidgetControlから派生したためにUpdateMask等をTCustomControl(qcontrols.hpp)を見真似で以下のように自前実装しています。 { Qt::QBitmapH *bitmap_h; Qt::QPainterH *painter_h; TCanvas *canvas; if(!Masked || !HandleAllocated()){ return; } bitmap_h = QBitmap_create(Width, Height, true, QPixmapOptimization_DefaultOptim); try{ painter_h = QPainter_create(bitmap_h, Handle); try{ canvas = new TCanvas(); try{ canvas->Start(false); canvas->Handle = painter_h; DrawMask(canvas); canvas->Stop(); }__finally{ delete canvas; } QWidget_setMask(Handle, bitmap_h); }__finally{ QPainter_destroy(painter_h); } }__finally{ QBitmap_destroy(bitmap_h); } return; } QBitmap_create等がqt.hpp(29067行)中で #pragma option push -w-inl inline QBitmapH* __cdecl QBitmap_create(int w, int h, bool clear, QPixmapOptimization p4)/* overload */ { return QBitmap_create(w, h, clear, p4); } #pragma option pop と宣言されているため、ネストして展開されてしまいスタックオーバーフローを起こしてしまいます。 ここでreturnされてるQBitmap_createは本来なら9775行目の extern PACKAGE QBitmapH* __cdecl QBitmap_create(int w, int h, bool clear, QPixmapOptimization p4)/* overload */; を指すと思われるのですが解決方法が見当たりません。どなたか御存知ないでしょうか?
373 :
デフォルトの名無しさん :02/12/16 06:21
C++Builder6でImageListに150×150を入れると Bcbが原因でエラーが発生しました と出るんですがどうしたら・・・
何処で質問したらイイのかわかりません、、、 void voice_change(int rx_flag, int tx_flag) { int size = BUFFSIZE; /* size of buffer to be processed */ int* src; /* pointer to the data source */ int* dst; /* pointer to the destination */ ↑これの意味を教えてください、
375 :
デフォルトの名無しさん :02/12/16 12:21
int* a; という書き方,嫌いなんだよな。 int* a, b; とすると,b が int へのポインタだと勘違いする馬鹿がいるから。
やべ、俺もその馬鹿でつか?
燃料燃料
>>373 エラー出ないよ。もしかしたらServicePack違いかもしれないから、このスレを
よく読んでSP3相当にしたらどう?
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Graphics::TBitmap* tb = new Graphics::TBitmap;
ImageList1->GetBitmap(0, tb);
Image1->Picture->Bitmap = tb;
delete tb;
}
384 :
デフォルトの名無しさん :02/12/17 10:49
絶対にFAQだと思って、ボーランドのウェブページで何かサポート情報でも ないかと思って探したのですが、見つけきれなかったので、ちょっと質問 させてください。 C++Builder6を先週購入して、チュートリアルを見ながら少しずつ試して いるところです。 クイックスタートに載っているテキストエディッタのサンプルを試していて 気がついたのですが、『開くコマンドのイベント作成』(4-26)で、 RichEdit1->Lines->SaveToFile( ) を呼ぶように書かれています。 このままだと、ダイアログでファイルを選んで何かファイルをオープン しようとすると、いきなりその選んだファイルに対して、現在の テキストを上書きしてしまいます。(実際、既存のファイルを上書きされて しまいました) これ、本当は、LoadFromFile( ) が正しいと思うのですが、どうでしょうか?
>>384 正解。
ちなみにヘルプの方は LoadFromFile になってる。
>>385 おお!? ヘルプファイルにはちゃんと書いてあったんですか・・・
(起動中 → ヘルプを確認)
はい確かに、ちゃんと書いてありました。情報ありがとうございます。
ファイルを開いても画面のテキストが変わらないからしばらく悩んで、
何度か試すときにいくつかファイルを『開いて』しまったので、ちょっと
ショックです(苦笑)。
>>386 自分は一体何をしようとしているのか、を理解しながら進めるのも大事だよ。
と、職場の糞ジジイ共に言ってるのだが、全くわかってくれない。
388 :
デフォルトの名無しさん :02/12/17 19:37
TEditのTextをコピペをできなくする方法を教えて下さい、。
>>387 ごもっともです。実は、やっている途中で、「何か変だな?」という気はしたの
ですけど・・・ (負け惜しみ)
チュートリアルを見て打ち込みながら、「ああ、練習用のサンプルだから、
ユーザーへの確認とかは省略しているな」「ちゃんと作るなら、untitled.txt は
番号つきにして、新規作成ボタンを押すたびに数字を増やすほうがいいな」
なんてことは考えながら作業していたのですが、SaveToFile は、コード補完
機能を使って意味を考えずにそのまま打ち込んでしまいました。まあ、消えた
ファイルはどうでもいいテキストだったので、実害はないんですが。
まあとにかく、せっかくいい道具が手に入ったので、これから色々勉強して
いくつもりです。
>>391 まてまて・・・ 初心者的な質問だからといって、割れ物ユーザーとは限らないぞ。
もし割れ物ユーザーだったらヘルプしか見れないから、印刷物のクイックスタートの
誤植にひっかかることはあるまい。
393 :
デフォルトの名無しさん :02/12/18 10:25
>>389 あー、いえ、エディットはしたいです。
何かいい方法はありますか?
>>393 すごく使いづらそうなソフトを作ろうとしている予感…。
>>393 サブクラス化するか派生コンポーネントで、
WM_COPYやWM_PASTEを処理しなければいい。と思う。
>あらあら、随分と狭い視野だことw 書き方からして、すごく使いづらそうなソフトしか作れない人の予感…。
>>396 野次馬根性で聞くんですが、わざわざコピー&ペーストを禁止する必要が
ある用途というと、どんなものがあるでしょうか?
ちょっと考えてみたんですが、例えば、
「メールアドレスなんかを念のため2回入力させるとき、確認用の欄に
最初の欄の文字列をコピペされては困るので、必ずキーボードから
2回打ち込ませるようにする」とか?
>>391 ちゃんと買いましたよ(苦笑)。代金の引き落としは来月だから、厳密に
言えばまだお金は払っていないですけど。
>>398 私は客に言われた通りにするだけで、用途はいまいちわからないが
なんか特定の項目をコピペ禁止にしてくれって言われたから。
∧ ∧ ∧ ∧ (゚Д゚;≡;゚д゚) 400と・・・ ./ つ つ 〜(_⌒ヽ ソロリソロリ )ノ `J
401 :
デフォルトの名無しさん :02/12/19 20:34
C++Builderのクラスエクスプローラのような ハメ込み型のフォームを作りたいと思って調べたのですが、全くわかりませんでした。 どのようにすればできるのか教えて頂けないでしょうか?
>>401 TTreeView。
ディレクトリ構造を表すならTDirectoryListBox。
403 :
デフォルトの名無しさん :02/12/20 01:46
すいません、ネットで調べてみましたがよく分かりません。 TNMSMTPコンポーネントでメール送信ソフト作成していますが、 subjectのみ文字化けします。 Content-Type,,,ISO-2022-JPは本文だけに効くようで。 添付ファイルやCCは使用しません。 BCB5です。よろしくお願いします。
406 :
デフォルトの名無しさん :02/12/20 06:11
以前にTEditのコピーを出来なくする方法の質問がありましたが、次のような方法で 実現してみました。 __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { // サブクラスを登録する OldEditWndProc = Edit1->WindowProc; Edit1->WindowProc = EditWndProc; } void __fastcall TForm1::EditWndProc(TMessage& Msg) { // マウスの右ボタンを無効にする if (Msg.Msg == WM_RBUTTONDOWN); // キーが押されたらクリップボードをクリアする else if (Msg.Msg == WM_KEYDOWN) Clipboard()->Clear(); else OldEditWndProc(Msg); } もしくはOnKeyDownでCTRL+Cが押された時だけクリップボードを クリアするようにしても良いと思います。
鬱だ・・・・・
>>395 に答えが書いてあった・・・・・逝ってきます。
408 :
デフォルトの名無しさん :02/12/20 11:27
プログラムから掲示版(2ch等)に書込みを行うためには どのようにするのでしょうか?
409 :
デフォルトの名無しさん :02/12/20 11:30
2ちゃんねる VS TIME・・・
その戦いの歴史は、まさに近代兵器の見本市だった
田代砲にはじまる数々のスクリプト兵器を経て到達した、97式アラファトマシンガン
これはまさに最終兵器として、猛威を振るった
しかし、ついにTIMEはこれらの兵器全てを完膚無きまでに無効とする
パプリカの設置に成功した
武器を奪われた我々に残されたもの ・・・それは「チョップ!」
手動で一撃一撃叩き込む「チョップ!!」地味で威力も極限まで小さな「チョップ!!!」
ただそれだけと、なってしまった!
だが、チョップといえども決してバカには出来ないということを!
そしてこのような手段にまで出たTIMEを今一度!
我が2ちゃんねらーの総意を込めたチョップを以て、叩き壊したい!!
有志たちの参戦を、ひとりでも多くの戦士の挑戦を待つ!!!
http://live.2ch.net/test/read.cgi/festival/1040349157/
>>406 他のアプリでコピーしてた内容も(・∀・)キエチャウYO!
ありがとうございます。挑戦してみます。
>>408 荒らしツールか広告書き込みツールぐらいしか使い道を思い付きません。
>>412 ひょっとしたら、>409 は、そのサンプルかも。
>>412 いや、mamimiみたいなのを考えているとか・・・
で、OpenJANEのソースを見ればいいのではないか?
415 :
デフォルトの名無しさん :02/12/22 00:12
#include <jpeg.hpp> がいるんじゃない?
なんかこう 根本的なところから・・・
Cの入門本とかに。
コンパイルして未定義のシンボルを見つけたら。 1:まずはスペルミスをチェック。 2:必要なファイルがincludeされているかチェック。 3:includeするファイルが判らなかったらヘルプなどで調べる。 4:ヘルプが頼りにならなければincludeファイルのフォルダをgrepしてincludeするファイルを特定する。
本当らしい。
あのう、会社でVBばかりやらされていて将来に不満を感じて たもので、最近独学でC++Builder始めたんですがこれでよいの でしょうか。VC++.netやらC#はなんだか変な方向に進んでいる 感じがして、とりあえずC++ってことでCPBにしたんですが。 自分では気に入ってます。 その前にVBばかりやらせるような会社自体将来が無いのでしょ うか。制御系のアプリケーションが中心で、いくらなんでもVBでは 苦しいだろって規模のアプリケーションもVBでやっちまうんですが。
424 :
デフォルトの名無しさん :02/12/22 23:46
だれか>423を日本語化してくれないか もしくは>423に日本語化パッチを(ry
>>423 そうですか、大変ですねぇ。
↓次どうぞー
美少女のうんこ喰いたいんですけど、JR の何駅あたりで声をかければいいんでしょうか?
このスレはいつのまにこんな有様になりましたか。
428 :
デフォルトの名無しさん :02/12/23 02:46
Q:あのう、 A:はい何ですかぁ Q:会社でVBばかりやらされていて将来に不満を感じてたもので、 A:将来に感じる不満とはどんな食べ物ですか。どんな味がしますか???おいしいですか。 Q:最近独学でC++Builder始めたんですがこれでよいのでしょうか。 A:将来に感じる不満を解消してくれる予定ですか。未来のことなので変な日本語になってしまいます。 Q:VC++.netやらC#はなんだか変な方向に進んでいる感じがして、 A:変な方向とか・・・漠然としすぎていますね。もっと具体的に考えましょう。 Q:とりあえずC++ってことでCPBにしたんですが。 A:あっそ Q:自分では気に入ってます。 A:よかったね Q:その前にVBばかりやらせるような会社自体将来が無いのでしょうか。 A:あなたの将来が無いのはよくわかりますが、会社の将来まではわかりません。 Q:制御系のアプリケーションが中心で、いくらなんでもVBでは苦しいだろって規模のアプリケーションもVBでやっちまうんですが。 A:何故VBを選択しているのか、その理由を聞いたことさえ無いのですか。
>>423 まずは、とりあえず質問文を勝手に整理。何が聞きたいのか、よく分からない。
-----------
あのう、ちょっと相談に乗っていただけないでしょうか? 私は現在、会社の仕事としてVB
ばかりやらされていますが、VBだけしかできないままでは、この先ちゃんとやっていけるだ
ろうかと、将来に不満を感じています。
そこで、独学で BC++ Builder の勉強を始めました。
もちろん、VBと同じMSの開発環境である VC++.net や C# も考えたのですが、これらに
ついては、どうも方向性がつかめなくて変な感じがしたので、とりあえずC++ということで、
BC++ Builder にしたのです。私は、BC++ Builder は気に入っています。
ところで、私の今の勤務先についてなのですが、VBばかりやらせるような会社自体将来が
無いような気もするのですが、皆さんはどう思われますか? 私の会社の仕事は、もっぱら
制御系のアプリケーション開発が中心です。かなり大規模な、「これは、いくらなんでもVBでは
苦しいだろう」と思われるようなアプリケーションでさえも、VBでやってしまう会社です。
よろしくお願いします。
----------
ううむ。少なくとも、「C++ Builder に関する質問」が、どこにもないということだけは判明しました。
もしかして、VBスレ向けか、もしくはプログラマ板、転職板向けの質問ではないのか? これ?
まぁ、一つだけいえることは、 将来を気にするのならば、異業種に転職しましょう。
>>423 の言いたいことは、こうではないだろうか?
VBだけを習熟していくことに不安を感じ、
BCBをやってみようと思った。
BCBに将来性はありますか?
>>431 前半は、たぶんそれ。
後半は、勤務先への不満かな?
気持ちは分からんこともないけど、423には、もっと別な部分に
不安を感じるなぁ・・・
今時制御系でVBでって事は、会社が巧いがま口を持ってるって事でしょ。 で、このご時世だからいつ競争相手が出ないとも限らないし、 巧いがま口は、そういう競争相手一つで簡単に壊れるからね。 だから気持ちが焦ってるって事でしょ。 ただ、この不況だから、BCBをやっても仕事は無い というか道具が仕事を 連れてきてくれる時代は終ったのだと気付かなきゃね。
434 :
デフォルトの名無しさん :02/12/24 11:03
ウィンドウを持たないソース部分でウィンドウメッセージを受け取ることはできますか? HWNDを引数とするAPIがあるのですが、それには何を与えればいいのでしょうか?
>>434 AllocateHWnd で見えないウィンドウを作るとか。
>>434 VCL的にやるなら、TWinControl を継承して メッセージを貰うコンポーネントを作成すると
再利用性が一挙に向上
437 :
デフォルトの名無しさん :02/12/24 21:24
>>433 しかしながら,一旦BCBを使ってしまうとVisualC++には戻りづらい。
戻るとしたらC#だろうな・・・
TRichEditを使うとTMemoより行間が大きくなってしまうのですが、 TMemoと行間の大きさを同じにするにはどうすればいいのでしょうか。 BCB3を使ってます。
無理
440 :
デフォルトの名無しさん :02/12/24 22:04
C++BuilderとVC++はどっちがいい、というのは無いのですか?
\ . ∩ 無いのですか? | | / ∧_∧ .| | ( ´Д`)| | <無いですよ / | __| |-◎-◎-| __ \  ̄ ̄ ̄ ̄ ̄ \ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄ || || ̄ ̄ ̄ ̄ ̄ ̄ ̄|| .|| ||
442 :
デフォルトの名無しさん :02/12/24 22:44
>>441 そんなことないよ。
あらゆる意味でVCの方が性能がいいのは事実。
BCBはGUIを作りやすいってだけだと思う。
それ以外は腐っている気がする。
>>442 BCBよりVCの方がC++への対応は腐ってるよ。
特にテンプレート関係。
TRichEditとTMemoを同じ行間にする事は無理らしいので、 もう一つ質問させて頂きます。 1つのTMemoコンポーネント内に 二色以上の文字列を表示させる事はできますか? できるならばどのようにすればいいのでしょうか? できないならば、選択して普通のテキストとしてコピーできる TMemoと同じ行間で、2色以上の文字を表示できるようにするには、 どのような方法をとるのが一般的でしょうか? プログラム側で文字列と色は書き込むので、 ユーザーにとってはReadOnlyで構いません。
>442>443ありがとうございます。 VC++を買う場合はスタンダードでもいいのでしょうか? それとももう少し高いのを買ったほうがよろしいのですか?
VC++のダメな最適化はユーザーを騙している以外の何者でもない。 それ以外はいいと思うけど>>VC++
447 :
デフォルトの名無しさん :02/12/25 03:35
>>442 んなーことは無いよ。
おいらがC++Builderを使い始めたきっかけは、実行速度がVCより速いから。
同じソースをいろんなコンパイルオプションで試行錯誤してみたら、
VC6より、C++Builder5の方が10%くらい速かった。
科学技術計算で結果が出るまでに数日かかるからこの差は大きい。
>>447 なるほど、科学技術計算で結果が出るまでに数日かかるものを作る時以外では
やっぱりVCの方が性能がいいってわけですね。
僕はそんなの一つも作ったことがありませんが、あなたはどんな物をいくつ作りましたか?
BCB が VCに勝る点 1、ANSI適合度・・・まあ3年先にはVC.NETも99%にすると公言してるけどね 2、Delphiとの連携・・Delphiのコードの95%程度はそのまま使える。 Delphiの軽くて使い易いインラインアセンブラだけ使っても便利だよ 逆にDelphiが使えるobjも吐ける。 3、Kylixとの連携 VCが勝るのは 1、ブランド 2、最適化の豊富さ(まあバグも多いから時間がない時は使いたくないんだけどね) 3、MFCxx.DLL が大抵のパソコンにあるのでコードサイズを小さく出来る 4、俺は嫌いだけどこのエディタが好きな人も多い
450 :
デフォルトの名無しさん :02/12/25 10:01
>449 VCが勝る唯一?最大の点は、情報量の豊富さだろ。
>>450 ? 何の情報が? C++に関する情報も APIに関する情報も、MFCに関する情報も共通では?
ああ、もしかして言いたい事は VCをそれなりの値段で買うと MSDNが付いてくるって事かな
453 :
デフォルトの名無しさん :02/12/25 10:28
>451=452 Are you a aho ? 書籍だけでも、もの凄い違いがあることすら認識していないのか。 開発元におけるホームページでの情報量だって歴然だろ。
ええと ahoです。 まとめてみましょう 1、 VCL に関する情報は VC++では無意味 2、ウイザードに関する情報は BCBでは無意味 3、 C++の情報は 共通 4、 MFCの情報も共通(ただ BCBでMFC使う人は少数だろう ただ ATLは使うかな) という事で、本の通りにキーボード打って「ぼくにも出来た」と思いたい人でなければ 情報量には差が無いと思うのだが? まあahoは判らない差があるのでしょう
BCBの情報不足は明らかすぎると思うが…。 入門書は元々少なかったものが廃刊して皆無になってるし。 特にFAQ形式の、パワフルテクニック系、300の技系が無いのが痛い。 そもそもヘルプの分量・わかりやすさ、ともにVC++のほうが圧倒的。 周りに知っている人がいるという事もかなり重要な要素。 100対3くらいの大差が付いてボコボコに負けているに、 これで差が無いなんてどこをどう見たら思えるのか不思議。 いくらBCB好きな俺でもオマエには賛同できない。
たぶんほんとに俺はahoだな。 言ってる事がよく判らんよ。 そんなにVC++のヘルプが良いと思うならMSDN買えばいいんじゃないの?
>>456 マジでアフォだな。
BCBやりたい初心者に買わせる本が無いから
ダメダメだと知っていてもVC++を買わせる。
それで本当に満足なのか?
言ってることがよくわからないのではなく、まともに読んでないだけだろ。 批判されたことに逆上して冷静に相手の意見を受け入れられない。 こうなるともう何を言っても無駄だろうね。恋は盲目なのだよ。
>>457 別にVC++用の初心者に買わせられる本でBCBやればいいんじゃないの?
って事じゃないのか?
>>459 それで済むなら「ARM買え」の一言だが。
>>460 それでいいんじゃないの? それで済むような人じゃないと趣味にしても仕事にしても続かないでしょ
普段はBCB派の俺も客先がVCを使えっつーんで しゃーなく使ったんだが・・・ 正直こんなうんこは二度と使いたくないって思った。
>>461 教育についてもう少し勉強したほうがいいな…。
世の中は「成長させてもらう人」のほうが圧倒的多数で、
独学でできるやつはごく少数なのが現実。
入門書が充実したとして、ヘルプが改良されたとして、
嬉しいことはあっても嫌なことは何も無いだろ?
現状で満足したらそこで終わり。
>>463 いや、だからそもそも、VC++でしか使えない入門書で 「成長させてもらえる」のか?
って感じなんだがな・・・まあ俺もどうでもいいや、そんな話は
つまり結論としては、BCBのヘルプはダメダメということで。
>>463 成長させてもらうのを待ってるダメな奴はなにやらせてもダメだから使えない。
そんな奴用の本なぞあっという間に廃れる運命。
てゆーか、俺の下についた奴、資料は部屋のキャビネットにゴロゴロあるんだから、 ちったー調べろよ(泣) で、判らなくて手が止まったからってボーっとしてんなよ。 最後に こんな奴を俺に押し付けた上司は逝ってよし。
でもまぁ、世の中、BCBよりもVCの方が格段に案件多いことは確かですからな。
複雑なGUIを使うのでなければ、VCLにあるコンポーネントを使って、素早く アプリを構築できるのはBCBの方が圧倒的に楽。 しかし、GUIに関わらず内部で科学技術計算などの計算をさせるなら、 BCBもVC++も関係ない。表面に現れない部分ではBCBでプログラム しても全然楽じゃない。当たり前だけど。
>>463 そんなこたぁない。本当にダメな奴はそうかもしらんが、
大多数は微妙にダメで微妙に使えるやつら。
仕事をやるだけの知識はあって、十分仕事になっている。
そんな奴ら用の本が売れまくって、良書があっというまに廃れているのが現実。
一人だけで作るならBCBでもいいけどねぇ・・・。
>>471 短期的にはそれで成功かもしれないけど、
長期的(3〜5年)で見たら、そういう奴は大抵現場からいなくなる。
まあ、いなくなるから不幸かというと、そうでも無いというか残ってる方が不幸だったりするのだけどね。
>>473 VB厨が出世して部下を困らせるのが標準的な会社。
そんな理想的な会社がどれほどあるのだろう?
>>474 うん。困った事に、現場で使えない奴が先に出世するのは世の常だね
>>435 その場合に
END_MESSAGE_MAPのかっこの中には何を書けばいいのでしょうか?
あ、すみません。 更にAllocateHWndには何を渡せばいいのでしょうか?
MESSAGE_MAPは必要ないよ。 AllocateHWndにはメッセージプロシージャを渡すだけ。
>>478 あっ、ほんとだ!
MESSAGE_MAPなくてもちゃんとイベント発生しました。
ありがとうございます。
質問させてください。 BCB5で、TTreeNode::StateIndexに0を設定しても反映されない のはどうしてなんでしょうか。 もちろんImageListは設定してあるし、StateIndexを1や2にすれば 表示されるんですけど。
相談お願いします 開始時間〜終了時間から計算して 例えば開始01:00〜終了03:30なら2.5などと算出してくれるような関数ってありますか? これがあれば今の作業が死ぬほど楽になるので(苦笑
すいません 徹夜続きで頭回らなくてすごく難しく感じてたんですが コーヒー飲んで落ち着いたら簡単でした 恥かいてしまた(´Д`;)
TDateTime使うと楽だね。 HoursBetween、MinutesBetween、MilliSecondsBetweenとかあるし、 1時間の差を1.0とするなら引き算して24かけるだけでもいいし。
time()でも差取って3600で割るだけじゃないのか…
実行時に計った時間の差なら、そりゃ確かにTDateTimeを使うまでも無いですね。
>>481 の開始〜終了時間ってエディットとかで、ユーザーが指定する物の事だと思い込んでたもので。
DirectX9もまたコーディング以前に 面倒な作業が有るのか・・・
BCBは、ハマーやインテルの64ビットCPUにネイティブで対応するのでしょうか?
将来のことは判らないだろ。 作る技術はあるだろうけど、同じ商品名で出すかどうか
非標準環境の辛さだな
だな。 まずM$が出してから、その互換性を確保してから商品化か
492 :
デフォルトの名無しさん :02/12/28 06:49
インストールしたけどコンパイルできないっていわれた。 これってC言語もコンパイルできるんですか? .PPCファイルって何????マニュアルも開けないし、ヘルプ見てもさっぱり わからない。初心者向けのツールじゃないですよね。
何の初心者にもよるかと。 さすがにPC初心者向けの開発環境は存在しないのでは… てゆーか、そんなひとに開発して欲しくないし。
494 :
タスケペー :02/12/28 16:04
クラサバアプリなんですけど、フォームのあるボタン押下時に WINDOWSのシステム情報を表示したいんですけど、どうやったらいいのか わかりません。ヒントでも取っ掛かりになること教えてください。
>>494 システム情報って何?
例えばレジストリの
HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION
みたいな情報?
496 :
タスケペー :02/12/28 16:50
495様!!年末なのに反応ありがとうございます(涙)。 コンパネ-コンピュータの管理 にてツリー表示されているシステム情報の ことです。そのウインドウを呼んで表示したいんです。
>>496 それはコマンドラインで
mmc c:\winnt\system32\compmgmt.msc
として呼び出せる奴の事じゃないのかな?
498 :
タスケペー :02/12/28 18:05
そそそ、%SystemRoot%\system32\compmgmt.msc /s です。そ、それを、C++ BUILDERからプログラムとして....
ええと、それなら
>>497 以上のヒントが必要ですか?
WinExec("mmc c:\\winnt\\system32\\compmgmt.msc", 0);
と書けば?
それとも SystemRoot の解決方法を知りたい?
500 :
タスケペー :02/12/28 18:21
499様、 これだけでもかなり助かりますタ。ありがとうございました。 左側のツリーの要素として「システム情報」がROOTになる様に表示したいので あります。アンタ...イイヒトダァアアー (北の国から)
msinfo32.exe を自分のハードディスクから探して、それを実行すればいいのでは? msinfo32.msc をmmc.exeで動かしても同じだし、 では、もう落ちるので
503 :
タスケペー :02/12/28 18:56
たぶん様、まさにこれでアリマス。ただこれを絶対パスで指定してよいのかどうか ですよね。%どっか%みたいにしないといかんのでしょうかね。..... C:\Program Files\Common Files\Microsoft Shared\MSInfo\msinfo32.exe
>>503 ああ、そういうのはレジストリでリストアップして レジストリから参照してみたら?
505 :
タスケペー :02/12/28 19:10
今度はレジストリをどう参照してどうやって表示するのかがわかりません。すいません。 クレクレ君になってしまいすいません。
506 :
デフォルトの名無しさん :02/12/28 19:14
こんにちは。 外部シンボルinp,outpが未解決となってしまうエラーについて質問させてください。 I/Oボートにアクセスしステッピングモータを動かす プログラミングをC/C++で行っています。 しかし Error: 外部シンボル '_inp' が未解決(C:\DOCUMENTS AND SETTINGS\INFODRIVE\デスクトップ\program.OBJが参照) Error: 外部シンボル '_outp' が未解決(C:\DOCUMENTS AND SETTINGS\INFODRIVE\デスクトップ\program.OBJ が参照) というエラーが出てしまいmakeできません。 いろいろ調べて #include "conio.h" #include "IOBIN.h" というのをインクルードしてみたのですがうまくいきません。 Win95、Cpad、Borland C++ Compiler 5.5 を使っています。 ちょっと制御関係の話かもしれませんが、 どなたかアドバイスをいただけませんか? よろしくお願いします。
>>506 BCBなの? 単なるBCなの?
BCなら #include <conio.h>
BCBなら最近のであればTASMで、古いバージョンなら Delphiで inp outpを書いたら?
508 :
デフォルトの名無しさん :02/12/28 22:34
>>507 レスありがとうございます。
BCBです。
C/C++しか知らないのでTASMやDelphiで書くとまた一からです。。。
それしか方法はないのでしょうかね。。。?
>>508 それしかって、他にはハンドアセンブルしてバイト列として埋め込むくらいかな。
じゃあDelphiの例ね。 以下のファイルを作って プロジェクトに追加で パスカルユニットにして
追加すれば自動的に ヘッダファイルが作られるから
----------- ここから ファイル名を UIoPort.Pas として保存 ---
unit UIoPort;//UIoPortはファイル名にあわせる
interface
function IoInp(adr:WORD):Byte; stdcall ;
procedure IoOut(adr:WORD;data:Byte); stdcall ;
implementation
function IoInp(adr:WORD):Byte;
assembler ;
asm
mov dx,adr;
in Al,dx
end;
procedure IoOut(adr:WORD;data:Byte);
assembler ;
asm
mov dx,adr;
mov AL,data;
out dx,AL;
end;
end.
511 :
デフォルトの名無しさん :02/12/28 23:09
>>510 ありがとうございます。
年末の中非常にうれしいです。
ちょっとやってみます。
512 :
デフォルトの名無しさん :02/12/28 23:28
>>510 やってみました。
教えていただいたとおり.Pasのファイルをつくり、
プロジェクト追加のパスカルユニットにしてメイクしてみましたが、
自動的に作られたヘッダファイルというのがわかりません。
新たに.cppファイルができたのですが、
ヘッダファイルはどれ?という感じです。
はいはい 自動的に UIoPort.HPP というC++ヘッダファイルが作られるから これを インクルード(ファイル->ユニットヘッダの追加で自動で)すれば IoInp IoOut って名前使えるから、inp/outpという関数を作ってそれから呼び出せば?
C++Builder6で、再帰曲線を描いて遊びたいのですが、フォーム上にコマンドボタン とパネルを配置し、さてパネルのCanvas上に描画しようと思ったら、パネルには Canvasが無いようなのです。 フォーム上に描けば簡単なのですが、フォームにはツールバーとコマンドボタン が乗っているし、他のCanvasを持つコントロールを配置したいのですが、どの コントロールがこういう場合最適でしょうか?
やりたい事を実現する方法は 1、TPaintBoxをパネルに貼り付け、AlignをclClientにして OnPaintイベントのみで TPaintBoxのCanvas描画 ボタンイベントで直接再描画せず、ボタンイベントでは PaintBoxにInvalidateメッセージを送ります 2、TImageを貼り付け同じように設定し、Pictureプロパティを用意して Canvasに描画する。 グラフィックプログラミングの概要を読む事 3、TGraphicControlを継承してコンポーネントを作成する この3つが代表的です。 これらは場合により使い分けます 素早く仕上げたいなら->1 描画が遅いなら->2 再利用する可能性が高いなら->3
>>515 ありがとうございます。
TImageに気づいていろいろやっていたのですが、一度TImageをFillRectなどで
塗りつぶすと、以降FormをResizeした後再度塗っても、大きさが変わってくれ
ないのです。
内部にビットマップイメージを保持しているのが問題みたいですね。この内部の
ビットマップイメージをクリアする方法があればいいのですがわかりません。
TPaintBoxには気が付きませんでした。これは使えそうです。早速やってみます。
継承まではとてもまだまだできません。
CppUnitCB使ってる人います?
いないということで。
「実行時パッケージを使って構築」のチェックをはずしてコンパイルすると 「プロジェクト project1.exeがEWin32Errorクラスの例外を生成しました。'Win32エラー。コード1410. そのクラスは既にあります。'プロセスは停止しています。」 となってしまい。じっこうできなくなりますた。「実行時パッケージを使って構築」にチェックを いれると実行できるのですが、実行時パッケージを使わずにやる方法はないのでしょうか?
>>521 申し訳ない。環境書くの忘れていました。
OS:Windows2000 バージョンはBCB5でupdate1は導入済みです
('A`)
524 :
デフォルトの名無しさん :03/01/05 11:39
>>522 もうちょっと詳しく書いてくれないとわからないよ。
どのプロジェクトでもなるの?特定のプロジェクトだけ?
新規の空プロジェクトでもなる?なにかdllとかつかってる?
古いバージョンで作ったプロジェクトとか?
有名な不具合なのかもしれないけど...
C++Builderはタダなんでつか?
体験版ならな。
527 :
タスケペー :03/01/06 18:47
あけましておめでとうございます。 アプリが最小化されている状態から元のサイズに戻し最前面に表示すると、 ウインドウ右上の最小化ボタンを押しても、最小化できなくなってしまいました。 ただ「元のサイズに戻す」を実行すると最小化できるようになります。 何か回避策はありますでしょうか。 ちなみに以下の手順にてウインドウをアクティブにして最前面に表示してます。 ShowWindow(mHWND,SW_RESTORE); SetForegroundWindow(mHWND); SetWindowPos(mHWND,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); SetWindowPos(mHWND,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); SetActiveWindow(mHWND);
おめでとうございます スレッドについての質問ですが Unit2で作った変数をUnit1で使うにはどのように宣言したらいいのですか Unit1で作ったのは Form1 -> という感じで使えるのですが Unit2 から unit1 に持ってくるにはこれでは無理なんですの 教えてください、おねがしますおねがしますおねがいsむオンマエアイス
529 :
デフォルトの名無しさん :03/01/06 19:05
これMeでも使える?
>>527 最小化から元に戻すとき Application->Restore() を使ってみるのはどう。
age
>>528 ファイルメニューに「ユニットヘッダの追加」とかいうのがあるから,
Unit1のソースを表示しているときに選択すればよい。
手動でUnit2.hをインクルードしてもいいけど。
535 :
デフォルトの名無しさん :03/01/07 01:52
プロパティのHintの文字列を改行させたいのですがどうすればいいのでしょう? オブジェクトインスペクタで\nを入れてもそのまま出力されるみたいですし…
536 :
デフォルトの名無しさん :03/01/07 04:07
>>535 試しちゃいないが、Form の OnCreate で、
SomeComponent->Hint = "hogehoge\r\nHello";
とかしてみたら?
>>536 \r\nでなくて、\nだけでちゃんと改行したよ。
ノーパソのモニタ電源だけを切りたいのですが、 方法はありますか?
見えてるコードをはさみで切る。
540 :
タスケペー :03/01/07 22:40
絶対パスで指定したフォルダの中にあるディレクトリ名(フォルダ名)を AnsiString配列でほしーのですが、かっちょいい関数はありますか? (但し1階層までしか見なくて良い。)
あーあ、今後は日本語版も本社でサポートしてくれればいいのに。 日本法人なんて潰してさ。
542 :
デフォルトの名無しさん :03/01/08 10:26
C++Builderで文字を横2倍角にすることはできませんか?
544 :
デフォルトの名無しさん :03/01/08 10:46
>>543 文字をスクロールさせるプログラムを作っています。
最初はテキストボックスでスクロールさせようと思っていましたが、
横2倍角文字を織り交ぜた文章をスクロールさせなければいけなくなりました。
どんな方法を使ってでも指定した文字がスクロールできればいいので、
特定の方法というのはありません。
環境は w2k + C++Builder5です。
546 :
デフォルトの名無しさん :03/01/08 11:08
通常のサイズの文字と、横2倍角の文字を混同させないといけないので困っています。
>>546 通常の文字のドット数+横二倍文字のドット数=完成
548 :
デフォルトの名無しさん :03/01/08 13:06
文字をイメージに変換することはできますか? または、Imageオブジェクトに文字を表示することはできますか? よろしくお願いします。
>>548 少しでもリファレンスを眺めたことがあるならわかると思いますがCanvas持ってる子には基本的に書けます。
550 :
デフォルトの名無しさん :03/01/08 13:17
>>549 ありがとうございます。少し調べてみます。
できます。
552 :
デフォルトの名無しさん :03/01/08 13:32
>>551 とくにそれらしいプロパティが見つかりませんでしたが、
どのようにしてらっしゃいますか?
555 :
デフォルトの名無しさん :03/01/08 13:45
>>553 よくわかりませんが、何が起こってるんですか?
>>555 再帰と言って自分自身を呼び出すことによりディレクトリ走査などを簡単に行える技だ。
ああゴメン。 ようするに横に大きい文字を描きたいのでしょ? LogFont 構造体 を設定して CreateFontIndirect でフォントハンドルを作って、 そのハンドルをCanvas->Handleに 対して SelectObject すればいい 後で解放して元に戻すのを忘れないようにね
558 :
デフォルトの名無しさん :03/01/08 14:14
>>557 ありがとうございます。少し調べてみます。
はじめから調べろよクズ。
>>559 検索キーワードがないとググれないだろw
561 :
デフォルトの名無しさん :03/01/08 23:00
age
まぁアレだな。 キタ━━━━(゚∀゚)━━━━━!!!
ていうか前からIPを取ってたんでしょ
テスト
これで嫌韓厨が駆除されるといいね
>>352 友人から借りた?おいおい。MXで落とせば?
あ、いい機会だからひろゆきに聞いとこう AA板のひろゆき関連のスレ(グロゆき、キモゆき等)覗いてますか?
∠゙⌒"フ / ‘(・・) / (,,゚Д゚) < テスd i (ノ !つ 〜゙:、..,__,.,ノ ∪∪
>>121 匿名で書き込む事を過大解釈してきた香具師らのことを
俺は言ってるわけだが?
あなたの意見には大体賛成ですがね?
570 :
デフォルトの名無しさん :03/01/09 03:09
ListViewに保持してある複数の文字列を別のフォームのListViewに渡したいのですが、 どのようにすればいいのでしょうか? __publishedで宣言されたものは他のクラスからは参照できないですよね? C++始めたばかりなのでこの辺りがいまいちよく分かってません…
1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 03/01/08 17:13 ID:??? そんなわけで、qbサーバでIPの記録実験をはじめましたー。
572 :
デフォルトの名無しさん :03/01/09 10:54
>>570 見れます。
_publishedは、publicと可視性は変わらないよ。
ちなみに_publishedは、C++標準じゃなくて、Builder固有のキーワードです。
あ、テンプレ書いてたら先こされた
574 :
デフォルトの名無しさん :03/01/09 16:31
age
======2==C==H======================================================
2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 138720人 発行日:2003/1/9
年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。
そんなわけで、年末に予告したIP記録ですが実験を開始しています。
「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
とりあえず、
>>557 さんの方法で横倍角の文字をTMemoコンポーネント上に表示させ、
ScrollDCでスクロールさせるところまではできましたが、あまりに長い文字を書くと、
はみ出してしまい、そこから先の文字はスクロールされずに、消えてしまいます。
テキストエリア内に収まりきらなかった文字をスクロールさせる方法をご存知の方はいらっしゃいますか?
以下スクロールのイベントです。タイマーオブジェクトを使い一定の感覚で呼んでいます。
引数
LRBit = -1
UDBit = 0
void TForm1::TextScroll(int LRBit,int UDBit)
{
int *a,*b;
RECT cltRect;
HDC hDC= GetDC(Memo1->Handle);
a = &LRBit;
b = &UDBit;
cltRect = GetClientRect();
ScrollDC(hDC,(*a),(*b),&cltRect,&cltRect,NULL,&cltRect);
SetScrollPos(Memo1->Handle,SB_HORZ,*a,TRUE);
}
よろしくお願いします。
577 :
デフォルトの名無しさん :03/01/09 19:05
上げときます。
>>572 ×_published
○__published
_published にしとけ
>>572 ありがとうございます。
代入式を書く箇所を間違えていただけでした…
こういったものはpriveteにされてるものだという先入観もあったもので。
>>284 そうだよね。
勘違いしてる奴おおいし、
現実世界と同程度の責任を求められる事が当たり前になるように
なるといいね。
今まで悪ふざけで出来たものがあったような気がするけど、そういうのが出来なくなるような?
>>70 わかった。何度説明しても駄目だな。こりゃ。
>>70 わかった。何度説明しても駄目だな。こりゃ。
マンドクセーから某氏が
>>13 の文章を正しく書き直してくれや。
それでいいじゃないの。
とりあえず●をウェブマネーで買える様にしてくれ
DHCの判決ってまだなの? 待ち遠しいね。
要するに、管理人がアフォということと、 一部の信者はキチってことの二言に尽きますな 法律を少しでも勉強した者、 もっと言えば人並みの常識を備えた人ならば、 今回の敗訴は目に見えていたもんね ネットなら何書いてもいいなんて暴論が罷り通るほど、 社会は冷徹でもバカでもないってことですな やっぱ権利は濫用しちゃいけませんな
>
http://kaba.2ch.net/test/read.cgi/accuse/1016804065/ >281 名前:ひろゆ子 ◆HRUNYAXA 投稿日:02/04/15 17:35 ID:aDTehURl
>なおしたよー。
>282 名前:心得をよく読みましょう 投稿日:02/04/15 17:38 ID:ByieE7H/
>ヽ(`Д´)ノボッキアゲ
>283 名前:心得をよく読みましょう 投稿日:02/04/15 17:39 ID:HY6eiTCY
> 何を直したの??
>284 名前:ひろゆ子 ◆HRUNYAXA 投稿日:02/04/15 17:40 ID:aDTehURl
>おいらの性根。
>285 名前:心得をよく読みましょう 投稿日:02/04/15 17:41 ID:NuFrgojX
>ヽ( ´ー`)ノ
>286 名前:心得をよく読みましょう 投稿日:02/04/15 17:42 ID:EWICcjjW
>なおってません
とりあえずこれで、うまい某3点。
ひろゆきを殺害しよう、チャンスは裁判所入廷時。後頭部を撃ち抜こう
C++Builder4でDLL作成のプロジェクトでプロジェクトにユニットをいくつか追加して 再構築したら モジュール %s が参照する外部シンボル '%s' が未解決のエラーが洪水のごとく出ました 真っ先に思いつくアフォなポイントってどこでしょうか?
>>722 あまりマンコマンコ言ってるとマンコから訴えられますよ。
削除依頼があったら削除しなさいっていってるだけだろw
がんがれー
その為のIPでしょう?
とある情報によると、美咲タンの個人HPがあるそうですね。 おしえてくらはい。
IP記録? 例えば、ライブドアや無料アカウントを作れるプロバイダー からなら、IPを記録されても大丈夫じゃないかな? まぁ犯罪予告するわけじゃないけど、ムカつく会社とかの 書き込みなら、無料プロバイダとか。全くダメになるとは限らないよ アメリカの無料プロバイダから 2ch.netにアクセスしたってOKだし (フュージョンコムなら1分15円 YAHOOBBなら3分7.5円 ダイヤルアップはできるかな〜?) 灰色の公衆電話からノートパソコンで電話線使ってやる方法も あるしね。
ひろゆきツマンネー!!
最後の記念カキコ
こんにちは。 TEditのみにD&Dするにはどうすればいいのでしょうか? よろしくお願いします。
602 :
デフォルトの名無しさん :03/01/11 17:23
IBXはSQLDialect3に対応していますか? BCB5のEntなんですが。
>>601 TEditにOnDragDropイベントハンドラを書く。
例えばフォーム内のLabelからEditにD&Dするには
void __fastcall TForm1::Edit1DragOver(TObject *Sender, TObject *Source,
int X, int Y, TDragState State, bool &Accept)
{
Accept = Source->ClassNameIs("TLabel");
}
void __fastcall TForm1::Edit1DragDrop(TObject *Sender, TObject *Source,
int X, int Y)
{
if (Sender->ClassNameIs("TEdit") && Source->ClassNameIs("TLabel"))
{
TEdit *DestList = (TEdit *)Sender;
DestList->Text = ((TLabel *)Source)->Caption;
}
}
私も知りたいので、どの方法が一番良いのか教えてください…
142 名前:名無しさん@お腹いっぱい。[] 投稿日:2000/11/04(土) 06:38
エクスプローラからDrag&Dropでファイル名を渡したいのですが
以下の点でハマってます。
1.特定のコンポーネント(例:TListView)のみにD&Dを許可するには?
Form全体にD&Dする方法や、Drop時のマウスカーソル座標によって
D&D可能なコンポーネントを判別する方法は出来たのですが…
無関係のコンポーネント上で、マウスカーソルを
「Dropできますよ形状」に変化させたくないのです <誤操作の元だし…
145 名前:ぴか虫[] 投稿日:2000/11/05(日) 01:44
☆ぴかっ
/)_/) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(,’ー’) < コンポーネントを継承してメッセージをマップ! でできるかも?(試してない)
>>142 (1)☆
_( U U) \____________________
147 名前:名無しさん@優しい人[sage] 投稿日:2000/11/05(日) 01:57
>>142 そのコンポーネントやらに対して、
::DragAcceptFiles(h, FALSE);
じゃだめなの?
149 名前:142[] 投稿日:2000/11/05(日) 04:11 レスありがとうございます。 >145 実はまだ、継承とか派生とかそのへん勉強中なので よくわかってませんが、頑張ってみます。 >147 実はそれを呼ぶタイミング(?)がわかりませんで… (T▽T) Formの時はOnCreateイベントで呼んでるんですが… そのコンポーネントのコンストラクタ関数(?)とやらで 呼んでしまってもいいものなのでしょうか。 っていうか、実験してみたほうが早そうですね。やってみます。 150 名前:名無しさん@お腹いっぱい。[] 投稿日:2000/11/05(日) 07:14 >149 使いやすさと安全を期待するなら TListViewを継承してドラッグの受けつけの禁止許可の メソッドをつくってしまいましょう。 プロパティにしてしまえば設計時にも設定できて便利かも‥
608 :
デフォルトの名無しさん :03/01/11 20:22
C++Builder6を使っています。 今までexeファイルを右クリックするとコンテキストメニューに「デバッグ」という 項目があったのですが、今回全部入れ直してみたら、「デバッグ」と表示され ず、デバッガを起動できません。 どうやればデバッガ起動ができるようになりますか?
>類似発言を連呼すればグレーゾーンに入りますね。 で、何でそれをお前が決めるんだ??
288 :ひろゆき ◆3SHRUNYAXA :03/01/08 17:56 ID:rLfxQ17l >厨房板は本当に閉鎖なのか? 初耳。
>ID:A+3kp3mQ 判ったからネレw
>あめぞうより2ちゃんのほうが質が良かった時代 そんな時代はありませんでしたが、何か?
( ´,_ゝ`)プッ 糞荒らしなんとか言ってみろや(藁
ループコピペ厨は年越しは一人ぼっちの筆記
615 :
デフォルトの名無しさん :03/01/12 15:05
>>608 C++Builderは標準ではデバッグをコンテキストメニューには追加しないぞ。
レジストリエディタで
HKEY_CLASSES_ROOT\exefile\shell\debug
というキーを作り、自分でコンテキストメニューを定義しろ。
>>615 ありがとうございます!!
HKEY_CLASSES_ROOT\exefile\shell\debugに
デバッグ(&P)
HKEY_CLASSES_ROOT\exefile\shell\debug\commandに
"c:\program files\borland\cbuilder6\bin\bcb.exe" "-d" "%1"
という文字列を入れてみました。
これで、EXEファイルを右クリックしたらデバッグ(P)と表示
されるようになりました。
今までC++Builderにデバッグというコンテキストメニューがあった
というのは私の思い違いで、Borland-C++5.0の時にはあったのですが、
それをC++Builderに乗り換えた時に自分で追加したのかもしれません。
さよなら2ch、、
同じような書き込みが削除されずにいたら、今後も同じような訴訟になると思うぞ。
次は数ヶ月後とか?
620 :
デフォルトの名無しさん :03/01/13 00:05
BCB6を使用しているのですが、 ボタンなどのインターフェースをWindowsXPっぽくすることはできるのでしょうか?
フリーウェア作ろうと思ったら BCBのパーソナルとプロのアカデミックどっちがいい?? アカデミックはフリーウェアも駄目かな??
フォームが閉じるのを抑止したいのですが、どうやれば良いのでしょうか? 右上の閉じるボタンを無効にしてもAlt+F4で閉じてしまいます…
>>624 フォームのOnCloseQueryイベントで
CanCloseにfalse入れればいいのではないかと。
>>603 あっ、いえ、
エクスプローラからTEditのみにD&Dしたいのですが・・
フォームにはできたのですが、TEditのみというのができなくて
よろしくお願いします。
DragAcceptFilesにEditのハンドル渡せばできるよ。
>>627 お答えありがとうございます。
指定した、EditのみにD&Dするとカーソルが受け取る状態になったのですが、
実際にイベントが発生しません。
protected:
void __fastcall WMDropFiles( TWMDropFiles &Msg )
{
char buff[MAX_PATH+2];
::DragQueryFile( (HDROP)Msg.Drop, 0, buff, MAX_PATH );
Edit1->Text = buff;
::DragFinish( (HDROP)Msg.Drop );
}
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER( WM_DROPFILES, TWMDropFiles, WMDropFiles )
END_MESSAGE_MAP(TControl)
これがソースなのですが、どこがいけないのでしょうか?
よろしくお願いします。
>>628 それはどこに書いたの?
Editのハンドルを渡したら、それを書くのは TEditを継承したコンポに書く必要があるよ。
それをしたくないなら、 TEditをサブクラス(メッセージフックするとか)
>>629 TForm1のヘッダファイル内に書いたんじゃない?protected:とか
書いてあるし。
(^^)
Σ(゚Д゚)
前スレを踏襲しただけじゃないの? と、マジレスしてみry
>>620 どもありがとうございました
結局VCになっちゃいました
>>629 えと
>>630 さんの言うとおり、Formのヘッダに書きました。
すみません、サブクラスを行う場合のコードを教えて下さい。
よろしくおねがいします。
>>637 サブクラス化を行ってTEditにWM_DROPFILESメッセージを受け取らせる方法です。
--unit1.h
private:// ユーザー宣言
HWND wnd;
TWndMethod OldEditWndProc;
void __fastcall NewEditWindowProc(TMessage& Msg);
--unit1.cpp
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
OldEditWndProc = Edit1->WindowProc;
Edit1->WindowProc = NewEditWindowProc;
wnd = Edit1->Handle;
DragAcceptFiles(wnd, TRUE);
}
void __fastcall TForm1::NewEditWindowProc(TMessage& Msg)
{
char buff[MAX_PATH + 1];
if (Msg.Msg == WM_DROPFILES) {
DragQueryFile((HDROP)Msg.WParam, 0, buff, MAX_PATH);
Edit1->Text = buff;
DragFinish((HDROP)Msg.WParam);
}
OldEditWndProc(Msg);
}
639 :
デフォルトの名無しさん :03/01/14 04:07
コンパイル時の引数はどこで設定するのでしょうか? % gcc hoge.c -DDEBUG みたいなのをやりたいのですが。
>>638 だから、その技法だと TEdit のプロパティを実行時に代えるとクラッシュするんだってば。
>>639 プロジェクトの設定のディレクトリ/条件とかいうとこで設定してます
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { OldEditWndProc = Edit1->WindowProc; Edit1->WindowProc = NewEditWndProc; DragAcceptFiles(Edit1->Handle, TRUE); } void __fastcall TForm1::NewEditWndProc(TMessage& message) { if (message.Msg == WM_DROPFILES) { char buffer[MAX_PATH]; DragQueryFile((HDROP)message.WParam, 0, buffer, MAX_PATH); DragFinish((HDROP)message.WParam); Edit1->Text = buffer; } if (message.Msg == CM_RECREATEWND) DragAcceptFiles(Edit1->Handle, FALSE); OldEditWndProc(message); if (message.Msg == CM_RECREATEWND) DragAcceptFiles(Edit1->Handle, TRUE); }
さっそく
>>642 さんのコードで試してみました。
私の希望通りの動作ができたのですが、
Edit1->Textにファイル名が表示された瞬間にOSごと落ちてしまいます。
これは何が原因なのでしょうか?
よろしくおねがいします。
OldEditWndProc はどうしてる?
という事は WM_DROPFILES の時はDefWindowProcが動いてしまうのでは?
>>647 DefWindowProcとは
>>642 で言うところのOldEditWndProcですよね?
それでしたら、動くと思いますが。WM_DROPFILES の時は
動かさない方がいいのでしょうか?
うおおおおおおおおおおおおおおおおおおおおおおおおおおお!!
>>647 さん、ありがとうございます。
WM_DROPFILESのelseでOldEditWndProcを動かすようにすれば
正常に動作しました!ありがとうございました。
だから、 OldEditWndProc という変数はどこで定義したの?
コンポーネントにした方が良いと思ったけどなあ。
コンポーネントにすると何かパッケージとかに登録しなければいけないんですよね? 簡単にできるのでしたら、コンポーネントもいいんですが、簡単にできますか?
>>655 あのさあ、簡単に出来ますか? って聞くより 簡単に出来ますって答えられるようになれよ。
とにかく、やってから考えろ!
>>656 わからんから聞いてるんじゃん。
あんたこそ答えられるの?答えられないのに人を批判する事書いてん
じゃないよ(プ
批判してるつもりはないんだけどね。
まあ、簡単に出来ますかって質問の答えなら
メッセージフックと同じ程度には簡単。
どう作業すればいいか知りたいなら、
>>657 が答えてくれるだろう。
>>655 コンポーネントの登録は意外と面倒くさい。でもこれから何度も再利用する
可能性のあるものなら、面倒を厭わずコンポーネント化するといいかも。
例えばTEditを継承したコンポーネントを作るには、コンポーネント-コンポー
ネントの新規作成(TEdit StdCtrls)、クラス名TDragEditと指定する。
Dispatchマクロをオーバーライドする。
だいたいこのような手順でコンポーネント化できると思います。
Delphiサイトのコンポーネントの新規作成のページがそのまま役に立つ
はずです。
スマソ Dispatchはマクロでなくてメソッドね。 基本コンポーネントクラスの動作を変えたいメソッドをオーバーライドする という考え方で行けます。
662 :
デフォルトの名無しさん :03/01/14 19:19
質問です。 C++Builderで不要になった自作コンポーネントをパレットより完全に削除して しまいたい(非表示にするのではなく)のですが、どうすればいいでしょうか?
>>662 コンポーネント->パッケージのインストール->
設計時パッケージ を選んで 編集ボタン
削除ボタン -> 自作コンポを選ぶ
>>663 662です。
ありがとうございます!!無事削除できました。
∧,,∧ Delphiですまそですが、 ミ,,゚Д゚彡 CreateCloneコンストラクタを ミつ[|lllll]). 実装して、FormCreate時に継承元コンポと 入れ替えると、コンポインスコいらずに楽ですよ。 constructor TComboBox1.CreateClone(Original: TComboBox); var MemStream: TMemoryStream; begin Create(Original.Owner); Self.Parent := Original.Parent; MemStream := TMemoryStream.Create; try MemStream.WriteComponent(Original); Original.Free; MemStream.Position := 0; MemStream.ReadComponent(Self); finally MemStream.Free; end; end; procedure TForm1.FormCreate(Sender: TObject); begin ComboBox1.Free; ComboBox1 := TComboBox1.CreateClone(ComboBox1); end;
∧,,∧ まちがた。ComboBox1.Freeは ミ,,゚Д゚彡 必要ないですね。 ミつ[|lllll]).
>>665 おっと。こんな方法もあるのか。
Delスレも併読したほうがいいな・・・
なるほど、MemoeyStream(または普通のファイル)に一度親のコンポーネント の中身を書きだしてから、継承したコンポーネントで読めばいいのか。 その場合、オーバーライドしたメソッドなんかはどうなるんでしょうか?やはり 一度実行しておかないとだめですよね。
669 :
デフォルトの名無しさん :03/01/14 21:50
TCppWebBrowser* wb1 = new TCppWebBrowser(canvas); wb1->Width = sizeX; wb1->Height = sizeY; wb1->Left = posX; wb1->Top = posY; wb1->Visible = true; wb1->Navigate(Variant(data)); delete wb1; 実行時に、アプリケーション上の任意の位置に HTMLを表示しようと、上のコードを作成したのですが、 何も表示されません・・・ TCppWebBrowserを設計時に作成すれば大丈夫なのですが なぜか動的にやると失敗します。 原因が分かる方がいらしたら、どうか教えてください。 よろしくお願いいたします。
canvasはmainFormの間違いです。 また、dataにはファイルパスが入っています。 やはり原因が全く分かりません・・・
スマソ。 WebBrowserはParentプロパティの意味が違うのね。 今調べています。
>>669 wb1->Width = sizeX;
wb1->Height = sizeY;
を
wb1->ClientWidth = sizeX;
wb1->ClientHeight = sizeY;
にしたら、取り敢えず画面には表示されるようになるね。
後はフォームの上に表示するようにすればいいのか。
>>669 できたよ。
wb1->ParentWindow = Form1->Handle;
wb1->ClientWidth = sizeX;
wb1->ClientHeight = sizeY;
これでやってみて。
>>674 おお!凄い!できました!!
本当にありがとうございます!
また何か分からないことが出てきたら、よろしくお願いいたします。
また何か分からないことが出てきたら、よろしくお願いいたします。 また何か分からないことが出てきたら、よろしくお願いいたします。 また何か分からないことが出てきたら、よろしくお願いいたします。 また何か分からないことが出てきたら、よろしくお願いいたします。 また何か分からないことが出てきたら、よろしくお願いいたします。 また何か分からないことが出てきたら、よろしくお願いいたします。 また何か分からないことが出てきたら、よろしくお願いいたします。 また何か分からないことが出てきたら、よろしくお願いいたします。 また何か分からないことが出てきたら、よろしくお願いいたします。 また何か分からないことが出てきたら、よろしくお願いいたします。
何か気に障ったようだ。
まぁこっちは初心者用スレだしな。 馬鹿らしい質問にも答えてあげなくては。
>>676 もう冬休みは終わったんだぞ。
氏ね、厨房
これってありですか? 一応動作するのですが、ウインドサイズを変更して、 元の状態にすると、表示が消えてしまいます。 void __fastcall TForm1::Button1Click(TObject *Sender) { Form1->Canvas->TextOut(360,100,"Test"); }
>>681 ありですよ。
普通は
OnClickでは データを用意して
Form1->Invalidate();
としておいて
フォーム1の OnPaintで
Form1->Canvas->TextOut(360,100,"Test");
を実行します
>>682 表示消えなくなりました。
ありがとうございました。
がんばって勉強します。
(^^)
685 :
デフォルトの名無しさん :03/01/15 19:18
スレッドの殺し方がわかりません。 new で作って スレッドに命令するんですが、 スレッドがずっと実行したままなので止めたいです。 お願いします。
>>685 真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ
起動時の引数を取得するためにParamStrを利用しているのですが この時にパスが「Program Files」などスペースが入っている場合に ParamStrに格納される文字がわかれてしまうのですが、 これをわかれないようにするにはどうすればいいのでしょうか?
BCB5・learningエディションを持っているのですが、 BCB6・Standerdエディションを買って得することはありますか? 自分はデータベースもLinuxもインターネットアプリも興味ありません。 一応BCB6Proを買う予算はあります。
>>688 Test.exe Program Files
って書いたときに、"Program Files" というファイル/ディレクトリを指定したいのか
"Program" と "Files" という二つのファイル/ディレクトリを指定したいのか、プログラム側からは
判定できないだろ?
空白などの区切り文字を含んだファイル/パス名をパラメータとして渡すときは、
渡す側が "Program Files" と引用符で括ってあげる必要がある。
そうすれば ParamStr に一つの引数として(引用符がはがれた状態で)格納される。
すいません、開発者ガイドってなんですか? ガチレスです
692 :
デフォルトの名無しさん :03/01/16 15:17
また割坊かよ
693 :
デフォルトの名無しさん :03/01/16 15:22
プロファイラとか、そんな機能ってついてるの?
>>691-692 Personal版にはついてないみたいですね。
ヘルプで
「ほかのスレッドによる終了をチェックする」
を検索してください。
簡単に書くと、
「自分で実装しろ」
ちゅーことではないかと。
695 :
デフォルトの名無しさん :03/01/16 19:05
5のラーニングにはついてたのにね。
開発者ガイドって,参考にしている人いるの? 当方,5,6,7と未だに読んだことがない。
697 :
デフォルトの名無しさん :03/01/17 08:38
へたな解説本よりよほどいい出来だと思うけど。
アカデミック版のライセンス、もうちょっとどうにかならないかなぁ… せめてPersonalと同程度に。できればVS.netと同じに。 3月までに変更してくれたら買っちゃうよ。 そうじゃなきゃVSに鞍替え。
699 :
デフォルトの名無しさん :03/01/18 00:20
TabControlでタブが表示されているところの背景部分を特定色でマスクし、 タブ以外を透過させるフォームを作りたいんですが、タブの背景のCanvas を塗りつぶすにはどのように書いたらいいでしょうか?
すいません。 上の質問の仕方がおかしかったです。 聞きたいことを整理してからもう一回聞きます・・・
701 :
デフォルトの名無しさん :03/01/20 12:09
SendMessageでなく、Performメソッドを使うメリットっていうのは何なんでしょう? 「SendMessageの呼び出しは同期的です」とか書いてあるのを見ると SendMessageの方が便利なように思えるのですが。
BCB6にしたけど、DsgnIntf周りの変更が面倒すぎる・・・。 コンポーネントの開発なんてやめたほうがいいのだろうか。
703 :
デフォルトの名無しさん :03/01/20 12:38
そういや、Delphi6対応でもBuilder6では動かないコンポーネント増えたね そのせい?
すいません。 1msec毎に命令したいのでTimer使ってるんですが Timerでは1msec毎にうまく動いていないと思います。 いやいや絶対動いていません。 効率の良い方法キボンヌ
あげまくり
>>704 StrongTimer()を使いなさい。
>>704 マジレスです。 Windowsで動かすのは諦めなさい。
シーケンサとか PICマイコンとかを使いなさい。
そうですか…わかりました。 ありがとうございました
>>711 ん…、それだけっすか。
ウェブ上にあった例を見てたら、
Synchronizeした関数先でPerformしてたりして、あんまり格好よくないなあなんて思ってました。
スレッド分けてる場合はSendMessage使った方が良いんですかね…?
713 :
デフォルトの名無しさん :03/01/20 21:08
素朴な質問っす なんでVC++つかわないのですか? 業界ではVCは糞でBuilderがスタンダードって本当ですか? VCLはAPIのラッパーですか?
>>713 理由は人それぞれだと思うが、俺の場合はDelphiも使ってるから、
インターフェースが同一なのですぐ移れて使いやすい。
VCが糞というのは言語仕様が糞なだけで、使われてるのはVCの
方が圧倒的に多いだろう。
715 :
デフォルトの名無しさん :03/01/20 21:13
>>713 VCはM$純正だからってメリットはある。
ただし、MFCよりVCLの方が良い設計であるのは周知の事実。
ところがMFCの方が資料がたくさんあるので
調べものがしやすいというメリットがある。
どっちがいいかは自分で判断しる。
カブタか。 俺は両方使っているのでどっちでもいいと思うけど。
なるへそ なんかBuilderがMFCもサポートしてるみたいなんで IDEが使いやすいほうを選んだほうがよさそな でも、VCのほうがプログラムを組んでるようなきがしるよ
>>717 私はプログラムを組んでる気がしない方が良いんですけど
BCBで十分その気にさせられてしまいまつ。
719 :
デフォルトの名無しさん :03/01/20 22:13
11歳の女の子の裸を描画したいんですが、 画像を描画するコントロールは何を使ったらいいですか? 普通にTImageBoxを使って大丈夫ですか? すじとかもアップで映ってるんで。
>>719 TImage+TScrollBoxで良いよ。
完成したらうpね。
>>719 TImageBox ってのは知らんが、TImage なら、TPaintBox のほうが速い
ことが多い。ただし、OnPaint で再描画するように。
>>719 TImageに年齢を指定するプロパティのageっていうのがあるんで、
それを11にする。
女の子だからプロパティsexをfemaleにしてShow()すればオケー。
すじをアップにする方法はしらん。教えて(;´Д`)
ビルダーがあるおかげでおかずに困らないよね。
725 :
デフォルトの名無しさん :03/01/21 02:46
既存のフォームの継承ってどうやるんですか? ファイル→新規作成→その他で現在開いているフォームを選択すると、 もう一つフォームができますが、これとは違うんです。 あるプロジェクトで作ったフォームを利用して、別のプロジェクトを作成 したいのです。
727 :
デフォルトの名無しさん :03/01/21 15:00
staticな変数 static double x を他ファイルでextern double xとしたら ”外部シンボル'x'が未解決”というエラーメッセージが出てしまうのですが ナゼなんでしょうか?
728 :
デフォルトの名無しさん :03/01/21 15:30
長年VC使ってきて、C++Builder使い始めて5日目です。 厨房質問ですいませんが、フォーム、フレーム、ユニット、リポジトリ という用語の意味がいまいち理解できません。 かいつまんで教えて下さい。
730 :
デフォルトの名無しさん :03/01/21 17:30
インターネットを介さない通信について教えてください。 現在以下のような構成で動かしています。 [機器]―(RS232C)―[PC:設定ソフト] 今度以下のように遠隔地からでも操作できるようにしたいという要望が出てきました。 [機器]―(RS232C)―[PC:設定ソフト]―[携帯電話]〜(電話回線)〜[携帯電話]―[PC:設定ソフト] 質問は、BCB5.0で作成した設定ソフトについてです。 インターネットを介するならTServerSocketとTClientSocketでなんとか出来そうなんですが、 今回のはFAXのように、インターネットを介さない通信なのでやり方の検討もつきません。 FAX、通信、電話、等で検索しては見たものの参考になるものが見つけられませんでした。 通信初心者な私に助言等よろしくお願いします。
>>730 いつの間にか、インターネットを通した方が簡単と思える時代になったんだね。
通信は THandleStream か、 スレッドを作るならCreateFile /ReadFile/WriteFile のAPIで直接
ボーレートの設定とかは CDROMにあるWinAPIの日本語ヘルプで通信の概要を見るといい
問題は携帯電話を通過する個所かな
たぶんUSBモデムを使うのだろうけど、ATコマンドをエミュレートしてくれてるなら
ATDT で電話かけて 電話が繋がったらコマンドは自分で作ればいい
Windows附属のターミナルソフトで試してみればいい
733 :
デフォルトの名無しさん :03/01/21 20:11
メインのスレッドとは別にもうひとつスレッドを作り、 そのスレッドで while(1) ShowMessage("TEST"); とかやると、何回目か(回数は不定)で、 プロジェクトhoge.exeがEInvalidOperationクラスの例外を生成しました。 'Canvasに対する描画ができません' という例外が発生するのですが、何が間違っているのでしょうか?
>>733 ShowMessage は関数ですが内部でVCLを呼んでいるので 別スレッドで実行してはいけないようです。
1、Thread,SyncronizeやSendMessage/PostMessage を使ってメインスレッドに処理させる
2、MessageBox を使う
のどちらを使えば良いでしょう
>>734-735 ありがとうございます。
Synchronizeで私のやりたかったことはできそうです。
(MessageBoxがデッドロック発生しないというのもためになりました。)
しかし、マルチスレッドってプログラムがごちゃごちゃしそうですね…
あ、もうひとつ聞いてもよろしいでしょうか。 Syncronize,SendMessage,PostMessage という関数はヘルプで見つかったのですが、Threadというのは無いようでした。 Threadというのも関数なんでしょうか?
738 :
デフォルトの名無しさん :03/01/21 20:46
739 :
デフォルトの名無しさん :03/01/21 21:00
俺も
>>723 を見て12歳の女の子のあそこを表示しようと思ったのだが
ageとかsexなんていうプロパティは見つからないぞ・・・
ググッてもダメだった・・・(鬱
このスレの識者の型、どうやったら小中学生の裸が見れますか?
>>740 TMXクラスも今検索してみましたが見つかりません(´Д⊂
>>741 Indyの最新版入れてみれ
TIdMxな
やっぱりみんなも子供の裸が好きだったのか・・・ヨカタ 俺だけだと思ってたから変態なのかと悩んでたよ。安心した。 すれ違いスマソ ちなみに9歳〜13歳が好きです。
エムエークスで、12歳ぐらいの女の子がバイブで弄られて逝って いる動画がありました。でもスク水着着るとやっぱり子供だね。 声だけ聞くと大人と変わりません。萌え。
>>743 俺も小学生(特に5,6年)が大好きだ。同士よ。
TMediaPlayerでロリ動画を再生して(*゚∀゚)=3ハァハァしているスレは ここですか?
747 :
デフォルトの名無しさん :03/01/22 06:05
配布用にexeファイルを作るとどうしても 500kb近くになってしまうんですが どうすればもっと小さくできますか?
750 :
デフォルトの名無しさん :03/01/22 06:40
752 :
デフォルトの名無しさん :03/01/22 17:32
あるプログラムを実行すると無限ループになる可能性があるか否かを判断する プログラムを作ることはできないと聞いたことがあります。 どなたか、簡単に証明をお願いします
>>752 スレ違いだけどな
asoko:;
goto asoko;
これをプログラムで判断できない訳ね。へーあっそう。
755 :
デフォルトの名無しさん :03/01/22 18:39
>>754 まあまあ、そうつっかからんで…(^^;
754のは無限ループの可能性しかないわけで一般的ではない、
というか、無限ループの可能性しかないかどうかをプログラムで
判定することは可能だ、ということですわなぁ。
しかしこれでは質問に素直に答えてはいない。
>>752 だが、754は逆説的にであるが、答えを出してくれているぞ。
明らかな無限ループ以外のループ、すなわち変数を使った
判定条件を伴うループが無限ループになる可能性があるかどうかを
判断するのは困難だということだ。
しかし、それが不可能かというと必ずしもそうではない。
われわれプログラマはしばしば机上デバッグで無限ループを発見する
からね。
すなわち条件判定に使用される変数に対するすべての入力条件を
追跡することで、無限ループになる可能性がないか否かは判断できる。
756 :
デフォルトの名無しさん :03/01/22 19:47
>>754 任意のプログラムに対してそれが無限ループを含むか判定するプログラムが存在するかってことじゃないか?
>>756 無限ループかどうかは、結局
>>754 の構造を含んでいるかどうかということに帰結する。
条件分岐において可能性のある条件をすべてしらみつぶしに検証すれば、任意のプログラムにおいても
無限ループを含むかどうかを、一般解として生成することは可能だ。
つまり、
>>752 の命題は論理的には間違いである。
しかしながら、現実問題として、すべての条件をしらみつぶしに検証した場合、数百年いや1京年かかっても
検証が終わらないプログラムなどざらだろう。
無限ループになるかどうか難しいって話しは マンデルブロ集合とかからじゃないの? input C; Z:=0; while |Z| < 5 do Z:=Z*Z+C;
ねぇ・・・(;´Д`) 本当にどうやれば12歳のおまんこが見られるのか 教えてください・・・ もう我慢汁が出てきてるんですけど・・・
>>760 だーかーらーエムエークスやれってば。
タイーホ予備軍の人が列をなして並んでますから。。。
>>762 MediaPlayer1->FileName = "ロリ動画.mpg";
MediaPlayer1->Display = Panel1;
MediaPlayer1->Open();
MediaPlayer1->DisplayRect=TRect(0,0,Panel1->Width,Panel1->Height);
MediaPlayer1->Play();
NY の方が、楽でええよ。鼻くそほじくってる間に大量のロリ動画が。
764 :
デフォルトの名無しさん :03/01/23 03:30
TListViewで、MultiSelectプロパティを変更したときにOnDeletionイベントが起こるのは 仕様なんでしょうか? ヘルプに書いてある事と挙動が違うと思うんですが。 > OnDeletion イベントは,リストビュー内の項目が削除されようとしたときに発生します。
>>752 あたり
CBuilder というよりは純粋数学の問題だから、数学板に行くべき。
チューリングの定理:任意のプログラムが停止するかどうかを判断できるようなアルゴリズムは存在しない
http://www.miv.t.u-tokyo.ac.jp/~yabuki/tip/lisp/unknowable/turing.html 単純無限ループは「停止しないプログラム」の一部でしかないので間違えないように。
複数スレッドによるデッドロックとかも有るし。
「停止問題」と「チューリング」で google 引けば、証明も含めいろんな情報が手に入るよ。
この議論は『すべてのアルゴリズムに対し「停止するかどうか」を確実に判定する』アルゴリズムの
非存在証明であって、
『あるアルゴリズムが無限ループになるかどうかを判定する』アルゴリズムの存在は許している。
両者の違いが分からなければ、論理学/数学/国語をもう一度勉強すること。
非存在証明だから、現実世界にはあまり実用性は無い。
>『あるアルゴリズムが無限ループになるかどうかを判定する』アルゴリズム
>>754 だな
∃∀と∀∃の違い棚
768 :
デフォルトの名無しさん :03/01/23 19:22
769 :
デフォルトの名無しさん :03/01/23 19:22
BCB6で、次のプログラムをコンパイルすると エラー E2316 strcmp.cpp 7: '__strcmp__' は 'std' のメンバーではない(関数 main() ) と出ます。何が間違っているのでしょうか? #include <cstring> int main() { char f1[10], f2[10]; std::strcmp(f1, f2); }
770 :
デフォルトの名無しさん :03/01/23 19:29
>>770 std::を取ると動きますよね。でも、using宣言してないので、stdがないと
コンパイルできないはずですが、これってBCBが標準とずれていると
いう事でしょうか?
(^^)
なんかオプションあったでしょ。strcpyとかをインライン展開するかどうかってやつ。
std名前空間に含まれるのが標準なの? >strcmpとか VCもstd::つけたらエラーでたけど。
>>773 #pragma intrinsic -strcmp
をヘッダファイルの宣言部の後に置いたら、無事コンパイルできました。
ありがとうございました。
776 :
デフォルトの名無しさん :03/01/26 21:39
Builderってプロファイラーとか自動テストツールとかってありますか?
778 :
デフォルトの名無しさん :03/01/26 23:43
俺、仕事はVCやGCCで家ではBCB6使ってる。 BCBは6になってから、スゲー重くなったね。 XPで使ってるけど、不安定でBuild中によく落ちる・・・。 ソースエディタはVCの方が、細かい点で便利。 デバッガもVCの方が使いやすい。 BCBがVCよりも優れてる点は、GUIアプリ作成が容易なのと 豊富なコンポーネントだろうね。 趣味で使う分にはBCBは楽しいけど、情報源が少ないのが残念だよね。 (DelphiのTipsはそのまま使える場合が多いけど)
>>778 俺も仕事ではVC6とgcc、趣味ではBCB6だ。同じだね。偶然だ。
BCB6になってから確かに重くなったのでマシンを買い替えた。
それでも重いのでワクチンソフトを外した。ようやく納得いくコンパイル
速度になった。
元々ワクチンソフトはほとんど役に立ってなかったので、前から外そう
としていた。
VCの方がヘルプが親切だ。BCBはヘルプが貧弱でよほどVCLやWin32
を理解している人でないと使いこなせないと思った。
BCBはデータベース機能が強力なので、そのうちこれを利用して何か
作ってやろうと思っている。
俺もBCBは3から使ってるけどBCB6の安定度は最悪。 まぁ、MFCなんて使いたくないから仕方ないけどさ。 会社のライブラリを使えるのなら自宅でもVCでいけるのだけどなぁ。 流石にマズイらしい。
質問、BCB5です。 Application->ExeName で実行ファイルのパス付き得られますが全部大文字で得られます。 元の形で簡単に得る方法ありますか?
>>782 ParamStr(0)のほかにGetModuleFileName()も使ってみましたが
どちらも大文字化済で返ってきました。
>>783 そうなると言語ではなくOSの問題だな。
>>784 そのようです。
試しにw2kで実行したら大文字化されずに返ってきました、win98SEだと大文字…。
パス分解してやるしかないのかな…
BCB3でstlportとboostが使えれば3で十分なのにな。
787 :
デフォルトの名無しさん :03/01/27 22:02
DelphiのプロジェクトをBCBでmakeすることは可能ですか?
隠しコマンドを入力するとDelphi完全互換モードになるよ。
隠しコマンドは、[Alt]+[Ctrl]+[Delete]を押して[S]を押します。
Help - About で "SASADUKA" とか?
>>792 もう時効。カナロックして ALT-ササヅカ
バカな質問でもうしわけない ドラッグ&ドロップを行う場合 ドラッグもとの方の特定というのは 何で行えばいいのでしょう? 例えばフォームの中にListViewが二つあって TreeNodeにドラッグする場合、どちらのListView からのドラッグなのかを特定したいのですが... もすかしてよく理解していないハンドルとか いうやつでしょうか?
795 :
デフォルトの名無しさん :03/01/28 21:10
また移転ですかぁ
夜勤は早く氏ねばいいのにな。
797 :
デフォルトの名無しさん :03/01/29 00:48
かちゅ〜しゃのスレッド表示欄みたいなのを 作成できるコンポーネントってありますか? TListBoxを使うと一列しか表示できないんで・・・
798 :
デフォルトの名無しさん :03/01/29 01:08
>>797 TListView
ViewStyle=vsReport
799 :
デフォルトの名無しさん :03/01/29 01:27
>>798 おお!ありがとうございます。
明日は幸せになれそうです!
800 :
デフォルトの名無しさん :03/01/29 01:28
あ、動的に生成出来ますよね? できなくても構わないんですが・・・・ TListView* listView = new TListView(Form1); ↑ こんな感じですよね?多分・・・
>>794 一番簡単な方法は、Tagプロパティで見分ける。
ListView1->Tagを0、ListView2->Tagを1などにしておく。
void __fastcall TForm1::TreeView1DragOver(TObject *Sender, TObject *Source,
int X, int Y, TDragState State, bool &Accept)
{
Accept = Source->ClassNameIs("TListView") && dynamic_cast<TListView*>(Source)->Tag == 0;
}
void __fastcall TForm1::TreeView1DragDrop(TObject *Sender, TObject *Source,
int X, int Y)
{
TreeView1->Items->AddChild(TreeView1->Selected, dynamic_cast<TListView*>(Source)->Selected->Caption);
}
dynamic_cast<TListView*>(Source)->Tag なんか凄いな
804 :
デフォルトの名無しさん :03/01/30 06:04
ありがとうございます。
805 :
デフォルトの名無しさん :03/01/31 01:59
Indy 9.0.11でcookie取得から、POSTのためのヘッダへの追加までを教えてください。 8.*と違ってて、どうあつかっていいかわかりません。
オープンソースってそんなもん。
じゃあオープンソースなんかいらない。
ソ ー ス は ど こ ? ∧⊂ヽ ∧_∧∧_∧ ∩(,,゜Д゜)ノ 卩(´Д`三 ;´Д`)Ψ ∧∧ 彡 / ⊂ 三 つ (゜Д゜,,≡= )  ̄ ̄ ̄⊂⊃ ̄ ̄ ̄ ̄ ̄ ̄ ̄⊂⊃ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (ξ';;::;;) (ξ';;::;;)  ̄ ̄  ̄ ̄
なんとかできたから、もういいや。
ありがとうございました。
813 :
デフォルトの名無しさん :03/02/01 05:39
>>813 はいはい。昔から Win32 SDK 相当品をつけていましたが、なにか?
Visual Studio がつくってんなら驚いてやるけどさ。
ありがとうございます。
817 :
デフォルトの名無しさん :03/02/01 23:53
C++Builderで作ったアプリケーションはC++BuilderがインストールされてるPCじゃないと動かないんですか? 普通にフリーで配布されてるソフトみたいにコンポーネントを必要としないものをこれで作ることはできないんですか?
818 :
デフォルトの名無しさん :03/02/02 00:12
>>818 スタティックリンク
複数のオブジェクトを連結して実行ファイルを作るリンク時に、必要なコードすべてを実行ファイルに含めてしまうリンク方法。
実行時にリンクを行うのがダイナミックリンク。
↑これのことですか(google検索) なんとなく意味がわかりました
まだこのソフト使って一週間なんで。。とりあえず勉強して作れるようにします ありがとうございました
820 :
デフォルトの名無しさん :03/02/02 03:00
次期バージョンの発売はいつですかね? 今年中?実は来月?
とりあえずUPDatePackの1と2をあてたが、 BCB閉じる時の「セーブするかい?」が英語になった。 何か失敗したのか、そういう仕様なのか・・・
824 :
デフォルトの名無しさん :03/02/04 11:46
教えてください TJPEGImageをDIBに変換したいのですが どのようにするかアドバイスをください。 おねがいします。
825 :
デフォルトの名無しさん :03/02/04 12:00
c言語でテキストアドベンチャーを作ってるんですが リンクのさせ方が分かりません そもそもcで作るのが間違いでしょうか
>>825 cで作っておけば、移植上、便利ですよ。
ただ、そういうの作る時はスクリプトにして、スクリプト上で実装した方がいいんじゃないの?
自分は、 cでスクリプトエンジン作って、BCBでコンパイルしてDelphiにリンクして
Delphi側でコンポーネント作って、 さらにそれをBCBで使っています。
変な事しますね
BCBでなくDelphiでコンポーネントを作るメリットは何だろう。
>>829 Delphiのコードをそのまま使えるから
831 :
デフォルトの名無しさん :03/02/04 18:13
>>829 スクリプトの為のツール類をDelphiで作るのに、
Delphiでコンポを作っておけばBCBと両方で動くから便利
BCBはC/C++の検証を含めた部分担当って感じかな
833 :
デフォルトの名無しさん :03/02/04 22:35
IdHTTPでGetしてタイムアウトした時、タイムアウトはどうやって検知すればいいのでしょうか?
訂正 例外の原因がタイムアウトか否かを見るにはどうすればいいのか?ということでし。
補足 NMHTTP->BeenTimedOut に代わるものは何か?ということです。
838 :
デフォルトの名無しさん :03/02/05 03:47
"1.0000,2.0000,3.0000,4.0000........"みたいな要素数に制限のない文字列を、 それに対応した要素数の配列に格納する方法ってありますか?
方法はある。
840 :
デフォルトの名無しさん :03/02/05 05:28
どんなでしょ?
文字列のサイズ÷2程度の配列を作っておいて、それに格納した後、余った部分を開放
STL 使って vector に突っ込んでけば?
すなおに StringList でいいんじゃないの?
>>843 同意。TStringListをキーワードにしてヘルプ読めばいい。
うーん 実行速度は
1
>>841 (malloc)
2
>>842 (Vector)
3
>>843-844 (StringList.Commatext)
だろうな。
慣れの順はこの逆だろうな。
慣れれば3つとも書く時間は同じ程度か、
>>845 感謝の言葉はいらないから、どの実装を使ったのか教えてくれ。
そのほうが教えたほうも嬉しい。
>>846 なれなくても、ライブラリ使う分にはコードを書くコストは無い。
慣れてきても、ライブラリを使わない場合にはコードを書かねばならない。
手持ちのライブラリを使う。ってのはライブラリを使うってことだ。
速度は、データコピーが律則段階となるから大差ないと思うよ。
>>848 データコピーは
mallocで必要メモリ以上を確保する方式は1回
Vectorを使った場合は、データ数の対数に比例
StringListを使った場合は、書き出しデータの分は1回だが文字列の方を2度スキャンしてしまう
上、1回目のスキャンでコピーも発生する
850 :
デフォルトの名無しさん :03/02/06 08:04
>>849 >mallocで必要メモリ以上を確保する方式は1回
ほんとか?
>>849 838 さんの、元のお題があいまいだからなんともいえないけど。
841 のアイデア、いまいち理解できないんだけど。
たとえば4番目の文字列を欲しい。ってとき、まさか要求されるたびに最初からスキャンするの?
まぁ、俺ならvector使うだろうなぁ。
誰か簡単なソケットサーバのサンプル作ってくれー ServerSocket使って 一応接続クライアント接続->メッセージ送信 までできたんだけど 「たまにメッセージが届かない」 かったり 「サーバから一度メッセージを送信すると二回目以降メッセージが届かない」 等 クライアントはFLASHのXMLソケットで作ってます。
UDP 使っているからとか?
サーバーの MTU の問題では? CBulder のみユーザーには分からんかもしれん。すまん。
856 :
デフォルトの名無しさん :03/02/06 21:45
Form1 と Form2 を用意しておき、 Form1のボタンをクリックすると、 Form2のEdit1文字列を変更する。 という動作をさせたいのですが、 Form1から、Form2へアクセスするときの記述方法が どうしてもわかりません。 TForm2::Edit1->Text="hoge"; と言う記述は、Form1内では、通らないんです。 プログラミングを始めたばかりの初心者ですが、 どなたか、アドバイスお願いします。
Form2->Edit1->Text="boke"; は?
>>856 Form2(Unit2)のヘッダファイルをインクルードすれ。
Form1をアクティブにしておいて,ファイルメニューの「ユニットファイルの...」を選択。
後はわかるはず。
ソケットについて質問したものです なんとか、安定したメッセージ送受信ができたのですが、 接続/切断を連打するとサーバ側で非同期ソケットエラーが出てしまいます ここらへんの改善する良い方法はないでしょうか?
あなたのコードに依存するから誰もコメントつけられないよ。
862 :
デフォルトの名無しさん :03/02/10 10:05
エクスプローラもどきを作ろうとおもっているのですが エクスプローラのツリービューのアイコンはどこにありますか?
863 :
デフォルトの名無しさん :03/02/10 11:51
ちょっと質問ですが、エクスプローラなどから自作ソフトにD&Dはできるのですが 逆に自作ソフトからエクスプローラ等にD&Dするほうほうは どうやってやるのでしょうか? よろしくお願いします。
864 :
デフォルト肉マン :03/02/10 16:13
>856 ???????????? >857 ウンコ同然のクソグラマーの分際で純朴な少年をバカにする輩、市ね
>864 >857 のレスで合ってませんか?
866 :
デフォルトの名無しさん :03/02/10 18:34
C言語実行環境はどうやったら整えられるのですか?藁
868 :
デフォルトの名無しさん :03/02/10 19:04
TreeViewで子ノードからルートまでキャプションを連結するのに簡単な方法はありますか? C: +-aaa +-bbb これでbbbが選択されている時に「c:aaa\bbb」って具合に連結したいのですが
普通に1個1個足していっても十分簡単でない? String text = TreeView1->Selected->Text; for (TTreeNode* node = TreeView1->Selected->Parent; node != NULL; node = node->Parent) text = node->Text + "\\" + text; モット?
>>867 反応してもらったのでマジに質問します(藁)
C++Builderをインストールする事はできたのですが、Cファイルをどこで翻訳・実行すればいいのかわかりません。教えて下さいm(_ _)m
>>870 Builderをインストールしたのならbinにパスが通っているはず。
.cや.hのあるディレクトリでbcc32を使えば良い。
>>871 すみません、ディレクトリってなんですか?(苦笑)
一応調べたのですが、言葉の意味が載ってないので。
Binという名のファイルフォルダはあります
>>872 ディレクトリ == フォルダと思っとけ
∧,,∧
>>863 さん
ミ,,゚Д゚彡
ミつ日(ミ
D&D専用コンポーネントを使うと楽でいいです。
海外の物が一番西濃がいいと思われ
海外ものと、恐れずに使うのが吉
>>872 やい、おまえ。何 (苦笑) とかしてんだよ。
苦笑したいのはこっちなんだよ。
えらそーに、(苦笑) とか使ってンなよ。
つーか、ネタにマジレスしてる俺って(゚Д゚)カコイイ?
>>875 y=ー( ゚д゚)・∵. ターン
(・A。)イクナ・・ァベルヒャ!!
>>875 うむ。確かにこの文脈で (苦笑) はめっちゃ腹立つね。
ナイフで顔をザクザクと刺したくなる。
上手い煽りであったと認めざるをえない。
まぁ、それまでにも質問形式をとりながら (藁 とかつけてるしね。
bcc32を実行すると一瞬だけ文字が流れてすぐに終了してしまうのですが…
>>879 エクスプローラから実行してどうする
コマンドラインで実行汁!
>bcc32 test.c
ってな具合に打て
コマンドライン??
頼む!!誰か代わってくれ〜〜〜〜
だいたい、Builderのスレなのに何故にこの内容? bcb.exe使え イジョ
>>881 あのねー、、、、
スタートメニューから「名前を指定して実行」ってあるだろ。
そこに "format c:" って打てってこと。
>>884 ダイアログが出てダメだろ。
何かもっといい手は無い?
delete c:\windows\*.*もダメっぽいし。
delte c:\boot.ini
やあ、みんな 元気かーい! さわやかにいこうぜ、さわやかに
コマンドラインすら理解せずにプログラムを作るのは止めた方が良い。 ファイル操作もろくにできなさそうだ。
学校でCプログラミングをやってるんですが、コンピュータ自体については全くといっていいほど教えてもらってません。がんばって自分で調べます…
ヽ(゚∀゚)ノアヒャヒャヽ(∀゚ )人(゚∀゚)人( ゚∀)人(∀゚ )人(゚∀゚)人( ゚∀)ノ
>>890 それでも2ちゃんねるは知っていると・・・
(゜∀。)ワヒャヒャヒャヒャヒャヒャ
ありがとうございます、そこの過去ログに書いてありました。とりあえずパソが再度ネットにつながるようになってからダウンロードしてきます
895 :
デフォルトの名無しさん :03/02/12 01:40
>>894 >パソが再度ネットにつながるようになってから
???
つながってるだろ。
今携帯から来てます。
897 :
デフォルトの名無しさん :03/02/12 09:56
ちょっと質問ですが、エクスプローラなどから自作ソフトにD&Dはできるのですが 逆に自作ソフトからエクスプローラ等にD&Dするほうほうは どうやってやるのでしょうか? よろしくお願いします。
898 :
デフォルトの名無しさん :03/02/12 11:04
エクスプローラと同じフォルダのアイコンをTreeViewに表示したら 何かエクスプローラと違う感じ(色数が少ないっぽい)になるのですが 同じ感じにする方法を教えてください。
(´・ω・`)もうだめぽ イェァ!(´・ω・`)
>>894 ダウンロードしてきますって・・・ BCB入れてるならBCCはインスト済みだべ・・・
CanvasでMoveToとLineTo使って線引いたら、 最後の1ピクセルが描画されないんでつ… 仕様でつか?回避方法ないのでつか?
最後の1pixelまで描画されるように引数を指定すれば?
傾きがずれまつ…
>>901 仕様でつ。
例えば、座標(0, 0)から(30, 30)まで線を引いたとすると、
(30, 30)の左上が線の終端になるから、
線は(29, 29)が終端となる。
(30,30)から(30,30)までLineToして回避できんの?
>>904 やはり仕様ですか、なんてこったい!
>>905 なるほど、うまくいきました。
五万本ぐらい引くんですが、激しくオーバーヘッドが(以下略
自前の関数作らないと駄目なような気がしてきました(鬱
907 :
デフォルトの名無しさん :03/02/13 18:04
>>906 void LineToEx(int X, int Y){
Canvas->LineTo(X+1,Y+1);
}
これでいいだろ。
なわけない
909 :
デフォルトの名無しさん :03/02/13 18:41
日本語版アップデートまだですか。
いつからMLはあんなバカな質問が増えたんだ?
なんでアフォ?
マイナス方向に線を引いてみるとわかりやすい
914 :
デフォルトの名無しさん :03/02/14 02:36
便乗質問で申し訳ないけど、 Canvasオブジェクトで一般的な四角形ってどうかくの?? Rectangle使ったら長方形しか描けないんですけど・・・ 菱形みたいなのを描きたいんで・・・
Polygon メソッド。
>>915 thx!
やはりそれしかないんですね(鬱
リージョン使うとか。
>>909 BCB6 Update4 が今週出るのでその後に。
921 :
デフォルトの名無しさん :03/02/14 10:15
ストリーム型と言うかMS-DOSのテキスト画面のイメージで、 テキストの文字属性(表示色)を指定して表示する 方法ってありませんか? (logの表示専用なので編集機能は不要) MemoやRichEditに変わるコンポーネントを Delphian Worldを探したけど見つからなかったし。 SelStartとかで範囲選択する方法は知っていますが、 表示後に巻き戻して色を変えるのが面倒なので。 カラー指定用関数を用意して、SelLengthをカウントさせる とかでしのぐしかないのかなぁ
RichEdit1->SelAttributes->Color = clBlue; RichEdit1->SelText = "こうしやがれ\n";
923 :
デフォルトの名無しさん :03/02/14 13:45
コンソールアプリケーションで、 [C++ 致命的エラー] STDCOMP.H(5): F1003 error 指令: Must use C++ for STDCOMP.H というエラーが出ます。どうしたらよいのでしょう。
再インストール
925 :
デフォルトの名無しさん :03/02/14 13:55
>>924 いや、STDCOMP.Hはあるんだけど。
#include <STDCOMP.H>すると、STDCOMP.H自体の以下の部分でエラーがおきる。
#ifndef __cplusplus
#error Must use C++ for STDCOMP.H
#endif
拡張子が .c だと出るらしいが。
927 :
デフォルトの名無しさん :03/02/14 14:10
>>920 なんと!期待期待!!詳しい情報求む!!
update3自体べーただったのでは。
それは使えません。英語版しかないです。
933 :
デフォルトの名無しさん :03/02/15 17:47
画像を編集するプログラムを作っているのですが、 楕円を表示しようとしたところ、TCanvasのメソッドにEllipse()というのが あることが分かったのですが、このメソッドでは長方形に内接する 楕円しか描けないようです・・・ 私が作りたいのは、平行四辺形に内接する楕円を描きたいのですが 何か良い方法はないでしょうか? 座標(X1,Y1)〜(X4,Y4)を与えて描画するようなものです。 どうかよろしくお願いします。
935 :
デフォルトの名無しさん :03/02/15 19:29
おお!ありがとうございます! 本当は塗り潰したかったですけど(TД⊂) その方法を使ってから再帰で塗り潰す・・・って方法もアリなんですかね。 ペイントみたいな手法ですけど・・・
>>935 塗り潰しが必要なら 楕円リージョンを回転させたら?
汎用性にこだわるなら多角形に分解して塗り潰したら?
その方が 画像編集? なら扱い易いでしょう
937 :
デフォルトの名無しさん :03/02/15 19:56
>>936 残念ながらリージョンというものがよく分からないんです・・
ヘルプ見ても書いてないし・・・
>>937 そう。 じゃ多角形にする事だね。 楕円リージョンを回転させるのは微妙に汚いかもしれんし
941 :
デフォルトの名無しさん :03/02/15 20:21
>>938-940 ありがとうございます。
>>938 を読んでみましたがどうも難しくて何だか・・・
>>939 ウィルースみたいなのもできるってことですか?
>>940 うーむ・・・回転をあきらめるか塗りつぶしをあきらめるかという
選択になってしまいました・・・
942 :
デフォルトの名無しさん :03/02/15 20:24
少しサンプルを見ながら考えてみたんですが 楕円リージョンを回転させるとはこういうことですか? 1.TCanvas::Ellipse()を用いて楕円を描画 2.その楕円をTBitmapにぶちこんでBMP画像を作成 3.回転 4.表示 5.(゚д゚)ウマー ってことでしょうか? どうもイメージがつかめないんで間違ってると思いますが・・・
>>942 まあそれでもいいけど、ちゃんと CreateEllipticRgn て API もあるよ。
でもさ、多角形に分解ったって、楕円なら、 sin cos が判れば難しくないだろうと思うのだが?
どこが判らんの?
944 :
デフォルトの名無しさん :03/02/15 20:59
>>943 分解って、中心から複数の三角形として描画するっていうことでしょうか??
多角形に分割したら塗りつぶせない点が出てこないんでしょうか・・・
違うよ 円を描く例で SetLength(Points,100); For i:=0 to High(Points) do Points[i] :=Point( round(r*sin(i/Length(Points)*2*PI)+x0 ,round(r*cos(i/Length(Points)*2*PI)+y0 ); Canvas.Polygon(Points); 楕円にするには、この点列を 斜めに引き伸ばせばいい
946 :
デフォルトの名無しさん :03/02/15 21:35
>>945 あ、なるほど。
要するに無数に細かい点で近似するってことでよね?
とりあえずまだ不十分なんですけど、こんな感じでできました。 void fEllipse(double a,double b,double rad,int X0,int Y0){ TPoint Points[100]; int i; const double PI = 3.1415926535; double cosphi = cos(-rad/180.0*PI); double sinphi = sin(-rad/180.0*PI); double len = b*b/a; /* 線分CF */ double e = sqrt(a*a-b*b)/a; /* 離心率 */ for(i=0;i<100;i++){ double theta = i/100.0*2.0*PI; double r = len/(1-e*cos(theta)); double u = r*sin(theta)+X0; double v = r*cos(theta)+Y0; Points[i] = Point( u*cosphi-v*sinphi, u*sinphi+v*cosphi ); } mainFrame->Canvas->Polygon(Points,100-1); }
導出の式には楕円の極座標の式 r = len / (1-e・cos(θ) ただし、len = b^2/a, e = √(a^2 - b^2) / a を用いてます。 もちろん、x = r sinθ、y = r cosθ はいうまでもないです。 これをrad[rad]で回転してみました。 原点からの回転なのでヘンですが、それはなおします(w
あ、uとvってのは、原点からのベクトルです。 これを楕円の中心からのベクトルに修正すればたぶん大丈夫だと思います。
ついにちゃんとしたのができました!! 今までおつきあいくださった方々、本当にありがとうございました。 今後のためにソースを貼っておきます。
TPoint Points[100]; int i; const double PI = 3.1415926535; double cosphi = cos(-rad/180.0*PI); double sinphi = sin(-rad/180.0*PI); double len,e,c; if(a>b){ len = b*b/a; /* 線分CF */ c = sqrt(a*a-b*b); /* 焦点距離 */ e = c/a; /* 離心率 */ } else{ len = a*a/b; c = sqrt(b*b-a*a); e = c/b; } 続く・・・
for(i=0;i<100;i++){ double r,u,v; double theta = i/100.0*2.0*PI; if(a>b) r = len/(1-e*cos(theta)); else r = len/(1-e*sin(theta)); u = r*cos(theta); v = r*sin(theta); if(a>b){ Points[i] = Point( u*cosphi-v*sinphi + X0+a-c, u*sinphi+v*cosphi + Y0+b ); } else{ Points[i] = Point( u*cosphi-v*sinphi + X0+a, u*sinphi+v*cosphi + Y0+b-c ); } } Canvas->Polygon(Points,100); 終わり。
953 :
デフォルトの名無しさん :03/02/16 03:44
C++Builderでアイコン作りたいんですけどみなさんはどうゆうソフトを使っていますか?
>>953 ツール→イメージエディタを俺は使っている。
BCB_Update4の英語版を、化けないようにインストールする方法はありますか?
956 :
デフォルトの名無しさん :03/02/16 08:15
Update4をDLしてみたけど、この実行ファイルだめみたいだね。 実行してもすぐ終了してしまう。物が違うのかな。 Update2とUpdate3については英語版を日本語版にインストール する方法がこのスレで書かれていたけど、Update4は実行ファイル のアイコンからして違うからなあ。MS-DOSのアイコンになってる。
957 :
デフォルトの名無しさん :03/02/16 17:56
>>954 あれって糞じゃない?
ctrl+Zとかで色が化けるし。
958 :
デフォルトの名無しさん :03/02/17 00:44
959 :
デフォルトの名無しさん :03/02/17 06:01
CommandButtonClickハンドラ内からCreateThreadを呼び出す と、スレッドを2回起動すると保護エラーが出てしまいます。 VCLとCreateThreadは相性が悪いのでしょうか。 ちなみにCreateThreadで呼び出した関数からはDLLを呼んで います。
そのDLLが複数スレッドから呼ばれることに耐性が無いのでは? 中でグローバル変数使ってるとか。 DLL呼ぶ部分をクリティカルセクションで囲ってみるとか。 それと、VCLと併用するならBeginThreadの方がよさそうな気がします。
>>960 ありがとうございます。グローバル変数は使っていませんが、
DLL内でMessageBoxを呼んでいる事に原因がありそうです。
ちなみにCreateThreadを使わず、ButtonClickハンドラ内から
直接DLLを呼び出すとエラーになりません。
ButtonClickハンドラを複数作り、同時に呼び出してみたりして
みましたがどうもエラーが再現しません。CreateThreadとMessageBoxの
相性が悪いようです。DLLからMessageBoxを取り除くとエラーが
出なくなります。
BeginThreadでやってみます。
962 :
デフォルトの名無しさん :03/02/17 06:39
>>959 >>733-736 を見る限りMessageBoxはスレッドセーフの様ですが。
> VCLまたはCLXのオブジェクト階層にあるオブジェクトを使用する場合は,
> そのプロパティおよびメソッドは, スレッドセーフであることが保証されていません。(開発者ガイドより)
この辺でまずいことやってない?
>>962 ButtonClick内では、CreateThreadで作成したスレッドを、
WaitForSingleObjectで終了を待つことしかしていません。
VCLは一切触れていません。
DLLでももちろんVCLは触っていません。というか、DLLは
M$互換で作成しています。
BeginThreadに置き換えようとしたのですが、返却値がint
であったりと、不可解な仕様に戸惑っています。これでは
WaitForSingleObjectが使えないのでどうすればいいんで
しょうか?素直にTThread使った方がいいのでしょうか?
むう、不可解ですね。 とりあえず、BeginThreadの戻り値は「BeginThread は,Windows スレッドハンドルを返します。」と書かれてます。 Integerなのは、多分、Delphi側がTHandle(HANDLE) = LongWord(unsigned long)なので、 代入互換が有るからいいやみたいなてきとーな仕様が、C++Builderで皺寄せがきてるものと。 HANDLEにキャストして問題無いでしょう。
>>964 やってみました。やっぱり例外エラーが出ました(T_T)。
こうなると、同じメモリ空間内の関数をCreateObjectで呼んで
いる事による、スタック回りがスレッドセーフでない事に起因する
エラーしか考えられません。
思い切ってフォームを使わずに、コンソールとDLLだけで書いて
みてエラーが再現しないか試してみます。
extern "C" void __declspec(dllimport) __stdcall beep(WORD wCounter); int main(int argc, char* argv[]) { for (int i = 0; i < 5; i++) { func(); Sleep(500); } } void func() { HANDLE hThread; DWORD threadID; WORD beepTimes = 1; hThread = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)beepThread, (VOID *)beepTimes, 0, &threadID); while (WaitForSingleObject(hThread, 0) == WAIT_TIMEOUT); } //--------------------------------------------------------------------------- void beepThread(WORD beepTimes) { beep(beepTimes); }
extern "C" void __declspec(dllexport) __stdcall beep(WORD wCounter); BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved) { char szBuffer[256]; switch (fwdreason) { case DLL_PROCESS_ATTACH: lstrcpy(szBuffer, "プロセスがアタッチされました。"); break; case DLL_THREAD_ATTACH: lstrcpy(szBuffer, "スレッドがアタッチされました。"); break; case DLL_THREAD_DETACH: lstrcpy(szBuffer, "スレッドがデタッチされました。"); break; case DLL_PROCESS_DETACH: lstrcpy(szBuffer, "プロセスがデタッチされました。"); break; } MessageBox(NULL, szBuffer, "DLL entry point message", MB_OK); return 1; }
void __declspec(dllexport) __stdcall beep(WORD wCounter) { WORD loop; for (loop = 0; loop < wCounter; loop++) { Beep(400, 100); Sleep(1000); } } これがエラーを再現する最短のプログラムです。コンソールアプリケーション でコンパイルして実行します。
>>962 MessageBox って Application.MessageBoxと Windows.MessageBox と2つあるから注意
APIのMessageBoxとして文字列はどうやって作ってるのかな
>>967 MODAL じゃない MessageBox って事は、
そのスレッドが終ったときにも その MessageBox は開いているんじゃないの?
971 :
デフォルトの名無しさん :03/02/17 10:31
SearchTreeForFileを使うと 「[C++ エラー] ImageHlp.h(600): E2015 'LONG64' と 'System::LONG64' の区別が曖昧」 ってエラーがでます。 これの解決方法を教えて下さい。 よろしくお願いします。
>>970 そのモーダルでないMessageBoxが開いているのが怪しいですよね。
これをモーダルにしてやってみようかな・・・・
というか 作業スレッドでMessageBoxを直接使う設計がまずマズイんじゃないの? GUI関係はメインスレッドにお願いするような設計にするべきでしょう エラーとかステータスは、DLLからコールバックさせて、コールバック内で SendMessage/PostMessage するのが普通だと思うけどな
>>973 そうしましょうか・・・・これは本の例題を改造して作った物なのですが、
元々のプログラムの設計に難がありそうですね。
DLL内でGUIを使うのも可かと思ってたのですが・・・・・ケースバイケース
のようですね。
975 :
デフォルトの名無しさん :03/02/17 15:46
メッセージボックスを出してOKボタンなどをキーボードのEnterキーで押すと ListViewのListViewKeyUpイベントが反応してしまいます。 これを防ぐ方法を教えて下さい。 宜しくお願いします。
976 :
デフォルトの名無しさん :03/02/17 18:07
Visual-C++のように、#pragma data_segを使って、DLL間でメモリを 共有するにはどのようにしたらよいのでしょうか?
C++Builderには#pragma data_segがないので困っています。
>>978 何も知らないくせにグローバル変数厨などと言うな。
お前こそ氏ね!
ヽ(゚∀゚)ノアヒャヒャヽ(∀゚ )人(゚∀゚)人( ゚∀)人(∀゚ )人(゚∀゚)人( ゚∀)ノ
みんな氏ねー
>>979 アヒャhッヤアヤヤヤジャアヤジャアヤ
983 :
デフォルトの名無しさん :03/02/18 11:02
メッセージボックスをだした後に ActiveControl = NULL; としてみる
>>983 反応しませんよ。
void __fastcall TForm1::ListView1KeyUp(TObject *Sender, WORD &Key,
TShiftState Shift)
{
Application->MessageBox("ListViewKeyUpイベントです。", "", MB_OK);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
MessageBox(0, "MessageBoxです。", "", MB_OKCANCEL);
}
//---------------------------------------------------------------------------
>>985 それはButton1にフォーカスが移ったからだと思う。
ううむ確かにListViewClickにMessageBoxを出すルーチンを書いてみると
反応しますね。
>>984 さんの対策で直りました。
/| + l | 989 l | _L!_ || /二二ヽ || / (´Д`)) Oニゝ、__乂__〉 ||!J_|::::::::::::::| 8 (二∧二)
>>976 どうしてもやりたいなら、アセンブラでセグメント指定して それをExternしてたら?
でも、共有するなら共有メモリよりメモリマップファイルのほうが楽じゃないの?
>>990 プロジェクトに.ASMを追加できたら楽ですね。やってみます。
だめならアセンブリ出力してTASMに掛けるかですね。
ありがとうございます。
99999999999999999999 99999999999999999999 33333333333333333333
1000
埋め立て
ぬるぽ
997
998
999
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。