トップページ⇒tech
990コメント312KB

C++Builder相談室 Part19

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2008/08/01(金) 16:30:32
C++Builderに関する質問・回答や議論等を行う相談室スレッド。
※2008/07よりCodeGear(Borland IDE/DB部門)はBorlandからEmbarcaderoに移動しました

【前スレ】
C++Builder相談室 Part18
http://pc11.2ch.net/test/read.cgi/tech/1188607282/

過去スレ・関連サイトは>>2-7あたり。

※Borland C++ Compiler 5.5.1についての質問は以下のスレへ
タダで使えるBorland C++ Part5
http://pc11.2ch.net/test/read.cgi/tech/1135127048/
※BDS(Borland Developer Studio)の総合スレはこちら
Borland Developer Studio 2006 No.13
http://pc11.2ch.net/test/read.cgi/tech/1175861395/
※CodeGear(Borland/Embarcadero)関連はこちら
【CodeGear】Embarcaderoオッチャ その10
http://pc11.2ch.net/test/read.cgi/tech/1216250111/

<関連スレ>
くだすれC++Builder(超初心者用)その3
http://pc11.2ch.net/test/read.cgi/tech/1171219191/
[Tips]Borland C++Builder ちょいテク No.01
http://pc11.2ch.net/test/read.cgi/tech/1154580209/
【Delphi】 Indyコンポーネント 【C++Builder】
http://pc8.2ch.net/test/read.cgi/tech/1093654251/
0573デフォルトの名無しさん2009/05/21(木) 15:18:28
>>572
あ、違います・・
何からも発生してないうんこクラスです。。
でも、そこら辺をあれするとできそうですね。
ありがとうございました。
0574デフォルトの名無しさん2009/05/21(木) 15:29:44
>>573
じゃNULLでも渡しておけば?
その自作クラスのデストラクタで確実に delete 出来るようにしておけば問題ないし。
0575デフォルトの名無しさん2009/05/21(木) 15:33:45
TTimerは、WM_TIMERメッセージを受け取って、動作する。
つまり、メッセージループがあるとこを指定してやんないといけない。
だからNULLなんて論外。
独自のクラスでメッセージを受け取れないなら
ダミーのウインドウを作成してそこで受け取るか、メインウインドウでメッセージを受け取るようにするなり
の対応が必要。
0576デフォルトの名無しさん2009/05/21(木) 15:37:33
>>575
実際にやってみてそういっているのか?
0577デフォルトの名無しさん2009/05/21(木) 15:48:35
>>568のうんこですが
Timer1 = new TTimer( Application );
Timer1->OnTimer = Timer1Timer;
で、ざっくり思った通りの動きになりました〜
0578デフォルトの名無しさん2009/05/21(木) 15:51:57
>>575
TTimerはNULL指定しても動作するし。
そもそもTTImerに渡す最下位クラスであるTComponentにはウインドウハンドルないし。
TTimerに渡す引数はオーナーを明示するだけでしかない。
オーナーが削除されたときに安全に、その子コンポーネントを削除するしくみ、それを提供するTComponentクラス。
明示的に削除するのであればオーナーをTComponentの派生にする必要はない。

>>577
あいあい。
0579デフォルトの名無しさん2009/05/26(火) 12:10:04
PDFファイルを指定されたファイル名ごとに、指定された別々の
プリンタに対して出力するプログラムを作ってるんだけど、
PDFをうまく印刷する方法ってないでしょうか?

やりたいい事:
プリンタが複数台有って、ファイル名で印刷するプリンタを
指定して、そのプリンタで印刷を行う。
プリンタはそれぞれ縮小印刷とか、用紙の設定、両面印刷等を
Windowsのドライバで指定してある。
*プリンタはゼロックスのMFP、キャノンのインクジェットプリンタをUSB接続。

試したこと:
MSのOpenPrinterの参考ページを元に、Winに設定されている
プリンタに対してbyte*で読み込んだデータを流してみる。
*プリンタ設定のJob一覧には表示されるけど、出力されず。

TPrinterで、とにかくデータを書いてみる。
*バイナリのデータを直接出力する方法がわからなかった……。

なんとか、お知恵を拝借できないものでしょうか。
0580デフォルトの名無しさん2009/05/26(火) 17:30:01
>>579
PDFを扱うライブラリはあるの?
05815792009/05/26(火) 18:50:19
>>580
まだ、何をどこまでやれるのかを試してる段階で、とにかく
PostScript対応如何にかかわらずどうすればプリンタにデータを
投げられるかを試してる段階で……。
ライブラリに関しても、まだ調査さえしてない段階です。
0582デフォルトの名無しさん2009/05/26(火) 18:56:43
とりあえずPDFを出すならそっちが出来ることが大前提じゃないの?
0583デフォルトの名無しさん2009/05/26(火) 19:17:40
>>581
TPrinterの方しかわからないけど、

Printer()->BeginDoc();
Printer()->Canvas に対して印刷したいドキュメントは描画する。
Printer()->EndDoc();

ってやる。
もちろんBeginDoc();の前にプリンタ関連の各種設定をしておくこと。

0584デフォルトの名無しさん2009/05/26(火) 19:18:24
Printer()->Canvas に対して印刷したいドキュメントを描画する。

↑ね。
0585デフォルトの名無しさん2009/05/26(火) 22:14:38
>>プリンタに対してbyte*で読み込んだデータを流してみる。
この発想は無かったw
0586デフォルトの名無しさん2009/05/26(火) 23:48:21
すごく壮大なことを考えているわけではない、とすると。PDFは何らかのライブラリ類に解釈させて、
プリンタに送る必要がある。ということでPDFを処理できるもの、といったらやっぱりAdobeの製品
(AcrobatやReader)が最初に浮かんでくる。このあたりから攻めるべきじゃないかな。
0587デフォルトの名無しさん2009/05/27(水) 11:43:15
2007でReleaseでコンパイルしても2007がインスコされてないPCで
作ったソフトを起動するとC3280MT.DLLが無いってエラーがでます。
これオプションのどこを設定したら出なくなりますか?
0588デフォルトの名無しさん2009/05/27(水) 11:58:39
>>507
プロジェクト→オプション→動的RTLをfalseにする
0589デフォルトの名無しさん2009/05/27(水) 11:59:24
×>>507
○>>587
05905792009/05/27(水) 12:10:16
>>580他
いろいろありがとう。
スケジュール的にDLLまで調査する時間がなさそうなので、
今回は「通常使うプリンタ」を動的に変更してAcrobatReaderに
頑張ってもらう方向で逃げようと思います。
というか、お客さんにそれで十分じゃね?って言われた……。
0591デフォルトの名無しさん2009/05/27(水) 13:46:34
>>588
あ、ほんとだできたありがとう
これコードガードのあれっぽかたから
そっちばっかりみてますた
0592デフォルトの名無しさん2009/05/27(水) 18:34:12
>>591
なぜ、そう思う?
『Run Time Library』だろ、それ。
0593デフォルトの名無しさん2009/05/27(水) 22:26:53
>>592
ぐぐたらコードガードって出たんだ馬鹿はレスするな
0594デフォルトの名無しさん2009/05/27(水) 23:30:12
ここではスレチなのは分かってるんですがどこへ書き込めばいいか分からなかったので
お許しください。

VC++6.0でのプロジェクトは今のC++Builder無償版でコンパイルできるのでしょうか?
どなたか教えてください。もしくは、誘導お願いします。
0595デフォルトの名無しさん2009/05/27(水) 23:32:52
Turboは知らないけど、6ProはプロジェクトコンバータとMFCはついてる
0596デフォルトの名無しさん2009/05/27(水) 23:41:02
早速のレス、ありがとうございます。
すみません、質問に書き忘れたのですがDLLを作る
プロジェクトなら行けるとかそういうことはありませんか?
新規に購入する資金がなくて。
0597デフォルトの名無しさん2009/05/28(木) 03:50:53
簡単に確認できるんだからやってみればいいだろ。
0598デフォルトの名無しさん2009/05/28(木) 08:15:43
一応TurboC++無料版をダウンロードして入れようとしてたんですけど、
簡単にはインスコさせてくれないみたいなので教えてもらいたかった。
0599デフォルトの名無しさん2009/05/28(木) 10:15:27
>>597みたいなクズはレスしないで欲しいね
0600デフォルトの名無しさん2009/05/28(木) 10:18:23
自作自演大流行だな
0601デフォルトの名無しさん2009/05/28(木) 10:26:53
フリーソフトのインストールさえ出来ない奴がプログラミングできる訳ねえじゃん。
0602デフォルトの名無しさん2009/05/28(木) 13:47:05
いや、Turbo シリーズのインスコは、ハマると厄介だぞ。
0603デフォルトの名無しさん2009/05/28(木) 15:35:22
最近のゆとりは淫寿古さえできないのか
0604デフォルトの名無しさん2009/05/28(木) 15:38:33
>>603がゆとりって事だけはわかった。
0605デフォルトの名無しさん2009/05/28(木) 15:40:23
>>604は禿
06065982009/05/28(木) 19:59:31
Microsoft.NET 1.1ランタイムとかも入れなきゃいけないみたいなので
目的としていることが出来るならインスコするけど、インスコして
出来なかったじゃイヤなので。
普段は今だにDelphi使いなので、C++に用がなくて
出来るだけ余計なものは入れたくないんだ。
0607デフォルトの名無しさん2009/05/28(木) 20:10:02
まるで.NET Frameworkは汚れ扱いだな。
0608デフォルトの名無しさん2009/05/28(木) 20:17:34
アップデートは全部切ってウィルスに感染するタイプだな
06095982009/05/28(木) 20:22:37
HDDが30Gのノートだからね。
アップデートはするし、カスペル入れてるけど普段は切ってるな。
で、VC++6.0のDLLのソースはコンパイルできるの?
0610デフォルトの名無しさん2009/05/29(金) 16:27:01
ひどい開発環境だね。そんなオンボロノートPCなら今らな中古で1万くらいで買える。
OSはWindows98かね。
0611デフォルトの名無しさん2009/05/29(金) 16:58:28
Torbo-C++か

中国製のコンパイラらしいけど
0612デフォルトの名無しさん2009/05/29(金) 19:27:58
SSDですが何か?
0613デフォルトの名無しさん2009/05/29(金) 19:36:56
>HDDが30Gのノートだからね。
>HDDが30Gのノートだからね。
>HDDが30Gのノートだからね。
HDD
0614デフォルトの名無しさん2009/05/29(金) 22:13:22
結局馬鹿ばっか
0615デフォルトの名無しさん2009/05/29(金) 22:14:36
>>610
で、だからなんだね、チミ
0616デフォルトの名無しさん2009/05/29(金) 22:22:30
チミ
0617デフォルトの名無しさん2009/05/30(土) 00:15:13
メモリ2G HDD250Gとかのノートパソコンが4万円台で売っている時代だからね。
0618デフォルトの名無しさん2009/05/31(日) 02:58:17
あ
0619デフォルトの名無しさん2009/05/31(日) 10:51:58
もうそんな時代なのか・・・・。でっかい箱のくせにメモリ768kのおれ。これは厄介なことになってきたぞ。
0620デフォルトの名無しさん2009/05/31(日) 12:28:48
メモリ1GB 1000円未満になって久しい訳だが・・・
0621デフォルトの名無しさん2009/05/31(日) 12:34:59
768kってH98?TOWNS?
0622デフォルトの名無しさん2009/05/31(日) 12:44:11
メモリ2Gでも狭えや
0623デフォルトの名無しさん2009/05/31(日) 12:56:12
>>621
それはコンベンショナルメモリのサイズ
0624デフォルトの名無しさん2009/05/31(日) 14:33:53
昔は1バイトでも節約しようと必死だったのに最近のゆとり世代ときたら
0625デフォルトの名無しさん2009/05/31(日) 14:52:20
>>620
DDR2は値上がり基調
0626デフォルトの名無しさん2009/05/31(日) 19:30:34
最近は横ばいだろ
0627デフォルトの名無しさん2009/06/03(水) 00:47:44
主流がDDR3に移り始めたからこれ以上DDR2安くならんと思うよ
0628デフォルトの名無しさん2009/06/10(水) 22:50:53
しつもんです。
BDS2006使ってます。
Clock.exeという簡単な時計プログラムを作りました。
ウインドウの位置を覚えておくために
TIniFile *ini;
ini = new TIniFile(ChangeFileExt(Application->ExeName, ".ini"));
ini->WriteInteger("Main","Top",Top);
ini->WriteInteger("Main","Left",Left);
delete ini;
としてiniファイルを作成して覚えておくことにしました。
プログラム起動時に下記の通りに読み出しています。
TIniFile *ini;
ini=new TIniFile(ChangeFileExt(Application->ExeName,".ini"));
Top=ini->ReadInteger("Main","Top",320);
Left=ini->ReadInteger("Main","Left",320);
delete ini;
これでちゃんとウインドウの位置を覚えてくれて動作に問題はないのですが
ふと気づいたんですが、作成されているハズのiniファイルがないんです。
どこにも。HDD全部を検索したけど、見つかりませんでした。
どうなってるんでしょうか。
0629デフォルトの名無しさん2009/06/10(水) 23:26:13
>>628
OSがVistaとか?
0630デフォルトの名無しさん2009/06/10(水) 23:38:36
OSはWindowsXPです。
ExplorerでHDDを全部検索してみたのですが、
該当するiniファイルはありませんでした。
0631デフォルトの名無しさん2009/06/11(木) 09:28:12
ChangeFileExt(Application->ExeName, ".ini")
の戻り値の場所、ちゃんと見た?
06326282009/06/11(木) 19:53:09
もちろん確認しています。
exeが存在している場所と同じディレクトリとなっています。
パスがおかしいということもありません。パスに漢字も使っていません。
exeとかobjとかはちゃんとあり、iniファイルだけありません。
でもなぜか、
ReadInteger
すると、正しい値が返ってきます。
なぞです。
0633デフォルトの名無しさん2009/06/11(木) 20:19:12
>>632
念のためフォルダオプションで
・隠しファイル属性をすべて表示 をチェック
・保護されたファイルをオペレーティングシステムファイルを表示をしない のチェックをはずす
をして確認してみたらどうだろう
06346282009/06/11(木) 20:38:06
それはすでにやってあります。
AnsiString str;
str=ChangeFileExt(Application->ExeName,".ini");
if(FileExists(str)==true){
Application->MessageBox("OK", "正常", MB_OK);
}else{
Application->MessageBox("NG", "異常", MB_OK);
}
としてもNGが表示されます。
str=ChangeFileExt(Application->ExeName,".obj");
とすると、ちゃんとOKが表示されます。
ファイル検索ツールでHDD全部を検索しても
Clock.iniは見つかりません。
ふしぎです。
0635デフォルトの名無しさん2009/06/11(木) 20:54:00
他のiniファイルを作って実験してみたら?
0636デフォルトの名無しさん2009/06/11(木) 21:15:51
>>634
その昔、
「clock」っていうファイルは
禁断のファイル名だったよ。
0637デフォルトの名無しさん2009/06/11(木) 21:21:32
>>634
実際にはレジストリに書き出されていたりしない?
0638デフォルトの名無しさん2009/06/11(木) 21:26:01
と思ったけど仕様が変更されたってわけでもなさそうか。
06396282009/06/11(木) 21:33:40
原因わかりました〜
ご指摘の通り、レジストリに書き込まれていました。
[HKEY_CURRENT_USER\Software\Microsoft\Clock]
にありました。
実行ファイル名を、Clock.exeからClock2009.exeに変更したら
ちゃんとiniファイルが作成されます。
やっと解決しました。どうもありがとうございます。
Clock.iniというファイル名は使ってはいけないってことなんでしょうか。
それとも、TIniFile のバグ?
0640デフォルトの名無しさん2009/06/11(木) 21:51:17
CLOCKとかPRNって使っちゃだめなファイル名じゃなかった?
0641デフォルトの名無しさん2009/06/12(金) 10:14:59
PRNはデバイスファイルで予約されてるけど、CLOCKはSDKのNaming a Fileには載ってないなぁ
0642デフォルトの名無しさん2009/06/12(金) 10:18:56
CLOCK$はだめだね
CONも
0643デフォルトの名無しさん2009/06/12(金) 17:06:13
CONとPRNとAUXはDOS全てだったけど
CLOCKは98独自だったような曖昧な記憶
0644デフォルトの名無しさん2009/06/20(土) 16:57:38
64bitアプリケーションは作れるの?
0645デフォルトの名無しさん2009/06/20(土) 17:13:34
>>644
Commodore
0646デフォルトの名無しさん2009/06/22(月) 16:25:19
builder2007でですが、
TStringListのLoadFromFileにファイル名を与えないと例外になるのはいいのですが
例外をtry〜catchで受けてるのにデバッガがアクセス違反エラーを出してそこで落ちてしまいます
オプションのデバッガでプログラムで受けるようにしてるのですが
他のどこを設定したらいいですか?
0647デフォルトの名無しさん2009/06/22(月) 18:00:14
ユーザー還元セール忘れてた
あと数日か、買うかどうするか・・・
0648デフォルトの名無しさん2009/06/22(月) 18:47:56
ユーザー還元セール?アカデミックキャンペーンてやつとはまた別?
このキャンペーンてさ、買うときに学生証の提示必須かと思ったら

>本製品の購入には学生証・教職員証のご提示は不要ですので

って書いてるけど、これって社会人でもOKってこと?
それなら買おうかな。
0649デフォルトの名無しさん2009/06/22(月) 18:56:21
アカデミックではないと思う
春頃に封書で届いた
内容はこれ↓

http://www.codegear.com/jp/article/39555
0650デフォルトの名無しさん2009/06/22(月) 19:00:25
うが〜。クダランIDEのバグで半日潰れた!!!
一応、同様な症状に見舞われた人の為に。

C++Builder2009使用中withXP(どちらも最新)

まだIDEの調子は完全じゃ無いのな。(もうアフォとしか…)

正確には統合環境の問題だと思うんだが、ソースでの右クリックによる
コピペがオカシクなり始めたと思ったら、今度はあらぬ所でコンパイルエラー。
始まりは…

>>>>> SelectDirectory("フォルダセレクト", "\\", SelectDir)
コンパイラ:「そんな関数あるかい!」

…おぃおぃ。今まで通ってたろ?ってのに。徐々に他にも今までに無い警告多数。
エラー多数。
…で、問題箇所のみ抜粋して、新たにプロジェクト作成してコンパイル。
ー>何も問題無し。(-_-;

プロジェクトクリーンアップするも効果無し、仕方なく全プロジェクトを閉じた上で
C++Builderを終了し、該当プロジェクトファイルを削除し、ソース以外を全て削除し、
C++Builderを再起動後、新規プロジェクト作成し、該当ソースを加えコンパイル。
ー>何も問題無し。(-_-;

プロジェクトファイルがオカシクなって、何処かにキャッシュ(それとも
プリコンパイルヘッダ?がオカシク?)されとったんか?まったく。

まとめて書いてしまえばなんて事ないんですけど…数行のソースならともかく、
ある程度の規模のソース書いてれば、エラーが出れば自分が何か「やらかした…」
と思って、必死にソースから原因を探そうとするじゃないですか…。

あ〜腹立つ!!
0651デフォルトの名無しさん2009/06/22(月) 19:13:29
未熟杉
おかしくなったら、全部閉じて再起動。
これ常識。
別に、Builderだけの話じゃない。VSだって同様だ。
06526502009/06/22(月) 19:47:21
>>651
VSで同様な目に逢った事無いもんで。
0653デフォルトの名無しさん2009/06/22(月) 21:47:46
コピペできなくなることはたまにあるな
折りたたみ機能とかいらん機能の弊害だろう
0654デフォルトの名無しさん2009/06/23(火) 00:32:14
>>653
でも、あれはあれで便利な時もあるんですよ、たまに。…って弊害が大きくちゃ
仕方ないですね。

どうにも、IDEってか、エディタのソースがどうなってるのか一度見てみたい。
時々カーソル位置を上手く認識してなかったり、コピペがおかしくなったり。

特に大きめのソース&複数のソースのデバッグを続けると発生し易いような。
(ソースデバッガ兼用な所も一因なのかな)(↑使い方に問題有りかも?C++なのに
ってか、OOPなのに…?って事かな)

いずれにせよ、少しでもおかしくなったら、まずIDEを疑えって事ですね。
0655デフォルトの名無しさん2009/06/23(火) 00:45:23
BCB6はええよ
BCB5のときに俺がバグ報告をFAXで3枚も送ってやったからそれが6ではちゃんと直ってるし、まあデバッグ実行で例外出しまくってると動作がおかしくなったりBCB自体に例外が出て終了できなくなったりなんてことはたまにあるけど致命的なものはないしね
動作も軽いしもう最高だよ!
0656デフォルトの名無しさん2009/06/23(火) 10:49:50
>BCB6はええよ

良すぎるでかんわ。
0657デフォルトの名無しさん2009/06/23(火) 14:42:21
2009って64bitOSに対応してる?
0658デフォルトの名無しさん2009/06/23(火) 16:08:52
64bitは2010だろ。
っていつ出るんだろう。
2009は2008年に出た希ガス。
0659デフォルトの名無しさん2009/06/23(火) 16:11:54
つーか、UIを2010から5のUIに戻してほしい
0660デフォルトの名無しさん2009/06/23(火) 16:38:36
2009ってWin98で動くプログラムも作成できる?
0661デフォルトの名無しさん2009/06/23(火) 16:40:04
2009ってキーボードに付いた精子を綺麗に拭き取ることできる?
0662デフォルトの名無しさん2009/06/23(火) 17:18:48
Windowsのフォルダ選択ダイアログって開けましたっけ?
0663デフォルトの名無しさん2009/06/23(火) 17:22:47
なにを?
0664デフォルトの名無しさん2009/06/23(火) 22:58:28
SelectDirectoryのoverload版で。
0665デフォルトの名無しさん2009/06/25(木) 10:26:27
>overload版で。

これって何ですか?
0666デフォルトの名無しさん2009/06/25(木) 11:07:22
マルチな上にヘルプも読まない人には無理。
0667デフォルトの名無しさん2009/06/25(木) 11:37:17
知らないならレスしないで下さい。ウザいだけです。
06686652009/06/25(木) 11:57:36
 ↑(667)
いつもはりつきご苦労様です。
06696652009/06/25(木) 17:48:54
�d>>664
ヘルプを見たら、2つ関数があって分かりました。
はっきり言って、Exsampleをコピペして動作見たのが間違いだった(><;)
0670デフォルトの名無しさん2009/06/27(土) 21:23:42
質問です。
1画素4バイト(ゴミ, R, G, B各1バイト)のデータが
long img[4*160*120];の配列に格納されています。
これを160x120のカラー画像として、TCanvasにDrawメソッドで
描画するにはどうしたらいいのでしょうか?
img配列をTBitmap(?)などに格納すればいいみたいですが、
どのように格納すればいいのか分かりません。
よろしくお願いします。
06716702009/06/27(土) 22:45:46
>>670 long img[160*120]です。すみません。
0672デフォルトの名無しさん2009/06/27(土) 23:48:06
RGB関数で色指定して、1dotづつ書いていくのでは出目なの?
■ このスレッドは過去ログ倉庫に格納されています