モナーの *やさしい* Delphi質問スレ Ver.7
■ このスレッドは過去ログ倉庫に格納されています
0001Delモナー ◆fPymXWHY
NGNG( ´∀`)<. Delモナーがどんな厨房疑問でもやさしく答えます。
( ) .| Delモナーは時に私であり、時には別の人。
| | | | 他のスレに書き込んで罵倒される前に、まずここで質問しよう。
(__)_) \_________________________
前スレ モナーの *やさしい* Delphi質問スレ Ver.6
http://pc.2ch.net/test/read.cgi/tech/1019134412/
前スレが埋まるまでは書き込まないで
(あるいはsage進行にして)ください。
>>2-10あたりに関連情報あり
○過去スレ >>2
○関連スレ >>3-5
○Delphi製品情報 >>6
○関連リンク >>7
○質問者へ・回答者へ >>7
○ソース置き場案内 >>8
0159デフォルトの名無しさん
NGNGTListBoxEx = class(TListBox)
private
FOnChangeItemIndex: TNotifyEvent;
protected
procedure SetItemIndex(const Value: Integer); override;
published
property OnChangeItemIndex: TNotifyEvent read FOnChangeItemIndex write FOnChangeItemIndex;
end;
procedure TListBoxEx.SetItemIndex(const Value: Integer);
begin
inherited;
OnChangeItemIndex(Self);
end;
0160デフォルトの名無しさん
NGNGチミのプログラムには欠陥が2つある。
一つは、リストボックスの選択項目の変更を補足し切れていないこと。
SetItemIndexをオーバーライドしても、プログラム内部からItemIndexをいじったときにしか拾えない。
最低でもWM_COMMANDとLB_SETCURSELというメッセージを拾わなければならないはず。
もう一つはOnChangeItemIndexイベントに手続きが割り当てられていない時を考慮していない
実行すると100%エラー
しかし、その目的のためだけなら、目的の処理を記述した関数を作って、
OnClickイベント内と、ItemIndexを変更するコードの直後に
その処理関数を呼び出た方が手間食わずに良いと思われるが。
まあ、とりえあえずヘルプ読んで出直しなさいってこった
0161デフォルトの名無しさん
NGNG0162デフォルトの名無しさん
NGNGtype
TListBoxEx = class(TListBox)
private
FOnChangeItemIndex: TNotifyEvent;
public
procedure CNCommand(var Msg:TWMCommand);message CN_COMMAND;
procedure LBSetCaretIndex(var Msg:TMessage);message LB_SETCARETINDEX;
procedure LBSetCurSel(var Msg:TMessage);message LB_SETCURSEL;
published
property OnChangeItemIndex: TNotifyEvent read FOnChangeItemIndex write FOnChangeItemIndex;
end;
{ TListBoxEx }
procedure TListBoxEx.CNCommand(var Msg: TWMCommand);
begin
inherited;
case Msg.NotifyCode of
LBN_SELCHANGE:
if Assigned(FOnChangeItemIndex) then FOnChangeItemIndex(self);
end;
end;
procedure TListBoxEx.LBSetCaretIndex(var Msg: TMessage);
begin
inherited;
if Assigned(FOnChangeItemIndex) then FOnChangeItemIndex(self);
end;
procedure TListBoxEx.LBSetCurSel(var Msg: TMessage);
begin
inherited;
if Assigned(FOnChangeItemIndex) then FOnChangeItemIndex(self);
end;
0163163
NGNGSetLength(s, Length(s)-1);
とやった場合、自動的にsの末尾の文字はメモリ上から解放されるのでしょうか?
0164デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNG場合によっては末尾の#0は解放されるかもしれません されないかもしれません
0167デフォルトの名無しさん
NGNG0168delphi6personal
NGNG新しいFormを作った方がいいんでしょうか?
ただ、一つ増やすだけで実行ファイルの大きさがほぼ2倍に…。
やはり動作が軽い方がうれしいんですが。
0169デフォルトの名無しさん
NGNG\ - /
0170デフォルトの名無しさん
NGNG男ならコンソール。
0171デフォルトの名無しさん
NGNG0172デフォルトの名無しさん
NGNG0173デフォルトの名無しさん
NGNG>一つ増やすだけで実行ファイルの大きさがほぼ2倍に…。
こういうことはありえません。
0174デフォルトの名無しさん
NGNG0175デフォルトの名無しさん
NGNG>VCL使いまくりなんでFormの上がごちゃごちゃになってます。
VCL は Delphi ひとつにひとつしかありません。
0176デフォルトの名無しさん
NGNG>UPXで、あっしく
これをすると何が楽しいのでしょう?
0177デフォルトの名無しさん
NGNG>s := 'ABCDEFG';
>SetLength(s, Length(s)-1);
>とやった場合、自動的にsの末尾の文字はメモリ上から解放されるのでしょうか?
おもしろい質問だね。「そうじゃない」という答えがあったらどうするつもり
なんだろうね。
0178デフォルトの名無しさん
NGNG本についてるサンプルコードの「書込み禁止」を解除したいのですが、できません。
右クリックで出るヤツのチェックをはずしてもダメでした。
どのようにすればいいですか?
0179デフォルトの名無しさん
NGNGそれ以上の方法はない。
CD-ROMのファイルとか言ったら殴る。
0180デフォルトの名無しさん
NGNGReset(f);
for i := 0 to c do
BlockWrite(f, Data[i]);
という感じにしたとき、Closeするまでファイルに書き込まれる全データは
メモリ上に確保されているのですか?
0181この話題は散々既出だが
NGNG圧縮率とかによって違うかも知れないが、1MB程に膨らんだアプリが
やはりモノ次第ではあるが約300K程度に縮んで、
アプリの起動が速くなることがある。
あとネットワークでプログラムを配布したいとき、
FD等の低速少容量メディアで常用したいときも、
結構(゚д゚)ウマーになれる。
要は目的次第で使うか使わないか決めればいいだけ。
馬鹿の一つ覚えのように全部のプログラムにやる必要はない。
0182デフォルトの名無しさん
NGNG、、、なんというか、、申し訳ありません、、。できました。
>右クリックで出るヤツのチェックをはずしても
エディタ上でこれをやってました。(コンパイルもセーブも不可)
Delの外からフォルダ内の全部のヤツの「読み取り専用」のチェックをはずしたらできました。
約1日のどツボでした、、。ありがとうございました。
0183デフォルトの名無しさん
NGNG直接APIを叩くか sndvol32.exe を実行。
/R オプションとか付けて実行すると録音ボリュームが出せるよん。
0184168
NGNG0185デフォルトの名無しさん
NGNGひとりより、ふたりがいい♪
ふたりより、さんにんがいい〜♪
0186174
NGNGサンクス!助かりました。
0187デフォルトの名無しさん
NGNGサンバルカンかよ!!
0188デフォルトの名無しさん
NGNGHですか?
0189デフォルトの名無しさん
NGNG>>188 ひとしくん人形没収
0190デフォルトの名無しさん
NGNGっていう問題を教えてください
0191デフォルトの名無しさん
NGNGいい加減にしな。
0193デフォルトの名無しさん
NGNG一重積んでは母のため・・・
二重積んでは父のため・・・
0194デフォルトの名無しさん
NGNG場合によりけり。これだけの情報ではなんともいえん。
ただ2つにするなら、2つ目は自動作成の対象から外しとけよ。
0195168
NGNGthx!
0196デフォルトの名無しさん
NGNGFileSizeを使用すると、開かなければならないし、テキストファイルはできないみたいだし。
0197デフォルトの名無しさん
NGNGAPIにないか?
0198196
NGNG自己レス
解決しました。
TSearchFile.Sizeで取得できました。
0199デフォルトの名無しさん
NGNG繰り返し中にエラーが出た場合、エラー処理後次の繰り返しの処理を
行ってほしいのですがどうすればいいでしょうか?
try
for i:=0 to count-1 do
listview.Items.Item[i].SubItems.Add(strName[i]);
except
on EOLeException do begin
lstFile.Items.Item[i].SubItems.Add('エラー');
statusbar.Panels[0].Text:='エラーです');
//ここで次の繰り返しに処理が戻ってほしいです
end
end;
0200デフォルトの名無しさん
NGNG0201デフォルトの名無しさん
NGNGfor i:=0 to count-1 do
try
listview.Items.Item[i].SubItems.Add(strName[i]);
except
on EOLeException do begin
lstFile.Items.Item[i].SubItems.Add('エラー');
statusbar.Panels[0].Text:='エラーです');
end
end
0202デフォルトの名無しさん
NGNGforの中にtry入れれば動きそうな・・・。
0203デフォルトの名無しさん
NGNG何故そのような複雑怪奇なブロック構造…はどうでもいいが、
単にforループの中にtry〜exceptを記述したらだめなの?
0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNG0206真人間
NGNGいいと聞いたんでこれからフリー版で
始めてみようかなとおもっとるんですが。
ちょっとした簡単なソフトを作成するぐらい
だとして、開発環境にはデルファイ本体含めてどれくらいの
容量を必要としますか?
HDDが残り6Gなので心配ですです。
あと、でるふぁいをインストールしたことで
なにかしら問題がおこったり、アンインストールが
大変だったりしませんか?
よろしくお願いします。
0207デフォルトの名無しさん
NGNGネタですよね。
0208デフォルトの名無しさん
NGNGダウンロードページにも行かないで真人間とか言われても困る。
それくらいの実験も出来ないで〃
0209デフォルトの名無しさん
NGNG0210デフォルトの名無しさん
NGNGそう言えば女神様の顔結構長時間見てた記憶が・・・。
BCBよりは有機質的で好きだけど。
起動後はさくさくだけどね。
0211デフォルトの名無しさん
NGNG0212デフォルトの名無しさん
NGNGそう言えばVB、コンパイル中のプログレス結構長時間見てた記憶が・・・。
VCよりは早くて好きだけど。
コンパイル後はバグバグだけどね。
0213デフォルトの名無しさん
NGNGインストールできないという罠。
0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNGつぅか未だにRC使ってるってタイーホ。
0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNG表示がおかしくなるのですが(256を越えると0に戻るっぽい)
1つのセル(?)の高さを256ピクセル以上にする方法は
無いもんでしょうか?
0218真人間
NGNGコンパイルが早いとかはもう調べてありますし、
ボーランドのサイトにもいって落としそうにもなりました。
聞きたいのは、でるふぁいの本体のサイズとかじゃなくて
なにかしら小規模なアプリを作成出来るような環境にするには
どれくらいのスペースが必要ですかということなんでし。
本体展開すればそれであとは必要ないんでしょか?
ねたじゃないでう。
0219デフォルトの名無しさん
NGNGDrawGridかなんか使うしかないんかな。
0220デフォルトの名無しさん
NGNG6GBありゃ十分、
開発するシステムの規模によるが、小規模アプリなら
ひとつで bin / src あわせても 10MB ぐらいじゃないの。
0221デフォルトの名無しさん
NGNGCD3枚入れたとしても半分も埋まらないのに…
0222デフォルトの名無しさん
NGNGDelphiで10MBは中規模かと。
日曜プログラマとしては。
0223デフォルトの名無しさん
NGNG0224デフォルトの名無しさん
NGNG0225真人間
NGNGいやー、mpgは容量食うんで、いま6Gでもそのうちなくなっちまうんじゃ
ないかと。
そろそろCDRに焼きたいんですが、自分家にはないもんでなかなか・・・。
どうもでした。
まずはHSPから始めてみようと思います。
0226デフォルトの名無しさん
NGNG0227デフォルトの名無しさん
NGNGHNからしてネタ
0228デフォルトの名無しさん
NGNGどうでもいいけどあなたは誤った道を選択したと言っておく。
あくまで俺の価値観だから気にしなくても良いよ。
0229デフォルトの名無しさん
NGNGいいヤツと聞いたんでこれからメルトモとして
付き合い始めてみようかなとおもっとるんですが。
0230真人間
NGNG本当にアリガトウございました。独女板にかえります。
0231デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNG0233デフォルトの名無しさん
NGNG0234デフォルトの名無しさん
NGNG0235デフォルトの名無しさん
NGNG0236デフォルト
NGNG0237デフォルトの名無しさん
NGNG0238199
NGNGエラーが出たらtryから抜けるのでfor文の中に入れればいいのですね
ひとつ賢くなりました。
0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNG0241デフォルトの名無しさん
NGNG0242デフォルトの名無しさん
NGNG0243デフォルトの名無しさん
NGNG画像を表示させて画像をマウスで選択したら、選択したところを拡大
するようにしたいので、まずmousedownイベント時にX座標とY座標を
記憶させ、mouseupイベントでマウスボタンを離した場所のX,Y座標から
選択範囲を計算させintX:=abs(startX-X);intY:=abs(startY-Y);
perX:=imgEdit.Width / intX;perY:=imgEdit.Height / intY;
imgEdit.zoom:=(min(perX,perY))*100;
というふうに拡大率を出し、(startX,startY:選択開始位置)
imgEdit.ScrollPositionX:=startX;imgEdit.ScrollPositionY:=startY;
と画像を表示する場所を指定してあげても指定した位置に表示されません
どうかお願いします
0244デフォルトの名無しさん
NGNG獲得ページにて毎日ポイント獲得!広告すると毎日のポイント増えるかも!?
http://www.fkfk.net/PrPointMail/PointMail.ASP?WCI=Home&WCE=125176
======================================================== [ ▲PR ] ====
銭欲しいか?
0245デフォルトの名無しさん
NGNG0246デフォルトの名無しさん
NGNG過去ログぐらいみやがれよ、散々がいしゅつだが使えます。
ちっとはweb検索しやがっていただきたく思う所存にございます。
0247246
NGNGhttp://turbo.gamedev.net/delphixd6.asp
ホレ。
0249デフォルトの名無しさん
NGNGを作っていい?
いや、別スレ立ててまでやる必要はないとは思うが、
こういう事やっていいスレはどこかにないか?と。
0250デフォルトの名無しさん
NGNGとりあえず、相談室あたりでネタが続くかどうかやってみてからでも遅くないのでは?
0251デフォルトの名無しさん
NGNGフォームが閉じられた時にparentで指定したオブジェクトが開放されると
動的に生成したオブジェクトも開放されるのでしょうか?
それとも FormのDestroyあたりで、明示的に開放しないと駄目でしょうか?
こんな感じでやってます、
procedure TForm1.FormCreate(Sender: TObject);
var
i:Integer;
begin
for i:=1 to 99 do
begin
Frame[i]:=TFrameDenBody.Create(Self);
Frame[i].Parent:=Self.ScrollBox1; //<---フォーム上のScrollBoxの上に作成
Frame[i].Visible:=True;
Frame[i].Name:='iFrame'+IntToStr(i);
Frame[i].AutoSize:=True;
Frame[i].Top:=(Frame[i].Height*(i-1));
end;
あと、実際開放されているか否かを確認する方法ってパフォーマンス
モニタで確認するのでしょうか?それとも何か良いツールがありますか?
あれば教えて下さい。
0252デフォルトの名無しさん
NGNGvar
i:Integer;
begin
for i:=1 to 99 do
begin
Frame[i]:=TFrameDenBody.Create(Self);
なんでこんなのをうつと
プログラムになって
pcがうごくのかよくわからん
0254デフォルトの名無しさん
NGNG2、解放されたかどうかを見たいなら、
type TFrameDenBodyExt=class(TFrameDenBody)
public
destructor Destroy; override;
end;
として destructor TFrameDenBodyExt.Destroy; でログに吐いてみたら?
例えば
destructor TFrameDenBodyExt.Destroy;
begin
AllocConsole; writeln(Name);
inherited;
endl;
とか
もちろん 作成は
Frame[i]:=TFrameDenBodyEx.Create(Self);
0255Delフサギコ ◆zE1iiRdQ
NGNG> Frame[i].Parent:=Self.ScrollBox1; //<---フォーム上のScrollBoxの上に作成
FrameのOwnerはSelf=Form1
FrameのParentはScrollBox1
Ownerが破棄されるときには一緒に破棄されるけど
Parentが破棄されても一緒には破棄されんかったと思う。
Parentが破棄されると消えちゃうけど。
 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
∧,,∧
ミ,, ゚Д゚彡
〃つ旦O
〜ミ,,[ ̄ ̄ ̄.]
 ̄ ̄ ̄
0257251
NGNGつまり、Create(Self.ScrollBox1)の方がいいって事でしょうか?
0258デフォルトの名無しさん
NGNG折れは Frame[i]:=TFrameDenBody.Create(Self);でいいと思うよ。
但し、初期化をサボってOwnerを破棄して再作成する事で初期化するってなら、scrollbox1を指定した方が楽かな。
■ このスレッドは過去ログ倉庫に格納されています