くだすれC++Builder(超初心者用)その5

■ このスレッドは過去ログ倉庫に格納されています
2012/04/21(土) 13:26:14.76
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
C++Builder使いが優しくコメントを返しますが、
お礼はC++Builderの布教と初心者の救済をお願いします。

■C++Builder XE2 - エンバカデロ・テクノロジーズ
http://www.embarcadero.com/jp/products/cbuilder


<過去スレ>
くだすれC++Builder(超初心者用)その4
http://toro.2ch.net/test/read.cgi/tech/1256256376/
くだすれC++Builder(超初心者用)その3
http://pc11.2ch.net/test/read.cgi/tech/1171219191/
くだすれC++Builder(超初心者用)その2
http://pc10.2ch.net/test/read.cgi/tech/1144308804/
くだすれC++Builder(超初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1117225464/

<兄弟スレ>
くだすれDelphi(超初心者用)その54
http://toro.2ch.net/test/read.cgi/tech/1325028195/
2013/07/17(水) NY:AN:NY.AN
>>416
それじゃあ>>412やっても変わらないだろうな・・・
俺の場合はJaneStyleで多量のJPGを一気に開くと画面が崩れるので設定を変えたんだが
他の原因だな
2013/07/17(水) NY:AN:NY.AN
浅いフォルダだとおk?
もしかしてパスの長さがMAX_PATHを超えてないか?
419デフォルトの名無しさん
垢版 |
2013/07/17(水) NY:AN:NY.AN
>>417
やっぱ変わらないですか

>>418
浅いフォルダ階層だとおkですがしかし
しかし、フォーム数が少ない時やもっと深い階層で他のフォームが少ないのは大丈夫
階層深くてもフォルダ名が短いのでMAX_PATH超えることはないです256ですよね?
せいぜいあって100バイトあるかないかですね
2013/08/05(月) NY:AN:NY.AN
C++Builder2009で作成したプログラムをWindows7で実行したのですが
リストビューのカラム幅を変更しようとドラッグすると、ドラッグ途中では
再描画されずに縦棒で位置を示す表示がされるだけで、ドラッグ終了で
位置が確定してやっと新しいカラム位置で再描画されます。
これは2009はWindows7をサポートしていないことが原因でしょうか?。
また2009でもドラッグ中に再描画できるようなウラ技(?)とかありますか?。
スプリッターはResizeStykeをrsUpdateにしておけば旧OSと同様に
処理されていますが、カラムの変更も同じような感じにしたいのですが・・・。
2013/08/08(木) NY:AN:NY.AN
C++Builder2009なんですが、

TTreeview の LoadFromFile と SaveToFile メソッド

内部的にはUnicode だと思うんだけど、 SaveToFile で Unicode で保存まではいいんだけど
LoadFromFile で Unicode で読み込んでくれず、どうやらS-JISで読んでいるみたいなんです。

LoadFromFile で Unicode で読み込む方法か、
もしくは SaveToFile で S-JISで保存する方法があったら教えてください。

TStringList だと TEncoding で指定できるのに・・・。
2013/08/08(木) NY:AN:NY.AN
overloadされたLoadFromFileが存在してない?
2013/08/08(木) NY:AN:NY.AN
ないです。

E2227 _fastcall TCustomTreeView::LoadFromFile(const UnicodeString) の呼び出しに余分なパラメータがある

といわれます。
2013/08/08(木) NY:AN:NY.AN
どうにも方法がないなら、TStringList→TStream系→TTreeviewでなんとかなりませんかね。
もしくは、TStringList.Text→TStringStream→TTreeviewとか。
当方Delphiかつ現在環境を用意してないので試してはいない。適当でスマソ。
2013/08/09(金) NY:AN:NY.AN
>>424
TStream系に変換してみましたが、TTreeview のLoadFromStream の段階でダメのようです。

当面は原始的に各ノードに対して .StringOfChar('\t',Node->Level)+Node->Text; をTStringListに追加していって、それを保存という感じで対応しようと思います。
この方法で保存したものなら TCustomTreeView::LoadFromFile(const UnicodeString) でちゃんと読み込めましたので。

ありがとうございました。
2013/08/15(木) NY:AN:NY.AN
評価式についての質問なんですが。

int a=10,b=20;

if(a+=b && a==30) { }

こういう式があったとして、これって真になるということは保証されていましたっけ?
されてない?

if( (a+=b) && a==30) { }

こうすればOK?
2013/08/16(金) NY:AN:NY.AN
変態コードだけど、いいんじゃね?
2013/08/21(水) NY:AN:NY.AN
C++Builder6で作られたソフトのメンテやらされているんだけど
簡単な画像処理で
Image1->Canvas->Pixels[x][y]=color;
で512*512ぶん回してるところがやたら遅いんだけど

Canvasを実メモリ配列に吸い出して
なんか処理してから
元に戻したいんだけど、どうすればいいんでしょ?

サンプルコードでもあれば教えてください。
2013/08/21(水) NY:AN:NY.AN
>>428
今日も面接いってきたよ 2012年の3月から147社正社員面接しているのに採用されないよ
正社員歴2年の高卒の27だよ 福岡市に一人で住んでるよ 身長174センチ体重55キロだよ
資格は 簿記3級 秘書検定3級 ITパスポート,運転免許 モスのエクセルとワードだよ
これはネタではないよ
事実だよ
コピペでもないよ
2013/08/21(水) NY:AN:NY.AN
>>428
ScanLine()で一行分ゴッソリ取ってくるのが普通じゃないの?
2013/08/21(水) NY:AN:NY.AN
>>430
ありがとうございます。
VC++ばかりやってたのでVCLのメソッドがよく判っていません。
明日やってみます。

ついでと言ってはなんですが、これ以外にcanvasのイメージを一気にxy配列で取り込む方法ってありますか?
2013/08/22(木) NY:AN:NY.AN
>>431
CopyRect使えばTBitmapにコピー出来るけどそんな事したいのか?
配列に取り込むには一度TBitmapに変換してからじゃないと1ドット毎に
システムコールが起きるので遅くて仕方がない
2013/08/22(木) NY:AN:NY.AN
だいたいWindowsのビットマップは丸っきり前後関係が逆なのでC言語の配列とは
相性が最悪なんだよな

C<=>FORTRANで行と列を交換するtranspose()位の手間がかかる
2013/08/22(木) NY:AN:NY.AN
ここはくだすれ...

歴史的に Windows BitMap の内部フォーマットは千差万別。かつ、連続したメモリブロックになっていない場合もある(あった)
ので結構めんどくさい。ひとことで言うと例外が多い。
素性のはっきりしたデータを最新の OS で動かすのであればそんなに問題ないんだけど
どんな画像でも、ちょっとふるい OS でも、となるとね...

なので一ピクセル単位のアクセスってのが、とっても遅いんだけど、まぁ安全。ってこと。
もうちょい早く処理したいなら ScanLine を使えば水平一ラインごとに読み書きできるので
たいていこちらを使う。
2013/08/22(木) NY:AN:NY.AN
千差万別って、DDBとDIB Sectionの2種類しかないじゃないか
2013/08/22(木) NY:AN:NY.AN
フルカラーの24bit16万色が(+8bitα値がGDI+)当たり前の今は関係ないけど、
昔は少ないVRAMにパレットを割り当てる事によって原色に近い色を出してたろ

そういうのを全部VCLに吸収して表面から見えないようにしていたので、プログラム
によってはびっくりするような結果が出ていた

そこまで考慮するかどうかで対応策も違ってくる
無視していいと思うんだけどね
2013/08/22(木) NY:AN:NY.AN
×16万色
○256^3≒1677万色
2013/08/22(木) NY:AN:NY.AN
http://www13.plala.or.jp/kymats/study/multimedia.html

ここが分かりやすいな

俺はDelphi Graphic Secretsというすっげー古い本を読んでるけど
今でも関心するような事が書いてある

でもほとんど今では役に立たないような事が多いけどな
VCLがいかに初期Windowsのヒデエ場所を隠蔽して見えなくしているかも
だいたい分かる
439431
垢版 |
2013/08/22(木) NY:AN:NY.AN
皆様のご親切に感謝です。
全体の内容がわかってなくての質問でした。

よく見てみると今回の質問は
ネットワークからモノクロ8ビットの画像データをメモリ配列に取り込んで
このメモリ配列の画像データを小さいウインド画面でモニタするために
 color=data*0x10000+data*0x100+data;
 Image1->Canvas->Pixels[x][y]=color; // これをグルグル
とやっているのを高速化したいのですがお勧めの手法はなんでしょうか?

単純に画像メモリ配列データをウインドに画像として出力したいということで
古いOSと古いマシンの対応は不要です。

勉強不足長文すみません。
2013/08/22(木) NY:AN:NY.AN
http://www.geocities.jp/asumaroyuumaro/program/tips/ScanLine.html

こんな感じでScanLine()を行数分繰り返して出来たBitMapを
Imageに代入
2013/08/22(木) NY:AN:NY.AN
ああそうだ、初めて知ったんだけど、ImageコンポーネントのPictureプロパティの
HandleからHBITMAP構造体へのポインタを得て、BITMAP構造体を
GetTObject()で取得しても、bmBitsはNULLになっちゃうのな
これどうすればいいんだろ
442431
垢版 |
2013/08/23(金) NY:AN:NY.AN
>>440

おかげさまで何とか理解出来ました。

初歩的な質問に付き合っていただきましてありがとうございました。
2013/08/23(金) NY:AN:NY.AN
>>441
そっちには入っていない
MaskHandleの方に入っている
というかわざわざカプセル化されているVCLの中身を覗いてゴニョゴニョしたいのなら
初めからMFCで書けばいいだろ
444デフォルトの名無しさん
垢版 |
2013/08/30(金) NY:AN:NY.AN
TBitmap(もしくは、TCanvas)の2つを透過コピーするサンプルコード下さいorz


>>441

TImage->Picture->BitmapのWidthかHeightを設定するタイミングでアサインされるんでわ?
2013/08/30(金) NY:AN:NY.AN
ScanLineでマスク画像の白の部分以外を描けばいいだけじゃない?
マスク画像使わないんなら設定した色以外の場合だけ描けばいいんじゃない?
2013/08/30(金) NY:AN:NY.AN
AlphaFormatの事だとVCLは事情が異なるからなあ

GDI+をサポートしていないので、描画時に考慮するだけで他の動作は違うし
447444
垢版 |
2013/08/30(金) NY:AN:NY.AN
>設定した色以外の場合だけ描けば

調べても動作させても上手くいかなかったので、そうします。
2013/08/30(金) NY:AN:NY.AN
ListViewでレポート表示させている場合に、ある行にフォーカスを設定すると
その行が画面に見えてない時には見える位置まで自動でスクロールしてしまうのですが
スクロールさせないようにすることは可能でしょうか?
スクロールしてしまった後に自力で戻すしかないでしょうか?
2013/08/31(土) NY:AN:NY.AN
ある行にフォーカスを設定ってSelectedってこと?
だとしたらウチではそんなことにならないんだけど…
2013/08/31(土) NY:AN:NY.AN
SelectedじゃなくてFocused
設定すると点線で囲まれる
2013/08/31(土) NY:AN:NY.AN
ListView1->Items->Item[10]->Forcused=true;
にしても全然スクロールしないよ。XEだけど
2013/08/31(土) NY:AN:NY.AN
その行が表示されていない状態でフォーカスを設定すると見える位置までスクロールしない?
ファイラーなんかでフォーカス行が見えていない時に↑↓キーでフォーカス行を変更すると
見える位置までスクロールするのと同じことなんだけど
2013/08/31(土) NY:AN:NY.AN
>>451
描画の更新するとどうなる?
2013/08/31(土) NY:AN:NY.AN
ListView1->Invalidate();しても移動しないよ
2013/08/31(土) NY:AN:NY.AN
UpdateやRefreshは?
あと移動しないということは見えない状態のままということだよね
それで↑↓キーをどっちか押すと見える位置まで移動する?
2013/08/31(土) NY:AN:NY.AN
いろいろ試してみた結果 「Forcusedをtrueにしたから」 というわけでもなく
再描画されたタイミングでフォーカス行までスクロールされているみたい
あと仮想リストビューを使っているのでその辺も違いがあったかもしれない
リストのデータを更新してCountに件数をセットしたタイミングでスクロールされていた
(フォーカスを設定していたタイミングではなかったので、ここで勘違いしてた)
なのでCountに件数をセットする前に表示されている一番上の行番号を退避しておいて
件数をセットした後でまた元の一番上の行番号が見えるように戻してやることで解決したっぽいです
ここまでお付き合いして情報を寄せて頂きありがとうございました
2013/09/05(木) 17:36:57.52
C++Builder6のIDEについて質問です。
IDE使用中にパソコンがフリーズしたことがあり、それ以来エラーが出るようになりました。
エラーのメッセージは下記リンク先と全く同じです。

http://www.functiont.info/diary/200509.html
2005年9月18日(日) Delphiの本体でエラー?
--
モジュール 'vcl60.bpl' のアドレス 40110C48 でアドレス 00000018 に対する書き込み違反がおきました。
モジュール 'coreide60.bpl' のアドレス 0052700C でアドレス 000000B4 に対する読み込み違反がおきました。

私の場合は一応は使えるのですが、IDEのメニューで「開く」から別のプロジェクトを開くと
この上のエラーメッセージが出ます。そして検索やコンパイル結果が表示されるウィンドウが
ドッキングから外れて浮いた状態で小さく表示されます。この後このウィンドウを
ドッキングし直せば以降は普通に使えるのですが、また別のプロジェクトを開くと
同じ事象が発生します。
またこのウィンドウをドッキングから外したりして弄っていたら下のエラーメッセージが出ました。

リンク先では再インストールで直ったとあるので、修復インストールや、アンインストール後に
インストールし直してみたりしたのですが改善されませんでした。
ファイルが壊れたのなら上書きで直りそうですが、何かゴミデータでも残っているのでしょうか?。
そのウィンドウの位置やサイズ情報を読み込んで変な位置に表示しようとしてエラーが出ている
ようにも思えるのですが、何かお心当たりのある方いらっしゃいますか?。
2013/09/05(木) 17:47:04.84
レイアウトファイルぶっ壊れてるんじゃね
デスクトップレイアウトとデバッグレイアウトを上書き保存したらどうだろうか
2013/09/05(木) 18:18:41.61
レスありがとう。
「標準」という名称でデスクトップの配置を保存してみましたがやはり上のメッセージが出ますね。
また 表示→デスクトップの配置→標準 という感じで保存した名称「標準」を選択しようとしても
同じエラーメッセージが表示されて選択できず <未指定> にチェックが付いたままになります。
この配置の読み込みでエラーが出るということはその辺に問題点があるということなのでしょうけど
一体何を読み込んでしまっているのだろう・・・。
保存すると 標準.dst というファイルが作成されましたが、同じフォルダ内にある bcb.dsk と見比べて
みればいいのかな?。 dsk ファイルも散々書き換えて試したのですが、やはりこの辺を徹底的に
調べるしかないか。
2013/09/05(木) 19:59:35.35
http://docwiki.embarcadero.com/RADStudio/XE4/ja/%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97_%E3%83%AC%E3%82%A4%E3%82%A2%E3%82%A6%E3%83%88%E3%82%92%E4%BF%9D%E5%AD%98%E3%81%99%E3%82%8B

このあたりはどうなん
俺のXE4でも使えたけど

http://stackoverflow.com/questions/2893191/delphi-2009-rad-studio-desktop-selector-not-working

こんなのも発見した

HKEY_CURRENT_USER\Software\CodeGear\BDS\6.0\Session\DesktopName=Default Layout
HKEY_CURRENT_USER\Software\CodeGear\BDS\6.0\Session\RuntimeDesktopName=Debug Layout

壊れてないか?
2013/09/05(木) 21:22:19.99
C++Builder6なので同じような項目を探してみたところ以下のような箇所を見つけました。

[HKEY_CURRENT_USER\Software\Borland\C++Builder\6.0\Session]
"DesktopName"=""
"RuntimeDesktopName"=""

現状では空欄になってますけど、これに各々 Default Layout と Debug Layout って入れるということなのかな?。
2013/09/05(木) 21:38:11.37
古いパソコンにもC++Builderを入れてたので(こちらは問題なく動く、けどパソコンが非力)
レジストリを見てみましたがその2つの項目自体が無いですね。関係ないかもしれないです。
>>459 で「標準」という名前でデスクトップ レイアウトとデバッグ時のレイアウトを作ったので
その時に追加されたのかもしれない。そして症状が変わらなかったため削除したので
空欄になってるだけみたいです。
2013/09/05(木) 22:05:26.23
参考にならないかも知れないですがXE4ではこうなっています

[HKEY_CURRENT_USER\Software\Embarcadero\BDS\11.0\Session]
"RuntimeDesktopName"="Debug Layout"
"DesktopName"="Default Layout"
2013/09/05(木) 22:26:56.87
http://edn.embarcadero.com/article/39780
8.デスクトップレイアウトの設定

2009辺りからもプリセットで用意されてるみたいですね。
バージョン6の頃はまだ無いみたいです。

またアンインストールしてみるかなぁ。
多分レジストリに情報が残っていたんじゃないかと推測。
BCB6RegClean.exeをやればいいのかな?。
2013/09/26(木) 23:00:41.47
XE2で、エントリーポイント(WinMain)があるファイルの
USEFORMマクロの上に気が付いたら空行を
どんどん追加されてるんだけど、これどうにかならないの?
2013/09/28(土) 19:03:52.62
C++Builder2009Proを使っています。
.pas ファイルをコンパイルしようとしているんですが、Indy系のファイルが見つからないとしてエラーになってしまいます。

>[致命的エラー] F1026 ファイル 'IdBaseComponent.dcu' が見つかりません

cppのC++で書かれたフォームにIdHTTPを貼り付ける → コンパイルは通る。
pasのDelphiで書かれたフォームにdHTTPを貼り付ける → 上記のエラーが出る。

C++Builder2009に付属のdccコンパイラはお試し的なもので本格的にコンパイルできるようにするにはDelphi買えってことなんでしょうか?
それともなにか方法があるんでしょうか。
(まあC++BuilderだけでDelphiも利用できたら分ける意味が無いなとは思うのですが)
2013/09/28(土) 19:43:41.98
>>466
Delphiユーザーですが、IdBaseComponent.dcuが存在するならば
そこへのライブラリパスが適切に設定されていないのでは?
という気がします。
2013/10/08(火) 16:46:16.13
Delphi糞ユーザーは口をはさまないで下さい。うざいだけです。
2013/10/08(火) 20:14:26.21
>>468
お前どこでも荒らしてるな
DelphiもC++Builderも持ってない癖に
2013/10/08(火) 20:45:58.37
触らないほうが…
2013/10/10(木) 03:23:18.25
エンバカってバグ取り=アップデート(要お布施)ってこと?
XE6が出ても、新規では10万するのかな
2013/10/13(日) 12:32:54.38
リリースビルドの設定でパッケージを含んで動的リンクさせないような設定にしたいんだけど
毎回プロジェクト作るごとに設定するの面倒だからデフォルト設定にしたいんだけどそう言う設定ないの?
2013/10/13(日) 12:50:08.40
よくわからんけど。
「プロジェクト」->「オプション」メニューから設定してない?
「ツール」->「オプション」から設定すればデフォにならない?
2013/10/13(日) 13:24:40.58
ビルドの設定はわからなかったけど、フォーマッタって言うの見てたら
ソースの成形っていうメニューがあることを初めて知って設定して実行したらいい感じになった
VSだとある程度自動だけどこれいいな
2013/10/14(月) 10:02:24.58
>>472
どのバージョンを使ってるのか分からないけど
プロジェクトのデフォルト設定はXEまではあったが、XE2からは廃止された
XE2からはオプションセットにプロジェクト設定を保存して、それを適用しろという事らしい
476デフォルトの名無しさん
垢版 |
2013/10/17(木) 11:29:53.79
Builder XE4でNMSMTPってみつからないんだけど?
なくなった?
Indy使えってこと?
2013/10/17(木) 19:24:33.34
NM*とはずいぶん古いな。とっくに作ってた会社もなくなってる。Indyでどうぞ。
2013/10/17(木) 21:30:50.90
入力補完でキャストすれば行けるのに出てこない候補とかあるんだけど
設定とかあるの?
2013/10/17(木) 21:31:22.72
あ、XEです
480デフォルトの名無しさん
垢版 |
2013/10/23(水) 11:10:01.90
XE4ってデフォでAPIがWCHARになってるんだけど
WriteFileって引数はWCHARで通るのに書き出されたファイルみると
ちゃんとなってない・・・
アスキーの"123"ってかきたかったのに"1 2 3 "ってなっちゃうんだけど
これcharでやろうとしたら逆にエラーでるし
どうしたらWCHARでちゃんとWriteFileでファイル作れますかね?
481デフォルトの名無しさん
垢版 |
2013/10/23(水) 11:21:58.49
あれ?
試しにサイズにsizeof(WCHAR)かけたらちゃんとかけた
lstrlenは文字数を返してるけどWriteFileのサイズってバイト数のままかこれ
でもサイズが半分しか指定してなくて何でWCHARの2バイトのままかかれるのかwからん
2013/10/23(水) 12:10:53.61
内部は全部ユニコードだから
483デフォルトの名無しさん
垢版 |
2013/10/23(水) 16:46:48.23
XE4で質問
ソフトを起動してからボタンを押すとメインフォームのVisible=falseにしたらフォームが消えるんですが
コンストラクタでやっても消えてくれません。
Application->ShowMainForm = false;
これやっても消えてくれません。
起動時にどうやったらフォーム非表示で起動できますかね?
2013/10/23(水) 19:31:20.33
ApplicationEvents配置して、OnActiveイベントに記述
2013/10/23(水) 19:35:46.81
>>480-481
BOOL WriteFile(hFile, lpBuffer, nNumberOfBytesToWrite, lpNumberOfBytesWritten, lpOverlapped)

HANDLE hFile; /* 書き込み先のファイルのハンドル */

LPCVOID *lpBuffer; /* ファイルに書き込むデータのアドレス */

DWORD nNumberOfBytesToWrite; /* 書き込むバイト数 */

LPDWORD lpNumberOfBytesWritten; /* 書き込まれたバイト数のアドレス */

LPOVERLAPPED lpOverlapped; /* 重複I/Oに必要な構造体のアドレス */

これでしょ?
引数は 
LPCVOID だからもとからバイト数だよ。
2013/10/23(水) 19:42:04.47
だよな
487デフォルトの名無しさん
垢版 |
2013/10/24(木) 05:28:10.04
MainFormが表示されてから、表示を消さないといけない
MainFormが表示される前のタイミングで、表示を消しても無意味
ノーマルなやり方は
MainFormのOnActivate()イベントで、消すのが普通だろうな
2013/10/24(木) 09:10:40.83
どういうのを作りたいのかよくわからんがフォーム自体いるのかね
消えたまま起動して後からまた表示させることもあるんかな
トレイに入れておくとか、あるいはバックで動かしたいのか
フォーム使わないなら最初から無いまま作ればいいんだし
2013/10/24(木) 09:40:11.62
まあ、オプションの自動生成フォームから、MainFormを外せばいいんだけどね
2013/10/24(木) 11:55:35.09
>>487
そこでfalseしても消えてくれない
2013/10/24(木) 12:39:30.47
XE4とwin8で一回目にダイアログを実行してなにかファイルを選択して、
二回目にダイアログを実行したとき、フルパスで表示されます
ファイル名だけを表示させる方法を教えてください。
昔はファイル名だけが表示されたと思うんですが、、、、
ttp://www.dotup.org/uploda/www.dotup.org4608757.png
2013/10/24(木) 14:03:31.99
>>489
それやると次は、「プログラムを起動しても何も起きません」ってなるんじゃね?
2013/10/24(木) 15:46:08.57
>>483
フォームの〜.cppじゃなくて、プロジェクト名.cppのRun()の前で
Application->ShowMainForm = false;
やるんじゃないの?
2013/10/24(木) 17:14:19.35
Application->ShowMainForm = false; はコンストラクタでおk
2013/10/24(木) 19:26:03.98
>>483で、

> ソフトを起動してからボタンを押すとメインフォームのVisible=falseにしたらフォームが消えるんですがコンストラクタでやっても消えてくれません。
> Application->ShowMainForm = false;
> これやっても消えてくれません。

って書いてあったから流れ的にコンストラクタで Application->ShowMainForm = false; やっても消えないという意味だと解釈してしまったが
質問者は コンストラクタで Visible=false しかやってないってことなのか。

>>493
自動生成のフォームのコンストラクタはもとからRun()の前だよ。
2013/10/26(土) 21:50:00.84
コンポーネント作ってるんだけど、ファイル名を格納するStringで
オブジェクトインスペクタにファイル選択ダイアログを表示させるボタンを表示させたいんだけど
どうやったらいいのでしょうか
2013/10/26(土) 22:08:36.95
プロパティを文字列型じゃなくてTFileName型に変えたらどう?
2013/10/26(土) 22:29:04.51
>>497
出ませんね
2013/10/26(土) 22:44:08.65
あら。ごめん。俺あんま経験なくてw
なんか、プロパティエディタ登録すればいいらしいんだが、
DesignIntf.pasやDesignEditors.pas,VCLEditors.pasのデフォルトや標準のエディタが
登録されてて、これで間に合わなければ自分で作るらしい。
登録にはRegisterPropertyEditorとかいう関数で。
って、俺じゃあれだから、プロの意見の待った方がいいな。
2013/10/26(土) 22:51:17.03
VCLEditors.pasにTMPFileNamePropertyというTMediaPlayer用の
File Open Dialogを表示するプロパティエディタがあるから、これを真似れば
いいんじゃないかと思う。
2013/10/27(日) 15:44:18.10
初歩的な質問ですみません。
for文やwhile文などでくりかえし処理をすると,繰り返しの回数が99回目までは問題ないのですが
必ず100回目で「sqrt domain error」が必ず出ます。
数値を色々変えてみても必ず起きます.
ssqrt domain errorはルートの中身が負のときでるエラーだと思うのですが
それ以外に出る原因はありますか?
2013/10/27(日) 16:20:24.52
そう言う場合はまず作ってるプログラムから離れて間違っているのか確認してから
そうでは無いなと確信してから自分のプログラムを疑う物ですよ
2013/10/29(火) 13:52:21.53
>>501
√に入れる変数にunsigned入れたらいいんじゃね?
2013/10/29(火) 14:24:43.48
何でもassert
2013/10/29(火) 15:07:07.12
デバッグすればいいだけじゃん
ループの100回目でブレークポントを張って
変数の値を確認すればよい
2013/10/29(火) 23:49:47.28
スタックでも壊してたりしてな
507デフォルトの名無しさん
垢版 |
2013/11/05(火) 17:38:05.77
void __fastcall TForm2::ButtonWRClick(TObject *Sender)
{
char *tmp;
CamRegInfo ci;
ci.devaddr = 0xba; // dev addr

unsigned short val[3];
int addr = 0;
int data = 0;

tmp = strdup(EditAddr->Text.c_str());
sscanf(tmp,"%02x",&amp;addr);
free(tmp);

tmp = strdup(EditData->Text.c_str());
sscanf(tmp,"%02x",&amp;data);
free(tmp);

ci.devaddr = addr;
ci.data = data;
USBWriteData((unsigned char *)&amp;ci,6,0x07); // to I2C Controller
}

2010年くらいにいただいたビルダーのサンプルプログラムを今,実行しようとしていますが
[BCC32 エラー] Unit2.cpp(204): E2034 'wchar_t *' 型は 'const char *' 型に変換できない
[BCC32 エラー] Unit2.cpp(204): E2342 パラメータ '__s' は const char * 型として定義されているので wchar_t * は渡せない
というエラーがtmp = strdup(EditAddr->Text.c_str());に出ます.
調べるとこうするとエラーが取れました.tmp = strdup(AnsiString(EditData->Text).c_str());
しかし,新たに[ILINK32 エラー] Fatal: ファイル 'K.OBJ' を開けません
というエラーが出て困っています.
2013/11/06(水) 00:38:50.77
それは困りましたね。
2013/11/06(水) 09:22:42.32
Unicodeの意識が無さ過ぎ
2013/11/06(水) 10:02:11.48
>>507
http://docwiki.embarcadero.com/RADStudio/2010/ja/TCHAR_%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0
http://docwiki.embarcadero.com/RADStudio/2010/ja/RAD_Studio_%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B_Unicode
http://marupeke296.com/CPP_charUnicodeWideChar.html
http://www.watercolor-city.net/ct_delphi/delphi_tiburon/
511デフォルトの名無しさん
垢版 |
2013/11/06(水) 10:14:53.13
>>509 スレタイ読め
2013/11/06(水) 10:23:07.10
>>511
オマエのクソレスの方が何の役にもたってないことに気付けボケ
2013/11/07(木) 15:24:59.71
仮想デストラクタをcppに書くと必ず、
「ここには記憶クラス"virtual"は指定できない」ってエラーが出るんだけど
どうしたらよいの?
2013/11/07(木) 17:28:29.26
>>513
ヘッダに宣言書いているでしょ?
CPPに書くデストラクタの本体には virtual はつけない。
       ~~~~~~~~~~~~~~~~~~
もしCPPに書いているのがclass宣言で、その宣言に virtual をつけるのはOK

もしそのようにしているのに怒られると言うなら具体的にコードを書いてみて
2013/11/07(木) 17:32:54.63
>>514
ありがとう!ヘッダに宣言書いていました
2013/11/07(木) 22:21:46.25
System.DateUtils.hppをインクルードすると、
W8058 ヘッダーに初期化データが含まれているためプリコンパイルヘッダーを作成できない
ってエラーが出るのは、回避不可能なの?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況