1 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 12:18:00 ] Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を 勇気を持って書き込むスレッドです。 Delphi使いが優しくコメントを返しますが お礼はDelphiの布教と初心者の救済をお願いします。 <前スレ> くだすれDelphi(超初心者用)その42 pc11.2ch.net/test/read.cgi/tech/1180613145/ <過去スレ> DelWiki避難所 delwiki.info/?Delphi 関連の過去スレッド
2 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 12:19:07 ] Delphi初心者のための寺子屋 pc11.2ch.net/test/read.cgi/tech/1132756268/ Delphiで無料でプログラミングしてみるお pc11.2ch.net/test/read.cgi/tech/1158233434/ バカボンのDelphi不買・販促・その他談話室その29 pc11.2ch.net/test/read.cgi/tech/1153227982/ Borland Developer Studio 2006 No.13 pc11.2ch.net/test/read.cgi/tech/1175861395/ Borland Developer Studio 2006 アンチスレ pc11.2ch.net/test/read.cgi/tech/1153353434/ VB vs Delphi @夏厨2006 pc11.2ch.net/test/read.cgi/tech/1152851763/ 【Delphi】 Indyコンポーネント 【C++Builder】 pc11.2ch.net/test/read.cgi/tech/1093654251/ delphiで2ch保守プログラムを作ろう pc11.2ch.net/test/read.cgi/tech/1165632604/ Delphi持ってるならGLSceneを使え pc11.2ch.net/test/read.cgi/tech/1163269079/ 【Delphi】 ゲームつくるぞ(゚Д゚)ゴルァ 2【Delphi】 pc11.2ch.net/test/read.cgi/gamedev/1097836469/ Delphiでアクションゲームが作りたい!! Part2 pc11.2ch.net/test/read.cgi/gamedev/1027482533/ ネットワークゲーム作成のお勉強(Delphi専用スレ) pc11.2ch.net/test/read.cgi/gamedev/1028278884/ delphiでMMO pc11.2ch.net/test/read.cgi/gamedev/1072515100/ 【Delphi互換!?】FreePascal【GPL】 pc11.2ch.net/test/read.cgi/tech/1137051510/ CodeGear dn.codegear.com/jp/
3 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 12:20:19 ] 重複です。移動してください。 pc11.2ch.net/test/read.cgi/tech/1184037822/
4 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 12:32:59 ] 無償ダウンロード www.microsoft.com/japan/msdn/vstudio/express/vbasic/
5 名前:デフォルトの名無しさん [2007/08/03(金) 18:37:42 ] WideString対応のTStringList、 TWideStringListってないですか?
6 名前:デフォルトの名無しさん [2007/08/03(金) 18:52:00 ] WideStringsに、TWideStringListがありました。 これを使ってみようと思います。
7 名前:デフォルトの名無しさん [2007/08/03(金) 20:48:35 ] Delphi向けのドキュメントツールを探しています。 みなさんは何を使っておられますか? 過去スレをみると、DIPasDocなどがあるようですが、 日本語対応版?が見つけられませんでした。
8 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2007/08/04(土) 01:14:53 ] _________ ∧,,∧ / ミ,,゚Д゚彡 < これかしら。 ミ つ旦)~~ \ @ミ ミ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∪''∪ Hexe19 - Doxygen for Delphi : Pas2Dox web.archive.org/web/20060718000634/www.hexe19.net/doxygen/quickstart-delphi.html また、Archive化しなけれ....
9 名前:デフォルトの名無しさん [2007/08/04(土) 08:03:33 ] 海外のドキュメンテーションツールは、海外ではいくつかありそうです。 ・DelphiCodeToDoc home page dephicodetodoc.sourceforge.net/ JavaDoc互換文法 GExperts 用のテンプレート完備 ・JADD - Just Another DelphiDoc - Automatic Generation of Documentation for Delphi/Kylix-Projects delphidoc.sourceforge.net/ ・PasDoc - pasdoc pasdoc.sipsolutions.net/ ・SourceForge.net: Pascal To Doxygen Convertor sourceforge.net/projects/pas2dox/ Doxygen文法? どれも日本語は、たぶん、修正がいるだろうな・・・ ソースコードがUNICODEになったら、対応もいらないんだろうけど DelphiCodeToDocがアクティブっぽいので、試してみようと思います。
10 名前:デフォルトの名無しさん [2007/08/04(土) 08:04:09 ] x 海外のドキュメンテーションツールは、海外ではいくつかありそうです。 o Delphiのドキュメンテーションツールは、海外ではいくつかありそうです。
11 名前:デフォルトの名無しさん [2007/08/04(土) 08:21:06 ] DelphiとVBはどちらが優れていますか?
12 名前:デフォルトの名無しさん [2007/08/04(土) 08:23:58 ] ドキュメンテーションツール追加 ・Doc-O-Matic - Doc-O-Matic - Documentation System www.doc-o-matic.com/ 商用 CodeGearが使っているらしい ・Time2HELP - The Developer's Source Code Documentation Solution www.time2help.com/ "JavaDoc" for Delphi だそうで。 一回Delwikiにでもまとめたいですね
13 名前:デフォルトの名無しさん [2007/08/04(土) 08:24:36 ] 追加 ・The Delphi Inspiration: DIPasDoc www.yunqa.de/delphi/pasdoc/ PasDocをDelphiでコンパイルできるようにしたものらしい
14 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 08:27:27 ] >>11 【VBと比べて、比べる事であそびたい人】 VB vs Delphi @夏厨2006 pc11.2ch.net/test/read.cgi/tech/1152851763/ 【VCと比べて、比べる事であそびたい人】 結局DelphiとVC++ってどっちの方がいいんだ? pc11.2ch.net/test/read.cgi/tech/1177431417/ それぞれ専用スレがあるので、ご活用下さい。
15 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 16:02:16 ] AnsiStringでリードバイトの処理がわからん外人はUnicodeになっても、サロゲートの処理がわかんないんだろうな。
16 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 17:44:33 ] で?
17 名前:デフォルトの名無しさん [2007/08/04(土) 19:11:09 ] 彡川川川三三三ミ〜 川|川/ \|〜 プゥ〜ン __________________ ‖|‖ ◎---◎|〜 /AnsiStringでリードバイトの処理がわからん 川川‖ 3 ヽ〜 < 外人はUnicodeになっても、 川川 ∴)д(∴)〜 \サロゲートの処理がわかんないんだろうな。 川川 〜 /〜  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 川川‖ 〜 /‖ _____ 川川川川___/‖ | | ̄ ̄\ \ / \__| | | ̄ ̄| / \___ | | |__| | \ |つ |__|__/ / カタカタカタ /  ̄ ̄ | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕 | | ̄
18 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 19:28:34 ] Delphiでは特に気にする必要ないよね 前スレにいたUTF-8変換にバグがあるとか言ってた馬鹿がまた来たか?
19 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 19:57:23 ] >>1 スレ立て乙です〜 >>18 UTF-8にサロゲートペアってあったっけ?
20 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 20:53:12 ] >>18 Delphiってより気にする必要がないのはおまえのプログラムがだろ??頭大丈夫?
21 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 20:56:51 ] >>19 >>18 がいいたいのはUCS2のことだろ、エンコーディングと文字集合の違いも理解できない やつはほっとこう。
22 名前:デフォルトの名無しさん [2007/08/04(土) 21:10:35 ] 彡川川川三三三ミ〜 川|川/ \|〜 プゥ〜ン __________________ ‖|‖ ◎---◎|〜 /Delphiでは特に気にする必要ないよね 川川‖ 3 ヽ〜 < 前スレにいたUTF-8変換に 川川 ∴)д(∴)〜 \バグがあるとか言ってた馬鹿がまた来たか? 川川 〜 /〜  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 川川‖ 〜 /‖ _____ 川川川川___/‖ | | ̄ ̄\ \ / \__| | | ̄ ̄| / \___ | | |__| | \ |つ |__|__/ / カタカタカタ /  ̄ ̄ | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕 | | ̄
23 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 22:34:14 ] >>20 Delphiにはサロゲート処理のある関数がない 人のレス読んで煽る前にVCLのソース読んでこい
24 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 22:40:10 ] 前スレのってCESU-8がどうのこうの言ってたやつか それまで散々粘着してたのにUCS2だって言われてから急に消えて笑ったな
25 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 22:49:01 ] つーか、Del用でUCS4なUnicodeコンポ作ってる外人さんはいても日本人の作ったのは知らないなぁ
26 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 22:54:13 ] 資料も今じゃロシア語や中国語で書かれたものの方が多いしな 日本語文献はどんどん消えていく
27 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 23:19:30 ] 拝啓ユーザー様 開発環境が対応していないので、私のプログラムも対応してません。
28 名前:デフォルトの名無しさん [2007/08/04(土) 23:20:57 ] 彡川川川三三三ミ〜 川|川/ \|〜 プゥ〜ン __________________ ‖|‖ ◎---◎|〜 /Delphiにはサロゲート処理のある関数がない 川川‖ 3 ヽ〜 < 人のレス読んで煽る前にVCLのソース読んでこい 川川 ∴)д(∴)〜 \ 川川 〜 /〜  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 川川‖ 〜 /‖ _____ 川川川川___/‖ | | ̄ ̄\ \ / \__| | | ̄ ̄| / \___ | | |__| | \ |つ |__|__/ / カタカタカタ /  ̄ ̄ | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕 | | ̄
29 名前:デフォルトの名無しさん [2007/08/04(土) 23:21:56 ] 彡川川川三三三ミ〜 川|川/ \|〜 プゥ〜ン __________________ ‖|‖ ◎---◎|〜 /前スレのってCESU-8がどうのこうの言ってたやつか 川川‖ 3 ヽ〜 < それまで散々粘着してたのにUCS2だって言われてから急に消えて笑ったな 川川 ∴)д(∴)〜 \ 川川 〜 /〜  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 川川‖ 〜 /‖ _____ 川川川川___/‖ | | ̄ ̄\ \ / \__| | | ̄ ̄| / \___ | | |__| | \ |つ |__|__/ / カタカタカタ /  ̄ ̄ | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕 | | ̄
30 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 03:17:57 ] tnt買収してさっさとUnicodeに公式対応してくんないかな
31 名前:デフォルトの名無しさん [2007/08/05(日) 10:32:35 ] めちゃめちゃ初心者なんですけど、セルに色をつけるってどうやるんですか? Ondrawcellを使うのはわかったんですけど、ヘルプ見てもコマンドがよくわかりません><
32 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 11:29:54 ] >>31 何のセルだよ。TStringGrid? あとこのスレは超初心者用なんだからいちいち初心者ですなんて言わなくておk
33 名前:デフォルトの名無しさん [2007/08/05(日) 11:42:45 ] はい。おっしゃるTStringGridです。 excelのような簡単な表を作成し、この列は赤、この列は青のように色分けを したいのですが、canvasコマンド?がいまいちよくわからないのです。
34 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 11:51:15 ] ヘルプでTCanvas を一度全部見てゆくといいよ。 Brush.Color とか Pen.Color とか Font.Color で色を変えられるよ 文字を描く場合は、TextRect で枠に合わせて描くと
35 名前:デフォルトの名無しさん [2007/08/05(日) 12:19:11 ] たびたび申し訳ありません 色分けについて、 www2.biglobe.ne.jp/~sakai/gensfaq2.htm#a017-1 このページを発見したのですが、 // セルに書き込む TextRect(Rect, Rect.Left + 2, Rect.Top + 2, StringGrid1.Cells[Col, Row]); という行の+2などの意味がよくわからないのですが教えていただけたら幸いです。
36 名前:デフォルトの名無しさん [2007/08/05(日) 12:30:09 ] delphi って、近年なくなるってことはないですか? 将来5年間くらい存続する確立は何%くらいでしょうか?
37 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 12:46:18 ] 今までもさんざん危機を叫ばれていながら存在し続けているので35%の確率で存続するのではないでしょうか? まあそんな事は神の味噌汁ですが。
38 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 12:49:47 ] >>35 単なる足し算。 左上よりちょっと真ん中に描画するって意味だけど、 セルが大きいと無意味ですね。
39 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 13:12:01 ] 2年なら50%、5年なら20%くらいの確率で生き残れる、と思う。
40 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 13:22:27 ] ま、いつ発売中止になっても驚かない、って状況ではある。
41 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 13:25:10 ] 例えば10年以上も前にとっくに実機が販売されなくなったMSXだけども、 いまだにMSXユーザーってのは根強く存在するわけで。 ユーザーがいなくならない限り存在し続けるんじゃないかな。どんな形であれ。 しかし色々なゴタゴタがあったのにここまで残ってこられたのは本物なんじゃないかな。
42 名前:デフォルトの名無しさん [2007/08/05(日) 13:56:52 ] 彡川川川三三三ミ〜 川|川/ \|〜 プゥ〜ン __________________ ‖|‖ ◎---◎|〜 /しかし色々なゴタゴタがあったのにここまで 川川‖ 3 ヽ〜 < 残ってこられたのは本物なんじゃないかな。 川川 ∴)д(∴)〜 \ 川川 〜 /〜  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 川川‖ 〜 /‖ _____ 川川川川___/‖ | | ̄ ̄\ \ / \__| | | ̄ ̄| / \___ | | |__| | \ |つ |__|__/ / カタカタカタ /  ̄ ̄ | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕 | | ̄
43 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 14:01:53 ] そんなの、N88Basic ユーザがまだいるわいな、というくらい製品として無意味。
44 名前:デフォルトの名無しさん [2007/08/05(日) 14:15:03 ] 彡川川川三三三ミ〜 川|川/ \|〜 プゥ〜ン __________________ ‖|‖ ◎---◎|〜 /そんなの、N88Basic ユーザがまだいるわいな、 川川‖ 3 ヽ〜 < というくらい製品として無意味 川川 ∴)д(∴)〜 \ 川川 〜 /〜  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 川川‖ 〜 /‖ _____ 川川川川___/‖ | | ̄ ̄\ \ / \__| | | ̄ ̄| / \___ | | |__| | \ |つ |__|__/ / カタカタカタ /  ̄ ̄ | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕 | | ̄
45 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 15:12:33 ] ↓>>17 ,22,28,29,42,44 _____ /::::::::::::::::::::::::::\〜プーン /:::::::::::::::::::::::::::::::::::::::\〜プーン |:::::::::::::;;;;;;|_|_|_|_|〜プーン |;;;;;;;;;;ノ∪ \,) ,,/ ヽ〜 |::( 6∪ ー─◎─◎ )〜 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |ノ (∵∴ ( o o)∴)〜 < えーと、製品として無意味っと・・・ | ∪< ∵∵ 3 ∵> \_____________ \ ⌒ ノ_____ \_____/ | | ̄ ̄\ \ カチャ ___/ \ | | | ̄ ̄| カチャ |:::::::/ \___ | \| | |__| |:::::::| \____|つ⊂|__|__/ / |:::::/ | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕
46 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 15:14:31 ] またUnicodeの人か
47 名前:デフォルトの名無しさん [2007/08/05(日) 18:16:43 ] 彡川川川三三三ミ〜 川|川/ \|〜 プゥ〜ン __________________ ‖|‖ ◎---◎|〜 /またUnicodeの人か 川川‖ 3 ヽ〜 < 川川 ∴)д(∴)〜 \ 川川 〜 /〜  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 川川‖ 〜 /‖ _____ 川川川川___/‖ | | ̄ ̄\ \ / \__| | | ̄ ̄| / \___ | | |__| | \ |つ |__|__/ / カタカタカタ /  ̄ ̄ | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕 | | ̄
48 名前:Cの老師を目指す女 mailto:sage [2007/08/05(日) 20:31:33 ] 裕美子といいます。大都会の片隅で×いちで孤独なOLをしています。 私はDelphiはあまり得意ではありませんが、Delphiユーザーは ハイレベルなプログラマが多いので尊敬しています。がんばってくだ さい。 上のAAから悪しきオーラを感じます。あなたはプログラマではなく 単なるフィッシングがネチな2ちゃん根らですね。たとえどんなに 策を労使ようとも私たちはくじけますん。
49 名前:Cの老師を目指す女 mailto:sage [2007/08/05(日) 20:32:20 ] ごめんなさい くじけますんじゃなくてくじけませんです。訂正してください。
50 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 22:47:39 ] 小池徹平より不細工な女は女とは認めますん
51 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 22:52:40 ] 許しますん
52 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 23:13:17 ] 労使よう
53 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 23:58:36 ] まあ仮に近い将来消えちゃったとしても、 ライブラリソースに手を入れられるのが唯一の救いだな 64bit全盛時代が来るまではそれで何とか繋げる
54 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 00:22:07 ] べつにDelphiじゃなくても、しのげる人は大勢いますけど・・・
55 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 00:23:41 ] Delphiユーザは、ふさによると2%くらいなんだから、消えたってまったくこの業界 に影響ないでしょ。
56 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 00:28:40 ] レコード型を使おうと思っているのですが それぞれのフィールドの型が循環参照(?)している場合は どうやって定義したらいいですか。 type Ttest1 = record index: Integer; test2: Ttest2; end; type Ttest2 = record index: Integer; test1: Ttest1; end;
57 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 00:28:50 ] 隔離スレでやれ
58 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 00:37:17 ] >>56 再設計を勧める
59 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 00:42:51 ] type PRec1 = ^TRec1; PRec2 = ^TRec2; TRec1 = record rec2: PRec2; end; TRec2 = record rec1: PRec1; end; みたいに一つのtypeにまとめてTRecX, PRecXをついにして定義すれば可能。 ただ>>56 みたいなポインタではなく変数そのものを循環的に格納するなんて論理的に不可能だぞ。
60 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 01:06:50 ] ありがとうございます。 ポインタでやってみます。
61 名前:デフォルトの名無しさん [2007/08/06(月) 01:07:57 ] クラスにしちゃえよ
62 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 03:52:46 ] 前スレ999 > uPnPを使ってuPnP対応のルータにポートを開閉を要求するにはどうしたらよいのでしょうか nw.odoruinu.net/?p=191 とか、どうでしょ。 タイプライブラリを作る方法は、この辺を参考に。 www.delphipraxis.net/post598522.html www.delphipraxis.net/topic59019,0,asc,0.html
63 名前:デフォルトの名無しさん [2007/08/06(月) 12:56:08 ] 先輩にDelphi勧められているんでこの夏休みに勉強しようと思うんですが、 友達に聞いたらもう終わってるとか言われたんですがどうなんでしょう? 何でもキリックスとかに移ったとか(よくわからないのでスマソ)
64 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 13:05:23 ] Delphiなんて古木を今更わざわざ拾わなくても ゆとりプログラマは根の張った大木にぶらさがって優雅にC#でもやってなさいってこった
65 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 13:44:04 ] ポインタないし
66 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 14:03:47 ] それはJAVAだろ・・・・・っといってもDelphiのClass形と同じような参照としてのポインタはあるんだけどな
67 名前:デフォルトの名無しさん [2007/08/06(月) 15:07:11 ] StringGridについて詳しく解説されてるページとかありませんか? あったら教えてください。
68 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 15:46:58 ] >>63 Unicodeベースでなければならない、.NETでなければならない、 就職に繋げたいということでもないなら Win32な開発環境としては別に終わっちゃいない。 今なおWindowsで最も楽な開発環境の一つ。 Kylix(カイリックス)はDelphiのLinux版で かなり大昔にバージョンアップが途絶えて どちらかというとこっちの方が終わってる環境だ。
69 名前:ななしへたぐらま ◆XcB18Bks.Y mailto:sage [2007/08/06(月) 15:58:17 ] >>35 ためしに+2を取り除いたり違う数(たとえば10とか20とか)にして実行してみましょう. また片方の値だけを変えて実行してみてください. その数が何を意味しているのか,またどうして+2なのかがわかると思います. DelphiやVBはコードを書いたら速攻で実行できるので いろいろ考えるよりもまずは条件をいろいろ変えて動かしてしまいましょう. >>36 いつ無くなってもおかしくありませんがまだしぶとく生き残ると思います. もっとも,大切なことはDelphiという道具の使い方を覚えることではなくて 自分のやりたいことを形にする技術を身につけることなので, Delphiでそれを身につけていればどの開発環境にいってもうまくやっていけるはずです. >>56 そのTtest1とTTest2が別のものである必然性は本当にありますか? 実はひとつのもので済んだりはしませんか? 本当に相互に参照しなければならない場面は案外少なかったりします. これはレコードに限らず,オブジェクトやユニットにも言えます.
70 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 16:05:48 ] >>68 ネタにマジレスする馬鹿
71 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 16:32:23 ] dephi6 personalを使っています。 クラスのメンバとして定数を定義したいのですがpublicのあたりに public const val: Integer = 0; としても「'END'が必要な場所に'CONST'があります」とコンパイルエラーになります。 こういうものはプロパティで代用するしかないんでしょうか。
72 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 18:52:57 ] クラスのメンバではないグローバルな定数で代用してください
73 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 18:56:48 ] プロパティにするとインスタンス生成しないと参照できなくなるから class function val: integer; にするのも手。オーバーヘッドが発生するんで一長一短だな。
74 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 19:20:37 ] >>71 使ってる環境をTurbo Delphiに変えれば可能です
75 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 19:27:21 ] Delphiは関数内関数や、関数の中で構造体を定義出来たり、定数を定義出来たりするのに クラスの中で そういうのが出来ないんだよな まあ、ユニットを1つの単位と考えて、1ユニット1クラスで考えればいいと思うんだけどな
76 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 20:02:06 ] Delphi6ではできないことがわかってすっきりしました。 代替方法でやってみます。 ありがとうございました。
77 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 20:56:11 ] (´-`)。oO(なんで普通の定数だとまずいんだろう…)
78 名前:ななしへたぐらま ◆XcB18Bks.Y mailto:sage [2007/08/06(月) 21:24:10 ] VCLのソースファイルの再構築はどうやればよいのでしょうか. Delphi 5を使っているのですが HeaderControlにメモリリークのバグがあるので VCLのソースファイル(comctrl.pas)に手を加えてみました. しかしソースファイルを書き換えただけでは駄目,bcc32でコンパイルしても駄目, パッケージの再構築をしようにもパッケージのソースファイルがないようなので困っています.
79 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 21:43:35 ] www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=061257
80 名前:ななしへたぐらま ◆XcB18Bks.Y mailto:sage [2007/08/06(月) 22:08:45 ] ありがとうございます. おかげさまでうまくいきました. これで今日は家に帰れます…
81 名前:デフォルトの名無しさん [2007/08/07(火) 02:53:32 ] >>75 おいおい。できるってw
82 名前:デフォルトの名無しさん [2007/08/07(火) 02:54:34 ] アンチは、デマばかり振りまく。 かまうな馬鹿
83 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 03:28:23 ] ふるいバージョンではできないでしょ。質問者はそういってるし。
84 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 03:47:57 ] いつになったらテンプレートが使えるようになるんですか?
85 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 11:11:45 ] StringGridのセルを初期化するにはどうすればいいんでしょうか?
86 名前:ななしへたぐらま ◆XcB18Bks.Y mailto:sage [2007/08/07(火) 19:26:07 ] >>85 文字列グリッドのすべてのセルの文字列をカラにするということですか? 特にそういうメソッドはないので手でカラにしてください. { 文字列グリッドのすべてのセルの文字列をカラにする手続き } procedure ClearGridCells(Grid: TStringGrid); var iRow, iCol: integer; begin for iRow := 0 to Grid.RowCount - 1 do for iCol := 0 to Grid.ColCount - 1 do Grid.Cells[iCol, iRow] := ''; end; procedure TForm1.Button1Click(Sender: TObject); begin ClearGridCells(StringGrid1); end;
87 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 20:28:16 ] これでもいけそうだぞ。 for I := 0 to Grid.RowCount - 1 do Grid1.Rows[I].Clear;
88 名前:デフォルトの名無しさん [2007/08/07(火) 21:27:39 ] >>87 オレもそうしている。 でも、行の削除なんかのときに1行削除するたびにクリアしないと、 再度行を増やしたときに前の値が出てくるのは何でなんだろう。
89 名前:デフォルトの名無しさん [2007/08/07(火) 23:04:30 ] DataBaseからデータを取得してグローバル配列変数List:array[1..8]of TListに格納しているのですが、 リストにあるデータを使おうと思ったら変な値が出てきます。 どうしたらいいのでしょうか? 環境はにD5Entです。
90 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 23:12:07 ] >>89 ・「変な値」とは具体的に何? ・値を取得するコードは? ・TListはちゃんとCreateしたか?
91 名前:89 [2007/08/07(火) 23:19:39 ] >>90 変な値とは次に使うSQL文です。 値を取得するコードは次に書きます。 TListはちゃんとFrameのInit(FormのShowイベントで呼ぶ)関数でCreateしています。
92 名前:89 1/2 [2007/08/07(火) 23:34:36 ] >>90 SQL.Add('SELECT BEID,GAKKOID'); //集計条件 if SMC.F_KT_DispType=0 then begin // SQL.Add(',MODEL'); end else begin // SQL.Add(',G_TYPE'); end; SQL.Add(',sum(SEITO) FROM V_OPE_U11 WHERE BEID=:b AND GAKKOID=:ga'); SQL.Add(' GROUP BY OWNER,GAKKOID'); //集計条件 if F_KT_DispType=0 then begin // SQL.Add(',MODEL'); end else begin // SQL.Add(',G_TYPE'); end; ParambyName('b').AsInteger := BEID; // ParambyName('ga').AsInteger := GAKKOID; // Open;
93 名前:89 2/2 [2007/08/07(火) 23:37:19 ] >>90 while not EOF do begin List.Add; p.F_KT_OWNER:=FieldByName('BEID').AsInteger; p.F_KT_STORE:=FieldByName('GAKKOID').AsInteger; //集計条件 if F_KT_DispType=0 then begin // p.F_KT_MODEL := FieldByName('MODEL').AsInteger; // p.F_KT_GAKKO_TYPE_CD := ''; end else begin // p.F_KT_MODEL := -1; p.F_KT_GAKKO_TYPE_CD := FieldByName('G_TYPE').AsString; // end; p.F_KT_SEITO := FieldByName('SUM').AsInteger; // List.Add(p); NEXT; end; 大体こんな感じです。
94 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 23:56:18 ] Jw_cad for Windows のクロックメニューってどうやって実現しているのでしょうか?
95 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 23:57:05 ] 何かクセェ List.Add; p.
96 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 00:04:17 ] >>89 うん。Listとpが怪しい。 宣言は? pは何処で入れてる?
97 名前:89 2/2 [2007/08/08(水) 00:27:52 ] >>92 の前に procedure TDM1.Get_SeitoSuu(Cond: TGakkoCond_Rec; List: TList); var p: PGakko004_Rec; beginで PGakko004_Rec = ^TGakko004_Rec; TGakko004_Rec = record F_KT_BEID: Integer; // F_KT_GAKKOID: Integer; // F_KT_MODEL: Integer; // F_KT_GAKKO_TYPE_CD: String[1]; // F_KT_SEITO: Integer; end; です。
98 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 01:23:52 ] >>97 New
99 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 01:45:05 ] クラスにして、Create で生成し、TObjectList で管理することを勧める。 1レコードごとに、New でポインタをつくってメモリ確保しなけりゃ ならないなんて、非効率すぎだし、メモリリークも心配。それに、そのコードを 見ると、ポインタそのものも理解してるのか疑問。
100 名前:89 [2007/08/08(水) 02:02:23 ] >>98 List.Add;はNew(p)でした。 >>99 14430000件以上もレコードがあるのですが大丈夫でしょうか? >>100 Get_Seitosuuは今オーバーロードして新しいの作り始めたんですけど、 そっちのほうをコピーしたのでList.Addが二回も出てきちゃったみたいです。
101 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 02:13:59 ] >>100 あらかじめ件数分かってるなら配列でいいんじゃない? すっきりするしポインタで悩むこともなくなる ちなみに>>99 の言ってることは間違ってるから無視していいよ クラスにしてもCreateする度に内部でメモリ確保してるわけで変わらない むしろ余計なものが付く分そんなに件数あると有意な差が出てくる ただその前に、全部メモリに読み込む必要あるの?300MB弱くらいにならない? SQLで完結しそうにも思えるんだけど
102 名前:89 [2007/08/08(水) 02:27:26 ] >>101 データを一覧表とグラフに集計してまとめるんです。 横浜市の学校で1990年以降に出来た小学校限定とか、 関西地区を除く地区の生徒数2000人以下の学校限定とか、 これを検索ボタンを押したら、条件変更ボタンですぐに一覧表とグラフを変えないといけないんです。 2秒以内に表示しなおすことが前提なのでいちいちSQLを使って取得している時間が無くて、 メモリに確保したままにしてグローバルから読み込もうと思ったんです。
103 名前:デフォルトの名無しさん [2007/08/08(水) 02:27:37 ] > 14430000件 ふつうは、DB使う罠w
104 名前:89 [2007/08/08(水) 02:40:36 ] >>103 使ってますよ。 SQLで取得したデータをどうするかで悩んでるんです。
105 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 02:41:15 ] >>102 やっぱりSQL発行すれば済む問題じゃないかな ひょっとしてDBから1件ずつ取得して比較してると時間がない、なんて思ってるのかもしれないけど、 SQLってのはそういう条件で絞り込んで結果だけ返してくれる道具ですよ? コード見てる限り高速検索アルゴリズムを自分で実装するってわけでもなさそうだし、 素直にSQL出しといた方がよっぽど早いかと思われます。
106 名前:89 [2007/08/08(水) 02:47:00 ] >>105 SQLは使ってますよ。 SQL使って取得したデータをいち早く表示するために考えたのが、 「取得したらグローバル変数に格納する」なんです。 ですけど、いちいちSQLでデータを取得して書き込みだと、 データを一時変数に代入するのに時間がかかりすぎていて困っているのです。 条件ボタンを押すたびに一千万件以上のデータをSQLから取得していくと、 時間がかかりすぎといわれるのです。
107 名前:デフォルトの名無しさん [2007/08/08(水) 03:01:33 ] バックエンドにDB使ってて、その中身をまんま持ってきて、 フロントエンドの言語のデータ構造に入れ込む状況が思い浮かばん
108 名前:89 [2007/08/08(水) 03:15:30 ] >>107 DBへのアクセスは専用のフォームを使っているんです。 ですけどデータ表示とかはおのおののフレームが担当しているんです。 DBへアクセスした後そのフォームが別のグリッドやリストビュー、グラフにアクセスするのはおかしいし、 引数に渡すのも不自然だし、フレームに書いていくと修正が大変なので。
109 名前:デフォルトの名無しさん [2007/08/08(水) 04:27:16 ] >>106 どうも読んでる限りではDBを使いこなせてないみたいだね SQLは色んな書き方があるから、まずはそれを学ぶといいよ SQLってのは単にレコードを1件1件読むためのものじゃない また、1000万件以上の処理ということに変な思い込みを持ってるようだけど、 DBを使う場面ってのは大抵それと同じかそれ以上の件数のレコードを扱うよ だからそれぞれのDBだってほとんどの場合それに耐えうるように設計されてる
110 名前:89 [2007/08/08(水) 04:38:09 ] >>109 分かりました。もうちょっとSQLも勉強したいと思います。 そういえば此処に来たら何を調べていたのか忘れていましたが、 今思い出しました。 TListだとSQLに変わるので、TObjectListを使おうと思ったのですが、 var Ob:TObject; begin Ob:=TObject.Create; ObjectList1.Add(Ob); Ob:=TObject.Create; ObjectList1.Add(Ob); end; と言うように同じ変数にCreateを複数回も使ってもエラーとか言わないでしょうか? また前にObjectListにAddしたオブジェクトは破棄されたり変な値が入らないでしょうか? それと共にグローバルにおいて、関数が終了したら不正なデータに代わるとか無いでしょうか?
111 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 08:34:19 ] Q 同じ変数にCreateを複数回も使ってもエラーとか言わないでしょうか? A 同じ変数にCreateしたものを複数回代入してもエラーにはならない。 ただメモリーリークに注意しなければいけないが、この場合は他の管理方法に委ねているので大丈夫 Q 前にObjectListにAddしたオブジェクトは破棄されたり変な値が入らないでしょうか A Createによりヒープにオブジェクトが作成され Addでその参照が管理されるだけなので、それは杞憂 Q 関数が終了したら不正なデータに代わるとか無いでしょうか? A オブジェクトはヒープにしか作成されない(スタックには作成されない)ので杞憂 なおTObjectのインスタンスを作成してるけど、これは単なる例? TObjectList を使うより、record を使って型を作り array of TMyRecord ; のような、動的配列の方が扱い易いよ
112 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 11:07:18 ] 2秒以内か。データベースサーバー何使って、Delphi側はからデータベースに接続するのに BDE使ってるの?ADO使ってるの?BDEのこと忘れたけど、ADOならTADODataSetのCacheSizeプロパティで 一度に取り出す行数制限できるからそれ使えば?一度に1千万のデータなんか画面に表示できないから、 一度に1千万のデータなんて読み込まなきゃいいだけ。
113 名前:ななしへたぐらま ◆XcB18Bks.Y mailto:sage [2007/08/08(水) 11:45:03 ] >>110-111 TObjectListはデフォルトで項目オブジェクトを所有します. つまりリストをクリアしたりオブジェクトを解放すると全項目のオブジェクトを解放します. TListのような参照するだけのリストを作りたい場合は コンストラクタで引数にFalseを指定するか (ナントカ := TObjectList.Create(False) ) 生成後にOwnsObjectsプロパティにFalseを代入すると (ナントカ.OwnsObjects := False ) 所有しなくなります. つまりリストをクリアしたりオブジェクトを解放しても項目のオブジェクトは解放されなくなります.
114 名前:デフォルトの名無しさん [2007/08/08(水) 12:11:06 ] Turbo Delphi Explorerで Delphi 7と同じ規格?で作ることできますでしょうか?
115 名前:89 [2007/08/08(水) 12:37:31 ] >>111 詳しい情報有難うございます。 TObjectは例で実際には構造体を使うのですが、動的配列のほうが速いのですか? >>112 FireBirdとIBQueryを使っています。 >>113 標準だと参照型じゃないんですね。 参照型だと関数が終了した時に代入していたローカル変数をうやむやにして、 変な所を参照してしまうみたいで。でもそんな心配ないのですよね?
116 名前:ななしへたぐらま ◆XcB18Bks.Y mailto:sage [2007/08/08(水) 15:35:15 ] >>115 Delphiのオブジェクト変数(キーワードclassを使うもの)は常にポインタです. つまりDelphiのオブジェクト変数はそのオブジェクトの場所を覚えているに過ぎません. そしてTObjectListはオブジェクトの場所の一覧です. TObjectListのAddメソッドではオブジェクトの場所が渡されて内部のリストにこの場所を書き足します. たとえば以下のようなコードだと TMyForm = class(TForm) private FList: TObjectList; procedure Nantoka; end; procedure TMyForm.Nantoka; begin obj := TMyObject.Create; // @ FList.Add(obj); // A end; @でオブジェクトが生成されてその場所が変数objに書き込まれます. Aでリストにそのオブジェクトの場所が渡ります. メソッドNantokaを抜けると変数objは消滅しますがオブジェクトそのものは残ります. (目的のビルの場所を書いたメモが捨てられてもそのビルが消滅するわけではないのと同じです) リストはオブジェクトの場所しか見ていないので 変数objが消滅しても見てはいけないところを見てしまう心配はありません. これはリストが項目オブジェクトを所有する場合もしない場合も全く同じです.
117 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 15:38:02 ] >>114 コンパイラそのものはD7から殆ど変わってない。ライブラリも殆ど同じ。 >>115 >TObjectは例で実際には構造体を使うのですが、動的配列のほうが速いのですか? いちいちオブジェクトをCreateするより、構造体の動的配列の方が一度にメモリを確保するから 多少速度も上がると思うよ。 サイズが判らない場合でも、動的配列は最初に多めにとって、足らなくなったらまた多めにとって というようにやればいい。
118 名前:89 [2007/08/08(水) 15:48:00 ] >>116 だと本来出てこない値が出てきてしまうのは何故でしょう? >>117 procedure TFrame1.ListSwitch(List1: TList; var List2: array of TSeitoSuu_Rec); var i:integer; p:PSeitoSuu_Rec; begin SetLength(List2,List1.Count);←互換性の無い型です。 for i:=0 to List1.Count-1 do begin p:=POPE004_Rec(ListA[i]); list2[i]:=p^; end; end; と成ってしまいます。 どうしたら再定義できますか?
119 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 15:55:18 ] >>118 関数の引数でソレをやったら、動的配列ではなくなる Type TArraySeitoSuu_Rec = array of TSeitoSuu_Rec; と動的配列型を定義しておいてから procedure TFrame1.ListSwitch(List1: TList; var List2: TArraySeitoSuu_Rec); とやらないと
120 名前:89 [2007/08/08(水) 15:59:06 ] >>119 解決しました。 皆さん有難うございました。
121 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 16:06:21 ] こんなレベルの人が学校関係のDB扱う仕事やってんのか… そりゃ情報流出しまくるよなとおもた
122 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 16:19:47 ] 引数で 動的配列のような格好の定義が出たら、ソレはオープン配列パラメータだ
123 名前:デフォルトの名無しさん [2007/08/08(水) 19:11:06 ] また匿名でコテハン叩きか キャノンかダかな?
124 名前:デフォルトの名無しさん [2007/08/09(木) 10:19:34 ] Delphi4 Pro を使ってます。 それでKOL(EXEのサイズが小さくなるやつ)を使いたいと思って KOLとMCKをDLして同じフォルダに解凍、「開く」からDelphi4用の パッケージ(.dpk)を開き、インストールを選択。 でもKOLaddが無いと怒られてしまった。 オフィシャルからKOLadd.zipを何度DLしても 解凍しようとすると「破損してる」って言われるし・・・ どこが間違ってるんでしょうか?
125 名前:デフォルトの名無しさん [2007/08/09(木) 17:00:21 ] メモ: TNT Unicode Controls 配布場所 Silverpoint Development club.telepolis.com/silverpointdev/sptbxlib/support.htm#installation club.telepolis.com/silverpointdev/sptbxlib/TntUnicodeControls.2.3.0.zip
126 名前:デフォルトの名無しさん [2007/08/09(木) 17:03:09 ] >>114 Explorer版は、コンポーネントのインストールができないので、 Delphi7で、コンポーネントを使っている場合は、そのままは移植できない。 THoge.Create(Self)のような、動的生成はできるので、無理やり移すことは一応可能。 (Explorer版ではない有償版や、同規格のDelphi2006では、ほぼ修正なしでコンパイルは通る)
127 名前:デフォルトの名無しさん [2007/08/09(木) 17:05:46 ] >>124 ちょっと聞きたいのですが、 KOLってどういう理由で使いたいのですか? ただ、EXEが小さくなる、という理由だと、はっきりいって、 茨の道を火を付けて歩くことになるので、やめた方がいいです。
128 名前:デフォルトの名無しさん [2007/08/09(木) 18:49:40 ] コンポーネントのツールパレットを、キーボードで、検索したいのですが、 部分一致で検索する方法はなかったでしょうか? 通常は前方一致だけのようです(というか、THogeなら、hogeにヒットする) 環境は、Delphi2006
129 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 21:18:58 ] >>127 だな。 UPXMask を勧めとく
130 名前:ななしへたぐらま ◆XcB18Bks.Y mailto:sage [2007/08/09(木) 22:27:40 ] >>118 本来出てこない値について結局わからなかったので適切な答を出せませんでした(すいません).
131 名前:89 [2007/08/09(木) 23:55:07 ] >>130 本来出てこない値とは取得したデータが>>97 のレコードだった場合に、 本来、Modelは-1〜1しかないのに適当な値(118927354等)や >>97 では書き忘れていたんですけど、F_KT_GakkoMei:String;があって、 そのF_KT_GakkoMeiに取得用SQLがそのまま書かれていたりするんです。 解決したんですが、新たな所でつまずいてここにもう一度来ました。 TFrame1のプライベート静的配列を宣言したんです。 ListA:array[1..3]of char;と言う具合に そして>>118 のListSwitchの中で ListA[0]:='0'; ListA[1]:='T'; ListA[2]:='F'; 代入するようにしてButton1Clickの中でListSwitchを呼ぶのですけど、 Button1Clickの関数を一度通り抜けるとListFは('','','','','','','',...)となって、 次にアクセスしようとするとおかしくなるのです。 解決する方法は無いのでしょうか? どうか教えてください。
132 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 00:09:13 ] ListFって何?
133 名前:89 [2007/08/10(金) 00:22:57 ] >>132 ListAでした。結構打ち間違えますね。
134 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 00:33:55 ] Button1Clickからその後のListAの確認するまでの間でぶっ壊してるんだろ コードも晒さずに解決法など出るわけ無いと何度
135 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 00:34:44 ] あとコード出す時は再現できる最小のコードでな
136 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 04:03:24 ] >>131 ご自分で宣言した添え字をお忘れですか?
137 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 04:38:35 ] >>134-135 わかったか?能無しは黙ってろってことだ。
138 名前:ななしへたぐらま ◆XcB18Bks.Y mailto:sage [2007/08/10(金) 12:11:35 ] >>131 >>118 のコードですが 3バイトの文字配列であるListAの内容を無理矢理POPE004_Rec型だと解釈させていることになります. POPE004_Rec型は恐らくTOPE004_Recっていうレコード型を定義していて それに対するポインタ型(レコードのある場所を指す型)なのだと思いますが > ListA[0]:='0'; > ListA[1]:='T'; > ListA[2]:='F'; という文字の並びを4バイトのアドレスだと解釈すると$??465430番地になります. 当然この場所は意味をなしませんからList2[i]にはでたらめな値が入っていると思われます. このコードはコピー元がでたらめになるだけなのでListAの内容を壊しているわけではないと思われます. しかし似たようなミスをほかの場所でもやらかしてListAの内容を壊している可能性は低くないと思います.
139 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 15:22:57 ] フォームからドラッグしてデスクトップやエクスプローラにドロップする 処理はどうしたら良いんでしょうか? エクスプローラからアイテムをドラッグしてフォームにドロップする 処理は彼方此方で見かけるんですが、その逆が見つかりません・・・
140 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 15:43:19 ] ドロップして単にショートカット を作るというような事なら、そのままマウスイベントで処理すればいい ドロップして独自の動作をさせるものを貼り付けるというような事なら シェルエクステンションを作成しないといけない
141 名前:デフォルトの名無しさん [2007/08/10(金) 17:04:51 ] みなさんは、 ・配置したコンポーネント名: ・フォーム名: ・フォームのユニット名: をどのように決めてますか? コーディング規約に属すると思いますが、 参考までにお聞きしたく。 (どこかに記述あったかなあ?) 私の場合は、 ・配置したコンポーネント名:TPanelなら、 HogePanel ・フォーム名:メインフォームなら MainForm、他、HogeForm ・フォームのユニット名:MainFormUnit、HogeFormUnit としてます
142 名前:128 [2007/08/10(金) 17:27:44 ] Delphi 7以降の IDEの新機能 dn.codegear.com/no/article/34361 これによると、 dn.codegear.com/article/images/34323/ToolPalette.gif 部分一致検索が標準でできるように見えるのですが、 どうやったらいいんでしょ・・・
143 名前:128 [2007/08/10(金) 17:42:45 ] こちらのプラグインで部分一致検索はできるようですが、 >>142 のアニメーションが解せないなあ・・・ D_DevLog DDevExtensions ddev.blog46.fc2.com/blog-entry-57.html DelphiSpeedUp Delphi/BCB/BDS IDE plugin andy.jgknet.de/dspeedup/index.php?page=DDevExtensions
144 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 18:00:53 ] デルファイはもうやめtロケ、最近、ザイリンクスのハードウエアみたいなプログラミング が面白い
145 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 18:24:56 ] 確かに VHDLはpascalに似てるけど、このスレで話題にするより他のスレでお願いね
146 名前:デフォルトの名無しさん [2007/08/10(金) 19:16:13 ] ヘルプの表示項目をカスタマイズすることはできないでしょうか? 具体的には、Win32のDelphiだけを表示したいです。 WinHelpの時代は、手動でカスタマイズできたのですが・・・ 環境は、Delphi2006です。
147 名前:146 [2007/08/10(金) 19:22:10 ] メニューの「ヘルプ」「ページのフィルタの編集」で、 デフォルトの表示を編集しようとしたのですが、フィルタなしを ("DevLang"="Delphi") OR ("DocSet"="bds_Win32") に、カスタマイズして、Saveをしても、 >このページのスクリプトでエラーが発生しました。 >'undefined'は、Nullまたはオブジェクトではありません。 と出てしまいます。
148 名前:146 [2007/08/10(金) 19:40:48 ] ("DevLang"="Delphi") だけにしたら、Saveできたけど、 空欄にしたり、変更するとエラーが出て、もどせなくなってしまった。 orz 「フィルタなし」を空欄にしてSaveした場合 --------------------------- Microsoft Internet Explorer --------------------------- Filter cannot be saved without a definition --------------------------- OK --------------------------- ("DocSet"="bds_Win32")で、Saveした場合 --------------------------- Microsoft Internet Explorer --------------------------- All keywords and attributes must be enclosed with in double quotes ( " ). Please correct your text for this filter definition. --------------------------- OK --------------------------- ちゃんと " つけてるよ・・・ orz
149 名前:146 [2007/08/10(金) 19:50:24 ] 試行錯誤していたら、うまく設定を保存できました。 「ページのフィルタの編集」で、 Newして、 ("DevLang"="Delphi") と書いて、Save Asで、「(デフォルト)」と書いて保存したらうまくいきましたヽ( ´ー`)ノ 括弧()つけると最初の項目になり、デフォルトで選択されるようです。 さらに、 ("DocSet"="bds_Win32") OR ("DevLang"="Delphi") にすると、うまくエラーが出ずに保存できました。 (エラー出たりでなかったりするので、うまくいかないかもしれませんけど)
150 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 22:26:19 ] >>142-143 つ インクリメンタルサーチ
151 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 22:54:52 ] ドキュメントのない開発環境はドキュンだな・・・
152 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 23:01:32 ] 座布団一枚... 食え
153 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 05:06:14 ] >>139 OLE Drag&Drop >>141 それがいいと思う。
154 名前:デフォルトの名無しさん [2007/08/11(土) 13:33:07 ] >>150 だから困るんですよ なんで、部分一致検索じゃないかと・・・
155 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 17:30:58 ] >>154 別に誰も部分一致検索じゃないなんて言ってないけど
156 名前:デフォルトの名無しさん [2007/08/11(土) 18:29:36 ] いやだから、部分一致検索じゃないから、困ってるんです。
157 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 19:50:48 ] ドキュメントのない開発環境はドキュンだな・・・
158 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 20:06:02 ] >>156 はぁ?部分一致検索じゃん 勝手な思い込みで困ると書かれても困るんですけど 第一プラグインで解決したんじゃないの?じゃあもういいだろ
159 名前:デフォルトの名無しさん [2007/08/11(土) 21:02:44 ] >>158 プラグインで問題は、解決はしましたが、 うちの2007では部分一致ではなく、前方一致です。 解せません。
160 名前:デフォルトの名無しさん [2007/08/11(土) 21:03:30 ] すみません、2006でした。
161 名前:デフォルトの名無しさん [2007/08/11(土) 21:05:31 ] 二つの環境で試しましたが、両方とも、前方一致検索でした。 なんで、デフォルトでこんな不便な仕様なんだろう・・・
162 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 22:23:05 ] 画像を任意の角度だけ回転させるような手続き Rotate(TImage, kakudo) みたいなのは標準でありますか?
163 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 22:30:02 ] ない。
164 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 22:31:11 ] そうですか じぶんで描くしかないみたいですね
165 名前:デフォルトの名無しさん [2007/08/11(土) 22:37:48 ] コンポーネントさがす
166 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 22:42:58 ] GDI+を使う
167 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 23:15:38 ] TImage は画像じゃないよ
168 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 10:29:47 ] www.asahi-net.or.jp/~HA3T-NKMR/DGS/
169 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 12:08:42 ] TBigBitmapCanvas って塗りつぶしうまくいかないよね。
170 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 13:13:58 ] 回転にCanvasはつかわないしょ。 普通に補間関数書いて、座標変換するだけ。
171 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 15:50:19 ] >>170 > 普通に補間関数書いて それが意外と難しい罠。
172 名前:デフォルトの名無しさん [2007/08/12(日) 23:47:28 ] Threadの扱いで困っています。 Thread内でエラーが出た時に、ユーザーにしらせたいのですが、 どうするのがよいのでしょうか? 今は、Threadは、ひとつだけなので、 メインスレッドで、FThread: THogeThread; として、 サブスレッドの変数をもたせ、 開始時は、 FThread := THogeThread.Create(False); とし、サブスレッド停止時には、スレッドの終了を待つように、 procedure TMainThread.StopThread; begin if Assigned(FThread) then begin FThread.Terminate; FThread.WaitFor; FreeAndNil(FThread); end; end; としています。
173 名前:172 [2007/08/12(日) 23:48:21 ] そして、サブスレッド内で、エラーが起きた場合 Synchronize で、メインスレッドでエラーをポップアップし、 Terminate; を呼び出しています。 しかし、こうすると、メインスレッドから、停止処理(StopThread)を呼ぶのはよいのですが サブスレッドで、エラーが起きた場合は、 FThread が、終了したにも関わらず、FThreadが、保持された状態になります。 次に開始したときは、また生成してしまい、メモリリークになります。 こういうときはどうするのが良い方法なのでしょうか? それとも、FThreadを持たない方法がよいのでしょうか? (その場合、どうやってスレッドの終了を待てばよいのか……?)
174 名前:172 [2007/08/12(日) 23:49:04 ] あ、よく考えたら、 サブスレッド開始時に、StopThread呼べばいいのか・・・
175 名前:172 [2007/08/12(日) 23:55:04 ] もしくは、スレッド一個なら、最初から生成しておく方法でもいいですね。 メインスレッド(メインフォーム)生成時に、生成しておいて、 SyncObj.TSimpleEvent を使って、イベント待ちにして、 スレッド開始時には、TSimpleEvent .SetEvent;する。 スレッド停止時は、フラグを立てて、ループを抜け、イベント待ちにもどる、と。 で、メインスレッド破棄時のみ、TMainThread.StopThread を呼び出すと。
176 名前:172 [2007/08/13(月) 00:17:03 ] 結局、 FreeOnTerminate = True; を使って、スレッドを自動的に破棄するようにしたのですが、 アプリケーション終了時に、メモリリークが起きてしまいます。 (ReportMemoryLeaksOnShutdown := True;で確認) TMainThread.StopThread;のように、スレッドの解放を待つにはどうしたらよいのでしょうか?
177 名前:172 [2007/08/13(月) 00:27:39 ] >>176 に関して、メインスレッド終了時(Destory)に、 if Assigned(FThread) then begin FThread.Terminate; FThread.WaitFor; FThread := nil; end としていたのですが、 スレッドを起動した状態で、終了すると 「スレッドエラー:ハンドルが無効です。 (6)」というエラー と言われて、正常に終了できませんでした。 たぶん、Terminateで、スレッドが破棄されているからだと思います。 そこで、 if Assigned(FThread) then begin FThread.FreeOnTerminate := False; FThread.Terminate; FThread.WaitFor; FreeAndNil(FThread); end; としたところ、無事に正常に終了できました。 ありがとうございました。 でも、FThreadを持たず、複数Createする時はどうやって待つんだろ……
178 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 01:53:30 ] TTabControlのDragModeをdmAutomaticにすると タブをクリックしても選択されないのは仕様ですか? そうするとOnMouseDownやOnMouseUpイベントも呼び出されてないみたいだし、 自前でやるしかないんですか?
179 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 02:09:09 ] 自前でやるのがプログラミングなんだぜ
180 名前:178 mailto:sage [2007/08/13(月) 02:17:21 ] >>179 そうですか・・・><
181 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 03:33:12 ] Delphi2007でTNT Unicode Control使うにはどうしたらいんでしょ? 無償版はだめっぽいし、最新の有償版ですら パッケージ C:\Program Files\tmssoftware\TMSUnicode\Packages\TMSUnicodeDED2006.bpl を読み込めません。 指定されたモジュールが見つかりません。. ってエラーがでる。(ちゃんとあんのに)
182 名前:デフォルトの名無しさん [2007/08/13(月) 10:49:40 ] >>181 パスとおせよ。
183 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 13:18:40 ] >>182 すみません、通ってるようです。
184 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 14:58:38 ] >>172-177 Threadから自前のメッセージをポストしてメインスレッドでユーザーに知らせればいいの では? そしてその時にエラー処理なども一緒にすれば、Threadの方はシンプルにできる と思うんだけど。
185 名前:デフォルトの名無しさん [2007/08/13(月) 16:13:30 ] rsdn.ru/article/delphi/Handlers.xml ページみてるんですが、 type TCalcFunction = function(const A, B : integer) : integer; function Add(const A, B : integer) : integer; begin Result := A + B;end; procedure Example; var CalcFunction : TCalcFunction; begin CalcFunction := Add; ShowMessageFmt('CalcFunction(2, 3) = %d', [CalcFunction (2, 3)]); なんでこういうふうにわざわざやるんでしょうか? どういうときにこういうのを使うんでしょうか?
186 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 16:25:16 ] いや別にいやだったら本人の好きなようにやればいいんじゃないの?
187 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 16:26:25 ] >>185 自由に関数を切り替えるためじゃない?例えば var
188 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 16:28:05 ] >>185 理由はそのページの説明文に書いてあるぞ
189 名前:187 mailto:sage [2007/08/13(月) 16:37:52 ] ごめん、途中で送信しちゃった。 var SomeFunction : array[0..3] of TCalcFunction; として SomeFunction[0] := Add; SomeFunction[1] := Sub; SomeFunction[2] := Multi; SomeFunction[3] := divi; と代入すると(それぞれの関数は宣言してあるとする)。 SomeFunction[a](2, 3) でaの値を変えるだけで関数を切り替える事ができる。
190 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 16:43:46 ] 関数ポインタの使いどころって意味なら C言語の例だけどqsortで検索してみたら。
191 名前:デフォルトの名無しさん [2007/08/13(月) 17:11:48 ] >>185 えーそうなんですけ? >>189 条件分岐を不要にできるんですか。これは使ってみたいです。 >>190 かえってわかんなくなってしまいました>< ありがとうございました。
192 名前:ななしへたぐらま ◆XcB18Bks.Y mailto:sage [2007/08/13(月) 22:29:46 ] >>189 Delphiだと「手続き型」になりますがTListやTObjectListのSortメソッドがそれに相当しますね. サンプルを作ってみたのですがちょっと長すぎるのでぐぐってみました. (ほかのサンプルは Delphi TList Sort でぐぐるとよいかも) www.smart-bbl.info/CQN/FAQ/delphi/d0009394.html TList.Sortでは手続き型を使うことによって「データをどういう順番に並べ替えるかを決める処理と, その条件に従って実際に並べ替える処理とが完全に分離」しています. どんな形式のデータを並べ替えさせる場合でも,どんな順序で並べ替えさせる場合でも, その条件に従って並べ替える方法はほぼ決まっているので, 結果としてリストを使うプログラマーは前者のコードを書くだけで済むようになり, プログラマーが毎回並べ替えのコードを書くという無駄な作業から解放されるのです. ちなみに上のページのサンプルコードではスタッフを年齢順にソートしていますが名前順にソートすることもできます. function StaffSortCompareByName(Item1, Item2: Pointer): Integer; begin Result := AnsiCompareText(PStaff(Item1)^.Name, PStaff(Item2)^.Name); end; procedure TForm1.Button2Click(Sender: TObject); begin StaffList.Sort(StaffSortCompareByName); end; ボタン1を押すと年齢順でソートされてボタン2を押すと名前順でソートされます.実質1行で.
193 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 23:27:52 ] 一番身近な関数ポインタは「イベント」ですわ。OnClickとか。
194 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2007/08/14(火) 01:26:03 ] ___________ ∧,,∧ /こんな風にすると ミ,,゚Д゚彡 < おもしろいよ。 ミ つ日 \ 〜ミ,,,,,, ,,ミ  ̄ ̄ type TCheckLineFunction = function(Line: String): Boolean; TStringListFunction = record FStrings: TStrings; constructor Create(Strings: TStrings); procedure DeleteLine(f: TCheckLineFunction); end; constructor TStringListFunction.Create(Strings: TStrings); begin FStrings := Strings; end; procedure TStringListFunction.DeleteLine(f: TCheckLineFunction); var i: Integer; begin for i := FStrings.Count - 1 downto 0 do begin if f(FStrings[i]) then begin FStrings.Delete(i); end; end; end;
195 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2007/08/14(火) 02:14:32 ] ___________ ∧,,∧ / ミ,,゚Д゚彡 < 以下、使い方。 ミ つ日 \ //空行を判定している function CheckEmptyTextLine(Line: String): Boolean; begin if Line=EmptyStr then Result := True else Result := False; end; var StringListFunc: TStringListFunction; begin StringListFunc.Create(OutputMemo.Lines); StringListFunc.DeleteLine(CheckEmptyTextLine); end; 関数側で、Lineの内容を判定して、判定がTrueなら 行削除する処理を行えるわけです。
196 名前:デフォルトの名無しさん [2007/08/14(火) 11:39:22 ] 指定のアプリーションに、アクティブにせずに、キー入力を送りたいのですが、 可能でしょうか? 可能ならば、どのようにやったらよいのでしょうか? 検索単語でもいいので、ご享受ください
197 名前:デフォルトの名無しさん mailto:sage [2007/08/14(火) 11:39:43 ] 最近は1つ質問すると10回答が来たり、自問自答がはやってるのか? いやぁ、夏枯れですねぇ。 よきかな、よきかな・・・
198 名前:デフォルトの名無しさん mailto:sage [2007/08/14(火) 13:58:05 ] >>196 sendmessage
199 名前:デフォルトの名無しさん [2007/08/14(火) 14:51:59 ] >>198 サンクソ。 PostMessageと、SendMessageっぽいですね。 調べてみます。
200 名前:デフォルトの名無しさん [2007/08/14(火) 16:22:30 ] >>194 動かしてみたらなるほどおもしろいと思いました。 ありがとうございました。
201 名前:デフォルトの名無しさん [2007/08/14(火) 16:32:17 ] 最近は1つ質問すると10回答が来たり、自問自答がはやってるのか? いやぁ、夏枯れですねぇ。 よきかな、よきかな・・・
202 名前:デフォルトの名無しさん [2007/08/14(火) 20:44:16 ] こんにちは。 TnTコントロールとOpenXMLにパスを通してコンパイルすると、 以下のように、言われてコンパイルが通りません。 なんとか、通す方法はないでしょうか? [Pascal 致命的エラー] TntClasses.pas(29): F2051 ユニット WideStrings は異なるバージョン WideStrUtils.WideQuotedStr によりコンパイルされています
203 名前:202 [2007/08/14(火) 20:51:30 ] わかりました。 TnTから利用している VCL の WideStrUtils と、 OpenXML内の WideStrUtils がファイル名がかぶっているためでした。 Delphiは、ファイル名が、同じだと不都合でるんですね・・・ 勉強になりました
204 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 00:32:27 ] また自問自答か・・・
205 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 00:45:58 ] 自ら成長する いいことじゃないか
206 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 01:02:33 ] ファイル名が同じだと、dcuファイルの出力先で上書きされるんじゃないのか?
207 名前:デフォルトの名無しさん [2007/08/15(水) 02:45:07 ] Delphi and Programming d.hatena.ne.jp/wkmghn/ 今の時期にDelphi入門記事が・・・ よきことです。
208 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 05:07:50 ] まあ投げっぱなしで二度と来ない奴よりは数千倍マシだな
209 名前:デフォルトの名無しさん [2007/08/15(水) 09:57:37 ] Delphi6だとTLabelのcolorプロパティを設定すれば即座に反映されますが Delphi2007だと設定しても反映されません。 Delphi6で作成したプロジェクトをDelphi2007でコンパイルして実行すると 設定した色になりますが、最初からDelphi2007で作成するとコンパイルしても 色が灰色のままです。 (;_;)
210 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 10:59:21 ] やったじゃん!
211 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 14:23:46 ] >>209 VCL ソースでは property Color nodefault; になってるね。 コードで変えても変わらないわけだ。
212 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 14:26:01 ] ありゃ核爆
213 名前:デフォルトの名無しさん [2007/08/15(水) 18:43:53 ] 各Windowの位置の保存は、みなさん、どう実装していらっしゃるのでしょうか? 既存のコンポーネントを使っておられますか?
214 名前:デフォルトの名無しさん [2007/08/15(水) 18:44:51 ] Torryのページに、そのまんまのカテゴリがありました。 Components > Forms > State savers. Torry's Delphi Pages www.torry.net/pages.php?id=96 その中のこれが、使いやすそうです。 ありがとうございました。 DelphiDabbler.com || Window State Components - Save and restore window size, state and position www.delphidabbler.com/software?id=wdwstate
215 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 20:10:50 ] 自問自答って、あらたな拡販の手口? あほすぎるのは、お笑い系?
216 名前:デフォルトの名無しさん [2007/08/15(水) 20:16:29 ] >>214 のコンポーネントは、けっこう便利そうです。 普通に使う分には、TPJWdwStateをFormにはっつけて、 AutoSaveRestore を Trueにいておけば、 自動的に、終了時にサイズ、位置、WindowStateが .ini に保存され、 起動時に復元されます。 (レジストリ版のコンポーネントもあります) 簡単な用途なら、コードを書く必要がないのが便利です。
217 名前:172 mailto:sage [2007/08/15(水) 20:18:38 ] >>184 なるほど!メッセージを投げるのは思いつきませんでした。 簡単にできて、すっきりしますね 参考になりました。 サンクス。
218 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 20:25:02 ] それをラップしたのがSynchronizeなわけで。 エラー通知に使っちゃいけないという理由はない。
219 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 22:38:48 ] >>216 簡単な用途ならこーどでいいんでないかい?
220 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2007/08/16(木) 00:32:02 ] _____________ ∧,,∧ />>213 さん ミ,,゚Д゚彡 < 漏れは自作 U つ \ @ミ ミ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∪''∪ DelFusa Library - Delphi OpenSource - DelFusa Floor delfusa.main.jp/delfusafloor/opensource/delfusa_library_f.html の、FormPosition.pas
221 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 00:34:23 ] 簡単な、それでいて反復性のあるコードをまとめたのがコンポーネントだし、 どんな用途でも使っていけばいいんでないかい? てか自問自答に恨みでもあるかのごとく噛み付いてるのがいるけど、 ここのスレタイと>>1 を理解できてないようじゃ初心者以下だよな いくら下らないことでも、それに引っかかる人間が今後いるかもしれないし、 解決方法を残しておくことは決して悪くない、むしろいいことだと思う ただ、ここに来る人間は過去ログ読まない人の方が多そうだが…
222 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 00:35:37 ] また自問自答してるよ
223 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 03:36:51 ] 超初心者が枯渇したため、これからこのスレは自問自答を装った Tips スレになりそうだな。www
224 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 03:43:28 ] それはそれで
225 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 05:20:50 ] みじめすぎ
226 名前:悲劇のヒロイン mailto:sage [2007/08/16(木) 05:26:32 ] ありがとう
227 名前:デフォルトの名無しさん [2007/08/16(木) 08:21:26 ] >>VCL ソースでは property Color nodefault; になってるね。 >>コードで変えても変わらないわけだ。 なぜこんな事をしたのでしょうか? Delphi6 と 2007 のソース比べてみましたが、かなり変更されていますね ソースを見ても ThemeServices なんて知らないものがいっぱいだし ヘルプは英語で、お手上げです。 せっかく2007入れたけど Del6 を 入れ直します (;_;)
228 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 08:32:18 ] おめでとう
229 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 08:43:22 ] property Color nodefault; には D7 の段階から変更されているよ 何か勘違いしてないかな?
230 名前:| mailto:sage [2007/08/16(木) 09:01:45 ] LabelのColor property使ったことなかたから気付かなかった。 よくわからんだが、意味のないものになってるの? >>220 サンクスです。 Delフサさんのページあったのですね。 参考にさせてもらいます。
231 名前:デフォルトの名無しさん [2007/08/16(木) 11:10:28 ] >property Color nodefault; には D7 の段階から変更されているよ 何か勘違いしてないかな? そうあって欲しいです。Del7はアンインストールしてしまったので すぐに解りませんが、後で試してみます。 >LabelのColor property使ったことなかたから気付かなかった。 私も今まで色には無頓着だったのですが、今回のシステムは先行したVB のプログラムで色を豊富に使っているため、絶対使わないと駄目なんです。 まさかこんなところではまるとは (@_@)
232 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 11:24:21 ] はまってごらんよ、あ〜の〜角を〜
233 名前:DEKO ◆v8todlW3ks mailto:sage [2007/08/16(木) 13:18:10 ] >>231 TransparentプロパティがTrueになってませんか? このプロパティはD2007からデフォルトでTrueになっています。
234 名前:デフォルトの名無しさん [2007/08/16(木) 15:07:34 ] >TransparentプロパティがTrueになってませんか? >このプロパティはD2007からデフォルトでTrueになっています。 おっしゃるとおりでした。 Del6はデフォルトでFalseでしたが、Del2007で開くとTrueに変化していました。 困ったことに、この状態でコンパイルすると False 状態で実行されました。 Del2007で一度プロパティを変化させてから保管すれば正しい状態に戻ります。 色々と調べていただきありがとうございました。
235 名前:デフォルトの名無しさん [2007/08/16(木) 21:13:57 ] メニュー(A)から、開発中のプロジェクトのプログラム(B)を 起動するようなアプリケーションを作成しています。 起動するアプリケーション(B)を、メニュー(A)を起動した状態で実行したいため、 オプションの「ホストアプリケーションの指定」で、 メニュー(A)のパスを入れたのですが、 実行しても、指定したメニュー(A)ではなく、 プロジェクトのアプリケーション自体(B)が立ち上がってしまいます。 何か他にする設定がありますでしょうか? 環境は、BDS2006 Delphi win32です。
236 名前:デフォルトの名無しさん [2007/08/16(木) 21:35:36 ] 他のDelphi製アプリの位置やサイズを得たいのですが、 良い方法はありませんでしょうか? 今は、EXEのファイル名から、Windowハンドルを取得するところまで できたのですが、 GetWindowRectで、Windowハンドルを渡しても、(640, 512, 640, 512) みたいな予期しない値が帰ってきます。 たぶん、Delphi特有のTApplicationの座標が帰ってきていると思うのですが、 ここから、メインフォームのハンドルを得る方法はありませんでしょうか?
237 名前:236 [2007/08/16(木) 21:50:23 ] AppHandleにTApplicationのHandleが入っているとして、 FormHandle := FindWindowEx(AppHandle, 0, PChar('TForm1'), nil); としたのですが、FormHandleは 0 が返ってきました。
238 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 22:00:14 ] FindWindowExの理解不足。 所有されているウィンドウと子ウィンドウの違いが解っていないのかもしれない。
239 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 23:38:31 ] Vista で標準となった? ALT 押したらメインメニューが出てくるのってどうやって実装するのですか? マウスを上部に持って行ったら…とかなら、MainMenu:=nil で切り替えられると思うのですが、 キーボード主体で行いたいので。
240 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 00:06:40 ] >>236 すなおにFindWindow('TForm', 'HogeHoge')でよいんでないの。 もしくはTApplicationのHandleを使って、EnumWindowsとか。
241 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 01:10:04 ] 2006→7?
242 名前:236 [2007/08/17(金) 01:29:51 ] 第6章 ウィンドウの階層について homepage2.nifty.com/Mr_XRAY/Halbow/VCL06.html これ見て、 GetWindow(hParent,GW_CHILD) でいけるかと思いましたが、ダメでした。 Delphi2006のVCLと、ページの内容のバージョンのVCLとは違うのでしょうか? >>238 FindWindowExやGetWindowで取得できないということは、 子ウインドウではないのですね・・・。 >>240 単純なFindWindowだと、識別が難しいのです TApplicationのHandleを使ったEnumWindow試してみるす
243 名前:236 [2007/08/17(金) 01:38:10 ] なんという勘違い/(^o^)\ 第6章 ウィンドウの階層について homepage2.nifty.com/Mr_XRAY/Halbow/VCL06.html このページよく見たら、わかてきた気がします。 > FindWindowExやGetWindowで取得できないということは、 > 子ウインドウではないのですね・・・。 TApplicationに対して、TFormは、子ウインドウではなく、 所有するウインドウなんですね。 とすると、TApplicationのHandleに対して、 EnumThreadWindowsして、 GetWindow(Handle,GW_OWNER)が、TApplicationのHandleかどうか調べればいいわけですね。 上のページで言えば、EnumDirectOwnedWindowsですね。 明日試してみます
244 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2007/08/17(金) 01:48:28 ] >>236-237 さん DelFusa Library - Delphi OpenSource - DelFusa Floor delfusa.main.jp/delfusafloor/opensource/delfusa_library_f.html ∧,,∧ ミ,,゚Д゚彡 ,ミ' ミ 〜OUUつ ここのEnumWinUnit.pasでWindow列挙も出来るし 得たハンドルをTWinInfoのCreateでハンドルを入れたら 様々な情報をプロパティから読めるようにしておいてるよ。 VCLのメインフォームを得るためには EnumWindows(@EnumWndProc, 0); {←Topレベルウィンドウなので0を指定} これとか function EnumWndProc(h: HWND; l: Integer): BOOL; stdcall; これを使っていて EnumChildWindows(h, @EnumChildWndProc, l+1); これは使ってない。
245 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2007/08/17(金) 01:49:24 ] ∧,,∧ 深夜なのに ミ,,゚Д゚彡 気温が暑いっすね〜 ,ミ' ミ 〜OUUつ タスクマネージャーのアプリケーションタブ互換は VisibleTrue/Owner有り/タイトル有り TApplication系のメインを見つける場合は VisibleTrue/Owner無し/タイトル有りで OwnerがTApplicationのものを列挙で見つけるのが いいと思うんだ。 例えばホットゾヌの場合 TApplicationにTHotzonuWindowがぶらさがっているのは TApplicationのハンドルとTHotzonuWindowのOwnerを調べると 一致するから、わかるよ。
246 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2007/08/17(金) 01:58:53 ] ♪ ∧,,∧ ♪ ミ,,゚Д゚彡 ♪ ミつ[|lllll]). 〜ミ ミ ∪''∪ 勉強すると楽しいよね。がんばってください。 とりあえず、D2007ではTApplicationウィンドウは廃止されますた。 dprの中身が begin Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TMainForm, MainForm); Application.Run; end. このようになっていて .MainFormOnTaskbar:=Trueとなると VCL、TApplication式ではなくVista対応アプリになります。 ※Win2Kで、今確認したら タスクマネージャーのアプリケーションタブに表示されないという バグがありますが....orz....
247 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 03:57:44 ] ListViewのOwnerDataをTrueにすると CheckboxesをTrueにしてもチェックボックスは表示されません 自分でチェックボックスを描画するんですか?><
248 名前:236 [2007/08/17(金) 04:25:44 ] >>244-245 EnumWindowsで列挙して、OwnerがTApplicationのハンドルと比較 が確実つーことですか。 実験してみるす 公開されているユニットも、参考にさせていただきます。 >>246 マジスカ
249 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 09:39:04 ] アジャイル、アジャイルってコンパイル速度のめっちゃ速いDelphiじゃすでに当たり前なんだよ
250 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 19:03:18 ] 導入したい超初心者ですが、 コードギアのユーザ登録のZip/Postal code ってなんですか?お願いします。
251 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 19:06:22 ] 中学生からやりなおせ
252 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 19:50:44 ] 郵便番号
253 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 20:35:40 ] TStringListの各行を下記のように 個別のstringデータに入れたいのでが、 stringA:=List.strings[0]; stringB:=List.strings[1]; stringC:=List.strings[2]; stringD:=List.strings[3]; TStringListの最大行数(せいぜい10行)は決まっているのですが、 実際は1行だけなのか、最大行数まであるのかは分かりません。 こういう場合どうしたらスムーズですかね? ifで1行の場合、2行の場合ってやっていくしかないでしょうか?
254 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 20:41:15 ] ほう
255 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 20:49:05 ] stringlist.count case文 美しくないな
256 名前:ななしへたぐらま ◆XcB18Bks.Y mailto:sage [2007/08/17(金) 22:14:01 ] >>245 どうでもよいことですが「気温が暑い」って言い方は正しくないです.「(やけに)気温が高い」もしくは単に「暑い」でおけ. わざとならごめんなさい. >>247 データを自前で持つようにするとチェックボックスは使えなくなるようです. VCLのバグなのかWindows側の問題なのかいまいちよく分かりません. >>253 あなたが『List.Strings[]に文字列を代入していないところを読み出そうとしたら空文字列を返すようにしたい』 …と考えていると決めつけてレスします. { Index がStrings.Count以上なら空の文字列を返す.0〜(Index - 1)ならStrings[Index]を返す. } function GetString(Strings: TStrings; Index: integer): string): string; begin if Index < Strings.Count then Result := Strings.Strings[Index] else Result := ''; end; で,stringA := GetString(List.strings[0]) みたいに使う. でも「何かを鍵にして複数の文字列を格納し,その鍵を使って文字列を取り出す」ということをしたいのでしたら Valuesプロパティを使って文字列を鍵にして文字列を格納したり取り出したりする方が良いかもしれません. procedure TForm1.Button1Click(Sender: TObject); begin Edit_Value.Text := ListBox1.Items.Values[Edit_Key.Text]; end; procedure TForm1.Button2Click(Sender: TObject); begin ListBox1.Items.Values[Edit_Key.Text] := Edit_Value.Text; end;
257 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2007/08/17(金) 23:30:05 ] ,,,,,,,,,,,,,,,∧,,∧ /もちろん 〜′,,,,,,,,,,ミ,,゚Д゚彡< わざとやがな UU"""" U ⊃ \ いやあ、ご無沙汰っす。元気してます〜? 暑いっすねー。
258 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 00:22:00 ] 初心者スレを荒らすなよ・・・
259 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 01:57:00 ] 文字列とか動的配列は参照カウントとか使ってるのに、 なんでクラスのインスタンスはわざわざFreeしなくちゃならず、 しかもC++みたいにスタックに置いたりできないのですか?
260 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 02:46:29 ] 文字列や動的配列はCopyOnWriteの機能が特に有効に使える型なので標準で実装されているが、 クラスは必ずしもそうとはいえないので各々のクラスの実装に任せている。 スタックに置けないのは、メモリの確保をクラスに委譲する設計を採用している為。
261 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 04:28:45 ] 理由を聞いてるんじゃないでしょ。 「できません」が回答。
262 名前:デフォルトの名無しさん [2007/08/18(土) 04:32:27 ] 誰か2007洒落にください
263 名前:259 mailto:sage [2007/08/18(土) 04:43:25 ] >>261 理由を聞いているんですが、何か?
264 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 05:05:07 ] >>261 文字列とか動的配列は参照カウントとか使ってるのに、 なんでクラスのインスタンスはわざわざFreeしなくちゃならず、 ~~~~~~ しかもC++みたいにスタックに置いたりできないのですか?
265 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 06:10:51 ] >文字列とか動的配列は参照カウント 文字列や動的配列は変数の寿命をそのままメモリ確保の寿命と出来る。 なお、俺がソースを見た範囲では参照カウントは使われていないようだ。 代入時に中身をコピーしてるように見える クラスの場合、windowsハンドルとかのリソースを持ってる場合があり、 開放時期を自分でコントロールしたい場合も出てくるのと、 自動開放するためには、その参照の代入で 複数の変数が参照してる場合もあり、 参照カウンタなどの管理機構が必要になる。 なおインターフェース型では参照型でメモリ開放管理が出来るようになっている。 >しかもC++みたいにスタックに置いたりできないのですか? これは単純に面倒だったからだろう。 その代わりにC++のようにドットと-> を混在させなくてすむ。 try finally の構文もあるし、ユニットという単位を持っていて、ユニット単位にinitialization や finalizationも書けるので、メモリスコープへの出入りで自動的に コンストラクタデストラクタを呼ぶような仕掛けを作る必要は無かったのだろう
266 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 06:25:45 ] よくもまぁ適当なことが書けるもんだなぁ・・・
267 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 06:26:48 ] >>265 >代入時に中身をコピーしてるように見える え?StringってCopy on Write じゃないの?
268 名前:デフォルトの名無しさん [2007/08/18(土) 06:30:05 ] StringはCopy on write 動的配列は、普通の参照カウンタ
269 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 06:35:37 ] 実装が古い だけでしょ。
270 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 06:40:36 ] Stringと動的配列はクラスベースにして 'foo'.UpperCase // = 'FOO' [1, 4, 3].Add(6).Sort // = [1, 3, 4, 6] とかできるようにしてもらいたいね。
271 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 07:43:28 ] >>269 いやC++のほうが古いよ。 C++の二の舞にならぬようこの方法になった。
272 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 08:18:00 ] 知ったか乙
273 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 08:42:09 ] 文字列の構造は StrRec = packed record allocSiz: Longint; refCnt: Longint; length: Longint; end; この後に文字列が続いている。 基本的に、メモリ管理は参照カウンタ方式 文字列を代入すると system.pas の _LStrLAsg _LStrAsg というアセンブラ関数が呼ばれるので確認よろしく
274 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 08:54:15 ] 知ったか乙
275 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 12:05:55 ] 長い文字列は、Delphi2 から、Interface 型は Delphi3 から、動的配列は Delphi4 か 5 からですね。だから、スマートポインタ関係はここ10年で 実装された。クラス実装を可能にしたのは、Delphi 以前の直前のバージョン。 Delphi は、Pascal の文法は拡張してきたが、変更はしていないので、 古い実装はそのままなんだよ。それが、つぎはぎ感を感じさせるが、一方、 あるていど使いやすさにも通じている。OOPL として不完全なのも同じ。
276 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 16:35:40 ] >>273 allocSizの部分ってあったっけ? その後はあったと思うけど
277 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 18:27:38 ] >>275 知ったか乙。
278 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 19:27:39 ] >>277 知らない乙
279 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 19:36:05 ] しったかならまだいいが、おすた化しないようにな genpin.com/
280 名前:253 mailto:sage [2007/08/18(土) 22:19:23 ] >>256 ありがとうございます。激しく感激。
281 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 22:45:10 ] var S : TStringList; begin while True do S:=TStringList.Create; end;
282 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 23:19:59 ] AnsiIndexTextって言うのを使いたいんですが、 2つ目のパラメータの意味というか設定の仕方が 分かりません。 string型の変数を渡してもだめって言うのは分かったのですが、 じゃあどうすればいいのかがさっぱりです。
283 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 23:32:05 ] >>281 こんな感じに使う。 AnsiIndexStr('うう', ['ああ', 'ううい', 'うう', 'ええ']); 詳しくはヘルプの「オープン配列コンストラクタ」を参照のこと。
284 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 00:00:59 ] >>280 他の奴にも礼言ったれよ死ね
285 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 08:19:09 ] つまりはつぎはぎのないC#が最高なのです。 Pascalは糞です。いますぐやめるべきです。
286 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 09:01:12 ] まあPascalが廃れC#が主流になったとしても VBしか使えない人がが主役になることはない訳だが。
287 名前:デフォルトの名無しさん mailto:SAGE [2007/08/19(日) 14:19:13 ] >>283 THX. よくわかりました。
288 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 21:26:42 ] while True do ShowMessage('あひゃ');
289 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 22:41:16 ] >>285 おまいは鮮人か?
290 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 22:48:11 ] そっとしておいてあげてください。
291 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 22:56:48 ] var i : integer; S : TStringList; begin i:=0; S := TStringList.Create; try while True do begin S.SaveToFile(IntToStr(i)); inc(i); end; finally S.Free; end; end;
292 名前:デフォルトの名無しさん [2007/08/20(月) 09:47:50 ] ある文字列の中に0〜9、a〜fの文字が使われていればTrue、それ以外の文字 が使われている場合はFalseを入れるプログラムを作りたいのです。 どうかご教授よろしくお願いします。
293 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 09:50:34 ] function have09af(s: string): boolean; var i: integer; begin for i := 1 to length(s) do if s[i] in ['0'..'9', 'a'..'f', 'A'..'F'] then begin result := true; exit; end; result := false; end;
294 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 09:56:31 ] >>292 一つでも 0..9 a..f があれば真なら >>293 さんの通り 16進数の文字列だけで構成されているかどうかなら var p: PChar; p:=PChar(s); while p^ in ['0'..'9', 'A'..'F', 'a'..'f'] do inc(p); このあと、 p^ = #0 がtrue falseか
295 名前:デフォルトの名無しさん [2007/08/20(月) 10:00:01 ] >>293 ,>>294 御二方ともありがとうございます。 早速試してみますね。
296 名前:デフォルトの名無しさん [2007/08/20(月) 10:46:19 ] 無事にできました。 ありがとうございます。 更に文字列がすべて空白の場合はTrue、 それ以外の空白(1文字空白等)はFalseという条件をつけ足そうとしました。 begin for i := 1 to length(s) do begin if s[i] in ['0'..'9', 'a'..'f', 'A'..'F'] then begin if s = '' then begin result := true; exit; end; end; result := false; end; end; 上記のようなコードを書いたのですが、上手くいきません。 重ね重ね申し訳ありませんが、ご教授お願いします。
297 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 12:44:14 ] 当方見習いエスパーなので、読み取れませんが、 全部spcかどうかは function spcCheck(s: string): boolean; var p: PChar; begin p:=PChar(s); while p^ in [' ', #7 ] do inc(p); result := p^ = #0; end; のような感じで
298 名前:デフォルトの名無しさん [2007/08/20(月) 19:02:33 ] try raise EMyError.Create('foo'); except on E: EMyError do self.error := E; // インスタンスを開放せずにerrorにセット。後でfreeなんてことは出来ませんか? end;
299 名前:デフォルトの名無しさん [2007/08/20(月) 19:13:23 ] こんにちは。 Delphi7で、Excelに書き込まれた値を読むプログラムを作成します。 ユーザー側のExcelのバージョンが統一されていないため、 バージョン依存しないようにプログラムを作成したいのです。 VBだと、ExcelのDLLに対する参照設定を行わずに dim objExcel as Object Set objExcel = CreateObject("Excel.Application") というようにできるのですが、 Delphiではどのように行えばよいのかお知恵を拝借させてください。 "Delphi レイトバインディング"などで検索したのですが、 見つけることができませんでした。 お力をお貸しくださいませ。 どうぞよろしくお願いします。
300 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 20:17:03 ] >>299 Delphi Excel CreateOleObject これでぐぐれば色々でてくるから参考に汁
301 名前:デフォルトの名無しさん [2007/08/20(月) 20:25:39 ] >>300 参考になるサイトがわんさか出てきました。 これでいけそうです♪ ありがとうございます!!
302 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 22:10:17 ] >>298 raise した分は勝手に破棄されるので_ 同じ例外オブジェクトをもう一度 raise 無しで作ればおk
303 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2007/08/20(月) 22:22:48 ] >>292-296 _______________ ∧.,,∧ /そこで、前にも紹介した ミ.*゚Д゚彡< CheckStrInTableですよ。 ミ つ目(ミ . \ 〜ミ,,O,,,,,,つ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ いつでもどこでも、一度書いていれば再利用できて汎用的って素敵。ウットリ delfusa.main.jp/delfusafloor/opensource/delfusalibrary/20070708185145/StringUnit/StringUnitLight.pas type TInTable = (itUnknown, itAllInclude, itAllExclude, itPartInclude); function CheckStrInTable(const Str, Table: WideString): TInTable; 文字がテーブルに指定したもので 全部含まれている、全部含まれていない、一部含まれている を判断できます。
304 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 22:25:46 ] ∧.,,∧ ミ.*゚Д゚彡 ミ つ目(ミ . 〜ミ,,O,,,,,,つ
305 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2007/08/20(月) 22:34:38 ] _____________ ∧,,∧ / ミ,,゚Д゚彡< ところでですね。 'ミ つ旦(ミ~~ \___________ ⊂ミ",, ,,ミ つ delphi-fanさんところで、listviewの項目並び替え テクがのっていますが あたしは、メーラーでよくみかける listviewヘッダの△▽マークを実装したいのですよ。 実装方法はわかっているんですが これが、コンポーネント化誰かしませんか... 漏れ、もうコンポーネント化するとか、って 相当わすれちゃったので、誰か教えてくらさい。 Delphiでlistviewヘッダの△▽マークを実装方法は 日本語で非常に情報が少ないですが、この辺。 ListView?の?カラムクリックによるソート hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200608/06080023.txt delfusa.main.jp/delfusafloor/archive/www.nifty.ne.jp_forum_fdelphi/samples/01281.html
306 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 22:37:29 ] ∧,,∧ ミ,,゚Д゚彡 'ミ つ旦(ミ~~ ⊂ミ",, ,,ミ つ
307 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 22:46:59 ] >>303 これはひどい
308 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 22:48:52 ] >>307 これはひどい
309 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2007/08/20(月) 23:34:40 ] ∧,,∧___ /最近、よーやく /ミ*゚Д゚ミ/\< テストコードを /| ̄∪∪ ̄|\/ \同一ユニットに |____|/ いれるべきではないかなと ,,,,∪∪,,, ,, きがちいた。
310 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 03:27:38 ] >>323 つまりどーすんの?
311 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 04:10:32 ] >>323 に期待
312 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 22:45:47 ] >305 ListViewのソートの対象カラムに方向の矢印を出す方法の別解。 予めFBitmapArrowDnとFBitmapArrowUpに下向き、上向きのビットマップを用意しておく。で、 var Index: Integer; Hdr: HWND; HdItem: THDItem; begin Hdr := Listview_GetHeader(ListView1.Handle); for Index := 0 to ListView1.Columns.Count - 1 do begin FillChar(HdItem,sizeof(HdItem),0); HdItem.Mask := HDI_FORMAT; Header_GetItem(Hdr,ListView1.Columns.Items[Index].Index,HdItem); if (矢印を出すカラムだったら) then begin if (昇順だったら) then begin HdItem.hbm := FBitmapArrowDn.Handle; end else begin HdItem.hbm := FBitmapArrowUp.Handle; end; HdItem.Mask := HDI_FORMAT or HDI_BITMAP; HdItem.fmt := HdItem.fmt or HDF_BITMAP_ON_RIGHT or HDF_BITMAP; end else begin
313 名前:312 mailto:sage [2007/08/21(火) 22:46:50 ] HdItem.Mask := HDI_FORMAT; HdItem.fmt := HdItem.fmt and not(HDF_BITMAP_ON_RIGHT or HDF_BITMAP); end; Header_SetItem(Hdr,ListView1.Columns.Items[Index].Index,HdItem); end; end; こんな感じでやってます。コンポーネント化?うぅむ…。
314 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 00:02:43 ] うぅむ
315 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 00:16:25 ] procedure ahya; begin ahya; end;
316 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 00:26:31 ] うぅむ…。
317 名前:312 mailto:sage [2007/08/22(水) 00:43:17 ] そういやこれのネタ元どこだっけな?確か海外だったような希ガス。
318 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 16:55:31 ] TComboBoxでTMemoのModifiedみたいに、値が変更されたのかを知るにはどうすればいいのですか?
319 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 17:03:03 ] うぅむ…。
320 名前:haru [2007/08/22(水) 17:36:28 ] はじめましてよろしくお願いします。 GetWindowやFindWindowを使って、ウインドウハンドルを取得し、 とあるソフトを自動的に操作したいのですが、 そのソフトが、確認の際にダイアログを表示してきます (delphiでいうMessageDlgを使用している感じ) その際、delphiのソフトは待ち状態になってしまうのです。 そのダイアログを消さないと操作が続かないのですが、 delphiのソフトからはどうにもこうにもできなくて困っています。 何かよい方法をご存知の方はいらっしゃいませんか?
321 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 17:42:23 ] ダイアログも自動的に操作すればいいじゃん
322 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 21:54:50 ] >>323 に期待
323 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:07:59 ] テスト専用のプロジェクトを作るんでしょ。 >>320 OKボタンがウィンドウなら、OKボタンに対してWM_LBUTTONDOWNを送る。
324 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 07:03:08 ] >>320 SendMessage を使って操作したら、その操作の中で相手がダイアログを出すから処理が帰って来ないって事だよね? ならPostMessageに変更したらどう?
325 名前:haru [2007/08/23(木) 09:40:41 ] 早速のお返事ありがとうございます。 >>321 さん ダイアログが出た瞬間、delphiのソフトは待ち状態になるので ウィンドウが取得できないのです。 >>323 そのダイアログのウィンドウハンドルが取得できなくて悩んでいます。 >>324 そのとおりです。 PostMessageについて調べてみました。 確かにこれを使えばできそうな気がしますが、 その前に、出てきたダイアログのウィンドウハンドルが取得できません。 これは元のウィンドウから見てハンドルが決まってたりするんでしょうか? ダイアログが出ていないときに、 ウィンドウハンドルやその中のボタンのハンドルは決まっているのでしょうか? (ダイアログが出てしまうとdelphiソフトは何も調べられないので。。) 再度よろしくお願いします。
326 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 09:53:27 ] >>325 PostMessage に変更したら、処理は即座に帰って来るので その後開かれるダイアログを検索する事は出来ると思うよ。 Delphiのbinフォルダに WS32.exe があるからコレをまず眺めてみたら?
327 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 14:25:42 ] TListの中身がFreeされているか判断したいとき 予めnilを入れておく以外の方法ってありますか?
328 名前:haru [2007/08/23(木) 14:54:52 ] >>326 解決しました。 ありがとうございました。 またお世話になるかもしれないので、よろしくお願いします!!
329 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 15:41:34 ] >>327 難しく考えず、ポインタも所詮数値なんだから 数値の正しさとは何か、を追求すればおのずと答えが出るじゃろ
330 名前:デフォルトの名無しさん [2007/08/23(木) 15:45:23 ] コンソールアプリケーションを用いて、 1 4 9 16 2 3 8 15 5 6 7 14 10 11 12 13 17 18 … と書くプログラムを作りたいのですが、よく分かりません。 分かる方、教えてください。
331 名前:デフォルトの名無しさん [2007/08/23(木) 15:47:15 ] すいません。 1 4 9 16 2 3 8 15 5 6 7 14 10 11 12 13 … です。
332 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 16:22:16 ] >>331 Pascalの宿題は俺にやらせろ!!Part2 pc11.2ch.net/test/read.cgi/tech/1136994325/
333 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 17:14:04 ] begin Writeln('1 4 9 16'); Writeln('2 3 8 15'); Writeln('5 6 7 14'); Writeln('10 11 12 13'); Writeln('…'); end. じゃだめなの?
334 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 17:54:48 ] >>329 kwsk freeしてもポインタはそのままなので判断できないのですが。
335 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 17:55:18 ] 規則性のあるものにソレやっちゃったらダメだろうw
336 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 18:18:18 ] >>327 コミュニケーション能力の欠如した輩がなにやらグダグダ言ってるようだが 一言で言うと「ない」。
337 名前:ななしへたぐらま ◆XcB18Bks.Y mailto:sage [2007/08/23(木) 18:35:02 ] >>327 ないと思います. ポインタの値(場所,アドレス)がnilではない場合, その値自体からそれが指している場所が開放されたかどうかは知ることはできませんし ポインタが指している場所のデータを実際に読み書きして試すこともできません. 結論として領域を解放したあとにnilを入れることになると思いますが 開放する領域がオブジェクト以外ならFreeMem(p)の代わりにReallocMem(p, 0)とすると 領域の解放とnilの代入を一度にできます. >>333 計算して値を出せという宿題なのでしょう.
338 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 20:29:37 ] お前ら頭いいな 330の言葉足らずな質問だけでは俺も333としか思わかった 一種のエスパーだよ
339 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 20:35:25 ] >>329 が言いたかったのは >>336-337 なんでしょ。つーかポインタって嫌いなんだけど好き
340 名前:329 mailto:sage [2007/08/23(木) 20:40:10 ] 違う
341 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 21:59:10 ] 何が
342 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 22:10:09 ] 日本語をおk
343 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 22:50:18 ] 日本語を?
344 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 23:18:38 ] 日本語が
345 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 01:43:12 ] >>327 Freeしたとき、Deleteもしちゃえ。 そうすれば、ListになければFreeされてると判断できる。 Createもされてないけどね!
346 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 01:46:59 ] このスレならどんな質問にも答えてくれるよ pc11.2ch.net/test/read.cgi/avi/1102121520/
347 名前:デフォルトの名無しさん [2007/08/24(金) 09:53:27 ] Turbo Delphi で正規表現って、使えますか?
348 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 09:55:03 ] 使えません www.google.co.jp/search?q=delphi+regexp&sourceid=navclient-ff&ie=UTF-8&rlz=1B3GGGL_jaJP229JP231
349 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 10:03:51 ] 使えます
350 名前:デフォルトの名無しさん [2007/08/24(金) 10:32:37 ] Turbo Delphi 無料の で正規表現の使い方を教えてください。
351 名前:自殺志願者 ◆bBXkw6pgOA mailto:sage [2007/08/24(金) 10:58:23 ] Delphi for PHPの話題もココでいいでつか?
352 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 11:02:55 ] 消えろカス
353 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 11:55:38 ] >>351 初心者用の質問スレはないからここでいいんじゃね? あってもどうせすぐ落ちそうだし。 でも、答えられる人がいるかは不明。 PHPに関する質問なら、PHPスレのがいいかもね。 総合的な話題なら、オッチャの方でも時々出てるよ。
354 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 12:09:12 ] オッチャ って何? とgoogle 検索したら・・・・なるほど、オッチャだけで成立してるんだな
355 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 12:15:48 ] (ノo`)アチャー (ノO`)アチャー (ノ∇`)アチャー (ノ▽`)アチャー (ノ∀`)アチャー (ノ◇`)アチャー アチャー(ノo`;) アチャー(ノO`;) アチャー(ノ∇`;) アチャー(ノ▽`;) アチャー(ノ∀`;) アチャー(ノ◇`;) アチャ・・・(ノ_< ;) (・o+)アチャー (+。+)あちゃー (*_*)アチャ (^_・;)あちゃー (;´o`)ゞアチャー!! (;´O`)ゞアチャー!! (;´∇`)ゞアチャー!! (;´▽`)ゞアチャー!! (;´∀`)ゞアチャー!! (;´◇`)ゞアチャー!! Σ(´o`;|||)アチャァ〜ッ Σ(´O`;|||)アチャァ〜ッ Σ(´∇`;|||)アチャァ〜ッ Σ(´▽`;|||)アチャァ〜ッ Σ(´∀`;|||)アチャァ〜ッ Σ(´◇`;|||)アチャァ〜ッ (≧o≦;)アチャー (≧O≦;)アチャー (≧∇≦;)アチャー (≧▽≦;)アチャー (≧∀≦;)アチャー (≧◇≦;)アチャー (/≧o≦\)アチャー!! (/≧O≦\)アチャー!! (/≧∇≦\)アチャー!! (/≧▽≦\)アチャー!! (/≧∀≦\)アチャー!! (/≧◇≦\)アチャー!! (/o≦\)アチャー! (/O≦\)アチャー! (/∇≦\)アチャー! (/▽≦\)アチャー! (/∀≦\)アチャー! (/◇≦\)アチャー! (/o≦\)アチャー!ミテランナイ!(/O≦\)アチャー!ミテランナイ!(/∇≦\)アチャー!ミテランナイ! (/▽≦\)アチャー!ミテランナイ!(/∀≦\)アチャー!ミテランナイ!(/◇≦\)アチャー!ミテランナイ! アチャ〜(/o\) アチャ〜(/O\)アチャ〜(/∇\) アチャ〜(/▽\)アチャ〜(/∀\) アチャ〜(/◇\) (/・_・\)アチャー・・ (→←)アチャ (→o←;;; アチャ (→o←)ゞあちゃー q(→-←q) q(→0←)p (p→-←)pアチャー
356 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2007/08/24(金) 17:41:33 ] _____________ ,∧,,∧∩ /せんせい、 ミ,,゚Д゚彡< しつもんでーす __ミ ミ ミ \ \,,∪  ̄ ̄ ̄\  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ||ヽ|| ̄ ̄ ̄ ̄||" ...|| ̄ ̄ ̄ ̄|| ファイルパスって A:\とか C:\とか \\マシン名\ とかじゃないですか。 AA:\ とかっていう可能性もあるんですか? それとも、アルファベット1文字限定? ネットワークドライブ接続をみると、アルファベット1文字のほうかなと 思っているんですが。
357 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 17:46:16 ] >356 スレ違いだが、Windows上では2文字のドライブレターは存在しないと思う。
358 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 23:20:22 ] 誰もWindowsなんて言ってない
359 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 23:28:27 ] じゃあ>356は何のOSの話してるんだ?
360 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 23:31:13 ] ひ・み・つ♪
361 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2007/08/25(土) 01:07:59 ] _______________ ∧.,,∧ /ああ、そうか。 ミ.*゚Д゚彡< ミ つ目(ミ . \ 〜ミ,,O,,,,,,つ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 自分の関数で、ファイルパスか否かを判断する関数を作ろうとしてて 一文字目アルファベット 二文字目: 三文字目\ で、\が連続して追加されてなければ ファイルパスかな、って判断。 している仕様でよいかな、 っておもう思考して質問してたから すれ違いとか、全然わかんなかったよ。 delfusa.main.jp/delfusafloor/opensource/delfusalibrary/20070708185145/FileNameUnit/FileNameUnit.pas これで、CheckDrivePathやCheckUNCPathはOKってことだね。 よかったよかった。 ありがとうございます。
362 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 01:14:20 ] ∧.,,∧ ミ.*゚Д゚彡 ミ つ目(ミ 〜ミ,,O,,,,,,つ
363 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 09:26:27 ] 印刷プレビューを作ってるんですが、 例えばモノクロプリンタで黒以外の色で線を引くと、当然グレーなどで印刷されますよね。 それを画面上でプレビューするにはどうすればいいでしょうか? ようするに線やフォントのColorプロパティをグレイスケールに変換したいのです。
364 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 09:48:28 ] モノクロプリンタで黒以外の色で線を引くと 1、グレーで印刷される・ 2、消えたり、黒だったりする 場合の2通りありますね いったん TBitmapを作成して そのTCanvasにいったん描画すればいいんじゃないの? 1の場合は256色グレースケールのパレットで 2の場合はモノクロで
365 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 10:02:13 ] QuickRep
366 名前:363 mailto:sage [2007/08/25(土) 15:06:29 ] YUV変換でググったらありました。
367 名前:デフォルトの名無しさん [2007/08/25(土) 20:20:47 ] 初心者も初心者でおはずかしいのですが、 0から始めるとしたら、Turbo ExplorerとDelphi6 Personal どっちを選んだほうがいいのかな? さらにTurbo Explorerを選ぶとするなら、DLページに Turbo C++、Turbo Delphi、Turbo Delphi for .NET、Turbo C#から どれか選べとありますが、どれにしたらいいのか…。 .NET って.Net Framework対応のソフトを作るとかそういう為? 利点さえよくわかってないので…ごく普通に配布用ゲームとか 自分用プログラムが作りたいだけなんです。
368 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 20:27:19 ] DBが使いたいならTurbo。そうじゃなきゃ6でいい。
369 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 20:30:47 ] >>367 6はライセンス取得できない。サイズやメモリ消費量の小さいバイナリが作れるTurboにしとけ
370 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 20:38:58 ] >>368 DB自体がよくわかって(ry 言葉自体は聞くんですが… そっから始めないとというレベルで。 でもないよりはあったほうがいいのかな? >>369 ライセンスキー?は現在取得できないとかまとめWikiに ありましたがそれのことでしょうか? お二人ともが推薦してくれてるのでおとなしく Turbo Explorerにしてみます。>>366 の4つのTurboでは 無印「Turbo Delphi」を選んだほうが無難ですか?
371 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 20:39:26 ] .NET が必要でヘルプが糞でコンポインストールできないTurboにしとけ
372 名前:367=370 mailto:sage [2007/08/25(土) 20:41:58 ] グダグダですいません >>370 ×>>366 → ○>>367 >>371 無印Turboは糞なんすか?
373 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 20:42:25 ] デルファイアンのみなさまこんにちは、毎年お騒がせしています夏厨です。 今日はこのページで配布されているマウスジェスチャーコンポーネントについて 質問です。 ⇒ ttp://hp.vector.co.jp/authors/VA024591/ このページの一番下の 「マウスジェスチャー(右クリックでグリグリ)」 のリンクから ダウンロード出来ます mousegesture.zip 内に収録されている Project1.dpr ですが 何故かエラーが出てコンパイル出来ません。 これを出来るように修正出来る方、良かったらご教授下さいませ。 エラーの内容は 「クラスTMouseGestureが見つかりません」 というものです。 gMouseGesture.pas にはこのクラスが定義されているのにおかしいです。 Unit1の uses節 には gMouseGesture が正しく追加されています。 一体何がいけないのでしょうか、Delphi MLやGoogleさんに聞いても教えて もらえませんでした、よろしくお願い致し候。
374 名前:373 mailto:sage [2007/08/25(土) 20:46:18 ] 環境は Delphi6 personal、RTL3までの全てのアップデートを適用済みでおじゃる。 OSはWindowsXP home SP2でおじゃる。
375 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 20:50:51 ] コンポーネントとしてインストールしていないから。
376 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 20:51:48 ] あ、ゴメン。 インスコしてなかったらIDEがフォームを表示する時にエラーになるわ。
377 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 20:57:24 ] いやインストールしてないだけだろ
378 名前:373 mailto:sage [2007/08/25(土) 21:00:07 ] >>375-377 なるほど、そういうことでおじゃるか、今から試してみるでおじゃる。 ありがたき幸せ。
379 名前:373 mailto:sage [2007/08/25(土) 21:04:59 ] 動いたでおじゃる!! ありがとうごじゃる! おまんら神!
380 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 21:06:58 ] 偉くレベルの低い神だな
381 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 21:33:07 ] >サイズやメモリ消費量の小さいバイナリが作れるTurbo kwsk
382 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 21:50:28 ] 自分で試してみればいいじゃん
383 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 21:58:30 ] なんとか長所をさがした末の苦しいほめ言葉wwwwww
384 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 22:13:01 ] ウザイな。自分が使ってる物が一番だと思ってるんだろうね。
385 名前:デフォルトの名無しさん [2007/08/25(土) 22:15:27 ] >>383 長所のない過去の産物に縋り付いてる人に言われたくないですよ。
386 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 22:27:02 ] ばか 反論するなら383だけにしろ。 Personal版使ってる人に謝れ。
387 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 23:11:01 ] どっちも素晴らしいと思います。
388 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 00:24:34 ] その割には使われてないなぁ・・・