トップページ⇒tech
1001コメント324KB

C++Builder相談室 Part9

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
C++Builderに関する質問・回答や議論等を行う相談室スレッド。
過去スレ・関連サイトは>>2-5あたり。
0446デフォルトの名無しさんNGNG
nai
0447デフォルトの名無しさんNGNG
Winsockかな。
0448デフォルトの名無しさんNGNG
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/1512/

ここをみたらできました。ネット関係のプログラムは、難しそうですががんばってみます。
0449デフォルトの名無しさんNGNG
>>445
単に落とすとかならそれで十分だが、色々やりたいならIndy入れてみ。
0450デフォルトの名無しさんNGNG
>>443
いや灰色はいいんだけど、全ツリーが灰色になるんで
ツリーをクリした後にこれになると選択したノードがどれかわからなくなってしまうから
>>444
いかないですそれ。
0451デフォルトの名無しさんNGNG
最新のC++Builderは "-P" が含まれるフォルダにあるプロジェクトがビルドできない不具合解消されてんのかな?
0452デフォルトの名無しさんNGNG
質問させてくださ〜い。
既にデータセットされてるテーブルに、新しいフィールドを追加するにはどうすればいいんですか?
0453デフォルトの名無しさんNGNG
>>452
再構築する。動的にやりたかったら新たにテーブルを作ってデータをコピーする。
0454デフォルトの名無しさんNGNG
大規模なデータを操作するためデータベースの使用を考えています

具体的には株価データで、操作は、
(1)ある特定の銘柄の過去のデータ(5年分の日々のデータ)の読み込み
(2)最新の一ヶ月分程度のスパンで全銘柄のデータを読み込み
が必要です。

はじめは、データベースの知識が無いので銘柄ごとにファイルを分割して、時系列に並べる構造を考えました。
(1)は高速に行えると思うのですが、(2)は、この方式だと効率的に管理できないと思います。(アクセス時間が莫大になる)
このような用途では、データベースが良いのではないかと想像してます。

Personalなので、データベースコンポーネントが付属してません。
Proを買ってもいいのですが、どうやら新バージョンがでるそうなので躊躇します

Office付属のMsAccessは持っているので、こちらにアプリケーション間アクセスのような手法で
Pro版を買わずに実装できないでしょうか?
0455デフォルトの名無しさんNGNG
>>454
データベースの知識がないのに、自力でデータ操作のプログラムができるわけないな。

ま、がんばってADOのプログラム書けば、自力で書けるだろうけど。
こういう質問してるところ見ると、その力はないと思うけどな。

で、MS-Accessで「大規模」なデータを扱うべきでもないな。
MSDE使えばいいのかな。
0456 NGNG
>>454
COM使え
読み書きならばできるはず
0457デフォルトの名無しさんNGNG
>>456
どうもありがとうございますm(_ _)m

>>455
次からはそういうポエムではなく、まともな回答を心がけて下さいね(^^;
0458デフォルトの名無しさんNGNG
>>457
第三者から見ると、>>455の回答のほうが適切なんだが。
0459デフォルトの名無しさんNGNG
無理して第三者とか言わなくていいです(^^;
0460デフォルトの名無しさんNGNG
>>459
じゃあ、無理せずCOMからやってくれ。









「バカにつける薬はない」
0461デフォルトの名無しさんNGNG
>>455
は、ポエムじゃないだろう。きわめて「まともな」回答以外の何者でもないぞ。
自分の耳に厳しいことは「まともな」回答に聞こえないのかい?
0462デフォルトの名無しさんNGNG
しらない単語が並んでるので、ポエムにしか見えなかった、に50VCL
0463デフォルトの名無しさんNGNG
こんな風に何回も連続で書き込むほどキレるようなことかなぁ・・・(^^;
0464デフォルトの名無しさんNGNG
>>453
ありがとうございます。
テーブルデザインを直接変更することはできないんですね(´・ω・`)
仕方ないのでもう一つ新しいテーブル作ってBatchMoveでコピーしたら
今度はフィールド名が正しく設定されないし・・・。
フィールド名の最後の文字が"_(アンダーバー)"になってしまうのはなんなんでしょ?
ちなみに14個フィールドを追加したうちの2個がそうなってしまいました。
0465456NGNG
>>454
455とケコーンしてしまったわけだが。
要は、COMコンポーネントとしてADOがあるから、それを使えってこと。

BCB9が出るかどうかまだ判らんし、素直にProを使え。
特に、業務であるならばその工数分はペイできるはずだから、上司と相談しろ。


>>455,457-460
正直、すまんかった。逝ってくる 
 ∧||∧  
(  ⌒ ヽ 
 ∪  ノ 
  ∪∪  
0466455NGNG
>>463
おれは連続して書き込んではないけど、被害妄想にとりつかれたら、自分に対する意見はすべて同じ人物からに見えるものだな。
もう一回だけ書いといてやるけど、COMでAccess操作するくらいなら、データベース操作用に抽象化されたADOでやったほうがいい。
でも、ADOを生で使うのは、それなりに面倒なので、覚悟したほうがいい。
出るか出ないかわからないBCB9を待つよりはPro買え。
それにAccessは大量データを扱うのには向いてないから、せめてMSDEでやれ。

もちろんCOMでやってもいいけど、ADOがやってくれてる部分も自分で書かないといけないから、勧めない。

ここまで書いてやってもポエムとかほざくようなら、一回死んで次に生まれたときにバカが治ってることを祈った方がいい。
0467デフォルトの名無しさんNGNG
>>466
> 被害妄想にとりつかれたら、自分に対する意見はすべて同じ人物からに見えるものだな。
そこまで自分のことがわかっているなら、ちゃんと反省しましょうね(^^;
0468455NGNG
>>465
やはりケコーン
0469デフォルトの名無しさんNGNG
みんな親切だなぁ・・・。
全然通じてないみたいだけど(苦笑
0470デフォルトの名無しさんNGNG
>>467
>そこまで自分のことがわかっているなら、ちゃんと反省しましょうね(^^;
反省だと?
ここまで人々が様々なアドバイスをして、それがすべてあなたの反応に起因している
のにまだ気づかないのか?
反省すべきはあなたの態度じゃないのか?

>>465-466
お疲れ。あんたが逝くこたぁないよ。
0471デフォルトの名無しさんNGNG
>>470
気持ちはわかるけど、そろそろスルーしようぜ。
0472470NGNG
>>471
すまない。熱くなってしまった。大変申し訳ない。
0473デフォルトの名無しさんNGNG
この人、最後まで被害妄想にとりつかれて相手を同一人物扱いしたままだったね(^^;
0474デフォルトの名無しさんNGNG
>>467のことね。
0475456NGNG
>>470
tnx
荒れ気味になってしまった要因は俺にもあったから、お詫びに一個話題を振ってみる。

BCBのパッケージに付いてくるCompanion Toolsにあるいくつかのコンポーネントってどうよ。
LMD-Toolsは前から使っていて重宝しているけど、他のはどう?
取りあえず、TMS Grid PackとABC for Delphiはインストールしたけど、こいつらを使ったことがある奴いる?

TurboPowerのやつもインストールしたから、俺のコンポーネントパレットはタブがすごいことになっている。(w
0476デフォルトの名無しさんNGNG
アクセスあるなら、アクセスで簡単にできるだろ。
SQLなんて一週間もあれば余裕で理解できるから、SQL憶えることだな。
0477470NGNG
>>475
いまだにDelphi5.0なので微妙に異なるが、
TMSは3年以上使っているけど、マジにお勧め。Gridもさることながら、
附属のコントロールは非常に重宝している。正式版購入した方がいいかもよ。

>TurboPowerのやつもインストールしたから、俺のコンポーネントパレットはタブがすごいことになっている。(w
自分Delのタブの数数えてみたら60くらいあった。ほとんど中毒症状だわ…。
0478464NGNG
なんかタイミング悪いときにきちゃったみたい(´・ω・`)
0479デフォルトの名無しさんNGNG
なんか板違いな質問のようで恐縮なんですが…

MS Excelでいうところの「INT」と同じ機能な、一発で値を返してくれる関数ってないでしょうか?
『INT:数値を超えない最大の整数を返す。例:INT(8.9) = 8』
0480デフォルトの名無しさんNGNG
>>479
static_cast<int>(std::floor(8.9))
ではどう?
0481デフォルトの名無しさんNGNG
(int)8.9 じゃダメなの?
0482デフォルトの名無しさんNGNG
>>481
負の値の時の動作が未定義
0483デフォルトの名無しさんNGNG
>>479
それって
int(8.9); // = 8
でいいんじゃないの?
0484141NGNG
>>478
BDE-API 使え
理解するのに苦労するが
0485デフォルトの名無しさんNGNG
>>483
それも、負だと未定義。
floor関数でいいじゃん。
0486479NGNG
>>480-485
考えてみたらBCBじゃなくてC++な質問でした。
板違いな質問にご回答頂きありがとうございました。
0487デフォルトの名無しさんNGNG
すいません。BCB6+SP4を使っています。
エディタについて質問させて下さい。

普通のエディタだと、選択してdelを押せばその文字は全部消せますよね。
BCBのエディタでは、それが消せないように思うんですが、なんとかなるもんなんでしょうか?

なんか使いにくくて(泣)
0488デフォルトの名無しさんNGNG
>>487
うちのBCB5は消えてくれるが
0489デフォルトの名無しさんNGNG
>>487
うちのBCB6+SP4も消えてくれるが
0490487NGNG
>>488-489
えーっ! なにがイカンのだろう……?
エディタ設定でなんかなるんですかね(泣)
0491デフォルトの名無しさんNGNG
>>487
普通は >>488-489 のように消せる筈ですが、僕のBCB6+SP4もたまに >>487のようになります。
選択した状態でdelキー押しても、選択していないときと同じ動作をします(よね?)。
コレはBCB5の頃からです。僕はマシンを再起動すれば直りますが、それでも直らなければ
BCB或いはOSの再インストールか、はたまたメモリが不良品か。
0492487NGNG
>>491
そうですね。del1コ分の動作をします。

あいうえお
かきくけこ
さしすせそ

を、「あ→そ」の順で選択してdelを押すと、「あ」だけ消えます。

……で、今やってみたら治りました(なんでだ(泣))

>>3のフリーカーソル無効化アドインをさっき入れたんですが、
そのためでしょうか。

なんにしても、>>488 >>489 >>491さん、ありがとうございました。
0493デフォルトの名無しさんNGNG
TFormにTMainMenuなどを貼り付けると、ビジュアルコンポーネントを貼り付けられるFormの範囲が狭まりますよね?
その場合の有効範囲(と言うべき?)の取得はどうすればいいのでしょうか?
0494493NGNG
自己解決しました。
ClientWidth/ClientHeightでした。
お騒がせしました。
0495デフォルトの名無しさんNGNG
数値を123,456,789みたいにカンマで区切って文字にする方法を教えてください
0496デフォルトの名無しさんNGNG
FloatToStrF(123456789, ffNumber, 15, 0);
0497デフォルトの名無しさんNGNG
普通は、FormatFloat 使うだろ。

FormatFloat( "###,###,###", 123456789);

0498デフォルトの名無しさんNGNG
別にどっちが普通ってこたないと思うが…
0499デフォルトの名無しさんNGNG
RS232C通信をするとき、皆さんはどうしているんですか。
市販とかフリーのコンポーネントを使ってますか。
それとも自分でラップクラスかコンポーネントを作りましたか。
もしくは、APIを直接使ったりしてますか。
0500デフォルトの名無しさんNGNG
>>499
http://sourceforge.net/projects/comport/
0501464NGNG
う〜ん、うまくいかない・・・(´・ω・`)
BDE使うとすると作成したプログラムはどこでも実行できなくなっちゃいますよね?
で、結局考えたのが

項目を追加した新しいテーブルを作成→元のテーブルからデータをコピー→
元のテーブル削除→新しいテーブルの名称を元のテーブル名に変更

って具合にとりあえず作ってみたんだけど次の問題が・・・

1,データ型に「オートナンバー」をうまく設定できない(ftAutoIncでもダメでした)。
2,フィールド名の最後の文字が「_(アンダーバー)」になってしまうものがある。

なんかものすごい単純なことかもしれない気がするんだけど・・・
みなさんのお力をお貸しください。
0502デフォルトの名無しさんNGNG
HTMLから呼び出して使用するActiveフォームを作成しようとしています。
ActiveXの動作を動的に変更したいため
HTML内に<param>を設定してパラメータを引き渡したいのですが
BCB側で取得する方法が分かりません。
どなたかご説明いただけないでしょうか。
また、解説などされているページををご存知ならお教え下さい。
よろしくお願いいたします。
0503デフォルトの名無しさんNGNG
HTMLから呼び出して使用するActiveフォームを作成しようとしています。
ActiveXの動作を動的に変更したいため
HTML内に<param>を設定してパラメータを引き渡したいのですが
BCB側で取得する方法が分かりません。
どなたかご説明いただけないでしょうか。
また、解説などされているページををご存知ならお教え下さい。
よろしくお願いいたします。
0504デフォルトの名無しさんNGNG
HTMLから呼び出して使用するActiveフォームを作成しようとしています。
ActiveXの動作を動的に変更したいため
HTML内に<param>を設定してパラメータを引き渡したいのですが
BCB側で取得する方法が分かりません。
どなたかご説明いただけないでしょうか。
また、解説などされているページををご存知ならお教え下さい。
よろしくお願いいたします。
0505デフォルトの名無しさんNGNG
困ってるのは解ったから4個目は書くな。
0506デフォルトの名無しさんNGNG
質問でーす。
ブラウザのドキュメントを動的に操作する方法がわかりません。
例えば以下のように、メモリ上に確保したストリームからデータを食わせようと思っても
hr = pPersistStreamInit->InitNew(); の部分で例外が発生してしまいます。
もうダメダー(><)

DHTMLvoid LoadHTMLFromStream(TCppWebBrowser* pBrowser,IStream* pStream)
{
HRESULT hr;
IPersistStreamInit* pPersistStreamInit = NULL;

_di_IDispatch doc=pBrowser->Document;
hr = doc->QueryInterface( IID_IPersistStreamInit, (void**)&pPersistStreamInit );
hr = pPersistStreamInit->InitNew();
hr = pPersistStreamInit->Load( pStream );
pPersistStreamInit->Release();
}
0507デフォルトの名無しさんNGNG
Web上の操作を自動化するソフトをつくりたいのですがどうしたらいいでしょうか?

例えば、Googleを開いて、検索キーワードを自動で入力し、検索ボタンまで押してしまうような
アプリケーションが作りたいです。
(似たソフトで懸賞サイトで住所などの入力を自動化するソフトがありました。このようにフォームやパスワードを
自動で入力するソフトを作りたいのです)

IEにキーボード入力の信号をだまして送るようなことは可能ですか?
0508デフォルトの名無しさんNGNG
可能です。
0509デフォルトの名無しさんNGNG
>>508
どうしたらいいのでしょうか?っていう質問にはちゃんと答えてあげたら?

IEなんかあてにしなくても、HTTPでやりとりしてやればいい。
上のほうのレスをみると、結局IEで用意されてるコンポーネントを使うのが楽なのかもしれんが。
0510デフォルトの名無しさんNGNG
>>506
InitNewのところで駄目ってことはDocumentが空っていうオチではないよねぇ。
うちの環境だと同じようなソースで問題なく出来てるけどね。
0511デフォルトの名無しさんNGNG
>>509
ありがとうございます。Pro版にあるWebBrowserコンポーネントのことですね。
たしかにそのほうが結局簡単かもしれません。調べてみます
0512506NGNG
>>510
いえ、この関数を呼ぶ前に、きちんと”about:blank”にナビゲーております。
で、DocumentComleteイベント内でCreateStreamOnHGlobalを使ってストリームを作成し、それに文字列をセットした後で
件の関数を呼んでいるのですが・・・

DHTMLを操作するためのDLLが組み込まれていないとかが原因かなぁDTL
0513デフォルトの名無しさんNGNG
ナビゲーる。って初めて聞いた
0514デフォルトの名無しさんNGNG
頭悪そう
0515デフォルトの名無しさんNGNG
キーダウンイベント時に”ポーン”と音がしてしまいます。
回避する方法はあるのでしょうか?
0516デフォルトの名無しさんNGNG
スピーカーを窓からなげすてる。
0517デフォルトの名無しさんNGNG
>>516
窓からスピーカーを投げ捨てたわけではないですが、
解決しますた。
0518デフォルトの名無しさんNGNG
スピーカーの為にも解決方法は書くべし。
0519デフォルトの名無しさんNGNG
>>518
Enterを入力した場合、改行できませんよと知らせてくれている
らしいので処理の最後に

Key = 0;

と付け加えると回避できます。
0520デフォルトの名無しさんNGNG
おまいら1日何時間C++Builderしてるんだ?
0521デフォルトの名無しさんNGNG
>>520
24時間
0522デフォルトの名無しさんNGNG
>>521
少なすぎ
0523デフォルトの名無しさんNGNG
んこしながらC++Builderかよ
0524デフォルトの名無しさんNGNG
Buttonを10個ぐらい並べておいて、全てのボタンのブロパティを
簡単に変える方法はありますでしょうか?
0525デフォルトの名無しさんNGNG
>>524
オブジェクトのポインタをTButton*[]でもTListでもstd::vector<TButton*>どれでもいいから配列につっこんどけ
0526デフォルトの名無しさんNGNG
BCBはアマチュアプログラマーで使ってる人は多いと思うのだけど
プロで業務アプリを開発してる人っておるの?
0527デフォルトの名無しさんNGNG
>>526
テストツールはほぼC++Builderだな。
0528デフォルトの名無しさんNGNG
>>526
業務アプリというか製造装置や検査装置に組込んで使ってる。
昔手伝っていたメーカーはNTにVC++で作ってたけどね
自社製品はBCBのほうが慣れてるし。
0529デフォルトの名無しさんNGNG
業務アプリはVC++がデファクトスタンダードだろ?
0530デフォルトの名無しさんNGNG
インターフェイスは作らんだろ
デファクトっちゅったらVBじゃね?
0531デフォルトの名無しさんNGNG
>>524
例えばPanel1上に貼ったTButtonのプロパティを一斉に変えたいとき
for (int i(0), j(Panel1->ControlCount); i < j; ++i) {
TButton* buttonp(dynamic_cast<TButton*>(Panel1->Controls[i]));
if (buttonp)
buttonp->Caption = "Changed.";
}
0532デフォルトの名無しさんNGNG
>>526
以前いた会社では、POS用のアプリをBCBで作っていた
画面の調整がしやすい&DBの扱いが楽で(゚д゚)ウマー
0533デフォルトの名無しさんNGNG
>>531
ちと整理する。勝手してスマン。

for ( int i=0; i<Panel1->ControlCount; ++i )
 if ( TButton* buttonp = dynamic_cast<TButton*>(Panel1->Controls[i]) )
  buttonp->Caption = "Changed.";
0534デフォルトの名無しさんNGNG
j(Panel1->ControlCount); i < j

の部分はそのままで良いんじゃないか?
些細な事だが、ループの度に Panel1 のメンバにアクセスするよりはローカル変数の方が早いだろ。
0535デフォルトの名無しさんNGNG
525のTButton*[]を使うのが普通だと思ってたけど、どうなんだろね。
因みに、TButtonの名前を
Button1,2,3,.....10と連番になる様にしておくと、↓の様な方法でも変更出来ますね。
for (int i=1; i<11; i++) {
dynamic_cast<TButton*>(FindComponent("Button" + IntToStr(i)))->Caption = "Changed.";
}
0536533NGNG
>>535
Delphi育ちの人はControls[]を使う傾向にあるようだな。
素からC++の人は配列やらstd::vectorやらを使いたがる。おれもだけど。
そもそもdynamic_castはできるだけ避けるってのが染み付いてるわけで。

>>534
最適化してくんないかな?
0537141NGNG
>dynamic_castはできるだけ避ける
なんか理由あるの?
0538デフォルトの名無しさんNGNG
>>537
例外でるでそ。コンパイル時の型保証ができないでそ。
0539141NGNG
そうか。
「できるだけ」って書いてあったね。
0540デフォルトの名無しさんNGNG
>>536
偉そうな事言ったけど C++ & プログラム 暦 1 年の俺には無理だ。
ここから最適化出来るなら俺も知りたいな。
ループの最適化なんてスレ違いだろうけどさ。
0541531NGNG
>>533
気になさらずに。みんなでより良いサンプルを作ろう。
>>534
仰る通り。その意図です。
>>535
確かに可能な方法だが、文字列を使う方法ってなんか遅い気がして。
それに、コンポーネントの名前に依存しない方が後々いい気がする。

エラそーにスマソ
0542デフォルトの名無しさんNGNG
gifファイルを読み取るのはどうしたらいいでしょうか?
Delphiではコンポーネントが存在するようですが、Builderではみつけられませんでした。
0543デフォルトの名無しさんNGNG
542です。susieを呼び出すサンプルを見つけて解決しました。
0544デフォルトの名無しさんNGNG
先日誤って3回も投稿してしまいましたが
問題が解決しないので再度投稿させていただきます^^;

HTMLから呼び出して使用するActiveフォームを作成しようとしています。
ActiveXの動作を動的に変更したいため
HTML内に<param>を設定してパラメータを引き渡したいのですが
BCB側で取得する方法が分かりません。
どなたかご説明いただけないでしょうか。
また、解説などされているページををご存知ならお教え下さい。
よろしくお願いいたします。
0545デフォルトの名無しさんNGNG
それくらいなら手っ取り早く自分で構文解析。
htmlの文法あやまりが無いと仮定してもよければ
HTMLのソースを直接探索して<PARAM>みつければ良いかと。
■ このスレッドは過去ログ倉庫に格納されています