952 :
デフォルトの名無しさん:04/04/02 00:06
マジですかっ!?
それは是非教えてほしいです!
詳しく、教えてもらえませんか?
時間があればでいいので
お願いします
つーか、クソマルチに反応するなよ。
どうしても初心者から抜けだせん・・・ハァ(・_・ )
下手糞の上級者への道のりは 己が下手さを知りて一歩目
クラス設計下手すぎ_| ̄|○
910です。答えありがとうございました。
inheritedに関して教えてください。
例えば、他のコンポの継承クラスを作る場合、Constructorと、Desructor
それぞれでinheritedする必要があると思いますが、これは自分自身(継承
元)をいじる場合以外には、基本的にinheritedはConstructorとDestructor
内の最も最後で行えばいいんでしょうか?
Destructorは特に流れからいうと、一番最後にinheritedすればいいように
思うのですが・・・
あと、TObjectの継承クラスの場合には、Createでinheritedしていない
サンプルが多いように思いますが、TObjectの継承クラスの場合は
Createでinheritedしなくてもよい(してもよい?)んでしょうか。
>>960 コンストラクターは最初にいんへりっど
デストラクターは最後にいんへりっど
でやってりゃあ間違いない。
>>960 >あと、TObjectの継承クラスの場合には、Createでinheritedしていない
>サンプルが多いように思いますが
TObjectのconstructorであるCreateは仮想メソッドじゃないからoverride出来ない
つまりinheritedは意味が無い
しかしTObjectのdestructorであるDestroyは仮想メソッドだからoverride出来る
つまりinheritedは意味がある
なんでDestroyが仮想メソッドかはどこかで説明があったはず
どわすれしたので、その辺は探しておくれ
あ、たぶんTObjectのDestroyを仮想メソッドなのはFreeで呼ばれるからと思う
今、ソース見ておもた
//引用TObject.Free
procedure TObject.Free;
begin
if Self <> nil then
Destroy;
end;
違ってたら、偉い方よろしく
なるほど〜inheritedの使い方がわかりますた。
了解です。ありがとうございました。
Indy9 のTIdHTTP を貼り付けるとアプリを起動して終了するだけで
メモリリークが発生(MemCheck で確認)するんですが
何とか回避できないでしょうか?
ソースをいじれ
>>962 inheritedを使うのに仮想メソッドであるかどうかは関係ない。
コンストラクタでinheritedを使うのは親クラスの初期化処理を任せるためだ。
TObject直下のクラスがコンストラクタをinheritedしないのは
TObject.Create自体に処理がないから省略しても問題ないと言うだけのこと。
ActiveXの取り込みでMSXMLをインストールしようとしているのですがリストにMSXMLがありません
どうすれば出るでしょうか?
IE5SP4+XML4SP2
>>967 おお、ほんとだ。。。
ちょっとテストしたら、確かに仮想メソッドかどうかなんて関係有りませんでした・・・
また一つ勉強になりました
ありがとう
970 :
デフォルトの名無しさん:04/04/03 17:33
なぁ、きいてくれ
DelphiWorldにあるDBCloneCtrlGridちゅうのを使って開発してたんだが
いざ、開発終了間近になって、MemCheckにてメモリーリークがないかチェックをしたのよ
そしたらDBCloneCtrlGridがリークしてるのよ・・・
しかもとんでもない数のリーク量・・・
DataSetをOpen,Closeするだけでどんどん増えていく・・・
なぁ、神よ、、お馬鹿なわしは直すことができない
どうか力をかしてくれまいか・・・
そのコンポ使ってないから何とも言えないが
公開されてるコンポにエラーがあるなら作者に通報すべき
くれぐれも勘違いで先走らないようになw
いや、それがもうDelphi使って無いらしくて
サポートできないと言われました・・・
はぁ、まじ鬱だ、、自分の技術力の無さに・・・
>>970 メモリリークなんてほとんど修復不可能じゃん。
あきらめてそのコンポを使うのやめれ。
わかりました・・・
あきらめて、他を探してみます
返答、ありがとうございました
>>972 > いや、それがもうDelphi使って無いらしくて
> サポートできないと言われました・・・
見てみるから、ソース頂戴って言ってみたら ?
次スレ立てます。
>>975 実はソースはあるのですが
ほんとかなりの量で、しかもDataBase系のコンポ・・・
DataLinkとかなにやら聞いたことのないものから継承してて・・・
今日もしばらく見てみましたが、けっきょくわからず・・・
ただただ、私の技術がないのを再確認しただけにいたりましたです・・・
>>979 > ただただ、私の技術がないのを再確認しただけにいたりましたです・・・
なら、あきらめるしかなかろ。
アイコンをタスクバーにもアイコントレーにも表示させないように
するにはどうすればいいですか?
TListViewのColumnを実行時に増やすにはどうすればいいですか?
>>983 var
NewColumn: TListColumn;
(中略)
NewColumn := ListView1.Columns.Add;
NewColumn.Caption := '見出しだ';
…みたいな感じで.
ありがとうございますた。
986 :
デフォルトの名無しさん:04/04/06 01:02
>>970 今のPCはメモリいっぱい積んでるんだから気にするな。
クライアントで動かすんなら就業時間しか使わないから、日々PC再起動で問題ないでしょ。
あとでこっそり直しとけ。
ソース見て直せばいいのに。
俺だったら嬉々としてやるね。
ソースがあって、Open,Closeするとリークするって解かってるんなら
結構簡単に治るかもよ。
まず、リークしてるオブジェクトを特定する
VCLオブジェクトならNameやClassNameから検索できるだろう
質問です。
FindClose関数を呼び出すと必ずTSearchRecが引数になっている方が
呼び出されるんですか?
Windows.pasにWin32APIのFindCloseの定義が書かれていますが
こちらを呼ぶ場合は毎回Windows.FindCloseなどのような書き方を
する必要があるんでしょうか。
よろしくお願いします。
FindClose() は、SysUtils.pas、そして、Windows.FindClose はいうまでもなく
Windows.pas にある。コンパイラは uses 節の後ろのほうから探すので、上記の
pas の順番を入れかえると、Windows.pas のほうが優先される。しかし、ほかにも
API とダブってる関数やメソッドがあるので、順番の入れ替えはしない方がいい。
毎回 Windows.FindClose() のように書くのを勧めます。
なるほど、よくわかりました。
誠にありがとうございました。
BCBでわざわざGraphics::TBitmapと書くのが面倒です。
そうだね、Windows の TBitmap はレコード型だったね。Delphi では普通、
uses 節の前のほうに Windows があるので、クラスの TBitmap はそのままで
使えるね。
なぜこのスレにBCB
typedefで書きやすい名前にしるぇ
>>リーク直せない(´・ω・`)
そういうときこそGarbage Collectionコンポの導入ですよ
昔どっかに落ちてて拾ったょ
999
⊂⌒~⊃。Д。)⊃
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。