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

C++Builder相談室 Part12

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
C++Builderに関する質問・回答や議論等を行う相談室スレッド。

過去スレ・関連サイトは>>2-6あたり。
0611デフォルトの名無しさんNGNG
マウスジェスチャー機能
0612デフォルトの名無しさんNGNG
A little demo application that shows how to easily implement mouse gestures (as seen in Opera) in Delphi or BCB forms. Please have a look at the supplied source code. [more]
Mouse gesture demo application with two gestures implemented.
http://delphi.icm.edu.pl/newl/c50/f005_001.htm
0613608NGNG
>>609
自分もそう思います。

>>610
スマソ、とりあえず bpr の中の PACKAGES でわかりますか?
<PACKAGES value="vcl.bpi rtl.bpi vclx.bpi bcbsmp.bpi vcldb.bpi dbrtl.bpi bdertl.bpi
qrpt.bpi vclie.bpi xmlrtl.bpi inet.bpi inetdbbde.bpi inetdbxpress.bpi
nmfast.bpi soaprtl.bpi dsnap.bpi dclocx.bpi indy.bpi ibxpress.bpi
visualclx.bpi visualdbclx.bpi dsnapcrba.bpi dsnapcon.bpi bcbie.bpi
dbexpress.bpi adortl.bpi vcldbx.bpi cds.bpi bdecds.bpi teeui.bpi teedb.bpi
tee.bpi teeqr.bpi inetdb.bpi dbxcds.bpi bcb2kaxserver.bpi"/>
0614デフォルトの名無しさんNGNG
>>613
適当なパッケージ名でググったらこんなの見つけた
http://www.moriq.com/delphi/5to6.html
dsnap系はEnterpriseだけかも
0615608NGNG
>>614
サンクス。dsnap パッケージ でぐぐったら
ttp://www.tama.or.jp/~y.ohm/memo/delpkg.shtml
が、おかげで見つけました。
Delphi ですが BCB と同じですよね? とすると、Ent版・・・

どうも、ありがとうございました。
0616デフォルトの名無しさんNGNG
604です。すれ違い失礼しました。
>605無事コンパイル出来ました。ありがとうございました。
0617デフォルトの名無しさんNGNG
BCB6 ProfessionalでHTMLパーサのような機能を持つライブラリはありますか?
0618デフォルトの名無しさんNGNG
ない
0619デフォルトの名無しさんNGNG
自分で作るか外部調達になるんですね。
売ってるから買ってもいいや。
ttp://www.cooldev.com/
0620デフォルトの名無しさんNGNG
>>617
どう使うか判らないけど、libxmlはHTMLのパースが出来るよ。
ttp://xmlsoft.org/html/libxml-HTMLparser.html

BCBでの使い方は過去ログに載っている。
DAT落ちしているから、googleのキャッシュを参照。
ttp://www.google.co.jp/search?hl=ja&q=libxml+bcb+site%3A2ch.net&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
0621デフォルトの名無しさんNGNG
最近のC++Builder系のMLやスレは
何でこんなにつまらん質問ばかり飛んでるの?
仕事系の質問なんてしてんじゃねーよ。
0622デフォルトの名無しさんNGNG
libxmlやらxercesの話が出てきただけで仕事系か(wwwwwwww
0623デフォルトの名無しさんNGNG
つーか「仕事系」ねぇw
0624デフォルトの名無しさんNGNG
木じゃなくて森的な意見なんだけど。
例えば個人でデータベースとか使ってんの?
使ってるとしてそのデータベースにはどれほどのデータが蓄積されてんの?
しかも作ったプログラムまともに使ってんの?
0625デフォルトの名無しさんNGNG
なんか必死すぎて笑える
0626デフォルトの名無しさんNGNG
俺はC++Builder相談室の行く末を案(ry

なんか625は軽すぎてむかつく
0627デフォルトの名無しさんNGNG
自分にわからん質問はつまらん質問なんだろうな
0628デフォルトの名無しさんNGNG
200万の画像を各種条件で検索・表示できるエロ画像データベースは数年使ってた
けど、ダメですか?
バックアップを取ってなかったから画像ファイルがHDDごとあぼーんしたけど、
DBファイルだけは残ってる。
0629デフォルトの名無しさんNGNG
DBはデジカメ画像を整理するようなプログラムを作ろうと思うと使いたくなるな
0630デフォルトの名無しさんNGNG
>>620
サンクス。色々試してみます。
0631デフォルトの名無しさんNGNG
>>628
画像はBLOBに入れてなかったの?
0632デフォルトの名無しさんNGNG
>>631
DBにはパス突っ込んでおいたほうが色々使いやすいんじゃないか?エロ画像なら。
0633デフォルトの名無しさんNGNG
>>631-632
BLOB使うと遅くなる(と聞いた)とか、でかいファイルはバックアップが手軽にできない
とか、そういう理由で画像はファイルのままだった。
標準のDBコンポ・IBXとか、Susieプラグインとか、色々と勉強になったよ。
0634デフォルトの名無しさんNGNG
ちょっとお尋ねします。
BCBのProfessionalのIDEには
ネームスペースからの補完機能はあるんですか?
0635デフォルトの名無しさんNGNG
>>634
有
0636デフォルトの名無しさんNGNG
>>634
自動補完機能を無効にするのがBCBユーザーの嗜みです。



つーか重すぎ‥‥
0637デフォルトの名無しさんNGNG
>>636
BCB6がリリースされたころはそう思ってたけど、
CPUが2GHz超えたころから気にならなくなったな。
0638デフォルトの名無しさんNGNG
 
0639デフォルトの名無しさんNGNG
      
0640デフォルトの名無しさんNGNG
質問します。BCB6 Proです。
クリップボードの内容を一時的に別メモリに退避させたいと考えています。

TClipboardのAsTextプロパティによってテキスト形式のみ退避させる場合は出来たのですが、
クリップボードの内容がどのようなフォーマットが混在してても、
丸々退避させる方法をどなたかご存知無いでしょうか。
0641デフォルトの名無しさんNGNG
別メモリって意味がよくわからん。
USBメモリとか?
0642640NGNG
あ、すいません。

メモリ上の別の領域にという事です。
0643デフォルトの名無しさんNGNG
TClipboard->Assign()じゃダメ?
0644640NGNG
うーむ、Assignメソッドだと画像のみの取り扱いになってしまいます。
如何なるデータがClipboardに収められてても大丈夫な方法は無いですかね。
0645デフォルトの名無しさんNGNG
次のような自動アップデート機能を実装したいのですが、
サンプルソースが載ってるHPはないでしょうか?
�@HTTPを利用し、新しいバージョンが公開されているかどうかを確認。
�A新しいバージョンがある場合は、アプリが実行してないかを確認して、
動いているようなら停止する。
�Bインストールフォルダ箇所を取得して、
新しいバージョンをダウンロード。
以上でアップデート完了。
かなり探したのですが.NETで作成するページばかりヒットします…
よろしくお願いします。

0646デフォルトの名無しさんNGNG
>>645
Indyっていうコンポーネントをインスコして
http://forum.nifty.com/fdelphi/samples/01470.html
0647646NGNG
>>646
ご回答ありがとうございます。
IndyってC++Builder6.0で標準実装されている
インターネットコンポーネントですね。
使用方法がよくわからずに、全くつかっていませんでした。
これで何とかできそうな感じです。
あとIndyの使用方法についての良いサイト、書籍などあったら
ご教授願いたいです。
0648デフォルトの名無しさんNGNG
>>647
このスレをIndyで検索
0649647NGNG
>>648
C++Builder以外のリンクを見るの忘れてました。
申し訳ない。
0650646NGNG
ttp://inagi.himitsukichi.com/~aozora/cgi-bin/pukiwiki/pukiwiki.php?Indy9%A4%CE%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB#content_1_0

ここのHPに掲載してあるとおりに最新版に入れかえようとしてみたのですが、
インストール方法のコンポーネントのインストールを選んで、
追加ボタンを押してdclIndy60.bplを追加すると、パレットにIndy系の物が表示される。
の部分がうまくいきません。
旧バージョンは削除してもうまくいかなかったので、
一度ビルダーをすべて消して、再インストールしても
だめでした。
開発環境はC++Builder6のSP4です。
解決方法のご指導よろしくお願いします。
0651646NGNG
バージョンは9.0.17、9.0.15を試しました。
0652デフォルトの名無しさんNGNG
>>650
($BCB)\binにBCB6標準のdclIndy60.bplが残ってたりしないか?
0653650NGNG
652>>作業工程で、BinフォルダにdclIndy60.bplをコピーする項目が
あるので、Indyのファイルからコピーしています。
最初の時点では同名ファイルはありませんでした。

コンポーネントのインストールで、追加ボタンを押してdclIndy60.bplを追加する
という部分で、エラーがでます。
エラーメッセージは【(dclIndy60.bpl)ファイルが見つかりません】
ファイルの規定値が拡張子がbpkとなっているのですが、bplファイルでいいのでしょうか?
一応bpkの拡張子がないか検索をかけてみたのですが、見当たりませんでした。
0654650NGNG
解決しました。
コンポーネントのインストールじゃなく、
パッケージのインストールだったのですね・・・
ありがとうございました。
0655デフォルトの名無しさんNGNG
BDEを使用しているDBアプリをC/S型に変更することになりました。
予算もなく、C/S型DBアプリを作成するのも初めてです。
手間をかけずに変更したいのですがどうすればいいのでしょうか?

今のところ下記の手順で考えています。
1.Firebird をインストールし、現行DBからデータを移行。
2.現行プログラム内の BDE 系コンポーネントを InterBase 系に置き換えて、
  とりあえず動く用にする。
3.実際に動かしてパフォーマンスに問題が出たところから、ストアドプロシージャなどに
 置き換えたりしてチューンしていく。

PostgreSQL も考えたんですが、PQCompo が TDataSet を継承していないので、
変更箇所が多くなりそうな感じです。

って感じで考えてますが、もっとおすすめの方法とか、参考になりそうなサイト
とかあったら教えていただけないでしょうか?

ちなみにアプリはありがちな見積・納品・請求管理アプリで、OS は
クライアント・サーバー・開発環境とも Windows XP SP2 で、 BCB6 で
開発する予定です。

よろしくお願いします。
0656デフォルトの名無しさんNGNG
>>650
名前間違ってるぞ
0657デフォルトの名無しさんNGNG
dllのソースをネットから拾ってきたのですが
コンパイル・リンクの方法教えてくれませんか?
Borland初めてなもので・・・

ソース
test.cpp test.def

リンクする標準ライブラリ
user32.lib kernel32.lib
0658デフォルトの名無しさんNGNG
http://www.borland.co.jp/qanda/cbuilder/index.html
0659デフォルトの名無しさんNGNG
a.まずオブジェクトファイルを作成する
bcc32 -c foo.c
b.次にそれをDLL形式でリンクする(カッコ部分はdefファイルを作成した場合だけ書く)
bcc32 -WD -e foo.dll foo.obj (foo.def)
c.必要であればライブラリファイル(.lib)を作成する.
implib foo.lib foo.dll
0660デフォルトの名無しさんNGNG
文字認識されている数字なんですけど,
不動小数点の桁数をそろえる方法は無いでしょうか?
StrToFloatと何か組み合わせればいけるでしょうか?
お願いします!
0661デフォルトの名無しさんNGNG
Indyを使用した場合、htmlソースの取得は下記の処理でできるのですが、
バイナリファイルの取得はどうやったらいいのでしょうか?
Memo1->Text = IdHttp1.Get('http://www.2ch.net');
よろしくお願いします。
0662デフォルトの名無しさんNGNG
>>660
printf("%9.2f\n", x);
...654.32小数点を入れて 9桁(小数点以下 2桁)
0663デフォルトの名無しさんNGNG
>>661
String SBuf = IdHttp1.Get('http://www.2ch.net'); //Stringにバイナリデータ取得
0664デフォルトの名無しさんNGNG
>>663
このように、
String SBuf = IdHttp1.Get(http://sample.lzh);
でデータを受信してlzhファイルを作成したい場合は、
どうすればいいのでしょうか?
File関数を使うのかと思い色々やってみたのですが、うまくいかなくて。
レベルの低い質問ばかりで申し訳ない…
0665デフォルトの名無しさんNGNG
>>664
>>646
圧縮するには別途圧縮用ライブラリが必要
0666デフォルトの名無しさんNGNG
>>665
例えば受信データがexeなら、それを実体化するにも対応したライブラリ
が別途必要になるということでしょうか??
0667デフォルトの名無しさんNGNG
>>666
あ、ごめん
lzhファイルをダウンロードしているんだったらそのまま保存するだけでOK orz
0668デフォルトの名無しさんNGNG
>>667
私の質問が悪かったです。申し訳ない。
うまくいかないのは、
String SBuf に格納されたものを、指定フォルダに保存する方法です。
0669デフォルトの名無しさんNGNG
>>668
>>646みたいにTFileStream使ったら?
0670デフォルトの名無しさんNGNG
>>669
この方法でできました。
ありがとうございました。

TFileStream *filestream;
AnsiString as_fname;
as_fname = "C:\sample.lzh";
filestream = new TFileStream(as_fname,fmCreate);
IdHTTP1->Get("http://www.sample.lzh",filestream);
// ファイルを閉じる
delete filestream;
filestream = NULL;
0671デフォルトの名無しさんNGNG
Win32APIのヘルプってどこに入ってたっけ??
0672デフォルトの名無しさんNGNG
>>671
・http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
・Borland Shared\MSHelp
あとCDのどこかに日本語ヘルプが転がってる。

鮮度はPSDK>>>越えられない壁>>>付属英語ヘルプ>>付属日本語ヘルプ
0673デフォルトの名無しさんNGNG
いやCDに入ってる日本語ヘルプの場所を聞いてたんだがー
まあもうみつかったからいいけどな
0674デフォルトの名無しさんNGNG
CppWebBrowserで画像のURLを直接入力し、表示することはできました。
このPNG画像をBMPの形式でImageに変換するにはどうしたらいいのでしょうか?
画像を使用(加工)する許可はいただいています。

WideString w = WideString(Edit1->Text);
CppWebBrowser1->Navigate(w);

このようなプログラムです。
0675デフォルトの名無しさんNGNG
GLDPNGとか
0676デフォルトの名無しさんNGNG
CppWebBrowser使うんだったらCOM制御か?
0677デフォルトの名無しさんNGNG
BCB6Proを使っています。

CPU使用率を計測するプロを作ろうとしたんですが、

  PdhOpenQuery(NULL, 0, &hQuery);

としたところ、

[C++ エラー] Unit1.cpp(27): E2015 '__stdcall PdhOpenQueryA(const char *,unsigned long,void * *)' と 'PdhOpenQueryA(void *,unsigned long,void * *)' の区別が曖昧

と出ました。
ヘッダファイルの中の定義の部分でもうこうなっちゃってると思うんですが、
なんとかこれを回避する方法はないものでしょうか?
0678デフォルトの名無しさんNGNG
プロ?
これでも使ってみれば
http://www.aldyn.ru/products/cpu_usage/

CollectCPUData; //CPU使用率取得
begin
for i:=0 to GetCPUCount-1 do //マルチプロセッサならその数ループ
MInfo.Lines[i]:=Format('CPU #%d - %5.2f%%',[i,GetCPUUsage(i)*100]); //GetCPUUsage(CPU_NO)が使用率
end
0679デフォルトの名無しさんNGNG
同じBCB6Proだけどエラーはでないな
0680デフォルトの名無しさんNGNG
BCB5でもやってみたけどエラー出なかった
#include <pdh.h>してる?
0681677NGNG
#include <pdh.h> と

PDH_STATUS PdhOpenQuery(
IN LPVOID Reserved,
IN DWORD UserData,
IN HQUERY *hQuery);

は記述しています。
両方とも.hに記述してますが、いいんですよね?

>>678は今DLしましたんで、中身を見てみます。ありがとうございました。
0682デフォルトの名無しさんNGNG
その部分のソースを

HQUERY hQuery;
HCOUNTER hCounter;
PDH_FMT_COUNTERVALUE FmtValue;

PdhOpenQuery(NULL, 0, &hQuery);
PdhAddCounter(hQuery, "\\Process(notepad#0)\\% Processor Time", 0, &hCounter);

Memo->Lines->Add("計測開始...\n");
PdhCollectQueryData(hQuery);

Sleep(10000); /* 十秒間待つ */

PdhCollectQueryData(hQuery);
Memo->Lines->Add("計測終了...\n");

PdhGetFormattedCounterValue(hCounter, PDH_FMT_DOUBLE, NULL, &FmtValue);
Memo->Lines->Add(FmtValue.doubleValue);

PdhCloseQuery(hQuery);

以上です。
フォームにはボタンとメモを貼ってあります。
あと、.hに追加したのは>>681の通りです。
0683デフォルトの名無しさんNGNG
>>681
>PDH_STATUS PdhOpenQuery(
>IN LPVOID Reserved,
>IN DWORD UserData,
>IN HQUERY *hQuery);
これイラネ
0684デフォルトの名無しさんNGNG
>>683
なんてこったい……(泣

ありがとうございました。
やったらできました。ほんとすいません。
0685デフォルトの名無しさん05/01/17 10:29:18
実行時パッケージのチェックをはずして
CordGuardにチェック入れてると
プログラムが正常に終了しないんですがなぜ?
0686age05/01/17 11:27:55
>>685
これのこと?
http://www.sfdata.jp/cbuilder/htdocs/msg26618.html
http://www.sfdata.jp/cbuilder/htdocs/msg26619.html
http://www.sfdata.jp/cbuilder/htdocs/msg26620.html
0687デフォルトの名無しさん05/01/17 11:29:43
メインプログラムを終了して、
DLLだけ動かすというのは可能でしょうか?
0688デフォルトの名無しさん05/01/17 11:37:39
>>687
不可能じゃない?
いや、WinMainループを持ったDLLをCreateProcessしたら・・・なんつって
068968505/01/17 11:50:31
BCB6ProユーザーはUpdate#4は入れないのが常識なのでしょうか?
0690デフォルトの名無しさん05/01/17 11:55:02
>>688
やはり無理ですか。
メインプログラムのexeを新しいものに差し替えたい場合は、
別プログラムを呼び出してから、メインプログラムを終了して、
別プログラムでメインプログラムのexeを差し替えて、
別プログラムでメインプログラムを起動みたいな
感じでやればいいのでしょうか?
わかりにくい文章で申し訳ない…
0691デフォルトの名無しさん05/01/17 13:42:56
>>690
上の自動Updateのことかな?
私の知っている自動Uploadが付いているアプリケーションはUpdate専用のexeがあるね
TabfolderっていうのとLilithっていうサウンドプレイヤー
0692デフォルトの名無しさん05/01/17 13:58:18
691>>上の自動Updateのことです。
ご紹介いただいたアプリを落として、動きを見てみたのですが、
Update専用のexe使ってやるのが、割と簡単みたいですね。
このアプリと同じような動きするように作ってみます。
ありがとうございました。


0693デフォルトの名無しさん05/01/17 14:13:15
TComboBoxってフォントのサイズや種類によって高さが変わるのですが、TPanelとか他のコントロールみたいに
フォントが変わっても高さが変わらないようにする方法を教えてください
0694デフォルトの名無しさん05/01/18 00:58:30
>>693
ComboBoxのハンドルをGetDCをちゅかってDCを取得
で、TCanvasを生成してそのハンドルに取得したDCを設定。
後はCanvasに直接描画。
たぶんこれで変わらんと思う。
しらんけど。
0695デフォルトの名無しさん05/01/18 13:36:15
左側に「履歴」「デスクトップ」「マイコンピュータ」「マイネットワーク」が表示されるタイプのファイル選択ダイアログを表示する方法を教えてください。
0696デフォルトの名無しさん05/01/18 13:39:33
>>694
んなことするならオーナードローするわぼけが!!
0697デフォルトの名無しさん05/01/18 14:02:12
>>695
http://www3.big.or.jp/~schaft/program/getopenf/getopenfC.html
0698デフォルトの名無しさん05/01/18 14:51:12
>>695
TOpenDialogとどう違うの?
0699デフォルトの名無しさん05/01/18 14:55:10
>697
さんくすです。できました。
0700デフォルトの名無しさん05/01/18 15:04:56
>698
TOpenDialogでも、左側に「履歴」「デスクトップ」「マイコンピュータ」「マイネットワーク」を表示できるんですか?
0701デフォルトの名無しさん05/01/18 15:11:35
>>697
ダイアログが開かないです(ノД`。)
0702デフォルトの名無しさん05/01/18 15:48:17
>>700
BCB6+W2Kの環境だが、普通にTOpenDialogを貼り付けてOpenDialog1->Executeで
「履歴」「デスクトップ」「マイドキュメント」「マイコンピュータ」「マイネットワーク」が表示されるけど。
TOpenDialog.OptionsEx参照。

「マイドキュメント」が要らないという話ならわからないけど。
0703デフォルトの名無しさん05/01/18 21:05:31
>>703
音声ボリュームの上げ下げは
どのようにすればよいのでしょうか?
0704デフォルトの名無しさん05/01/18 22:09:54
音声のボリュームを上げ下げします。
0705デフォルトの名無しさん05/01/19 00:03:17
>>701
HWNDの引数は

HWND hwnd = NULL;
ofn.hwndOwner = hwnd;
とせずに、そのまま
ofn.hwndOwner = NULL;
とした方がいいかも
0706デフォルトの名無しさん05/01/19 09:04:15
>>703

オーディオのコントロール

ビデオだけではなく音も流さなければなりません、IBasicControl インターフェイスは Volume と Balance のプロパティをサポー トします。このアプリケーションではスライダ コントロール slVolume からボリュームをコントロールします。

Private Sub slVolume_Change()
' スライダの値をボリュームにセット
If Not g_objMediaControl Is Nothing Then
On Error Resume Next ' オーディオのない場合
g_objBasicAudio.Volume = slVolume.Value
End If
End Sub
0707デフォルトの名無しさん05/01/19 09:06:42
DirectMusicの音量調節(MIDI) しゅう さん 2004年12月29日(水)

MIDIファイルをDirectMusic(DirectX9)で再生しているのですが・・・その音量調節ができな くて困っています。
いろいろと調べてやってはみたものの・・・処理は成功するけど音量は変わってない・・・とい う現象です。
SetGlobalParamによる設定は下記の通りにやってみました。
アドバイスよろしくお願いします。

VC++.Net:DirectX9(Oct)

<参考ソース>
hr = CoCreateInstance(CLSID_DirectMusicLoader, NULL,
CLSCTX_INPROC, IID_IDirectMusicLoader8, (void**)&m_pLoader);
//パフォーマンスの作成
hr = CoCreateInstance(CLSID_DirectMusicPerformance, NULL,
CLSCTX_INPROC, IID_IDirectMusicPerformance8, (void**)&m_pPerformance);
//パフォーマンスとシンセサイザーの初期化
hr = m_pPerformance->InitAudio(NULL, NULL, NULL,
DMUS_APATH_SHARED_STEREOPLUSREVERB, 64, DMUS_AUDIOF_ALL, NULL);

long volume = 1000;
hr = m_pPerformance->SetGlobalParam(GUID_PerfMasterVolume, (void*)&volume, sizeof(volume));
0708デフォルトの名無しさん05/01/19 13:01:46
DBRichEditの内容をRichEditにコピーする方法をどなたか教えて下さい。
クリップボード経由では出来ますが、なんだかな〜
よろしくお願いいたします。
0709デフォルトの名無しさん05/01/19 15:21:12
Lines->Assign()じゃだめ?
0710デフォルトの名無しさん05/01/19 17:08:33
RichEdit1->Lines->Assign(DBRichEdit1->Lines);
とするとLinesにアクセスできないとエラーが出ます。
■ このスレッドは過去ログ倉庫に格納されています