( ゚Д゚)ノ Delギコ猫のプログラミング相談室part2
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001Delギコ
01/09/03 11:09ID:wHGoXFco∧∧ /Delphiやその他のプログラムのこと
〜''~(,,゚Д゚) < 聞いてヨシ
UU'UU \
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
前スレはこちら
( ゚Д゚)ノ Delギコ猫のプログラミング相談室
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=997348797
0003Delギコ
01/09/03 11:09ID:wHGoXFco___ ヽ
_ /⊂ `∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | \( ゚Д゚)< 答えられない事もあるが、切れるなよ
| / ∪ ∪ \____________________
 ̄ ダレデモ シラナイコト ハ アル
0004Delギコ
01/09/03 11:10ID:wHGoXFco電 |
|∧ ∧
柱 |,,゚Д゚) <アラツは勘弁してね。
⊂ |
| | コノスレ ガ 板ヨゴシ トカ イワナイデ
|∪
, ' , ; ' ;
∧∧∩゛ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(,,゚Д゚)ノ < ではヨロツク
U / \____________
| |
ノ∪∪
0005Delギコ
01/09/03 11:11ID:wHGoXFco☆ ・ ゚ *
* ☆ ・
゚ ☆ *
∧ ∧ トンデ ヨシ
(,,゚Д゚) つ *
─ γ  ̄ ̄ ̄ ̄ ヘ ゚
─ ─ /◎ ○ ◎ ○ヘ
─ ─ <_______> ・
─ `―' `―' `―'
_∧ ∧________ ∧ ∧ __
(_(,,゚Д゚).________(,,゚Д゚).__○
⊂ ノ│ 2chねる │ ⊂ ノ
〜| _つ│ 復旧中 | 〜| _つ
し '  ̄ ̄ ̄ ̄ ̄ し '
0006Delギコ
01/09/03 11:43ID:wHGoXFco♪ ∧ ∧ ∧ ∧♪
(,,゚Д゚) (゚Д゚,,) ソウシマショウ
/つつ⊂⊂ヽ
〜 ノ | |〜
(/ し ∪∪
まずは2chで話題になったとき
ソースを置く場所。
Delphi Source Files
http://www.ziyu.net/%7Erent/bbs/bbs.cgi?room=delphi6
置いてよし認定委員会
http://www2.to/source
0007デフォルトの名無しさん
01/09/03 11:55ID:erQfTfbg0008Delギコ
01/09/03 11:56ID:wHGoXFco改行が多すぎます
 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
∧ ∧
(,, ゚Д゚)∫
/ つ旦O
〜(._[ ̄ ̄ ̄.]
 ̄ ̄ ̄
Tipsサイト
Delphi Acid Floor http://homepage2.nifty.com/boheme/top.html
Leafel's note Programing http://hp.vector.co.jp/authors/VA015850/program.html
日本Delphi振興会 http://hp.vector.co.jp/authors/VA009712/take/delphi/kabetop.htm
Delphi神殿Tips http://nug.nasu-net.or.jp/~sakai/delphi/index.html
M&I Tips http://member.nifty.ne.jp/m-and-i/tips/tipspage.htm
Gen'sDelphiLabo http://www2.biglobe.ne.jp/~sakai/gensfaq2.htm
FDelphi http://www.nifty.ne.jp/forum/fdelphi/faq/title.htm
Borland Q&A Delphi http://www.borland.co.jp/qanda/delphi/index.html
Borland Tips Delphi http://www.borland.co.jp/tips/delphi/index.html
RG VEDA DELPHI TIPS http://homepage1.nifty.com/beny/delphi.html
Sky Engine by Delphi http://www.geocities.co.jp/SiliconValley-SanJose/7625/index.html
AboutDelphi http://www2.big.or.jp/~osamu/Delphi/
Win32 API by Object Pascal of Delphi http://halbow.cool.ne.jp/top.html
COSMIC TOWER DELPHI MILLION TIPS http://homepage1.nifty.com/cosmic/delphi/delphitips.html
Delphi広場faq http://www.sakaki.keiaikai.or.jp/faq.html
としのホームページTIPS http://hp.vector.co.jp/authors/VA003525/tips.htm
STUDIO MU Delphi Q&A http://www.para.tutics.tut.ac.jp/~ohno/mu/devroom/delphi_qa_g.html
中村の里 http://www.asahi-net.or.jp/~HA3T-NKMR/delphi.htm
進め!中級プログラマ http://www.asahi-net.or.jp/~GV4J-SGUR/narik/susucyu.htm
Ken's Software Delphiの話題 http://homepage1.nifty.com/kens-hp/delphi.htm
Katsuya's Home http://www.apionet.or.jp/~tubokura/k_tips.html
Ak's Laboratory[Delphi Construction] http://www2s.biglobe.ne.jp/~aks-lab/delphi_lecture.htm
MADIAのVB研究室|Delphi Page http://homepage1.nifty.com/MADIA/Delphi/Delhpi.htm
DEKO Delphiによるテクニック&アルゴリズム http://homepage1.nifty.com\ht_deko\techalgo.html
0009Delギコ
01/09/03 11:57ID:wHGoXFco ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
∧ ∧ AAハ イヂデモ ハル ニャー
(,, ゚Д゚)∫
/ つ旦O
〜(._[ ̄ ̄ ̄.]
 ̄ ̄ ̄
初心者向け
Do It YourSelf---Life with Delphi http://home.onestop.net/mineko/index2.html
ゼロからDELPHI講座 http://www.text2music.com/mine/delphi/index.html
Delphi プログラミング事始め http://www2s.biglobe.ne.jp/~hatena/delphi/index.html
Delphi(デルファイ)のページ http://www.threeweb.ad.jp/~satou/
「Delphi 買ったけど。。」 http://hp.vector.co.jp/authors/VA009187/delkedo/
VBから
Switching Delphi / VB http://member.nifty.ne.jp/deepforest/vbdel.htm
Visual Basic から Delphi/Kylix への移行ガイド http://www.borland.co.jp/delphi/papers/vbtodel/
[ でべろっぱのすすめ ]と[ じあぴ ] http://www.ab.wakwak.com/~greenspace/dev-api/
DelphiAcidFloor VBtoDelphi http://homepage2.nifty.com/boheme/delphi/vbtodel/index.html
Taurus' Home Page Delphiの部屋 http://user.shikoku.ne.jp/kasai/delphi1.html
C++から
Delphi&C++Builder&VisualBasic徹底比較Ver0.4 http://member.nifty.ne.jp/h_kova/procomp.htm
Gonta's Room http://www2a.biglobe.ne.jp/~gonta/
初心者から上級者まで御用達
DelphiML検索 http://www2.big.or.jp/~osamu/Delphi/
Delphi広場 http://www.sakaki.keiaikai.or.jp/
BorlandManiacs http://member.nifty.ne.jp/h_kova/
コンポーネントのことなら
DelphianWorld http://home1.infonia.ne.jp/~delphian/delphi/
DelphiSuperPage http://delphi.icm.edu.pl/
環境のカスタマイズなら
GExperts http://www.gexperts.org/
フリーカーソル無効化アドイン http://homepage1.nifty.com/fuu/
書籍案内
Delphi 書籍ランキング
http://home1.infonia.ne.jp/~delphian/delphi/history/book.html
http://home1.infonia.ne.jp/~delphian/delphi/history/bookrank2/book.html
Delphi初心者のための道しるべ http://www.valley.ne.jp/~masaiku/index1.htm
Delphi 関連書籍 http://www.borland.co.jp/bookinfo/delphi.html
0010Delギコ
01/09/03 11:59ID:wHGoXFco,,'''~''~'∧,,∧
〜′,,,;;,, (,゜Д゜) >>7 オマエが晴れ
UU" " U U
0011名無しさん
01/09/03 12:13ID:DHdGRFqU〜□□ □□ ( ゚Д゚)< コピペ貼ったYO!
(O)----(O)U-U) \__________
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999486538&res=1
0012デフォルトの名無しさん
01/09/03 12:30ID:oDYd29Ko同名ファイルが存在するときに警告が出るよね?
仮に、あるディレクトリに
hoge.txt
hoge.html
hoge.csv
の三つのファイルがあったとする。
フィルタから テキスト文書(*.txt) を選んで hoge と入れても、
確認プロンプトは出ないよね。 hoge.txt ではないから。
フィルタから HTMLドキュメント(*.html) を選んで hoge と入れても、
確認プロンプトは出ないよね。 hoge.html ではないから。
だから、ダイアログ内のテキストエディタに入力した時点で
拡張子を補完し、上書き確認メッセージを出したかった。
これって需要あると思う、マジで。
0013Delギコ
01/09/03 12:34ID:wHGoXFco(;゚Д゚) ちょっと調べなければわからないのよ。
(| |つ CommonDialogを拡張して何かをするような
〜| | 技術情報をしらべなさい。>>MLのログに載ってるはず
∪∪ 折れはそれにはまだ疎い
氏ってる人教えてあげて。
0014デフォルトの名無しさん
01/09/03 12:48ID:NDgF6l0QDelギコ猫って双子だったのか?
0015Delギコ
01/09/03 12:56ID:wHGoXFco\\ //
(\\ //)
\\\ ///
(\\\\ ////)
(\\\\\ /////)
\\ ||| ||| //
( ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\ | ⊂⊃ ⊂⊃ | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄)
 ̄ ̄( ̄ ̄//// ̄\ ∧ ∧ ∧ ∧ / ̄\\\\ ̄ ̄) ̄ ̄
 ̄(//// ̄\\( ゚Д゚) (゚Д゚ )// ̄\\\\) ̄
(/(/// ̄(つ つ ⊂ ⊂) ̄\\\)\)
(/(/| | | | \)\)
(/((/ ∧| |∧ V))\)
∪ ∪ ∪ ∪
ニヂウ ジンカク カモ
蛯型だし
0016Delギコ
01/09/03 14:28ID:wHGoXFco| ∪ |
| 〜
|∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ,,゚Д゚)つ < 質問いいかな。
U \________
クラスメソッドというのはわかるのだが
クラスフィールドというのは
どうやってつくるのだ?無理なのかな。
1クラスで共通に保持したい内容があるのだが。
0017名無しさん
01/09/03 14:31ID:DHdGRFqU〜□□ □□ ( ゚Д゚)< >>12 本当にそう動作するか確認したナリか?
(O)----(O)U-U) \__________
とりあえずD4ではそう動作しなかったナリ
testと入れて*.txtから*.cvsにフィルタ変更しても「test.txtに上書きしますか?」と出るナリ
つまりファイル名入れた時点の拡張子がファイル名に付随して有効になっているナリ
txt/cvs/html全部でどう切替えても訊いてくるから前提がおかしいナリ
推察するに、この時フィルタ変更にファイル名を追随させたのか?
0018デフォルトの名無しさん
01/09/03 14:33ID:earer8Ngimplementation
var TMyClass_ClassField: Integer;
とかやってるけど
0019デフォルトの名無しさん
01/09/03 15:03ID:oDYd29KoいまD6つかってるけど、聞いてこないよ。
それはデフォルトの拡張子にTXTを指定してるからじゃないかな。
デフォの拡張子を無しにすると、拡張子のないファイルを
入力しても、何も言ってくれない。
0020デフォルトの名無しさん
01/09/03 16:01ID:fdEwavAEおれもそんな感じ。
外部からアクセスしたいときはクラスメソッド経由で。
0021Delギコ
01/09/03 16:42ID:wHGoXFco∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(,,゚Д゚) < 現在 実装中
Π ̄ ̄ ̄| \
|つ 感謝 ()  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| |___.|
∪∪
0022名無しさん
01/09/03 18:05ID:DHdGRFqU-下手人--∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜□□ □□ ( ゚Д゚)< >>17 FilterIndex=0で再現〜
(O)----(O)U-U) \__________
疑って正直スマン
選択してるフィルタってGET出来ないでやんのクソだね
0023Delギコ
01/09/03 18:24ID:wHGoXFco∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ゚Д゚)っ < SaveDialog1TypeChangeイベントじゃないの?
|''U ̄| \_________________________
| ̄ ̄|
/ ゙ヽ
( ゚Д゚ )
人____ノ
0024Delギコ
01/09/03 18:25ID:wHGoXFco@' ― (,,゚Д゚) < クラスフィールドって、こんなんで実現する?
し― し-J \___________
自分自身のクラスインスタンスを保持する方法
interface
省略
implementation
var
FMyClassList: TList;
constructor TMyClass.Create(AOwner: TComponent);
begin
inherited;
FMyClassList.Add(Self);
end;
destructor TMyClass.Destroy;
begin
FMyClassList.Extract(Self);
inherited;
end;
initialization
FMyClassList := TList.Create;
finalization
FMyClassList.Free;
end.
これでFMyClassListのCountみたら同一クラスがいくつあるかわかるし
中身みたら他のものも参照できるしね。
0025Delギコ
01/09/03 18:52ID:wHGoXFco(( ∩ )) プルプルプル
γ'⌒ヽ∧ ∧
し'ゝつ( ゚Д゚)つ
D6のTLabeledEditの真似っこコンポーネント
TComponent派生で
BaseControlとMoveControlをプロパティで設定して
Baseが動けばMoveも動くようなものを作ってたんだよ。
IDEが落ちて落ちてまいったよ。
しかも使いにくくてだめだめだわ。
IDE上で動作するプログラムってすごく大変。
アンカーともろぶつかるし
こいつの2つのインスタンスが
Edit → Button
Base→Move
Move←Base
と設定されると無限に移動しつづけて行方不明になる不具合を
防止するためにクラスフィールドが欲しかったのよ。
教えてくれてありがとね。勉強になった。
なんかに応用できるといいんだがな。
何に応用するんだろう。
0026デフォルトの名無しさん
01/09/03 19:20ID:MMfG58TcComponentStateプロパティみて
実行時・設計時などの状態を判別させながらやらんといかんから
ちゃんとしたコンポつくんのってけっこうたいへんなんだよね。
0027デフォルトの名無しさん
01/09/03 21:18ID:7q79cUcE4年間DELやってるけど、初めて聞いた(ようなきがする)
0028デフォルトの名無しさん
01/09/03 22:58ID:fdEwavAE0029デフォルトの名無しさん
01/09/03 23:19ID:39wrh3fk0030Delギコ
01/09/03 23:31ID:7WmdGYpw(,,゚Д゚)< 実装みりゃ意味通じるだろ。
|つ つ \ ユニットオブジェクトとでも言えば通じるのか?
@ |
∪ ∪
0031デフォルトの名無しさん
01/09/03 23:32ID:GJWptisMところで、このスレがスレッド一覧からじゃないと見えないのは
俺のところだけかな?
0032デフォルトの名無しさん
01/09/03 23:32ID:GJWptisM???
0033デフォルトの名無しさん
01/09/03 23:37ID:7WmdGYpwURLのindex2.htmをindex.htmに直してください
0034Delギコ
01/09/03 23:42ID:7WmdGYpw( )
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(゚Д゚,,)< 風呂は良いね、心を満たしてくれる。
| ̄ ̄ ̄| \_______
|二二二|
|___|
从从从从
( )
( )
( ) ( )
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(゚Д゚,,)_ < なんか熱くなってきた。
|U ̄U | \_______
|二二二|
|___|
从从从从
0035Delギコ
01/09/03 23:43ID:7WmdGYpw( )
( ) ( )
( ) ( )
∧ ∧( ) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(;゚Д゚) < ウオァチャァ!!
/ づ \_______
| ̄ ̄ ̄|
|二二二|
|___|
从从从从
( )
( )
( ) ( )
____バシャァ
| | │ |∧ ∧ ・・・・・
从从 | | │ |(*゚Д゚)
从从从从 | | │ | _つつ
 ̄ ̄ ̄ ̄~~~~~~~~~~~~~~
0036Delギコ
01/09/03 23:44ID:7WmdGYpw∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(゚Д゚ )_ < すごいスレがたってるな。
|U ̄U | \_______
|二二二|
|___| トコトコ
U U
ゞゞ
ゞゞ
Delphi でつくろう!Pure-P2P 掲示板
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=999527387
モナーテラプロジェクトかしら。
0037デフォルトの名無しさん
01/09/03 23:49ID:1zSk4pr20038デフォルトの名無しさん
01/09/03 23:49ID:1zSk4pr20039名無しさん
01/09/04 00:06ID:m9mxC.IA〜□□ □□ ( ゚Д゚)< >>23 イベント発生はつかまるが、じゃあ今何番目のフィルタかな〜ってのが取れん
(O)----(O)U-U) \ FileNameにも拡張子は憑いてやがらねぇナリ
.. \__________
0040デフォルトの名無しさん
01/09/04 01:17ID:nORTkWNE| |
∧_∧ | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´Д`)// < 先生!>>36のスレ終了早すぎます!!
/ / \
/ /| /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
__| | .| | __
\  ̄ ̄ ̄ ̄ ̄ \
||\ \
||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
.|| ||
0041デフォルトの名無しさん
01/09/04 02:28ID:JE/PAhhIおおおお
できたよォォォォ
SaveDialog1 の Filter に
TXT|*.txt|HTML|*.html|CSV|*.csv
を指定。OverwritePrompt を True にして
TypeChange イベントに以下のコードを。
case SaveDialog1.FilterIndex of
1: SaveDialog1.DefaultExt:='txt';
2: SaveDialog1.DefaultExt:='html';
3: SaveDialog1.DefaultExt:='csv';
end;
これで、拡張子に応じて上書き確認出るよ!
ただ…
1回目はどんなにいじっても上書き保存は表示されず、
2回目以降に表示したときに、上書き保存メッセージが
ちゃんとでてくるようになる。ナゼダ
0042デフォルトの名無しさん
01/09/04 02:53ID:wmtIYgNo0043デフォルトの名無しさん
01/09/04 03:09ID:aXNgoToA| |
∧_∧ | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´Д`)// < 先生!AAをクロスプラットフォームにしたいです。
/ / \
/ /| /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
__| | .| | __
\  ̄ ̄ ̄ ̄ ̄ \
||\ \
||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
.|| ||
0044デフォルトの名無しさん
01/09/04 03:12ID:caAHKA7MGIFかJPGにすれば良いよ
0045デフォルトの名無しさん
01/09/04 03:16ID:HYOp.zqI0046デフォルトの名無しさん
01/09/04 04:46ID:hGMwuNT.タイピングゲームを製作中なのですが、
問題文をLabelで表示しています。
しかし、問題文が変わるとき、正確には
問題文の長さ(つまりLabelのCaption)
が変わるときにフォーム全体がちらつきます。
リアルタイムのゲームとしては非常に
気になるところなのですが、なんとか
直す方法はないでしょうか?
0047正しい答え
01/09/04 04:49ID:QTCWvBIAただし Tlabel.Repaint; を呼んではいけない。
0048デフォルトの名無しさん
01/09/04 08:00ID:QjlESLvEMLからヨウコソ!!
0049Delギコ
01/09/04 10:13ID:rI/kNmo6(,,゚Д゚) < おはようございまる
./ <V> \___________
( U ノ
.U U
>先生!AAをクロスプラットフォームにしたいです。
リナクス板へGO
折れのNT4&IE5.5でもAAがズレるので
ここはじっくり我満の子
SaveDialog問題は完全解決ということでよいですの?
半分カイケツしただけでほったらかしというのがMLには多いし。
>MLからヨウコソ!!
|
|
| ∧ ようこそようこ ッテ シッテル?
|Д゚)
⊂|
| `〜
|∪
 ̄ ̄ ̄ ̄ ̄ ̄ ̄
アイドルの田中ようこハ タバコ スッテテ ツカマチャタ ンダヨネ
0050デフォルトの名無しさん
01/09/04 11:20ID:MmUrMvH6■SaveDialog 問題結論
SaveDialog1 の Filter に
TXT|*.txt|HTML|*.html|CSV|*.csv
を指定。OverwritePrompt を True 、
DefaultExt txt に指定
TypeChange イベントに以下のコードを。
with SaveDialog1 do
case FilterIndex of
1: DefaultExt:='txt';
2: DefaultExt:='html';
3: DefaultExt:='csv';
end;
これで、選択中のフィルタに応じた上書き確認が出る。
0051デフォルトの名無しさん
01/09/04 11:24ID:MmUrMvH6>>ML
1年程前には毒舌マンセーの
PCode 氏がいたんだが…
∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
@' ― (,,゚Д゚)つ < 最近見かけねーナ
し― 怐@ \___________
005232
01/09/04 11:35ID:64QSl7820053デフォルトの名無しさん
01/09/04 12:05ID:/Xfn2x2wそう?よくみかけるけど?
0054デフォルトの名無しさん
01/09/04 12:08ID:/Xfn2x2wダイレクトで担当の電話にコールされたときや、コール中に応答
した場合などに、他のアプリよりも最前面に表示するようにしています。
しかし、ポップしたときに他のアプリケーションなどで入力をしていた
場合などに、入力中の未変換文字がポップしたCTIのアプリへ
付いてきてしまいます。
変換文字が確定されていないので、当然の動作と思いますが
これを、ポップしてきたCTI用のアプリへ移動しないようにすることは
可能なのでしょうか。
0055デフォルトの名無しさん
01/09/04 12:08ID:/Xfn2x2w0056名無しさん
01/09/04 12:52ID:w/.HSIv6〜□□ □□ ( ゚Д゚)< >>50 DefaultExtの使い方が全然違うのな。ビクーリしたYO
(O)----(O)U-U) \__________
0057Delギコ
01/09/04 13:38ID:rI/kNmo6 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
∧ ∧ マターリ
(,, ゚Д゚)∫
/ つ旦O
〜(._[ ̄ ̄ ̄.]
 ̄ ̄ ̄
function OneTenOne: Double;
begin
Result := 1.1;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
if 1.1=OneTenOne then
ShowMessage('イコール')
else
ShowMessage('ノットイコール');
end;
ノットイコールになるんですが。
0058デフォルトの名無しさん
01/09/04 13:40ID:KScw1J2s0059Delギコ
01/09/04 13:45ID:rI/kNmo6∧ ∧∩ アータにとっては当たり前でも
(゚Д゚,,)ノ ワタシニャー当たり前でござらん
| つ
| ⊂)〜
∪ 教えてよ。
0060Delギコ
01/09/04 13:55ID:rI/kNmo6___ ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
___( ゚Д゚)< キックボード持ってる奴・手挙げて
__ /⊃三つ \_______
_〜′ / \
_ ∪ ∪ \
◎ ̄ ̄ ̄ ̄◎
function OneTenOne: Double;
begin
Result := 1.1;
end;
function OneTenZero: Double;
begin
Result := 1.0;
end;
procedure TForm1.Button4Click(Sender: TObject);
var
A: Double;
begin
if 1.1=OneTenOne then
ShowMessage('イコール')
else
ShowMessage('ノットイコール'); //○
A := 1.1;
if A=OneTenOne then
ShowMessage('イコール') //○
else
ShowMessage('ノットイコール');
if 1.0=OneTenZero then
ShowMessage('イコール') //○
else
ShowMessage('ノットイコール');
end;
∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜''~(,,゚Д゚) < サパーリわからんニャ。
UU'UU \________
演算誤差??
0061言語ガイドをよく読むよ〜に
01/09/04 14:00ID:4UyXpXxwWriteln(1.1-OneTenOne)の出力結果はいくつか?
0062デフォルトの名無しさん
01/09/04 14:12ID:EcqU4D620063Delギコ
01/09/04 14:21ID:rI/kNmo6∩(,,゚Д゚) < にゃろめー。
⊂,,⌒ ,,つつ. \_
 ̄ ̄
>定数1.1の型は何か?
わからん。
>Writeln(1.1-OneTenOne)の出力結果はいくつか?
-8.87961579265628E-17
だった。
>言語ガイドをよく読むよ〜に
言語ガイドのどこニャ。それくらいオシエレ。けちんぼーめ。
・・・って、『真の定数』のところのこれか!
>定数式が実数の場合,その型は Extended です。
こんな1文・氏ッてるわけニャー。よ
>>62 そうかな?型が違うだけみたい。
const
B: Extended = 1.1;
C: Double = 1.1;
begin
if B=C then
ShowMessage('イコール')
else
ShowMessage('ノットイコール'); //○
end;
どうやらこうらしい
0064デフォルトの名無しさん
01/09/04 14:23ID:QjlESLvE0066Delギコ
01/09/04 14:35ID:rI/kNmo6>浮動小数点を=で判定することが間違ってると思うが・・・
∩ ∩
| ∪ |
| 〜
| ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|( ,,゚Д゚) < じゃあどうすりゃいいの?
U U \________
そもそもほとんど浮動小数点系の
処理を書いた事ないんだよ。
整数の場合、通常4バイトのIntegerで処理するのがいいので
その感覚で4バイトのDoubleで処理してみたのだが…
フドオショスウテンものの扱いはExtended で
行なうべきなのかな?
Power関数なんて全部Extendedだし。
それともFloatToStrでもしろと?
0067デフォルトの名無しさん
01/09/04 14:48ID:EcV/Ydtw=で判定することはせずに
>,<,<=,>=とかで行う。
浮動小数点を扱う場合は許容誤差はいくらまでか
仕様決めるときにでてくるだろ。
0068デフォルトの名無しさん
01/09/04 14:52ID:UBYhxRDc1/3 を小数点以下4桁まで格納できる変数と
小数点以下8桁まで格納できる変数に代入すると
0.3333 と 0.33333333 になるな。
この値が 1/3 から生成されたことをいったん忘れて、変数の
値を比較すると 0.33330000 と 0.33333333 を比較することになるな。
となればこの二つを異なる物と判断すべきだね?
だから理屈はあるし、精度の異なる数値を直接比較してはいけない。
一律に「浮動小数点を=で判定することが間違ってる」といってはいけないのだが
そのためにはちゃんとした誤差評価が必要になるので多くの場合は
差が「計算機イプシロン」と呼ばれる非常に小さな数より小さければ同じ物と
見なす。
D6 なら Math ユニットに SameValue とか IsZero, CompareValue があるからそれをつかえ。
その場合でも Double と Extended を比較することはできない。
既に情報が劣化しているのだからね。
0069補足
01/09/04 14:55ID:UBYhxRDc合わせる決断をしなきゃいけないよ。
Double を Extended に変換するのではなく、Extended を Double に
落として扱うこと。
MS のコンパイラは、最大精度でも(Delphi の) Double だから
逆にあまり問題が出ないんだよね...
0070名無しさん
01/09/04 15:04ID:w/.HSIv6〜□□ □□ ( ゚Д゚)< ってか1.1と書くなら精度は小数1桁だから
(O)----(O)U-U) \__________
procedure TForm1.Button1Click(Sender: TObject);
function OneTenOne: Double;
begin
Result := 1.1;
end;
begin
if Abs(1.1-OneTenOne) < 0.1 then
ShowMessage('イコール')
else
ShowMessage('ノットイコール');
end;
でイインジャネーノ?
0071Delギコ
01/09/04 15:26ID:rI/kNmo6∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(,,゚Д゚) < これが重要かい?
ヽ/つ且~~ \___________
(__ _)
こんなんつくーてみたけど
少数点第○位まで数字が一致しているのを調べる関数
function IsshoValue(A, B: Extended; Digit: Byte): Boolean;
begin
if Abs(A - B) < (IntPower(10, -1*Digit)) then
Result := True
else
Result := False;
end;
これでよろしいか?ひとけた分ずれてるかな。
テストしてみまする。
>>67
> 浮動小数点を扱う場合は許容誤差はいくらまでか
> 仕様決めるときにでてくるだろ。
D6ダウソすれで四捨五入ネタがでていたので
任意の桁で四捨五入をする関数を作ってみたんだが
その最中で変になったのだ。
仕様なんてあるかい。
>>68
めっさわかりやすかた。サンクスコ。
0072Delギコ
01/09/04 15:33ID:rI/kNmo6(,, ゚Д゚) =3 < どうやらちがうな。
/つ日 難しいやこりゃこりゃ
〜(__ノ
考え中
0073デフォルトの名無しさん
01/09/04 15:36ID:EcqU4D62固定小数点と違って浮動小数点は精度が同じでも指数部が違うと
表せる最小値にも違いが出てくるからExtended同士でも一度1.1を
代入してから1.0を引いた値と 0.1を比較しても不一致になるよな。
0074デフォルトの名無しさん
01/09/04 15:38ID:4UyXpXxw大体それじゃ1001.0と999.0を近似できないじゃん。
function IsSame(A, B: Extended; e: Extended): Boolean; overload;
begin
Result := Abs(A-B) <= e;
end;
0075Delギコ
01/09/04 15:54ID:rI/kNmo6∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ゚Д゚) < >>74もそっと頼む
.=| |==U=U==.| |= \___________
| | | | | |
| | ノU U. | |
| | .| |
実際の数値をダイヌウしたテストコードなど見せてくれると
ありがたい。
IsSame(1001.0, 999.0, ?)=True
IsSame(1001.0, 999.0, ?)=False
IsSame(0.00019, 0.00020, ?)=True
IsSame(0.00019, 0.00020, ?)=False
ハテナにあてはめる"べき"なのはいったいなんの数値なんだ?
微妙にわからないが、100/10/1/0.1/0.01/0.001
という値を入れればいいの?
え、テストくらい自分でやれって。
汗ってやってる最中(モナカ)だよ。
0076デフォルトの名無しさん
01/09/04 16:16ID:4UyXpXxwの場合Abs(1001.0 - 999.0)は約2.0
なので余裕を持って
IsSame(1001.0, 999.0, 10.0)=True
IsSame(1001.0, 999.0, 1.0)=False
いまいち何にはまってるのかわからないけど
a±eの範囲内にbが収まってるかを判定する関数。
と解釈するとわかるかも?
0077Delギコ
01/09/04 16:28ID:rI/kNmo6(,,゚Д゚),__カタ_ _< テストテストテスト
./ つ_|| ̄ ̄ ̄ ̄ ̄| \_____________
(, |\|| バイオ |
'\,,|==========|
 ̄ ̄ ̄ ̄ ̄
procedure Check(A, B: Boolean; Msg: String = ''); overload;
begin
if A <> B then
raise Exception.Create('Checkエラー'+ Msg);
end;
function IsSame(A, B: Extended; e: Extended): Boolean;
begin
Result := Abs(A-B) <= e;
end;
procedure testIsshoValue;
begin
Check(True, IsSame(1001.0, 999.0, 10));
Check(False, IsSame(1001.0, 999.0, 1));
Check(True, IsSame(0.19999900, 0.20000000, 0.01));
Check(True, IsSame(0.19999900, 0.20000000, 0.001));
Check(True, IsSame(0.19999900, 0.20000000, 0.0001));
Check(True, IsSame(0.19999900, 0.20000000, 0.00001));
Check(True, IsSame(0.19999900, 0.20000000, 0.000001));
Check(False, IsSame(0.19999900, 0.20000000, 0.0000001));
Check(False, IsSame(0.19999900, 0.20000000, 0.00000001));
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
testIsshoValue;
end;
> いまいち何にはまってるのかわからないけど
自分でも混乱しまくり。慣れないことはつらい。
> a±eの範囲内にbが収まってるかを判定する関数。
> と解釈するとわかるかも?
おー。
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ゚Д゚) 目< わかったよー。
|つ つ || \ _____________
TTTTTTTT|TTTTTT
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
::.... |
0078デフォルトの名無しさん
01/09/04 16:30ID:UBYhxRDc使われる。
しかし、1001.0と999.0 を同じとみなしたいのか。かなり大雑把だね。差が2でも
等しいとしたいのだから、IsSame の第3引数には2(実際には2よりちょびっと大きい値)を
指定するしかない。
0079名無しさん
01/09/04 16:33ID:w/.HSIv6〜□□ □□ ( TДT)< フォロー誰もくれん
(O)----(O)U-U) \__________
IsSame( 1.1 , 1.1 , 0.1 )か
0080Delギコ
01/09/04 16:40ID:rI/kNmo6___( ゚Д゚)< >>79 だってレス流れるの早いんだもん
__ / ⊃ つ \______________
_〜′ /
_ ∪ ∪
>78
> しかし、1001.0と999.0 を同じとみなしたいのか。かなり大雑把だね。差が2でも
> 等しいとしたいのだから、IsSame の第3引数には2(実際には2よりちょびっと大きい値)を
> 指定するしかない。
∧ ∧ ──────
(゚Д゚ ) <そだそだ。2より微妙に大きくないとダメなのだ。
⊂⊂ \──────
\ 〜 ────
し し ─────
たぶん、1001と999は2というのは関係なく
一例として誤差の範囲10でTrue,誤差範囲1でFalseと
いう事になるのでしょう。
0081デフォルトの名無しさん
01/09/04 16:51ID:4UyXpXxwいや、用途によるんだって。
近似の用途は浮動小数点演算の計算誤差に限定されるわけじゃないからね。
例えばこんなの
if IsSame(30, age, 10) then ShowMessage('はたちでーす');
だれかIndyを使ったプログラミングを詳しく解説してるものを
本でもサイトでもなんでもいいのでポインタ示してくれェェェ!!!
0083デフォルトの名無しさん
01/09/04 16:59ID:UBYhxRDc0084デフォルトの名無しさん
01/09/04 17:29ID:wcxkXuMgVCLを使う分にはあまり変わらないのでしょうか。
どちらかというとC++の方が経験があるのですが...
0085デフォルトの名無しさん
01/09/04 17:33ID:qTrwX4uwC++の経験があるのならBCBでいいと思う。
ただしVCLのソースはPascalなので、ある程度知識が必要になってくると思う。
0086Delギコ
01/09/04 17:33ID:rI/kNmo6 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
∧ ∧ マターリ
(,, ゚Д゚)∫
/ つ旦O
〜(__n n[ ̄ ̄ ̄.]
 ̄ ̄ ̄
> IsSame の第3引数は省略可能。省略、または0を指定すると、適当な「小さい数」が
> 使われる。
> なんだ。IsSame を自分で定義しているのか。
D6PersonalにもD5エンプラにも付属していないみたいだが。
IsSameDayってのはあるけどね。
0087Delギコ
01/09/04 17:36ID:rI/kNmo6(゚Д゚;) < はて?
⊂ ⊂| \___________
| |〜
∪ ∪
>>81
>if IsSame(30, age, 10) then ShowMessage('はたちでーす');
見事にたとえになってないと思うが,,,?なんで±10でハタチ?
if IsSame(17, age, 2) then ShowMessage('およそ女子高生でーす');
じゃないのか?(歌舞伎町もえましたな。こわいこわい)
>>80では
1001.0と999.0これだと1001.000001...と998.9999999999と誤差がでてると
2だとIsSame = Trueにならないということがいいたいんだけど。
0088デフォルトの名無しさん
01/09/04 17:35ID:AggqKte2HTMLタグ関連の質問はどこですればいいでしょうか、
多分、みなさんにとってアホらし過ぎる質問だと思いますが・・
0089Delギコ
01/09/04 17:45ID:rI/kNmo6∧ ∧
( ゚Д゚)
|∪ |
〜| |
U U
いずれVCLのPascalをよまなけりゃいけない場面もあるが
Delphiでも結局C++をよまなきゃいけないのと
同じことで必要だし。
ただ、C++を挫折しかけているならDelphiをやるのがヨシ
>>88
スレたてるまでもない質問スレをさがせ。
∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(,,゚Д゚) < 浮動小数点系の話。大変ためになりました
Π ̄ ̄ ̄| \
|つ 感謝 ()  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| |___.| 教えてくれたりしたひと、みなさんにひとまず感謝。
∪∪
グッスリ眠れそうだ。
0090デフォルトの名無しさん
01/09/04 17:50ID:EcqU4D62Delphiと違いすぎ。
0092デフォルトの名無しさん
01/09/04 18:32ID:gKDhbZkIBCBとDelphiで同じ物作ると
exeのサイズは違うの?
0093デフォルトの名無しさん
01/09/04 18:36ID:94pNP4M6FormのプロパティーのVisibleをFalseにしても消えませんでした。
BorderStyle を bsNone にして Width と Height を 0 にすれば
見えないウインドウができましたが、これではタスクバーに表示されて
しまうようです。
0094Delギコ
01/09/04 18:41ID:rI/kNmo6( ゚Д゚)
〜( uu)
IsSameというのはD6のSameValueの事か。
> function SameValue(const A, B: Extended; Epsilon: Extended = 0): Boolean;
> overload;
>
> SameValue 関数を呼び出すと,2 つの浮動小数点値が等しいかどうか,またはおよそ等し
> いかどうかを確認できます。
> A と B は比較対照の値です。
> Epsilon は,A と B が同じ値であると判断される最大の差です。
自作する場合もD5以前では0を代入してしまえばいいのか?
0095デフォルトの名無しさん
01/09/04 18:44ID:QjlESLvEタスクバーになくてかつ、見えなければよいのか?
タスクバーから消す方法はあるよ。
0096デフォルトの名無しさん
01/09/04 18:50ID:M7JWPLwAこのあたりでどうでしょう。
http://www.nifty.ne.jp/forum/fdelphi/faq/00038.htm
http://www.nifty.ne.jp/forum/fdelphi/faq/00030.htm
009793
01/09/04 18:52ID:94pNP4M6解決しました。
ヘルプに「メインフォームを非表示にする」って項目がありました。
009988
01/09/04 18:55ID:AggqKte20100デフォルトの名無しさん
01/09/04 19:00ID:xjPsFd/I>Borland Delphi 6 使用許諾契約
>『ボーランドのナンセンスでないライセンス規定』および制限付保証
このタイトルはジョークなのか??
0101名無しさん
01/09/04 19:08ID:w/.HSIv6〜□□ □□ ( ゚Д゚)< >>100 ナウなヤングにバカウケだと思ったんでしょう
(O)----(O)U-U) \__________
0102Delギコ
01/09/04 19:16ID:rI/kNmo6∩(,,゚Д゚) < たしか、バカウケってお菓子が・・・・・・・
⊂,,⌒ ,,つつ. \_
 ̄ ̄
0103デフォルトの名無しさん
01/09/04 19:18ID:4niCzD4wちょっと笑ってしまった・・・
0104デフォルトの名無しさん
01/09/04 19:22ID:xjPsFd/Iテキスト形式の外部データファイルを実行時に取り込み、
利用するプログラムがある。当然、実行ファイル以外に
いくつかのデータファイルも配布するのだが、
このデータファイルというのがどれも1KB未満ぐらいの
ごく小さなもので、なんとなく無駄に感じる。
なので、1つのファイルに結合してしまい、
そこから自由に指定のデータ文字列を得られるような関数は
ないだろうか。
たとえば、
hoge1.dat hoge2.dat hoge3.dat をまとめた hoges.dat が
あったとして、
Hoge1Strings := ExtractFileText( 'hoges.dat', 'hoge1.dat' )
のような感じでアーカイブから自由に取り出したり、また
アーカイブに追加したり、編集したりする関数…
つくりかた教えて。。。
0105デフォルトの名無しさん
01/09/04 19:28ID:snX5e2LkTInifileじゃだめ?
0106104
01/09/04 19:33ID:xjPsFd/Iアプリで扱っているデータを出力する際のフォーマットを決めるためのファイルなのよ。
だから、改行ありまくりだし、アーカイブの状態でも
テキストエディタでの編集が楽になるようにしたい…
%begin hoge1.txt
hoge1.txt の内容 %はエスペープに置き換え
%end
%vefin hoge2.txt
hoge2.txt の内容 %はエスケープに置き換え
%end
てな感じで。
0107デフォルトの名無しさん
01/09/04 19:44ID:Zf.1izG6やり方判ってるならその通りの動作をするように作ればいいじゃん。
0108104
01/09/04 19:56ID:xjPsFd/I0109デフォルトの名無しさん
01/09/04 20:01ID:EcqU4D620110デフォルトの名無しさん
01/09/04 20:14ID:QjlESLvEソース公開されているものは結構あるぞ
つってもファイル結合して取り出すくらいなら自力で組めると思うんだが・・・。
0111名無しさん
01/09/04 20:24ID:w/.HSIv6〜□□ □□ ( ゚Д゚)< >>100 無料で賃金GETするなゴルァ
(O)----(O)U-U) \__________
<?xml version = "1.0" encoding = "Shift_JIS"?>
<!element テンプレート(ファイル名)>
<!element ファイル名(内容)>
<!element 内容(#PCDATA)>
<テンプレート>
<ファイル名>hoge1.txt</ファイル名>
<内容>
内容が無いよう
</内容>
<ファイル名>hoge2.txt</ファイル名>
<内容>
やるきも無いよう
</内容>
</テンプレート>
これでいいのかゴルァゴルァ
0112111
01/09/04 20:25ID:w/.HSIv6〜□□ □□ ( ゚Д゚)< 100じゃなくて>>104だスマンぞゴルァ
(O)----(O)U-U) \__________
0113デフォルトの名無しさん
01/09/04 20:27ID:4UyXpXxwこれが実際どれだけ無駄なのか、
許容できないくらい無駄なのか
きっちり検証して、クライアントや周りに
意見を聞いてみたほうがいいよ。
勝手な想像で言わせてもらえば
数百以下ならファイル単位で管理したって
全然問題にならないと思うよ。
XMLもどきの独自フォーマットを導入することはできるけど
お気軽に編集してタグ壊されたらどうすんの?
0114104
01/09/04 21:20ID:xjPsFd/I怒らずにマジレスしてくれた2chねらーにちょっと感動。
アーカイブ化関数、分解関数
まじめに考えてみるYO。
0115デフォルトの名無しさん
01/09/04 21:57ID:UBYhxRDcそれを保持するコンポーネントを作ってしまえばよい。
保持実体を String の動的配列にしておけば、増減も簡単。
0116デフォルトの名無しさん
01/09/05 00:08ID:sRu7fn.Aいまいち
Sections: TStringListってしといて
Sections.Strings[]にセクション名・ファイル名一覧を
Sections.Objects[] as TStringListにセクション名に対応した本文を格納
ってのが良いね。
0117104
01/09/05 05:06ID:0bwO4T7E{Files で指定されたファイルをヘッダ付きで結合する
ファイル名は256バイトまでで、それ以上は切り捨てられる
上書き確認はしない}
procedure MakeArchive(const Files:TStrings; const Newfile:string);
var
i,p,Size:integer;
Source:TMemoryStream;
Dest:TMemoryStream;
Buf:array [0..256-1] of Char;
SizeBuf:array [0..16-1] of Byte;
Name:string;
begin
Source:=TMemoryStream.Create;
Dest := TMemoryStream.Create;
try
for i:=0 to Files.Count-1 do
begin
{ファイルを読み込む}
if not FileExists( Files[i] ) then
begin
showmessage('FILE NOT FOUND'+#13+Files[i]);
Exit;
end;
Source.LoadFromFile( Files[i] );
{ファイル名をBufにセット}
Name := ExtractFileName( Files[i] );
StrPLCopy( Buf, Name, SizeOf( Buf ) );
{ヘッダ:最初の256バイトはファイル名を示す}
Dest.WriteBuffer( Buf, 256 );
{ヘッダ:次の 16 バイトはファイルサイズを示す}
Size := Source.Size;
for p:=0 to High( SizeBuf ) do
begin
SizeBuf[p] := Size and $FF;
Size := Size shr 8;
end;
Dest.WriteBuffer( SizeBuf, 16 );
{データ:バイナリを書き込む}
Dest.CopyFrom( Source, 0 );
end;
Dest.SaveToFile( Newfile );
finally
Dest.Free;
Source.Free;
end;
end;
0118104
01/09/05 05:10ID:0bwO4T7E{Files で指定されたファイルをヘッダ付きで結合する
ファイル名は256バイトまでで、それ以上は切り捨てられる
上書き確認はしない}
procedure MakeArchive(const Files:TStrings; const Newfile:string);
var
i,p,Size:integer;
Source:TMemoryStream;
Dest:TMemoryStream;
Buf:array [0..256-1] of Char;
SizeBuf:array [0..16-1] of Byte;
Name:string;
begin
Source:=TMemoryStream.Create;
Dest := TMemoryStream.Create;
try
for i:=0 to Files.Count-1 do
begin
{ファイルを読み込む}
Source.LoadFromFile( Files[i] );
{ファイル名をBufにセット}
Name := ExtractFileName( Files[i] );
StrPLCopy( Buf, Name, SizeOf( Buf ) );
{ヘッダ:最初の256バイトはファイル名を示す}
Dest.WriteBuffer( Buf, 256 );
{ヘッダ:次の 16 バイトはファイルサイズを示す}
Size := Source.Size;
for p:=0 to High( SizeBuf ) do
begin
SizeBuf[p] := Size and $FF;
Size := Size shr 8;
end;
Dest.WriteBuffer( SizeBuf, 16 );
{データ:バイナリを書き込む}
Dest.CopyFrom( Source, 0 );
end;
Dest.SaveToFile( Newfile );
finally
Dest.Free;
Source.Free;
end;
end;
0119104
01/09/05 05:12ID:0bwO4T7E{ MakeArchive関数で結合されたアーカイブ Filename を分離し
DestPath ディレクトリ内に保存する ファイル名は 256 バイトまででそれ以上は切り捨て
上書き確認はしない}
procedure SeparateArchive(const Filename, DestPath:string);
var
Filesize:Int64;
i:integer;
Source:TMemoryStream;
Dest:TMemoryStream;
Buf:array [0..256-1] of Char;
SizeBuf:array [0..16-1] of Byte;
Name:string;
begin
Source:=TMemoryStream.Create;
Dest := TMemoryStream.Create;
try
Source.LoadFromFile( Filename );
repeat
{ヘッダ:最初の256バイトをGET}
Source.ReadBuffer( Buf, 256 );
Name := Buf;
{ヘッダ:次の16バイトをGET}
Source.ReadBuffer( SizeBuf, 16 );
Filesize:=0;
for i:=0 to 16-1 do
Inc( Filesize, SizeBuf[i] shl (i*8) );
{ファイルを抽出}
Dest.Clear;
Dest.CopyFrom( Source, Filesize );
{保存}
Dest.SaveToFile( IncludeTrailingPathDelimiter(DestPath) + Name );
until Source.Position >= Source.Size;
finally
Source.Free;
Dest.Free;
end;
end;
0120104
01/09/05 05:14ID:0bwO4T7E>続き。>>103 で結合したファイルを分離。
103じゃなくて118だ…
両関数とも動作確認済み。
もうすこし効率よくかけそうなのでアドバイスキボン。
0121104
01/09/05 05:33ID:0bwO4T7E{ MakeArchive関数で結合されたアーカイブ Filename をから、
Target で指定されたファイルを探し出し Stream に抽出する。
アーカイブ内に目的のファイルが存在するならば True を返す}
function ExtractFromArchiveToStream(Stream:TStream;const Archive, Target:string):Boolean;
var
Filesize:Int64;
i:integer;
Source:TMemoryStream;
Dest:TMemoryStream;
Buf:array [0..256-1] of Char;
SizeBuf:array [0..16-1] of Byte;
Name:string;
begin
result := False;
Source:=TMemoryStream.Create;
Dest := TMemoryStream.Create;
try
Source.LoadFromFile( Archive );
repeat
{ヘッダ:最初の256バイトをGET}
Source.ReadBuffer( Buf, 256 );
Name := Buf;
{ヘッダ:次の16バイトをGET}
Source.ReadBuffer( SizeBuf, 16 );
Filesize:=0;
for i:=0 to 16-1 do
Inc( Filesize, SizeBuf[i] shl (i*8) );
{ターゲットファイルかどうか}
if AnsiSameText( Name, Target ) then
begin
{ファイルを抽出}
Dest.Clear;
Dest.CopyFrom( Source, Filesize );
Dest.SaveToStream( Stream );
{終了}
Result := True;
Exit;
end
else
{POSITION をサイズぶんだけ移動}
Source.Position := Source.Position + Filesize;
until Source.Position >= Source.Size;
finally
Source.Free;
Dest.Free;
end;
end;
0122104
01/09/05 05:34ID:0bwO4T7E{ MakeArchive関数で結合されたアーカイブ Filename をから、
Target で指定されたファイルを探し出し DestPath ディレクトリ内に保存する
アーカイブ内に目的のファイルが存在するならば True を返す}
function ExtractFromArchive(const Archive, Target, DestPath:string):Boolean;
var
Stream:TMemoryStream;
begin
Result := False;
Stream := TMemoryStream.Create;
try
if ExtractFromArchiveToStream(Stream,Archive,Target) then
begin
Stream.SaveToFile( IncludeTrailingPathDelimiter(DestPath)+Target );
result := True;
end;
finally
Stream.Free;
end;
end;
0123104
01/09/05 05:36ID:0bwO4T7Eしかし、これに圧縮関数を組み合わせれば
相当いろんな事ができると思うのだが。
有益な関数だと自負するぞ。
0124104
01/09/05 06:00ID:0bwO4T7E{ MakeArchive関数で結合されたアーカイブ Archibve から
Target で指定されたファイルを削除する。アーカイブ内に目的のファイルがない場合は
Falseを返す}
function RemoveFromArchive(const Archive, Target:string):Boolean;
var
Filesize:Int64;
i:integer;
Source,Dest:TMemoryStream;
NameBuf:array [0..256-1] of Char;
SizeBuf:array [0..16-1] of Byte;
Name:string;
begin
result := False;
Source:=TMemoryStream.Create;
Dest := TMemoryStream.Create;
try
Source.LoadFromFile( Archive );
repeat
{ヘッダ:最初の256バイトをGET}
Source.ReadBuffer( NameBuf, SizeOf( NameBuf ) );
Name := NameBuf;
{ヘッダ:次の16バイトをGET}
Source.ReadBuffer( SizeBuf, SizeOf( SizeBuf ) );
Filesize:=0;
for i:=0 to High( SizeBuf ) do
Inc( Filesize, SizeBuf[i] shl (i*8) );
{ターゲットファイルかどうか}
if AnsiSameText( Name, Target ) then
begin
{ position をサイズ分だけ移動し、読み飛ばす}
Source.Position := Source.Position + Filesize;
end
else
begin
{新アーカイブへ内容をコピー}
Dest.WriteBuffer( NameBuf,SizeOf( NameBuf ) );
Dest.WriteBuffer( SizeBuf,SizeOf( SizeBuf ) );
Dest.CopyFrom( Source, Filesize );
end;
until Source.Position >= Source.Size;
Dest.SaveToFile( Archive );
finally
Source.Free;
Dest.Free;
end;
end;
0125104
01/09/05 06:01ID:0bwO4T7E{ MakeArchive関数で結合されたアーカイブ内のファイル名リストを得る
Files.strings にファイル名が、
Files.objects にファイルサイズ(バイト)が格納される}
procedure ArchivedFiles(const Archive:string; Files:TStrings);
var
Filesize:Int64;
i:integer;
Source:TMemoryStream;
NameBuf:array [0..256-1] of Char;
SizeBuf:array [0..16-1] of Byte;
begin
Files.Clear;
Source:=TMemoryStream.Create;
try
Source.LoadFromFile( Archive );
repeat
{ヘッダ:最初の256バイトをGET}
Source.ReadBuffer( NameBuf, 256 );
{ヘッダ:次の16バイトをGET}
Source.ReadBuffer( SizeBuf, 16 );
Filesize:=0;
for i:=0 to 16-1 do
Inc( Filesize, SizeBuf[i] shl (i*8) );
{ファイル名とサイズを追加}
Files.AddObject( NameBuf , TObject(Filesize) );
{ position をサイズ分だけ移動し、読み飛ばす}
Source.Position := Source.Position + Filesize;
until Source.Position >= Source.Size;
finally
Source.Free;
end;
end;
0126104
01/09/05 06:03ID:0bwO4T7Eしかしなんだな。もう少し考えて書くべきだった。
同じようなコードがほぼ全ての関数に含まれている…
指定した position を基点に、ファイル名ーサイズー内容
を取り出す関数を一つ作っておくべきだった…
鬱だ。ねむいので、あとは任せた。
0127デフォルトの名無しさん
01/09/05 10:13ID:Q//JF6Ws0128Delギコ
01/09/05 10:16ID:cQB7nAtY( ゚Д゚)っ < >>126 何時に寝てるんだよ!
|''U ̄| \_
| ̄ ̄|
/ ゙ヽ
( ゚Д゚ ) <キセツ ノ カワリメ カゼ ヒクナ
人____ノ
oooo
│ │
∧_l ∫ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(,,゚Д゚) ∬ < 朝スパゲチを3日連続つくる
|∪ |つ=● \___________
〜| ̄|
U U イイ オヨメ サン ニナレルゾ
ダレカ モラッテクレ
エイキュウ シュウショク サセロ
0129デフォルトの名無しさん
01/09/05 10:22ID:kk0fRdk.Buf:array [0..255] of Char をゼロで初期化するのに
SetPLCopy( Buf,StringOfChar(#0,SizeOf(Buf)),SizeOf(Buf));
こう書いている俺を笑え。ああ、笑うがいいさ。
他の書き方知らないんだよ!!教エレ
0130デフォルトの名無しさん
01/09/05 10:28ID:iRnxvvb6FillChar(Buf, SizeOf(Buf), #0);
0131Delギコ
01/09/05 10:41ID:cQB7nAtY(,,゚Д゚) < >>116 オブジェ嗜好的にはその通りだ
ヽ/つ且~~ \
(__ _) まるでXMLパーサー作成方法のような木が・・・
>>104
HTMLテンプレートならテキストだと思うが
汎用的にバイナリも扱いたかった?
一回一回の関数呼び出しでファイルアクセスせずに
こんなの作れば綺麗くない?
アーカイブクラス
private
FFileText: TStringList;
//ファイル名を管理 Objectsプロパティでファイル内容を示すTStringListにアクセス可能
public
procedure SaveToアーカイブファイル(XMLファイル名: String);
procedure LoadFromアーカイブファイル(XMLファイル名: String);
procedure SaveTo複数ファイル(複数ファイル名: TStrings);
procedure LoadFrom複数ファイル(複数ファイル名: TStrings);
property Text[Index: Integer]: String;
property FileText: TStringList; read FFileText write FFileText;
end;
これなら複数ファイルに展開せずとも
アーカイブファイルを取り出して中身をイジクリたおしてから
アーカイブに書き込むという事も可能だよ。
プログラムのデータをアーカイブと複数ファイル同時に書き出したりも出来るし。
0132デフォルトの名無しさん
01/09/05 11:00ID:sRu7fn.Aファイル名[改行]
ファイルの中身.CommaText[改行]
...
ってやってReadlnでいいんじゃない。
ファイルなんていらないような。
0133名無しさん
01/09/05 12:44ID:qbdJpBq6〜□□ □□ ( ゚Д゚)< ベタベタ
(O)----(O)U-U) \__________
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999661367&res=1
0134104
01/09/05 13:22ID:kk0fRdk.アーカイブ関連関数をちょっと改良して
全体量を減らしてみたけど、どうよ?
どうせ作るなら、一般的にしたほうが良いと思って。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999663627
0135デフォルトの名無しさん
01/09/05 13:50ID:qbdJpBq6〜□□ □□ ( ゚Д゚)< >>134 ヤパーリ文字制限が気になるな
(O)----(O)U-U) \__________
要求仕様的には問題無いんだろうけど、一般的とは言わないだろうな
0136デフォルトの名無しさん
01/09/05 13:52ID:kk0fRdk.with TStringList.Create do
begin
//この場所で、TStringList を引数にするような
//関数を呼び出す事が出来ないんだよね
end;
律儀に Hoge:=TStringList.Create ってやって、
関数に引数として Hoge を渡してやる以外に
スマートなやり方ってないのかな。
0137ない
01/09/05 14:05ID:sQAZ0lYk0138デフォルトの名無しさん
01/09/05 14:34ID:kk0fRdk.生成するんだ?
NameBuf:PChar;
Filename:string;
Dest:TMemoryStream;
-------------------------
NameBuf:=PChar( FileName );
Dest.WriteBuffer( NameBuf , Length(Filename)+1 );
だとダメだし、
P:Pointer;
NameBuf:array of Char;
Filename:string;
Dest:TMemoryStream;
-------------------------
SetLength(NameBuf,Length(Filename)+1);
P := @NameBuf;
StrPCopy( P, FileName );
Dest.WriteBuffer( P , Length(Filename)+1 );
だと当然エラーだ
なんかわけわかんなくなってきたYO
0139デフォルトの名無しさん
01/09/05 14:36ID:.clmM2io0140ななし
01/09/05 15:35ID:bRu2GJiwStream が出てくるのがよくわからんが
buf: PChar;
j: integer;
j := Length(Filename) + 1;
buf:=StrAlloc(i);
try
// 諸々の処理
finally
StrDispose(buf);
end;
で、PChar から参照するのはダメなの?
はずしてる?
0141Delギコ
01/09/05 15:40ID:cQB7nAtY(;゚Д゚) 全然わからんが
(つつ
U U
PChar(Str)じゃだめ?
0142デフォルトの名無しさん
01/09/05 15:41ID:F4TkSYjUdest.WriteBuffer( pchar(filename)^, Length(filename)+1 );
でよくないすか?
pointerではなく参照を渡さないといかん程度
0143デフォルトの名無しさん
01/09/05 15:50ID:kk0fRdk.おかげでファイル名長を制限しない
アーカイバができました
0144デフォルトの名無しさん
01/09/05 18:28ID:Gq3L9bFMZeroMemory(@Buf, SizeOf(Buf));
真面目な話をすると、#0とやってnull文字を指定するより、
手続き名で直感的に分かるので視認性の向上にも繋がると思われ。
でも内部では FillChar 呼び出してるのは秘密(藁
0146デフォルトの名無しさん
01/09/05 18:41ID:F4TkSYjUWin API
0147デフォルトの名無しさん
01/09/05 18:52ID:iRnxvvb6Σ(゚д゚lll)ガーン
そうだったのか。気づかなかった。
さんきゅ。
0148名無しさん
01/09/05 19:16ID:qbdJpBq6〜□□ □□ ( ゚Д゚)< ウプCGIを腐らせてしまっているので、お待ちください
(O)----(O)U-U) \__________
0149デフォルトの名無しさん
01/09/05 21:08ID:Q//JF6Wsつっても、実際の実装はFillChar(,,0)だけどな。Windows.pas参照。
0150Delギコ
01/09/05 23:42ID:2b4KrEsE(*゚Д゚)
/つ□ やっとD6を手に入れた。
〜( ノ CLXで遊んでみよう。
U U
0151Delギコ
01/09/05 23:59ID:2b4KrEsE(゚Д゚ ,,)< アプリケーションWindowはどこかへ逝ってる
_| ̄ ̄||_) \____
/旦|――||// /|
| ̄ ̄ ̄ ̄ ̄| ̄| . |
|_____|三|/
タスクバーボタンの表示がForm1だ。
いったいどうなってるんだろう・・・??
既存のコンポーネントは動作するんだろうか?
0152名無しさん
01/09/06 00:49ID:STef9XiM〜□□ □□ ( ゚Д゚)< 一部復旧
(O)----(O)U-U) \__________
原因は、調子に乗って差別用語登録しまくったら(w
EUC非対応漢字?書いちまったらしい。んでチェッカーがコケてた
�d�jデータはバックアップから修復中なんで大丈夫だと思います。
迷惑かけて正直スマン
やっぱり差別は良くないと体で覚えたーよ
0153Delギコ
01/09/06 00:53ID:aeR3sw7s(,,゚Д゚),_______< ウニコードなんとかならん?
./ つ_|| ̄ ̄ ̄ ̄ ̄| \_____________
(, |\|| VAIO |
'\,,|==========|
 ̄ ̄ ̄ ̄ ̄
D6でも元の形式にならないものだろうか。
とりあえず
object Button1: TButton
Caption = #12508#12479#12531#65297
end
↑↓
object Button3: TButton
Caption = 'ボタン1'
end
テキスト相互置換えツールつくってよ!
0154デフォルトの名無しさん
01/09/06 01:04ID:zoVld8hw0155Delギコ
01/09/06 01:21ID:aeR3sw7s(,,゚Д゚) < VCLとCLXどっちでアプリ作るか悩むぞ。
|つ つ \
〜 |
∪ ∪
微妙なライブラリが違いが
別世界のDelphiを使っているみたいだよ
チョイ興奮気味
∧ ∧ / ̄
∩(,,゚Д゚) < >>154 修正で治るのかにゃろめー。
⊂,,⌒ ,,つつ. \_
 ̄ ̄
∧∧∩゛ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(,,゚Д゚)ノ < >>152 ご苦労様
U / \____________
| |
ノ∪∪ オヤスミナサイ
0156デフォルトの名無しさん
01/09/06 01:24ID:vrE4kITk0157Delギコ
01/09/06 02:07ID:aeR3sw7s_ /⊂ `∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | \( ゚Д゚)< >>156 CLXならEditのフォントのCharSetを設定だ
| / ∪ ∪ \____________________
 ̄
fcsUnicode にすると、ハートマークまで表示された。
VCLは氏らん、というか教えろ。
0158デフォルトの名無しさん
01/09/06 06:26ID:LzNtG3po(SockCompユニットの中身はヘルプ全くなし?)
使い方とかサンプルの載ったurlきぼんぬ。
0159デフォルトの名無しさん
01/09/06 06:49ID:jC6yDY6U人を頼らずに自分でやれ。
まあ、他力本願だから、たいしたことも出来ずにデルファイ引退っぽいな。
TClientSocketと検索かけたら大量に出てくるぞ。
158みたいな人間は、どうせろくなプログラムをかけないんだからやめたほうがいいです。
自分で探してみて無ければ聞くのなら分かるけどな。
0160デフォルトの名無しさん
01/09/06 06:51ID:kSDzajWsBorland のダウンロードページから Delphi5の
ヘルプ最新版をDLして、並行利用したほうが良い。
0161VB厨
01/09/06 08:51ID:87jVERooまぁ、作れるんでしょうけどゲーム用途に向いていますか?
実行速度とか含めて。
0162デフォルトの名無しさん
01/09/06 09:30ID:EuzXF8BA速度が問題にならない限りは普通に使える。
でもチューニングに突入してポインタ(参照にあらず)使い出すと
むちゃくちゃ汚いコードになる。この辺はC/C++の方がすっきりかける。
0163デフォルトの名無しさん
01/09/06 09:45ID:fxSN01Ssぜんぜんオッケー。
つかむしろDelphiでゲーム作ってる人って結構多くない?
ただ、まともな3Dアクションなんて言語に関係なくそうそう見たことない。
ていうかそんなのはいわれなくてもわかるだろうけど。
いや、なにが言いたいかって言うと、つくれますか?と聞かれて、
ハイ作れますと言えるが、実際にそういうのをいちいち聞いてくる人間が
作ったためしはないということ。
FF作れる言語はなに?と対して変わらん。
0164デフォルトの名無しさん
01/09/06 10:50ID:kSDzajWs>CLXならEditのフォントのCharSetを設定
ルーチンユニットにはCLXとVCLの2種類があるというのは
わかったんだけど、コンポーネントにも2種類あるの?
0165Delギコ
01/09/06 11:00ID:ARZrt0joStrToInt64('xFF');
∧∧ どうして上はOKで
( ゚Д゚) 下は"整数じゃあ〜りません"なんだYO
∪ | ボランドのイケズー。
〜 つ
∪"'
0166Delギコ
01/09/06 11:05ID:ARZrt0jo(,, ゚Д゚) < >>164
=====U U====\________
| ギコ |
| まっしぐら |
 ̄ ̄ ̄ ̄ ̄ ̄
ルーチンユニットではなくて、同じTEditという名前でも
VCLはWindowsのコントロールを
CLXはWinでもLinuでもQtをラッピングしているから、別物だ!
でないとCLXがクロスプラットホームで同じ動作するわけないニャ
虫眼鏡でジーーーットみると微妙にフォントが違うなり。
ちなみにD6PersonalではCLXアプリは作れないよ
0167デフォルトの名無しさん
01/09/06 11:17ID:kSDzajWsなるほど、Del6Perだからどのタブを見ても
普通のコンポーネントしか見当たらなかったんダネ。
0168デフォルトの名無しさん
01/09/06 11:23ID:kSDzajWsしているかどうかを判定したいのだけど、WINで
は大小文字を区別しないで比較しないといけないし
、短いファイル名と長いファイル名を考慮しないと
いけないでしょ。でもLinuxでは、そのまんま
パス文字列を比較するだけでよいでしょ。
KylixかDelphiか、コンパイラによって
{$IFDEF}で処理を分けたいんだけど、どち
らの環境で何がDEFINEされているかがわから
ない。そういう一覧ってどこかにない?もしかして
HELPにのってるのか…?
0169Delギコ
01/09/06 11:25ID:ARZrt0joStrToInt('-$000FFFF');
∧∧ ヤッテラレン
(#゚Д゚)
∪ |
〜 つ
∪"'
どうして上はOKで
下は"整数じゃあ〜りません"なんだ!
いいかげんにしてくれ!
0170デフォルトの名無しさん
01/09/06 11:41ID:kSDzajWs付けられないみたいだね。
Val( '-$FF', int, E ); だと2文字目がエラーになるし
Val( '+$FF', int ,E ); でも2文字目がエラー
Val( '-$FF', i64, E ); や
Val( '+$FF', i64 ,E ); はぜんぜん平気ね。
0171デフォルトの名無しさん
01/09/06 11:48ID:.IlpQb6o全部かどうか知らないが
「条件コンパイル指定の使い方」にのっている
0172デフォルトの名無しさん
01/09/06 12:16ID:kSDzajWsありがとう、
Delphiプログラマーズガイド→
CLXをつかったクロスプラットフォーム開発→
クロスプラットフォームアプリケーションの作成
に載っていたよ。
0173VB厨
01/09/06 12:19ID:87jVERoo>ていうかそんなのはいわれなくてもわかるだろうけど。
>いや、なにが言いたいかって言うと、つくれますか?と聞かれて、
>ハイ作れますと言えるが、実際にそういうのをいちいち聞いてくる人間が
>作ったためしはないということ。
>FF作れる言語はなに?と対して変わらん。
うっ、痛い所を突かれた。
でも、ガンバってみます。はい。
0174デフォルトの名無しさん
01/09/06 12:25ID:TzXlV1e6Delでゲーム作りは仲間も多いし、ツールの能力的にも必要十分なので
VCとかでやるよりはやりやすいと思うぞ。
つ〜わけで頑張って下され。
0175デフォルトの名無しさん
01/09/06 12:41ID:kSDzajWsDel6ヘルプのVCL−CLX対応表に、
>FileCtrl 使われなくなっている
と書いて歩けど、LINUXで実現できないとかではなくて、
あくまでも「使われていないから移植しない」て事でしょ?
FileCtrl の SelectDirectory はよく利用してるんだけど、
もしかしてもっと良い別の関数が用意されている?
0176Delギコ
01/09/06 13:23ID:ARZrt0jo_(,,゚Д゚) < >>175 overloadされたSelectDirectoryは氏ってる?
⊂,,__つつ. \_
∧∧ / ̄
_(,,゚Д゚) < >>173 "Delphi ゲーム"などで検索かけてみろ
⊂,,__つつ. \ 折れはBCBをお勧めするけどな。
おもしろいネタがあったらオシエレ。
http://home4.highway.ne.jp/ora_soft/main/ora_prog.htm
http://homepage1.nifty.com/absolute/soft/abs.html
http://www.ceres.dti.ne.jp/~dycoon/
http://www2s.biglobe.ne.jp/~t_harada/index.html
0177Delギコ
01/09/06 13:39ID:ARZrt0jo_(,,゚Д゚) < 最も有名な2つをリンクしてなかったね。
⊂,,__つつ. \_
DelphiX http://www.yks.ne.jp/~hori/DelphiX.html
Project Quadruple D http://www-fu.magma.ne.jp/~hayase/dddd/
∧∧ / ̄
_(,,゚Д゚) < だれかDelphi&BCBゲーム開発サイトリンク集
⊂,,__つつ. \ つくって
0178175
01/09/06 14:28ID:lykpdZBYあ…もしかして、Win3.1ライクなSelectDirectoryが
FileCtrl製であって、もう一つのSelectDirectoryは
FileCtrlではないという事か!
納得。
0179デフォルトの名無しさん
01/09/06 14:59ID:CB3v/cXALinuxというかUnixではlinkがあるから、ファイルの同一性はパス名だけじゃ
分からない。stat(2)かfstat(2)を使うこと。
Kylixでstat(2)がどういう風に使えるのか知らんし、pascalなんて忘れてるの
で文法的に正しくないかも知れんが。
function identical_file(path1: string, path2: string): boolean;
var
s1, s2 : stat;
begin
if stat(path1, s1) < 0 then
is_same_file := false
else if stat(path2, s2) < 0 then
is_same_file := false
else
is_same_file := s1.st_dev = s2.st_dev and s1.st_inode = s2.st_inode;
end;
もし存在しないファイル同士の比較するなら、ファイル名部分を取り出して比
較、一致するならディレクトリ部分に対して同じことを繰り返す。あとUnixで
は/が連続していてもWindowsのようにエラーにはならない。
0180179
01/09/06 15:03ID:BXn1AL22しまった。is_same_fileじゃなくてidentical_fileね。途中で関数名変えたも
んでミスった。
0181名無しさん
01/09/06 17:06ID:38m1ExPU〜□□ □□ ( ゚Д゚)< 復旧完了
(O)----(O)U-U) \__________
問題あったら指摘4649
0182デフォルトの名無しさん
01/09/06 18:32ID:NES0mnLA分からないところがいっぱいあるので質問させてください。
1.vbのcall命令みたいな物は無いのでしょうか?
prosudureで宣言されてる所に飛ぶとかそういうのです。
-------------------------------------------
Prosudure TForm1.Button1click(Sender: Tobject);
begin
式1
end;
Prosudure TForm1.Button2click(Sender: Tobject);
begin
式1に飛ぶ
end;
-------------------------------------------
こんなのです
0183デフォルトの名無しさん
01/09/06 18:37ID:x54XUUQcButton1Click(Sender);
だが、
イベントハンドラ直接呼ぶのはちと痛いので
Procedure TForm1.Shiki;
begin
式1;
end;
Procedure TForm1.Button1click(Sender: TObject);
begin
Shiki;
end;
// Button2の処理も同じならButton2のOnClickはButton1Clickを選んでおく /
みたいにしたいところ
0184163
01/09/06 18:38ID:fxSN01Ssゴメンいいすぎた。これじゃ俺も厨房丸出しだ。
せっかくDelphiに来たというのにきついこといってすまん。
>>182
関数間goto(イヤーン)じゃなくて単なる関数呼び出しなら
Prosudure TForm1.Button2click(Sender: Tobject);
begin
Button1click(Sender);
end;
0185163
01/09/06 18:40ID:fxSN01Ss182の方法の方がいいね
0186デフォルトの名無しさん
01/09/06 18:41ID:fxSN01Ss183の方法の方がいいね
もういい。氏んでくる
0187デフォルトの名無しさん
01/09/06 18:43ID:kYlEwptk0188Delギコ
01/09/06 18:54ID:ARZrt0jo∧,,∧ ∬ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ミ,,゚Д゚ノ,っ━~ < 氏なんでよろし。
_と~,,, ~,,,ノ_. ∀ \_________
.ミ,,,/~), .| ┷┳━
 ̄ ̄ ̄ .し'J ̄ ̄|... ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ .┻
酒でも飲んで落ち着け
0189デフォルトの名無しさん
01/09/06 18:56ID:lykpdZBYコード書いて実行したらそのままOS巻き込んでフリーズ。
それ以来 TListView のオーナードローは鬼門だと思い
手を出さなかったが…
そうか、VCLのバグだったのか…
0190Delギコ
01/09/06 19:06ID:ARZrt0jo¶(,,゚Д゚) <、、、>>189 聞いてみりゃよかったのに。
ゝ|し |┐ \___________
(_|./ |┘
U U
情報は大切ね、
当然、既にリークしない用のD5用ListViewは
配布されている。
0191Delギコ
01/09/06 19:08ID:ARZrt0jo¶(,,゚Д゚) <、Button1Click(nil)でもいいんだな
ゝ|し |┐ \___________
(_|./ |┘
U U
読んどけ
http://hp.vector.co.jp/authors/VA009712/take/delphi/kabedel.htm#sender
0192名無しさん
01/09/06 19:28ID:3lNca4.E〜□□ □□ ( ゚Д゚)< >>190 あまり参考にはならん鴨
(O)----(O)U-U) \__________
http://do.sakura.ne.jp/~junkroom/file/piclistv.lzh
0193デフォルトの名無しさん
NGNGstat ってなに??
0194デフォルトの名無しさん
NGNGTリストビューを使っています。
クリックイベントとダブルクリックイベントの両方を使っているのですが、
ダブルクリックをしてもクリックイベントが走ります。(当たり前)
クリックのときは、クリックイベント、
ダブルのときは、ダブルクリックイベント「のみ」を実行したいのですが、
どうすればできるでしょうか?
クリックイベントで非常に重い処理をしているので、ダブルクリックするたびにガッカリします。
チェンジとかセレクトイベントは、使いたくないです。(マウスでクリックのときだけ処理をしたい)
デルファイのすごいひと教えて!!
0195Delギコ
NGNG@' ― (,,゚Д゚) < このへんみろ
し― し-J \___________
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=007392
おそらく詳しく見ると分かると思うが
わからなかったらまた質問してくれ
0196デフォルトの名無しさん
NGNGTRect は
TRect = record
case Integer of
0: (Left, Top, Right, Bottom: Integer);
1: (TopLeft, BottomRight: TPoint);
end;
と宣言されていますね。
ARect.TopLeft := Point( 30, 40 );
としたあとで
ARect.Left
ARect.Top
を参照すると、どうして Left Top にも値がちゃんと代入されていますか。
いくら共用体とはいえ TopLeft と Top, Left には関連性は
ないと思っていたのですが。RightBottom と Right, Bottom に関しても
同様ですね。こういったことはクラスのプロパティでないと
実現できないものと思っていましたが。
0197デフォルトの名無しさん
NGNG>1: (TopLeft, BottomRight: TPoint);
各変数のアドレス調べてみなよ。
「たまたま」ぴったりあうようにデザインされてるんだよ。
0198Delギコ
NGNG( ゚Д゚) ( ) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|つ つ⊂ | < ぴったりんこ
〜 | | 、〜 \________
∪ ∪ ∪∪
ヘルプの『レコードの可変部分』を見るといいかも。
0199デフォルトの名無しさん
NGNGじゃなくて,
TopLeft と Top, Left に関連性を持たせるのが,共用体なの。
0200デフォルトの名無しさん
NGNGということは、
TPointEx = object
X,Y:Extended;
procedure MoveTo(AX,AY:Extended);
end;
TRectEx = object
case Integer of
0: (Left, Top, Right, Bottom:Extended);
1: (TopLeft,BottomRight:TPointEx);
end;
procedure Center:TPointEx;
function Width:Extended;
function Height:Extneded;
end;
なんてやってたりすると、サイズが違うからできないってことね。
つーか、クラスを使えって突っ込みが入りそうだが…
0201Delギコ
NGNG(,,゚Д゚) (゚Д゚,,) IDガ キエテル ニャ
/つつ⊂⊂ヽ
〜 ノ | |〜
(/ し ∪∪
ヤメトケ∧∧ ∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ゚Д゚) ( ゚Д゚) < 思う存分自作自演出来ル!
| ⊃|⊃ゞ |⊃ \________
〜| _ |ガシッ!!|″
∪∪ ∪∪
0202デフォルトの名無しさん
NGNGいつのまに…?
0203デフォルトの名無しさん
NGNGID無いと精神的にのびのびできてイイネー
0204デフォルトの名無しさん
NGNGその文章、DelphiMLの初期の頃にいたイズミなんとかを思い出す。
0205デフォルトの名無しさん
NGNG本人と思われ(ワラ
0207206
NGNG0208デフォルトの名無しさん
NGNG0209デフォルトの名無しさん
NGNGunit Unit1;
interface
type
TEPoint = object
X,Y:Extended;
function DistanceTo(const p: TEPoint): Extended;
end;
implementation
function TEPoint.DistanceTo(const p: TEPoint): Extended;
begin
end;
end.
これでどうして
'DistanceTo' の宣言がすでに定義されているものと異なります
ってえらーが起きる??
0210デフォルトの名無しさん
NGNGよくわからんが、自分自身のオブジェクトを引数の型に使っているのが
いけないんじゃ? type PEPoint = ^TEPoint; として PEPoint 型を
引数の型に使ったらコンパイル出来た。
0211デフォルトの名無しさん
NGNGああ、なるほどそういうことか。
クラスにするか…
0212デフォルトの名無しさん
NGNGstringlist の items をクリップボードに入れたいのだですが
それらしいメソッドが無いのです。
アイテムごとに改行で区切るって事で。
最初は assign か savetostream のような気がしたんだが。
教えてくだせぇ。
0213212
NGNGよくわかんないから 非表示の memo に assigh して copyToClipboard してみた。
どうも美しくない気がする。
0214デフォルトの名無しさん
NGNG言いたいけど初心者だから言えない。
引きこもってよっと。
0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNGClipboard.AsText := StringList.Text;
で出来るよ。
0218デフォルトの名無しさん
NGNGOpenとClose忘れちゃアカンと思われ、、、
クリップボードは詳しくないのでアレだが、
OpenとCloseの処理は try..except..end でまとめて、
クリップボードが開けなかったときの対策は必須と思われ。
って、漏れが慎重すぎるのか?
0219デフォルトの名無しさん
NGNGfor i:=0 to 8 do
...
の部分をステップ実行しながらデバッグしていたら、
i の値がどうも 9→0 と変化している。
監視式にはそう書いてあるのよ。
でも、その他の変数の変化を見ると、実際には
i は 0→8 と、ちゃんと変化しているらしい。
これってバグ?
0220デフォルトの名無しさん
NGNGバグではありません。コンパイラの最適化によりそうなります。
0221Delギコ
NGNG| ∪ |
| 〜
|∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ,,゚Д゚)つ < 重要な質問とかいうな。
U \________
はっきりいって>>219の質問は
今まで数十回は聞いた事がある。
聞くなとはイワナーイが、重要扱いされるとウザッ
質問者以外には重要でもなんでもなし。
0222Delギコ
NGNG∧∧ プハー
(,, ゚Д゚) =3 < VCLソースみるとSetAsTextでは
/つ日 例外処理はキチンとやってる。
〜(__ノ
procedure TClipboard.SetBuffer(Format: Word; var Buffer; Size: Integer);
みるといいかも。
AsTextでOpen/Closeする必要はない(タブン)
0223218
NGNG一つのアプリにはボタン1個のみぽとり。
クリップボードのオープン/クローズのみする。
厨房的コードでスマソ。
最初のCaptionは'Open'でよろしこ
//アプリ1
procedure TForm1.Button1Click(Sender: TObject);
begin
If Button1.Caption = 'Open' then
begin
Clipboard.Open;
Button1.Caption := 'Close';
end else
begin
Clipboard.Close;
Button1.Caption := 'Open';
end;
end;
もう1個のアプリにはMemo1個にボタン1個。
//アプリ2
procedure TForm1.Button1Click(Sender: TObject);
begin
Clipboard.AsText := memo1.Text;
end;
これでアプリ1でクリップボード開いたときにアプリ2でボタン
クリックすると、ヤパーリ例外発生。
処理次第ではエラー処理は必須か……
タダでさえ悪いのに眠い頭で考えてるので、変なこと口走ってたらスマソ。
0224218
NGNG>>223は無視してOK。慣れない徹夜はつらいっす(;´Д`)
とりあえずOpen/Closeは必要ないです。
MemoはReadOnlyにしないでいろいろやると
わかるっす。
…ところでかちゅの書込時のエラーはどうにかならないかね。
ウザイしスレごとに名前とか覚えてくれないし…
0225デフォルトの名無しさん
NGNGWin板のかちゅスレで聞いてみれば?
と悪魔の声をかけてみる。
0226Delギコ
NGNG仕事場ではわざわざブラウザ開いてカキコしなきゃなんね。
。°゜ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
__ ∧ ∧゚ / マイルニャ…、ホットゾヌ逝こうかな。
〜⊂_⊂( ゚Д゚)っ <____________
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜' ― (,,゚Д゚) < ところで検証サンクス>>224
し― し-J \___________
>とりあえずOpen/Closeは必要ないです。
いいのかな?
0227デフォルトの名無しさん
NGNG仕様なのは分かるってるが…
おみとろんとか、別のローカル串で対処できないかなと。
かちゅへのパッチでも(・∀・)イイ!
おみとろん用フィルタが無いかなと思ったが…
厨房な俺には無理だし…
だれかかちゅ専用ローカル串つくってくれい!
出来ればDel6Personalでも使える、Server/Client Socketを
駆使して作れる猛者のソース公開きぼんw
とりあえずスレ違いなので幕。
>226
>>とりあえずOpen/Closeは必要ないです。
>いいのかな?
(・∀・)イイ!!
あれで普通にコピーできるみたい。
メモに適当に文字打ってボタン押してメモ消して
メモで今度はCTRL+Vすると検証可能。
0228デフォルトの名無しさん
NGNG〜□□ □□ ( ゚Д゚)< >>226 何故に?
(O)----(O)U-U) \__________
串pacならpacソース見れ
0229Delギコ
NGNG( ゚Д゚) 目< 金曜日だよー。
|つ つ || \ _____________
TTTTTTTT|TTTTTT
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
::.... | サテ キョウモ フルパワー デ シゴト サボルカ
0230Delギコ
NGNG∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(゚Д゚;) < よくわからん
⊂ ⊂| \___________
| |〜
∪ ∪
なぜかちゅがそうなるのかも。よくわからん
>串pacならpacソース見れ
この文章の意味も。よくわからん
0231デフォルトの名無しさん
NGNGオブジェクトに従属した関数を関数と呼ぶのは間違いですか。
メソッドとメンバ関数は同義ですか。
0232Delギコ
NGNGhttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999491550
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ゚Д゚) < これのテスト部分10の所ってエクストリームプログラミングになりますか?
|∪ |つ∀ \___________
| |
U U ヨクワカン ニャーイ
こういう手法はMonaUtils見て尻ました。Monazilla.orgの皆さん感謝。
0233Delギコ
NGNG電 |
|∧ ∧
柱 |,,゚Д゚) < >>231 フィいリング。
⊂ |
| |
|∪
, ' , ; ' ;
似たようなもんで似たような使い方はできるけど
場面によってはキッチリ区別をつけよう。
>オブジェクトに従属した関数を関数と呼ぶのは間違いですか。
メソッドと呼んだ方がいいかも。
>メソッドとメンバ関数は同義ですか。
同義かも。
メンバ関数のなかでもPublicのものをメソッドと呼ぶべきかも
0234デフォルトの名無しさん
NGNGprivateだろうがprotectedだろうがメソッドでしょ。
言語ガイドにはそういう区別はないから。
>>231
自分で関数と呼ぶのは構わないけど、他人に理解してもらえないことも
あるから、注意した方がいいと思う。
0235179
NGNGstat(2)というのはシステムコールのstat。man 2 statしてみ。
Cだと構造体名の名前空間は分かれてるんで関数名と構造体名両方とも同じな
んだけど、Kylixだとそのへんはどう処理してるのかな。
struct stat st;
if (stat(path, &st)) {
error();
}
0236Delギコ
NGNG∩(,,゚Д゚) < 今度はCanStrToFloatだ
⊂,,⌒ ,,つつ. \_
 ̄ ̄
とやり始めたら
恐ろしいことにきがついた。
'.0001'
というのがStrToFloatで変換可能なのは誰でも分かるが
'0.0000…0を10000個ほど省略…001'
こんな文字列まで一応、変換可能とは、、、、
値がどんなものになるのかは知らんが(どうせ0になるんだろうよ。)
さては少数点以下の桁数判断はしていないな。
桁判断はeで表されるときだけみたいだな。
'3.6e-4999'これは変換可能
'3.6e-5000'これは変換不可能
HELPの記述と全然違うなあ。
○'36.0e-4951'
○'0.36e-4952'
○'3.6e-4999'
×'3.6e-5000'
×'1.0e-5001'
×'36.0e-5000'
○'3.5e-4999'
○'0.1e-4999'
○'0.0001e-4999'
どうやらe-5000よりも桁が下がるとダメらしい。
○'.000…0を10000個ほど省略…001e-4999'
×'.000…0を10000個ほど省略…001e-5000'
なんとまあ変な仕様だこと。
0237デフォルトの名無しさん
NGNG例外は処理時間食うので、そこでほんとに処理止めるしかないときには
使うけど、正常系に戻って続くようなのにはあんまり使いたくないな。
しかしStrToFloatには同Def関数ないのか。
0238デフォルトの名無しさん
NGNGかちゅスレで今聞くと、過去ログ読めの荒らしか放置のどちらかがもれなくプレゼントされます。
# あっちのスレ見てるとわかるが、10回近く聞かれてるから住人があきれてる
0239Delギコ
NGNG〜' ― (,,゚Д゚) < じゃ、スレたてるまでもないかちゅーしゃ質問すれがいるな
し― し-J \___________
FAQ作って欲しいものだ。
0241デフォルトの名無しさん
NGNGいや、1に「仕様です」って書いてあるの。
0242Delギコ
NGNGいちまんこ!!
\
 ̄ ̄ ̄ ̄ ̄ |/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧ ∧∧∧
(,,*゚Д゚) _ ,,) ハニャーン
パコパコ/ つ |
(((ヽ ノ /U
U UU
0243Delギコ
NGNG電 |
|∧ ∧
柱 |,,゚Д゚) <引いた?
⊂ |
| | タマニハ シモネタ デ ナゴンデ モラオウカト・・・
|∪
, ' , ; ' ;
0244デフォルトの名無しさん
NGNG浮動小数点数そのものの仕様/表現可能な数値の範囲と
それの文字列表現値の変換仕様をごちゃ混ぜにしとるな。
0245Delギコ
NGNG(,,゚Д゚) < >>244 逝っちゃ割るイが
| つ[|lllll]). \_________
〜| |
∪∪
折れのつくりたいのはMyStrToFloatではなく
あくまで、CanStrToFloatだという事を忘れておるな。
既に、MyStrToFloatを作った方がイイという声が
お空の遠くから
聞こえては着ているのだが。聞こえナかったことにする。
0246デフォルトの名無しさん
NGNG開発ツールなんだからコードを作ることを否定はしないよ。
ただ、 0.00 --(結果が0になるくらいいっぱい)-- 001 を CanStrToFloat に渡したときの結果をどうする気でいる?
True ? False ?
0247Delギコ
NGNG電 |
|∧ ∧
柱 |,,゚Д゚) <チュルーで。どう?
⊂ |
| | if CanStrToFloat(S) then
|∪ A := StrToFloat(S);
, ' , ; ' ; 結果が0でも。OKじゃない?
CanStrToIntも実際そうしてるし。
0248デフォルトの名無しさん
NGNGそんな個所がとても大事なんだったら MyStrToFloat MyCanStrToFloat を作った方がいいように思うぞ
思いつく必要な個所は、何かインタプリタ的な場面か数式処理の一部だろうしね
0249デフォルトの名無しさん
NGNGif MyStrToFloat(S, A) then
...;// Aに入ってる値を見る
とかのほうが合理的では?
いちいちチェックと解読それぞれのために
合計2回もパースするのは無意味だ。
0250デフォルトの名無しさん
NGNG0251デフォルトの名無しさん
NGNGDelギコ氏ねDelギコ氏ねDelギコDelギコ氏ね氏ねDelギコ氏ね
Delギコ氏ねDelギコ氏ねDelギコ氏ねDelギコ氏ねDelギコ氏ね
Delギコ氏ねDelギコ氏ねDelギコ氏ねDelギコ氏ねDelギコ氏ね
Delギコ氏ねDelギコ氏ねDelギコ氏ねDelギコ氏ねDelギコ氏ね
0252デフォルトの名無しさん
NGNGそうかっかすんな
0253デフォルトの名無しさん
NGNG//二つ用意すれば全く問題ない。
function IsStrFloat(Str:string;var Value:Extended):Boolean;overload;
function IsStrFloat(Str:string):Boolean;overload;
0254Delギコ
NGNG∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄
(´∀` )< Delギコ逝ってよし!
と と ) \______
| | |
∧∧ /\ ( ( )
(゚Д゚/ /\ / ̄ ̄ ̄ ̄ ̄
/ / /\ |
\/ / / |
ゞヾ \/ /〃 |
〜〜〜ヾ∽〃〜〜〜〜〜
0255デフォルトの名無しさん
NGNG(´∀` )< Delギコ逝ってよし!
と と ) \______
| | |
∧∧ /\ ( ( )
(゚Д゚/ /\ / ̄ ̄ ̄ ̄ ̄
/ / /\ |
\/ / / |
ゞヾ \/ /〃 |
〜〜〜ヾ∽〃〜〜〜〜〜
0256Delギコ
NGNG| お前が逝け!
\ _ _____
∨
∧ ∧ .∧_∧
(,, ゚Д゚) .( ´∀`)∵‥プシュ
━━つ━つ━━∞∞∞( =======∵‥
〜/ ノ | | | ∵‥
ι' U (__)_)
0257Delギコにはちょっとひとこといわしてもらいたい
NGNG/ ヽ
l / / { l l l
/ | ・ ・ | | | みかんばこ!
l {( lIIIIIl | | ノ
(O`ー―― ´O _)
0258デフォルトの名無しさん
NGNGワラタ
0259デフォルトの名無しさん
NGNGStrToFloat 関数の戻り値は Extended 型だよね?
で、文字列を Extended 型の浮動小数点値に変換したときに
きちんと元の文字列通りに表現できているかチェックしたいんだよね?
StrToFloatした結果を途中でDouble型なんかに代入したら、さっきの
チェックは全く意味無くなるから当然プログラムでは浮動小数点値の型を
すべて Extended 型で統一してコーディングするんだよね?
これを守れないのなら厳密なチェックをする意味がない。
0260Delギコ
NGNG@_(,,゚Д゚) < ばらっちににらまれながらも。
⊂,,__つつ. \_
StrToFloatの調査。
文字列からピリオドを消して
先頭0をトリムしたあとに判定して
'1' +
'1897314953572317648499999999999999999999999999999999999999999999999999999999999999999999999999999999' +
StringOfChar('9', 900) +
StringOfChar('9', 3000) +
StringOfChar('9', 900) +
'99999999999999999999999999999999'//全部合わせて4933桁
これは例外発生せずに通過するが
'1' +
'1897314953572317648500000000000000000000000000000000000000000000000000000000000000000000000000000000' +
StringOfChar('0', 900) +
StringOfChar('0', 3000) +
StringOfChar('0', 900) +
'00000000000000000000000000000000' //全部合わせて4933桁
これは例外が発生する。
そんな感じ。
いやあ、面倒だったよ。これ求めるの。
0261Delギコ
NGNG@_(,,゚Д゚) < >>259 ヲ。フォローサンクス。
⊂,,__つつ. \_
>きちんと元の文字列通りに表現できているかチェックしたいんだよね?
そではないの。
>当然プログラムでは浮動小数点値の型をすべて Extended 型で統一してコーディングするんだよね?
それはそうなんだけど
単一のプログラムの事を想定してるのではなくて
標準汎用的関数をつくりたいのさ。
//文字列がFloatに変換可能かどうか調べる関数
//実際にStrToFloatを動作させて例外発生を捕らえる方法
function TrueCanStrToFloat(const S: String): Boolean;
begin
try
StrToFloat(S);
Result := True;
except
on E:EConvertError do
Result := False;
end;
end;
これの完全互換関数が作りたいわけでしゅわ。
文字列から実数変換するごときで例外が発生するのはウザイからね。
ねずみのはいでる隙もなく完全なヤツね。
これで例外発生せずにStrToFloatDefを作れそうだな。
IDEの設定やブレークポイントでで例外キャッチを無効にするのは
データが完全に保存されないから嫌なのよ。
せめてIFDEFで囲んで例外を捕らえないように
なってればよかったのだが…
0262デフォルトの名無しさん
NGNGfunction CanStrToFloat(const S: string): Boolean;
begin
Result := TextToFloat(PChar(S), Result, fvExtended);
end;
0263デフォルトの名無しさん
NGNG0264デフォルトの名無しさん
NGNGSource\Rtl\SysUtils.pas
StrToFloat探すとザクザクと
function StrToFloat(const S: string): Extended;
function StrToFloatDef(const S: string; const Default: Extended): Extended;
function TryStrToFloat(const S: string; out Value: Extended): Boolean; overload;
function TryStrToFloat(const S: string; out Value: Double): Boolean; overload;
function TryStrToFloat(const S: string; out Value: Single): Boolean; overload;
こんなのも出てくるね。
function TextToFloat(Buffer: PChar; var Value;
ValueType: TFloatValue): Boolean;
とか
0265デフォルトの名無しさん
NGNGSource\Rtl\Sys\SysUtils.pas
だった。
0266デフォルトの名無しさん
NGNGこれはリージョンを使うなというボーランドの思し召しですか。
0267Delギコ
NGNG( ゚Д゚) < >>262 すこぶるアクセスバイヲが起きるがなぜだろう?
|∪ |つ∀ \___________
| |
U U チョウサチュウ
⊂⊃
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(,,゚Д゚) < >>266 重い飯です。
ハ ̄ ̄` \____________
し ╋ .J
|___| オボシメシ ダッチューノ
∪ ∪
∬ ∬
0268262
NGNGスマヌ。激しくバグが仕込まれていた。正しくは下記の通り…
お詫びとして CanStrToInt, CanStrToInt64 も付ける。
function CanStrToFloat(const S: string): Boolean;
var
tmp: Extended;
begin
Result := TextToFloat(PChar(S), tmp, fvExtended);
end;
function CanStrToInt(const S: string): Boolean;
var
E: Integer;
tmp: Integer;
begin
Val(S, tmp, E);
Result := (E=0) and (@tmp=@tmp);
end;
function CanStrToInt64(const S: string): Boolean;
var
E: Integer;
tmp: Int64;
begin
Val(S, tmp, E);
Result := (E=0) and (@tmp=@tmp);
end;
0269名無しさん
NGNG漏れ的には、もちっとマターリしてくれた方がありがたい
0270Delギコ
NGNG( ゚Д゚)< 失礼したーよ。>>269
|⌒|U U \_______
川 | |
ノU.U ちょっと暴走気味でした。。
>>268 検証中だけど。お見事。
それにしても
(@tmp=@tmp); 何これ?暗号みたい。
サパーリわからない。
E≠0まではVCLを見て把握してたんだけど...すごいニャ。
0271デフォルトの名無しさん
NGNGfunction StrToInt(const S: string): Integer;
function StrToIntDef(const S: string; Default: Integer): Integer;
function TryStrToInt(const S: string; out Value: Integer): Boolean;
function StrToInt64(const S: string): Int64;
function StrToInt64Def(const S: string; const Default: Int64): Int64;
function TryStrToInt64(const S: string; out Value: Int64): Boolean;
なんてのも同様になあるな。
Try〜が全部変換可能かどうかを確認しつつ結果の値も貰う関数ね。
従って作る必要なし。
0272Delギコ
NGNG| |Д゚) < >>264 教えてくれてサンクスコ
| ⊂| \_他の皆様もサンクスコYO.
| | |
| |U
 ̄ ̄ ̄ ̄ ̄
すっげー。D6。マニア心くすぐりまくり。
(HELPに載ってないあたりがイィd(・w・)
out指令ってなんじゃろか。
調べていると、D6ではStrToDateTimeDef。までもが実装されてる!
0273Delギコ
NGNG聞いてアロエリーナ
Delphi6っていいじゃん。よすぎ!
聞いてくれてあーりがと アロエリーナ♪
\_____ ________/
|/
∧∧ セッカク ジッソウ シタノガ ムダニ ナタケド イイノ ソレデモイイノ
( ゚Д゚)
| っ日 Ψ
と_)_) □ ソリャ ヨカッタナ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0274デフォルトの名無しさん
NGNG> (@tmp=@tmp);
どう見ても無駄だが。なにをしようとした?
0275デフォルトの名無しさん
NGNG0276デフォルトの名無しさん
NGNG0277デフォルトの名無しさん
NGNG0278デフォルトの名無しさん
NGNGへノ /
ε ノ
>
0279デフォルトの名無しさん
NGNGヽ( ゚Д゚) ノ <板違
へノ /
ε ノ
>
0280デフォルトの名無しさん
NGNG0281デフォルトの名無しさん
NGNGΛ_Λ
ヽ( ´∀`)ノ <オマエモナー
へノ /
●ノ
>
0282デフォルトの名無しさん
NGNGそろそろ気づいてるだろうけど、tmpが使用されていないというコンパイル時のヒント抑制のためだろう。
{$HINTS OFF}{$HINTS ON}で囲んでもいいと思うが。
0283ハッタリ
NGNGvar 指令と(変数宣言の var ではなく、引数指令の var)
と似たような働きをもつが、out の場合は関数に渡される際に
値が破棄される。つまり…
procecure swap(var a, b :Integer );
var
t: Integer;
begin
t := a;
a := b;
b := t;
end;
の場合は、
a:=0;
b:=6;
swap(a,b);
と書けば a = 6, b = 0 になっているが、
procecure swap(out a, b :Integer );
var
t: Integer;
begin
t := a;
a := b;
b := t;
end;
の場合は、
a:=0;
b:=6;
swap(a,b);
としても a = 不定, b = 不定 になる。
swap(var ...) の場合は a =0, b =6 という値を保持したまま swap 関数に突入するけど、
swap(out ...) の場合は a と b の値が swap に突入する前に破棄されてしまうからだ。 a, b は 0 になっている保証は無い。
0284デフォルトの名無しさん
NGNG昇順ソートしてから反転すればいいじゃん
0285280
NGNGいくらなんでもそんなところでは悩まない・・・
stlinglist に 1, 2, 5, 11, 102, 200 とあって sortメソッドを使うと
1, 102, 11, 2, 200, 5 って並ぶじゃない?
これを数字順にしたかったの。
0286デフォルトの名無しさん
NGNGそのあと頭のゼロを削除。
もしくは、素直に整数型に直してからソート。
with StringList do
begin
while Length( Strings[i] ) < 10 do
Strings[i] := '0' + Strings[i];
Sort;
while Copy( Strings[i], 1, 1) ='0' do
Strings[i] := Copy( Strings[i], 2, MaxInt );
end;
0287デフォルトの名無しさん
NGNG(自分で確認した範囲内では)。
varは値を渡して加工して返すために使い、
outは値を返すためだけに使う。
要するに値を複数返す事のできる関数として使う。
プログラマに対する目印みたいなものだね。
>285
TStringList.CustomSort使えばいいよ。
0288デフォルトの名無しさん
NGNGへノ /
ε ノ
>
0289デフォルトの名無しさん
NGNG引数にインターフェース型を使うと生成コードが変わるよ。
Delphi 3 でインターフェースサポートのために out 指令が
追加されたと記憶している。
0290デフォルトの名無しさん
NGNGprocedure Hoge ( const SList : TStringList )
begin
SList . Add ( 'HOGEHOGE' ) ;
end ;
は可能?Addはただのメソッドだよね。
0291 ◆Z6G0yP9Q
NGNG0292 ◆Z6G0yP9Q
NGNG自分はemacsとmakeでJava
0293デフォルトの名無しさん
NGNGΛ_Λ
ヽ( ´∀`)ノ <オマエモナー
へノ /
●ノ
>
0294デフォルトの名無しさん
NGNGΛ_Λ
ヽ( ´∀`)ノ <オマエモナー
へノ /
Фノ
>
0295デフォルトの名無しさん
NGNG0296Delギコ
NGNG〜′ ̄ ̄(メ゚Д゚)つ
UU ̄ ̄U イミナイ アオリ イッテヨシ ツーカ ツネ
______∧________________
IDが消えたら早速煽りか?
0297デフォルトの名無しさん
NGNG可能。SList 引数自体を変更することが出来なくなるだけ。
SList := nil; <これは駄目だが
SList.Add(.. <これは出来る
0298デフォルトの名無しさん
NGNGつーかここ、自作自演の匂いがプンプンするんだけど
どうよ?
0299Delギコ
NGNG( ´∀`)< >>298 自作自演なわけないモナー
( ) \_____
| | |
(__)_)
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧∧ < ふー。IDが消えてから大忙しだぜ
(゚Д゚∧)_∧ \____________
( ̄⊃ ´∀`)
| | ̄| ̄
(__)_)
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧∧ハッ! < なに見てんだゴルァ!!
(#゚Д゚∧_∧ \____________
( ̄⊃ ´∀`)
| | ̄| ̄
(__)_)
0300デフォルトの名無しさん
NGNG0301HIROMI
NGNGああ〜取られちゃった( ̄▽ ̄|||)
0302Delギコ
NGNG∧ ∧ /
( ゚∀゚)< >>301 HIROMI・ゴゥー
|つ つ \_________
〜 | イヤ ナントナク
∪ ∪
0303Delギコ
NGNG@_(,,゚Д゚) < out指令 教えてくれてサンクスコ。
⊂,,__つつ. \varと独鈷居独鈷居の指令だね。
混乱するかもしれないのでvarだけ考えとコっと。
∧ ∧ / ̄
∩(,,゚Д゚) < 先頭ゼロ埋めはFormat関数でもよいよ。
⊂,,__つつ. \_ Format('%.?d', [変数]);
これで動作確認してね。
procedure StrTest(A, B: String); overload;
var
S: String;
begin
if A <> B then
begin
S := A + ' ≠ ' + B;
ShowMessage(S);
Form1.Editor1.Lines.Add(S);
end;
end;
procedure TForm1.Button7Click(Sender: TObject);
var
I: Integer;
begin
I := 1;
StrTest('0001', Format('%.4d' , [I]) );
StrTest('0001', Format('%4.4d', [I]) );
StrTest(' 0001', Format('%6.4d', [I]) );
StrTest(' 1', Format('%6d', [I]) );
I := 12345;
StrTest('12345', Format('%.4d' , [I]) );
StrTest('12345', Format('%4.4d', [I]) );
StrTest(' 12345', Format('%6.4d', [I]) );
StrTest(' 12345', Format('%6d', [I]) );
end;
∧ ∧ / ̄
∩(,,゚Д゚) < ついでに重箱墨だが
⊂,,__つつ. \_
> while Length( Strings[i] ) < 10 do
> Strings[i] := '0' + Strings[i];
Strings[i] := StringOfChar('0', 10 - Length(Strings[i])) + Strings[i];
この一行でいいかも。
分かって使ってらっしゃるならいいですが。
0304デフォルトの名無しさん
NGNG英語、変。
0306Delギコ
NGNG>TStringList.CustomSort使えばいいよ。
まあ!また便利なものが...D6から...
 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
∧ ∧ ホカホカ
(,, ゚Д゚)∫
/ つ旦O
〜(__n n[ ̄ ̄ ̄.]
 ̄ ̄ ̄
0307Delギコ
NGNG∧ ∧||| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(||゚Π゚)< Formatのトコ。間違えた。前方0を付属したいのは数値じゃなくて文字列だったのね。
〜/J. | |J \_______________________________
UU | | キガツイタ ヒト ダケ ムシ シテクレ
0308Delギコ
NGNG| ∪ |
| 〜
| ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|( ,,゚Д゚) < こんな感じでソートデキる
U U \________
function NumberSort(List: TStringList; Index1, Index2: Integer): Integer;
var
S1, S2: String;
begin
S1 := StringOfChar('0', 15 - Length(List[Index1])) + List[Index1];
S2 := StringOfChar('0', 15 - Length(List[Index2])) + List[Index2];
Result := not AnsiCompareStr(S1, S2);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
SL: TStringList;
begin
SL := TStringList.Create;
try
SL.CommaText := '1,2,5,11,102,200';
SL.CustomSort(NumberSort);
Memo1.Lines.Assign(SL);
finally
SL.Free;
end;
end;
ソートされた文字列。
200
102
11
5
2
1
0309センス悪いぞ
NGNG負数ははどうするんだ?
0310Delギコ
NGNG>負数ははどうするんだ?
ガビーン
∧ ∧||| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(||゚Π゚)< 忘れてた。
〜/J. | |J \_______________________________
UU | |
0311Delギコ
NGNG∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(,,゚Д゚) < Delphianでデザパタやってる人いる?
ヽ/つ且~~ \___________
(__ _)
なんの本を読んだらいいかニャー?
0312デフォルトの名無しさん
NGNG(I) Got it! でええのでは?
取っちゃった! 解っちゃった! という意味。
0313デフォルトの名無しさん
NGNGDelphianというのが、デルファイを使う人という意味なのか、
それとも製品名なのか知らんけど、
デザインパターンは使ってる。
つーか、C++でバリバリ使ってたからね。
0314デフォルトの名無しさん
NGNG0315313
NGNG0316デフォルトの名無しさん
NGNG0317デフォルトの名無しさん
NGNG普通にGoFの「デザインパターン」でも読めば?
0318デフォルトの名無しさん
NGNGRalph Johnson, John Vlissides著
「オブジェクト指向における再利用のためのデザインパターン」
知らない人用に、お節介。
0319デフォルトの名無しさん
NGNGデザインパターンのサンプル23本書けや
0320デフォルトの名無しさん
NGNGhttp://www.hyuki.com/dp/cat_index.html
0321デフォルトの名無しさん
NGNGDelギコのデザパタ本欲しい(w
サンプルソースにもAA入ってるんだよね。もちろん。
0322デフォルトの名無しさん
NGNGここじゃだめってときはどこか教えてよ.
Widgetをgtk_container_add などなどした場合 親のポインタから
子このポインタを探る方法がしりたいよぉ.
できれば賢く知る方法がいいよ.
0323Delギコ
NGNG> デザインパターンのサンプル23本書けや
何せもうすぐ会社辞めるからね。
フリーだよ、フリー。一日中フリータイムね。
 ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧∧
( )
/ |
〜(,_,,ノ
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(;゚Д゚) < …それって無色カモ
./ | \__________
(___/
/ ヒッキー マッシグラ?
0324デフォルトの名無しさん
NGNG0325ななしぷろぐらま
NGNG値を返す目印かぁ.なるほど.
いままで引数名の頭にwをつけたりして区別していたのですが,
out を使うほうがわかりやすくていいですね.
0326名無しさん
NGNG〜□□ □□ ( ゚Д゚)< 必ずInしてこないという事は、初期値は不定値でよろしいか?
(O)----(O)U-U) \__________
仕事テンパーリ中
0327Delギコ
NGNG実際は呼び出し側の値が引き継がれるのでは?
保証されないという名目で実はvarと同じと思う。
∧∧ / ̄
@_(,,゚Д゚) < わからーんけど。
⊂,,__つつ. \_
0328デフォルトの名無しさん
NGNG>>283にかいてあるじゃん。ヘルプにも。
---------------
呼び出し側で(中略)の内容が解放され,すべてのフィールドが未定義の状態に戻されます。
(中略)
out パラメータの値は必ずしもゼロにクリアされるわけではありません。レジスタに置かれた値は,そのまま呼び出し先に渡ることがあります。しかし,out パラメータ経由で渡された値を使った場合は,予期できないことが起こりえるため,使わないようにしてください。
0329名無しさん
NGNG〜□□ □□ ( ゚Д゚)< 燃え尽きてきたからもう寝るです
(O)----(O)U-U) \__________
>>328スマソ&サソケス
0330Delギコ
NGNG(,,゚Д゚) < ジッソウはout=varじゃないのかな?
|つ つ \ と考えたんだけど、違うみたいね。
〜 | とりあえず、必ず初期化はしとけよ。ってことで。
∪ ∪
varがあるからout使わんけどね。
0331デフォルトの名無しさん
NGNGoutっちゅう宣言があれば最適化や警告の足しになるね。
やってるか知らんけど。
COMにおけるoutなんかは、特にリモートの場合に元の値を送信しなくて済む
なんて効果もあるね。
0332デフォルトの名無しさん
NGNGpascal とか register とかの予約語の意味がサパーリ。
まあ、使わないからいいけど…
0333デフォルトの名無しさん
NGNGリモートアクセスは、単にObjectに触ろうとするだけでコストかかるんで、
色々悩みがあるね。
ローカルなら「最適化よりRADのすばやさを取る」というDel的アプローチでも
(今時の処理速度なら)結構OKだったりするのだが。
0334デフォルトの名無しさん
NGNG1,2バイトを区別して文字数を取得したい場合は
s : string;
------------
len := Length( WideString( s ) );
でしょ?で、
WideString( s )[1] と書いた場合、これは WideChar なの?
文字コードはどーなってんの?
0335デフォルトの名無しさん
NGNG綺麗に繋ぎ合わせようとしています。
私の理想は、ウインドウが移動したときに、WM_MOVEDメッセージを受け取って
処理を行おうと考えいる事です。しかしながら、私にはその方法が
わかりません。現在、数秒ごとに全ての窓の位置を調べて、
その情報を元にして処理をしています。
どうすれば、ほかのアプリーケションのメッセージを私のプログラムに
よって監視する事が可能ですか。
0336>335
NGNGぜひWin2kに対応して公開してよ。
つーかWin32APIスレのがレス付きそう。
0338デフォルトの名無しさん
NGNG0339335
NGNGウィンドウ操作関連APIのラッパークラス
(と呼んでいいのかな?)です。
このコードが Win2K 上で動作するかどうか確認してくれません?
問題なく動けば、いま私が作っているツールは
そのままWin2k対応になりますですハイ。
ユニットコード及びサンプルコードは↓の1と2
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1000013243
0340デフォルトの名無しさん
NGNGDelギコ氏よ
>>320のページの作者が書いている
「Java言語で学ぶデザインパターン入門」
がかなりおすすめだぞ。
俺が勉強してた頃はガンマ本しかなくて苦労したが、
今これを読むともっと楽できたのにと思う。
0341デフォルトの名無しさん
NGNG0342Delギコ
NGNG〜′ ̄ ̄( ゚Д゚)< >>340サンサンサンクス。
UU ̄ ̄ U U \_____________
∧ ∧
〜′ ̄ ̄(メ゚Д゚)つ
UU ̄ ̄U
______∧________________
おまえが市ね。下らんアオリするヒマがあったら首くくれ。
0343Delギコ
NGNG∧∧
¶( ゚Д゚) || <あ゙〜
ゝ|し |つ||
(_|./ | 人 342 の後半は341宛てね。
U U 川
0344340
NGNG0345Delギコ
NGNG∧ ∧ ・・・・。 ブルーニャ
( ゚Д゚)
|∪ |
〜| |
U U
じつは、つまずいてころんで
捻挫してしばらく松葉杖生活…
足。痛すぎ。痛み止めないとあまり思考ができない。
医者に骨に小さいヒビ入ってるかも氏れんと言われた
0346Delギコ
NGNG_ /⊂ `∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | \( ゚Д゚)< 仕事が忙しすぎるから
| / ∪ ∪ \_____________
 ̄
,,ヽ
⊂, `\⊃ ベチャ / ̄ ̄ ̄ ̄ ̄ ̄
\∧∧ < 怪我でもしたい。
⊂(,,゚Д゚)つ)) \______
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
と考えてしまったアナータは
すでにヤバイ状態なので仕事休めよ。
これ読んどけ。
ITプロフェッショナルを襲う“心の病”
http://www42.tok2.com/home/from2ch/kokoro/
実際、怪我したらつらいな。コンビニに出かける事も苦痛だ。
0347デフォルトの名無しさん
NGNG俺プログラマ志望だけど…
みなさんはこれを読むと「うん、うん、あるある」って
感じ何ですか。
0348デフォルトの名無しさん
NGNG泣きたいほどあるある
0349デフォルトの名無しさん
NGNGどのくらいで…
0350名無しさん
NGNG0351デフォルトの名無しさん
NGNGプログラマ板にいくと、その関連のスレッドがいくつかあるぞ。
0352デフォルトの名無しさん
NGNGプグラマ版に逝ってきます。
0353350
NGNGぶわぁ〜れたか
0354デフォルトの名無しさん
NGNGtype
PInt = ^Integer;
procedure Swap(a,b: PInt);
var
t:integer;
begin
t:=b^;
b^:=a^;
a^:=t;
end;
という書き方が可能ならば、
procedure Swap(a,b: ^Integer);
var
t:integer;
begin
t:=b^;
b^:=a^;
a^:=t;
end;
も可能であって然るべきだとおもうんだけど、
どうして文法エラーになるの?
0355デフォルトの名無しさん
NGNG0356たのもー
NGNG0357デフォルトの名無しさん
NGNGまず氏んでください。
0358デフォルトの名無しさん
NGNGまず適切なスレッドを探す技能を身に付けてください。なぜ Del スレに書く?
0359デフォルトの名無しさん
NGNG微妙に>>1の書き方が悪いかも。。。
0361デフォルトの名無しさん
NGNGジサクジエン?(・∀・
0362名無しさん
NGNG〜□□ □□ ( ゚Д゚)< あいよ >>356
(O)----(O)U-U) \__________
http://plaza15.mbn.or.jp/~Kentaro/
0363デフォルトの名無しさん
NGNG0364357
NGNGなんでやねん?
0365(笑)
NGNG0366(夫)
NGNG0367(供)
NGNG0368(抵)
NGNG0369デフォルトの名無しさん
NGNG0370デフォルトの名無しさん
NGNG0371デフォルトの名無しさん
NGNG0372ななしヘタぐらま
NGNGWideCharはユニコード文字です.
WideString( s )[1] でWideCharとして取り出せますね.
ヘルプの記述は見つけられませんでしたが.
procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
wc: widechar;
o: integer;
begin
s := 'ももこ120%'; // (笑)
wc := widestring(s)[1];
o := ord(wc); // 文字型や列挙型を数値に
showmessage(inttohex(o, 4)); // "も"=3082(16進数)
end;
ある文字がユニコードでどの数になるかは
IMEパッドとかで調べられます.
というかこれで確認しました.
(ATOKでも可)
0373たのもー
NGNGありがとうございます。
指定した周波数の音を鳴らす関数が見つからなかったので助かりました。
以下余談
Delphi6personalをダウンロード、インストールしましたがCOMオブジェクトに関するヘルプは無いようです。
professional版を買わないとだめかもしれません。
0374ななしヘタぐらま
NGNGoutはたしかDel4から出てきたキーワードなので
COMでの使用を想定したものではないかと思います.
0375デフォルトの名無しさん
NGNGDel3のヘルプにも乗ってる
out パラメータより変数パラメータの方が効率的なため,
out パラメータは COM メソッドに対してのみ使うようにしたほうがいいでしょう。
COM にいての詳細は,「インターフェース」を参照してください。それ以外の点では
out パラメータは変数パラメータと同様に動作します。
OutもCOMも使ったこと無いので詳細は任せる
0376デフォルトの名無しさん
NGNGおー、なるほど。
やはりウニコードだったんだね。
てことは、ByteType( UnicodeString, ... ) とか
って使い方は出来ないのね。文字コード違うし。
わざわざ愚かな俺の質問に答えてくれてありがとう。
(いや、嫌味っぽく聞こえるかも
知れんけど、嫌味じゃないよ
0377デフォルトの名無しさん
NGNG∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′ ̄ ̄( ゚Д゚)< 見やすくなってヨシ!
UU ̄ ̄ U U \_____________
0378名無しさん
NGNG〜□□ □□ ( ゚Д゚)< >>373 ちょいと補足
(O)----(O)U-U) \__________
元々WAVEデヴァイスは与えられた波形をDA変換するものだから
MIDI/FM音源等と違って、「与えられた周波数を鳴らす」という仕組みは無いっス
関数で鳴らすという意味ではVBだろうがVCだろうが、んなこたーできない
んじゃどうするかというと440Hzの音を鳴らすなら
440Hzのサイン波をメモリ上に作って、それをWAVEに渡してるだけっス
くわしいバッファリング等の仕組みはそのリンクに説明あるから読んでちょ
RIFFフォーマットはここに(英文だけど)
http://www.wotsit.org/
0379デフォルトの名無しさん
NGNGVCL+Win32APIでカバーできないのはどんな領域?
0380デフォルトの名無しさん
NGNGIEコンポ
0381デフォルトの名無しさん
NGNG0382デフォルトの名無しさん
NGNGDirectXとかShell関連とか
0383デフォルトの名無しさん
NGNGいままで ListBox1.Items.Count と書こうとして
ListBox1.Count としてコンパイル失敗した事が何度あった事か…
∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
@' ― (,,゚Д゚)つ < うれしいぞ!!
し― 怐@ \___________
0384たのもー
NGNGたとえば sound(440) 見たいなことが出来るものとおもってました。
ありがとうございます。
>>379
周辺機器付属のライブラリがCOMオブジェクトとして提供されているので使わざる終えません。
0385デフォルトの名無しさん
NGNGTMemoeyStream を使ってファイル結合ソフト作ったんだけど、270MBの動画を5つに分割したファイル、これを
結合しようとしたら、
「メモリ展開中に領域が足りなくなりました」
ってエラーがでた。
どうすりゃいいですか…
0386デフォルトの名無しさん
NGNGだれが出してるメッセージだい?
0387Delギコ
NGNG(,,゚Д゚) < 足イタイ
U ,つ゛ \____________
| |
ノ∪∪ リョウヨウチュウ
WideCharやCOMやout指令のお話
調べてくれてる人。ありがとう。
勉強になるよ。
0388Delギコ
NGNG| |゜⌒/..| \ | ゜|
゜ ⌒// ..| ゜ \ ゜ |
| / / | | |ヽ゜ \⌒゜ |
| . ̄ ̄ ̄ ̄|| ̄ ̄ ̄ ̄
| ∧ ∧|| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| (,,゚Д゚)|| < みなさま、台風にはお気をつけて。
゜ | ..|∪ つ \______________
| |.| | | |
___.U..U____ ゜
台風の時は自動車保険が出ないので
くれぐれも事故には注意!
…14台玉突き事故もあったって。
Delには関係なくてスマソ
0389デフォルトの名無しさん
NGNGブラウザ(例:IE5.5)で表示するようなプログラムを作りたいです
サンプルコードありませんか?
0390デフォルトの名無しさん
NGNG○Button1
0391Delギコ
NGNG∩(,,゚Д゚) < これかニャ?>>389
⊂,,⌒ ,,つつ. \_
 ̄ ̄
WebBrowser に直接 HTML を表示する方法
http://members.jcom.home.ne.jp/monazilla/document/directwrite.html
ブラウザに何を表示させるのかがわからん。
>>390そんなくだらない訂正はいらないので
質問はもっとわかりやすく書きなさい。
0392デフォルトの名無しさん
NGNGかわいこぶりっこしてるとこがむかつく。
0393デフォルトの名無しさん
NGNG粘着っぷりにワラタ
0394Delギコ
NGNG(,,゚Д゚) < いいかげん。しつこいな。>>392
U ,つ \____________
| |
ノ∪∪ オマエ ガ 氏 ンダラ カンガエテ ヤル
マターク 2ch ネンチャク ツーノハ・・・
∧∧
(,, ゚Д⊆0___,,
|⊃二O,---' ̄ ̄
〜| |
.∪∪ ヂウ ノ オテイレ スルカ ニャ
0395名無しさん
NGNG〜□□ □□ ( ゚Д゚)< マイムマイムマイムマイム♪マイムメッサッソ♪
(O)----(O)U-U) \__________
ファイルウプ機能の実装中
パラメタをMIMEデコードにバラさにゃならん方式変更だけウルトラめんどい
あとは、きっとなんとかなりそうです
作者にめっさ失礼だがベースのソースがきちゃな過ぎ
共通関数をplに纏めろよって思いまくりsage
0396Delギコ
NGNG(,,゚Д゚)
U U
〜| |
U U
> 従来からトレーニング、サポート、コンサルティングというサービスビジネスは行って
> いたのですが、さらに拡大して、システム受託、Pilot Programの作成、Feasibility
> Study、プログラマーの派遣等も行います。
金儲けのためとはいえ
一介のJava業務アプリ請負屋なんかにはならないでもらいたいな
0397デフォルトの名無しさん
NGNGすんません、plってなんですか?
私も自分のソースを公開したいと思っているので
とても気になります。
0398389
NGNGなるへそさんくす
0399デフォルトの名無しさん
NGNGつーかperlで汚いは誉め言葉。>395
0400デフォルトの名無しさん
NGNG気づくのおそかったな。日本のユーザーは見捨てられたんだよ。
0401397
NGNGサンクス。Perlか…
>>共通関数をplに纏めろよって思いまくり
なんか混乱してるんだけど、Delphiのソースコードを
Perlに埋め込むのか???
それともDelphiとはマターク関係ない話なのか。
0402デフォルトの名無しさん
NGNGマターク関係ないPerlの話だと思われ。
0403Delギコ
NGNG(,,゚Д゚) =3 < Perlはソースアップ板の話では?
| つ日~~ \___________
〜| )
U U
置いてよし認定委員会(って題名なのか?)
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html
0404397
NGNGDelphiソースコードの話じゃなくて
ファイルウプ版CGIのPerlソースの話ね。
日本語修行に逝ってきます。
0405デフォルトの名無しさん
NGNGTMemoryStreamはメモリ使うんだから
空きメモリが270MB異常ないと無理だな。
くっつけるだけでしょ?TFileStreamつかえば?
まぁ、それもHDDの空きが270MB異常ないとだめだよ。(w
0406デフォルトの名無しさん
NGNG392なんて無視だよ
反応を楽しんでるだけだよ
0407デフォルトの名無しさん
NGNGスワップしてメモリ確保してくれるだろうという予想を裏切られたのだと思われ。
0408デフォルトの名無しさん
NGNGバイナリデータを操作するのに対し、
TFileStream はどこかに作業用ファイルを確保して
そこに展開してからデータ操作するって感じですか。
0409デフォルトの名無しさん
NGNGはドキュンプログラマなので放っておきましょう
0411デフォルトの名無しさん
NGNG0412デフォルトの名無しさん
NGNGなんつーか。
TFileStreamはどこにも何も展開しないよ。
ただcreate時に指定されたファイルを開き、
Read/Writeで単純にファイルに読み書きをするだけ。
Fileへの単純なアクセスをTStream派生に共通化しただけのものだよ。
特段のバッファリングすらしない。
0413デフォルトの名無しさん
NGNG物理メモリが少なくても「ちゃんと」十分なスワップファイルを定義していれば
(下の例では約 600M くらい定義してあればよし)
var
M : TMemoryStream;
begin
M := TMemoryStream.Create;
M.SetSize(500*1024*1024);
M.Free;
end;
正しく動く。>>385 の「メモリ展開中に領域が足りなくなりました」は
まったく別のえらだと思うよ。だいたいそのエラーメッセじ、VCL で定義されてないぞ。
0414385
NGNG「メモリストリームの拡大中にメモリが足りなくなりました」ってエラーがでてます。ハイ。
0415デフォルトの名無しさん
NGNGperlしか書いたことがないので一向にきれいなソースが
書けるようになりません。
やっぱCですか?
0416デフォルトの名無しさん
NGNG0417デフォルトの名無しさん
NGNG0418デフォルトの名無しさん
NGNGあれがなきゃ無駄に長くなるだけだと思うが…
それとも変数に代入してから使うのか?
Form1.ListBox1.Items.Objetcs[0]
Form1.ListBox1.Items.Objetcs[1]
Form1.ListBox1.Items.Objetcs[2]
こういったものを
TStrings s = Form1.ListBox1.Items;
s.Objects[0];
s.Objects[1];
s.Objects[2];
見たいな感じで書くのか?
0419デフォルトの名無しさん
NGNGこぴぺでgoe
0420デフォルトの名無しさん
NGNGVBにもあるヨ
0421名無しさん
NGNG〜□□ □□ ( ゚Д゚)< >>399 じゃあ「ばっちぃ処理」って事で(ワラ
(O)----(O)U-U) \__________
なーんて、偉そうな事いえる職人じゃないのでsage
0422デフォルトの名無しさん
NGNGDelphiで任意の音波形を出力する
サンプルプログラムはありませぬか。
0423名無しさん
NGNG∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ,,) < 題名なんて飾りです!
./ | \ それが偉い人にはわからんのですよ
(___/ \_____________
/
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(,,゚Д゚) < なんつったりして
./ | \_____________
(___/
/
0424デフォルトの名無しさん
NGNGコンストラクターが呼ばれてその後IDEに制御が戻ってしまうんですが、
制御が戻った後でもタイマーイベントか何かでコンポーネントに制御を戻す
ことは出来ないんでしょうか?
考えてることは、設計時にフォームにそのコンポを貼り付けると
コーディングを監視できるとか、あるいは簡単なゲームができる
とか、お遊びかもしれませんが出来ないでしょうか?
0425デフォルトの名無しさん
NGNG「メモリストリームの拡大中にメモリが足りなくなりました」
(仮想記憶 - (OS その他が使うメモリ) ) / 2 までなら確実に処理できるよ?
微妙な場合は, ストリームをちびちび伸ばしていくんじゃなくて,最初にボンとでっかく確保。
0426誤爆人
NGNGJとD両使いだが、最近は
>TStrings s = Form1.ListBox1.Items;
>s.Objects[0];
こっちの書き方のほうが好きだな。変数名はもっとマシなのにするが。
withが対象が明確じゃなくなるから。
Javaは使う場所で変数宣言できるからそれほど不自由しない。
Delphiはvar節で変数宣言しなきゃならんから上のような書き方は多用しにくいわな。
ま、慣れの問題だ。
0428デフォルトの名無しさん
NGNG0429デフォルトの名無しさん
NGNGなんか電子ブロックっぽくて面白そう
0430デフォルトの名無しさん
NGNGこっちはC++とD両使いだけど、激しく同意。
間違った対象を読み書きしてハマッた経験もしたし。
Form1.ListBox1.Items.Objetcs[0] = Form2.ListBox1.Items.Objects[0];
こういうとき困るし。
TStrings &s1 = Form1.ListBox1.Items;
TStrings &s2 = Form2.ListBox1.Items;
s1.Objects[0] = s2.Objects[0];
としたい。
0431デフォルトの名無しさん
NGNGあっ、ありがとうございます。
OpenToolsですか。早速、調べてみます。m(_ _)m
0432デフォルトの名無しさん
NGNG昔、海外でコンポーネントさがしてたら、
Fireエフェクトを表示するImageコンポがあったが(aboutダイアログに貼り付け用?)、
設計時でもリアルタイムにメラメラ燃えてて笑った覚えがある。
0433Delギコ
NGNG(,,゚Д゚) < withのご利用は計画的に。
|つ つ \
@| |
∪∪
デバッグ中にwithで指定しているフィールドは
参照できなかったんじゃない?(旧Verでは)
対象が明確じゃなくなりそうになった瞬間に
withやめたりwith内でも明示的に指定した方がいいっす。
あくまでもwithは読みやすくするためだけのキーワードなんですから.
逆に読みにくくなっちゃヤーよ。
0434デフォルトの名無しさん
NGNGてっきりタイプ量を減らすためのモノかと。
0435名無しさん
NGNG〜□□ □□ ( ゚Д゚)< >>433 with使うとmovが1個減りますので微小に速いです(ワラ
(O)----(O)U-U) \__________
0436デフォルトの名無しさん
NGNGdelphian worldに、Wave出力APIをラップしたコンポが幾つか上がってる。
あれを使う(またはソースを参考にする)ってのはどう?
0437Delギコ
NGNG∧ ∧ ソ--ナンダ
(;゚Д゚)
/ |
〜'( UUノ
下手人さんサンクス。
>てっきりタイプ量を減らすためのモノかと。
beging..endのPascalなので
タイプ量減らすベクトルは小さいかと…
Form1.BoundRect :=
Rect(Form2.BoundRect.Top+10, Form2.BoundRect.Left+10,
Form2.BoundRect.Bottom+10, Form2.BoundRectRight+10);
よりかは
with Form2.BoundRect do
Form1.BoundRect := Rect(Top+10, Left+10, Bottom+10, Right+10);
の方が読みやすいってだけでは?
0438デフォルトの名無しさん
NGNGあまりに長くなる場合は↓のように書くな。
(場合1)
Form1.BoundRect := Rect(
Form2.BoundRect.Top+10,
Form2.BoundRect.Left+10,
Form2.BoundRect.Bottom+10,
Form2.BoundRectRight+10
);
(場合2)
Form1.BoundRect := Rect(
Form2.BoundRect.Top+10, //Top
Form2.BoundRect.Left+10, //left
Form2.BoundRect.Bottom+10, //bottom
Form2.BoundRectRight+10 //right
);
(場合3)
with Form2.BoundRect do
begin
ATop := Top+10;
ALeft := Left+10;
ARight := Right+10;
ABottom := Bottom+10;
end;
Form1.BoundRect := Rect( ATop, ALeft, ABottom, ARight);
関係ないけど left, top , right, bottom の
順番じゃなかったっけ?
0439デフォルトの名無しさん
NGNGしてたけどなあ・・・・・
with 変数名 is 別名 do
別名で短い名前が使えると混同も少ないし
with TStringList.Create as s do
try
s.LoadFromFile(filename);
・・・
finally
s.Free;
end;
こんな感じでローカル変数的にも使えて便利
皆も要望出してくれよ
0440デフォルトの名無しさん
NGNG参照を代入すればいいだけでは?
0442デフォルトの名無しさん
NGNG0443デフォルトの名無しさん
NGNGどうか確認してくれません?
サンプルコードが問題なく動けば、いま私が作っているツールは
Win2k対応になるのです。
ユニットコード及びサンプルコードは↓の1と2
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1000013243
0444Delギコ
NGNG(,,゚Д゚) < なんの話?
U U \>>442
〜| |
∪∪
せめてURLクレ
http://cotangent.ni.com/worldwide/japan.nsf/c362761bd12fc417862564bc006784d3/EDC85C291B1E8A5C862568D20063A7A9?OpenDocument
∧ ∧ /
(,,゚Д゚) < がんばって!>>443
|⊃ ,⊃ \
〜| |
∪∪ イマ NTナノ
Window同士が磁石でくっついたりするの
作ってるのかな?
0445デフォルトの名無しさん
NGNG(;゚Д゚) 自分でも意味不明だ。
U U
〜| |
U U
>>444
> Window同士が磁石でくっついたりするの
> 作ってるのかな?
Window同士が磁石でくっついたりするような
インターフェースを実現させる
ソフトを作っているのかな?
SmartUIってソフトでデスクトップの隅に対しては行なえるんだけど
http://www7.cds.ne.jp/~hayakawa/
すべてのWindowに対して行なえるとうれしいです。
0446デフォルトの名無しさん
NGNG使っている人って本当に居るのだろうか。
よけいに混乱しそうな気がするが。
with Form1, Form1.ListBox1 do
caption := Items[0] + ' ' + Items[1];
ちなみに、
with Label1, Label2 do
caption := 'giko';
って書くと Label2 の方にくっつくのね…
with 式の右側が優先されるみたいだ。
0447デフォルトの名無しさん
NGNGHELPみれ
with obj do 文
または次の構文を使用します。
with obj1, ..., objn do 文
obj の解釈に配列の添字付けやポインタの逆参照が必要な場合は,複合文が実行される前にそれらの処理が 1 回だけ実行されます。このため,with 文は簡潔であるだけでなく効率も優れています。また,このため,with 文の実行中は文内部での変数への代入によって obj
の解釈が影響を受けることはありません。
with の後に複数のオブジェクトまたはレコードを指定すると,文全体が一連のネストした with 文のように扱われます。次の文があるとします。
with obj1, obj2, ..., objn do 文
これは次と同じです。
with obj1 do
with obj2 do
...
with objn do
文
0448デフォルトの名無しさん
NGNGXP RTM では動いたぞ。
0449デフォルトの名無しさん
NGNG>>319
>Delギコのデザパタ本欲しい(w
>サンプルソースにもAA入ってるんだよね。もちろん。
ヲレもほし〜。
どう?>Delギコ 殿
0450Delギコ
NGNG( ゚Д゚) < アナタ モ キョウカラ Delギコ ニ ナロウ>>449
.=| |==U=U==.| |= \___________
| | | | | |
| | ノU U. | | チョサクケン トカ タブンナイシ(ワラ
| | .| |
そもそも、新人ギコ氏のパクリだぞっと。
前スレ
( ゚Д゚)ノ Delギコ猫のプログラミング相談室part2
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=999482946
の20より
( ゚Д゚)ノ ギコ猫のプログラム相談室part5
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=980521175
( ゚Д゚)ノ ギコ猫のプログラム相談室part4
http://piza.2ch.net/tech/kako/971/971446820.html
( ゚Д゚)ノ ギコ猫のプログラム相談室part3
http://piza.2ch.net/tech/kako/965/965916840.html
0451Delギコ
NGNG出来ることと、すべき事とは違うし。
いくらなんでも読みにくい&混乱の元の
withはやめようYO
もちろん446さんは使ってないだろうけどね。
 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄
∧ ∧ デザパタ ヨリモ XPシタイカモ
(,, ゚Д゚)
ノつl⌒|⌒l
〜(._[ ̄ ̄ ̄.]
 ̄ ̄ ̄
0452デフォルトの名無しさん
NGNGButton1 → btnOK, btnBrowse, btnCancel, ...Edit1 → edtFilename, edtMask, ...Menu1 → mnuOpen, mnuSaveAs, mnuClose, ...
てな感じで、コンポーネントの種類(分類)をあらわすと、
ProgressBar とか StatusBar とか、あまり使わない
コンポーネントのときに破綻する。
まあ、この2つの場合は一つのウィンドウに1つって場合がほとんどだから
あまり気にしなくてよいけど…
0453デフォルトの名無しさん
NGNGコンポ名を略さずにくっつけてるな。
PlayButtonとかFileNameListBoxとか。
GroupBoxやLabelはプログラムからいじらない場合にはデフォルトのまま
GroupBox1とかになるけど(笑)
0454デフォルトの名無しさん
NGNGオブジェクトインスペクタでソートされて、
種類ごとに表示…
あ
機能名を頭につけた方が機能ごとにソートされるか…
それともDel6でオブジェクトツリーが出来て、
オブジェクトインスペクタのソート順序は
どうでもよくなったのか。
0455デフォルトの名無しさん
NGNGアーヒャヒャヒャヒャヒャヒャヒャヒャヒャヒャ
∧_∧
Λ_Λ゚∀゚ ) アーヒャヒャヒャヒャヒャ
( ゚∀゚ ⊂ ) ヒャヒャヒャヒャヒャ!!!
\ / Y 人
(/) (__)_)
ι .(/) | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(/)っ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ι (/) ∧_∧
ι / \(゚∀゚ ) アーッヒャッヒャッヒャッヒャッヒャッ
人 ヽノ⊂ ) ヒャッヒャッヒャッヒャヒャヒャヒャ
し(__) Y 人
 ̄ ̄ ̄ ̄ ̄| (__)_)
 ̄ ̄ ̄ ̄ ̄
あーひゃひゃひゃひゃひゃひゃひゃひゃひゃひゃひゃ
ひゃひゃひゃひゃひゃひゃひゃひゃひゃひゃひゃひゃ
0456Delギコ
NGNG∧∧ / ̄
@_(,,゚Д゚) < 列挙型の変数から列挙型の名前を取得するの
⊂,,__つつ. \どうするのでしたでしょうか。
オボロゲ ニ TypeInfoユニトあたりに関数があったような記憶。
0457Delギコ
NGNG(゚Д゚ ,,)< カイケツしました。
_φ_⊂)__ \_____
/旦/三/ /|
| ̄ ̄ ̄ ̄ ̄| |
|千葉ピーナッツ|/
 ̄ ̄ ̄ ̄ ̄
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=057555
かちゅーしゃが止まってしまた。
0458デフォルトの名無しさん
NGNG>オボロゲ ニ TypeInfoユニトあたりに関数があったような記憶。
まじで!?
いままでずっと
type
TSignalColor = (scRed, scBlue, scYellow);
const
SignalColorString:array [TSignalColor] of string=
('scRed','scBlue','scYellow');
こうやってたYO!
調べてみるか…
0459Delギコ
NGNG∩(,,゚Д゚) < RTTI関係の強化はタチカD5からだから
⊂,,^__つつ. \下位互換コードじゃなくなるのかな。
ヲキヲツケテーテ
0460デフォルトの名無しさん
NGNG誰も書かなかったら明日調べて書く、といってみるテスト
0461デフォルトの名無しさん
NGNG上位機種でしか使えない機能の事ですか?
「完全上位互換」とは、昔のものはまったくコンパイルできないという意味ですか。
下位互換とは、上位機種でも
下位機種の機能を使う事ができるという意味でしょうか。「完全下位互換」とは、どんな昔のコードでも最新版で
コンパイル可能である事を示しますか。
0462デフォルトの名無しさん
NGNG綺麗に逆です。
0463デフォルトの名無しさん
NGNGprocedure Form1.Hoge(Sender : TObject);
begin
TForm(Sender).BoundRect := Rect(
(Form2.BoundRect.Top + Form3.BoundRect.Top) / TForm(Sender).BoundRect.Top,
(Form2.BoundRect.Left + Form3.BoundRect.Left) / TForm(Sender).BoundRect.Left,
(Form2.BoundRect.Bottom + Form3.BoundRect.Bottom) / TForm(Sender).BoundRect.Bottom,
(Form2.BoundRect.Right + Form3.BoundRect.Right) / TForm(Sender).BoundRect.Right,
);
end;
0464デフォルトの名無しさん
NGNG0465デフォルトの名無しさん
NGNGhttp://wdic.asuka.net/?title=%BE%E5%B0%CC%B8%DF%B4%B9
上位互換
・元となるものとの互換性を維持しながら, より高性能を実現したもの.
http://www.nttpub.co.jp/paso/0418.html
新しい製品でも、古い製品の機能が使えるようになっていること。
たとえば、ソフトのバージョンアップがある。あるソフトがバージョン3になったとしよう。
その前にはバージョン1と2があった。そして普通は、バージョン1や2で作ったファイルを、
バージョン3でも開くことができる。
これが典型的な上位互換。上位にある(この場合だとバージョンが新しい)製品は、下位
(バージョンが古い)製品の機能も持っている、つまり互換性があるということ。
通常は、バージョンアップがあると、新しい機能が追加される。そのため、新しいバージョ
ンで作ったファイルは、古いバージョンでは開けないことが多い。しかし、機能を制限する
ことで古いバージョンのファイル形式で保存できる場合もある。この場合は、下位互換がある
という。
0466デフォルトの名無しさん
NGNGニュース見ろ。
0467デフォルトの名無しさん
NGNG0468デフォルトの名無しさん
NGNG0469デフォルトの名無しさん
NGNGただ、二度とやるな。ここは「プログラム技術」だ。
これでまた、アクセス殺到で 2ch がとまるかな?
0470デフォルトの名無しさん
NGNG0471デフォルトの名無しさん
NGNG0472デフォルトの名無しさん
NGNGニュース板逝け
0473デフォルトの名無しさん
NGNG日本語わからないの?
0474460
NGNG列挙型の文字列を得るサンプル。あんま厳密でないけど。
フォームにMemo1,Button1があるとして、
uses TypInfo;
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
p: PTypeData;
ps: ^ShortString;
begin
p := GetTypeData(GetPropInfo(PTypeInfo(Self.ClassInfo), 'Align')^.PropType^);
ps := @p^.NameList;
for i := p^.MinValue to p^.MaxValue do
begin
Memo1.Lines.Add(ps^);
Inc(Integer(ps), Length(ps^) + 1);
end;
end;
0475Delギコ
NGNG(,,゚Д゚)ノ < ニューヨークに行きたいかー!!
U / \____________
| |
ノ∪∪
∧∧ ・・・・.
( ,,)
/ |
〜(,_,,ノ
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(,,゚Д゚) < 全然逝きたくニャイ!
./ | \__________
(___/
/
0476デフォルトの名無しさん
NGNG0477デフォルトの名無しさん
NGNG0478Delギコ
NGNG| しばらく休業
|_______|
∧ ∧ ||
(,,゚Д゚)||
/つ つ
>>474サンクス
0479デフォルトの名無しさん
NGNG0480Delギコ
NGNG| 事実は小説より奇なり
|_______|
∧ ∧ ||
(,, ゚Д゚)||
/つ つ >>479Sunクスコ
でも、気楽にプログラしてる気分でもないし
変な荒し対策にAA貼る気力もないので
折れはちょっち休むよ。newsに釘付けだし。
このスレでネタになってる話題は
気にせず続けてくださいな。
0481デフォルトの名無しさん
NGNGでも御冥福を祈りつつこちらはこちらでマターリとがんばりましょ。
復帰求むDelギコ氏よ。
0482デフォルトの名無しさん
NGNG自分が正しいと思ってるから。
あー怖ひ怖ひ
0483デフォルトの名無しさん
NGNGDelphiっつーかPascalのBNFってない?
ネットで探してももどきばっか・・・
さがしかたわるいんかな
0484デフォルトの名無しさん
NGNG0485デフォルトの名無しさん
NGNGじゃ、調子にのってもう1問。
1 3 5 7 □ 10 □
上の数列(?)はある規則によって並んでいます。
□の中に当てはまる数字を答えなさい。
また、その規則も答えなさい。
0486デフォルトの名無しさん
NGNGfor i=1 to 11 step 2
0487デフォルトの名無しさん
NGNG0488デフォルトの名無しさん
NGNG?
0489デフォルトの名無しさん
NGNG━┓ ____
] ┃ / /
┃ / 2ch /
] ┃ /Λ_Λ /
┃ 逝くぞぬっ!! / (´∀` ) /
] ┃ / ∧∧ )/
┃ / (゚Д゚ ) ̄ ̄ /
] ┃ _______________________/ U U ̄ ̄/ _
┃ / ・・・・・|_|・・・・・ Λ_Λ ∩∩ /)_/) i⌒――⌒i  ̄ | __
] ┃ /● ● 2ch Airlines (・∀・ ) (・x・)ノ (,’ー’) (´(Å__)` ) / ̄ ̄ ̄ ̄ ̄/
┃ / _ _ ( ) ノ|x| _( U__U) /ヽ / /_ノ ヽ  ̄ ̄ ̄ / ̄
] ┃ | ▼ |_|・・・・・・・・・・|_|・・・・・・ ・・ |_|・・・・_・・・・|_|・・・/_/ |_|((.l_ll))) /
┃ |_人_ (-_-)ヽ(´ー`)ノ/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/ ̄ ̄ ̄ ̄ ̄ / (lロ-ロl) /
] ┃ \ (∩∩)(___)\== / ̄ ̄ ̄ /|| ̄| ̄|\/ ̄ ̄ ヽ ∀ノ/
┃  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄| ̄|\/ ̄|| | | |  ̄ ̄ ̄ ̄ ̄ ̄ ̄
] ┃ || | | | || |_|/
┃ || |_|/  ̄ ̄
] ┃  ̄ ̄
0490デフォルトの名無しさん
NGNG0491デフォルトの名無しさん
NGNGいろいろわからないことがあるので教えてください。
一応Delphi6を買ってみて動かしてますが以下の部分がわかりません。
------Unit1--------------
if Key = 49 then
begin
処理1
end
else if Key = 50 then
begin
処理2
end
else if Key = 51 then
begin
処理3
end;
-------------------------x10フォーム
上記のコードをFrom10個くらいに同じのを使うので効率悪いです。
友人に聞くと「constでやれば良いよ」と言いますがどうやれば良いのかわかりません。
どう言うことなのでしょうか?
1 3 5 7 8 10 12
0493デフォルトの名無しさん
NGNGcase でやればいいの間違いかな。それならこんなの。
この場合if then else よりよっぽど解りやすい。
処理が一文なら begin end はいらない。
case key of
49: begin
//処理1
end;
50: begin
//処理2
end;
51: begin
//処理3
end;
0494デフォルトの名無しさん
NGNG>>490にてガイシュツ
0495デフォルトの名無しさん
NGNG〜□□ □□ ( ゚Д゚)< 処理を1〜3にわける必要がない可能性は無いか?
(O)----(O)U-U) \__________
あとマジックナンバー使うなゴルァ
0497誤爆人
NGNG0498491
NGNGなんか「Key= 」の部分をconstにしろとか言ってました。
0499誤爆人
NGNG的外れ
0500rr
NGNG0501デフォルトの名無しさん
NGNGKEY_I = 49; //小文字の i かも
KEY_J = 50;
KEY_K = 51;
-------------------
case Key of
KEY_I: 〜;
KEY_J: 〜;
KEY_K: 〜;
end;
0502デフォルトの名無しさん
NGNG言った本人に聞くのが手っ取り早いと思うが。どうよ。
0503379@間があいちゃったけど
NGNG# あまりにあたりまえすぎる結論ですが・・・
ではObject Pascalで完結している場合、interfaceを使うメリットは何でしょう?
一般的なインターフェースのメリットは理解していないわけではないけれど、
VCLなインターフェースとはちょっと合わないような気がしてます。
自前のライブラリでinterface使っている人います?
0504491@初心者
NGNGありがとうございました。
出来ました。
491の処理がすっきりしました。
友人の言ってた事はこういう事だと思います。
0505デフォルトの名無しさん
NGNGShellListView で、特定の拡張子をもった
ファイルのみを表示するということは出来ないですか?
Win3.1の FileListBox はマスクを指定できて便利だったんだけど…
0506501
NGNG49 が I ってのはかなり勘でやってたんだけども。
確か 41 が A だったような。
0507491@初心者
NGNGいえそのまま使った訳じゃ無く少し変えて使いました。
const
key1 = 4144; //F1
key2 = 4145; //F2
------中略-------
case key of
key1 : btn1Click(nil);
key2 : btn2Click(nil);
end;
-----------------
こんな感じです。
もう一つ質問です。
const
key1 = 4144; //F1
を全フォームで宣言するのは効率よくないのでモジュールなりで宣言して使い回したいのですが
出来るでしょうか?
0508誤爆人
NGNG多少マシになるかもしれんが同じコードをForm10個に貼り付ける
ダサさはそのままだろ。だから「的外れ」と言ったんだが。
ま、最初はしょうがないかな。そのうち気づくだろ。
解決策考えようにもなにやりたいのかサパーリ分からんからどうしょうもないが
ちなみに意味のある数字(=今回のように定数で表せる)を素の数字のまま表記
したものをマジックナンバーという。Delギコの言ってたやつだ。
読みにくくて嫌われるな。
0509デフォルトの名無しさん
NGNGで、interface と書いてある場所の次の行に
const
KEY_F1 = 4144;
KEY_F2 = 4145;
...
と書いていく。そしてユニットを保存する。
(例えば KeyCode.pas としよう)
で、 Form1.pas の uses に KeyCode を追加すれば、
Form1.pas 内で KeyCode.pas の interface 部で宣言されている
定数を使う事ができる。
…が、それ以前の問題で、
ファンクションキーには VK_F1, VK_F2, .. という定数が
既にあったような…
0510491@初心者
NGNGありがとうございます
早速やってみます。
>ファンクションキーには VK_F1, VK_F2, .. という定数が
>既にあったような…
最初それをやったんですよ。
でもkylixではそれが無効らしくて
0511デフォルトの名無しさん
NGNGのならば、 TAction の使い方を覚えるといい。
新規 Action を作成し、ボタンイベントの内容はすべて
そちらに書くようにする。例えば、Button1 の処理内容は
Action1, Button2 の処理内容は Action2 といった感じで。
詳しい Action の設定方法はDelネコに任せる.
んで、Action1 の ShortCut プロパティに F1 を、
Action2 の ShortCut プロパティに F2 ... というようにショートカットキーを設定する。
最後に
Button1 の Action プロパティを Action1 に設定、
Button2 の Action プロパティを Action2 に設定すればよい。
0512デフォルトの名無しさん
NGNGああ、Kylix かー
それじゃあ VK 定数はむり。あれはWindowsのキーコードだから。
0513名無しさん
NGNG〜□□ □□ ( ゚Д゚)< VK_F1はwindows.pasに定義済だが
(O)----(O)U-U) \__________
0514名無しさん
NGNG〜□□ □□ ( ゚Д゚)< 遅かった
(O)----(O)U-U) \__________
0515デフォルトの名無しさん
NGNG+-- Delphi プログラマーズガイド
+-- CLX で異なる機能
その他の違い
--------------------------------
Windows では,〔Enter〕キーの OnKeyDown イベントと
KeyUp イベントのキー値は 13 です。Linux では,
この値は 4100 です。ハードコードされた数値をチェック
する場合(〔Enter〕キーの値 13 など)は,Delphi アプ
リケーションを Kylix に移植するときに数値を変更する
必要があります。
0516デフォルトの名無しさん
NGNG0517誤爆人
NGNG0518Delギコ
NGNG| そろそろ平常操業 |
|_________|
∧∧ ||
(,,゚Д゚)|| マターリ イクカ
/ づ||O
@(___ノ
0519デフォルトの名無しさん
NGNGおかえり! 待ち兼ねてたよん。
0520デフォルトの名無しさん
NGNG0521Delギコ
NGNG_(,,゚Д゚) < >>505 試したけど簡単には無理みたい。
乙,,__つつ. \_ シェルだし。HELPないし…
ネコ ニャ ワカラン
出来たら便利なんだけどなあ。
OpenDialogみたいなのが簡単に作成できるよね。
0522505
NGNGShellListView の AddFolder イベントは、
フォルダだけではなく、どんな種類のファイルでも
とにかくリストビューに追加する時には
いつでも発生するみたい。
故に、以下のようにすればよいと思われる。
procedure TForm1.ShellListView1AddFolder(Sender: TObject;
AFolder: TShellFolder; var CanAdd: Boolean);
var
Ext:string;
begin
Ext := ExtractFileExt( AFolder.PathName );
if AFolder.IsFolder then Exit; //フォルダは無条件でOK
CanAdd := if AnsiMatchText( Ext, ['.jpg', '.jpeg', '.bmp' ] );
end;
0523デフォルトの名無しさん
NGNG駄レスだが…
判定順序を変えては?
こうした方がフォルダがたくさんあるの時は動作が比較的軽くなるかと思われ。
あと CanAdd := if 〜 のif は不要と思われ。
procedure TForm1.ShellListView1AddFolder(Sender: TObject;
AFolder: TShellFolder; var CanAdd: Boolean);
var
Ext:string;
begin
if AFolder.IsFolder then Exit; //フォルダは無条件でOK
Ext := ExtractFileExt( AFolder.PathName );
CanAdd := AnsiMatchText( Ext, ['.jpg', '.jpeg', '.bmp' ] );
end;
こんな感じ?
0524デフォルトの名無しさん
NGNGおお、スマソ。確かに if はいらん…
ShellListView の問題も解決したところで…
ShellTreeView で、指定したフォルダを
開いている状態にするにはどうするんだろうか。
たとえば、 C:\Windwos と指定すると。
デスクトップ→マイコンピュータ→C→windows
が展開されて、かつスクロールインする感じ。
0525デフォルトの名無しさん
NGNGShellListViewにはShellTreeViewというプロパティ、
ShellTreeViewにはShellListViewというプロパティがある。
(同様にPopupMenu, ShellComnoBoxというプロパティもあるね)
めぼしいイベントがないから、これで自動でやれということか?
Del6はまだPerしかないからVCLのソース見れないからわからんが…
がいしゅつだったらスマソ。
0526Delギコ
NGNG| >>522-523すごいですやん!(関西風)
\___ _________
∨
♪ ∧ ∧ ♪
(,,゚Д゚). ♪
|つ[|lllll]).
〜| | ShellListViewトテモ ベンリ ニ ナタ
U U
AddFolder…フォルダの新規作成時に出る
イベントかと思ってしまた。
>>524調査中。
0527Delギコ
NGNG(,,゚Д゚) < SampleのVCLはソース月?
U ,つ゛ \____________
〜| |
∪∪
>>525
(D6パソナルでも)TCustomShellTreeViewのソースはこの辺。
$(DELPHI)\Demos\ShellControls\ShellCtrls.pas
TCustomShellTreeView.Pathプロパ辺りがぁゃιぃ。
ソースみるにはProじゃないとつらいな。
つらくなくても、理解には程遠いが。
0528491です
NGNG無事解決しました。
起動時に複数あるフォームにあるボタンのフォントサイズをコード内で"11"にしたいのですが
効率の良い方法は無いでしょうか?
例:
-------------------Unit1
Label1.Font.Size := 20;
Label2.Font.Size := 20
Label2.Font.Size := 20
-------------------
このようなコードを全フォームに書くのは見た目的にも汚いのでどこか一つにまとめて
そこから呼び出せないでしょうか?(ユニットやモジュールなど)
本当はオブジェクトインスペクタで設定すれば良いだけのことなのですが、そこで設定しても起動時にフォントサイズが
変わってしまいます。(FontPitchなども関係してくるんでしょうか。)
コード内に書くと固定され大丈夫らしいです。
こちらで解決すれば良いのですが、、、
質問を小出しにすると嫌われるので一度に質問しました。
どうかよろしくお願いします。
0529デフォルトの名無しさん
NGNGFont.Size の初期値を 20 にした TLabel2ch ってコンポーネントを作ってしまえば?
0530デフォルトの名無しさん
NGNG1個だけ。
とりあえずこれ見てみ。
ttp://www2.big.or.jp/~osamu/Delphi/Tips/other.cgi#0194.txt
0531デフォルトの名無しさん
NGNG(;゚Д゚) < すごく汚いソースが生成されてる気がする
|つ つ \
〜 | >>508 チョウ ドウイ
∪ ∪ マジクナンバー&const ナンテ タイシテ モンダイナイ
アマリ カシコクナイ ゴユウジン ヲ オモチデスナ
コントロール配列ってある程度の人になると
マターク使わなくなるよ。
LabelのParentFontをTrueにして
FormのFontを変更してみーな(富永)。
もしくは
uses TypInfoを追加して
procedure TForm1.Button3Click(Sender: TObject);
var
i : Integer;
f : TFont;
c : TComponent;
begin
for i := 0 to Self.ComponentCount -1 do
begin
c:=Self.Components[i];
if IsPublishedProp(c,'Font') then
begin
f:=TFont(GetObjectProp(c,'Font',TFont));
f.Size:=trunc(f.Size*1.25);
end;
end;
end;
Delphi6CLX&VCLで動作確認。
ComponentsやControlsプロパティを勉強して
for i := 0 to Self.ComponentCount -1 do
begin
if c is TLabel then
//フォント変更処理
このようにするのも手だね。
0532Delギコ
NGNG(,,゚Д゚) < もそっと。質問上手にナーレ
U ,つ \____________
@| |
∪∪ ナマエ ワスレタ
なんにしても、もっと勉強してサンプルの掲載も上手になって欲しい。
情報が無さすぎて答えるのが困難。
まさか、TLabelを複数同時選択して
フォントかえるだけでよかったりしない?>>528
0533528=491
NGNGえーっと、実はDelphiでは無くkylixなんです。
フォントは都合上変更できないんです。(上からの指示で、、)
0534Delギコ
NGNG>実はDelphiでは無くkylixなんです。
∧∧ / ̄
@_(,,゚Д゚) < そりゃ、わかっちょるって。
⊂,,__つつ. \_
だから、Delphi6CLXで動作確認してるって書いたデソ。
>変更できないんです。(上からの指示で、、)
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
/\( ´∀`/| < やめてくれー
\ (⊇__|/∧ ∧\/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ̄ | (, ゚Д゚)< その上司捨てとく?
| ミカンC= | \_____________
|____|/| |
| | 〜
U U
でも、Fontを変えるんじゃなくてFont.Sizeを変えたいんでしょ?
フォントサイズも変えてはだめなの??(そんなわけないと思うが)
いったいぜんたい、何をしたいのか全然わからない。
アナタがどこまで理解しているかもわからないので。
それが伝わるように注意してクダちイ。
1つの質問もきっちり相手に伝えられないようじゃ
この業界ツラーイYO
0535528
NGNG上でも書きましたが実行時に起動時にフォントサイズがFontsizeが変更されてしまうんですよ。
コード内でフォントサイズを指定すると大丈夫です。
でもLabelの数が大量にあるため全部にフォントサイズを指定するのが大変だと思いまして、、
<わかりやすく書くと・・・>
オブジェクトインスペクタで13と指定する
実行すると10のフォントサイズになる
なんとかしたい
コードに書き込もう!
直った!
でもラベルの数が大量にある&コードが汚くなる、、
教えてください!!
こういう事です。
0536Delギコ
NGNG∧ ∧ / ̄
∩(,,゚Д゚) < それは再現性のあること?
⊂,,^__つつ. \_
なんらかのほかの原因は考えられない??
アプリケーションを1から作ったとして、それでも再現するのかどうかを
まず伝えてくれよ。
Formが沢山あるらしいが
アナタが1から作ったもの?引継ぎ?
それがわからないと
>コード内でフォントサイズを指定すると大丈夫です。
これに対する返事の仕方が出来ないでしょ。
Kylixのバグかもしれないし。
0537Delギコ
NGNG〜''~(,,゚Д゚) < 質問を解読することが疲れるニャヨ。
UU'UU \________
あと、
>>531のレスや>>530さんのリンク先
を応用すれば
全部望むことは出来ると思う。まずはそれを理解してよ。
そこがわからないなら具体的な質問ができるっしょ。
Buttonクリクイベントあたりに
for i := 0 to Self.ComponentCount -1 do
begin
if c is TLabel then
TLabel(c).Size := TLabel(c).Size + 5;
end;
書いて実行シテミソ。
Delphiの勉強とともにネットでの質問の仕方。勉強して欲しい。
AboutDelphiって所でdelphiMLの検索をするといい。
http://www2.big.or.jp/~osamu/Delphi/
0538Delギコ
NGNG_(,,゚Д゚) < 江良そうに、逝たのにマチガタヨーン
乙,,__つつ. \_ ゴメンチャイ
失礼しました。
× TLabel(c).Size := TLabel(c).Size + 5;
訂正
○ TLabel(c).Font.Size := TLabel(c).Font.Size + 5;
0539528
NGNG>アプリケーションを1から作ったとして〜
あした会社で再現してみます。
家にkylixは無いので、、
>アナタが1から作ったもの?引継ぎ?
そうです。私が作った物です。
Form数は20以上になります。
もしかしたらkylixのバグかもしれないしKDEの設定かもしれないです。
KDE2.2に上げたあたりからおかしくなったのですが、おかしくなったタイミングが全く一緒じゃ無いんですよ。
余談
kylixはそのほかにもいろいろなバグがあって困ってます。
FormBorderStyleをfbsNoneにするとキープレビューが取れなくなります。
全く同じソースをWindows側に持っていきCLXで動作すると大丈夫なんですけどね。
もちろんブレークポイントかけても引っかかりません。
(これにはまいった・・・)
0540デフォルトの名無しさん
NGNGこんな感じのコード書いてはどうよ?
Del6 Per VCLで確認。
これを適当に応用してみそ。
procedure SetBigFontToLabel(Ctrl: TControl);
var
I, J: Integer;
begin
If Ctrl is TLabel then
begin
TLabel(Ctrl).Font.Size := 18;
end
else
begin
J := Ctrl.ComponentCount - 1;
If J >= 0 then
for I := 0 to J do
If Ctrl.Components[I] is TControl then
SetBigFontToLabel(TControl(Ctrl.Components[I]));
end;
end;
0541デフォルトの名無しさん
NGNG適当にLabelをポンポンおいて、PanelやGroupBoxなどの中にも
適当に配置する。
んでFormのOnCreateなどに
SetBigFontToLabel(Self);
などとして使う。
0542540=541
NGNG0543Delギコ
NGNG_(;゚Д゚) < Kylixはまだまだなのかな?
乙,,__つつ. \_
>もしかしたらkylixのバグかもしれないしKDEの設定かもしれないです。
そうでしか。そうなるとわからなくなりますね。
悪かったでございます。それも含めて再現性の追及が出来るといいっすね。
余談の内容はチョチ怖い。
KylixMLが寂れに寂れてるので
質問をして盛り上げてみるのはどうですか?
バグだとしたら中村先生タンは教えてくれるんじゃないかな。
(あくまでも簡単に再現性を確認できるようにしてね)
>>540さん。サンクスコ。
∧∧∩゛ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(,,゚Д゚)ノ < では。おやすみ、なっさい。
U / \____________
@| |
∪∪
0544528
NGNGありがとう御座います
いまDelphi6で動きました。
あした会社でkylixで試してみたいと思います。
0545デフォルトの名無しさん
NGNG一部のLabelのみ指定フォントサイズにする(もしくはその逆)って出来ないですか?
PanelやGroupBox使えば出来そうなんですが、、
0546Delギコ
NGNG(,,゚Д゚) < 何をもって一部のものか一部以外のものかを
し |つ \わける方法を考えれ。
〜| | ソレニヨテ コタエ カワルジャナーイ
∪∪
・TLabelのTagを設定して振り分ける
・>>530のリンク先のようにFindComponentで名前で切り分ける
・TLavel(c).ParentがPanel1とかで切り分ける
・特定のPanelに載っているかどうか切り分ける
(Panel1.Controls配列をしらべーる。)
0547デフォルトの名無しさん
NGNGプロパティがあるから、それをFalseにすればいいのでは。
0548デフォルトの名無しさん
NGNG0549デフォルトの名無しさん
NGNGForm1.Font.Size := 13;
とするだけで、フォーム上全てのコントロールのフォントが
サイズ13になるのでは…
0550524
NGNG自己解決しては見たけれど、理想には程遠いのです。
だれか、もっと頭の良いコードに改造してください(;´Д`)
↓一応問題を解決したコード。実行してみれば分かるけど … ねえ
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1000404430
0551524
NGNGhttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1000404430
の2です。よろしくです。
0552424です
NGNGいろいろ調べてみて
http://www.delphi32.com/vcl/lists/sc_n_73.asp
ここのソースが参考になりました。
IDEClock 1.1ってのが非常に参考になります。
IDEのメインウィンドウに現在の時刻を表示するだけですが、
このソースを参考にしてタイマーイベントを取って来れました。
何故かDelphi6ではOpenToolsAPIが大幅に変更になったようで
以前のバージョンのソースがそのままでは使えません。
Kylixを意識して改変したのかもしれませんが、それならそれで
Borlandはこれに関する技術情報をきちんと開示してほしいです。
折角なのでわたしの調べた範囲でOpenToolsAPI関連のリンク張っておきます。
[ソース関係]
http://www.tempest-sw.com/opentools/examples.html
http://www.delphi32.com/vcl/lists/sc_n_73.asp
[FAQ,TIPS,LINKS]
http://www.gexperts.org/opentools/
http://cjandia.freehomepage.com/me/works/delphi/articles/newide/newide.html
http://www.geocities.com/SiliconValley/Way/9006/ota.html
http://delphi.about.com/library/weekly/aa033099.htm
他にもあるかも
0553528
NGNG無事kylixでも動きました。
一部のLabelのみフォントサイズ指定も出来ました。
If Ctrl.Components[I].Tag = 1 Then
で解決です。
0554デフォルトの名無しさん
NGNG参考になります。アリガト
0555Delギコ
NGNG@_(,,゚Д゚) < D5-D6のVersion間互換性、低すぎない?
⊂,,__つつ. \_
Font.Name = #65325#65331' '#65328#12468#12471#12483#12463
この文字列を
Font.Name = 'MS Pゴシック'
この文字列に変換するのを
OpenToolsで組み込んで欲しいよ。
∧∧ / ̄
@_(,,゚Д゚) < D5-D6のVersion間互換性、低すぎない?
⊂,,__つつ. \_
Font.Name = #65325#65331' '#65328#12468#12471#12483#12463
この文字列を
Font.Name = 'MS Pゴシック'
この文字列に変換するのを
OpenToolsで組み込んで欲しいよ。
0556デフォルトの名無しさん
NGNGVCL ソースみりゃ、一発だろ?
0557Delギコ
NGNG( ゚Д゚)
〜( uu) ニジウ カキコ スマソ
D6入れるスペース作るために
D4アンインストしたら
D5が道連れでお亡くなりになられました。
がんばたけど…コードエクスプローラがどうしても現れない…カナチイ
0558デフォルトの名無しさん
NGNGD5 再インストールすればよい話では?
0559デフォルトの名無しさん
NGNGこれか!DFM ファイルの形式が今までのと同じになるね。
[HKEY_CURRENT_USER\Software\Borland\Delphi\6.0\FileFormat]
"DFMFormat"=dword:00000000
0560デフォルトの名無しさん
NGNGEJBクラスの中のejbActivate(),ejbPassivate()というメソッドが何のために必要なのかわかりません。
教えて下さい。
0561デフォルトの名無しさん
NGNG深さ優先で検索してるけど、幅優先で検索したほうが
早いかと。一度 node の items をスキャンして、
パス名に一致する items が見つかれば、そこを掘って行く
てな感じで。
つーか、それ以前にそういうメソッドがありそうで
ならないんだが…
IndexOf ではキャプション文字列での検索が出来ないし…
0562Delギコ
NGNG∧ ∧∩
(゚Д゚,,)ノ
| つ
| ⊂)〜
∪
>>559
すげーよ。アンタが大将♪アンタが大将♪アンタが大将♪
動作確認しました。
FileFormatってキーを自分で作成するのね。
最初、ネ夕かと思テシマタ。
大サンクスコ
0563デフォルトの名無しさん
NGNG某国のことだからそのくらいの細工はしているだろうとは思ったが
ほんとにあるんだね。
ただそれやっちゃうとせっかく UNICODE にした意味がなくなっちゃうんだろうね。
EUC とか Shift-JIS とかを考えなくてすむので、CLX アプリにとっては
大事な機能です。
0564デフォルトの名無しさん
NGNG誰か削除願いを。
0565Delギコ
NGNG∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
@' ― (,,゚Д゚)つ < 折れのではうまくいってるが?
し― ∪ \___________
IDEが立ち上がらなくなったら
レジストリ元に戻せばいいことだろ。なぜ削除願いをせねばならん?
デマ野郎なら放置PLAY。
0566デフォルトの名無しさん
NGNGEJBって何?
0567デフォルトの名無しさん
NGNGEnterprise JavaBeans?
0568Delギコ
NGNG∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜' ― (,,゚Д゚) < 例のdesignintf問題が発生した!
し― し-J \___________
D6のプロパテエデタ分離問題で
[致命的エラー] DesignEditors.pas(517): ファイル 'Proxies.dcu' が見つかりません
これが解決できないニャ。
MLもそれにまつわるの読んだのに…
ろくに答えられてる投稿がない…
TDefaultEditorを継承したプロパティエディタを作成すると
uses に DesignEditors;を追加する必要があるのに
これがコンパイルできないってドユコトYO!!
◆[Delphi:59073] Re: DsgnIntf 周りの変更について
> Borland のニューズグループでは designide.dcpを design time package
> の requires に追加しろ、というレスポンスが付いてました。
これをもう少し詳しく氏ってたら、具体的に教えてくださいな。
◆[Delphi:59359] Re: delphi6>Proxies.dcuが見つかりません
ここは詳しいけど、結局解決方法載ってないね。
0569Delギコ
NGNG(;゚Д゚)< いきなりEJBの話ふられても
|つ つ \
@ | エンタープライズ ト イエバ トレッキー
∪ ∪
∧ ∧ ──────
(゚Д゚ ) < ワープ速度5くらいで、ガンバッチクレ>>560
⊂⊂ \──────
\ 〜 ────
し し ─────
ビュヲーン
0570デフォルトの名無しさん
NGNGだからぁ。Proxies ユニットは単体で再配布されず、かならず designide パッケージ
内から提供されているものを使え。っていっているの。
この変更は Delphi4 からなんだから、いまさら文句言うなよ。
繰り返し、パッケージを使え。と書かれていたのに、今まで修正しなかったほうが
悪い。
0571デフォルトの名無しさん
NGNG一回しかやったこと無いんであやふや
Libフォルダにdesignide.dcpがあるから
パッケージのウインドウのRequireの欄に追加したらOKだったような
0572Delギコ
NGNG∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
@' ― (,,゚Д゚)つ < >>570 全然わからん・・ワン
し― ∪ \___________
あ。ネコダッタ
>かならず designide パッケージ
>内から提供されているものを使え。っていっているの。
っていわれましても具体的なやり方がわかんないがな。
>今まで修正しなかったほうが悪い。
修正方法わからんのにどうやって直せと…ご無体な
∧∧ / ̄
@_(,,゚Д゚) < >>571 Libフォルダにdesignide.dcp
⊂,,__つつ. \_ あるけど、バイナリファイルみたいなんですが…
これをどうやて、修正すればいいニャ??
0573デフォルトの名無しさん
NGNGパッケージマネージャ経由でパッケージを追加しろ。っていってんだよ
0574Delギコ
NGNG∩(,,゚Д゚) < 匍匐前進並に…ちょっぴり進んだ。
⊂,,⌒ ,,つつ. \_ >>573サンクス
 ̄ ̄
だけど今度は変なエラーが出てきました。
[エラー] : 'EditProperty' の宣言がすでに定義されているものと異なります
なんか、TDefaultEditorのEditPropertyの実装変わってない?
procedure EditProperty(const Prop: IProperty; var Continue: Boolean); virtual;
D6HELPの"EditProperty 例"と違うんだけど。
0575デフォルトの名無しさん
NGNG相対的に見ればどちらも正しく、どちらも間違えている。
絶対的に見てどちらが間違えているかは、開発者に聞くしかない。
0576Delギコ
NGNG//////////\ ミ☆
////////// ギコ.\ ミ☆
 ̄┃ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄┃ ̄
┃☆ ____ ┃
┠─┐ ‖∧ ∧ ‖ ┃ / ̄ ̄ ̄ ̄ ̄ ̄
┃ │ ‖(,,゚Д゚)..‖ ┃< プロパティエディタ。難しいよ
┃°│  ̄∪∪ ̄ ┃ \______
━┻━┷━━━━━━━┻━━━━━━━━━━━━
教えてくれた人。サンクス。
なんとか解決できました。
互換性のなくなるコンポ少なきゃいいけどね。
>>575
やぱり伝統的にHELPがイマイチ出来てないだけかも。
0577デフォルトの名無しさん
NGNG0579デフォルトの名無しさん
NGNGMDIアプリケーションにおいてメニューをToolBarで代用しているとき、
子ウィンドウを最大化すると「最小化」「閉じる」などのボタンや
子ウィンドウのアイコンが表示されなくなってしまいます。
こいつをうまいこと表示するにはどうすればいいんでしょうか。
0580デフォルトの名無しさん
NGNG0581素直じゃないね
NGNG誤魔化してるだけだな(w
0582newsgroups.borland.comも見ようね
NGNGnewsgroups.borland.com
の
borland.public.delphi.opentoolsapi
で
proxiesあたりを検索すれば引っ掛かるよ
あちらでもすでに報告されてますね
0583Delギコ
NGNG∩(,,゚Д゚) < 英語でこの説明読むのきついね
⊂,,⌒ ,,つつ. \_
 ̄ ̄
http://newsgroups.borland.com/cgi-bin/dnewsweb?cmd=listall&group=borland.public.delphi.&utag=
webから見れる分の過去ログ数が少ないニャ。
0584デフォルトの名無しさん
NGNGTUIWebBrowserを使ったアプリケーションを作成しているのですが、
OfflineプロパティをTrueにセットしても、オフラインでNavigateして
くれません。ヘルプを見て、DownloadControlにCS_OFFLINEをセット
してみたのですが、それでもダメでした。
TUIWebBrowserを使って「オフライン作業」を実現するにはどうすれ
ばよいのでしょうか。
0585Delギコ
NGNG(;゚Д゚)
U U
〜| |
U U
ActionManegerの使い方が全然わからん。
0586デフォルトの名無しさん
NGNGとりあえずDelphiのバージョンとIEのバージョンを書こうよ。
とりあえず、質問とかするときは、いろいろとバージョンを
書いておいたほうが良いと思う。
俺は、TUIWebBrowserよりもEmbeddedWbを進めておく。
ttp://www.euromind.com/iedelphi/
0587Delギコ
NGNG( ゚Д゚) < わかった!アクトン マネジャ!
/⊃⊃ \
〜( ノ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
⊂`J ピョン
||
||
ωωω
マネジャノ カテゴリ ドラッグアンドドロップ ゴク ビミョウニ バグ アルミタイ
サイショ デキナクテ ウロタエタ ヨ
>>584
MLで聞いたら親切な作者さんが出てくる事が多いぞ。
0588584
NGNGそうですね、迂闊でした。
とりあえずEmbeddedWbをインストールしたので今から
使ってみるです。
0589デフォルトの名無しさん
NGNGTImage を配置。マウスボタンが押されたらへこんだ状態の
絵(DownedImage)を表示、マウスボタンが離されたら元に戻った状態の
絵(RaisedImage)を表示、マウスカーソルがボタン上にある場合は
アクティブ(ActivateImage)状態を示す画像を表示
これをコンポーネント化したもの。ただし、
コンポーネント上でマウスボタンを押す。
押したままの状態でコンポーネントから離れたい値まで
カーソルを持っていき、そこでマウスボタンを離す。
通常、この場合は MouseUp イベントは発生しない。
これをうまく処理して、普通のボタンのように振舞う
画像コンポーネントをつくりたい。
0590デフォルトの名無しさん
NGNG0591Delギコ
NGNG(,,゚Д゚) < >>589ジブンで考えろや。
U ,つ゛ \____________
〜| |
∪∪ ジブンデ ツクッタ ソース デモ アップ シロ
ヒトノ ソース ツクッテ ヤルホド ヒマジャネェ
∧∧ プハー / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(,,゚Д゚) =3 < アクトンマネジャ保持のActionが1つもない状態で
| つ日~~ \ActionListのActionカテゴリをActionMainMenuBarにD&Dしようとしても
〜| ) 出来ないにゃ。
U U
コレ バグ チャウ?
ActionManeger系のGUIかなり使いにくいぞ。
0592デフォルトの名無しさん
NGNGTSpeedButtonパクれ。
0593Delギコ
NGNG見事なくらいバグだらけというか。使えない、、、はぁ。。。溜息
D6Pro版持ってる人はActMane使えなくても
Demos\ActionBandsをさわってみるとわかります。
∧ ∧ タイヘン カナシイ.....
(,,゚Д゚)
U U
〜| |
U U
FormのDockingもそうだけど。(パソナでも使えるからDemos\Dockingで遊んでみー)
新方式のUIに関しては、なぜいつもこんなにいいかげんな
実装をするんだろう。>>某蘭土
ちゃんとデバッグしてるのか?
開発チームがFormのDockingもActionManegerも同じなのかなあ。
だとしたら、ずいぶんとデバッグをいいかげんにするチームらしい。
一度バグ入りで実装しちゃった部分は
将来的にも治らない事多いし。なんかヤだなあ。
0594デフォルトの名無しさん
NGNG使い方間違っているんじゃないの?
0595名無しさん
NGNG〜□□ □□ ( ゚Д゚)< >>594 デモsrcの遊び方に間違いも何もないと思うが
(O)----(O)U-U) \__________
0596Delギコ
NGNG(,,゚Д゚) < ActManegerこんなかんじでどーよ
|⊃ ,⊃ \
〜| |
∪∪
Demos\ActionBands\WordPad.exeで
Windowを目イッパイせまくして
Customizeダイヤログ呼び出してそのまま閉じる
>>ツールバー太いまま。
また、CustomizeMenuそのものを消してみる。
>>settings.datを削除しない限り2度とCustomize不可能。
ダイアログを開いてツールバータブを開いて
EnabledFalseになっているMainMenuActionBar1を選択
[戻す]ボタンヲクリック
>>MainMenu消えます。
こんな代物をユーザーさんに使ってもらうわけには....
0597Delギコ
NGNG〜''~(,,゚Д゚) < それにしても・・・
UU'UU \________
あと、Actionのショートカットキーって
ActionManegerではカスタマイズできないみたい。
Borlandって妙な所抜けてない?
IDEのキーバインド変更もいまだに簡単には出来ないし。
GExper氏ラ無い頃はCtrl+Aもなくて苦労したよ。
D6からはCtrl+Aも定義されてるけど。
0598デフォルトの名無しさん
NGNGもう営業しかいないのかな?
0599デフォルトの名無しさん
NGNG社長しかいません。
0600589
NGNGだって、ボタンより小さい画像しか使えないし、
ボタンを現す矩形が表示されてしまうし。
0601ひとりごと
NGNGvar i:integer;
begin
// Result:=''; を入れなくてもエラーにならないし
// 単独で試験したら動くからいいのかと思ったけど
// 連続して使うとなんか動作変なんだよね
// つい忘れちゃうから注意しないとダメだな
for i:=1 to keta do begin
Result:=char(ord('0')+(dt mod 10)) + Result;
dt:=dt div 10;
end;
end;
0602デフォルトの名無しさん
NGNGformat の精度指定子と間接指定子で簡単に実現できるよ
function IntToZeroStr(dt,keta:integer):string;
begin
result := Format('%.*d',[keta,dt]);
end;
0603デフォルトの名無しさん
NGNGFlatをtrueにしてみ。
0604デフォルトの名無しさん
NGNGマウスカーソルをFlatButton上に持ってきたときに
やはりボタン周囲に影が表示されてしまうでしょ。
それに、どちらにせよボタンより小さい範囲にしか画像が
表示されないし。たとえば、スキンを利用した
ソフトを作りたい場合に、それじゃあ困るわけね。
いや、いいんだけどさ。面倒だから書き込んだだけだし。
0605Delギコ
NGNG∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(,,゚Д゚) < そんなら結局リージョンも必要だろ?
| つ[|lllll]). \_________
〜| |
∪∪ ヂミチ ニ ガンバッタラ?
一朝一夕で適当に出来るもんじゃないし。
作り方、さらっと教えれるもんでもないが・・・
Compo探した方がよくない?
0606601
NGNGそれだと入力が 指定した桁数以上あるとズレてしまうから
function IntToZeroStr(dt,keta:integer):string;
begin
dt:= dt mod power(10,keta); // こっちを入れるか
result := Format('%.*d',[keta,dt]);
result := copy(Result , length(Result)-keta,keta); //こっちを入れる必要があるかと
end;
0607疑心暗鬼
NGNG疑心暗鬼といいます。
ちょっと質問なんですけど、
下記のVBのプログラムの結果が同じにならないのは
どうしてなのかご教授願えますか?
質問内容
Fix関数でDoubleとVariantで同じ値が
入っているのに、Fixすると結果が違ってしまう。
環境
VB6 + SP6
Win2000
よろしくお願いします。
'********* ここからプログラム
Dim a As Variant
Dim b As Variant
Dim c As Variant
Dim t As Variant
Dim d As Double
Dim e As Double
Dim f As Double
Dim tt As Double
Dim g As Variant
Dim h As Variant
Dim i As Variant
Dim ttt As Variant
a = 24600
d = 24600
g = 24600
b = 24000
e = 24000
h = 24000
'VariantでDoubleの時と同じ結果を出すための苦肉の策
c = a * 1000 / b * 1000 / 10
t = Fix((c + 5) / 10) / 10
'Doubleでの正しい結果が出る
f = d / e * 100
tt = Fix(f + 0.5)
'Variantでは正しい結果が出ない
i = g / h * 100
ttt = Fix(i + 0.5)
MsgBox "ただしい計算結果 " & Str(t) & vbCrLf & _
"ただしい計算結果 " & Str(tt) & vbCrLf & _
"誤ってる計算結果 " & Str(ttt)
'********* ここまで
0608疑心暗鬼
NGNGVB専用のスレありましたね。
すいません。逝ってきます。m(_ _)m
0609Delギコ
NGNG(,,゚Д゚)ノ < 逝ってらっしゃい。
U / \____________
@| |
∪∪ イヤ イイイミデ デス・・・
ガンバテネ
0610疑心暗鬼
NGNGガムバリマス
アリガトウゴデス
0611デフォルトの名無しさん
NGNGCOPY関数で、特定の場所から右側の文字列を取得したいときに
以下のようにする人がいっぱい居るよね(このさい
Del6のRightStr関数のことは考えずに)
S := Copy( S, Index, Length(s)-Index+1 );
でも、これって
S := Copy( S, Index, MaxInt );
というふうに、長さ指定に式を使わなくても簡単に
実現できるんだよね。S の範囲を超えた部分は
自動的に無視されるから。
つーか、VCLのソースでもこういう使いかたしてる。
0612デフォルトの名無しさん
NGNGDel6を使っているならば、
result := RightStr( Format('%.*d',[keta,dt]), keta );
でOKかと思われますが。
0613Delギコ
NGNG@' ― (,,゚Д゚) < また重箱墨つつき。
し― し-J \___________
D6のTControlbarのバンドがTCoolbarと同じになってる。
・・・話題に出てたっけ?
TCuteControlbarがあるからどうでもいいけど。(D6で動くかな)
>>611
微妙に知ってるが、時々書いてしまう。癖かもね。
0614Delギコ
NGNG_________
∧ ∧ /
( ゚∀゚)< をっ!TToolBar.Customizableケッコ。イイかも。
|つ つ \_________
〜 |
∪ ∪
WinAPIのToolbarカスタマイズダイアログがラップされてる
TActMngよりも、こっちの方がよさそうだよ。
ん?保存先はRegistryだけなのかな?
あれ?ヤパリ微妙なバグだらけ・・・
どんどん、Toolbuttonが消えるぞ。
OnCustomize系イベントが沢山あって何とかなりそうだけど。
そういえばTMenubarを使わなくても
TToolbar.Menuプロパが存在するね。
これまたAltに対応しないという、バグありまくり。。
なんだかなあ。
0615デフォルトの名無しさん
NGNGTToolBar.Customizable系は,コード見ると分かるけどWindowsコモンコントロールを
直接呼んでいるからOSのバグじゃないかな?
0616Delギコ
NGNG普通のアプリ(WWWCとかBecky2)みたいに
カスタマイズダイアログの左項目に
元々のデフォルトButtonを表示させることは出来るのかな?
 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
∧ ∧ マターリ
(,,゚Д゚)∫
/ つ旦O
〜(._[ ̄ ̄ ̄.]
 ̄ ̄ ̄
0617名無しさん
NGNG〜□□ □□ ( ゚Д゚)< >>604 チョピーリ参考までに
(O)----(O)U-U) \__________
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=library&vi=1000625853&res=1
こんな規模になりますよ。流用・応用は御自由に
ちなみにこれだけではコンポ登録できまへん。
他にも沢山^2ソースが要りますテヘ
0618604
NGNGそこまで複雑にするつもりは無いし、
スキンつうか、ごく普通のアプリでも使うし。
0619592
NGNGだから、TSpeedButtonのソースをパクれって。
標準ではないことをやろうとしているのだから、標準のものだけで解決しようとせず、
似たもののコンポーネントのソースを見て、自分で作ればいいだけではないか。
ボタンを表す矩形が表示されるなら、矩形を描画している部分を実行しなければいい。
ボタンより小さい画像しか使えないなら、ボタンいっぱいに描画するように実装すればいい。
0620デフォルトの名無しさん
NGNG威張るな。うるさい。
もしかして P か?
0621デフォルトの名無しさん
NGNG画像Aの中から画像Bに完全一致する場所を見つけたいの
ですが、もっと速いアルゴリズムは無いものでしょうか。
ここで、Bは、Aよりも小さいことが保証されています。
また、A,Bともに16色ビットマップです。
最初は、B画像の左上をA画像中の(X,Y)に重ね、
TBitmap.ScanLine を使って1ピクセルずつ比較、
これを全てのX,Yについて調査していましたが、
速度が遅く、あまり使い物になりませんでした。
そこで、Delで実装されている機能ならすこしは
早いだろうと、次のようなコードを考案しました。
1.B画像の左上が、A画像中の(X,Y)に重なるようにし、
その状態でXOR合成した画像を作成する。2画像が一致するならば、この段階で重ねた部分の画像全てのピクセルの値はゼロになっているはずだ。
2.重ねた部分の画像を抜き出し、それを左右に2分割する。
3.左半分の画像を、右半分の画像にOR合成する。
4.出来上がった画像を、さらに2分割し1〜2を繰り返す。
5.最終的に、横1ピクセルの画像が出来上がる。このすべての
ピクセル値がゼロならば、画像は一致することになる。
これでもまだ速さに不満が残るんですが。
0622デフォルトの名無しさん
NGNG文字列検索に使うBM法を応用してみたら?
0623デフォルトの名無しさん
NGNGではなくて,Windows で実装されている機能だな。それは。
BitMap を直接扱っている限り ScanLine より速くはならない。
繰り返し ScanLine を参照するのをやめて,いったん配列に読み出してしまうことを
考えてみたら?
あと処理速度を気にするのなら比較コードを書く前にどれくらいの時間がかかっているのかを
調べなさいね。
0624デフォルトの名無しさん
NGNGアルゴリズムはmpegエンコーダがそんなことやってたような。
たしか3D NOW!だのSSEを使ってアセンブラレベルで高速化してたな。
0625デフォルトの名無しさん
NGNGってあるけど,小さなBを,繰り返しAから探し出すんだったら,
Aの(部分の)ハッシュ値を作って枝狩りするのが常套手段。
この説明で分からなかったらプログラムの手を止めて適当なアルゴリズム
事典を買いなさい。
0626デフォルトの名無しさん
NGNGその考え方しか知らないのですが、
Bと一致する可能性のある全てのA部分について、
ピクセルの並び方からハッシュ値を作成し、
ハッシュ値をキーにして位置を探り出す
という事でしょうか。
0627名無しさん
NGNG〜□□ □□ ( ゚Д゚)< >>618 自分の本当に求める自分仕様は、自分しか作れません
(O)----(O)U-U) \__________
と思うがどうよ
あれがおいらの自分仕様
あとはDelphian WorldかDSPに似たの無い?
とかとしか言いよう無いッス
0628PC98版のエロゲアニメーションがらみとみた
NGNG2次元配列化するだけで10倍くらい高速化されそうな予感。
640x400x16の全検索程度なら力技で十分いけそう。
0629621
NGNG大きい画像 Sourceと、
小さい画像
P[0],P'[0]
P[1],P'[1]
...
P[n],P'[n]
があります。
Source 中で P[0] に一致する部分があれば、その部分を P'[0] に置換する。
....
Source 中で P[n] に一致する部分があれば、その部分を P'[n] に置換する。
P[0] から P[n] についてこの作業を行うわけです。
0630621
NGNGつくってみようとおもいます。
0631デフォルトの名無しさん
NGNGどうよ
0632デフォルトの名無しさん
NGNG縮小したりハッシュ値生成したりする必要は無くって
単に最初に8ドットおきに比較してやればいいね
0633デフォルトの名無しさん
NGNGそれきっと駄目
0634デフォルトの名無しさん
NGNG0635デフォルトの名無しさん
NGNG飛び越してしまう危険があるから、とかかな。
Aは8ドットおきで読むにしても、Bは1ドットづつずらしてAの注目点に重なるピクセルだけ
比較していけばまあ飛び越す危険はないか。でもあんまり速くなさげだがどうよ?
0636デフォルトの名無しさん
NGNGあとはMPEGの仕組みの勉強
0637デフォルトの名無しさん
NGNGHigh( ArrayVar )+1 と Length( ArrayVar )
どちらが効率良いでしょか。
0638デフォルトの名無しさん
NGNGどのくらいの大きさの画像からどのくらいの大きさの画像をどのくらいの時間で
検出したのか参考に書いてよ
で、どのくらいの時間以内ならOKなのかを書いてくれればサジェスチョンできるかもよ
0639デフォルトの名無しさん
NGNG一番単純な比較に比べてましってだけで最速には程遠いね。
ただ氏が凝ったコードひねり出してる間に
さっさと実装してさっさと処理できる問題だと思うってだけ。
最悪のケースも考慮しなくてよさそうだし。
あるいはバックグラウンドで動かしてればいいし。
技術的な話じゃなくてごめんよ。
>637
High, Lengthはどっちもおんなじ。なので+1,-1のつかないほうが速い。
そこらへんの違いが気になるならCPUウィンドウで確認してみればいいよ。
0640補足
NGNGArrayVarがコンパイル時にサイズが決まってる配列なら
定数に変換されるので+/-1つくつかないに関係なくおんなじ。
0641デフォルトの名無しさん
NGNG作成しています。
【1】100 X 100程度の画像 Source から、20X20 程度の大きさの
画像 P[i] に完全一致する部分を検索し、
その場所を同サイズの画像 P'[i] で置き換える。
【2】この検索→置換を、P[0] から P[n] の画像について行う。
(n の値は5〜20程度)
【3】P[0] から P[n] まで調べたら、これを1ステップとする。
同ステップ内で、同一の領域が置換対象になる事は無い。
例えば P[0] を見つけ出し P'[0] に置換した場合、Source 中の
その領域は、P[1] 〜 P[n] までの画像の置換対象には
ならない。つまり、統一のピクセルが複数回置換されることは無い。
【4】1〜3を繰り返し、アニメーションを行う。
この1ステップ(つまりアニメの1コマ)を1/10秒ほどで
行いたいです。
もう少ししたら、暫定版のプログラムEXEを
アップするので、そうしたらもっとイメージを
つかんでもらえると思います。
0642641
NGNG起動したら、コンパイルボタン(左上の0101と書いてあるボタン)
をクリックし、再生ボタン(中央上にある右向きの三角ボタン)
をクリックしてください。
http://www.geocities.co.jp/SiliconValley-Sunnyvale/1607/BitmapReplace.zip
赤枠の画像中から、
緑枠の左側に一致する画像を探し出し、緑枠右側の画像で置換します。
緑枠は2組あります。
両方の緑枠の置換前画像に一致する場合は、
左上にある緑枠で指定された置換式のほうが優先されます。
サンプルに同梱してある、工場.bmpをドラッグドロップして、
コンパイル→再生してください。
このぐらいの大きさになると、少し処理が重くなるんです。
0643641
NGNGアニメーションを停止させてください。
止まってるように見えても、置換されていないだけで
アニメーションタイマーは動いていますから。
0644デフォルトの名無しさん
NGNGどこの誰かが作った実行ファイルを信用しろと?
ソースを出しなさい。
0645デフォルトの名無しさん
NGNGなかなか面白いね。が、確かに重いみたい。
これなら高速化は簡単で前回書き換えのなかった部分を
検索しない(=前回書き換えた部分の周辺のみを検索する)
ようにすればいいよ。
0646デフォルトの名無しさん
NGNGDelギコさんこないとサビシイ
0647641
NGNGこれがソースファイルです。
自作ライブラリを使用しているので、
ソースに含まれる全コードのうち、半分以上は
今回のプログラムでは使用していません。
http://www.geocities.co.jp/SiliconValley-Sunnyvale/1607/BitmapReplaceSource.zip
0648645
NGNGこのプログラムのミソはシステムが何も理解していないのに
結果的に工場が稼動し、迷路を抜けちゃうところ。
これってプログラマブルなLIFEだね。
思わず点滅信号機とグライダー作っちゃったよ。
ちなみに>645はLIFEでも使われてる高速化手法だよ。
0649デフォルトの名無しさん
NGNGKMath.pasがないYO
0650641
NGNG開発したビジュアルプログラム言語です。
検索すれば論文が見つかると思います。
0651デフォルトの名無しさん
NGNGhttp://ryujin.kuis.kyoto-u.ac.jp/ylab/yamakaku/Papers/Thesis/Thesis.html
0652デフォルトの名無しさん
NGNGあ、すみません
修正しておきました。
ちなみに、Del6でコンパイルするとエラーが出ると思います。
型付定数への代入を許可しておいてください。
0653Delギコ
NGNG∩(,,゚Д゚) < >>627 いいこと言うね。
⊂,,^__つつ. \_
スキン化するくらいなら
折れなら必ずリージョンまで入れる。
リージョン入れないBitmapButtonは途中段階だな.
だって、完成したら自分以外の人にもかなり有用そうだもの。
でも、XP的には必要になったときにリファクタすればいいのかな。
∧ ∧ それにしても、画像系の話。
( ゚Д゚) トテーモ高度ちゃう?
〜( uu) 読んでるだけでワクワクシチャーウYO.
アプローチ???
0654デフォルトの名無しさん
NGNGKDialogs_untInputDlg.DFMもないーよ
0655デフォルトの名無しさん
NGNGたびたびスマンです…
再び修正しました
0656デフォルトの名無しさん
NGNGコンパイルに必要なファイルを一覧表示してくれる機能はないものでしょうか。
0657デフォルトの名無しさん
NGNGコンパイルされたdcuみれば大体見当はつくんじゃない。
ソフトのほうは地図とパターンを別画像に分離して欲しいかも。
あと編集はイメージエディタやペイントに任せて、
タイムスタンプが変更されたらリロード・コンパイルして欲しい。
まあ、どうでもいい部分ではあるけど。
0658デフォルトの名無しさん
NGNGあれ? 入ってないみたいな
0659デフォルトの名無しさん
NGNGそれそれ、そのページを読んで
面白そうだからちょっと作ってみたんです。
透過色とか、キーボード入力なんかも欲しかったので。
0660デフォルトの名無しさん
NGNGがーっ
またか…
だんだんイライラしてきたYO
面倒なんで、ライブラリフォルダの中身全部同梱しました。
http://www.geocities.co.jp/SiliconValley-Sunnyvale/1607/BitmapReplaceSource.zip
0661デフォルトの名無しさん
NGNG参照する事を極力避けようかと思います。
あるライブラリを一つ渡そうとすると、
参照している全ての ライブラリ.pas を渡さないといけない…
0662デフォルトの名無しさん
NGNGKDialogs_untInputDlg.DFMがないんすよー。フォームファイル
pasだけしかない…
0663デフォルトの名無しさん
NGNGまだ全然読んでないんだけどこれって言語と呼べるほどの
汎用性や広がりを持ち得るのかな?
みたところたまたま迷路を抜けてたまたまソーティングされて、
たまたまチューリングマシンが動いてるだけのようにも見える(藁
0664デフォルトの名無しさん
NGNGちょっとまってください。
KDialog もその他のものも、
今回のプログラムで使用してないんですね。
ライブラリが参照しているだけで。
0665641
NGNGライブラリパスをデフォルトの状態に戻して
コンパイルチェックしたので、今度こそ足りないファイルは無いと思います。
http://www.geocities.co.jp/SiliconValley-Sunnyvale/1607/BitmapReplaceSource_For_D6.zip
0666デフォルトの名無しさん
NGNGヤター! コンパイルできたYO!
0667デフォルトの名無しさん
NGNG広がりというか、大元のコンセプトは
グラフィックのプログラムは
グラフィックによって記述しよう
という事じゃないかな。
0668デフォルトの名無しさん
NGNG0669デフォルトの名無しさん
NGNG出来ない
0670Delギコ
NGNG(,,゚Д゚) < ・・・・・・
|つ つ \ 3800円もした。
@| |
∪∪ 人月の神話とXP本も買ったら万円�dダ…
0671デフォルトの名無しさん
NGNG0672 ◆WjpJ5Iis
NGNGそれに返事付けるなよ。
...早く NEC/NTT 軍団出てこないかな。
0673デフォルトの名無しさん
NGNGこの分野では、"も"ってほどじゃないような…。
0674デフォルトの名無しさん
NGNGどうしたらよいのだろう...
0675support ◆WjpJ5Iis
NGNGPersonal にもリソースコンパイラ/イメージエディタがあるじゃないか
icons.res ができているなら適当なソースコードで
{$R icons.res}
*.rc があるなら,プロジェクトファイルに .rc を追加。
まだ何も作っていなければイメージエディタで .res を作ってしまえ。
0676デフォルトの名無しさん
NGNGImageでクリッカブルマップを作りたいのですがどうしたらいいでしょうか?
たとえば640x480のimage領域のうちimage座標からTOP100、Left100の場所に128x128の
クリック範囲を作りたい場合などです。
0677デフォルトの名無しさん
NGNGアイコンを新規で追加ではなく既存ファイルから追加はできないかな?
icon1.ico icon2.ico ...って複数のアイコンがあって
それをまとめて icon.res にしたいのだが...
Delphiにはその手のツールは付属してない?
0678デフォルトの名無しさん
NGNG空のTImageやTShapeを貼るとか。
0679676
NGNG最初はそれを思いついたんですけどCSV(もしくはiniファイル)から座標を持ってくるらしくて、、、
それに画像情報がコロコロと変わるらしいんです。
「画像のクリッカブルポイントをソースを触ることなくテキスト修正だけで触れるようにしろ」って事らしいです。
可能ですかね?
別にImageじゃなくてもPaintBoxでもShapeでもいいんです。
今はPaintBoxでがんばってますが。
0680support ◆WjpJ5Iis
NGNG>その手のツール
イメージエディタ。
細かい操作が必要なら x.rc ってファイル作って
Icon1 icon icon1.ico
Icon2 icon icon2.ico
て書いて、プロジェクトファイルに追加。
0681デフォルトの名無しさん
NGNGラジャー∠(@O@) ビシッ!
rcからコンパイルすることにいたしまする。
0682デフォルトの名無しさん
NGNGだったらなぜ
TPaintBox.Left
TPaintBox.Top
TPaintBox.Width
TPaintBox.Height
に「プログラムで」代入しようとしないんだ?
0683682
NGNG座標だけでなく個数も変わるなら「プログラムで」Createすればいいだけだが。
0684Delギコ
NGNG〜' ― (,,゚Д゚) < KylixMLって配信方法とか変わった?
し― し-J \___________
ずーっと。とどかないニャリ?
0685support ◆WjpJ5Iis
NGNG9/6 の #717 / Re: TIdSMTP って
が最後
0686デフォルトの名無しさん
NGNG同じく。
0687デフォルトの名無しさん
NGNGお、買ったね。どうだい感想は。>Delギコ氏
俺はガンマ本は挫折して、
いろんな本から慣れてったんだが、
この本がもっと早く出ていればなぁと思った。
デザパタはVCLを参考にするのもいいけど
Javaのクラスライブラリも参考にすると良いよ。
0688デフォルトの名無しさん
NGNGTListかもしくはTRectの動的配列を宣言しておいて、
起動時に設定ファイルから読みこむ。
で、後はマウスイベントで座標を判定して処理する。
とか。
0689名無しさん
NGNG〜□□ □□ ( ゚Д゚)< >>679 遊ぶDelphiだかいう本で範囲内をクリックしたか判定するサンプルが
(O)----(O)U-U) \__________
0690デフォルトの名無しさん
NGNG仕様の詳細や判定領域の数がわからんので、
>>688の方法が正攻法だね。
数少なくて決まっているなら、PaintBoxが手っ取り早い。
なんか、感じからすると動的なオブジェクトの生成もできなさそうなので、
(違ったら失礼(違ってなくても失礼か))
時間があれば、>>688の方法をできるようになっておいた方がいいぞ。
0691小心者
NGNGこれだと半角スペースのところで途切れてうまくファイル名を見ることができないです。
一応関連付けの時に"%1"を付ければうまくいくんですが、付けないときでもうまくいくようにしたいです。
なにかいい方法はないんでしょうか?
TeraPadでもそうだから無理なのかな。
0692デフォルトの名無しさん
NGNGそういう仕様なので仕方ないです。文句はMSにいってくり。
0693692
NGNGとりあえずCmdLine変数でパラメータ丸ごととって、
自力で解析するしかあるまい。
空白を発見したら、実在するファイル名かどうか調べるのか?
いやでも、「c:\un ko」というのがパラメータがあったとき、
「c:\un」という絶対パス指定ファイルと「ko」という相対パスのファイルが
あったときの判定も考えると・・・えらい面倒だな。
0694デフォルトの名無しさん
NGNGbegin
if S = '' then S := ParamStr(i);
if FileExists( S ) then
begin
FileNames.Add( S )
s:='';
end
else
S := S + ' ' + ParamStr(i);
Inc(i);
end;
0695デフォルトの名無しさん
NGNGS := '';
for i:=1 to ParamCount-1 do
begin
{ドライブが含まれるなら直前までをファイル名とみなす}
if ExtractFileDrive( ParamStr(i) ) <> '' then
begin
if S <> '' then FileNames.Add( S );
end
else
S := S + ' ' + ParamStr(i);
end;
0696>691
NGNGいつか誤動作してトラブルになるからやめて欲しいかも
0697デフォルトの名無しさん
NGNGクラス プロパティ に 定数 していできる 良い。
THoge = class
public
const Milk:string = 'yukijirusi';
end;
みたいに やりたい。
0698Delギコ
NGNG@' ― (,,゚Д゚) < クラスプロパティに定数。別にうれしくない
し― し-J \___________
THoge = class(TObject)
private
class function ConstValue: String;
end;
class function THoge.ConstValue: String;
const
Value: String = 'イッテヨシ';
begin
Result := Value;
end;
やれるとしたら、この程度かしら?
定数なんてWM_とか接頭語をつけて区分すればいいだけでないの?
0699デフォルトの名無しさん
NGNGproperty にするなり、引数なし関数にすれば?
可視性をクラス内に限定したいのなら出来ないけど、上に書いた方法で
対応できないかな?
どちらにしろ言語仕様の重箱つつきにあまり意味はない。
0700デフォルトの名無しさん
NGNGプロパティ版。FConstString も ConstString も同じ可視性を
持つから情報隠蔽としては役に立たないコードだ。
THoge = class(TObject)
private
FConstString : String;
property ConstString read FConstString;
end;
0701デフォルトの名無しさん
NGNGこうでは?
THoge = class(TObject)
private
FConstString: string;
public
constructor Create; //ここでFConstStringを設定
property ConstString read FConstString;
end;
0702デフォルトの名無しさん
NGNGあれ?確かに 697 では public。
698 にひきづられちゃったよ........
0703Delギコ
NGNG@' ― (,,゚Д゚)つ < それだとインスタンス毎に領域とるでしょ。
し― ∪ \___________
0704デフォルトの名無しさん
NGNGfor i:=1 to ParamCount-1 do
↓
for i:=1 to ParamCount do では?
0705デフォルトの名無しさん
NGNGif S <> '' then FileNames.Add( S );
の後で S := ''; も必要だYO
0706デフォルトの名無しさん
NGNGじゃあこうかな?
THoge = class(TObject)
private
function ReadConstString: string;
public
property ConstString: string read ReadConstString;
end;
fonction THoge.ReadConstString: string;
const
Value: string = 'イッテヨシ';
begin
Result := Value;
end;
>>698とほとんど変わらないっていうツッコミはなしね
0707デフォルトの名無しさん
NGNGconst GIKO = 'GIKO!' ;
type
THoge = class
public
property ConstString : string read GIKO;
end;
0708701=706
NGNGプロパティがクラスの外のやつも参照できるなんて知らなかったよ
ただ使う機会は少なそう
C++のstaticなメンバ変数みたいに使えるかのな
ところでじつは>>579で質問していたんだけど、
誰も使ってないのかな>TToolBarでメニュー
TCoolBar上において、VC風にしてみたんだけど、
MDI子ウィンドウの最大化時の処理がいまいち…
一応TToolBarをもう一個置いてその上にボタンを配置して、
子ウィンドウの状態が変わったときに出し入れしてるんだけど、
どうもいまいち見た目が本物に似ない…
誰か他にやってる人いませんかね?
0709ひらぽん
NGNGとっくに解決済みかも知れませんが、少々気になったので。
type
TArxForm1 = class(TForm)
private
FMyClassList: TList;
published
property List: TList read FMyClassList; // 読み込み専用
end;
implementation
constructor TMyClass.Create(AOwner: TComponent);
begin
inherited;
FMyClassList.Add(Self);
end;
destructor TMyClass.Destroy;
begin
FMyClassList.Extract(Self);
inherited;
end;
end.
0710デフォルトの名無しさん
NGNGうぁ。ML からきたな?玄ちゃんみたいにならないでね。
んで何番に対するコメントだ?
0711デフォルトの名無しさん
NGNG嘘書くな。
0712デフォルトの名無しさん
NGNG0713デフォルトの名無しさん
NGNG単純だけど TBucketList (ただし D6)
0714デフォルトの名無しさん
NGNGgoogleする前にヘルプを検索すればよかった。
自作のクラスのデータ検索に使うのでこれで十分。
0715デフォルトの名無しさん
NGNGいろいろ調整してみてください >>714
ただね... 今のコードにはバグがあるから項目の削除はできない。気をつけて。
0716-
NGNGhttp://www.sex-jp.net/dh/01/
http://www.sex-jp.net/dh/02/
http://www.sex-jp.net/dh/03/
http://www.sex-jp.net/dh/04/
0717デフォルトの名無しさん
NGNG0718デフォルトの名無しさん
NGNGまったくもって同意。
MLにギコとか書くなよ、ヴァカが。
0719Delギコ
NGNG〜′ ̄ ̄(メ゚Д゚)つ
UU ̄ ̄U
______∧________________
MLで紹介するな。烈しく逝ってよし。
これだからPersonalでプログラミングしはじめた厨房ってやつは・・・
0720デフォルトの名無しさん
NGNG被害者としての玄ちゃんみたいのが増えてほしくない。
0721デフォルトの名無しさん
NGNGできねーって!!
どちらにせよ、propertyで出来てもインスタンス生成しないと
参照できないとしたらつかえんな。class propertyみたいのがいるのか?
結局、今のDelphiでやるとしたら、class functionしかないか。
0722デフォルトの名無しさん
NGNGMLの説明読まないやつばっか
こっちの方が言いたいこと言えていいNa
0723Delギコ
NGNG(;゚Д゚) あれには関わらないのがよさそう。
(| |つ
〜| | >>722
∪∪ Subjectと内容の合ってないものや( 【 Delphi 4 について】)
送信日時のズレてるヤツとか
ストレートにOutlookの話を聞いてくるのとか(Outlook Express Set User ???)
カルシウム不足だから即切れしそうだよ。
>>708
MDIがあまり使われないような気が…
>>709
なぜにList…
前に話題になった折れが勝手にクラスフィールドって読んでいる方法でもないと
Listに自分自身を代入する意味があまりないと思うのだが。
0724デフォルトの名無しさん
NGNGみてみたい。
0725デフォルトの名無しさん
NGNGすまん。俺の読解力がないのか、
ソースがおかしいのかよくわからん。
何がしたいのか誰か解説してくれ。
0727デフォルトの名無しさん
NGNG0728デフォルトの名無しさん
NGNG大挙して押し寄せられても困る。
0729デフォルトの名無しさん
NGNG早速ですがDelphi6 Personalでメモ帳とペイント互換ソフトの作り方を教えてください。
初心者なのでなるべく詳しくお願いします。
0730Delギコ
NGNG(,,゚Д゚) =3 < MLノ ヒトタチ ダッテ 2chはチェックしてるさ
| つ日~~ \ イマサラ 厨房に紹介されるまでもなし。
〜| )
U U
0731デフォルトの名無しさん
NGNGA, B : array of Integer;
- - - - - - - - - - - - - - - -
CopyArray( A, B );
みたいな。
0732デフォルトの名無しさん
NGNGここで厨房な質問するとMLよりもひどい目にあう。
0733デフォルトの名無しさん
NGNG0734Delギコ
NGNG∧ ∧ /
(#゚Д゚)< イヤダ
|つ つ \
〜| | オオキナ コエ デ イッテヤリタイ
∪ ∪
顔を洗って
D6付属のDemoを全てみてから出直せ。
あと、
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999486538&rm=100
このリンク全部見ろ。
0735デフォルトの名無しさん
NGNGネタやろ。
0736デフォルトの名無しさん
NGNGMLからきましたなんてかいて
sageてるのでちがうとおもわれ。
0737デフォルトの名無しさん
NGNG初心者ですので、簡潔にお願いします。 【発言】
----------------------------------------------------
(1)スゴイ・・・
・某所で見かけた発言。 発言と言うより、サブジェクト。
・いや、それにしてもスゴイなぁ、何と言うか、う〜んスゴイ。
・ここまで有無を言わせず、自己都合を押し付ける勢いを持っているサブジェクトと言うのは、なかなか無いですな。
■この文章から読み取る事ができるのは・・・
・自分がした質問にだけ答えろ!
・お前たちは「それは何故ですか?」などと下らない質問をするな!!
・ましてや「もう少し調べてください」などと偉そうな事を抜かすな!!!
・・・・と、いう事なんでしょうね。
(2)しかし、一つ疑問点が・・・。
・それは、質問内容から察するに、彼の御仁には、どうしようもなく知識も調べる気も無いようなご様子なのに、「簡潔な回答」だけで、事が終わるのかな?という事。
・しかし、「初心者」と言って免罪符を振りかざす連中の中にも、「できる限り詳しく教えろ」と言う人も居るし、色々種類が居るんですねぇ。
・でも、こんな傍若無人なメールにも返答をする奇特な人って居る事と、その懐の深さにビックリ。
0739デフォルトの名無しさん
NGNG0740デフォルトの名無しさん
NGNGってのは、たぶん、つかみだと思う。(笑)
ここで一発笑いを取っといて「メモ帳の作り方教えて」などと言う
逆撫でする言葉を入れといて、最後に「詳しく教えろ!」という
とどめを指して読み手を怒りの渦に巻き込んでいると思われ
0741デフォルトの名無しさん
NGNG0742デフォルトの名無しさん
NGNG0743ひらぽん
NGNG>何がしたいのか誰か解説してくれ。
くらすふぃーるどの定義方法の提示かと思ってたら
今元ネタもう一回見たら・・・
>自分自身のクラスインスタンスを保持する方法
でしたね。思いっきり外してました、失礼しました〜。(^^ゞ
0744デフォルトの名無しさん
NGNG正直者なんだろうけど、メールアドレス欄に実アドレスを入れるのは止めときなさい。
0745f
NGNGhttp://www.sex-jp.net/dh/01/
http://www.sex-jp.net/dh/02/
http://www.sex-jp.net/dh/03/
http://www.sex-jp.net/dh/04/
0746デフォルトの名無しさん
NGNGあとpちゃんがらみで、うっかり自爆して脱出した人多すぎ
>>724
[Delphi:60611] 2ch の Delphi 関係スレッド
BB弾の人
0748デフォルトの名無しさん
NGNGpcodeになりすまそうとして失敗したとか?
> [Delphi:60611] 2ch の Delphi 関係スレッド
残念、過去ログにはまだ収録されていなかった…
0749デフォルトの名無しさん
NGNG楽しいか?
0750名無しさん
NGNG〜□□ □□ ( ゚Д゚)< >>729 すごく簡単です
(O)----(O)U-U) \__________
ShellExecute(Handle,'OPEN','notepad.exe',Nil,Nil,SW_SHOW);
ShellExecute(Handle,'OPEN','mspaint.exe',Nil,Nil,SW_SHOW);
互換性高過ぎて失神します
0751デフォルトの名無しさん
NGNG>あとpちゃんがらみで、うっかり自爆して脱出した人多すぎ
とはどのような意味なんでしょうか。
もし、この掲示板のマナーを間違えておりましたらご教授お願いします。
あと、E-mail には何を書けばよいのでしょうか。
よろしくお願いします
0752デフォルトの名無しさん
NGNGcopy関数、後はヘルプ見てくれ。ちなみに性的配列ならMove関数。
0753Delギコ
NGNG(,,゚Д゚)< クラスフィールド?
|つ つ \
@ |
∪ ∪
ひらぽん氏が話題を負ってくれたので紹介してみる。
こういう事がやりたいんじゃないの?
2chのどこかで教えてもらったけど、どこか忘れた。
TMyClass = class(TObject)
private
FName: String;
public
constructor Create;
destructor Destroy; override;
class function ClassList: TObjectList;//クラスメソッド
property Name: String read FName write FName;
end;
{ TMyClass }
var
MyClassList: TObjectList; //Unit内Object
class function TMyClass.ClassList: TObjectList;
begin
Result := MyClassList;
//Unit内Objectをクラスメソッドを利用してアクセス
end;
constructor TMyClass.Create;
begin
MyClassList.Add(Self);
//クラスを生成するたびにListに登録
end;
destructor TMyClass.Destroy;
begin
MyClassList.Extract(Self);
//クラスを破棄するときにListから破棄
inherited;
end;
initialization
MyClassList := TObjectList.Create;
//Unit内Objectはここで生成
finalization
MyClassList.Free;
//Unit内Objectの破棄
end.
0754Delギコ
NGNG_ /⊂ `∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | \( ゚Д゚)< 使い方。
| / ∪ ∪ \_____________
 ̄
/////////////////////////////////////
procedure TForm1.Button1Click(Sender: TObject);
begin
TMyClass.Create.Name := 'Button1で生成されたMyClass';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
TMyClass.Create.Name := 'Button2で生成されたMyClass';
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
TMyClass.Create.Name := 'Button3で生成されたMyClass';
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
TMyClass.Create.Name := 'Button4で生成されたMyClass';
end;
procedure TForm1.Button5Click(Sender: TObject);
var
i: Integer;
begin
Memo1.Lines.Add('インスタンスは'+IntToStr(TMyClass.ClassList.Count)+'個あります');
Memo1.Lines.Add('インスタンスの内容は以下の通り');
for i := 0 to TMyClass.ClassList.Count-1 do
begin
Memo1.Lines.Add(TMyClass(TMyClass.ClassList.Items[i]).Name);
end;
end;
実行結果
インスタンスは4個あります
インスタンスの内容は以下の通り
Button4で生成されたMyClass
Button3で生成されたMyClass
Button2で生成されたMyClass
Button1で生成されたMyClass
0755デフォルトの名無しさん
NGNGそういう質問は初心者版逝ってくれ。
2chはほかの場所と比べるとかなり特殊な
礼儀とローカルール(用語や漢字の読み方にいたるまで)
があるから、すべてを教える気にはならない。
0756デフォルトの名無しさん
NGNG次のような場合はコードをがりがり書くしかないのかな
A , B : array of Integer ;
- - - - - - - - - - - - - - - - - -
SetLength ( A , LengthOfA );
SetLength ( B , LengthOfB );
で、
A [ m ] 〜 A [ m+c ] に
B [ n ] 〜 B [ n+c ] を代入したい場合。
0757デフォルトの名無しさん
NGNGCopy(A, m, c ) := Copy(B, n, c);
↑配列 A の m から c 個分を、配列 B の n から c 個分で置換する
0758デフォルトの名無しさん
NGNG実際に使用する場面が思い浮かばない....
どんなときに使った?
>>751
蒙古ない方がいいと思われ、売買
0759Delギコ
NGNG(,,゚Д゚) < クラス外にインスタンス数保持しておけばいいもんね。
U ,つ゛ \
〜| |
∪∪
でも、よくあるButtonの動的生成する時などに
TMyButtonとTMyButtonListなどを作っておいて
別UnitにしておくとFindComponentなんて必要なくなってちょっとベンリかも。
0760Delギコ
NGNG∧ ∧ /興味あるのでToolbarCustomize調査中。
(,,゚Д゚) < ほんとに、APIを軽くラップしただけミターイ
|⊃ ,⊃ \設計とか実装とか全くなし。
〜| | Customizeダイアログを呼ぶメソッドすらないのかニャ
∪∪
ネコデモ ワカルカシラ
http://www.kumei.ne.jp/c_lang/sdk2/sdk_142.htm
とりあえず
WM_CUSTOMIZE
の定義すらVCLで密からナック手、ブルー
0761デフォルトの名無しさん
NGNG>Copy(A, m, c ) := Copy(B, n, c);
デマ流すの楽しいかい?
0762デフォルトの名無しさん
NGNGデマに反応して楽しい下位?
0763Delギコ
NGNG_(゚Д゚ )__
/| ∪∪ /\
/| ̄ ̄ ̄ ̄|\/
| |/
 ̄ ̄ ̄ ̄
>>761 指摘サンクス。
デマは困る。>>762逝ってよしい
CopyはFunctionだから、戻り値に代入出来ないよね。
>>756
その程度はガリガリいこう。
範囲が超えた時の例外処理考えたら頭痛くなりそ。
0764デフォルトの名無しさん
NGNG空気をつかむのがマナー
意味わからなければMLに戻った方が宵
0765デフォルトの名無しさん
NGNGな気がするんだけど、知ってる?
0766デフォルトの名無しさん
NGNG裏技? 普通にメニューにないか?
表示-デバッグ
0767Delギコ
NGNG(,,゚Д゚) < >>760ネコ ニハ ワカンネーゼ
|⊃ ,⊃ \
@| |
∪∪
猫でもわかるプログラミング
第142章 ツールバーをカスタマイズする
http://www.kumei.ne.jp/c_lang/sdk2/sdk_142.htm
…"ネコプロ"評価高いみたいだけど、実際
SDK第二部のこのあたりになると
SampleプログラムもDLできないみたいだし
投げやりで独り善がりな記述ばかりで
非常に読みにくい。
説明だけに終始してるしなあ。
とか逝ったら怒られる??
分かりやすいと思われる方は、
VCLでToolbarCustomizeを実装してみてちょー。
とか逝ってみる。
0768Delギコ
NGNG思い出しました。
 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
∧ ∧ マターリ
(,, ゚Д゚)∫
/ つ旦O
〜(__n n[ ̄ ̄ ̄.]
 ̄ ̄ ̄
Form上で動作するComponentで
設計時にProperty ACompoとProperty BCompoで
指定したものに対してAが動くとBも連動して動くというもの。
つくった。名前はMoveCompoとしよう。
MoveCompo1でACompo=Button1BCompo=Label1として
Button1を移動させたら、Label1もくっついて移動するものデシ。
そのときに
MoveCompo2でACompo=Label1 BCompo=Button1と
されると動作的に非常によろしくないので(無限に移動しつづけそうだから)
同じクラスのインスタンス中で指定しているCompoは
A/BCompoプロパティで指定できないようにしました。
0769Delギコ
NGNG∧∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(゚Д゚)ノ < シツモーーーーソ
(| | \__________
〜| |
∪∪
各種ControlにActionを指定すると
TAction.Updateイベントが発生するけど
あれは何のメッセージを見てUpdateイベントが発生してるの?
VCLのソースのどこみたらわかるーとか。教えてCRAY
イマまでActionのUpdateイベントで処理していた部分を
サブクラス化してみたんだけど何のメッセージをフックすればいいのか
わかんないのです
0770デフォルトの名無しさん
NGNG猫プロのすごいところは継続しているところだからね。
あの量は真似できんわ。
Delギコもwebページ作ってくれないかなあ。
0771デフォルトの名無しさん
NGNG文章よりもAAの方が多かったり・・・。
0772Delギコ
NGNG∧∧∩゛ /わかった!
(,,゚Д゚)ノ < WM_PAINTダ!
U / \
| |
ノ∪∪
∧ ∧ ・・・・。 タ・・タブン
(,,゚Д゚)
U U アテルカシラ?
〜| |
U U
0773デフォルトの名無しさん
NGNG0774679
NGNG---------------------------------------------
procedure TFrom1.FormPaint(Sender: TObject);
var
Rek : TRect;
begin
Lef := 500; //Left
Tp := 200; //Top
Rig := 550; //Right
Bot := 250; //Bottom
Rek := Rect(Lef,Tp,Rig,Bot);
Pen1.Canvas.TextRect (Rek,Lef,Tp,'Ok!');
end;
---------------------------------------------
指定座標に文字や四角を書くのはいいのですが
それにクリックイベントを付ける方法が分かりません。
0775デフォルトの名無しさん
NGNGx,y:Integer;Shift:TShift;Button:TMouseButton);
begin
if InRange( x, BUTTON_LEFT, BUTTON_RIGHT ) and
InRange( y, BUTTON_TOP, BUTTON_BOTTOM ) then
begin
.......
end;
0776デフォルトの名無しさん
NGNGA.手順を全てスタックに保存しておき、UNDOする場合は
逆の手順を辿っていく。
B.その時点での全てのデータを保存しておき、UNDOする場合は
一つ前のデータを読み出していく。
Aだと機能が一つ増えるごとに、それに対応したUNDO機能が必要になるような。
Bだと簡単だが、ものすごい量のメモリが必要になるような。
0777デフォルトの名無しさん
NGNGまあ、あまり誉められたコーディングスタイルではないんだろうけど、
Move((PChar(ArrayA) + m * SizeOf(Integer))^, (PChar(ArrayB) + n * SizeOf(Integer))^, C * SizeOf(Integer))
という手もあるにはある。範囲チェックは自己責任。
0778708
NGNGむう。複数ウィンドウをぼこぼこ表示するようなのだったら
MDIのほうがいいかなと思ったんだが。
ちょいとインターフェースを変えてSDIにするか。
>>776
Bの方法で、変更箇所だけ保存しておけば
それほどメモリは使わないんじゃない?
もっとも、全消しとか使った場合はメモリ量は多くなるが…
0779デフォルトの名無しさん
NGNG>B [ n ] 〜 B [ n+c ] を代入したい場合。
var
p,q:pointer;
begin
p:=@A+m;
q:=@B+n;
for i:=1 to c do
begin
p^:=q^;
inc(p);
inc(q);
end;
0780デフォルトの名無しさん
NGNGなければDelphiで作っちゃおうかなと思っているんですが。
0781デフォルトの名無しさん
NGNG多くの場合、
A.手順を全てスタックに保存
だね。emacs もそう。
操作Xを作るときに、必ずその逆操作を組にして作る。と決めてしまえば
よし。もし逆操作提供できない(めんどくさいとか、メモリ確保が出来ないとか)
ときは、「その操作は復元できませんぞ」ってダイアログを出すようにする。
0782デフォルトの名無しさん
NGNG吉田が2chで叩かれた。
↓
吉田、2chを潰したい。
↓
2chのアクセス数増大問題発生。
↓
もっと客を増やして、潰してやれ!
↓
MLで紹介。
↓
人が殺到。2ch閉鎖!
↓
吉田(゚д゚)ウマー
0783デフォルトの名無しさん
NGNG文字を処理対象にしたツールの場合は良いけど、
画像処理系の場合は不可逆処理の
オンパレードだからね…
0784デフォルトの名無しさん
NGNG失礼とは思いますが・・・
メッチャワラタ
0785デフォルトの名無しさん
NGNGnをundoしたら画面クリアして0..n-1を再描画って
ペイントソフトがあったな。
0786もっとうまく書けないかな?
NGNGfunction pchar2str(p: pchar): string;
begin
if assigned(p) then result := p else result := '';
end;
procedure output(p: pchar);
begin // pはnilかも知れない
memo1.lines.add(format('%s', [pchar2str(p)]));
end;
0787デフォルトの名無しさん
NGNGそれ面白そう。手順をファイルに保存できるようにすれば、
CGそのものを保存するよりも
ファイルサイズが小さくなったりするかも。
適度にウェイトかけて再生できれば
書き順を知れておもろいかも。
0788デフォルトの名無しさん
NGNGIllustratorで代表されるベクタ系ドロウツールはみんな"手順記録系"と
いえるし、Flashもこの範疇だな。
0789デフォルトの名無しさん
NGNG↓それをもろにやってる
ttp://www.portalgraphics.net/
これのおもしろいところは、画像を投稿するときに
サーバーにその手順データを送って向こう側でレンダリングするところだ。
さらにその画像をDLするときは手順データを持ってこられるので、
絵師の書き方がわかるというシロモノ。
0790デフォルトの名無しさん
NGNGこれおもしれええええええええええええ!
いやあ、いいもん紹介してもろたー
しかし一ヶ月の投稿数が900って…
ギャラリー一覧見るだけでも疲れるな、こりゃ。
0791名無しさん
NGNG〜□□ □□ ( ゚Д゚)< >>786 ネタ?
(O)----(O)U-U) \__________
var
pc:pchar;
str:string;
begin
pc := 'test';
str := string(pc);
edit1.Text := str;
end;
誰かおいらに休みを下さい
0792デフォルトの名無しさん
NGNGInside DelphiX の著者は19歳なんだな。
0793デフォルトの名無しさん
NGNGあっちは発育が良いから・・
0794デフォルトの名無しさん
NGNG4700円 のシェアウェアか。
うーむ。
0795デフォルトの名無しさん
NGNG>>あっちは発育が良いから・・
もしかして私の誤解かも知れないけど・・
「Inside DelphiX 」って日本人が書いているんですけど..
0796デフォルトの名無しさん
NGNG今日はクソレスばっかりだったな。もうねよ
0797デフォルトの名無しさん
NGNGほー。OpenCanvas は Delphi 製ですか。1999年というと D4 くらいかな?
0798デフォルトの名無しさん
NGNGまぁまぁ。どうなることかと思ったけど,MLでは無視された用だし
こちらも荒れ模様というほどでは無かったから良いんじゃない?
0800デフォルトの名無しさん
NGNG0801デフォルトの名無しさん
NGNGまじで!? VCLScanner で調べてみよう
0802デフォルトの名無しさん
NGNGついでに JGrep もDelphiだったんだね…
0803Delギコ
NGNG(,,゚Д゚)< OpenCanvasすごすぎ!
|つ つ \
@ |
∪ ∪
フリーの画像ツール調べていてoC1.1を見てた事があったが
こんなすごいシェアウェアになっていたのねん。
会社みたーいだけど、すごい技術力ありそう。
ネット時代に即したサイト運営も○ダ〜ニャ
0804デフォルトの名無しさん
NGNG匿名なのか? > OpenCanvas
downloadしないと分からないようにでもしてるのか?
ってさすがにDelphiと関係ない話になるな。
0805デフォルトの名無しさん
NGNGBCBの可能性は無いの?
0806デフォルトの名無しさん
NGNGDelphiでもスピード的に問題なくできるよーん。
ただTCanvas使ってたんじゃだめだけどね。
TCanvasなんとかしてほしいね。
しかし書き方が学べるって、OpenCanvasいいねぇ。
0807Delギコ
NGNG(;゚Д゚) すでに、BCBとDelphiの差異なんてマターク
(| |つ 気にしていないのだ。>>805
〜| |
∪∪
ホボ オナジコト デキルノ シッテルカラ
0808デフォルトの名無しさん
NGNG描画の処理だけCでガシガシにかいてたりもありかなぁ
と思ったもんで
0809デフォルトの名無しさん
NGNG仮に複数のディレクトリ内に Hoge.pas が有る場合、
uses Hoge;
と指定したらどこにある Hoge.pas が参照されるのでしょうか。
C:\Piyo\Hoge.pas と C:\Giko\Hoge.pas では
ライブラリパスに
C:\Piyo; C:\Giko
とあった場合、最初にある Piyo の方が優先されますか。
正直日本語おかしいけど
日本語を母国語とする皆さんなら理解していただけますねOK。
0810つーかヘルプ読んで実験しろ
NGNG0811デフォルトの名無しさん
NGNGin 指定はプロジェクトファイル(.dpr)でしか効き目がないため
個々のユニットが参照するユニットとは食い違う可能性があり
混ざるとめんどくさくなるぞ。
0812デフォルトの名無しさん
NGNG似たようなライブラリの名前つけるのとか管理がめんどくさい。
Javaみたいにしてほしいなぁ。
もうかなり独自拡張してるんだから良いでしょ。 >Borland
0813デフォルトの名無しさん
NGNG技術もそうだが、処理速度なんかもはやくて納得。
ある意味、Pascal使ってるのも納得。
0814デフォルトの名無しさん
NGNGライブラリのフォルダ階層変えるとコンパイル通らないじゃん。
COBOLのソースにコンパイルマシン名を書くのもダサいね。
0816814
NGNG全然違う。ライブラリのフォルダを指定しとけば、
inの中ではフォルダパス要らないんだYO!(だって、標準dcuがそうでしょ)
0817814
NGNG0818デフォルトの名無しさん
NGNGど素人な質問ですいません。
ex.
[test.csv]
aaa,1,2,5
↑
これを別の変数に
0819Delギコ
NGNG(,,゚Д゚) < TStringList.CommaTextに大入
|つ つ \ TStringListはオブジェクトだから気をつけて。
〜 |
∪ ∪
0820Delギコ
NGNG(,,゚Д゚) < またもや、しつもーん。
|つ つ \
〜| |
∪∪
コントロール(具体的にはStringGridなんだけど)
のzオーダーに他のコントロール(例えばScrollbar)を
あわせたい時はどうしたらいいのでせう?
つまり、Gridのひとつ上にBarをもってきたいの。
他のControlのZ位置関係はずらしたくないの。
0821812
NGNG>inの中ではフォルダパス要らないんだYO!(だって、標準dcuがそうでしょ)
今確認できないんだが、標準のライブラリってinいるんだっけ?
いままでは個人のライブラリフォルダを作って
環境設定のライブラリパスを設定していたんだが、
似た内容のライブラリとかがいっぱいできてきたり
他人のライブラリで名前かぶったり
そろそろ何とかしようかなと思ってるんだけど。
ライブラリの管理ってどうしてる?
0822デフォルトの名無しさん
NGNGScrollbar(子)のparentプロパティにGridを入れれば良いんじゃないの。
そういう意味ではない?
0823Delギコ
NGNG| |
∧| |
Σ (゚Д| |
/つ| |
〜 ||
(/ ||
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ハッ……ワスレテタ
>>822そうかも。タメシテミマス
MLでD6→D5のdfm変換が公開されたようですね。
イマはレジストリ変更で対応してるけど。
[HKEY_CURRENT_USER\Software\Borland\Delphi\6.0\FileFormat]
"DFMFormat"=dword:00000000
0824Delギコ
NGNG| |Д゚) < >>822 パレントだめでした。
| ⊂| \________
| | |
| |U
 ̄ ̄ ̄ ̄ ̄
Editに対するUpDownみたいな事がやりたいの。
Parentにするとどうも妙な動作する。
Zオダ〜ってTComponent or TControl プロパ順に並んでるのかな?
┬┴┬┴┤ ∧ ! "ライ" ノ ツカナイ "ブラ" ガスキ
┴┬┴┬┤゚Д゚)
┬┴┬┴┤ .U
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ライブラリの管理は、パッケージを活用するとかなりイイカンジ。
ソレデモ、ヤパーリ、ユニット名やクラス名は別々にしないとダメな気する。
Javaに比してDelの名前空間(っていう?)はちょっぴりイヤ。
0825デフォルトの名無しさん
NGNGDelphian WorldのMOStringGridとか参考にしてみれば?
パッケージかぁ。やったことないんだよね。
結構頻繁にリファクタするし。。。
0826デフォルトの名無しさん
NGNGリファクタすれば?
必要に応じてパッケージのリビルドもやってくれるよ。
0827デフォルトの名無しさん
NGNG>必要に応じてパッケージのリビルドもやってくれるよ。
おおっ、ちょっと光明が見えたかも。
ガイドを読んでみると、ソースとか指定してまとめられてよさそう。( ´∀`)
でもこれって名前解決できるの?
0828818
NGNGいわれちゃいます。
0829Delギコ
NGNG| ∪ |
| 〜
| ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| i ,,゚Д゚) < たぶん、こうする
U U \________
temp.LoadFromFile(ファイル名);
temp.CommaText := temp.Text;
temp[0〜temp.Count-1]までにComma区切りの内容が入る
0830デフォルトの名無しさん
NGNGパネルの子にGridとScrollBar持たせれば?
0831デフォルトの名無しさん
NGNGリファレンスには見当たらないんだけど
0832デフォルトの名無しさん
NGNGされている。
長さ0の長い文字列は、メモリアロケートされない。
RTL ソース読みなさい。
0833デフォルトの名無しさん
NGNG1.Delphiのライブラリパスをセミコロン区切りの文字列として TStringList にぶち込む
2.dpr の uses 節を調べる
3.ライブラリパスの最初に有るものから順番に、uses されたファイルを検索する
4.ファイルが見つかったら一覧に登録し、そのファイルの uses 節を調べて検索する(再帰処理)。ただし、既に一覧にある場合は無視する。
この方法でぬかりないですか?
0834デフォルトの名無しさん
NGNGいや、実装ではなくって仕様の話なんだけど
0835デフォルトの名無しさん
NGNGリンカにマップファイルを生成させて、それを読むのが一番確実。
0836デフォルトの名無しさん
NGNGすまん。質問を誤読していた。
String(nil) は、nil が長さ0の文字列だから、
「Pascal 文字列とヌルでおわる文字列の混在」に書かれているように
'' と等しい文字列に変換される。
0837デフォルトの名無しさん
NGNG一般的にどういう実装をするのでしょうか。
私は以下のようにやってました。
procedure OmoiSyori( Status : TStatusBar = nil );
begin
.....
if Status is TStatusBar then
Status.SimpleText := '現在〜の処理中です';
.....
end;
でも、これだとステータスバーにしか対応できないし、
もっと一般的にしたいんですけど…
0838デフォルトの名無しさん
NGNGプログレスバー+ラベルを貼ったフォームをShow(Modal)する
0839デフォルトの名無しさん
NGNGtype TOnReport = procedure ( report:string );
procedure OmoiSyori( Proc:TOnReport=nil );
begin
...
if Assigned(Proc) then Proc( '〜を処理中' );
...
end;
0840839
NGNGプログレスバーだろうがフォームだろうが、
OnReport関数を描くだけで何にでも対応できる。
0841デフォルトの名無しさん
NGNG.RePaint
0842837
NGNGこの方法でやったのですが、互換性が無いというエラーがでます。
TForm1 = class( ... )
...
procedure Report(s:string);
...
end;
.....
procedure TForm1.Button1Click( ... );begin
NagaiSyori( Report ); ←ここでエラー
end;
0843837
NGNGbegin
StatusBar1.SimpleText:=s;
end;
0844837
NGNGすみません、Repaint をどういう風に使えばいいのでしょうか?関数内からフォームを呼び出してラベルなりキャプションを
変更し、フォーム.Repaint して画面を更新という事ですか。
でも、それだとそのフォーム専属の関数になってしまい、
結局メソッドにしたほうが良いという事になってしまいますよね…
0845837
NGNGtype TOnReport = procedure ( report:string ) of object;
とやったら何故かうまくいきました。解決です。
0846デフォルトの名無しさん
NGNG質問の答になってませんが
一般の関数や手続きじゃなくて
クラスのメソッドならイベントにしてしまうのですが.
THeavyJobProgressEvent = procedure (Sender: TObject; const Msg: string);
THeavyJob = class
protected
procedure Progress(procedure const Msg: string); virtual;
public
constructor Create;
destructor Destroy; override;
function Execute; virtual;
property Settei1: string read FSettei1 write SetSettei1;
property Settei2: integer read FSettei2 write SetSettei2;
property OnProgress: THeavyJobProgressEvent read FOnProgress write FOnProgress;
end;
(中略)
procedure THeavyJob.Progress(procedure const Msg: string);
begin
if Assigned(FOnProgress) then
end;
(後略)
public
constructor Create;
destructor Destroy; override;
function Execute; virtual;
property Settei1: string read FSettei1 write SetSettei1;
property Settei2: integer read FSettei2 write SetSettei2;
property OnProgress: THeavyJobProgressEvent read FOnProgress write FOnProgress;
end;
0847ななしヘタぐらま
NGNG>>837
質問の答になってませんが
一般の関数や手続きじゃなくて
クラスのメソッドならイベントにしてしまうのですが.
THeavyJobProgressEvent = procedure (Sender: TObject; const Msg: string);
THeavyJob = class
protected
procedure Progress(procedure const Msg: string); virtual;
public
constructor Create;
destructor Destroy; override;
function Execute; virtual;
property Settei1: string read FSettei1 write SetSettei1;
property Settei2: integer read FSettei2 write SetSettei2;
property OnProgress: THeavyJobProgressEvent read FOnProgress write FOnProgress;
end;
(中略)
procedure THeavyJob.Progress(procedure const Msg: string);
begin
if Assigned(FOnProgress) then
FOnProgress(self, Msg);
end;
procedure THeavyJob.Execute;
begin
// 処理のループの中でProgressメソッドを呼び出す
end;
(後略)
0848Delギコ
NGNG(,,゚Д゚) <
U ,つ \
@| |
∪∪ モウ ワカッテルト オモウケド
0849名無しさん
NGNGウイルススキャンでここのファイルがいつもひっかかる。
これは誤認ですか?
0850Delギコ
NGNG(,,゚Д゚)
U U サブクラス化してると
〜| | 激しくDelphiが死亡するノ…ツラーイニャ
U U
ACompoをBCompoでサブクラス化するとき
ACompoに対してBCompo1/BCompo2/BCompo3...
でサブクラス化しちゃだめっぽいね
多重にサブクラス化したことある人いる??
0851デフォルトの名無しさん
NGNG0852デフォルトの名無しさん
NGNG親が存在するコンポは親が解放されるとともに自分自身も
解放されるからじゃない?
どのようにサブクラスしたいの?
0853デフォルトの名無しさん
NGNG0854デフォルトの名無しさん
NGNG偉そうなくせに使えない奴だなぁ
0855デフォルトの名無しさん
NGNG「激しくDelphiが死亡するノ…ツラーイニャ 」になるんだ。有り得ないYO!
0856Delギコ
NGNG(,,゚Д゚) < 日本語くちゃくちゃになってしまったの
ヽ/つ且~~ \ゆるしたもれ。
(__ _)
標準コンポTStrGridに対してTMyGridBarを作成しました。
んで、このTMyGridBarはGridプロパでGridを一つ選択できます。
選択したとたんにGridをサブクラス化して
とあるGridに流れるMessageを見てTMyGridBarにお知らせしまする。
で、このTMyGridBarを複数作ってからプロパティで
ひとつのStringGridを指定しました。
StringGridは何回も何回もサブクラス化されまする。
それはうまくいくのですが
0857Delギコ
NGNG(,,゚Д゚)∫
/ つ旦O
〜(._[ ̄ ̄ ̄.]
 ̄ ̄ ̄
___/\_____
その状態から
MyGridBar1.Gridプロパにnilを代入したときに
(もしくはStringGrid2を代入してもいいよ)
元のStringGrid1のWndProcを正しく戻してやらなきゃいけないのだけど。
それが出来ないの。
通常。サブクラス化では一度StringGridのWndProcをバッファに入れるじゃない。
FOldWndProc := StrGrid.WndProc;
StrGrid.WndProc := NewGridWndProc;//New...はメソッド
で、元に戻すときは
StrGrid.WndProc := FOldWndProc
FOldWndProc := nil;
だよねえ。このStrGrid.WndProcが他の所でサブクラス化されているから
勝手にもとのものを代入していいのかわるいのか…
というか、Delがフリーズしたりアクセスバイオるからダメなんだろう…
うーん、むずかしけりよ。
なんか、複雑に考えすぎているのかな。
0858Delギコ
NGNG(,,゚Д゚) / < 単純なサブクラス化くらいできるわ、
| つ●) \
〜| |
U U
サンプルヲ アゲル ジュンビ シテミル
0859デフォルトの名無しさん
NGNGTFunc:procedure of object;
と書いた場合、TFunc と、普通の手続き(クラスに依存しない手続き)は代入互換性が無いって事?
0860デフォルトの名無しさん
NGNGprocedure of object って、
「オブジェクトの手続き」って事か!!!
なんでいままで気が付かなかったんだろう…
0861デフォルトの名無しさん
NGNG単純なリンクリストだから
A->B->C
となってBを消去する時は A->C とつないでやらなければならないだけでは?
0862Delギコ
NGNG∧ ∧ ・・・・。
( ゚Д゚) ソデス
|∪ |
〜| |
U U デモ デキニャイ
ドキュソ デスカ?
0863デフォルトの名無しさん
NGNG安全には取り外せない。
安全に取り外すには、 StrGrid.WndProcが指しているメソッドに
取り外せというメッセージを送りつけて、取り外されたら元に戻した後
再度 取り外す前の StrGrid.WndProc に取り付けろとメッセージを送るとか
あるいは安全に取り外せないと判ったら取り外さないのも方法かもね
0864デフォルトの名無しさん
NGNGデータベースプログラミングをわかりやすく解説してあるHPを教えろ。
0865デフォルトの名無しさん
NGNGMenuItem と SpeedButton に割り振っています。
が、しかし!
Action にキャプションを指定すると、当然そこで指定した
キャプションが MenuItem と SpeedButton の両方に
表示されることになりますが、SpeedButton には Glyph だけで
キャプション文字列は表示したくないんです。
現在、Action にはキャプションを指定せず、MenuItemに手動で
キャプション指定していますが、スマートに解決する方法はありませんか。
0866デフォルトの名無しさん
NGNG@' ― (,,゚Д゚)つ < WinProc系の話難しくてついて逝けない…
し― 怐@ \___________
0867デフォルトの名無しさん
NGNGToolBar.ShowCaption
0868863
NGNGWindProcは ob object だよね?
StrGrid.WndProc が 自分(NewGridWndProc)を示していなければ
示しているポインタから
関数ポインタとオブジェクトに分解して、
そいつのOldWndProcを書き換えてしまうのが素早い方法だろう
ただ、グループで開発しるような場合は、>>863の方法をお勧めする
0869デフォルトの名無しさん
NGNGあの、ツールバーが関係ない場合は?
0870Delギコ
NGNG( ゚Д゚) < >>863 さんくす。
/⊃⊃ \
〜( ノ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
⊂`J ダヨネダヨネ
イマの所、グローバルなListに同一Classが入るようにしてて
そのList内を探索して
if TMyGridBar(List.Item[i]).FOldWndProc = Self.NewGridWndProc then
こうしたいんだけど、、、これって比較できないみたいなの。
procedure of Objectの同一性ってどうやって調べますの??
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′ ̄ ̄(#゚Д゚)< >>864くたばれ
UU ̄ ̄ U U \_____________
http://homepage2.nifty.com/boheme/delphi/dbtips/index.html
http://user3.allnet.ne.jp/tadnakam/Delphi/delphi4/db/index.htm
∧ ∧ />>865がんばってね。
∩(,,゚Д゚) < >>866まずは普通のサブクラス化を調べてみYOU!
⊂,,⌒ ,,つつ. \>>867フォロークスコクスコサンクスコ
 ̄ ̄
0871Delギコ
NGNG∩(,,゚Д゚) < SpeedButton.Caption := '';
⊂,,^__つつ. \_ Actionを設定したあとにな。
0872デフォルトの名無しさん
NGNGメソッドをTMethod型にキャストすることでそのメソッドのインスタンスと
関数アドレスが分かります。この二つを比較することで同一性が判断できます。
if (TMethod(method1).Code=TMethod(method2).Code) and // 関数アドレス比較
(TMethod(method1).Data=TMethod(method2).Data) then // インスタンス比較
begin
// method1 と method2 は一致した!
end;
0873デフォルトの名無しさん
NGNG0874デフォルトの名無しさん
NGNGあんがとよ。死ね。
0875Delギコ
NGNG(゚Д゚,,)ノ >>872出来たよ出来たよ
| つ
| ⊂)〜 すごーいよ。
∪ メソッドはイチド of Objectに代入しなきゃいけないみたいだけど。
∧ ∧ スバラシイ!
(,,゚Д゚) カンシャノ キモチ ウケトッテ!!!!
|つ�IO
〜 |
∪ ∪
0876デフォルトの名無しさん
NGNG0877863
NGNGその送り主が自分かどうかという方法もあるよ。
というか、そういうメッセージを定義しておくべきだったんじゃないか? >MS
サブクラス解放時にサブクラスのリンクを
WM_DetachProc,DetachStart,this でthis=selfでなければ解放
WM_DetachProc,DetachEnd,this 再度接続
するメッセージ
0878デフォルトの名無しさん
NGNGどんな方法がいいですか?
perlで言うところの
s/(\-\-|==)+/$1/g;
みたいのが簡潔に表記できないかなぁと。
「--------==========」→「---===」になります。
http://homepage1.nifty.com/ht_deko/algo002.html
みたいなルーチンで一文字ずつ指定するか、
http://homepage1.nifty.com/bmonkey/delphi/delphi.html
のAWK関数郡を使うのがいいんですかねぇ
∧ ∧ /
∩(,,TДT) < 教えてくださいー
⊂,,⌒ ,,つつ. \
 ̄ ̄
0879Delギコ
NGNG(゚Д゚,,) < >>863 あんたはすごい
⊂ ⊂| \___________
| |〜
∪ ∪
Delギコ、自分がペーペーだと知る2001年セプテムバー
0880Delギコ高速回答
NGNG____∧ ∧_ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
___( ゚Д゚)< このスレはーーー
__ / ⊃ つ \______________
_〜′ /
_ ∪ ∪ >>873 あれは窓がActiveになりたがっているんじゃない?
OSの設定でレジを弄るとActiveになりたがるやつは
点滅せずにActiveになるとオモワレ
∧ ∧ ──────
(゚Д゚ ) < チャットかよーーー
⊂⊂ \──────
\ 〜 ────
し し ─────
>>878 StringReplace使う
while (1<=AnsiPos('--', S))
S := StringReplace(S, '--', '-', [rfReplaceAll]);
んな漢字
0881Delギコ
NGNG(,,゚Д゚)ノ < >>878
| ⊃| | あら?ちがった?
| | \_____________
⊂ノ〜
∪ 正規表現はイマイチわからん
他のネコにおまかせ
0882デフォルトの名無しさん
NGNG(,,゚Д゚) とりあえずこれでやってみます
|つ(1)O でも他のやりかたあったら教えてください
〜 | >正規表現わかる人
∪ ∪
0883デフォルトの名無しさん
NGNG0884デフォルトの名無しさん
NGNG正規表現って
s/(\-\-|==)+/$1/g;
でなんで「--------==========」が「---===」になるの?
鬱死
0885デフォルトの名無しさん
NGNGfunction CompressSpace( s:string ):string;
const Space = ' ';
begin
while AnsiPos( Space, s ) >= 1 do
s := ReplaceStr( s, Space+Space, Space );
result := s;
end;
0886Delギコ
NGNG( ゚Д゚)< 1ッ点か…
|つ つ \
〜| |
∪ ∪
改めてSubClass化に思いをはせたのですが
多重のサブクラス化って
同じクラス内で防止しても限定的にOKなだけで
アリアラな所でサブクラス化されているかどうかをチェックしだすと
安全にサブクラス化を解除する方法って無理なのでは??
とりあえず
すべてのコンポーネントにOnMessageイベントが欲しい!
なんていってみる。
TUpDownコンポはうまくやっているみたいだけど、
あれって、Editをサブクラス化してますの??
0887デフォルトの名無しさん
NGNG2.\- はハイフンそのものを表すエスケープ文字である
3.+ は連続を示す。
4.| で区切られたものは、左右どちらかに一致する事を示す。
これらの事から、正規表現
s/(\-\-|==)+/$1/g;
の $1 は文字列 -- もしくは文字列 == を表し、
-- の連続したもの、又は == の連続したものに一致する部分が、
-- 又は == で置き換えられることになる。
0888デフォルトの名無しさん
NGNGwhile AnsiPos( '----', S) > 0 do S := ReplaceStr(S, '----', '--' );
while AnsiPos( '====', S) > 0 do S := ReplaceStr(S, '====', '==');
が正しい。
0889デフォルトの名無しさん
NGNG設計をこう変更した方が簡単じゃないの?
TStrGridに最初に張り付いたTMyGridBarがオーナーになって
他に張り付いたTMyGridBarの一覧を保持しておく
2番目以後に張り付いた TMyGridBarはサブクラスはせず
最初にオーナーになったTMyGridBarがWinProcメッセージを
分配する。
TMyGridBar.gridが設定される時は Gridに対してUSERメッセージを送る。
既にサブクラスされていればUSERメッセージでオーナのTMyGridBarが帰って来る
から、そのオーナにコネクトするようにすればいい
オーナーが取り外される場合は自分の持っているリストの
先頭にオーナーを譲る
0890Delギコ
NGNG(,,゚Д゚) < それも一応考えました。
U ,つ゛ \____________
〜| |
∪∪
> 既にサブクラスされていればUSERメッセージでオーナのTMyGridBarが帰って来る
> から、そのオーナにコネクトするようにすればいい
この辺がちょっとわからないですが
> 最初にオーナーになったTMyGridBarがWinProcメッセージを
> 分配する。
このオーバーヘッドがチョット大きいかと思ったもので,,,
悩み中だったのです。
TMyGridBarを沢山作ったらそれだけ
サブクラスのWndProcの中で全てのものをチェックしなきゃいけないし
StringGridも複数だと
各々TMyGridBarを付けると
単純に1つのインスタンスだけがサブクラス化する
というわけにも逝かなくなるし…
いろいろ難しいです。
とりあえず、サブクラス化解除できない時は
EComponentErrorを発生させることにしました。
0891デフォルトの名無しさん
NGNG0892878
NGNGちなみに「s」は置換コマンドで、お尻の「g」は繰り返しを意味します。
>Delギコさんって暇人?
オレもそう思った(藁
0893Delギコ
NGNG| 暇人?
| r――――――――――
∨ ̄ ̄ ̄ ̄ ̄∧_∧ |ヒッキーなの?
∧_∧ (´∀` ) <
( ´∀`) ( ∧∧ |_________
( つ/ ̄ ̄ ̄ ̄(´∀` ) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ∧ ∧ /(⊂ )o < 2ch中毒だよ
/_( ;)__/ / \________
|| ̄/ | ̄ ̄||/ ┌───────
||, (___/ || < ほっとケ
└───────
∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(,,゚Д゚) < ちょっと休むか…
@/つ且~~ \___________
(__ _)
0894デフォルトの名無しさん
NGNGTOwnerGridBar をつくる。サブクラス化するのは
こいつだけ。TMyGridBar のインスタンスは、こいつ
のメソッドでいくらでも作成する。こいつは、その
リストを保持してメッセージを分配する。TMyGridBar
は、自分が破棄されるときは、こいつに通知してリスト
からはずしてもらう。
0895884
NGNGぃゃマジレスくれるとは思わんかったサンクス
ところで「--------==========」は「--==」じゃないの?
「--」x複数=>「--」
「==」x複数=>「==」
なんじゃないの?サッパリ
0896Delギコ
NGNG| ∪ | .
| 〜
__| ∧ ∧
┌┐ | \,,゚Д゚)、
│| ̄)〓( ,, ̄ ̄ ̄)
└. ̄  ̄ ̄ ̄ ̄
3時間で充電完了
0897Delギコ
NGNG( )
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(゚Д゚,,)< SubClass化コンポすべてに対応するのは無理なのかな。
| ̄ ̄ ̄| \_______
|二二二|
|___|
从从从从
以下のようなTCompo継承コンポを用意してみた。
constructor TFormFucker.Create(AOwner: TComponent);
begin
inherited;
if (AOwner is TCustomForm) then
begin
FOldFormProc := TCustomForm(AOwner).WindowProc;
TCustomForm(AOwner).WindowProc := FormWndProc;
end else
begin
FOldFormProc := nil;
end;
end;
( )
( )
( ) ( )
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(゚Д゚;)_ < 思いもしない罠アリコード
|U ̄U | \_______
|二二二|
|___|
从从从从
destructor TFormFucker.Destroy;
begin
if Assigned(FOldFormProc)
and (Self.Owner is TCustomForm) then
begin
TCustomForm(AOwner).WindowProc := FOldFormProc;
FOldFormProc := nil;
end;
inherited;
end;
procedure TFormFucker.FormWndProc(var Message: TMessage);
begin
FOldFormProc(Message);
end;
0898Delギコ
NGNG( ) ( )
( ) ( )
∧ ∧( ) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(;゚Д゚) < 動作結果ぁああ
/ づ \_______
| ̄ ̄ ̄|
|二二二|
|___|
从从从从
FormFucker1を配置、FormFucker2を配置
FormFucker2を削除、FormFucker1を削除>>ダイジョウブ
FormFucker1を配置、FormFucker2を配置
FormFucker1を削除、FormFucker2を削除>>IDE コワレテヨシ
( )
( )
( ) ( )
____バシャァ
| | │ |∧ ∧ ・・・・・
从从 | | │ |(*゚Д゚) SubClass化ってけっこう危険?
从从从从 | | │ | _つつ
 ̄ ̄ ̄ ̄~~~~~~~~~~~~~~
TFormFuckerクラスだけがFormをSubClass化するだけなら
対応策はあるけれども似たようなFormSubClass化コンポーネントの
TAFormFucker/TBFormFuckerを作られると
どうしようもなくないですか??
それとも対策ありますか?
0899Delギコ
NGNG( ゚Д゚)< 次スレの準備完了済み
ノつ つ \__________
〜/ ノ
し' ∪ アンシンシテ900Getセヨ
0900デフォルトの名無しさん
NGNG0901デフォルトの名無しさん
NGNGDelギコさんがんばれー
(充電完了が気に入ったYO!)
0902デフォルトの名無しさん
NGNG相談室→初級
Delphi/Kylix Tech→中・上級
という住み分けでいいのかしらん?
0903デフォルトの名無しさん
NGNGWindowProc
SetWindowsHookEx
などメッセージを操作する方法がいろいろあって
どのときにどれを使ったらいいのかよくわからん
優先順位も???
誰か説明Please
0904デフォルトの名無しさん
NGNG話の内容が理解できる私は中級に認定されますか。
0905デフォルトの名無しさん
NGNGWindows メッセージパッシングの基本原理を知っているかどうかで、
説明がかなり変わるんだが...
SetWindowsHook(Ex) は Windows API で用意されていて、直接ウィンドウプロシージャを
書き換える。VCL/TWindow コントロールでなくても利用可能。
WindowProc は、VCL 側で定義されている、コントロールごとに存在する
ウィンドウプロシージャ。コントロールのソースコードがある場合には
これを書き換えるほうがメンテナンスしやすい。
さらに、メッセージを処理するたびに呼び出される OnMessage が
用意されていて、この構文を使えばイベントと同様にコードが書ける。
「イベントと同様」とは、あるインスタンスでデフォルトとは異なる振る舞いを
させたいときに、継承クラスを作成してバリエーションを作るのではなく、
最初から用意されているイベントに対してコードを追加することで対応する
ことを意味します。
ところがすべての Windows メッセージに対して、Dynamic メソッドを
定義できるため、コントロールのソースがある場合、わざわざ WindowProc を
変更する必要はほとんどない。
ソースがない/書き換えると大事になりそうな基本クラスなどの定義
済み動作を置き換えたいときくらいかな?
一部の重要なウィンドウズメッセージは扱いやすい形に書き換えられ
ちょっと知りつぼみな説明になった。
わからんところがあれば質問!
0906Delギコ
NGNG。°゜ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
__ ∧ ∧゚ / 教えて!goo にもDelphiが載るといいのにニャ。
〜⊂_⊂( ゚Д゚)っ <____________
0907rock me
NGNGclass procedure サブクラス化コンポ.XXX(var Msg: TMessage);
type
PMethod = ^TMethod;
var
m: TWndMethod;
begin
TMethod(m).Code := PMethod(Self)^.Code;
TMethod(m).Data := PMethod(Self)^.Data;
m(Msg);
end;
っていけるかな?これなら「罠」は消えるはずだけど。
PMethod(p)^に目的のプロシージャいれて
Form.WindowProcにはTObject(p).XXXをいれて
開放する時はPMethod(p)^にOldWindowProc入れてやる。
いくらかごみ出るけど、気になるならリスト作って
finalizationででも開放するとか。
0908rock
NGNGとにかくSelfとして渡される変数に真の呼び出し先の情報を入れといて、
WindowProc変数は開放時にも変更しないというアイデア。品が無いけど。
0909デフォルトの名無しさん
NGNG何度も出てるように多重サブクラスの特効薬は、特定のメッセージで
解放させる事じゃない?
解放させるメッセージ番号が決まっていれば一番いいんだけどね。
とりあえずプロジェクトで定数を決めておけばいいでしょ
WM_DatachProcを WndProcで受け取ったら
LParamを見て送信者=受信者でなければ
WParam=WM_DetachProcDetach なら取り外し
WParam=WM_DetachProcReConnect なら再接続
msg.Msg :=WM_DetachProc;
msg.WParam:=WM_DetachProcDetach;
msg.LParam:=self;
Nproc:= TCustomForm(AOwner).WindowProc;
TCustomForm(AOwner).WindowProc := FOldFormProc;
Nproc(msg);
msg.Msg :=WM_DetachProc;
msg.WParam:=WM_DetachProcReConnect;
msg.LParam:=self;
Nproc(msg);
0910デフォルトの名無しさん
NGNGAPI レベルでフックしていると大変なことになる。
何度いわれても懲りないなぁ > Halbow
0911Delギコ
NGNG( ゚Д゚)
|∪ |
〜| | ナンカ ワケワカ
U U
>>905 OnMessageはTApplicationにしかないと思う。
TWinControl全てにあっていいと思うけど
そしたら多重SubClass化なんてくだらない問題も解決かな。
> ところがすべての Windows メッセージに対して、Dynamic メソッドを
> 定義できるため、コントロールのソースがある場合、わざわざ WindowProc を
> 変更する必要はほとんどない
ここ以下がサパーリわかりません??
わからなすぎて、何がわからないのかもわからな・・・
>>907
スンマソン、またーくわからないでし。
罠、消えますの?PMethod(Self)^.自分のMethod??
現在、>>897で
元に戻す時にTMethod(ナンカ.WndProc) = TMethod(Self.新しいWndProcメソド)
を確認して、Trueなら戻すし Falseなら例外でサブクラス化解除しないよにしてます。
IDE上からなら
サブクラス化、解除不可でCompo削除不可になっても
プロジェクトを閉じて開きなおせばたぶんCompo削除可能なのですが
プログラム上からTFuckCompoClassをCreateしたりFreeしたりすると
やぱりだめでしょうね(そんなことする奴はイネーと思うが)
サブクラス化は各Compo一つに1回だけを心がけるべきかしら。
0912デフォルトの名無しさん
NGNGこれだと多重にサブクラスされていた場合に対応出来ない。
再帰的に、
WM_DetachProcが送られたら
LParamを見て送信者=受信者でなければ
元に戻してFOldWndProcに同じメッセージを投げつける
メッセージから帰って来たら再度コネクトする
LParamを見て送信者=受信者なら
元に戻して完了
とすればどうだろ
0913デフォルトの名無しさん
NGNGprocedure TFormFucker.FormWndProc(var Message: TMessage);
begin
case Message.Msg of
WM_DetachProc:
begin
TCustomForm(AOwner).WindowProc := FOldFormProc;
if (TFormFucker(LParam) <> Self) then begin //呼び出したのが自分でなければ
FOldFormProc(Message);//さらに解放を続ける
FOldFormProc:=TCustomForm(AOwner).WindowProc ;
TCustomForm(AOwner).WindowProc := FormWndProc;//接続しなおす
end;
end;
else FOldFormProc(Message);
end;
end;
destructor TFormFucker.Destroy;
var msg:TMessage;
begin
msg.Msg :=WM_DetachProc;
msg.WParam:=Longint(FormWndProc);
msg.LParam:=Longint(self);
end;
0914907
NGNG> 定義できるため、コントロールのソースがある場合、わざわざ WindowProc を
> 変更する必要はほとんどない
message指令とか、WM〜メソッドをoverrideするってことかも。
907の説明)サブクラス化を行うコンポを削除すると問題なのは、
自分のメソッド(FormのWindowProcと置き換えていたやつ)
が他のコンポにOldProcみたいなかんじで保存されていて、
インスタンスが破壊された後にも呼び出される事があるってことだと思う。
だからWindowProcを置き換えるメソッドはクラスメソッドにして、
そこから処理本体のメソッドを呼び出すようにするという仕組み。
で、使い終わったら、処理本体でなくて、置き換える前のFormのメソッドを
呼び出すようにしてやる。
インチキをしているのは、クラスメソッドを呼ばせる時、TMethod.Data
に当たる部分のデータを、書き換えてしまうところ。
ここの数値が正当じゃなくても、ちゃんと呼んでくれるみたい。
説明下手でスマソ
0915デフォルトの名無しさん
NGNG名前をつけるのは不適切とかのたまってたのがいたな
0916デフォルトの名無しさん
NGNGえーあー カタカナ語はちゃんと語源を確認しようね
で、システムをフックする関数(かなにか)に
Hooker ってなずけた人がいるんです。
Hooker については
http://www.sanseido.net/sup/ItemPane.asp?P0=12&P1=MAIN,NODE,57198
を。
0917Delギコ
NGNG(゚Д゚*,) < 書いてみた
_φ_⊂)__ \_____
/旦/三/ /|
| ̄ ̄ ̄ ̄ ̄| |
|千葉ピーナッツ|/
 ̄ ̄ ̄ ̄ ̄
こんな感じでなってるよね。
Form1.WndProc
=A.NewProc
begin
・・・
A.FOldProc=B.NewProc
end; begin
・・・
B.FOldProc=C.NewProc
end; begin
・・・
C.FOldProc=サブクラス化しないときのForm1のWndProc
end;
A/B/Cは一応、自分が作れるものとしましょう。
他人が作ったものでも対応できればいいけど、さすがにそりゃ無理でしょ
で、A/B/CのClassは全く別だとしましょう。
TA,TB,TCとでも考えてくださればいいっす。
0918Delギコ
NGNG∩(,,゚Д゚) < おもしろい。
⊂,,⌒ ,,つつ. \_
 ̄ ̄ ソンナニ sage ンデモ エエデ(関西風)
Bをサブクラス化から開放したいとき
A.FOldProc:=B.FOldProcする必要があって
それってWM_DetachProcメッセージ伝達で出来るのかしら??
ちょっとイメージできてないです。
というか、Bを開放するときに、Aも一緒にはずしてしまうって事かしら。
でもコンポーネントは配置されているのに
理由もなくサブクラス化されていない物が混じっているのも
ちょっときついかも
そのあとAを開放しようとすると
プログラム側がワケワカな挙動しないかな。
0920デフォルトの名無しさん
NGNG新スレ立てるとき、ここの1みたく「その他のプログラム」って書くと
またVBの質問とか出てきそうだからやめよう。
検討済みだったらスマソ。
0921デフォルトの名無しさん
NGNG取付順
↓ objA ─────────────── WndProc → FoldwndProc
↑ │
↓ objB ────────── WndProc → FoldwndProc │
↑ │
↓ objC ───── WndProc → FoldwndProc │
↑ │
↓ objD WndProc → FoldwndProc │
↑ │
msg ……………> (サブクラス先の.WndProc )←──┘
こういうふうになっていると安全に取り外せるのは objDだけ
objAを取り外したい場合は objA,B,Cの順に取り外さなければいけない
これはメッセージの流れる順だから
取り外せというメッセージを送ればいい。
そのメッセージを処理するWndProc内部で取り外し処理をしては
送ったメッセージが自分のメッセージでなければ
FoldWndProcを通じてルートを遡らせてゆき
そのFoldWndProcが帰って来たら再度接続しなおす。
メッセージさえ共通にしておけばいいから複数のオブジェクトを設計する場合も
それほど難しい問題は起きない。
0922913
NGNGconst WM_DatachProc = WM_USER;
type
TtestLabel = class(TLabel)
public
FoldWndProc:TWndMethod;
constructor Create(AOwner: TComponent);override;
destructor Destroy;override;
procedure MyWndProc(var Message: TMessage);
end;
constructor TtestLabel.Create(AOwner: TComponent);
begin inherited;
if (AOwner is TCustomForm) then
begin
FOldWndProc := TCustomForm(AOwner).WindowProc;
TCustomForm(AOwner).WindowProc := MyWndProc;
end else begin
FOldWndProc := nil;
end;
end;
destructor TtestLabel.Destroy;
var msg:TMessage;
begin
msg.Msg:=WM_DatachProc;
msg.WParam:=longint(self);
(Owner as TCustomForm).WindowProc(msg);
inherited;
end;
procedure TtestLabel.MyWndProc(var Message: TMessage);
begin
case Message.Msg of
WM_DatachProc:begin
(Owner as TCustomForm) .WindowProc := FOldWndProc;
if ( Message.WParam <> LongInt(Self)) then
begin
FOldWndProc(Message);//さらに解放を続ける
FOldWndProc:=(Owner as TCustomForm) .WindowProc;
(Owner as TCustomForm) .WindowProc:= MyWndProc;
end else FOldWndProc:=nil;
end;
WM_CHAR: begin //コンポーネントの動作チェック用
text:=Char(Message.WPARAM);
if assigned(FoldWndProc) then FoldWndProc(Message);
end;
else if assigned(FoldWndProc) then FoldWndProc(Message);
end;
end;
procedure Register;
begin RegisterComponents('Samples', [TtestLabel]);
end;
end.
0923デフォルトの名無しさん
NGNGWM_DatachProc = WM_USER;
をサブクラス取り外し用メッセージという事にして
WParamでSelfを送るという約束にしましょう。
LParamは空きとして
0924デフォルトの名無しさん
NGNGLParam にはプロセスユニークと思われる番号(とりあえずプロセスID)が
与えられる事にしましょう。
0926デフォルトの名無しさん
NGNGふと思ったんだが、
WM_USERだとすでに使われていて別の意味を持つ場合もあると思うから、
RegisterWindowMessage('WM_SubclassFreeNotify');
みたいにして使った方が(・∀・)イイ!と思われ。
もしくはWM_USER+222みたいにするとか。222の意味は2chということで:-)
0927デフォルトの名無しさん
NGNGWM_APP以降にせんと安心できなかったな。
RegisterWindowMessageがやはり無難な感じ
0928デフォルトの名無しさん
NGNGWM_DatachProc = RegisterWindowMessage('WM_SubclassFreeNotify');
WParam,LParam はユニークな値が入る
この2つの値で送信者が自分かどうか判断し
自分でなければリンクを解放して下位にメッセージを送り
メッセージが帰って来たらリンクを再接続する
送信者が自分ならリンクの解放だけを行う
VCL上のサブクラス取り外し
WParam で selfが渡される WParam = LongInt(self)
LParamは無視してよい
Win上のサブクラス取り外し
LParamでプロセスID
WParamはプロセス内ユニークな値(メソッドアドレス等それぞれのプロセスで管理)
0929Delギコ
NGNG∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
@' ― (,,゚Д゚) < 正規表現はわからんちー。
し― し-J \___________
2chのどこかで正規表現すれがあったような気もする
>>921さんは>>922さん?
>こういうふうになっていると安全に取り外せるのは objDだけ
これで妥協してしまうのだったら
問題は非常に簡単なんですけどね。
> objAを取り外したい場合は objA,B,Cの順に取り外さなければいけない
??なんかわからなくなってきました。
objAを取り外したい場合はobjBのFoldWndProcを
サブクラス先の.WndProcに接続しなきゃいけないですよね。
> そのFoldWndProcが帰って来たら再度接続しなおす。
イチドサブクラス化解除させてから再度サブクラス化させるってことかな
>>922のコードはイマからみてみます。
0930デフォルトの名無しさん
NGNG○Detach
0931921
NGNG○objAを取り外したい場合は objD,C,Bの順に取り外さなければいけない
0932デフォルトの名無しさん
NGNG>サブクラス先の.WndProcに接続しなきゃいけないですよね。
結果的にはそういう事だけど、
それに拘るからハマルんだよ
基本的にobjAからは objBが見えない。確実に割り出す方法はないんだよ。
サブクラスがobjA,objBの2段だけなら サブクラス元のメソッドポインタから割り出せるけど
さらにサブクラスされているともうダメ
だから、メッセージを使う方法が一番安全で確実だと皆言ってるじゃないか
0933Delギコ
NGNG(,,゚Д゚)< こりゃまたすごいや。
|つ つ \
@ |
∪ ∪
動作コードみてようやくわかりました。
サンサンサンクスコクスコクスコーーーー
>>921の図でいうと
objAを取り外す場合
objAからメッセージを投げる
objDに伝わる
objDのサブクラス化を解除
objDからobjCに連絡
objCに伝わる
objCのサブクラス化を解除
objCからobjBに連絡
objBに伝わる
objBのサブクラス化解除
obfBからobfAに連絡
objAに伝わる
objAのサブクラス化解除
objAは自分自身なので何もしない
objAの処理が終わったので
objBに処理が戻り再度SubClass化
objBの処理が終わったので
objCに処理が戻り再度SubClass化
objCの処理が終わったので
objDニ処理が戻り再度SubClass化
こういう事になっているわけですね。
0934Delギコ
NGNG(,,゚Д゚) < んまー。するどい>>932
| つつヾ \_______
〜| | ユルシテヨ
∪∪
> 結果的にはそういう事だけど、
> それに拘るからハマルんだよ
ええ、しっかりと浜りました。
みっちりときっちりと。
> 基本的にobjAからは objBが見えない。確実に割り出す方法はないんだよ。
そうっすね。
ということは、他人の作ったものが混じった場合、例えばここのCompo
http://www.psn.ne.jp/~nagayama/program/0017.html
(ごめんねサイト作者さん)
この仕組みは動作しないから…一体どうなるんだろ。
…テストをしている限りは変な挙動はしていないみたい。
ちゃんとtestLabelは取り外せますね。
正しいのかな?
> サブクラスがobjA,objBの2段だけなら サブクラス元のメソッドポインタから割り出せるけど
> さらにサブクラスされているともうダメ
ですねー。
> だから、メッセージを使う方法が一番安全で確実だと皆言ってるじゃないか
やっとわかたでし。
0935デフォルトの名無しさん
NGNGサブクラスを利用するコンポーネントは以下の手順で解放する事
var WM_DetachProc:Cardinal; をローカル変数として定義し
コンポーネントの初期化部で
initialization
WM_DetachProc := RegisterWindowMessage('WM_SubclassFreeNotify');
end.
とする。
サブクラス解放時にはこのメッセージIDで
WParam,LParam はユニークな値を入れて サブクラス先に送信する
それを受信したWindowProcでは、
この2つの値で送信者が自分かどうか判断し
自分でなければリンクを解放して下位にメッセージを送り
メッセージが帰って来たらリンクを再接続する
送信者が自分ならリンクの解放だけを行う
VCL上のサブクラス取り外し
WParam で selfが渡される WParam = LongInt(self)
LParamは無視してよい サンプルコード >>922
Win上のサブクラス取り外し
LParamでプロセスID
WParamはプロセス内ユニークな値(メソッドアドレス等それぞれのプロセスで管理)
注意: WM_DetachProc は定数ではないので case では使えない ifで判断する事
0936デフォルトの名無しさん
NGNGこれが簡単に暴走しない理由は、
FNewWndProc := MakeObjectInstance(WndProc);
とサンクを使っていて、オブジェクト解放時にこのサンクを解放していないからじゃないかと思う
0937Delギコ
NGNG( ゚Д゚) < ほかの自作FormフックCompoも試した
.=| |==U=U==.| |= \___________
| | | | | | 普通にVCLでフック解除するヤツだよ
| | ノU U. | |
| | .| |
testLabelを削除された時に
暴走はしないのですが
自作の方のサブクラス化は解除されてしまうます。
自作の方は正しくサブクラス化解除できないときは
例外を出すようにしてるからいいけど
タブン、マトモに削除するとWndProcがどこかに逝ってしまい
暴走するだろーな。
WM_DetachProc が流れた所で
安全にサブクラス化解除されない場合は例外発生して
元に戻るようにできないかいニャ。
考え中.....
そこまで拘らなくてもいいって肝するけどー。
0938Delギコ
NGNG( ゚Д゚) < 教えてくれたデフォルトの名無しさんズ。
ノつノつ \ありがとーう。
( 人
ソ )
ノ ノ
( 人 ネジッテ ミマシタ
ソ )
ノ ノ
UU
0939878
NGNG最初の例が間違えてたっす。スマソ。
s/(\-\-|==)+/$1/g; の場合
「-」奇数→「---」
「-」偶数→「--」
ですな。例では「-=」ともに偶数だから結果は
895が書いてる通りになります。
0940デフォルトの名無しさん
NGNGオブジェクト指向の一部ですか?それとも
単にテクニックの一つでしょうか。
サブクラスとWinProcとはどういう関係がありますか。
つーか、WinProcは何者ですか。
0941デフォルトの名無しさん
NGNGずっと綺麗にメッセージを隠蔽してるから、使わなくて問題無い。
また、Delphiでコールバック関数やメッセージ使うと、
あっという間に超読めないコードになる。
だから、メッセージ操作コード出さないでね>>Delギコ
0942Delギコ
NGNG∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ピュ.ー ( ゚Д゚)< 説明リンクを探したのだけど
=〔~∪ ̄ ̄〕\いいのがないのだ。
= ◎――◎
ちょっと前ならTNight2000っていう面白いCompoのサイトがあったのだが
サイトがお亡くなりになってしもた。
Googleのキャッシュでちょっと見れるみたい。
他には
http://www.asahi-net.or.jp/~HA3T-NKMR/vcl3-1.htm
http://homepage2.nifty.com/boheme/delphi/tips/tec1080.htm
http://www.borland.co.jp/tips/delphi/dh015/index.html
こんなかんじかなあ。
簡単な説明すると
TLabelに流れてくるメッセージを見たい場合は
TLabelを継承してメッセージハンドラ記述して見てもいいんだけど
いろんな理由からそれをやりたくない場合
TLabelをサブクラス化するとそれが見れるという仕組みらしいよ
>>941何がいいたいんだ?
頻繁に必要になるものでもないが、必要なときには使うしかあるまい?
0943Delギコ
NGNG, ⌒ヽ ( ) // | \
( ' ( ヽ⌒ヽ 、 / / | \
ゝ `ヽ( ) | (⌒ 、
( 、⌒ ヽ ( ヽ
( (⌒ ) (
( Y⌒ ヽ
( `)
ゝ ノ ノ
_________________________________________________________________________________________
〜〜 〜〜 〜〜〜 〜 〜〜 〜〜 〜 〜〜 〜
〜〜 〜〜 〜〜 〜〜〜 〜
〜 〜〜 〜〜 〜〜 〜〜 〜〜 〜〜〜
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.... ∧ ∧ .... ..... .... .....
.... (,,゚Д゚) .. .... .... .....
.... | ∪ .... ... ... .
.... 〜 | ナツガ オワッタ スレ モ オワッタ ....
.... ∪∪
.... アツイ オモイデ サヨウナラ .... .... ...
新スレ立てました。サブクラス化などの続きはこちらで、、
( ゚Д゚)ノ Delギコ猫のプログラミング相談室part3
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=1001039863
0944935
NGNGこのメッセージが経路を辿る時に途中で解放せずにそのまま渡されて来る場合もある訳で
経路の全てがこのメッセージをサポートしてるかどうかチェックする方法が無いといけないのか
という事で、このメッセージを受け取った時のサブクラス先のポインタが自分が設定した時の
状態に戻っていなければ・・・・・
どうしようもないかな?
せいぜいメッセージを出して別の何もしないコンポを動的に作成してそいつを割り当てておくしかないかも
という事でコンポ作家の皆さん >>935 をよろしく
0945デフォルトの名無しさん
NGNG最初に受け取るのが WinProc 関数であり、
これを別の関数に置換して、そちらにメッセージが
流れるように仕向ける操作を「サブクラス化」と呼ぶわけですか。
0947デフォルトの名無しさん
NGNG>頻繁に必要になるものでもないが、必要なときには使うしかあるまい?
Delギコ生意気。使わずにできるぞ。
サブクラスの作成でつまずいてるんだろ。それがメッセージのせいって分からんのか。
分からんのだったら、人にアドバイスするな。
0948デフォルトの名無しさん
NGNG0949Delギコ
NGNG(,,゚Д゚) < え〜、牛乳いかがっすかー。
./\品品昌_ \___________
( U__| 雷印 |
.U U ̄ ̄ ̄
カルシウム不足の方が1名おられるようで
他のお客様のご迷惑になりますので,,,
牛乳飲んどけ。
折れもカルシウム不足かも。ノンどくか。
でも、ウシって今・危ニャーかも??
0950デフォルトの名無しさん
NGNG牛乳には狂牛病の原因と考えられているプリオンは含まれません。
神経系の体液が関与しない限り安全です。
0951デフォルトの名無しさん
NGNG終いには「Delギコ猫のプログラミング相談室」なんていう書籍が出そうだね(w
0952デフォルトの名無しさん
NGNGサブクラスと言うと、子クラスを連想します。
0953デフォルトの名無しさん
NGNG>サブクラスと言うと、子クラスを連想します
合ってるやん
0954デフォルトの名無しさん
NGNG0955デフォルトの名無しさん
NGNGスレが10までいったら書籍キボン。
デザパタとかも含めてお得なお値段\3Kあたりをキボンw
とりあえず終了
スレよりこれ以降は書き込みを自粛した方がよいかと思われ。
(モレモナー)
つうわけで再度誘導。
( ゚Д゚)ノ Delギコ猫のプログラミング相談室part3
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=1001039863
0956デフォルトの名無しさん
NGNGなんとなく実装の改良案。
destructor TTestLabel.Destroy;
var
TempWindowProc: TWndMethod;
Msg: TMessage;
begin
TempWindowProc := TCustomForm(Owner).WindowProc;
TCustomForm(Owner).WindowProc := FOldWindowProc;
Msg.Msg := WM_DetachProc;
Msg.LParam := 0;
Msg.WParam := WPARAM(Self);
Msg.Result := 0;
TempWindowProc(Msg);
inherited Destroy;
if Msg.Result = 0 then
raise Exception.Create('サブクラス化解除がおかしいですよ〜');
end;
procedure TTestLabel.MyWindowProc(var Msg: TMessage);
begin
if Msg.Msg = WM_DetachProc then
begin
if Msg.WParam = WPARAM(Self) then
begin
Msg.Result := 1;
end
else
begin
FOldWindowProc(Msg);
FOldWindowProc := TCustomForm(Owner).WindowProc;
TCustomForm(Owner).WindowProc := Self.MyWindowProc;
end;
end
else
FOldWindowProc(Msg);
end;
0957Delギッコー
NGNG/ギッコー /
/____\ < 新スレでやろーう
| ゚Д゚| \
ノ| || || || |し  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
sageるよ
0958デフォルトの名無しさん
NGNG0959デフォルトの名無しさん
NGNG0960デフォルトの名無しさん
NGNGレス数が950を超えています。1000を超えると書き込みができなくなります。