くだすれDelphi(超初心者用)その55at TECH
くだすれDelphi(超初心者用)その55 - 暇つぶし2ch1000:6/11(水) 19:30:47.40 ID:Bs2QtGfm.net



1001:デフォルトの名無しさん
14/06/11 21:06:23.57 0Fb7ZLHS.net
TRttiContext.GetTypesで型を列挙して、それぞれのTRttiTypeのTypeKindがtkClassかどうかで
クラスかどうかをチェックして、Handle.Nameでクラスの型名を取得して、TypeData.ParentInfoで
継承元クラスのTypeInfoを取得して、それをずっと辿って継承元にTMyBaseClassが出現するか、ってな
手順になるかな。もし具体的なコードが欲しければここじゃなくて公式フォーラムかMLにどうぞ。

1002:デフォルトの名無しさん
14/06/12 17:09:44.54 WVwRtvyG.net
列挙はともかく親までわざわざRTTIで辿らなくてもクラス参照取り出してInheritsFrom呼ぶだけでいいんじゃないの?

1003:デフォルトの名無しさん
14/06/12 17:14:45.28 rSU+gR4e.net
それもそうだね

1004:デフォルトの名無しさん
14/06/14 04:45:46.47 NSoK88RM.net
// TStringsを乗っ取るサンプル
type
 TStringsHelper = class helper for TStrings
  procedure Add; overload;
  procedure Add(s: String); overload;
  procedure Add(fmt: String; args: array of const); overload;
 end;

{ TStringsHelper }

procedure TStringsHelper.Add;
begin
 Add('');
end;

procedure TStringsHelper.Add(s: String);
begin
 Add(s); ← ここでオリジナルのTStrings.Addを呼び出すのってどうやるの?
end;

procedure TStringsHelper.Add(fmt: String; args: array of const);
begin
 Add(Format(fmt, args));
end;

1005:デフォルトの名無しさん
14/06/14 10:28:41.73 pZZwN6gt.net
Self.

1006:デフォルトの名無しさん
14/06/16 21:58:08.16 CcnTOfaT.net
inherited;
または
inherited Add(s);

1007:デフォルトの名無しさん
14/06/19 07:14:48.98 NCzAFLQA.net
inherited
はうまく行きませんでしたが(実行できたものの何も文字が入らなかった)
inherited Add(s);
はうまく行きました。ありがとうございます。

1008:デフォルトの名無しさん
14/06/19 13:56:12.16 5QFFttI7.net
初心者でとんちんかなことを言ってるかもしれませんが教えてください

TGifImage.Bitmap.ScanLineを使いたいんですが、
このときの色深度はどうなってるんでしょうか?

TGifImage.Bitmap.PixelFormatを調べればいいのですか?
それともPixelFormatを明示的に、たとえばpf24Bitにすればいいの?

Gifだから本来pf8Bitだと思うんですが、得られた値を
パレット色で変換するのですか(GlobalColorMap.Colors[]など)?

効率のいいピクセル値の取得法を教えてください。
よろしくお願いします。

1009:デフォルトの名無しさん
14/06/19 17:54:59.52 9F/+Tvyf.net
GifだろうがJpegだろうが内部的にはBitmapでしょ

1010:デフォルトの名無しさん
14/06/19 19:34:44.51 5QFFttI7.net
>>959
そうですね。

ダウンロードしてGif.LoadFromStream(TMemoryStream)後、
PixelFormatはpfDeviceになってました。

で、ScanLineで試したところ、pf32Bit相当のフォーマットでした。

pfDeviceって機種依存だと思いますが、1Pixelが何バイトかは
どこから分かるんでしょうか?
2回のScanLineして得たアドレスの差を画像の横幅で割る?

1011:デフォルトの名無しさん
14/06/20 09:42:53.62 TWd9CfnL.net
> TGifImage.Bitmap.PixelFormatを調べればいいのですか?
これじゃねーの?

1012:デフォルトの名無しさん
14/06/24 15:09:10.53 MRk4no2J.net
>>960
何か勘違いしてるがDDBを直接操作する手段は無いからScanLineでは当然触れない
ソースを見れば分かるとおりScanLineを呼び出した時点でDIBに変換されてる

1013:デフォルトの名無しさん
14/06/24 18:22:21.83 abfxo/wj.net
>>962
>勘違い...




1014:大いにありえます。DDBとかDIBとかはじめて聞きました 最終目的はネットからダウンロードしたGif画像を高速に スキャンすることです どうすれば高速に任意のピクセルの色情報を取得できるでしょうか? >ソースを見れば 残念ながらStarter使用者です。ソースは参照できません



1015:デフォルトの名無しさん
14/06/24 19:40:17.20 y6vzvZsg.net
>>962が言うには、ScanLineを呼び出せばDIBに変換されてるというらしいから、
ScanLineで1,2バイト適当に読んだ後に、PixelFormatをチェックしてみれば?
そしたらお望みのDIBのフォーマットになってるってことじゃね?

1016:デフォルトの名無しさん
14/06/24 20:02:10.28 y6vzvZsg.net
つか、TGifImageで適当な画像読んでもPixelFormatがpf8bitになってるけど。
どんな画像読んだんだ?

1017:デフォルトの名無しさん
14/06/24 22:44:28.85 abfxo/wj.net
>>965
たぶんアルファチャンネルの有無による違いかと

1018:デフォルトの名無しさん
14/06/25 15:24:02.24 2LLNN4pY.net
>>964
なんでそんな無駄なことするんだ
「お望みのDIBのフォーマット」が欲しいなら最初からPixelFormat弄ればいいだろ

1019:デフォルトの名無しさん
14/06/26 08:29:30.85 NGdvOluE.net
ScanLineする前にbitmap.PixelFormat := pf24bit で統一しておけばよさそう アルファチャンネルはいらないでしょ

1020:918
14/07/01 19:13:32.79 PUCNylXr.net
すみません。以前wav再生ソフトのボリュームコントロールの

1021:デフォルトの名無しさん
14/07/01 19:15:54.89 PUCNylXr.net
すみません。以前wav再生ソフトのボリュームコントロールの
質問した物です。

WindowsMediaPlayerコンポーネントを使おうかと思っていますが、
日本語のSDKって手に入るのでしょうか?
ボリュームコントロールは簡単にできる物でしょうか?

よろしくお願いいたします。

1022:デフォルトの名無しさん
14/07/01 21:24:31.31 aOmMjglY.net
ActiveX使えば簡単
SDKとか必要ない
ActiveXでプロジェクトに取り込めばOK

1023:デフォルトの名無しさん
14/07/02 09:28:10.80 fePmEt/5.net
でもSDKの資料がないと使い方が分からんね
WMPの資料はWindows7 SDKの資料の中にWMP SDKというのが入ってる
もちろん全部英語

1024:デフォルトの名無しさん
14/07/14 11:26:56.90 A2xnrbKD.net
D7でTEditのOnExitで入力内容のチェックをして正しくないときはフォーカスを移動しないようにしたかったのですが
うまくいきません
このような場合どこでチェックをしたらいいのでしょうか

1025:デフォルトの名無しさん
14/07/14 11:59:10.95 fik+oCj3.net
>>973
OnExitはフォーカスが移動したときに発生するイベントだからなぁ。
OnChangeでチェックする訳にはいかないの?
それかOnExitでチェックしたあとエラーだったら自分自身にSetFocusするとか。

1026:デフォルトの名無しさん
14/07/14 17:14:07.37 +5XDJE2M.net
ちなみにLazarusにはOnEditingDoneイベントというのがあるよ

1027:デフォルトの名無しさん
14/07/14 21:10:27.58 MBSGNiM/.net
あーそーですかー

1028:デフォルトの名無しさん
14/07/15 11:15:08.24 ar3EwYI5.net
>>974
どうもです
OnChangeだと1文字入力するごとに動いてしまうのでダメでした
OnExitで自分自身にSetFocusして戻ってこれましたっけ?
ダメだったような気がしたが何かミスってたのかな
またやってみます

>>975
Lazarusは使ったことないので

1029:デフォルトの名無しさん
14/07/15 11:29:48.33 /OAZiFpr.net
>>977
自分がD7で確認した限りでは上手くいったんだけど…。OnExitの発生する状況
にもよるんかね。
あとは面倒だけどOnChangeで色々と小細工をする。
有効な文字数になるまでチェック処理をスキップするとか
TEdit.Textの内容を保存しておいて前と同じだったらチェックしないとか

1030:デフォルトの名無しさん
14/07/15 13:50:36.17 XxK55HNo.net
フォーカス移動のメッセージを、メッセージループで無視してみるとか? フラグ使って
これなら入力チェックの結果をそのままフラグに使える

これはDelphiのどんなバージョンでも関係なくできる手法

1031:デフォルトの名無しさん
14/07/15 14:17:20.89 XxK55HNo.net
だいたいコンポーネントを細かく制御しようとしたら�


1032:<bセージループに手をつけざるをえない なんでもかんでもイベントドリヴンでお手軽にやれるわけじゃない OnChangeで、とか安易に考える人は、開発力が低く、不要にソースを複雑化してデスマーチに陥りがちだろう 細かい制御をするときは、イベントドリヴンな考えから離れてみるべきなんだよ ある程度経験ある人なら>>978をチラっと見て「こりゃデスマだな」って連想するよ



1033:デフォルトの名無しさん
14/07/15 14:21:51.02 ueYQQSJv.net
チェック処理が相当重く無い限りOnChangeで1文字ごとにチェックしてもたかが知れてるような

1034:デフォルトの名無しさん
14/07/15 14:37:28.53 /OAZiFpr.net
>>980
あなたが俺より開発力が高いのは分かるんだけどね、上の様な質問をしてくる
人にメッセージループを使いなさいとか言って伝わるんかね。
俺自身分からんからもし質問した人がそれで理解できるなら俺はもうロムってるよ。

1035:976
14/07/15 18:02:25.36 MNelpFeK.net
>>977
ソースを参考にすればいいだけなんで
使ったことのあるなしは関係ないよ

1036:デフォルトの名無しさん
14/07/15 20:06:33.85 TDrfNmAN.net
普通は糸口を教えてくれた人にお礼を言う
その糸口を調べてる、考える

1037:デフォルトの名無しさん
14/07/15 21:45:08.88 s3FJhuBU.net
まあ
結論としては
>>980
スレッドのタイトルさえ読むことができないバカ

1038:528
14/07/16 09:48:26.85 zPJuhVsB.net
>>528
以前にmp3とwavでボリュームコントロールが一本化できないことで質問した者です。
URLリンク(delphi.about.com)
ではmp3のボリュームコイントロールはできますが、wavには反応しません

>>533ではmp3が反応しません

wmpコンポーネントを埋め込んだときには両方に反応するようにできるでしょうか?
その場合の命令というのはどういった物になるのでしょうか?

1039:デフォルトの名無しさん
16/12/26 17:47:08.94 rjPaEzIFh
var
r: extended;
begin
r:= 9.6 - 9 - 0.6;
Memo1.Text:=FloatToStr(r)
end;

結果は 3.25260651745651E-19

そんなアホなと、vbsで同じことをやってみた。

Dim r
r = 9.6 - 9 - 0.6
MsgBox r

-3.33066907387547E-16
だとさ。

誰かひまなやつ理由を語り尽くせ。

1040:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch