ミ,,゚Д゚彡DelフサギコのフサフサDelphi談話室
1 :
Delフサギコ :
01/10/21 20:36 ∫ _________ ∧,,∧ ∬ /DelphiやBorlandに関する ミ,,゚Д゚彡っ━~ < 雑談や質問しながら _と~,, ~,,,ノ_. ∀ \ みなーで、くつろごうや ミ,,,,/~), │ ┷┳━  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ .じ'J ̄ ̄| ┃  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ┻
2 :
Delフサギコ :01/10/21 20:36
今だ! 2番ゲット!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
.∩∧,,∧ (´´
,,,,,,,,,,ミ゚Д゚,,彡 (´⌒(´
ど,,,, ,,,,,二⊃≡≡(´⌒;;;≡≡≡
~''(,,,,,づ゙゙ (´⌒(´⌒;;
ズザーーーーーッ!!
関連スレ
( ゚Д゚)ノ Delギコ猫のプログラミング相談室part4 (ある意味荒らしで逝ってしまっています)
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=1002469894 ( ゚Д゚)ノ Delギコ猫のプログラミング相談室part3 (誤って削除されたようです)
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=1001039863 ( ゚Д゚)ノ Delギコ猫のプログラミング相談室part2
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=999482946 ( ゚Д゚)ノ Delギコ猫のプログラミング相談室 (逝ってしまいました)
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=997348797
3 :
Delフサギコ :01/10/21 20:37
続いてBorland無料版をゲットォォォォ!!!
 ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄
∧,,∧ (´´
\,,,,ミ,,゚Д゚彡 (´⌒(´
⊂,,,,,,,,,つつ.≡≡≡(´⌒;;;≡≡≡
(´⌒(´⌒;;
ズザーーーーーッ
Borland Delphi 6 Personal ダウンロード
http://www.borland.co.jp/delphi/personal/ Borland Kylix Open Edition ダウンロード
http://www.borland.co.jp/kylix/openedition/ JBuilder 5 Personal ダウンロード
http://www.borland.co.jp/jbuilder/jb5/download/ Borland C++ Compiler 5.5 無償ダウンロードサービス
http://www.borland.co.jp/cppbuilder/freecompiler/
4 :
Delフサギコ :01/10/21 20:38
5 :
デフォルトの名無しさん :01/10/21 20:38
1000
♪ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\ ♪ ♪ ∧,,∧ ♪ < 話題募集中! > ♪ ∧,,∧ ♪ ミ,,゚Д゚彡. ♪\________/♪ ミ゚Д゚,,彡 ミつ[|lllll]). ([lllll|]とミ ~ミ ミ ミ ミ~ U U U U
∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ,,゚Д゚彡 < 寒い季節になりました。 ミ つ且~~ \___________ ~ミ,,,,,, ,,ミ [Delphi:61493..61505] 他のフォーム(フレーム)の表示イメージを別フォームに縮小表示したい って、TCustomForm.GetFormImageだけで済む問題なのじゃなかったかな。 過去スレが過去スレがと言わずに、もう一度話題にしてあげればいいのに。
9 :
デフォルトの名無しさん :01/10/21 21:08
見苦しい
∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ´∀`)/< 先生!あいかわらずHELPのリンクミスが多いです! _ / / / \ \⊂ノ ̄ ̄ ̄ ̄\  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄|| .|| ||
_____
/...... .. .../
||::: ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ̄\ ミ ゚Д゚ミ< ひええええ、Borconの恐ろしい情報だ
| |: ̄U U ̄:|\_________
確かに、金取りすぎとは思っていたが...BorCon
1万円以下ならフサも逝ってもいいんだけどね。
>>10 多くて報告する気もなくなりますね。
ソース置き場にスレつくってHELPのバグを
積み重ねておきましょうか?
HELPといえば、一つの項目調べるのにVCLとCLXの項目が出てくるの嫌っす。
しかも、内容に差がなかったりするし。
某がやばくなったらMSに吸収される前にOpenにして OpenKylixとかOpenDelphiなんてのが作られたら別にそれはそれでいいんだけど。 無理だろうな。。。
∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ´∀`)/< 先生!あいかわらずDELスレが多いです! _ / / / \ \⊂ノ ̄ ̄ ̄ ̄\  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄|| .|| ||
| ̄ ̄ ̄ ̄ ̄ ̄| |よろしくフサ-| |______| ∧,,∧.. .|| ミ,,゚Д゚ミ..|| Delphiが人気って事かしら? ミ づΦ あれ、ちがう? ~ミ ミ U''''.U
∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ´∀`)/< 人気ありますね! 2chツールもほとんどDel! _ / / / \ \⊂ノ ̄ ̄ ̄ ̄\  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄|| .|| ||
16 :
デフォルトの名無しさん :01/10/21 22:00
Delばかりやっていて、.net や c# には手を出そうとせず、興味すらない私は 新技術にはついていけないダメプログラマですか。
>>11 >一つの項目調べるのにVCLとCLXの項目が出てくるの嫌っす。
何とか.zip を展開すると VCL だけが出るようになるんだけど
試した?
試してません。どやるのですか?
>>18 常にVCLだけでも困るかな
CLXつかっているときは出てもらわないと。
 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
∧,,∧
ミ,,゚Д゚彡∬
〃 つ旦O
~ミ,,,n,,n[ ̄ ̄ ̄.]
 ̄ ̄ ̄
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (,,゚∀゚)< マターリしててイイでち @_) \________
21 :
Delフサギコ :01/10/21 23:21
________ ,ヘ ヘ / ミ,,゚Д゚ミ< マターリ、日曜洋画劇場を見ますか。 ミ,,,,,,,,ミノ \  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(-_-) セイントだっけ。。Orbital好きだよ。。
/ ̄ ̄ ̄ ̄\ / ● ●、 _____ |Y Y \ / | | | ▼ | < 正直、フリーカーソルはどうにかして欲しい。 | \/ _人.| \_____ | ___ノ \ ./ | | | (__)_) アドインでどうにかできるのは知ってるけど。。。
_____________
___ /
/´∀`;:::\<
>>23 テレホマンはフリーカーソル好きょ
/ /::::::::::| |
| ./| /:::::|::::::| \_____________
| ||/::::::::|::::::|
26 :
Delフサギコ :01/10/22 01:02
∧,,∧ / ミ,,゚Д゚彡 < フサはフリカソルエディタもノンフリカソルエディタも ,;゙ ミ \普通に使います。慣れたのかな。 ミ. ミ VSでCtrl+↑↓が効かないのや /゛゛゛゛ ブックマークジャンプが、イマイチつかいにくかったり Ctrl+Shift+Rのキーマクロが出来ないのはどうにかして欲しかったり… AAの人増えたのかニャー
_________ ∧,,∧ / VC/VBからの乗り換えを支援するのなら ミ,,゚Д゚彡< 非フリーカーソルの実現はプライオリチー高め ミつ つ \ じゃないのかニャ ~ミ ミ.  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ U U あのアドインは完璧に非フリカにはならないですし。 (D6に対応してくれたのは大変よいのですが) VSユーザーがアドインをすぐに知ることが出来るとも思えない VSユーザーに不便を強いるのはよくなーい。 ユーザーの意見を積極的に反映してもらうためにも 某日NGに匿名で投稿しておきましょうか? って、匿名でNG投稿する方法わからないや・・・・・・誰か気が向いたらフリカ要望やってちょ。 そういえばJBは非フリカ選択できるのではなかったかな? 技術的には簡単なことじゃニャーか?
28 :
デフォルトの名無しさん :01/10/22 01:17
DelフサギコさんってDelphiX使うアルか? 堀信者のようにイタク無い事を願うアルよ。。
∧ ∧ ・・・・。 ミ ゚Д゚彡 ~ミ,,,,uuミ 痛くならないように気をつけます。 でも、某に要望出すのは自由だと思うんだ。 なるべく多くのユーザーの声が届きますよにっと。 しかし、堀信者って痛いのですか・・・・・ 言語は宗教って、ヘジーも逝っておられるようですし(C#スレで見た) 原理主義みたいになってはいけないですよね。
信者は度を超すと対象が何であれ痛いもんだよ。 で堀信者って何?初めて聞いたんだが。
32 :
名無しヘタぐらまさん :01/10/22 11:48
ただでさえDelphiスレが多いなか,あえてスレを立てた意図はいかに.>
>>1 Delスレの乱立は他のスレを圧迫し,Delユーザーの情報収集を困難にします.
あえて立てるからには「面白いから許可!」「これはこれでいい」と思えないと.
(プレッシャーかけてごめんなさい)
あと,Delモナさんのスレへのリンクがないのですが…?
33 :
デフォルトの名無しさん :01/10/22 11:48
∧,,∧l||l だから他Delスレが下がっている時に立てたのに… ;゙⌒ヽ彡 トホホ ~ミ___ミ ''" ""''"" "''
>>32 他のDel板は技術的な話をしてるので、Del関係の話題でマターリできるこういう
板があってもいいんでない?
C♯相談室 Part2
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=1002468050 名無しさん#さんに感謝しつつ
の、258-261のXMLサンプルを移植したいのですが
簡単に同等機能を実装する方法ありますか?
どなたかご存知でしたら教えてください。
∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ミ,,゚∀゚彡 < 素直にCチャープ使えってか。
ミ つ且~~ \___________
~ミ,,,,,, ,,ミ
つまりXMLライブラリが欲しいなって事かも。
>>38 OpenXMLでいいんじゃない?
MSXMLもある
あとIBMもDLL公開してたような
QuickRTTIで実行時型情報をXML形式で保存してくれるのがどっかにあった
どれも使ったこと無いので
だれか人URL調べてちょ
何で Delphi 関連のスレは平日に盛り上がるのだろうか。 ポイントをついた解答がすぐつくのも謎。 みんな学生じゃないよね?仕事中に質問するのはわかるけど 回答するひとはどんな立場なんだろう?
>何で Delphi 関連のスレは平日に盛り上がるのだろうか。 業務中の2chスレとDelphi-MLのチェックは プロのDelphiユーザーの義務です(藁 確かに休日は閑古鳥状態だね
Delphi-ML はもっぱらネタの提供元になっているしねぇ。 こっちの方が生きが良いから好きだ。
休みの日ぐらい違うことしたい 今月のCマガどうだった? [Part2] Borland DelphiをOpen Tools APIで機能拡張する 買い?
45 :
デフォルトの名無しさん :01/10/22 15:30
>[Part2] Borland DelphiをOpen Tools APIで機能拡張する 面白そだね。最近Cマガチェックしてないので知らなかったよ。 誰かMLでdelphi media watchスレ立てて 特集記事・連載の解説してくれよ。
48 :
名無しヘタぐらまさん :01/10/22 21:08
>>35 たしかにモナスレも技術的な話になりつつあるので
マターリスレとしての意味はあるかもしれません.了解しました.
>>34 というわけで泣かないで~(泣).
>>41 ニフティのFDELPHIで相当お世話になったので,
(数時間後に回答というのも珍しくなかった)
困っている方の質問を見てしまうと
仕事そっちのけで(それはマズイけど)
カラダが勝手にレスを打ってしまうのです.
他人に親切にされると自分も他人に親切にしてしまいたくなるのは不思議.
塞ぎ込
マターリし
今度、ばぐでるわいとやらを使うのでよろしくー
ひくす in 「ARAHIQS」 on Web ってなくなっちゃったの?便利だったのに。
53 :
Delフサギコ :01/10/23 01:47
♪聞いてしぃちゃん ちょっと言いにくいんだけど
♪あのねしぃちゃん
今日、初めて蒟蒻畑アロエリーナ喰ろうたら (゚д゚)ウマー
だったの。、アロエのCMがこれだったって初めて知ったの…
聞いてくれてあーりがと しぃちゃん♪
_____ __
\/
∧∧ ∧,,∧ ブラックジンヂャ ハ ノンダコト ナイノ
(*゚ー゚) ミ゚Д゚,,彡
ノつ旦) ミ(旦⊂ミ
て ) ) ミ( ( ミ~
| ̄∪ J ̄ ̄ιし' ̄| Ψ ソウ オレハ、ショクヨウ
|.. |□
XMLの情報サンクスコ、
今日は書泉グランデでいろいろ立ち読みしてきて
疲れたーYO
>>52 調査してみます。
七味唐辛子といい、BCB系はなんで閉鎖するのでしょう?
大変、便利で感謝しちえるユーザーがいるのに~~~
ちなみに七味は、一時期ファイル日付が完全に狂っていたので
アップ時にファイル更新で作者さんがHomepageデータを誤って全削除した
可能性が高いかと思っているのニャガ....
CマガはWizmanさんの記事以外はDelに冷たいので
買ってやらないのーニャ
54 :
デフォルトの名無しさん :01/10/23 02:20
え! Wizman てCマガの筆者だったの!?
C マガ筆者への差別反対!
∩|
ミ ゙''゙゙゙つ
ミ∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ミ;゚Д゚彡 <
>>55 、いや、別に差別しているつもりは・・・
U U \________
OpenToolsAPIの情報はすごく有用なのですが...
もう一押し、前のように中村先生タンの記事があれば買ったかも。
でも、考えてみるとCマガってVBには異常に冷酷っすね
VBの情報は他誌で出ているからCマガで扱う必要性がないと
踏まえて編集されているのでせうか。
>>56 ほら、一応 C (言語) マガジンだった過去を背負っているのよ。
∧ ∧ / ( ゚Д゚)< もちっとペースダウソで夜露氏久 |つ つ \ ~ | ∪ ∪ スレ傾向としてヒートアップに向かうのはよろしくないと思う 願わくば肉・野菜・野菜・野菜・肉・野菜・野菜
>肉・野菜・野菜・野菜・肉・野菜・野菜 ワラタ
∧ ∧ にゃ 。 /∂⌒∂ 。゚。。° (( ┃ ┃ )) ☆ °゜ 彡 ー ミ / ご挨拶忘れてたにゃ O( つ つ よろしくにゃ (ノ (つ ∧ ∧ 。o 0 〇 /∂⌒∂ (( - - )) Λ Λ 彡 ー ミ ミ゚Д゚,彡 |~~~~~~~~~~~~~~~~~~~~~~~|
フサギコ ッテ フサギコンデル ギコ カト イッシュン オモッタ
∧,,∧ / 前々から山ほどお世話になっている気もしますが ミ,,゚Д゚彡 < Π ̄ ̄ ̄| \あらためまして、コニャニャチワ |つご挨拶() | |___.| ∪∪ あめ猫さんAA、マンセー
|| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|| || フサは 。 Λ,,∧ いいですか?! ||フサフサのフサ \ ミ゚Д゚,,ミ ||________⊂ ⊂ ,,ミ ∧,,∧ ∧,,,∧ ∧,,∧ ...| ̄ ̄ ̄ ̄| ミ ∧,,∧ ミ ∧,,∧ ミ ∧,,∧. |教授 .│ ~(_ミ ∧,,∧ __ミ ∧,,∧__ミ ∧,,∧ ̄ ̄ ̄ ~(_ミ ∧,,∧_ミ ∧,,∧_ミ ∧,,∧ はい、教授。 ~( ,,ミ ,,ミ~(,,,,ミ ,,ミ~(_ミ ,,ミ ~(___ノ ~(___ノ ~(___ノ
∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ゚Д゚,,彡 < なんてこったい! ⊂ ⊂ミ__ \____________ / ̄ ̄ ̄ ̄ ̄ /| ∧_∧ //| / ( ,, )__//┌───────── || ̄/ ) ||/ < どうしたの? || (_○___) || └───────── / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∧,,∧ < AAを1から収集しなおしなんだぞ! ミ゚Д゚,,彡_ \____________ / ̄ ̄∪ ∪ /| /∧_∧ //| / ( ;´∀`)_//┌───────── || ̄( つ ||/ < ほっぺに"ミ"付けただけでしょ || (_○___) || └─────────
|| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|| || ほっぺに 。 Λ,,∧ テストにでますよ! || 「ミ」を付ける \ ミ゚Д゚,,ミ ||________⊂ ⊂ ,,ミ ∧,,∧ ∧,,,∧ ∧,,∧ ...| ̄ ̄ ̄ ̄| ミ ∧,,∧ ミ ∧,,∧ ミ ∧,,∧. |教授 .│ ~(_ミ ∧,,∧ __ミ ∧,,∧__ミ ∧,,∧ ̄ ̄ ̄ ~(_ミ ∧,,∧_ミ ∧,,∧_ミ ∧,,∧ はい、教授。 ~( ,,ミ ,,ミ~(,,,,ミ ,,ミ~(_ミ ,,ミ ~(___ノ ~(___ノ ~(___ノ
,∧,,∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ,,゚Д゚ 彡< 唐突ですが、シツモソです。 __ミ ミ ミ \___________________ \,,∪  ̄ ̄ ̄\ ||ヽ|| ̄ ̄ ̄ ̄||" ...|| ̄ ̄ ̄ ̄|| Delphi6Pro辺りでインタネット経由のIMのような チャットシステムは簡単に出来ますでしょうか。 なんとなくデキそ で デキナサそ なアンニュイな感じがしています。 IndyのDemoみてもそういうの蜜からニャです。 \Demos\Internet\Chat こちらは使い方がわかりません。
>>67 あのね。いわゆる IM は、実は Point To Point/ Peer to Peer ではなくて
サーバーを一回経由しているの。だから FireWall の内側同士で会話できるの。
やってることは Web 掲示板を使ったチャットと同じなの。
だから「チャットシステムは簡単に」できるんだけど、プロトコルを決定する必要が
あるの。または既存の IM とつなぐ場合にはプロトコルを解析する必要があるの。
だからプロトコル設計が肝でインターネットコンポは実現のための道具にしか
過ぎないのよ。
.. 探してみるとあるもんだ。
http://www.morphtek.com/ Instant Message Component
Indy を使った D5/D6/Kylix 用、P2P コンポーネント群
69 :
デフォルトの名無しさん :01/10/23 12:00
あげ
70 :
Delフサギコ :01/10/23 13:46
>>68 情報ThanxCo。だけど
_________
∧,,∧ / さっぱりわからニャイ
ミTДT彡< 何をインストールすればいいかすら…
ミつ つ \
~ミ ミ.  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
U U イキナリ ど挫折...
ナ・ナナジウGet~
こんちは。ヽ(´ー`)ノ
>>38 MSXMLを使えば「そこそこ」簡単にできると思われ。
書き込みはSAX、読み込みはDOMという感じで。
でも、C#でサンプル作ろうと思ったらあっさり挫折。(藁
(VB.NETの方がはるかに楽そう。)
DelphiのCOM interopの場合はどうなんだろう...?
>>名無しさん#さん ♪ ♪ お世話になって ♪ ∩ ∧,,∧ ♪ ヾミ ゚Д゚彡 フッフフサ フフサ フフサ ヾ ⊂ ヾ フッフフサ フフサ フフサ O-、 )~ U ♪ おりまするー ♪ ♪ ∧,,∧ ♪ ミ ゚Д゚彡⊃ フッフフサ フフサ フフサ ヽ⊂ ミ フフサ フフサ フッサ~ル ⊂,,, ミ し″ フサはいまいちわかってません。 どなたか、救いの手を...(他力本願マンセー)
>>Delふさぎ湖 おまえ実はDellギコそのものじゃないの?
Delphiスレがいっぱいあるんですが、それぞれ対象は何(誰)なのか教えてください。
>>79 分かりました。質問は「質問類」のスレですればいいんですね。
ありがとうございました。
>>80 見ている人は全部見ているからあまり気にせんでよいよ。
規則が無いのが 2ch
MSXのMLってやっぱMSXMLなの?(w
∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ミ,,゚Д゚彡 <
>>79 分類わけ、どもーありがと
ミ つ且~~ \___________
~ミ,,,,,, ,,ミ
、近頃ネタ不足なので、息抜きにでもAAドゾ
∧ ∧ ソ ̄(,,゚Д゚) /| ̄ ̄ ̄ ̄ ̄ ̄ ヽ) ヽ) ̄ ̄ ̄| | | | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| | | | | GIKO MANZAI .| | | | | ∧ ∧ ∧,,∧ / ̄ ̄ ̄ | | | (,,゚Д゚) ミ゚Д゚,,ミ < 逝ってヨシ | | | | つつ ¶ (ミ ミ) \___ | | | ~ | || ミ ミ~ | | | | |_ ∪∪ || ∪∪____| | | | | ̄ ̄ ̄ ̄ ̄ ̄ ̄| ・・ロ |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | こんばんちはー、ギコーズです。 \  ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∧ ∧ ∧,,∧ (,゚Д゚,) 目 ミ゚Д゚#ミ |つ つ ..|| (ミ ミ) ~ | .|| ミ ミ~ ∪ ∪ . || ∪ ∪ _______/|_______ / | どっちが[ギ]でどっちが[コーズ]だ ゴルァ \_______________ /| / ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | そんな分け方してません。 \_______________
86 :
Delフサギコ :01/10/24 00:47
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | S A G E !! \________ _______ |/ Σ∧ ∧ ∧,,∧ (#゚Д゚) 目 ミ゚Д゚,,ミ |つ つ ..|| (ミ ミ) ~ | .|| ミ ミ~ ∪ ∪ . || ∪ ∪ /| / ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | 思いっきりAGEとるがな!! \_______________
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | A G E !! \________ _______ |/ ∧,,∧ ⊂ミ,,゚Д゚彡つ Σ∧ ∧ ∩∧_∧∩ (;゚Д゚) 目 ヽ( ´∀`)ノ タカイタカーイ |つ つ ..|| ( ) ~ | .|| | | | ∪ ∪ . || (__)_) /| / ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | アンタ誰!?、、Delモナさん? \_______________
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | 別人だ \________ _______ |/ ∧ ∧ ∧,,∧ (゚Д゚,,) 目 ミ゚Д゚,,ミ |つ つ ..|| (ミ ミ) ~ | .|| ミ ミ~ ∪ ∪ . || ∪ ∪ /| / ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | 本人はこう申しております。 \_______________
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | 「もどってきて!」って言ってくれた方々ありがとう \________ _______ |/ ∧ ∧ ∧,,∧ テレルゼ (;゚Д゚) 目 ミ゚Д゚*ミ |つ つ ..|| (ミ ミ) ~ | .|| ミ ミ~ ∪ ∪ . || ∪ ∪ /| / ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | 別人って言ったばかりでしょ・・・・ \_______________
TVつまんねー。もう寝よう… \  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ∧ ∧ Zzz... 〃' ̄(,,-Д-) モット Delphi ネタ デナキャ /| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄.| "めも電卓"クライ ザンシンナ ネタ ガ・・・ | | | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| | | | | | | | | | | | | | | 放 送 終 了 | | | | | | | | | | JOGX-TV | | | | |___________| | | | | | ・・ロ |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
そんなに暇ならフリーで2wayなUMLモデリングツールでも作ってくれ
(○) ヽ|〃 _|三三|_ / ̄ ̄ ̄ ̄ ̄ ヽミ ´∀`ミノ < ガミワヅナツ、ミヤミヒユアネメーハ! 彡ノノミ \_____ 丿 >
∧,,,,∧/) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 彡,,・ー・ミ/ < したらば~ ( @ ⌒ヽ \____________ 丶_) ( ⌒" ヽ__) ∧,,,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 彡,・ー・,ミ < よろしくにょら ⊂ @ つ \_____________ ヽ | | ∪ ∪
でる ふぁい まん せー♪ ∧,,∧ ∧,,∧ ∧,,∧ ∧,,∧ ∩・ー・ミ) ミ・ー・彡 ミ・ー・ミ ミ・ー・ミ ) @丿 ⊂@⊂ヽ |つ@つ ( つ@つ ~| / ヽ⊂,,)~ ⊂,, 丿 て ) ) (/''(/ ヽJ ∪
96 :
Delフサギコ :01/10/24 01:43
∧,,∧ / ̄ @,,,ミ,,゚Д゚彡 < したらば、かわイイd(・∀・) ⊂,,,,,,,,,つつ. \_ カワイースギ!
ネタがないなら上げるなあほ。AA はネタと一緒に書けよ。ぼけ。 また煽られるぞ。
チコウヨレ
∧,,∧∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ミ,,゚Д゚ミ・ー・彡 < しーちゃん、ゴメンネ
_と~,,, ミ,@⊂| ∀ V \______________________
.ミ,,,/~),(( ノ~┷┳┷
 ̄ ̄ ̄ .し'J ∪ ̄|.. ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ .┻
_∧_________
/しーには内緒だぞ。。。
かわいくて作ってしまいました...スマソ
>>94-95 したらばが、♂か♀かも知らないのに…
いや、むしろ、かわいければ♂だって♂でも♂しか、むしろ♂の方が、、、
ところで、上沼恵美子似の歌手は
なぜ、つんく♂(ツンクチンコと読むのか?)という名前なの?
今だ! 100番ゲット!!
 ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄
∧,,∧
ミ,,゚Д゚彡 (´´
ミ つ且~~ (´⌒(´
~ミ,,,,,, ,,ミ ≡≡(´⌒;;;≡≡≡
(´⌒(´⌒;;
ズザーーーーーッ
●芸能人の「つんく」はどうして「つんく」という名前なんですか?
また、最近つんくさんは語尾に「♂」がついてつんく♂になりましたがそれにはどう言う意味があるのでしょうか?
http://homepage2.nifty.com/yurai/name7a.htm#つんく >>91 2wayじゃないけど、Delphiのダイアログページでやや満足かと・・・
| |_∧ シタラバ… |-゚) ⊂| | ~ |∪  ̄ ̄ ̄ ̄ ̄ ̄ ̄
よってたかってネタスレか(w
103 :
デフォルトの名無しさん :01/10/24 16:59
じゃ、まともなネタでも。Delphi6 Only。Borland Community より コード補完の失われた機能 「新しい IDE 機能」としてリストアップされている機能の一つが提供されていなかった。 Help より引用 ルーチンの本体内の空白行上でコード補完機能を手動(〔Ctrl〕+〔Space〕)で呼び出すと, (現在のユニットで使用されていない場合でも)追加の RTL ユニットのシンボルがポップ アップリストボックスに表示されるようになりました。 これはレジストリの定義ミスです。 [HKEY_CURRENT_USER\Software\Borland\Delphi\6.0\Code Insight] "ExtraUnits"="Classes;ComConst;ComObj;ComServ;Contnrs;ConvUtils;DateUtils;HelpIntfs;IniFiles;MaskUtils; Masks;Math;MtsObj;RTLConsts;Registry;StdConvs;StdVCL;StrUtils;SyncObjs;TypInfo;VCLCom;VarCmplx;VarConv; ShareMem;SysConst;SysUtils;Types;VarUtils;Variants" (長すぎるんで途中で改行入れてあります。常識に従って編集してください) これを D6Cmplt.reg として保存後、RegEdit に食わせるとここで定義したユニットに関しては Uses 節に指定されていなくてもコード補完の対象となり、さらに追加した識別子を定義している ユニットが Uses 節に無いときには勝手に挿入してくれる。
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | なんかネタにされているモナー >83-90 \__ ____ ∨ ___ ∧_∧ ||\ \  ̄|  ̄| ( ´∀`) || | ̄ ̄||: | ┌( つ/ ̄||/  ̄ ̄/ |=| | ヽ |二二二」二二二二二二二二」  ̄]|__) | | | | / ̄\ / | / | ◎ ◎ [__」 [__」 自分の得意系の質問がないのでまともに答えられない日々・・・。 しかしDelフサギコさんは、かつてのDel〇コ師匠を思い起こさせてくれる良い存在だ。 Del6pro欲しい今日この頃。
105 :
デフォルトの名無しさん :01/10/24 18:17
program Project1; uses Windows, ShellApi; begin ShellExecute( 'OPEN', PChar(ParamStr(0)), '', '', SW_SHOW); end.
107 :
Delフサギコ :01/10/24 18:55
>>103 かっこいい!どこからそんな情報が・・・
∧,,∧ /
ミ,,゚Д゚彡 < ところで、便利なArrowコンポーネントはないですか?
Π ̄ ̄ ̄| \ 上下左右しか矢印が書けないショボいのとか
|つキボンヌ() 斜めが書けても、TviArrowExくらいしか見つからない。
| |___.| もっとビクーリするくらい矢印が書きやすいものがありそうかと
∪∪ 思うの・・・・ないのかな。
>>108 あっちにも書いたけど,RegEdit に渡せる形式でなかったことと
Enterprise 版にあるユニットが入っているため下位の版ではうまく動かん。
修正した Enterprise 版のファイルをあっちにアップしておきます。
111 :
デフォルトの名無しさん :01/10/24 22:09
>>107 どんな矢印を書きたい?
希望する機能を全て書いてみてよ。
つくってあげる…かも。
112 :
Delフサギコ :01/10/24 23:35
|
電 |
|∧,,∧
柱 ミ,,゚Д゚彡 <ちょっと無茶っぽいこと言っていいかしら
>>111 さん
⊂ ミ
|, ,,ミ
|∪
, ' , ; ' ;
最理想はD6ダイアグラムページの矢印なのだけど
捕まえグリッド(マウスでつかめる黒い点)の
実装がかなり手間ですのでそれはあきらめて
TShapeのようなクラスを3つ用意して
TArrowOrigin(始点)
TArrowLine(線)
TArrowEndPoint(終点)
これらがそれぞれをpropertyで関連づいて
任意の"角度"で三角形やらひし形やら丸やら四角を
枠と中身を任意の色やStyleで描画できるようにしておくと
RADのみで
かなり自由度の高い矢印がかけるのではないでしょうかと
思ったりしています.
TArrowContactPoint(接点)を用意して
始点-線-接点-線-接点-線-終点
と組み合わせたら折れ線も書けそう。
良く知りませんがベジェ曲線みたいな拡張も可能かも...
組み合わせ時にコンポーネント同士の位置関係に気配りが必要。
連動して動くといい感じですね。
_________ ∧,,∧ / それより、TImageを継承して ミ,,゚Д゚彡< 設計時クリックした2点間に指定した形の始点終点で ミつ つ \ 矢印描画したほうがいいか。 ~ミ ミ.  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ U U 我ながらよい設計は思いつきませんが...
117 :
デフォルトの名無しさん :01/10/25 04:49
118 :
デフォルトの名無しさん :01/10/25 09:46
>TShapeのようなクラスを3つ用意して >TArrowOrigin(始点) >TArrowLine(線) >TArrowEndPoint(終点) >これらがそれぞれをpropertyで関連づいて >任意の"角度"で三角形やらひし形やら丸やら四角を >枠と中身を任意の色やStyleで描画できるようにしておくと ? コントロール矩形に内接するひし形、三角形、楕円、長方形、正方形、円を 任意の境界色、スタイル、塗りつぶし色、塗りつぶしスタイルで描画できるって事かな。 矢印は、矩形の辺に平行、対角線のどちらかを選ぶって事か。 でも気を付けないと矢印の”棒”は描けても、スペースが足りなくて”矢じり”が描画できないことってあるよね…
>>118 GrapihcControlは 親のDCハンドルを貰って描くから ハミダシテも描けるよ
はみ出していいかどうかは別にして
しまった。 TGraphicControl でも IntersectClipRect されて渡されるから外には描けないや
121 :
デフォルトの名無しさん :01/10/25 10:44
という事で、 TMyArrow = class(TGraphicControl) private Arrow :TGraphicControl; FArrowSize: Integer; procedure SetArrowSize(const Value: Integer); public constructor Create(AOwner:TComponent); override; destructor Destroy; procedure Paint;override; published property Anchors; property ArrowSize:Integer read FArrowSize write SetArrowSize; end; として、 type TMyArrowhead = class(TGraphicControl) procedure Paint;override; end; 矢尻だけのコンポをローカルに定義して constructor TMyArrow.Create(AOwner: TComponent); begin inherited; Arrow:=TMyArrowhead.Create(Self); (AOwner as TWinControl).InsertControl(Arrow); ArrowSize:=10; end; と作成してオーナーに一緒に登録すればなんとかなるかも
123 :
デフォルトの名無しさん :01/10/25 12:22
質問です procedure Tjotai_real.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin 文 end; 上の文をFormCreateで呼ぼうと思っImage1MouseDown(Sender,mbLeft,ssShift,0,0); をしたのですが「TshiftStateとEnumerationには互換性がありません」って警告が 出ます。 どうしたら良いでしょうか?
TshiftStateとEnumerationには互換性がないんですよ。
>>123 TShiftStateは集合型。
ssShiftはTShiftStateの要素の列挙型。
集合型として書くには、 [ssShift] として ssShift要素だけが
ある集合にする必要がある。
言語ガイドで集合型あたりを読むこと。
列挙型じゃね? [ssShift]
>>127 ssShift の方が列挙型
[ssShift] として集合型にする必要がある。
すいません。 Kylixです。
img1MouseDown(Sender,mbLeft,[ssShift],0,0); これで解決しました。 ありがとう御座います。
,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
~′,,,,,,,ミ,,゚Д゚彡 < サンクスコ。
UU""" U U \_______________
>>115 矢印のサンプルはないのですね。ぜひ見てみたい。
いいのがそろってますねー。
実行時マウスでコントロール移動可能コンポと
矢印を組み合わせたら,,,簡易UMLツールじゃないかな!
>>118 >? コントロール矩形に内接するひし形、三角形、楕円、長方形、正方形、円を 任意の境界色、スタイル、塗りつぶし色、塗りつぶしスタイルで描画できるって事かな。
別に内接はしなくてもいいのですが、そういう事です。
任意角で描画可能なのが大切
矢印の線と始点終点の形が一致しなきゃいけませんよね。
でもコンポを組合すのはどうもだめっすね
┌─────┬─┐
│ │ │
├─┐ └─┤
│ │ │
└─┴─────┘
こういう領域を自分で設定して
左下から右上に線を描画
左下で始点を描画、右上に終点を描画
こうしたら解決しそう。
矢印の矢じり角度を90度以上にも設定できるように
なるのがいいですね。
>>122 そうか。矢じりだけの矢印も使いたいから(使いたいの?)
それ自体一つのコントロルにしてしまって
内部に持つのはいい感じニャー!!
>>121 レジストリ情報(
>>103 )なりね。サンクスコ
内接しなくていいんだとすれば 設計時に、マウスで設定出来るようにすればいいかも TGraphicControlでも WndProcを継承して if (csDesigning in ComponentState) then Dispatch(Message) else inherited; みたいにやれば設計時にメッセージを貰う事が可能みたい。
作るなら、矢印ひとつじゃなくて 線とか箱とか文字箱とかを表示出来て編集出来るコンポがいいな データはTStringsプロパティで Arrow x0,y0,x1,y1 Box x0,y0,x1,y1 Msg x0,y0,x1,y1,"メッセージ" みたいに
134 :
デフォルトの名無しさん :01/10/25 13:51
でるふぁい入門書教えて欲しいの。 ぷろぐらみんぐ経験はCがちょこっと Perl(CGIで)を少々。 双方ともにコマンドラインからしか操作してないの。 だからWindowsとかでWindowぱかっと開くの作りたいの (Tkでチャレンジしたけどしんどかったの。) の。
>>134 ∧,,∧ ──────
ミ゚Д゚,,彡 <
>>4 のリンック先みてチョー
⊂⊂ ミ──────
ヾ ,,ミ~ ────
し じ ─────
136 :
111=118 :01/10/25 14:25
137 :
デフォルトの名無しさん :01/10/25 14:38
>>136 再描画されないし。
こんな程度の腕でつくってあげるなんてぬかすな
∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ミ,,゚Д゚彡 <
>>137 厳しいでござるな
ミ つ且~~ \___________
~ミ,,,,,, ,,ミ
>>132 ナイスな情報ありがとございます。
>>133 それは暗に、UMLツールを作れという指令ですか?。。。。。。。。。。。。。゚Д゚;;;
>>136 サンクスです。試してみます。
矢印コンポといえば、
昔の日経ソフトの連載で出ていたり
D4プログラミングバイブルに載っていたりしますので
その辺りを調査するのもいいかもね。
あと、DSPやTorryで探せば二つくらいみつかりますよ。
>>137 まあ落ち着きなさいって。世の中にはコンポすらつくれないDELプログラマが何人いることか…
>何人いることか… たった何人なのか(w 微妙なフォローにワラタ
142 :
デフォルトの名無しさん :01/10/25 17:15
143 :
デフォルトの名無しさん :01/10/25 17:21
144 :
デフォルトの名無しさん :01/10/25 17:24
>141 published property Source: TWinControl; property Destination: TWinControl; property Space: Integer; default 4; が欲しいかも
>>143 >某の人がここ読んだんじゃない?
読んでるのは事実でしょ。こないだもあっという間に誤字が直ったし。
けど、これは関係ないでしょ
146 :
Delフサギコ :01/10/25 18:33
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| あめ猫さん。すっげーーーー!!!
\___ _________
∨
♪ ∧,,∧ ♪ すばーらし!
ミ*゚Д゚彡 ♪
ミつ[|lllll]).
~ミ ミ ツカイヤスイ!!!
U''U
>>141 別にOE更新しなくてもGetが正しければ
よいと思いますよ。
>>141 のリンク先のソースはHTMLソースから
取得するとヨシ。
あとは
│\
┌───┘ \
│ \
│ /
└───┐ /
│/
やら
|\
/\ | \
\/  ̄ ̄ ̄ ̄ ̄ | /
|/
こんなのをサポートしてほしいっす!
前後に端点がつかない単なる線だけも欲しいし
LineのWidthとか点線とかサポート
とか。わがままいってしまいますニャ。
あと矢印の端点捕捉のマウス認識範囲はもう少し広いのがよいいです!
いや、やれといわれりゃやりますが。
うーん。CanResizeとかああやっているのかなるほどなあ。
function TMyArrow.DesignProc(var Message: TMessage):boolean;
をを。なんだこりゃ。。。
Indyの最新β(9.0.2)、インストールできなくない? 日本語版のパッチは判別してくれないのかな…。
3時間程CGIのメンテしますので、少々お待ちくださいませ
>>147 そうじゃなくて.
D6 付属のものは Ver8
"A patch is now available for Indy 9.0.2" は
9.0.2-B に対するパッチ。ということ。まず最初に 9.0.2 を落とさないと。
∩,,,,,,,,,,,∩ ,,,_
>>146 ~⊂`'''''''''ミ。Д。ミ⊃ アボオーン
`'''''''''''∨ ∨
OE⇒OIだった。オブジェクトインスペクタでOEって間違うなんて…
これは何に使うの?>矢印
>>149 ごめん言葉がたらなすぎた。
Indy9.0.2をインストールしようとすると、Delphi6のアップデートをしてないとインストールできませんよ
というメッセージが出る。
すでにアップデートパッチを当てているのに。
なので日本語版のアップデートは認識してくれてないのかな、と。
と、数日前にはインストール失敗していたんだけど今やったら出来た。 すいません。 152とかは無視して。
たびたびすまん。やっぱり失敗。 Indy9.0.2-Bをインストールしようとすると、 "This installation requires Borland Delphi Service Pack 1 ..." とのメッセージが。 とりあえず9.0.1を使っていますが。
>151 >これは何に使うの?>矢印 フサギコがDel用2wayUMLツールを作ってくれるそうです
おぉ~、フサギコマンセー 完成した暁には、プラスチックの下敷きで、ナデナデしてあげよう
_____ ±±±±±  ̄ ̄ ̄ ̄ ̄ ∧M∧ ・・・・。 ミ ゚Д゚彡 ~ミ,,,,uuミ 作"れ"ません。 (作"り"ませんに非ず) 矢印は矢じるしたい時に矢じってください。
シクシク 俺のは誰も評価してくれないのか… 評価してくれたのは1人 それも煽り…
>>154 インストーラーの問題かな?
ソースコードキットを使って,ビルドしたら?
>>159 --------∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
~□□ □□ ( ゚Д゚)< そんな時もあるさ。精進せぇよ
U U U U U U-U \__________
>>146 ええと、設計時に動かせるかどうか試したいだけだったから
あめ猫はこのまま拡張する気はないにゃ。ひとつのキャラクタ
を一つのコンポにする方法だと複数のキャラクタが重なった時に
操作させるには、結局操作点を別のcontrolにしてZオーダ上げたり
させなくちゃいけない。
どうせやるなら
>>133 みたいに複数のキャラクタを一つのコンポ
内で操作出来るコンポを作りたいにゃ
操作点の有効範囲は
if hypot(ArrowSx-Xpos,ArrowSy-Ypos)<4 then FMoveS:=true
else if hypot(ArrowEx-Xpos,ArrowEy-Ypos)<4 then FMoveE:=true;
この行で4ピクセルとキメうちしてる
この範囲に入ったらマウスカーソルを変更させるとか操作点の範囲
を画面に描くとかすると格好いいかも
>>136 チラっと見たら プロパティの変更時とかにpaint直接呼んでる
けど、Invalidateで無効を宣言するだけにした方がいいと思う
│\ ┌───┘ \ │ \ │ / └───┐ / │/ この表示したい時の Paint例 procedure TMyArrow.Paint; var h,c,s,wc,ws,vc,vs:double; var Head:array [0..7] of TPoint; begin wc:=cos(PI*ArrowHeadAngle/180)*ArrowHeadSize; ws:=sin(PI*ArrowHeadAngle/180)*ArrowHeadSize; h:=Hypot(ArrowEx-ArrowSx,ArrowEy-ArrowSy); c:= (ArrowEx-ArrowSx) / h; s:= (ArrowEy-ArrowSy) / h; h:= ArrowHeadSize*0.25; vc:=wc; vs:= h; with Head[0] do begin X:=ArrowEx; Y:= ArrowEy; end; with Head[1] do begin X:=ArrowEx+Round( +s*h );Y:=ArrowEy+Round(-c*h);end; with Head[2] do begin X:=ArrowSx+Round(c*vc+s*vs);Y:=ArrowSy+Round(-c*vs+s*vc);end; with Head[3] do begin X:=ArrowSx+Round(c*wc+s*ws);Y:=ArrowSy+Round(-c*ws+s*wc);end; with Head[4] do begin X:=ArrowSx; Y:= ArrowSy; end; with Head[5] do begin X:=ArrowSx+Round(c*wc-s*ws);Y:=ArrowSy+Round(c*ws+s*wc);end; with Head[6] do begin X:=ArrowSx+Round(c*vc-s*vs);Y:=ArrowSy+Round(c*vs+s*vc);end; with Head[7] do begin X:=ArrowEx+Round( -s*h); Y:=ArrowEy+Round(+c*h);end; with Canvas do begin Polygon(Head); if (FMoveS or FMoveE) then begin Ellipse(ArrowEx-4,ArrowEy-4,ArrowEx+4,ArrowEy+4); Ellipse(ArrowSx-4,ArrowSy-4,ArrowSx+4,ArrowSy+4); end; end; end;
>>163 長方形と三角形のリージョンつくってOR結合するとすごく簡単だよ
長方形でないグラフィックなコンポなら、 Delギコの得意なフックで書けばいいんじゃないの?
sage進行見っけ
∧,,∧l||l 昨日道に倒れてた交通事故にあった猫を介抱してた(リアルワールドで)
;゙⌒ヽ彡 頭を打って脳がやられちゃったみたい。
~ミ___ミ 鬱だ。まじ鬱だ。今は動物病院....
''" ""''"" "'' 後遺症がひどく残るようなら保健所逝きになるかも........まだ子猫なのに。
>>159 さん、作ってくださってありがとね。
最初に評価したけど
いきなりIDEごとハングする処理はせめて混ぜないで欲しかった。
あと、矢じるし系とShape系を混ぜるのは
クラスの分類として混乱しそう。
それとああいうUIだと矢じるしの端が消えた時に
それを見せるための操作が非常に面倒だという事が
改めてわかりました。
>>162 あめ猫さん
> 複数のキャラクタが重なった時に
> 操作させるには、結局操作点を別のcontrolにしてZオーダ上げたり
> させなくちゃいけない。
使っていくうちにその不便さが身にしみました。
見せてもらって初めて問題点が浮き彫りに
まるで仕様をろくに決めていない顧客みたいだ>俺
> どうせやるなら
>>133 みたいに複数のキャラクタを一つのコンポ
> 内で操作出来るコンポを作りたいにゃ
ドウイニャー
ああいう操作の形がありだと知っただけでも
非常に勉強になりました。感謝感謝。
>>164-165 非短形コンポって見たことないでした。作れないって。
>>167 procedure TForm1.Button1Click(Sender: TObject);
var
Rgn1,Rgn2:HRGN;
Pts:array[0..2] of TPoint;
begin
Rgn1 := CreateRectRgn(10,10,45,20);
Pts[0] := Point(40,5);Pts[1] := Point(60,15);
Pts[2] := Point(40,25);
Rgn2 := CreatePolygonRgn(Pts,3,WINDING);
CombineRgn(Rgn1,Rgn1,Rgn2,RGN_OR);// OR結合
with Canvas do begin
Brush.Color := clRed;
FrameRgn(Handle,Rgn1,Brush.Handle,1,1);// 枠
OffsetRgn(Rgn1,0,30);
FillRgn(Handle,Rgn1,Brush.Handle);// 塗りつぶし
end;
DeleteObject(Rgn1);
DeleteObject(Rgn2);
end;
>>168 コンポが占める領域のことじゃないよ。描画方法について言ってるわけよ。
>169 ? それどうやって回転するの? リージョン回転するAPIあったっけ? >163 は任意方向むくよ
>>170 リージョンを回転させるAPIはあるけど、Win9X ではダメ。
保持しているリージョンを回転させるのではなく、リージョン
を定義している点の座標を回転による変換で作り直すわけ。
163のコードでもこれは同じでしょ。
でも、任意回転のこと考えたら確かにリージョンを使うメリットは
減るね。うーむ、164 でのOR合成によるリージョンでの描画は撤回。
163 で計算された座標をもとにポリゴンリージョンを保持することを
提案。リージョンを保持することの利点は、
1) 一度作ってしまうと、再描画のたびに計算する必要がない
2) 特定の点がリージョン内にあるかどうかをすぐに判断できる
くらいかなぁ...。
172 :
Delフサギコ :01/10/26 13:37
∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ミ,,゚Д゚彡 < 矢じるしコンポ。どうりで標準で用意されていない
ミ つ且~~ \&有名なのがない、わけですね。
~ミ,,,,,, ,,ミ
>>171 >1) 一度作ってしまうと、再描画のたびに計算する必要がない
再描画ごとに計算するのは
やり方さえ工夫すればリージョン使わず描画する時も必要ないのでは?
任意角度のプリミティブ図形(△やら□などのことだったよね)
の描画計算にそれほど時間がかかると思えないです。
>2) 特定の点がリージョン内にあるかどうかをすぐに判断できる
ゲームじゃないし....必要になるかな。マウスドラッグはしやすくなりそうだけど
あめ猫さんのものを拡張して
TArrowsPaintみたいなのを用意して
複数のArrowを動的配置できるようにできたらいいですのにね。
そうすればコンポーネントの重なりも無視できるし
インスペクタ連動するためには
TCollectionとTCollectionItemが必要になるか....ますますフサには不可能だ。
>>172 171 の 1) については、確かにポリゴンの座標を配列で持っていれば
リージョンを使わなくても簡単に再描画できるね。
でも 2) については結構重要だと思うよ。とくに斜めに矢印が描画さ
れている時は、それを囲む矩形領域がコンポの領域になるわけだろう。
ユーザが図形をマウスでドラグしたくなったとき、ほんとに選択したい
図形が判断できるのは重要なのでは。とくに、他の図形コンポと重なり
あっているときには。
あとリージョンでは
3)それを囲む外接矩形領域が簡単に取得できる
ことも重要だと思わないか。コンポーネントの領域に反映させるために。
>>173 それを囲む外接矩形領域が簡単に取得できる
ってのは、頂点のリストがあるのなら
単に最大・最小を走査するだけで出てくるんでは?
>>174 あのね、リージョンじゃなきゃできない、と主張してるんじゃないんだよ。
172 や 174 のコメントの内容は、「リージョンをつかわなくてもこう
すればできる」という内容だよね。リージョンを使えばもっと簡単だよ、
ということを主張してるのよ。おれもリージョンに固執するわけでもな
いが、ちょっとでも便利ならリージョンを使う、という選択もありだろ。
一般論として、ベジェ曲線や弧などを輪郭の一部としてもつ図形では、
スキャンして外接矩形は求められんだろ。今回の矢印の場合でもAPI
一つで取得できる方がスキャンして求めるより簡単だろ。
なぜリージョンを使う、ということを避けたがる?
>>175 別に避けたがってるんじゃないよ。
ポリゴン形状前提の場合、外接矩形を得るのに
リージョンのメリットの補強にはならないって思っただけ。
ポリゴンに限定しないのなら、システムにやってもらったほうが
いいのは間違いないけどね。
全く経験がないからわからないのですが 設計時にリージョンを使うと矢印図形の描画領域外の余白部分の 向こう側にある矢印を選択できるのでしょうか。 (変な形のボタンコンポーネントなどはどうなっているのかな。 そんなの使ったことないからしらにゃい) だとしたら便利ですね。 でも出来ないのなら"矢印"というものは 単なる2点間指示なわけなので 外接領域が必要になることはすくなさそう。と思うてます。 一つのTGraphicCtrlに複数の矢印を描画することと 一つのTArrowsMyPanel上に矢印リージョンな子Windowを 動的生成するのと同じことなのかな。 >なぜリージョンを使う、ということを避けたがる? そういうわけではないのですが 必要無いときには使わないですし。 "描画"が必要なのと"Window"が必要なのとは違うし。 いろいろな可能性を模索がいいですね。  ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ∧,,∧ クチ バッカ デ ゴメン ヨ ミ,, ゚Д゚彡 〃 つ旦~~ ~ミ,,,n,,n[ ̄ ̄ ̄.]  ̄ ̄ ̄
>>176 > 別に避けたがってるんじゃないよ。
> ポリゴン形状前提の場合、外接矩形を得るのに
> リージョンのメリットの補強にはならないって思っただけ。
わかった。そのとおり、ポリゴンの場合は補強にはなってないね。
すまぬ。
>>all
市販のドローソフトが描く矢印を見てると、矢印の方向だけでなく
「やじり」部分の大きさや形を選ぶことができるよね。単純な三角
だけでなく、曲線の入ったヤツとか。ああいうふうにするには、
しつこいようだが、リージョンを使えば簡単なんだがね。ネックは
170 が指摘しているように、Win9X 系では、リージョンを回転させる
APIが使えないことなんだよ。だれか、一般的な方法でAPIを
使わずに任意角度にリージョンを回転させる方法を教えてくれないだ
ろうか? ポインタだけでもOK。よろしくお願いします。
∧,,∧ / ̄
\,,,,ミ,,゚Д゚彡 < なるほど、リージョン自体と
⊂,,,,,,,,,つつ. \ SetWindowRgnとは違うのですね。
フサは良く知らなかったので、同じ機能かと思ってた...スマソ
読んでいたはずの、D4プログラバイブルの矢印コンポーネントでは
矢印の三角形部分クリックの判定にリージョン使ってた。
そんで、気になる所ですが
設計時コンポーネントにSetWindowRgnを適応することはできるのだろうか…
>>178 ようやく話が見えてきました。確かにリージョ使うと簡単ですね。
>任意角度にリージョンを回転させる方法
思いっきり単純計算でリージョン作り直すとか?
これなら労力さえあれば何とかできるでしょうが…
>>177 >必要無いときには使わないですし。
>"描画"が必要なのと"Window"が必要なのとは違うし。
リージョンは、ペンやブラシ、フォント、と同じGDI オブジェクト
だぞ。Window とは関係ない。ただ、リージョンを使ってウィンドウ
にクリッピング領域を設定できる、ということだよ。
> 一つのTGraphicCtrlに複数の矢印を描画することと
> 一つのTArrowsMyPanel上に矢印リージョンな子Windowを
> 動的生成するのと同じことなのかな。
これは見かけだけが似てるけど、コーディングするほうでも、
ウィンドウズのリソースの面からみても全く違うでしょ。
リソースのことを考えなければ、矢印ウィンドウというのが
コンポーネントとしては実装が一番簡単そう。
設計時はともかく、実行時には、<その形>のままでマウス
メッセージに応答できるよね。
>>179 >>任意角度にリージョンを回転させる方法
>思いっきり単純計算でリージョン作り直すとか?
>これなら労力さえあれば何とかできるでしょうが…
リージョンを構成するプリミティブを作成するときの座標を
っかいてんさせれば、リージョンも回転できそうに思うのだが
そうではないんだよ。これが悩みの種なんだ。
たとえば、単純な楕円リージョンを作ったとして、それを中心
を原点にして20度傾けるにはどうしたらいい?外接矩形の座標を
傾けてもできないんだよ....。
>>181 ベジェ曲線なら制御点リストを回転/変形させるだけで
生成される曲線もそのとおりに回転/変形するから便利だよね。
楕円を使いたい時はベジェで描けって事か・・・
_________
∧,,∧ / を!出来た。設計時リージョン。
ミ,,゚Д゚彡< これで矢印がいくら重なっても大丈夫!か?
ミつ つ \
~ミ ミ.  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
U U
type
TPanel1 = class(TPanel)
private
protected
procedure Resize; override;
public
procedure TPanel1.Resize;
var
Rgn: HRGN;
begin
inherited;
Rgn := CreateEllipticRgn(0, 0, Width, Height);
SetWindowRgn(Handle, Rgn, false );
end;
Panelの色変えて貼り付けると
円形部分だけ反応して
背景のコンポーネントがセレクト可能でした!
描画処理は変になってるけどね。
>>180 設計時にも動作可能でしたよ。
Winメッセージに反応できるということは
マウスが上を通過したら色が変わる矢印なども作れるかな。
>>181 なるほど。そこまで考えてませんです。はい。
>>182-183 複雑ですね。
無理にリージョン側を回転させる必要ありますかね? 回転角度覚えてるんなら、リージョンの中心座標とカーソル座標使って カーソルの座標側を回転させられない? 最初に生成したリージョンだけで判定できると思うが
>>185 全く理解できない。カーソル座標って何だ?
カーソルの座標を回転するって何の事だ?
簡単なサンプルコードを頼む。
184みたいに使う時はリージョン回転が必要でしょう。
自己レス >141 それとマウスで動かした時にプロパティエディタを更新する方法が判らん やっとみつけた GetParentForm(Self).Designer.Modified;
どうもCM_MOUSELEAVE が設計時に貰えないにゃ これが無いとドラッグしたままエリア外に動かしてしまうと困った事に
>>186 クリック位置からどのリージョン選択するか判定する時は、リージョン回転無しでできないスカ?って事ッス
例えば45度回転してるなら、図形の回転軸(X,Y)からクリック位置(x1,y1)の相対距離(X-x1,Y-y1)と逆正接で
角度と距離を得て、図形の回転量(45)を引くと。
で再度、正接と距離で座標に変換してリージョンとの衝突判定すれば
判定計算軽くならない?
FireWall-1でモメてるんでソースは勘弁(w
>>172 今考えている 複数のキャラクタが表示出来るコンポは
property lines:TStrings;
を持たせて、内部は Flines:=TStringList.Create;
で、Lines.Objects[] に
IMyDrawItem = interface (IUnknown)
function SetText(s:string):boolean; //表示文字列を渡す(エラーならfalse)
procedure Paint(Canvas:TCanvas); //描画させる
function DragID(x,y):Integer;//0以上なら制御点
function Drag(x,y,ID):bool; // x,y の位置にIDの制御点を動かす。動かしたら true
function GetText:string; //DragがTrueなら読返す
procedure GetBox(var rect:TRect);//全部が描画出来る箱のサイズ
end;
と1対1で持たせるという方式です。
これなら簡単でしょ?
>>190 >クリック位置からどのリージョン選択するか判定する時は、リージョン回転無しでできないスカ?って事ッス
返信ありがとう。
クリック位置からの判定とリージョンの回転はなにか関係あるんですか?
同じ座標系なら PtInRegion() API ですぐに分かるんでは?
||
Λ||Λ
( / ⌒ヽ
|下手人
∪ / ノ
| || リージョンが回転済ならその通りです...
>>192 ∪∪
∧ ∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ミ@゚Д゚@ミ < 楕円など、回転して変になる奴はリージョンをかけない方向は?
(| 2ネコ | \真円とかポリゴンとか認めないでいたら?
~| _ |
し' `J リージョンの使い方を自分で限定してしまえばいいかもね。
ところで、あめネコ氏はどうしてそんなに百戦錬磨っぽいの。
>>191 そんなの普通思いつかないYO.発想がすごいや。
矢印を含むキャラクタ名を追加したら
内部で動的にオブジェクトを追加しておくってことでしょ。
で指定したいオブジェクトのIndex値orキャラクタ名をOIで指定すると
そのオブジェクトのプロパチがOIで指定できるって事かな。
出来たらすごい。
>>194 >楕円など、回転して変になる奴はリージョンをかけない方向は?
うん、これならいいよね。
ポリゴンみたいに、複数の点だけで完全にリージョンを記述できれば
回転は簡単だよね。例の三角と長方形の矢印だったら7点の座標を
保持すると、回転は外接矩形の中心を原点にして任意にできるね。
ちょっとトライしてコンポーネントつくってみる。
みんな、ありがとね。
>>194 いや、あの・・・・オブジェクトインスペクタにいちいち登録したら
逆にうっとうしいと思う。
あめ猫の考えてるのは単に TStrings 用のエディタで編集するだけです
LINE ,10,10,100,200 みたいにね
これをマウスで移動とか出来るようにすれば便利かなと
この土日には雛型作ってみるから、 便利そうだったら誰か
拡張して、プロパティエディタとか作って欲しいなと・・・
ところで、今、線分と点の距離とか
ttp://www.infoeddy.ne.jp/~tensyo/prog/linealgo.htm ここ見てるんだけど、ここに 楕円をベジェで描く方法とかもあるよ
>196 いいページ!Viva!あめ猫もViva
198 :
Delフサギコ :01/10/26 21:48
∧ ∧ ・・・・。 ミ ゚Д゚彡 拾ったネコ、あまり調子が良くニャイ。 ~ミ,,,,uuミ ご飯も飲み物もなんも食べないナー 元気になってくれるのかな。
>>198 その猫、元気になるといいね。
陰ながら祈ってるよ。
Delフサさん、あとの経過報告も頼むよ!
もう帰る....。
>>196 おっと、帰る前に、
いいページ紹介してくれて、ありがとう。
役に立ちそうだ。ベジェから直接リージョンは
作れないんだけれど、パスを通せばつくれそう。
やってみるよ。
201 :
デフォルトの名無しさん :01/10/27 00:59
質問。 フリーカーソルや、予約語機能をつけた エディタコンポーネントがありますね。 あれは、すべて自前のコードで実現してるんですか。 つまり、キー入力に応じてカーソルを移動、 カーソルの点滅や文字入力、削除、上書き、選択時の挙動にいたるまで すべて自分でコードを書かないといけないのですか。
202 :
デフォルトの名無しさん :01/10/27 01:07
>>201 他人の褌を使っているうちはろくな事はできないと思われ。
>>203 それはWin標準のコントロールだとダメってこと?
>フリーカーソルや、予約語機能をつけた
>エディタコンポーネントがありますね。
関係ないけどエディタコンポすごいよな。
これ使った良質なソフトがどんどん出てきてるんだもの
Delphiのコンポ作者←→ソフト作者(コンポ使用者)の分業が
ものすごくうまくいってる感じだよな。
205 :
デフォルトの名無しさん :01/10/27 06:16
ListViewコントロールでエクスプローラーからのファイルのドロップを受け付けたいんですが、 「DragAcceptFiles()が未定義だゴルァ(゚Д゚)」と怒られます。 uses Windowsはしてあるんですが‥‥ どうやるんでしょうか。Win32API呼べないのでお手上げ状態です。
ShellApiじゃないの?
207 :
デフォルトの名無しさん :01/10/27 12:36
Delphi 6 ドキュメントアップデート #1 でたけど。 がいしゅつだよね?
208 :
ななしヘタぐらま :01/10/27 18:21
>>201 Edit程度でフォント幅固定ならそれほど難しくないのですが….
カーソル(キャレット)の処理は場所と大きささえ指定すれば
点滅はWindowsが勝手にやってくれます.
フォントがプロポーショナルだったり
さらに色つき,大きさ違いなどの修飾がつくと
飛躍的に難しくなりますけど.
,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ~′,,,,,,,ミ,,゚Д゚彡 < 201さんじゃないのですが UU""" U U \_______________ キャレットってどうやって表示するのでしょうか。 テキストビュワーなら自前で作ったことあるので そこにキャレットが表示できると 簡単なエディタになると思うのです。 プロポショなどは抜きで簡単なやり方を紹介してほしー
210 :
Delフサギコ :01/10/27 22:00
∧ ∧ ・・・・。
ミ ゚Д゚彡
~ミ,,,,uuミ
えっと、MLで話題になっているチャットプログラムって
>>67-68 で出てる要望を見たせますかニャ?
>>208 > カーソル(キャレット)の処理は場所と大きささえ指定すれば
>点滅はWindowsが勝手にやってくれます.
!
初めて知りました。DCを指定すると、キャンバスに描画するんですか?それとも
超基本エディタオブジェクトみたいな奴があって、それを継承した
モノに対してキャレット表示を行うのですか?想像できません。
LINE , 10,10,100,100 と入力 すると線が表示されるにゃ そこにマウスを持ってゆくと 色が変わるから ドラッグするにゃ 線なら全体移動、○まら端だけ移動
キャレットは(好きな言い方じゃないんだけど)CreateCaret, ShowCaret, SetCaretPos をヘルプで見てください。めちゃ簡単です。 追伸:キャレットはウィンドウに対して作ります。
∧,,∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ミ,,゚Д゚彡 < IDesigner がニャーです
>>212 U ミ \____________
ミ ミ
ノ∪∪
>214 どうもありがとうございます! ウィンドウにカーソルを表示することが出来ました。 質問ついでに。 日本語変換のときに、IME(なんの略なんだろう?)の 日本語入力&変換ウィンドウがでてきますね。 あれを任意の位置に表示するにはどうすればよいのでしょうか。
∧,,∧ うごきましたニャ。
ミ,,゚Д゚彡
ミつ[|lllll]). 複数個Lineを重ねると
~ミ ミ 全部同時に動いてしまうニャリ。
U''U
procedure TMyDraw.PropModified; {プロパティを変更した時の処理}
var f:TCustomForm;
var i:IDesigner;
begin
f:= GetParentForm(Self);
if f<> nil then begin i:=f.Designer; if i <>nil then i.Modified; end;
end;
ここのIDesignerが
var i:IDesignerHook;
こうだと思われ
>>216 はやいなー。ネコにもわかるように教えてくれにゃ。
簡単なサンプルなど、、キボンヌ...
Form1 上に Button1 を配置し、OnClick イベントに以下のように書きます CreateCaret( Handle, // 表示先 Window ハンドル。例えば Panel1 に表示するならば Panel1.Handle とする 0, // キャレットに使う Bitmap ハンドル。ビットマップを使用しない場合は 0. 2, //キャレットの横幅 16 // キャレットの高さ ); ShowCaret( Handle ); //キャレットを表示 SetCaretPos( 20, 30); // キャレットを移動(キャレットの左上座標(多分)を指定 …キャレットとカーソル、どちらがただしいのでしょう。 自分はカーソルのほうがしっくり来るんですけど。
あのう…大変な事に気がついてしまったのですが、 キャレットの表示にウィンドウハンドルがいるということはですよ、 TWinControl を継承したコントロールに対してのみキャレット表示が可能という事ですよね。 TGraphicControl を継承して文字を描画しようと思ったのですが、 もしかして不可能ですか。 キャレットを表示しつつ、文字描画をも行うには なんのコントロールを利用すればよいですか。
221 :
デフォルトの名無しさん :01/10/27 23:29
>>220 キャレット表示は基本的にフォーカスを持っていることを
示しているのだから TWinControl 継承が必須です。
TCustomControl はどうでしょうか?
>>219 どうもありがとうです。参考にして試してみたら、
キャレット位置にIMEウィンドウを表示することが出来ました。
uses IMM;
...
TForm1 = class ...
...
public
procedure IMEStart(var AMessage: TMessage); message WM_IME_STARTCOMPOSITION;
end;
procedure TForm1.IMEStart(var AMessage:TMessage);
var
CompForm: TComPositionForm;
CaretPos: TPoint;
LF: LogFont;
ImmContext:HIMC;
begin
ImmContext := ImmGetContext( Handle );
//キャンバスのフォントと同じに設定する
GetObject( Canvas.Font.Handle, sizeof(LogFont),@LF);
ImmSetCompositionFont( ImmContext, @LF);
//キャレットのポジションに設定する
ImmGetCompositionWindow( ImmContext, @CompForm );
CompForm.dwStyle := CFS_POINT;
//キャレット位置を取得
GetCaretPos( CaretPos );
CompForm.ptCurrentPos := CaretPos;
ImmSetCompositionWindow( ImmContext, @CompForm);
ImmReleaseContext( Handle, ImmContext);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
//キャレットの位置を設定
CreateCaret( Handle, 0, 2, 16 );
ShowCaret( Handle );
SetCaretPos( 10, 20 );
end;
>>222 、サンクスですよくわかりました。
uses IMMが追加で必要っすね
∧,,∧ /
(,,,,,,,ミ,,゚Д゚彡 < PanelなどだとTABSTOP=True
⊂,,,,,,,,,つつ. \にする必要があるのですね。
VCLのCanFocusはあてにならないし
どうしてButtonはTabsとp=Falseでも
クリックしたらフォーカスを他Ctrlから
奪えるのにPanelはだめなのかしら
PanelClickイベントに
Panel1.SetFocusと書いたら
出来たけど...
>>217 ∧ ∧
/∂⌒∂
(( × メ )) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
彡 ヘ ミ < ありゃD5 で試してたにゃ
( ⊂) \__________
◯(⌒Y⌒)
結局 中間変数を使わない事にしたにゃ
折線の時に便利かと思ってわざわざ複数選択が同時に出来るようにしてたにゃ
結局全体移動の時は複数選択出来ないように変更したにゃ
関数型のメソッドのinherited のやり方判らなくなったから procedure に直してるにゃ
で、便利そうかにゃ?
225をD6パーソナルで試すと、 なぜか編集中ドラッグしてると画面表示されないにゃ D5だと問題無いし、TMyDraw.IsDesgine:=True にして実行すると問題ない どうやら PropModified を呼び出すといけないみたいだ・・・ まあ Linesプロパティだけだから呼び出す必要ないかもにゃ
227 :
デフォルトの名無しさん :01/10/28 11:15
殺すなよ。殺人になるから(藁
--------∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
~□□ □□ ( ゚Д゚)< pasファイル添付もしてくれると嬉しいぞゴルァ
>>225 (O)----(O)U-U) \__________
230 :
デフォルトの名無しさん :01/10/28 13:25
>>227 気持ちはわかる。
手元で動的生成して、結果は単なるHTMLにするのがスマート。
231 :
デフォルトの名無しさん :01/10/28 13:55
印字可能な文字 はどのように定義されますか。 function IsPrint(C:Char):Boolean; begin result := C in [#20..'Z']; //でOKですか end;
あなたのところでは、日本語の印字は不可なのですね。
233 :
デフォルトの名無しさん :01/10/28 14:03
”半角”で印字可能な文字は function IsPrint(C:Char):Boolean; begin result := C in [' '..'~']; end; ただし半角カナ除く。
--------∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ~□□ □□ ( ゚Д゚)< 添え付けってなんだゴルァ(w (O)----(O)U-U) \__________
∧,,∧ 実行時も考慮すればDRAWツールの完成じゃないですか。 ミ,,゚Д゚彡 いいものを見せてもらいました。 ミつ[|lllll]). ~ミ ミ 感謝でございます。 U''U
237 :
デフォルトの名無しさん :01/10/28 17:18
TCustomControl 継承してコンポ作ってますが、なぜか キーを押しても、オーバーライドした KeyDown が反応しません。 MouseDown はちゃんと反応してくれますが。 KeyDown 内にブレークポイント設定してみたところ、 ブレークポイントの無効をしめす色に変わっていました。 コンポのコンパイル時に、オプション→コンパイラ→デバッグ情報 をONにしたのですが、結果は同じです。 どうすればよいですカ。
238 :
デフォルトの名無しさん :01/10/28 17:31
すいません。 キーが押されたら KeyDown メソッドが呼ばれるんじゃなくて、 KeyDownメソッドを呼ぶことによってキーダウンイベントが発生 するんですね… 逝ってきます。
239 :
デフォルトの名無しさん :01/10/28 17:34
やっぱり逝かなくていいですね。 キーが押される→ DoKeyDown → KeyDown → OnKeyDown の順で 呼び出されるから、キーが押されたときの処理内容を KeyDown に書くのは間違ってはいませんね。
240 :
デフォルトの名無しさん :01/10/28 17:37
>>237 MouseDownが呼ばれたときなどにSetFocusメソッドを呼びだして
フォーカスを取得しないとキーイベントは発生しないですよ。
>>238 >キーが押されたら KeyDown メソッドが呼ばれるんじゃなくて、
これで合っています。コントロールがフォーカスを持っているときに
キーが押された場合、KeyDown メソッドが呼ばれます。
うーん、フォーカスは取得しているはずなんです(;´Д`)
>>242 普通のアルファベットのキーとかが認識できないのか?
それとも特殊なキー(ALTとかカーソルとか)が認識できないのか?
調べるのにちょっと手間取った。
>>243 の続き。
もし>243の通りなら、
procedure CMWANTSPECIALKEY(var Msg: TMessage); message CM_WANTSPECIALKEY;
をpublicに追加、実装はResultに1を入れてみるがよい。
外してたらスマソ
>>241 ∧,,∧ ガビーン
ミ゚Д゚,,彡
⊂ ⊂ミ そそそそ
⊂゙゙ 〃 そんな、ご無体な
/(/″
Delあめ猫さん鋭すぎ(w
どうやらキーニュー力部ではなく。その後の処理の仕方に問題があるようなんですが、いかんせん
>>237 (後半)の状態で
ステップ実行すらできないのです…
248 :
デフォルトの名無しさん :01/10/28 20:42
>>247 まさか実は override していなかったとか無い?
ブレークポイントを置けないというのはそうとしか考えられない。
>>246 あめ猫の今回の動機は、
設計時にドラッグとか出来るようなDrawグラフィカルなコンポって
出来るのかなって疑問だけだったから、まあだいたい出来るって
結論出たら、それ以上やる元気が出ないんだよね
マウスの右ボタンでメニュー出したりは普通の処理だから出来る
の判ってるしさ
・・後メニューを付けたりアイテムを増やすのは、手間はかかるけど
そんなに難しい処理じゃないと思うけどなあ・・・
>>249 それは、きっと使う人が追加してくれるでしょうニヤソ
そして、きっと追加した人が公開してくれるでしょうコジキスマソ
>>244 >procedure CMWANTSPECIALKEY(var Msg: TMessage); message >CM_WANTSPECIALKEY;
教えてもらった方法を試してみました…
KeyDown では、カーソルキー,TABは取得できませんでした。(BSやDEL,ENTERは取得できた)
そこで、CM_WANTSPECIALKEY ではカーソルキーも取得できたので
procedure CMWANTSPECIALKEY(var Msg: TMessage);
に
var
w:word;
begin
w := Msg.WParam;
KeyDown(w,[]);
と書きましたが、カーソルキーを押した場合、なぜか2回分カウントされます。さらに、シフトの状態がわからないではありませんか(TAB 及び TAB+SHIFT等)!
とりあえず、いろいろ試してみます。
>>255 inherited呼び出した?
呼び出したあとにResultに値入れるのが吉。
あ、気が付いたら $100 ゲットw んと、要は inherited; して、メッセージのパラメータ見て 必要ならResultに1いれて、それで終了。 だったハズ。 大分前にいじったから少し忘れてる。 なので確証はない…スマソ。
258 :
デフォルトの名無しさん :01/10/29 00:32
procedure TKCustomMemo.cmWantSpecialKey(var Msg: TMessage); var Key:Word; begin inherited; Msg.Result := 1; Key := Msg.WParam; KeyDown( Key, [] ); end; としたら、カーソルキーとエンターが3回カウントされるようになりました(;´Д`)
259 :
デフォルトの名無しさん :01/10/29 00:35
ん、「必要なら」とはどういうことでしょう。 KeyDown イベントで無事処理を終えた場合はパラメタに 何かの値が入っているから、そうでない値(=処理できなかった) 場合に限って result := 1 ; をせよ、という事ですか?
260 :
デフォルトの名無しさん :01/10/29 01:24
Javaってメモリの自動解放って有りますがDelphiにはそのような物が有るのでしょうか? 全くの未経験なので、、 あったら凄く便利なんで。
標準ではありませんが,実現しているコードライブラリがあります.
>>258-259 説明不足スマン。
今一度よくコード見てみた。
procedure Tなんちゃら.CMWANTSPECIALKEY(var Msg: TMessage);
begin
inherited;
If Msg.WParam in [必要なキーの集合] then
Msg.Result := 1;
end;
なコードでよかったハズ。
あとはKeyDownのオーバーライドで処理すれば無問題。
また外してたらスマソ。
∧∧ で。BorConは大丈夫なの? ⊂ミ,,゚Д゚彡つ ∩∧_∧∩ ヽ( ´∀`)ノ タカイタカーイ ( ) | | | (__)_)
>>263 実体をとった後に TAutoObjRef に関係付けなきゃいけないところがダメ。
それができるくらいなら開放コードを書くよ。
_____ /...... .. .../ ||::: ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ̄\ ミ ゚Д゚ミ< ダメとか言われても知らん | |: ̄U U ̄:|\_________ ガベコレがあればうれしいけどね。 なくてもそうは困らない。
267 :
デフォルトの名無しさん :01/10/29 23:58
268 :
Delフサギコ :01/10/30 00:08
∧∧____ / ̄ ̄ ̄ ̄ ̄ /ミ;゚Д゚ミ ./\< インターフェースが /| ̄∪∪ ̄|\/ \なんか変 |____|/ うーん。COMを引きずらないで ,,,,∪∪,,, ,, Java並にまともなインターフェースを 実装してほしかった。 QueryInterface _AddRef _Release のないインターフェースがなぜ作れなかったのだろう。
VCLからも使われない、COMも使えない インターフェースなんてDelではそんなに使い道ないだろ。
おれはD6使ってないんだけど、IInterfaceっていう素のInterfaceが 出来たんじゃなかったっけ?違った?
271 :
デフォルトの名無しさん :01/10/30 00:20
>>268 つまり参照カウンタ管理機能の無い、単なるメソッドテーブルと化した
インターフェースが欲しいって事?
あればあったで便利かもしれない。
いつのまにかIUnknownからIInterfaceになったのかと思えば メモ IInterface は IUnknown と同等です。 一般的には,プラットフォームに依存しないアプリケーションには IInterface を使用し, Windows に依存する部分があるプログラムには IUnknown を使う必要があります。 ですって。ダメダメです。前と同じ。 どうして素のInterfaceを用意していないのか 聞いてみたい。小一時間。  ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ∧,,∧ ホエホエ ミ,, ゚Д゚彡 〃つ旦O ~ミ,,[ ̄ ̄ ̄.]  ̄ ̄ ̄ デザパタやりにくいやんか。 どうしてInterface変数を破棄するときに オブジェクトの破棄命令が動作するの。しなくていいっつの。
カウンタいじるんじゃいけないの?
QueryInterface _AddRef _Release を空実装すればいいのでは?
_________ ∧,,∧ / さんぷる書いてみますね。 ミ,,゚Д゚彡< ミつ つ \ ちこっとまっとくれ。 ~ミ ミ.  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ U U
276 :
デフォルトの名無しさん :01/10/30 02:07
TListViewに5500個ほどアイテム突っ込むのに4分ほどかかるんですが こんなに時間かかっていい物なんですか? ふつうにリストからデータ引っ張り出してListViewに入れてるだけなんですが‥‥
∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ,,゚Д゚彡 < 婆ちゃんListViewを使うのじゃないかな? ,;゙ ミ \_____________ ミ. ミ /゛゛゛゛ よくしらなーい。 Virtual と ListViewって単語で検索してみてくださいな。 眠い・・・・サンプルは明日になります。スマソウ
278 :
ななしヘタぐらま :01/10/30 02:33
>>276 っていうか5500個って多すぎませんか?
プログラムがサクッと動いたとしても
使い勝手が激しく悪そうな気がするのですがどうでしょう.
>>278 ファイラー作ろうとか思ったら、そうなってしまうこともたまにあるかもしれない。
てことじゃないのかな。
やっぱOwnerDataをTrueにして、OnDataイベントで見えてる範囲だけ追加の方向で
281 :
デフォルトの名無しさん :01/10/30 06:53
えとですね、おそらくループでまわして5500個入れてるとおもうのですが、 単に add してるだけだと、1個アイテムを入れるたびに再描画するのですよ。 BeginUpdate してから5500個入れて EndUpdate. それでも足りなかったら Items:=TListItems.Create して5500個入れ、最後に TListView.Items.Assign( Items ) する。
あめ猫も矢印アイテムをインターフェースで書こうと思ったけど TStringsのObjectsにインターフェース綺麗に入れらないから止めちゃった でも後から考えたら インターフェースの動的配列作って、TStringsを継承して 外からはTStringsに見えるようなの作ればよかったかも・・・・
>>282 インタフェースのドラフト晒してみれば、良い知恵出ないかな?
284 :
Delフサギコ :01/10/30 16:05
285 :
デフォルトの名無しさん :01/10/30 16:23
>>284 インターフェースの中身はメソッドテーブルって事は知っているよね?
そのメソッドテーブルはオブジェクトのインスタンス毎に生成されています。
インスタンスを廃棄した場合、メソッドテーブルも同時に廃棄されます。
インターフェースの参照を解放する前にインスタンスを廃棄してしまった場合、
_Releaseメソッドなどを呼びだそうとすると既に存在していない
メソッドテーブルを参照しようとしてメモリアクセス違反が起きます。
これは回避不可能なので、あらかじめ nil を代入しておき _Release メソッドの
自動呼び出しを抑制するほかありません。
286 :
Delフサギコ :01/10/30 16:33
_________
∧,,∧ /
ミ;゚Д゚彡< ゼンゼンんしらにゃー。
ミつ つ \
>>285 さん、ありがとう。
~ミ ,, ミ.  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∪∪
> インターフェースの中身はメソッドテーブルって事は知っているよね?
知りませんです。
なんとなく、そんな気はしますが。
> そのメソッドテーブルはオブジェクトのインスタンス毎に生成されています。
> インスタンスを廃棄した場合、メソッドテーブルも同時に廃棄されます。
なるほどなるほど。
つまり、インターフェース変数にはメソッドテーブルが入るという事ですね。
> インターフェースの参照を解放する前にインスタンスを廃棄してしまった場合、
> _Releaseメソッドなどを呼びだそうとすると既に存在していない
> メソッドテーブルを参照しようとしてメモリアクセス違反が起きます。
えーーーー!!!
nilが入っていないとメソッドテーブルの実体はなくなっているのに
インターフェース変数の参照が消える時にメソッドテーブルにアクセスしようとするわけですね。
> これは回避不可能なので、あらかじめ nil を代入しておき _Release メソッドの
> 自動呼び出しを抑制するほかありません。
にゃんじゃって~~~!
こんな実装した奴どこの誰ジャー--
∩,,,,,,,,,,,∩ ,,,_
~⊂`'''''''''ミ。Д。ミ⊃ ギャフーン
`'''''''''''∨ ∨
気を取り直して....暗い話題でも。 _________ ∧,,∧ / ミ;゚Д゚彡< D6UP1でもTToolbarのCustomizeがバグったままだと ミつ つ \思うのですが・・・・・・ ~ミ ,, ミ.  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∪∪ バグなのか、仕様なのか・・・
288 :
デフォルトの名無しさん :01/10/30 19:28
289 :
デフォルトの名無しさん :01/10/30 20:00
ウィンドウリスト取得や位置設定を カプセル化したユニットがあるけど、公開しようか?
∧,,∧ / ̄ (,,,,,,,ミ,,゚Д゚彡 < こんなんすると、いろいろなWindowHandleが取得できるから ⊂,,,,,,,,,つつ. \それでアクティブと位置を求めるといいかも。 WindowList: TList; はFormのprivateでもっていてね。 type TWindowInfo = class Handle: HWND; Classname: String; Caption: String; end; function EnumWndProc(Wnd: HWND; WndInfoList: TList): BOOL; stdcall; var WndClassname, WndCaption: array [0..255] of Char; ProcessID : DWORD; WindowInfo: TWindowInfo; begin //ウィンドウの表示状態をチェック if IsWindowVisible(Wnd) then begin //ウィンドウクラスの情報を取得 GetClassname(Wnd, WndClassname, 255); SendMessage(Wnd, WM_GETTEXT, 255, Integer(@WndCaption)); WindowInfo := TWindowInfo.Create; with WindowInfo do begin Classname := WndClassname; Caption := WndCaption; Handle := Wnd; end; WndInfoList.Add(WindowInfo); GetWindowThreadProcessID(Wnd, @processID); end; //if IsWindowVisible(Wnd) then Result := True; end; procedure TForm1.Button1Click(Sender: TObject); var i: Integer; Str: String; begin EnumWindows(@EnumWndProc, Integer(WindowList)); for i := 0 to WindowList.Count-1 do begin Str := IntToStr( TWindowInfo(WindowList.Items[i]).Handle) +' '+ TWindowInfo(WindowList.Items[i]).ClassName +' '+ TWindowInfo(WindowList.Items[i]).Caption +' '; Memo1.Lines.Add(Str); end; end;
ごめんなさい。問題点をはっきり書くべきでしたね。 えとですね、今考えてる手順は 1.アクティブウインドウのハンドル取得。WindowRect取得。 2.ボタンの数を数えたり、タイトルバーの高さとかいろいろ調べる。 3.borderstyleがnoneなフォームを、位置を考えながらペタッと貼りつける です。で、困ってることと言うのは、アクティブウインドウが 「最前面に表示するウインドウ」だった場合、隠れちゃうんで困ったなぁ って言う感じで考えてました。 手間かけてすいません。
292 :
Delフサギコ :01/10/30 21:01
∧,,∧ タイマーでまわしてみました。 ミ,,゚Д゚彡 ミつ[|lllll]). SetWindowPosがポイントですね。 ~ミ ミ U''U タイマー以外の方法あったら教えてください。 Window列挙なんて必要ないのね。 procedure TForm1.Timer1Timer(Sender: TObject); var AHandle : hWnd; ARect : TRect; begin ARect := Rect(0, 0, 0, 0); AHandle := GetForegroundWindow; while (AHandle <> HWND(nil)) do begin if IsWindowVisible(AHandle) and (not IsIconic(AHandle)) then Break; AHandle := GetWindow( AHandle, GW_HWNDNEXT); end; if AHandle = HWND(nil) then raise Exception.Create('Windowの取得に失敗しました'); GetWindowRect( AHandle, ARect ); if AHandle <> Self.Handle then begin Label1.Caption := IntToStr( ARect.Top ); Label2.Caption := IntToStr( ARect.Left ); Self.Top := ARect.Top; Self.Left := ARect.Left + 50; SetWindowPos(Self.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE); end; end;
なるほどー。 タイマー使って最前面に表示させつづけるわけですね。 サンプルコードどうもです。
確かWM_ACTIVATEかWM_ACTIVATEAPPだった記憶が 拾ってみなされ
>>294 あう。。。
もしかしたら、それやろうとしたら、サブクラス化しないといけないですか。。
サブクラス化はまだ勉強中っすー。
>>294 どうやってひろう?
システムグローバルなフックでもインストールする?
うん、これが一番美しいかなぁ。
>>295 サブクラス化は関係ないと思う。
苦渋をなめた経験的には、Delフサギコのタイマー駆動が一番無駄なく期待通り(w 誤動作も無いしデバッグもしやすい
つまりストーカーするならゴミの日にゴミ箱漁るより、監視カメラを仕込む方が確実ということですか(´Д `)ハァハァ
>>297-299 タイマーで監視は簡単かもしれないが、PGとしては心痛まない?
ゴミの日でもないのに、1秒ごとにゴミ置き場を見に行くんだぜ。
フックでメッセージを捕まえられれば、ゴミの日に収集車から電話
で直前に知らせてもらうのと同じだぜ。他の事に専念できるし、
寝ててもいいし。
ちと遅レスになってしまいましたが。
>>277 sampleディレクトリの中にあったんでソース覗いてみます。
>>278 一括置換用のツールの操作対象ファイルの一覧です。
(特定ディレクトリ以下で特定条件を満たしたファイルを除く全ファイルに対して複数の置換処理(Webページのヘッダ部分書き換えとか)をバッチ処理するツール)
たまたまテストしたディレクトリ(Apacheのドキュメントルート)にPHPのマニュアル(約2500ファイルw)とかがあっただけなんですが異様に遅かったのでどこか不味かったかな?と思ったんで。
>>281 こっちのほうが簡単そうなのでとりあえずこっちで様子を見てみます。
>300 グローバルフックも結構コストかかるような気がするけど(´Д `)
慣れると OwnerData モードのほうが簡単です そういえば ownerdata とかで google で検索してもあんま出てこないんですけど 検索のしかたが悪いんでしょうか?
304 :
デフォルトの名無しさん :01/10/31 13:31
>>286 COMインターフェースは基本的にリファレンスカウンタを持つから
そういう実装になるのは当然だよ。
Delphi 2 では、インターフェースは言語でサポートされておらず
class 宣言を使って擬似的にインターフェースを定義していた。
参照カウンタも AddRef,Release メソッドを呼びだして自分で
管理する必要があったんだよね。
俺は言語レベルでリファレンスカウンタを自動的に管理してくれる方が
良いが、単なるメソッドテーブルとしてインターフェースを使いたい場合
それが邪魔になるということだね。
305 :
デフォルトの名無しさん :01/10/31 13:57
307 :
デフォルトの名無しさん :01/10/31 14:06
256色BMPの保存および読み込みを独自関数で行いたいと思っています。 (パレットを独自で管理したいと思っているので) ご存知の方がいましたら、教えていただきたいです。 よろしくお願いします。
308 :
デフォルトの名無しさん :01/10/31 14:08
>>307 質問の内容がまったく分かりません。
我々は何を答えれば良いのでしょう。
>>306 は リンク先msg38 の修正をしてからインストールして下さい。
修正しないと Destroy でミスしてるので困った事になります
310 :
デフォルトの名無しさん :01/10/31 14:54
>>307 すみません。そのとおりです。
もう一度質問させてください。
256色BMPの保存および読み込みの方法を教えていただけないでしょうか?
または、パレット管理のよい方法が知りたいです。
Delphi標準のだと256色BMPの保存、読み込みは出来るのですが
パレットで躓いてしまいます。
1)BMPを読み込み、パレットを取得
2)BMP編集後、上記1で取得したパレットで256色で保存
3)BMPを読み込み、上記で1)取得したパレットで表示
というような処理をしたいのです。
よろしくお願いします。
311 :
デフォルトの名無しさん :01/10/31 14:56
Delphi思いっきり逝って善し。死言語デス
>>304 さん、レスサンクス
インターフェースも継承できるのだから
COMに依存しないインターフェースを作って
そこからIUnknownを派生させればいいのにと思うニャ。
というかクロスプラットホーム環境でまで
なぜCOM的なリファレンスカウンタ実装しなきゃならないのか
納得いかない。
TObject以下のクラス変数=ポインタは
DelphiPascalの利点だったけど
このインターフェース変数の実装は
明らかにJavaに劣る欠点だと思うニャ
 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
∧,,∧
ミ,, ゚Д゚彡
〃つl⌒|⌒l
~ミ,,[ ̄ ̄ ̄.]
 ̄ ̄ ̄
>>312 それは Delphi は Java では無い。から。です。
____ /...... .. .../ ||::: ∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |: ̄\ ミ,, ゚Д゚ミ< と、過激に言ってはみたものの |: :|: ̄U U ̄:|\_________ |: :|: .:| _____ /:\._____\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |: ̄\ ミ ゚Д゚ミ < ちょっと後悔 |: :|: ̄U U ̄:| \_________ .______ |: :\. \ 隠れとこう |: :|: ̄U U ̄:| インターフェース変数に入れた時は オブジェクトを開放しないように気をつける という対処方法でよいかニャ
うぅ~ん~ JAVAに劣るってのがよくわからにゃいな・・でもこの話題に触れると 荒れそうだから放置 デストラクタ Destroy 以外の名前に出来るけどやらないでしょ? オブジェクトの削除方法は共通の方がいいに決まってる。 だから、インターフェスじゃデストラクタを最初から用意したってだけのことでは?
316 :
デフォルトの名無しさん :01/10/31 15:40
>>310 普通にTBitmapで256色BMPをロードしてきたら、Paletteプロパティにパレットハンドルが入ってて、GetPaletteEntriesのAPIでパレットの内容を取って来たり、SetPaletteEntriesのAPIでパレットの内容を変更したりできるはずでえす。
317 :
デフォルトの名無しさん :01/10/31 15:45
>>310 それでも独自処理の方を望むなら、ぐーぐるとかで BITMAPFILEHEADER を引けば、BMPファイルの構造を教えてくれるので、自分で1バイトずつ読みながら必要な情報を取り出したり、保存するときは1バイトずつ書き込んでBMPファイルを作り上げれば良いです。
318 :
デフォルトの名無しさん :01/10/31 15:58
>>312 どうしても nil 代入をしたくないというのなら下のような方法もある。
実装クラスにインターフェースを持たせるのではなく、別クラスに
インターフェースとしての機能を持たせるのです。
この方法だとTHogeImpの生死は、インターフェースの参照カウンタとは
完全に無関係になります。
type
// とりあえず作るインターフェース
IHoge = interface
procedure ShowMessage;
end;
// ITest のメソッドを実装するクラス
THogeImp = class
public
procedure ShowMessage;
function GetHoge: IHoge;
end;
// インターフェースを実装するクラス。
TTestImpAdapter = class(TInterfacedObject, IHoge)
private
FImp: THogeImp;
public
constructor Create(AImp: THogeImp);
property Imp: THogeImp read FImp implements IHoge;
end;
implementation
procedure THogeImp.ShowMessage;
begin
Windows.MessageBox(0, 'テスト', 'ほげほげじゃ', MB_OK);
end;
function THogeImp.GetHoge: IHoge;
begin
Result := TTestImpAdapter.Create(Self);
end;
constructor TTestImpAdapter.Create(AImp: THogeImp);
begin
inherited Create;
FImp := AImp;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
HogeImp: THogeImp;
Hoge: IHoge;
begin
HogeImp := THogeImp.Create;
Hoge := HogeImp.GetHoge;
Hoge.ShowMessage;
HogeImp.Free; // nil 代入するまえにFree しても
Hoge := nil; // エラーが起きない
end;
>>319 解決する問題と
解決しそうにもない問題を切り分ける能力くらい持ってくれ。
>>306 >>309 のコンポは
Linesプロパティに
RTEXT,39,138,164,218,34,TEST漢字
みたいに定義すると斜めのラベルを貼ったように使えます
けっこう面白いのですが、ドラッグでサイズ指定する時が、
なんか格好悪いのです。 何か巧い方法はないでしょうか?
今は四隅をドラッグするとサイズ指定になっています
>>318 のやつは面白いねぇ。たぶん使わないけど(笑)
×sysytem.Handle ○Application.Handle ・・・鬱
\ テケテケ / ___.___. ∀  ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ . .| ┷┳━ ∧,,∧,,,,,,,,,,,,,,,  ̄ ̄ ̄ ̄ ̄ ̄ ̄|... ┃ ミ゚Д゚,,彡,,,,,,,, ゙~  ̄ ̄ ̄ ̄ ̄ ̄ ̄ .┻ U U """"UU ∫ _________ ∧,,∧ ∬ / ミ,,゚Д゚彡っ━~ < ただーいま。.. _と~,, ~,,,ノ_. ∀ \ ミ,,,,/~), │ ┷┳━  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ .じ'J ̄ ̄| ┃  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ┻ いろいろ教えてくださってサンクスコ。 話が複雑すぎてついていけない、恭子の語呂
>>325 GetDC(0) でスクリーンDCのハンドルがいつでも使える。
,∧,,∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ミ,,゚Д゚ 彡< 教官!!
>>318 さんのコードが
__ミ ミ ミ \_なぜ動いているのかわからません
\,,∪  ̄ ̄ ̄\
||ヽ|| ̄ ̄ ̄ ̄||"
...|| ̄ ̄ ̄ ̄||
○interfaceってGUIDなくてもいいのかニャ?
○IHogeをinterface継承しているのに
TTestImpAdapterは
procedure ShowMessageを作らなくても
いいのかニャ?
○ property Imp: THogeImp read FImp implements IHoge;
つーか implements 指令って何これ?
○ Hoge.ShowMessage;
なぜTHogeImp.ShowMessageが呼ばれるのか....
ニゲロー
∧,,∧ ──────
ミ゚Д゚,,彡 < さぱーり理解できませーん。
⊂⊂ ミ──────
ヾ ,,ミ~ ────
し じ ─────
こんなコード、いったいどこで取引されているのYO・・・・
やはり闇市場でしょうか...
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ̄ ̄ミ,,゚Д゚ミ ̄| < もう寝ます。 |\⌒⌒⌒⌒⌒⌒\ \ | \ \  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ \ |⌒⌒⌒⌒⌒⌒| きっと明日になったらわかる、きっときっと \ |_______|
Delあめ猫のレヴェルの高さに、舌を巻いてる奴は多いと思われ(w
>>327 了解にゃ・・・ありがと
>>330 なんか かいかぶりすぎ
GUI用の計算ソースはあのページからカッパラッたもんだし
回転関係は普段良く使うから慣れてるだけだにゃ
○interfaceってGUIDなくてもいいのかニャ? いい。省略可能。 ○IHogeをinterface継承しているのに TTestImpAdapterは procedure ShowMessageを作らなくても いいのかニャ? いい。property Imp: THogeImp read FImp implements IHoge; で、FImpにIHogeの実装を委譲しているから。 ○つーか implements 指令って何これ? property xxx: Txxx(もしくはIxxx) read Fxxx implements Ixxx; で、Txxx型(Ixxxを実装している)のメンバFxxxにそのクラスのIxxxの実装を 委譲する。 ○ Hoge.ShowMessage; TTestImpAdapterはIHogeインターフェースをTHogeImpに委譲してるので、 THogeImp.ShowMessageが呼ばれる。
334 :
Delフサギコ :01/11/01 10:05
∧ ∧
>>333 ミ ゚Д゚彡 すごすぎ
~ミ,,,,uuミ
なぜにsage進行・・・・ageとくかしら
335 :
Delフサギコ :01/11/01 14:47
>>333 (サンサンサン)さん、サンクスコ(「さん」がイパーイ)
_________
∧,,∧ /ようやく
ミ;゚Д゚彡< 理解はできたのですが
ミつ つ \ こういうアダプターを作る方法が
~ミ ,, ミ. いいのか悪いのか…
∪∪
Interfaceに関係なく重複メソッドのあるVCLには
こういうInterfaceアダプターを作るのは
都合がいいかもしれないけど
素直にコーディングしたい時には
なんというか複雑怪奇な
コードにならざる得ないような…気がしています。
実際にはIHogeインターフェースの参照が無くなる時には
TTestImpAdapterが破棄されているわけですよね。
THogeImp.GetHogeを内部に隠さなければわかりやすい。
procedure TForm1.Button1Click(Sender: TObject);
var
HogeImp: THogeImp;
Hoge: IHoge;
begin
HogeImp := THogeImp.Create;
Hoge := TTestImpAdapter.Create(HogeImp);
Hoge.ShowMessage;
HogeImp.Free; // nil 代入するまえにFree しても
Hoge := nil; // エラーが起きない
end;
TTestImpAdapter が TInterfacedObject を継承しているから
TTestImpAdapterは破棄する必要がないといえばないのですが。
納得いかないなあ。これがBorlandの選択なのかな。
Delphi以前の class型のない object型の時の ObjectPascalみたいな
不便さを感じる。(ってDelphi以前の事は知らないですが)
インターフェース変数に代入するときに
自動的に内部でアダプター作ってくれりゃあいいのに
と思うのは俺だけかな?
∧,,∧l||l 最近、文句いってばっかだニャ
;゙⌒ヽ彡 トホホ
~ミ___ミ
''" ""''"" "''
Delphiによりよくなってもらいたいの。
C#にもJavaにも負けて欲しくないの。
GUIDがなくてもOKってのはいい事を聞きました。感謝。
336 :
デフォルトの名無しさん :01/11/01 16:42
integerとExtendedに互換性がないって出ました 解決法は無いですか?
ありますよ。 丸め関数を呼べばOK 例えば Roundとか Extended に integer を代入はOK
338 :
デフォルトの名無しさん :01/11/01 17:20
あ、Roundがあったんですね。 どうもです。
なんつーかマイナーだな<Round
∧,,∧l||l 腹をこわした。 ;゙⌒ヽ彡 ~ミ___ミ ''" ""''"" "'' クワッ ∧,,∧l||l Delphiの悪口言ったら ;;゙ミ゚Д゚彡 バチあたったんか! ~ミ___ミ ''" ""''"" "'' ∧,,∧l||l あた、、あたたたた。(TДT ;゙⌒ヽ彡 ~ミ___ミ )) ''" ""''"" "''
>フサギコさん お大事に。猫は元気ですか?
∧,,∧l||l 彼女は病院に入院中です。 ;;゙ミ゚Д゚彡 名前はトラギコかトラしーちゃんにしようか...検討中 ~ミ___ミ いま一つ体調はよくならないのです。点滴うってもらってます。 ''" ""''"" "'' ∧,,∧ そうそう。彼女の痛みに比べりゃ ;゙⌒ヽ彡 この腹の痛みなど、大したことないよな。 ~ミ___ミ ''" ""''"" "'' ♀の子だから、トラしーちゃんかな…ヤパシ
杞紗がいい。
いやー、今朝夜食買いにコソビニ逝ったら、 途中の道の中央分離帯のところで交通事故死したと思われな、 黒い子猫の死体をハッケソ、一気にウトゥになったよ… Delフサのウトゥな気分を垣間見た気がする…
346 :
デフォルトの名無しさん :01/11/02 07:29
>非効率的な気がします。 気がしますって... プロファイル取ったの?
いえ。単に、2回も3回も同じ場所を検索しているから 非効率的だと思っただけです。
.∧,,∧ ∧,,∧ ∧,,∧ ∧,,∧ ∧,,∧ .∧,,∧
ミ,,゚Д゚彡 ミ,,゚Д゚ミ ミ,, 彡 ミ,, ミ .ミ゚∀゚,,彡 ミ゚∀゚,,彡 アヒャ
⊂ つ 〃 つつ 〃 つ ⊂ つ ⊂ミ⊂ ミ ⊂ つ
0 ミ~ ~ ,, つ ~ ,,つ ~ ,つ .⊂ ミ~ 0, ミ~
,` J (/ (/´ し´ ,`J `J
>>344 読めません。
>>345 時には出会います
>>346 フサが自作しているのはワイルドカードマッチを
無視して全検索するものなので、知恵はでてこないです。
∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (*゚-゚)⊃∧ < 最近シツモソが少ないねー __| つミ,, ゚Д゚ミ,,,,/~つ_ \______________ と_)ヽ,,,つ,,,,,,,ノJ | ━┳━  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|... ┃  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ .┻ 聞くは一時の恥、聞かぬは一生の恥ぞよ 何でも聞いてみましょうな。
>>348 他の方法は FileListBox を非表示で作成して temsを見る方法が思いつくけど
そういうの追いかけてもしょうがないと思うよ。
それがメインの物作ってるなら別だけど
その方法でも、そんなに待てない程は遅くないでしょう
うーん、いくらかばかりでも 盛り上げようと 問題提起をしてみたのですが(内容に問題があったか) 無理か…
∧,,∧ /
>>353 そでしたか、サンクスコ
ミ,,゚Д゚彡 < そもそも、ワイルドカド使うファイル検索って
U U \多用します?
~ミ ミ
∪∪
フサはワイルドカドなしファイル検索で十分なので
必要性を感じないのだけど...
みんな悩んでおおきくなった
356 :
デフォルトの名無しさん :01/11/02 16:38
まあ、正直なところ ワイルドカードよりも、任意の拡張子の ファイルを探す事 "しか" ありませんね。 *.txt こういう風にしか使わない…
Delの作業ファイル消すときに *.~*;*.DCUとかで使ったぐらいかなぁ
∧,,∧ トラしーちゃんが ミ,, 彡 亡くなったってさ。 ミ ミ ミ~,, ミ ∪ ∪
>>358 そうですか。残念でした....。
Delフサさん、元気出してね。
360 :
デフォルトの名無しさん :01/11/02 21:18
C++Builderで検索パスの設定に$(BCB)て書くとBuilderをインストールしたパスが 展開されたんだけどそういうのないの?
361 :
デフォルトの名無しさん :01/11/02 23:14
インターフェースを使うと何が便利になるのですか?
362 :
デフォルトの名無しさん :01/11/03 00:25
$(DELPHI) で良いのでは。 $PATH( $EXENAME ) でパス名取得とか、 そんなマクロもあったような(ツールの設定だけかな)
363 :
デフォルトの名無しさん :01/11/03 02:22
インターフェースを使った、同一プロセス内でモジュール をまたいだメソッドの呼び出しはこんなふうにやるのですか? ----------------------- Project.exe type IHoge = interface procedure Print; procedure Exit; end; THoge = class(TInterfacedObject, IHoge) procedure Print; procedure Exit; end; var Hoge: THoge; function GetHoge: IHoge; stdcall; begin Result := Hoge as IHoge; // Hogeは作成済みとする end; ------------------------ Library.dll type IHoge = interface procedure Print; end; var Hoge: IHoge; begin Hoge := GetHoge; // Project.exe の GetHoge Hoge.Print; end;
364 :
デフォルトの名無しさん :01/11/03 03:13
>>363 Project.exe と Library.dll が逆のような気がするけど、THoge を
作成したときに参照カウンタをあらかじめ一つ増やして置いてください。
そうしないと
>>363 の Library.dll 側で IHoge が必要なくなったときに
THoge が自動的に解放されてしまいます。
Hoge := THoge.Create;
Hoge._AddRef;
こんな感じです。
365 :
ななしヘタぐらま ◆B18Bks.Y :01/11/03 16:34
>>346 Del5ProにはMatchesMaskがない(はず)なので私も同じ方法ですが
複数のフォルダから時に千以上のファイルを検索してもストレスを感じないので
これで良しとしています.
2回目以後の検索ではディスクキャッシュが効いていますしね.
うちのはさらに"*.pas;*.dfm"といった複数のマスクにも対応させるために
フォルダごとに都合(マスク数+1)回検索していますけど
ストレスは感じませんでした.
ただ,どっかに不具合があるのか,この検索を使っている自作コンポを使うと
統合環境の2回目の実行で必ずDelphiごと固まってしまいます(涙).
メモリの開放,どこかで忘れたかなぁ???
∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ミ ゚Д゚ミ ∫<
>>361 多重継承みたいなことできます
.(ミ ミっ-~ \__________
~ミ,,⊃ミ⊃
TComboBoxとTEditのTextプロパティを同列に扱いたい場合
それぞれにインターフェースをくっつけてTextプロパティを
操作するとコーディング量がすくなくて済みます。
I := ComboBoxInterface1;
I.Text := ’ニテヨシ’;
I := EditInterface1;
I.Text := 'ヤイテヨシ';
こんな感じ。
>>365 *.*で全ファイルを検索して実際にファイル名を拾うときに
拡張子がpasか、dfmかという判断をする検索でも
6000ファイルをなめてもストレスはあまり感じてないです。
メモリリーク調査ユニットを使ってはいかがでしょうか?
TListView を仮想リストビューで使うとき、 OnData で表示する TListItem を作るわけですが、 同様のリストビューが複数必要なので、 TListView を継承したコンポーネントを作成しようと思いました。 モデルのクラスは固定です。 この場合、OnData や OnDataFind を定義した上で 外部から変更できないようにするのがいいでしょうか? それとも UpdateAction メソッドをオーバーライドして作れる?
複数っていくつ必要なのか知りませんが, そういう場合私だったら普通にイベントハンドラを使い, なるべくコメントでわかりやすくするようにこころがけます.
>>365 >Del5ProにはMatchesMaskがない(はず)なので私も同じ方法ですが
あるよ・・・。
370 :
デフォルトの名無しさん :01/11/04 00:25
インターフェースを使って、他の言語で作成されたモジュールとやり取りする場合、 WideString型の引数や戻り値を使っても大丈夫なのですか? Delphiで書くとこんなかんじです。 IHoge = interface function GetName: WideString; stdcall; procedure SetName(const AName: WideString); stdcall; end;
インターフェースとはどんなものか勉強しているのですが、 以下の as 演算子の使い方はなぜいけないのでしょうか? type ITestData = interface ['{BBF2BE95-FEE5-4CC2-9CEF-9C83E29BF234}'] function GetColumnText(Index: Integer): string; property ColumnText[Index: Integer]: string read GetColumnText; default; end; TTestComponent = class(TComponent, ITestData) private function GetColumnText(Index: Integer): string; public property ColumnText[Index: Integer]: string read GetColumnText; default; end; implementation function TTestComponent.GetColumnText(Index: Integer): string; begin Result := 'Column_' + IntToStr(Index); end; procedure TForm1.Button1Click(Sender: TObject); var TestIntf: ITestData; TestComp: TTestComponent; begin TestComp := TTestComponent.Create(nil); TestIntf := (TestComp as ITestData); // ← だめ end;
わかりましたすみません (汗
373 :
デフォルトの名無しさん :01/11/04 00:40
_AddRefと_Releaseを書き換えるやり方はどうなのでしょうか? type TMyInterface = class(TObject, IUnknown) function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall; function _AddRef: Integer; stdcall; function _Release: Integer; stdcall; end; IHoge = interface end; THoge = class(TMyInterface, IHoge) end; function TMyInterface._AddRef: Integer; begin Result := 1; end; function TMyInterface._Release: Integer; begin Result := 1; end;
>>284 のDelフサギコさんのやつをいじっているのですが
procedure TForm1.Button1Click(Sender: TObject);
var
NodeIntf: INodeData;
NodeComp: TNodeComponent;
begin
NodeComp := TNodeComponent.Create(nil);
NodeIntf := NodeComp;
Button1.Caption := NodeIntf.ColumnText[0];
NodeComp.Free;
end;
エラーになりません
なぜでしょうか?
375 :
デフォルトの名無しさん :01/11/04 00:53
Ver1のインターフェース IHoge = interface procedure Beep; end; Ver2のインターフェース IHoge = interface procedure Beep; procedure Exit; end; があって、EXE側でオブジェクトを作成する場合、 EXE(Ver1)、DLL(Ver1) EXE(Ver2)、DLL(Ver1) は問題ありませんが、 EXE(Ver1)、DLL(Ver2) の場合、DLLでIHoge.Exitは使えません。 DLLロード時に 『IHoge.Exit が見つかりません』等の エラーメッセージをオプション等で自動的に表示する事は 可能でしょうか?
376 :
Delフサギコ :01/11/04 00:54
同じ事で悩んでらしゃーる
Delマガを読むのがいいと思います。
他にInterfaceの教科書ってありますでしょうか。
>>みなさん
 ̄ ̄∨ ̄ ̄ ̄
∧,,∧
ミ,,゚Д゚彡
ミつ[デルマガ]).
~ミ ,, ミ
∪∪
>>374 たまたまかも。
フサもそういうタマタマエラーにならないことが
たくさんあって、わけわかに陥っていました。
> procedure TForm1.Button1Click(Sender: TObject);
> var
> NodeIntf: INodeData;
> NodeComp: TNodeComponent;
> begin
> NodeComp := TNodeComponent.Create(nil);
> NodeIntf := NodeComp;
> Button1.Caption := NodeIntf.ColumnText[0];
> NodeComp.Free; //※
> end;
※の部分でNodeIntfに代入してあるメソドテーブルが破棄されているので
確実にやばいと思います。
._Release: の実装内容にかかわらず
._Releaseの記述してあるメモリ領域が存在しないと
思った方がいいかも。
って、のであってるかな。
>>376 マジデスカっ!?
何度やっても全然エラーが出ないです・・・
MemCheck にもひっかからないです・・・
コワ~
379 :
デフォルトの名無しさん :01/11/04 01:07
INodeData; TNodeComponent; が何なのか解らないから、答えようがないのでは?
>>371 のTestをNodeと読み替えてください
ややこしくてすみません
381 :
デフォルトの名無しさん :01/11/04 01:10
NodeComp.Free; 後に NodeIntf._Releaseが呼ばれて、その中で NodeComp.Destroyが実行されるって事?
382 :
Delフサギコ :01/11/04 01:11
>>371 > procedure TForm1.Button1Click(Sender: TObject);
> var
> TestIntf: ITestData;
> TestComp: TTestComponent;
> begin
> TestComp := TTestComponent.Create(nil);
> TestIntf := (TestComp as ITestData); // ← だめ
> end;
TObjectのようなInterfaceを一つも継承していないものには
asが使えないらしい
ナカムラのタクちゃん....いや、中村大先生さまも
Delマガでぼやいてました。
>>378 変数スコープを抜けた時のことを考えて
プログラムしなければいけないのは
かなりきついですよね。
>>374 のコードでは
たしか_Releaseのコードにブレーク設定しても
ひっかからないと思われますがどうでしょう?
ひっかからないのはおかしいですよね。
>>379 普通の何かのCompoと何かのInterfaceなら
374コードは危険では?
 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
∧,,∧ サムイ ヨル アタカイ チャがウマイ
ミ,, ゚Д゚彡
〃つ旦O
~ミ,,[ ̄ ̄ ̄.]
 ̄ ̄ ̄
383 :
デフォルトの名無しさん :01/11/04 01:16
エラーは出ないけど、デストラクタは二回呼ばれています。 type IHoge = interface end; THoge = class(TInterfacedObject, IHoge) destructor Destroy; override; end; destructor THoge.Destroy; begin inherited; end; procedure TForm4.Button1Click(Sender: TObject); var HogeIntf: IHoge; Hoge: THoge; begin Hoge := THoge.Create; HogeIntf := Hoge; Hoge.Free; end;
384 :
Delフサギコ :01/11/04 01:20
仲良し仲良し・・・
∧,,∧ ゛
∧,,∧ ミ・ー・ミ
ミ ´ー`ミ∧ ∧ ∧,,∧ ゛ミ,,,,,,,,,ミ ゛
\ < (;゚Д゚) ミ゚Д゚ ミ /|
\.⊂ヽ \⊂ヽ ミ,,_//
\ ⊂ _,ノ ⊂ _,ノ゛/
∪∪ ̄∪∪"
チャットみたい。
>>381 > NodeComp.Free; 後に
> NodeIntf._Releaseが呼ばれて、その中で
> NodeComp.Destroyが実行されるって事?
NodeCompo.FreeするとNodeIntfが指し示すメソッドテーブルも破棄されてしまうので
NodeIntf._Releaseの処理のためのメモリ領域そのものがないので
_Releaseを呼び出したとたんにアクセス違反が起きる可能性がある
とフサは認識してるのですが。ちがうかも。
識者の方、間違っていたら指摘してね。
素直なやり方は
TInteafacedObjectを継承して
NodeIntf := TNodeCompo.CreateとしてFreeを行わずに
破棄は_Releaseに一任するのがいいと思いますよ。
>>383 デストラクタが二回よばれているのは変ですね?ナンデダロ
そのコードの場合、Freeはとりあえず必要ないです。
>>383 >エラーは出ないけど、デストラクタは二回呼ばれています。
呼ばれなくなりました!
function TNodeComponent._AddRef: Integer;
begin
Result := -1;
end;
function TNodeComponent._Release: Integer;
begin
Result := -1;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
NodeIntf: INodeData;
NodeComp: TNodeComponent;
begin
NodeComp := TNodeComponent.Create(nil);
NodeIntf := NodeComp;
Button1.Caption := NodeIntf.ColumnText[0];
NodeComp.Free;
end;
386 :
Delフサギコ :01/11/04 01:28
>>383 コードのままだと
,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
~′,,,,,,,ミ,,゚Д゚彡 < フサの環境では「無効なポインタ操作」例外でます
UU""" U U \_______________
>>383 のコードから
// Hoge.Free;
Freeをコメントアウトするとちゃんと動作します。
387 :
デフォルトの名無しさん :01/11/04 01:32
CreateしたものはFreeしないと気が済まないの。
388 :
Delフサギコ :01/11/04 01:36
,,,,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
~′,,,,,,,,,,ミ,,゚Д゚彡 < 同様の理由でヤバイと思うのですが…
UU"""" U U \_______________
> procedure TForm1.Button1Click(Sender: TObject);
> var
> NodeIntf: INodeData;
> NodeComp: TNodeComponent;
> begin
> NodeComp := TNodeComponent.Create(nil);
> NodeIntf := NodeComp;
>
> Button1.Caption := NodeIntf.ColumnText[0];
> NodeComp.Free;
> end; //※
※の段階でNodeIntf._Releaseが呼ばれるのに
実際の_Releaseがない(もしくは_Releaseを示すポインタがない?)
らしいですから...
_Releaseにブレークポイントを置いて
Free後に呼ばれているかトレース確認をしたらどうでしょう。
止まりますか?
>>387 と、、、言われても、俺もこんな実装嫌いですよ。
389 :
デフォルトの名無しさん :01/11/04 01:46
>>375 一度仕様が公開されるなどしたインターフェースは互換性を維持するため、
定義を二度と変更してはならないのです。新しいバージョンで新たなメソッドが
追加されるなどしたときは、新しいインターフェースを定義するのが普通です。
Ver1のインターフェース
IHoge = interface
['IHogeのGUIDを入れてちょ']
procedure Beep;
end;
Ver2のインターフェース
IHoge2 = interface(IHoge)
['IHoge2のGUIDを入れてちょ']
procedure Beep;
procedure Exit;
end;
としておいて、DLL 側 に HogeProc 関数があるとして下のようにすればよいんじゃないかな?
procedure HogeProc(Hoge: IHoge);
var
Hoge2: IHoge2;
begin
if Failed(Hoge.QueryInterface(IHoge2, Hoge2)) then
raise Exception.Create('IHoge2 が使えません。Ver2のEXEから呼びだしてください');
Hoge2.Exit;
end;
>>385 にしめすように無事に、自分で破棄できるオブジェクトができました
以下がまとめのソースです (interface 部)
type
INodeData = interface
['{BBF2BE95-FEE5-4CC2-9CEF-9C83E29BF234}']
function GetColumnText(Index: Integer): string;
property ColumnText[Index: Integer]: string read GetColumnText; default;
end;
TNodeComponent = class(TComponent, INodeData)
private
function GetColumnText(Index: Integer): string;
protected
function _AddRef: Integer; stdcall;
function _Release: Integer; stdcall;
public
destructor Destroy; override;
property ColumnText[Index: Integer]: string read GetColumnText; default;
end;
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
end;
var
Form1: TForm1;
(implementation 部) {$R *.DFM} destructor TNodeComponent.Destroy; begin inherited; // ← ここにブレークポイントおいて調べる end; function TNodeComponent.GetColumnText(Index: Integer): string; begin Result := 'Column_' + IntToStr(Index); end; function TNodeComponent._AddRef: Integer; begin Result := -1; end; function TNodeComponent._Release: Integer; begin Result := -1; end; procedure TForm1.Button1Click(Sender: TObject); var NodeIntf: INodeData; NodeComp: TNodeComponent; begin NodeComp := TNodeComponent.Create(nil); NodeIntf := NodeComp;// as INodeData; Button1.Caption := NodeIntf.ColumnText[0]; NodeComp.Free; // 自分で破棄できました。 // Destructor も1回だけです // なぜならば end; procedure TForm1.Button2Click(Sender: TObject); var NodeIntf: INodeData; begin NodeIntf := TNodeComponent.Create(nil); Button2.Caption := NodeIntf.ColumnText[0]; // このあとで NodeIntf がインスタンスを破棄しようとするが // 参照が -1 しか返さないのでそのまま // ※メモリリークします end;
392 :
デフォルトの名無しさん :01/11/04 02:02
定義を変更できないのは困ります。 これじゃ、気軽に公開出来ません。 ユーザーからの要望に応じてインターフェースのメソッドを 増やせないのか・・・。
393 :
デフォルトの名無しさん :01/11/04 02:05
>>392 だからメソッドを増やしたいときは、
>>389 に書いてあるように
新しいインターフェースを作ってしまえば良いのでは?
394 :
デフォルトの名無しさん :01/11/04 02:06
TWebBrowser だって Navigator2 とかじゃん
395 :
デフォルトの名無しさん :01/11/04 02:09
>>382 >TObjectのようなInterfaceを一つも継承していないものには
>asが使えないらしい
>>371 での TTestComponent の宣言を下のようにすれば as 使えるようになるよ。
TComponent = class(TComponent, IUnknown, ITestData)
なぜ使えるようになるかというと、コンパイラは IUnknown インターフェースが
クラスで実装されているかどうかを調べて、as 演算子が使用可能かどうか
判断しているみたい。
で、class 宣言にはクセがあって class 宣言で列挙されたインターフェースのみ
クラスに実装されます。つまり、あるインターフェースをclass 宣言に列挙したからといって
そのインターフェースの親インターフェースも自動的にクラスに実装されることはありません。
下のコードでこのことは確認できます。
type
IHoge1 = interface(IUnknown)
end;
IHoge2 = interface(IHoge1)
end;
THoge2 = class(TInterfacedObject, IHoge2)
end;
procedure TForm1.Button1Click(Sender: TObject);
var
obj: THoge2;
Hoge1: IHoge1;
Hoge2: IHoge2;
begin
obj := THoge2.Create;
Hoge2 := obj; // class 宣言で IHoge2 が列挙されているのでコンパイルできる
Hoge1 := Hoge2; // IHoge2 を IHoge1 に代入することは出来る。
Hoge1 := obj; // class 宣言で IHoge1 が列挙されていないのでコンパイルできない
end;
>393 その都度インターフェースを作っていたら、 インターフェースだらけ IHoge, IHoge2, IHoge3, IHoge4,.... になるのですが。 これは避けたい。
397 :
Delフサギコ :01/11/04 02:12
∧,,∧ / ̄
\,,,,ミ,,゚Д゚彡 < 371=
>>391 さん
⊂,,,,,,,,,つつ. \確かにコードは動きますね。
> Button1.Caption := NodeIntf.ColumnText[0];
> NodeComp.Free; // 自分で破棄できました。
> // Destructor も1回だけです
> end;
…うーん。NodeCompo.Freeの後にNodeCompo._Releaseが動作しても
いいものなのだろうか?
398 :
デフォルトの名無しさん :01/11/04 02:14
再定義した _Release が -1 しか返さないのでいいと思います
399 :
デフォルトの名無しさん :01/11/04 02:19
>>397 ,398
インスタンスが廃棄されたあとはインターフェースの内容は不定になるので
やっぱり_Releaseを呼びだしてはいけないと思います。
>>391 のケースでは、メモリが破壊されなかったとかなどでたまたま
うまく動いただけじゃないかな?
バグの原因になるのでやめた方がよいと思いますが…
400 :
デフォルトの名無しさん :01/11/04 02:26
_Release を class function には出来ないのかな・・・
∧ ∧
ミ ゚Д゚彡
>>400 同じ事、思った。
~ミ,,,,uuミ
いろいろ考えた結果、やはり
>>390 じゃだめなような気がしてきました (^^;
おっしゃるようにたまたまっぽいです。
もうすこし考えてみます
403 :
デフォルトの名無しさん :01/11/04 02:54
こんなコードも動作しますが、いいのでしょうか? function TMyInterface._Release: Integer; begin Result := 1; end; procedure TForm4.Button1Click(Sender: TObject); var HogeIntf: IHoge; Hoge: THoge; begin Hoge := THoge.Create; HogeIntf := Hoge; Hoge.Free; Hoge._Release; THoge($EEABCDEF)._Release; end;
う~ん、どうもわたしは自分がやりたい事を見失っていたようです 私はただ永続的な Interfaced クラスを作りたいだけでした 別に _Release で破棄されるならそれでいいや nil を代入しなければならないってのも慣れの問題かも
>>402 は
「だめなような気がしてきました」というか
よくみると「絶対だめ」でしたね
406 :
デフォルトの名無しさん :01/11/04 13:53
質問でゴワス。 MDIアプリケーションで MDIチャイルドを表示させたときに、メインウィンドウのメニューを メインウィンドウのメニュー + チャイルドフォーム用のメニュー というように、混ぜたいのです。いまは、チャイルドフォーム用のメニューにわざわざ メインメニューと全く同じメニュー構造+チャイルドフォーム用の メニューを付け加えるという、無駄とも思える作業をしています。 もっと楽な方法はありますか。
あまりMDIのことは知らないけど
...Delphi6\Demos\Doc\TextEdit\textedit.dpr
これみるといいっすよ。
>>406 ┏━━━━━┯━━━━━
┃ |
┃ |
┃ ∩∩
┃ ∧ ∧
┃ ミ,,゚Д゚ミ
┃ ミ ミ フゥ…
┃ ミ ミ
┃ ミ ミ ミノムシ ミタイ ダナ
┃ ..U..U
┃
┃ ぶら下がり倦怠期
基本はほとんど全部作らなければいけないけど
DemoではWindowメヌーが重なってますね。
,,,,,,,,,,,,,∧,,∧ / ~′,,,,,,,ミ;゚Д゚彡 < BorConでオフ会の話とか出ないけど UU""" U U \ニンヅウ大丈夫なのか?>>Bor フサはBorConのお金払えないから 2chプログラム板オフに出ることにしたんだけど デルファーの人だれかきます? ハミゴになったらヤダナ。
409 :
デフォルトの名無しさん :01/11/04 16:18
ベクトル画像を扱いたいので WMF 形式を扱ってみたいのだけど、 TMetaFile って使い方が良く分からないのよ。 というか、 WMF 形式自体を、見た事が無い。 線を書き込んだり、テキストデータを埋め込むにはどうすればよいのでしょう。 というか、そもそもWMFにテキスト及び フォント情報を埋め込むことはできるので消化。
410 :
ななしヘタぐらま ◆B18Bks.Y :01/11/04 19:40
>>409 TMetafileはTBitmapと違ってそれ自身でデータを作ることができません.
TMetafileCanvasというクラスを使ってデータを作ります.
まずはヘルプをご参照ください.
TMetafileCanvasのCreateメソッドの説明から例を見られます.
この例にはありませんがテキストを書き込むこともできます.
フォントの埋め込みはたしかなかったと思いますが….
注意点としてTMetafileはいくつか問題を抱えています.
私も彼の不可解な行動に振り回されましたが
この問題については中村拓男氏のサイト『中村の里』で
詳しく説明されていますのでそちらをご覧下さい.
Delphiマガジンの過去の号にも同氏の記事があったのですが号は失念.すいません.
411 :
ななしヘタぐらま ◆B18Bks.Y :01/11/04 19:56
>>408 そんなオフが開催されるのですね.
2chのオフ関係は関心が無かったのですが
職場が東京都下なのでBorCon会場付近ならいけないこともないなぁ.
#しかしOff会板を見たもののそれらしきスレは見当たらなかったのですが….
412 :
ななしヘタぐらま ◆B18Bks.Y :01/11/04 19:58
414 :
デフォルトの名無しさん :01/11/04 23:43
_AddRefと_Releaseが-1を返すやり方はマニュアルに載っていますよ。
interface で定義するメソッドは stdcall を付けないとだめなのですか? Delphi でだけ使えればいいのなら付けなくていいよっていうもの?
>415 Delphi only なら stdcall はいらない。
クラスを順序型にする良い方法はないでしょうか? case ClassType of TButton: end; こういう事がしたい if (ClassType = Txx) then XX else if (ClassType = Txx) then XX else : こういうのは嫌 今は自分で番号を決めてやっています
TComponent は _AddRef, _Release で -1 しか返さないんですね~ (VCLComObject が nil である限り) 昨日知ったです
420 :
デフォルトの名無しさん :01/11/05 00:22
>417 ないな・・・。 逆は出来るんだけどね。
>>420 そうですか・・・ レスthxです
ヘルプ眺めてたら ClassID ってのを見つけて「おぉっ!?」と思ったんですが
TComObjectFactory.ClassID
property ClassID: TGUID;
だめじゃん・・・
TList に色々な型のオブジェクトを追加しておいて1つずつ取り出してはインターフェース変数に代入したいのですが、 TList から取り出すと Pointer 型なので代入できません。 p := list[i]; if (TObject(p^).ClassType = TAAA) then intf := TAAA(p^) else if (TObject(p^).ClassType = TBBB) then intf := TBBB(p^) else こんな方法しか無いのでしょうか?
TInterfaceList で解決しました
でももし Pointer 型から戻せる方法があるのなら教えてほしいです よろしくお願いします
425 :
デフォルトの名無しさん :01/11/05 13:11
頼むから半角カタカナはやめてくれ。
427 :
デフォルトの名無しさん :01/11/05 13:45
>>424 参照カウンタのことを完全に理解していないのなら、Pointer型を
介して使うのは大変危険です。
ただ単にキャストすればいいだけなんだけど、
ptr := Pointer(intf);
と
IUnknown(ptr) := intf;
は動作が違う。前者はptrにただ代入するだけだが、後者は
代入に加えて参照カウンタをもインクリメントする。
前者はきちんと参照カウンタをデクリメントしないとメモリリークするし
後者はインターフェースが勝手に廃棄されることがある。
>>427 書き込んだ瞬間に誤り見つけた…
(訂正版)
後者はきちんと参照カウンタをデクリメントしないとメモリリークするし
前者はインターフェースが勝手に廃棄されることがある。
マカーハ ヨウズミ
シツモソ 現在の時間を取得するのに一番時間のかからないやつってなんでしょう いくつか方法あるけど・・・ ドウナンショ?
431 :
デフォルトの名無しさん :01/11/05 18:16
NowTime := Now; って、そんなに時間かかるんですか。
横槍 ミリ秒まで正確に測りたいときは どうすんだろ TZtimerでも使うのかな
_rsdtc
>>427 さん
知りたいのはポインタ→インターフェースなのです
以下がテスト用のコードです。
メモリリークはしないはずだと思いますので皆様よろしくお な が いします。
type
ITestData = interface
['{BC55ADC4-9676-43EB-B16A-0AE02676C8CB}']
function GetText(Index: Integer): string; stdcall;
end;
TXComponent = class(TComponent, ITestData)
protected
function GetText(Index: Integer): string; stdcall;
end;
function TXComponent.GetText(Index: Integer): string;
begin
Result := ClassName + '! ';
end;
procedure TForm1.Button1Click(Sender: TObject);
var
obj: TXComponent;
p: Pointer;
intf: ITestData;
begin
obj := TXComponent.Create(Self);
p := @obj;
Caption := TXComponent(p^).GetText(0) + ' / '; // 代入確認
// intf := IUnknown(p^); // コンパイル不可
intf := ITestData(p^); // ← Access Vioration
Caption := Caption + intf.GetText(0);
end;
一つ加えておくと
intf := TXComponent(p^);
これは当然できます。
やりたいのはクラスがわからないという場合の話です
TObject(p^).ClassType という話になって
>>417 >>422 へとリンクされてしまいます
436 :
デフォルトの名無しさん :01/11/05 23:07
>>434 TObject にいったんキャストして、GetInterface メソッドを呼び出す。
使い方は TInterfacedObject.QueryInterface の実装を参考に。
as 演算子はこの場合、使用不可。
>>434 で変なところがあるな。
p := @obj; って変数自体へのポインタを得てどうするの?
関数抜けたら無効なポインタになるっしょ。
p := obj; として TXComponent にキャストするときは
TXComponent(p) とするべき。
438 :
デフォルトの名無しさん :01/11/05 23:38
プログラマを目指すなら、ActiveX や Interface は知っておいたほうがいいかな。 ActiveXはいまだに動作原理…というか 何の目的で使うのかが良く分からないし、 Interface に関してはここの議論を見ても ???だし…
>438 必要になれば分かるよ。 Delphiのって限定じゃないInterfaceは理解すると良いかも。 JavaとかC#で。
>>436 さん
>TObject にいったんキャストして、GetInterface メソッドを呼び出す。
このヒントのおかげでできたです!ありがとう!
procedure TForm1.Button1Click(Sender: TObject);
const
GUID_ITestData: TGUID = '{BC55ADC4-9676-43EB-B16A-0AE02676C8CB}';
var
obj: TXComponent;
p: Pointer;
intf: ITestData;
begin
obj := TXComponent.Create(Self);
p := obj;
Caption := TXComponent(p).GetText(0) + ' / '; // 代入確認
// TObject(p).GetInterface(GUID_ITestData, intf); // どっちでも
TObject(p).GetInterface(ITestData, intf); // いいです
Caption := Caption + intf.GetText(0);
end;
>p := @obj; って変数自体へのポインタを得てどうするの?
>関数抜けたら無効なポインタになるっしょ。
あっそうか!なるほど
世界が広がったーよ
Supports ってここで使うのか!
~
>>441 の続き ~
と思ったら、多分
>>395 の理由で IUnknown が無いと False しか返さないんですが
やはりこういう場合 class に定義追加しておかないとどうしようもないんでしょうか?
どうしようもない Supports使わないって事で終わり
444 :
デフォルトの名無しさん :01/11/06 00:56
>>441 GetInterface の戻り値をチェックすればいいんじゃないの?
445 :
Delフサギコ :01/11/06 20:42
∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ,,゚Д゚彡 < ちょっと用事があって、2chきてなかったす ,;゙ ミ \_____________ ミ. ミ /゛゛゛゛ スマソ。貴重な情報みなさんサンクスです。 プログラミングバイブルのD6版とか出ないかな。 インターフェースについて体系的に知りたいことが山ほど... Javaのデザパタ初心者本(デザパタスレで調べてください) にInterfaceの例がイパーイのっているので Javaも覚えたいと思っている人は 読んでみるといいよ。 インターフェースの使い道もわかります。
うえーん Personalのヘルプのカスタマイズが無いモナー  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ Λ_Λ ( ´Д⊂ヽ ⊂ ノ 人 Y し (_)
このスレうざいんで早くつぶしちゃって下さいね
448 :
デフォルトの名無しさん :01/11/07 01:13
>>446 OpenHelpの事?
手動で出来ると思うのだが。
うえーん oh.exeがやっぱり見つからないモナー  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ Λ_Λ ( ´Д⊂ヽ ⊂ ノ 人 Y し (_)
450 :
デフォルトの名無しさん :01/11/07 01:30
ヘルプファイルがあるディレクトリに、それッポイテキストファイルがあるので、 直接書き換えればいい。
452 :
デフォルトの名無しさん :01/11/07 09:28
TFrameでOnCreateイベントを使いたいけど、いい方法ありませんか?
453 :
デフォルトの名無しさん :01/11/07 14:09
delphiスレも消えかかってきましたね。 自然淘汰ですか。 さて。 OpenPictureDialog で独自の画像フォーマットを開けるように、 フィルタにマイ拡張子を追加してありますが、 このファイルを選択すると「毎回表示できませんエラー」が出てきます。 標準でない拡張子を選択した場合に、エラーを回避する方法はありませんか。
X 回避する方法はありませんか ○ 回避するにはどうすればよいですか。
>>454 その画像フォーマットを登録してしまえば済むと思うのだが?
456 :
デフォルトの名無しさん :01/11/07 16:37
とうろく? OpenPictureDialogに? それとも、単に拡張子を関連付けるって事?
∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ,,゚Д゚彡 < TGifImageをusesしたら ,;゙ ミ \ ミ. ミ ダイアログでもGif表示できたような… /゛゛゛゛ 画像登録ってそう言うこと?
extras の jpeg.pas より >TPicture.RegisterFileFormat('jpeg', 'JPEG イメージファイル', TJPEGImage);
459 :
デフォルトの名無しさん :01/11/07 21:48
TPicture に登録して、その情報はPictureDialogに反映されるの?
_________
∧,,∧ /
>>452 ミ,,゚Д゚彡< Frameのコンストラクタは?
ミつ つ \
~ミ ミ.  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
U U
ホーイ シツモン ∧,,∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ,,゚Д゚彡 < ヘジルスバーグ氏って U ミ \カタカナでフルネーム @ミ ミ なんて呼べばいいのですか? ∪ ∪
462 :
デフォルトの名無しさん :01/11/07 23:46
ストリームからnバイトの文字をstringに入れるにはどうやればいいんでしょうか。
ストリームって、TStream型の事ですか?
464 :
名無しヘタぐらま ◆B18Bks.Y :01/11/08 00:07
>>452 >>460 私はフレームを使いまくっているので以前悩んだことがありますが,
やはりコンストラクタのオーバーライドで対処しています.
フレームのpublic部に次のメソッド(コンストラクタ)を追加して
constructor Create(AOwner: TComponent); override;
実装部に必要な処理を書きます.
>>463 そーです。
今回はTFileStreamです。
泥臭い方法もあるけど、 TStringStream経由するのが正統的かな? ss := TStringStream.Create; ss.CopyFrom( filestream, n ); ss.DataStringで文字列として取れる
>>466 ありがとさん。
Str?Copyとかその辺使うのかと思ってたけどちがかったわ。
SetLength(S, n); Stream.Read(S[1], n); は安全ですかねぇ~?
_________ ∧,,∧ / こんなんつくーたよ。Memo1には「ってヨ」という文字が入る ミ,,゚Д゚彡< ミつ つ \ StringStreamなんてあるんだ。初耳。 ~ミ ミ.  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ U U procedure TForm1.Button1Click(Sender: TObject); var MS1, MS2: TMemoryStream; SL: TStringList; begin MS1 := TMemoryStream.Create; MS2 := TMemoryStream.Create; try SL := TStringList.Create; try SL.Text := '逝ってヨシ'; SL.SaveToStream(MS1); MS1.Position := 2; MS2.CopyFrom(MS1, 6); MS2.Position := 0; Memo1.Lines.LoadFromStream(MS2); finally SL.Free; end; finally MS1.Free; MS2.Free; end; end;
>>469 うーむ、
MS2 := TMemoryStream.Create;
で失敗したら、MS1.Freeが呼ばれませんが、
どうしましょう?
∧,∧ ,:: / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ,,゚Д゚彡っ━'~ | 適当なサンプルだから ミ∪ ~,ノ < 勘弁してよ。 ミ '' ミ \____________ し'~し'
適当なサンプルでも考えさせられます。 最初にnilで初期化するか、try-finallyブロックをネストするか。
よくこんなエディタでやってられるな。>del使い VB⇒VC⇒java(秀丸)と触ってきたが一番使い辛いぞ。 フリーカーソルなんぞはツールで克服すつとしても、それ以前の基本機能である window分割とかできんし、なんだかストレスが溜まってしかたない俺はdelさわるなってことか?
>>474 ウィンドウの「分割」はできないけど,同じエディタバッファを複数のウィンドウで
同時編集できますが?
_________ ∧,,∧ / ミ;゚Д゚彡< 慣れですから。 ミつ つ \ ~ミ ,, ミ.  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∪∪ 別の編集windowを開けて上下に配置して デスクトップ位置保存をしてみるとよかれ。 あと、ツールに エディタを登録して実行引数を$EDNAMEにでもすると 開いているテキストが他のエディタで開けるから それをつかってちょ。
良く出てくるフリーカーソルって、 フルスクリーンエディタの事? N88-BASICとかと同じ。
>>477 それを入れると何がどう変わるのか、軽く触りだけでも教えてもらえたり
なんかすると、厨房なボクとしては凄く感激だったりするんだけど、教え
てみたりなんかしてみない?
ここに絵付きで一覧がある
http://www.gexperts.org/tour/html/ エディタの拡張とかgrep検索とかVCっぽくしたりもできる
どのあたりが気に食わないのかわからないけど
GExperts は D2 の頃から開発されつづけてるからだいたい何でもあると思う
オープンソースだ
オレはフリーカーソルじゃないと嫌だけどなぁ
>>479 フリーカーソルってのは、行の終わりよりも右にカーソルを置ける機能のこと
おれもフリーカーソル派だけど、 フリーカーソルは宗教論争的なので、話題にするのは危険。
的じゃなくて、完全に宗教論争
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | はい、ありがとうございます! | 某landサポートセンターです! \_____ _______ ∨ ∩_∩ D ( ´∀`)○ ___ ( )D……/◎\ ============================= / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | Delphiを作った人は | アンダースヘジルスバーグさんって | お呼びすればいいのでしょうか? \_____ _______ ∨ C∧,,∧ ___ ○ミ゚Д゚,,彡 ハツオン ワカラン /◎\……Cミ ミ ============================= / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ・・・・・・・・・・・・・・・・・・・・ | インシデント減りますがお調べいたしましょうか? \_____ _______ ∨ ∩_∩ D (;´∀`)○ ___ ( )D……/◎\ =============================
>>485 ワラタ
漏れも実話か気になる、教えてくれ。
∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ;゚Д゚ミ < 実話なわけないっしょ (ミ ミつ)ビシッ\_________ ~ミ ミ ∪ ∪ ホントにやったら、Borlandから目をつけられるという 諸刃の剣ですね。
実際に試してみてよ。 同じ質問を「C# を作った人は...」に置き換えて、MS に聞いてみて、 対応を比較するのも一興。
むむ、有益な情報皆様ありがとう。 弘法は筆を選ばないが、厨房なので筆を選んでしまいます。 ま、とりあえずGExperts入れてみます。つーヵdelだけの人って MSDNとかネットでみてんの?
∧,,∧
>>490 そだよ。
ミ,,゚Д゚彡
ミつ[|lllll]).
>>489 やだよ。
~ミ ミ
U''U
MSDN Professional購読してるが 値上げしたので次の延長時期が来るのが怖い…
Anchorsを指定してフォームのリサイズに応じてコントロールもリサイズ、移動 するようにしてる場合、画面のプロパティでフォントの大きさを変えると レイアウトが崩れます。回避するにはどうすればいいでしょうか
フォームにPixelsPerInchていうプロパティありますが、 触ればどうにかなりますか?
>>495 CVS でソース公開しているけど、それじゃだめなんか?
500 :
デフォルトの名無しさん :01/11/08 20:26
ふむ。GExperts 日本語化プロジェクトを始めようか。
ふむ、なかなかdel使いってのは苦労してるんですな。ADSLならいいだろうけど、 MSDNなんてめちゃめちゃ時間かかるじゃん。む?まさかPlatformSDKをダウンロード? そんな不便を補って余りある利点がデルにはあるのかな。 ま、どっちにしろ500に 期待ってとこか。
厨房が一人混ざっているようだな。あえて番号は伏せるが。(w
delの最大のメリットは膨大なMLの過去ログにあります。 過去ログ検索すれば分からない事はありません(藁
504 :
デフォルトの名無しさん :01/11/08 22:51
>>501 親切に教えてあげようね。
Platform SDK をダウンロードしなくても,必要なところだけ読めるようになっているんですよ。
505 :
デフォルトの名無しさん :01/11/08 23:03
PlatformSDKってどこでダウンロードするの?
506 :
デフォルトの名無しさん :01/11/08 23:05
Delphi を勉強し始めたのですが、コーディングガイドラインとか変数の命名規則で、 標準的なものとか推奨なものがあれば、載っている本とかサイトを教えて下さい。 よろしくお願いします。
508 :
デフォルトの名無しさん :01/11/08 23:11
>>506 「コーディングガイドラインとか変数の命名規則」は識別子に短い名前しかつけられなかったり
型管理が弱い言語において、楽をするための方便です。
C++ や Pascal などの型情報をちゃんと処理できる言語では、言語仕様に型情報を管理する機能が
入っているので、変数名に型情報を盛り込むのは二度手間になります。
暗号のような名前を使うよりは、その物ずばりの名前をつけたほうが確実です。
511 :
デフォルトの名無しさん :01/11/08 23:29
フサギコって、C#スレで自爆したDelギコなの?
512 :
デフォルトの名無しさん :01/11/08 23:40
どんも。IMEの郵便番号辞書つかって 郵便番号->住所の変換をやりたいんですけど ImmGetConversionListの使い方おしえてください。 変換の一覧が欲しいのです。 DelphiMLのサンプルじゃ動かんし。 自分でもやったけど、わけ・わか・らん。 ちなみに WinNT4+Delphi5+IME97です。
>>504 もちろんオンラインで見れるけども、それはVSのMSDNを見るのに比べ著しく
動作が遅く、非効率ではないだろうかってことだったんですが。まぁ回線切らずにお勉強サイト
逝ってきます
変換候補はImmGetCandidateListですが。
∧,,∧ /おぉ!
>>499-500 ミ,,゚Д゚彡< 期待していいでしょうか!
'ミ つ旦)~~ \ わかりやすいから英語でもOKのトコ多いですが
⊂ミ",, ,,ミ つ 細かいオプションはやぱり日本語がいいですよね。
>>498 スマソ、わかりませんん。MLのログみたら解決に近ずく方法はあるかも
>>511 >>84-90 みてね。
ジ…自爆したかなあ....名無しさん#さんにはお世話になってます。
C#スレみたけど、Gridにオーナードローってないのかな。
命名則はフィールドにFつけるくらいかな。
>>512 それって何か市販のコンポーネントがあった希ガスる。
大昔Delマガに広告載ってなかったかな。
MLのサンプルってせめてURL出して聞こう!
ImmGetConversionListは読み方やな。
∧.,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ミ.,,゚Д゚彡< あったあった。
ミ つ目(ミ . \_______________
~ミ,,O,,,,,,つ
新郵便番号⇔住所 高速相互検索
http://www.lerx.to/lereaux/postal.html 安いし、買いでは?
ルロー氏はDelマガで採算が取れてるのかニャ。
まさかシャキーンばかりが増えてる事が無い事をお祈りしまする。
518 :
デフォルトの名無しさん :01/11/09 00:30
Delphi6 Personal を使ってプログラム始めたんですが インストーラ「ExePress」を使ってインストーラを 作った場合「アプリケーションの追加と削除」に 登録されないのを教えて欲しいのですがスレ違いでしょうか。 マニュアルは見たのですが参考になるURLなどを教えて欲しいです。
>At the Microsoft PDC last summer, I heard it as "HIGH-ls-berg" and >"HIGH-els-bare" > >However, I have the videos of the sessions, so I just looked up Anders' >keynote.. he used "HIGH-ls-berg". ハイルスバーグ みたいだよ。
_____ /...... .. .../ ||::: ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ̄\.ミ*゚ー゚ミ< なななななななななななな | |: ̄U' U ̄:|\__________ | |: :| | | ∧,,∧:| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | \ ミ,,゚Д゚彡< なななななななななな | |: ̄U' U ̄:| \__________ | |: :|
即レス多謝 >514 なにぃぃぃ。それはしらなんだ。 >515 残念ながらコンポーネント案はだめなのよ。 でね。 HMC: HIMC; dwSize: DWORD; lpCand: PCandidateList; i: integer; begin ListBox1.Clear; Edit1.SetFocus; HMC := ImmGetContext(Edit1.Handle); dwSize := ImmGetCandidateList(HMC, 0, nil, 0); lpCand := HeapAlloc(GetProcessHeap(), 0, dwSize); ImmGetCandidateList(HMC, 0, lpCand, dwSize); ってかいてあげたんだけど。lpCand^.dwCountが0なのよねぇ? どうしたらいいんでしょうか?
ファンです。フサギコさんがんばれ!
∧ ∧ ア...アリガトゴザイマス
>>521 ミ ゚Д゚彡
~ミ,,,,uuミ でも、何をがんばりましょう・・・・?
>残念ながらコンポーネント案はだめなのよ。
なぜでしょう。
自前で出来るにこした事はないと思いますが。
>>518 への事故レスです。なんとか解決しました。
板を汚したついでに書かせていただきまっす。
iアプリ作成用にNTTより配布されている
J2ME Wireless SDK for the DoJa
が原因のようでした。
このソフトのレジストリのDisplayNameが長すぎるのが原因のようです。
[DisplayName] "Java(tm) 2 Platform, Micro Edition, Wireless SDK for the DoJa APIs (Release 2.2)"
これをアンインストールしたらぞろぞろと今までのが表示される様になりました。
上の訂正 iアプリ作成用にNTTより配布されている もとい iアプリ作成用にNTTドコモより配布されている です
526 :
デフォルトの名無しさん :01/11/09 03:31
( ゚д゚) ( ゚д゚) ( ゚д゚)
てっきり「ExePress」というインストーラー作成ソフトで 「アプリケーションの追加と削除」に登録しない方法を 聞きたいのかとオモターヨ。
読み返してみれば・・・なるほど 書き方が悪かったようです
ちなみに他のインストーラでも同様の影響が出る事が あるようです。ご注意を
インラインアセンブラって、どんなときにつかうのですか?
>>496 フォームのScaledをfalseにして、
フォームのFontのHeightを正の値にしてみたり。
533 :
デフォルトの名無しさん :01/11/09 09:01
>>531 その1・Pascalで書くと遅いのでもっと高速化してみたいとき(出来るとは限らない)
その2・特殊な命令(cpuidとか)を実行したいとき
その3・アセンブラを使えと強要されたとき
>523 データまで配れねぇし。お客の要望なの。 Var HMC: HIMC; dwSize: DWORD; lpCand: PCandidateList; i, j, Len: integer; F: LPTSTR; s:string; C: array of integer; begin ListBox1.Clear; Edit1.SetFocus; HMC := ImmGetContext(Edit1.Handle); ImmSetCompositionString(HMC, SCS_SETSTR, PChar(Edit1.text), Length(Edit1.text),nil,0); ImmNotifyIME(HMC,NI_COMPOSITIONSTR,CPS_CONVERT,0); ImmNotifyIME(HMC,NI_OPENCANDIDATE,0,0); dwSize := ImmGetCandidateList(HMC, 0, nil, 0); lpCand := HeapAlloc(GetProcessHeap(), 0, dwSize); ImmGetCandidateList(HMC, 0, lpCand, dwSize); SetLength(C,lpCand^.dwCount); for i:=0 to lpCand^.dwCount -1 do StrLCopy(@C[i],PChar(lpCand)+24+i*4,4); for i:=0 to lpCand^.dwCount -1 do begin if i < lpCand^.dwCount - 1 then SetString(s,PChar(lpCand) + C[i], C[i+1] - C[i]) else SetString(s,PChar(lpCand) + C[i],lpCand^.dwSize - C[i]); ListBox1.Items.Add(s); end; ImmNotifyIME(HMC,NI_CLOSECANDIDATE ,0,0); ImmReleaseContext(Edit1.Handle, HMC); HeapFree(GetProcessHeap(), 0, lpCand); end; とりあえず、コードはできて。ListBoxには変換候補を取得できたんだけど。 あとはEdit1に変換のがのこっちゃうのよ。どうするよ?
535 :
デフォルトの名無しさん :01/11/09 15:26
BCB5でCGI作ってるんですけど、 Delphiな人達教えて下さい。 IISではRequest->QueryFields->Textに値が入るけど、 Apacheでは値が入らないなんてことありますか? Apacheだと、ブラウザで入力された値が取れないよー。
違ってた、Request->ContentFields->Textの値がおかしー。 なんか、行末がCRLFになるべきところが、CRCRLFになったりする?
∩ ∩ ミ ゙''゙~ ミ∧,,∧ / CGIはわからないですが ミ,,゚Д゚彡 < 改行コードを普通にするのはAdjustLineText U U \________
ギコちゃんアリガトウ。それ使ってみるYO! 事実の方も誰かから聞きたいな...
また違ってた! Request->ContentFields->Text が途中で切れてるんだけど、Apacheって制限があるんだね。 識者解説キボン。
AdjustLineTextをF1で検索しても見つからない。 なんでこんなにマニュアルの出来がわるいの?
それは自分はわかったYO!
>>540 AdjustLineBreaksだ!
_____ /:\._____\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |: ̄\ ミ,,゚Д゚ミ < ごめん、まちがえてた |: :|: ̄U U ̄:| \_________ .______ |: :\. \ 隠れろ |: :|: ̄U U ̄:|
>>460 >>464 できました。
constructor, destructor は
ここでも使えるのですね。
とりあえずループの中は ListBox1.Items.Add(PChar(Integer(lpCand) + C[I])); だけでOK。
547 :
デフォルトの名無しさん :01/11/10 06:11
ユニコード対応コントロールってどういうコントロールなのですか?
_________
∧,,∧ /
ミ;゚Д゚彡<
>>54 どういうっていわれても困るけど
ミつ つ \
~ミ ,, ミ.  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∪∪
CLXのEditコントロールはFontのCharaSetをUniにできます。
Editの中に♥マークが表示できるね(IEからコピペしたりしたら)
>Delフサギコ,564,その他デフォルトななしぃ あんがとぉぉ。無事、仕組み完成。 ご協力感謝します。
550 :
デフォルトの名無しさん :01/11/10 23:20
RichEdit で、「目的の行」を表示したい (つまり、指定した行が一番上に表示されるように スクロールしたい)のですが、 EM_SCROLL メッセージだと1行単位でしかスクロールできず、 大量にスクロールさせると非常に時間がかかります。 一気に n 行スクロールさせるにはどうすればよいでしょうか。 with RichEdit1 do begin IndexFrom := Perform( EM_GETFIRSTVISIBLELINE, 0, 0 ); IndexTo := 目的の行インデックス for i:=IndexFrom to IndexTo-1 do Perform( EM_SCROLL, SB_LINEDOWN, 0 ); for i:=IndexTo to IndexFrom-1 do Perform( EM_SCROLL, SB_LINEUP, 0 ); end;
>550 他のメッセージは?
最後の行にカーソルを置く+EM_SCROLLCARET ↓ 目的の行にカーソルを移動+EM_SCROLLCARET
,,,,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ~′,,,,,,,,,,ミ,,゚Д゚彡 < EM_LINESCROLLじゃない? UU"""" U U \_______________
,,,,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
~′,,,,,,,,,,ミ,,゚Д゚彡 < ここみるよし
>>550 UU"""" U U \_______________
http://homepage2.nifty.com/boheme/delphi/tips/tec0280.htm http://homepage2.nifty.com/boheme/delphi/tips/tec0300.htm
あああ EM_LINESCROLL どうりでうまくいかないと思っていたら、 メッセージの第一引数にスクロール量を 指定していました(;´Д`) 逝ってきます
,,,,,,,,,,,,,,,,∧,,∧ / ~′,,,,,,,,,,ミ,,゚Д゚彡 < APIヘルプEM_LINESCROLL みても UU"""" U U \Lパラ Wパラ の意味はわかるニャリ カンチガイ ノ リョウガ ケイケン ニナルカモ
557 :
デフォルトの名無しさん :01/11/11 01:09
あの、ついでに聞きいちゃいます。 キャレットが移動された事を知りたいのですが、 EM_CaretMoved みたいなメッセージはありませんか?
558 :
デフォルトの名無しさん :01/11/11 01:37
559 :
デフォルトの名無しさん :01/11/11 01:38
アタシlParam。あの小さかったwParam君が久しぶりに会ったらアタシと長さになってたわ。
ネムイ ∫ _________
∧,,∧ ∬ / マウスとキーボードの入力で
ミ-Д-彡っ━~ < SelStartの位置を監視するとよし
_と~,, ~,,,ノ_. ∀ \
>>557 ミ,,,,/~), │ ┷┳━  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ .じ'J ̄ ̄| ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ┻
アタシと長さ?
∧,,∧,,,,,,,,,,,,,,, / ̄ ミ-Д-彡,,,,,,,,,,,,ヾ~ < RichEditならOnSelectionChangeがあるようです U U """"UU \_ procedure TCustomRichEdit.CNNotify(var Message: TWMNotify); で EN_SELCHANGEを監視してるのですね。 なんでTMemoにはないんかな。
563 :
デフォルトの名無しさん :01/11/11 02:23
まる~(*´ρ`*)
どうもありがとう。とりあえず解決しました。 そして… 目的の行を表示させるのは良いのですが、WordWrapされている場合に、 本来の行と 実際に表示されている行がずれてしまいます。 現在のカーソル位置から、WordWrap によって 変化する前の、本来の行番号を得たいときはどうすればよいでしょうか。 ちなみに、カーソル位置は以下のコードで取得しています。 X := LongRec( Memo.Perform( EM_GETSEL, 0, 0) ).Hi; Y := Memo.Perform( EM_LINEFROMCHAR, X, 0 ); X := X - Memo.Perform( EM_LINEINDEX, -1, 0 );
,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ~′,,,,,,,ミ,,゚Д゚彡 < SelStartまでのCRLFを数えるとか? UU""" U U \_______________ わかんない
566 :
デフォルトの名無しさん :01/11/11 16:28
あ、なるほど。 function GetIndex(text:string; selstart:integer):integer; var i:integer; begin result := 0; for i:=1 to length(text) do if (ByteType(text[i])=btSingle) and (text[i] = #13)then inc( result ); end; 改行コードは2バイト文字に含まれないという保証があれば、 if 条件が一つ減らせるのですが…
>>566 JIS(ISO-2022-JP), SJIS, EUC-JPに関しては
文字コード$20未満は2バイト文字には含まれないよ。
他の文字コード(他言語とか)は知らんが。
Posあたりを使って#13#10を追いかけていくとかでも大丈夫だとは思う。
568 :
デフォルトの名無しさん :01/11/11 20:16
アプリの終了時にデータ保存を行っています。 (アプリの終了時=メインフォームのOnDestroy) しかし、アプリを起動したまま、キーボードの終了ボタンを押して Windowsを終了させると、メインフォームのOnDestroyが呼ばれないようです。 終了時にちゃんとデータを書き込むにはどうすればよろしいですか?
569 :
縞栗鼠(シマリス)の親方 :01/11/11 20:34
OnCloseQueryを使う
571 :
デフォルトの名無しさん :01/11/11 22:12
Delphiには抽象的な多分木クラスとかってありませんか? ツリービューのビューがないヤツ、みたいな。
572 :
デフォルトの名無しさん :01/11/11 22:16
573 :
デフォルトの名無しさん :01/11/11 23:49
>>571 自作するとか。
そのレコード自身のポインタを管理するTListとかもって。
っていうかTTreeNodeは?
結局多分木は必要なくなってしまった。 けど参考になりました。ありがとう。
>>568 OnDestroy は必ず発生するはず
しなかったらバグもしくは異常終了してる
しかし OnDestroy で保存などやってはいかん!
>>571 リストにリスト突っ込んで自作
面倒ならネット探せばあるよ
>>573 TTreeView が無いと使えないよ.
まあ隠して使えばいいんだけど
>ツリービューのビューがないヤツ、みたいな。
この要望にそぐわないのでは
576 :
デフォルトの名無しさん :01/11/12 00:57
>>575 (1)タスクバーのシャットダウンを選択してOSをシャットダウン。
(2)キーボードのスリープボタンを押してOSをシャットダウン。
(1)は、OnDestroyが正常に動くんだけど、
(2)は、ダメ。OnDestroyが動かない。
ちなみに、コンパネの電源オプションでスリープボタンを電源OFFにしています。
OSは2000。
>>570 氏のいっている、OnCloseQueryにして試してみる。
577 :
デフォルトの名無しさん :01/11/12 01:00
>>575 >しかし OnDestroy で保存などやってはいかん!
なぜ? 保存には OnDestroy がもってこいだと思うが。
俺は OnClose, OnCloseQuery のような表示に関わるイベントは
保存のタイミングに使うには信頼性が無いと思っている。
578 :
デフォルトの名無しさん :01/11/12 01:08
>>573 TTreeNodeのインスタンス生成すれば使えませんか?
579 :
デフォルトの名無しさん :01/11/12 03:05
OnDestroyが発生しないって事は、デストラクタが呼ばれていないって事? つまり、Ownerである、Application も Free されない。 よって、finalization が実行されない。 OnCloseQueryが発生するのは、WM_QUERYENDSESSIONに応答しているから?
580 :
デフォルトの名無しさん :01/11/12 03:20
>>568 WM_QUERYENDSESSIONをフックして、
Haltを実行しては?オレはそうして
る。
>>579 場合によってはね。
デストラクタよばれず、アプリが強制終了されてOSが落ちることはあるよ。
OnCloseQueryでやるのが無難。
>>568 ,,,,,,,,,,,,,∧,,∧ /
~′,,,,,,,ミ,,゚Д゚彡 < こんなのでどのイベントが発生しているか
UU""" U U \確認していいかも。
ファイルに文字列を追加書き込み
する手続きです。
procedure FileAddText(const S, FileName: String);
var
F : TextFile;
begin
try
AssignFile(F, FileName); // 既存のファイル
if not FileExists(FileName) then
Rewrite(F) {ファイル新規作成}
else
Append(F); {ファイル追加モード}
Writeln(F, S);
finally
CloseFile(F);
end;
end;
>>571 自分自身のポインタをプロパティでもっておくだけで
簡単にTree構造は実現できますよん。
583 :
デフォルトの名無しさん :01/11/12 14:33
TMEMO か TRICHEDIT で、 Shift+Tab で逆タブを実現するにはどうすればいいですか
OnMouse~でTabコード(+Shift)を拾って消すのは?
訂正、OnKey~ですね。
586 :
デフォルトの名無しさん :01/11/12 15:25
Delphi6でのパレットについて質問します。 以下のような関数を作りたいです。 GetPal( BMP画像,パレット変数 ) SetPal( BMP画像,パレット変数 ) GetPalは指定されたBMP画像から256色のパレットを読み出して パレット変数に、格納します。 SetPalは指定されたパレット変数の内容をBMP画像のパレットとして 設定します。 パレット変数の定義 Palette :array[0..255] of Integer; いろいろ調べたのですが、(過去ログも見ました。)分からないので具体的に 関数を作って教えていただけないでしょうか? また、このときBMP画像が256色パレットではない場合には、 256色パレットに変換してから、上記の処理をしたいのですが そういうのは、どうすれば出来るのでしょうか? 具体的には、画面にSelectImage: TImage;というのがあり、そこのBMPに対して 上記の処理を行いたいと思っています。 SelectImage.Picture.LoadFromFile(ImageFileName); で、BMPを読み込んだ後に、GetPal関数を使ってパレットを取得 パレット編集後に、PutPal関数を使ってパレットを書き換えて SelectImage.Picture.SaveToFile(ImageFileName); で、BMPを保存しようと思っています。 よろしくお願いします。
この辺、参考になりませんかね。 TBitmap.Palette
588 :
デフォルトの名無しさん :01/11/12 15:51
>>587 いちおうこのヘルプは読んでみたのですが・・・分かりませんでした。
この例にあるのはシステムパレット(?)を取得しているようなので
そこを変えてやってみたのですがうまくいきませんでした。
procedure TForm1.ColPut;
var
x,y: integer;
SysPal : LogPal;
begin
SysPal.lPal.palVersion:=$300;
SysPal.lPal.palNumEntries:=256;
GetPaletteEntries(SelectImage.Picture.Bitmap.Palette, 0, 255, SysPal.lpal.palPalEntry);
for x:=0 to 15 do
begin
for y:=0 to 15 do
begin
Palette[x+y*16] := RGB( SysPal.lpal.palPalEntry[x+y*16].peRed,
SysPal.lpal.palPalEntry[x+y*16].peGreen,
SysPal.lpal.palPalEntry[x+y*16].peBlue );
ColorImage.Canvas.Brush.Style := bssolid;
ColorImage.Canvas.Brush.Color := Palette[x+y*16];
ColorImage.Canvas.FillRect(Rect(x*8+1,y*8+1,x*8+7+1,y*8+7+1));
end;
end;
end;
こんな感じでSelectImage.Picture.Bitmapのパレットの色を使って
ColorImage.Canvasに四角を書こうとしたのですが、ダメでした。
(へんな色が表示される。)
難しいです。
ずーっと前からこの板でパレットについて聞いてる人?
適当に答えたかも。。。 よく知らないけど CreateCompatibleDC(Null) でコンテキストを作って、 SelectObject でBitmapと関連付け、 GetDIBColorTable で読めるらしいです。
>>588 こんな感じかな。
procedure TForm1.Button1Click(Sender: TObject);
var
PE:array[0..255] of TPaletteEntry;
i:integer;
begin
Image1.Picture.Bitmap.LoadFromFile('c:\Captured.bmp');
Image1.Picture.Bitmap.PixelFormat := pf8bit;
GetPaletteEntries(Image1.Picture.Bitmap.Palette,0,255,PE);
with Canvas do begin
for i := 0 to 255 do begin
Pen.Color := RGB(PE[i].peRed,PE[i].peGreen,PE[i].peBlue);
MoveTo(0,i);LineTo(100,i);
end;
end;
end;
PE[i].peFlags を考慮する必要があるかも。
>>588 もし画面を256色モードでやってるなら、それだと色が出ません。
ハイカラー以上でやりませう。
って、そういう基本的なことではなかった?
593 :
デフォルトの名無しさん :01/11/12 17:13
586(588)です。 >589 そうです。あれからずーっと悩んでいます。難しいです。 >590 そのやり方は初耳ですので調べてみたいと思います。 >591 早速やってみましたが、うまくいきませんでした。 現象としては、まずBMPが正しく表示されません。 なんか、変な色になります。肌色のキャラが黄色になります。 8bit,24bitのBMP両方ともなりました。 それに、パレットもうまく表示できませんでした。 >592 フルカラーでやっています。グラフィックツールを作っていて 256色の絵を書きたいと思っています。 みなさん、ありがとうございました。 もしよろしければ、引き続き教えてほしいです。 ダメだったソース // ペンの色表示 procedure TForm1.ColPut; var x,y: integer; PE:array[0..255] of TPaletteEntry; begin DataImage.Picture.Bitmap.PixelFormat := pf8bit; GetPaletteEntries(DataImage.Picture.Bitmap.Palette,0,255,PE); for x:=0 to 15 do begin for y:=0 to 15 do begin Palette[x+y*16] := RGB( PE[x+y*16].peRed,PE[x+y*16].peGreen,PE[x+y*16].peBlue ); ColorImage.Canvas.Brush.Style := bssolid; ColorImage.Canvas.Brush.Color := Palette[x+y*16]; ColorImage.Canvas.FillRect(Rect(x*8+1,y*8+1,x*8+7+1,y*8+7+1)); end; end; end;
>>593 >早速やってみましたが、うまくいきませんでした。
>現象としては、まずBMPが正しく表示されません。
>なんか、変な色になります。肌色のキャラが黄色になります。
>8bit,24bitのBMP両方ともなりました。
>それに、パレットもうまく表示できませんでした。
そうですか。こちらでは全くうまくいっていますけど。
そもそも pf24bit の画像を pf8bit に減色するのですから
変な色になるのは当然です。また、パレットは pf8bit 以下の
色分解能であるときのみ有効です。もともと256色の画像を
591 のようにやって変な色になるとしたら、実行環境のビデオ
ドライバがおかしいか、そもそも256色以下の環境である可能性が
あります。
>592
>フルカラーでやっています。グラフィックツールを作っていて
>256色の絵を書きたいと思っています。
たんに256色以下の色数を使えば、描画後、TBitmap の PixelFormat を
pf8bit にすると自動的に256色の絵になりますけど。はじめから
使用できる色をパレットとして用意しておくのは、無意味です。
595 :
ななしヘタぐらま ◆B18Bks.Y :01/11/12 17:55
>>586 目的が256色モードでの画像表示,ではなくて256色データの作成なら
中村拓男さん作の TnkDIB を使うっていうのはダメでしょうか?
はずしていたらごめんなさい.
596 :
デフォルトの名無しさん :01/11/12 18:14
>>594 >たんに256色以下の色数を使えば、描画後、TBitmap の PixelFormat を
>pf8bit にすると自動的に256色の絵になりますけど。はじめから
そんな事はありません。単にハーフトーンパレットになるだけです。
∬ ∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
~━っミ ゚Д゚彡,, <
>>583 がんばる。
∀._(,,,~ ,,,~⊃_ \____________________
━┳┷ |. ,(~ヽ,,,ミ.
┃...| ̄ ̄し'J.  ̄ ̄ ̄ パレットはわからなー
┻ ヽ ̄ ̄ ̄ ̄ ̄ ̄ ̄
>>596 >そんな事はありません。単にハーフトーンパレットになるだけです。
パレットの話ではない、ということを言いたかったんですよね。
フルカラーで実行してハーフトーンパレットになる理由はなに?
DDB→DIB変換のVCLの実装についてのおはなしですか?
そもそも256色であることに相違ないとおもいますが。
>はずしていたらごめんなさい. この免罪符嫌い
>>598 591 で「たんに256色以下の色数を使えば…」と書いてあることから
24bit画像に256色以内の色数を使って描画すれば、8bitに減色したときに
理想的な減色が行われると言っているように思えたんだが違うのか?
実際はハーフトーンパレットを使って適当に減色が行われる。
| 電 | |∧,,∧ 柱 ミ,,゚Д゚彡 <はずしたらゆるさねー ⊂ ミ と書いてみてはDO? |, ,,ミ |∪ そういえば、昔PC98Doって機種があって.... , ' , ; ' ; 98と88のソフトが動いただよ。
602 :
Delフサギコ :01/11/12 19:22
気が付いたら、BorCon明日明後日なのですが なぜになんも話題にならないの?  ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ∧,,∧ ウラグチ カラ ハイリタイ ミ,,゚Д゚彡∬ 〃 つ旦O ~ミ,,,n,,n[ ̄ ̄ ̄.]  ̄ ̄ ̄
>>600 >591 で「たんに256色以下の色数を使えば…」と書いてあることから
>24bit画像に256色以内の色数を使って描画すれば、8bitに減色したときに
>理想的な減色が行われると言っているように思えたんだが違うのか?
違わないが、「理想的な減色」とはいっていない。元質問者は256色
の絵を描くツールを作っているわけで、予めパレットを設定しておくこ
とにどれほどメリットがあるだろうか?しかも256色以内の使用色
でも固定のハーフトーン色に減色されるんですか。だとしたら、実装が
ボロいということですね。
>実際はハーフトーンパレットを使って適当に減色が行われる。
これは知らなかった。VCLの TBitmap はいい加減なんだね。
減色のアルゴリズムはいろいろあるけど、PSP Pro みたいに
使用色のヒストグラムをとって頻度の多い方から採用する、とか。
そもそも256色以内の使用色で減色するのが間違いだと思う。
使用色そのものをパレットに採用するだけだと思うが。
いろいろ教えてくれてありがとう。
>>596
604 :
デフォルトの名無しさん :01/11/12 19:29
>>599 あなたのほうが健全な心の持ち主だと思う。
また、2ch への誘導メール出してみようか
>>601 PC98Do 持っていたよ。V30に毛が生えたようなCPUなのに、286より少し遅いくらいだった。
拡張スロットが1個しかなくて苦労したけど。
88モードは殆ど使わなかったけど
って関係ないからsage
BorCon行くような人はここにはいないのでは オレモナー
608 :
デフォルトの名無しさん :01/11/12 22:08
ComboBoxとListBoxのリスト内容を同期させたい(内容及び、選択されている項目を同一にしたい)のですが、一般的にはどのような方法を取っているのでしょうか。以下のようなコードを書きましたが、うまくいきません。 property Items:TStringList read GetItems write SetItems; function TMyForm.GetItems ... begin result := ComboBox.Items; end; procedure TMyForm.SetItems ... begin ComboBox.Items := Value; ListBox.Items := Value; end; MyForm.Items.Clear などのように呼び出す場合は、SetItems ではなく GetItems だけが 呼び出されてしまうみたいですね。
>>608 ItemsとLinesでassignは?
スマン、Memoと勘違いしてた。 LinesじゃなくてItems同士だ、逝ってくる
delphiだけは平和だねw Javaは血で血を洗う内紛 OOはアンチと信者の抗争。 RubyはHSPに当り散らしてるし。
∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ミ,,゚Д゚彡 < リアルワールド(米)で飛行機が墜落して大変だ。
,;゙ ミ \_____________
ミ. ミ
/゛゛゛゛
>>605 V33でしたっけ?
samplesタブにあるShellTreeViewを使うとメモリリークするのは、 おいらのDelphi6が逝ってるからなのだろうか。 鬱だ
617 :
デフォルトの名無しさん :01/11/13 05:53
WinGのサンプル(牛だったとおもう)は奇麗な減色だったような気がします。 はずしていたらごめんなさい。
Delphi MLにその話題あったよ
619 :
名無しヘタぐらま ◆B18Bks.Y :01/11/13 10:23
>>614 マッキントッシュは特に何にもしなくても
OSが全部そこそこきれいにディザリングしていたような。
620 :
デフォルトの名無しさん :01/11/13 10:42
>>593 です。
>>594 >そもそも pf24bit の画像を pf8bit に減色するのですから
>変な色になるのは当然です。また、パレットは pf8bit 以下の
>色分解能であるときのみ有効です。もともと256色の画像を
>591 のようにやって変な色になるとしたら、実行環境のビデオ
>ドライバがおかしいか、そもそも256色以下の環境である可能性が
>あります。
今の自分が使っている画面の設定はHigh Color(16ビット)です。
>>593 のソースの中の
DataImage.Picture.Bitmap.PixelFormat := pf8bit;
というのをすると、BMPが変な色になります。
コメントアウトすれば普通に表示されます。
フルカラーのBMPでなるのなら分かるのですが、
256色のBMPでもなってしまいます。
>>603 >違わないが、「理想的な減色」とはいっていない。元質問者は256色
>の絵を描くツールを作っているわけで、予めパレットを設定しておくこ
>とにどれほどメリットがあるだろうか?しかも256色以内の使用色
>でも固定のハーフトーン色に減色されるんですか。だとしたら、実装が
>ボロいということですね。
256色の固定パレット(もちろん編集は可能)を用意して、
そのパレットを使うBMPを複数枚書くのを目的としています。
>>595 TnkDIB ダウンできないようです(404)Delphi5までしか
対応になっていないからでしょうか。
みなさん、ありがとうございました。
引き続き教えていただければうれしいです。
621 :
デフォルトの名無しさん :01/11/13 11:00
>>593 です。
申し訳ありません。出来ました。こちらのミスでした。
ロード用のBMPにロードしたものを編集用のエリアにコピーしていたのですが
そのときに、パレットがコピーされないのが原因でした。
お手数をかけて大変申し訳ありませんでした。
どうも、ありがとうございました。
マジでキレイな減色したいなら、Optpix、Padie等の専用ソフトを使うことをお勧めします。 Optpixはシェアウェアで、ゲームのFFなんかでも使われた実績があります。 Padieはフリーですが、開発は終わっていたと思います。 昔はPag1テトラへドロンというディザなしでの性能が恐ろしく高いソフトが のもありましたが、作者が特許を抱え込んだままサポートを止めてしまっていて残念。 とは言え、作者様のサイトやテトラへドロンのヘルプは、減色を理解するのにかなり役立ちます。 なお、自作する場合は、減色は圧縮と同じで特許に固められているので注意が必要です。 Cマガのバックナンバーにもいくつか参考記事があるので参照してみてください。
623 :
デフォルトの名無しさん :01/11/13 11:37
>>622 減色ですか。きれいな減色が出来ればよいのですが(24ビットBMP読み込み時
に減色して256色表示等)とりあえず、いまは考えていません。
Cマガジンはいろいろ気になるのですが近くに売っていないので
たまにしか買ってないです。定期購読しようかな。
で、>593の問題ですが、現在がんばっていますが解決してないです。
ロードしてきたBMP(LoadImage)をpf8bitで画面に表示までは
うまくいきました。
LoadImage.Picture.Bitmap.PixelFormat := pf8bit;
GetPaletteEntries(LoadImage.Picture.Bitmap.Palette,0,255,PE);
が、そのあとに取得したパレットを別のイメージ(ColorImage)に描画するのが
うまくいきません。インデックスカラーではなく、RGB値を使っているので
きちんと描画できそうなものなのですが・・・。
引き続き教えていただければうれしいです。
// ペンの色表示
procedure TForm1.ColPut;
var
x,y: integer;
PE:array[0..255] of TPaletteEntry;
begin
LoadImage.Picture.Bitmap.PixelFormat := pf8bit;
GetPaletteEntries(LoadImage.Picture.Bitmap.Palette,0,255,PE);
for x:=0 to 15 do
begin
for y:=0 to 15 do
begin
Palette[x+y*16] := RGB(PE[x+y*16].peRed,PE[x+y*16].peGreen,PE[x+y*16].peBlue);
ColorImage.Canvas.Brush.Style := bssolid;
ColorImage.Canvas.Brush.Color := Palette[x+y*16];
ColorImage.Canvas.FillRect(Rect(x*8+1,y*8+1,x*8+7+1,y*8+7+1));
end;
end;
end;
>>620 >DataImage.Picture.Bitmap.PixelFormat := pf8bit;
>というのをすると、BMPが変な色になります。
>コメントアウトすれば普通に表示されます。
>フルカラーのBMPでなるのなら分かるのですが、
>256色のBMPでもなってしまいます。
596 が教えてくれたところによると、TBitmap では256色でも
そうなるみたいです。まったく、いい加減ですね。
>256色の固定パレット(もちろん編集は可能)を用意して、
>そのパレットを使うBMPを複数枚書くのを目的としています。
そこで、上記のことをするためには、まず TBitmap のインスタンス
を作って初期化し PixelFormat := pf8bit; に設定してから
こちらで任意の256色の論理パレットを作成して、それに設定する。
そして、そのパレットから色を選んで描画する。ということでは
どうでしょうか?
うーむ、試してみたいが時間がないのでごめん。
>>620 >今の自分が使っている画面の設定はHigh Color(16ビット)です。
ハイカラー(16ビット)でパレットを扱うソフトを開発するのは
最悪です。true color(24ビットまたは32ビット)に比較すると
色解像度は256分の1です。ですから、RGB() で色を指定しても
カラーマッチングが行われ、システムパレットにマッチングされて
しまいます。純色以外の任意の値で RGB() で Canvas.Pixels[x,y]
で色を置いて、GetRValue(Canvas.Pixels[x,y])、GetGValue()、
GetBValue() してみると、置いた色と同じでない場合があることに
気がつくでしょう。
true color 環境での開発を強くお薦めします。
626 :
デフォルトの名無しさん :01/11/13 12:36
>>624 >うーむ、試してみたいが時間がないのでごめん
とんでもないです!ヒントをいただけるだけで十分です。
わざわざ時間を割いて解答していただきありがとうございます。
>>625 マジですか!早速再起動することにします。
本当に基本のようなことが分かっていなくて申し訳ないです。
ありがとうございました。
現在皆さんから教えていただいたことを参考にいろいろ試しています。
ありがとうございます。
>>626 念のため言っておくけど、
>>625 の内容は嘘です。
再起動してもどうにもならないでしょう。
>>625 知識も無いのに適当な事言っているんじゃねーよ。
>>627 >
>>625 >知識も無いのに適当な事言っているんじゃねーよ。
おい、おい、その言い草はないだろう。
自分の環境で試した結果だけど、なぜ嘘だと決めつける?
629 :
デフォルトの名無しさん :01/11/13 13:24
>>627 えっ!嘘なの!本当なの?でもどっちにしろ良くないことには違いないので
再起動しました。状況は変わってないですけど・・・。
ハイカラー(16ビット)環境下で以下のコードを試して見て下さい。 設定色と取得色が一致するのは稀であることが分かります。 procedure TForm1.Button1Click(Sender: TObject); var Sclr,Gclr:COLORREF; i:integer; begin with Canvas do for i := 0 to 255 do begin Sclr := RGB(127,127,i); Pixels[1,1] := Sclr; Gclr := Pixels[1,1]; ListBox1.Items.Add(IntToHex(Sclr,4)+ ' : '+IntToHex(Gclr,4)); end; end;
JavaとDelphiを行ったり来たりするとややこしいことになるよね
∧,,∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ,,゚Д゚彡 < BorConの様子はどうですか? U ミ \____________ ~ミ ミ ∪ ∪ ダレモ イッテナイ?
633 :
デフォルトの名無しさん :01/11/13 15:51
RPGとかのゲームもある程度簡単に作れる?
>>633 簡単なゲームならある程度簡単に作れるが、
CやC++で作られているちょっとしたものを作ろうとするなら手間は一緒
635 :
デフォルトの名無しさん :01/11/13 20:22
質問って程じゃないですが WideStringに対応した文字列操作関数って限られてますよね 例えば、検索するのもPos関数だけ PWideChar使えるやつもないし 結局、みんな自作してるもんなんすか?
636 :
デフォルトの名無しさん :01/11/13 21:30
AnsiPos 関数 注意 この関数はマルチバイト文字セット(MBCS)をサポートします。
test
638 :
デフォルトの名無しさん :01/11/13 22:12
すいません、どなたか教えてください。 TListViewで、項目が長すぎて途切れて表示されているとき、 ツールチップみたいな表示でポップアップして表示したいん ですが、どうやったらいいのでしょうか?
640 :
デフォルトの名無しさん :01/11/13 23:30
Kylix2/JBuilder6/Borland Enterprise Server同時発表か・・・ すごすぎ! JBuilderは少し早すぎるな・・・JDK1.4対応してるかな?
>>640 JBuilderってJDK選ばないことで有名じゃなかったか?
>>641 Personalでマウススクロールして欲しいのよ。標準で。
そのほうが初心者受けいいでしょ。
644 :
デフォルトの名無しさん :01/11/14 00:54
MBCSはウニコードじゃないでしょう。
~W系のAPI呼んだら?
MBCSってなんすか?
>646 ハァ?
Managed Business Consultancy Service Member British Computer Society Meteor Burst Communications System
UTF-8
STEP1 Image1 の Bitmap に 白、赤、黄緑、青、黒の五色の カラーテーブルを設定する procedure TForm1.Button1Click(Sender: TObject); var Table: array[Byte] of TRGBQuad; begin FillChar(Table,SizeOf(TRGBQuad)*High(Byte),#0); Table[0].rgbRed := 255; Table[0].rgbGreen := 255; Table[0].rgbBlue := 255; Table[1].rgbRed := 255; Table[1].rgbGreen := 0; Table[1].rgbBlue := 0; Table[2].rgbRed := 0; Table[2].rgbGreen := 255; Table[2].rgbBlue := 0; Table[3].rgbRed := 0; Table[3].rgbGreen := 0; Table[3].rgbBlue := 255; with Image1 do begin Picture.Bitmap.Width := Width; Picture.Bitmap.height := Height; Picture.Bitmap.PixelFormat := pf8bit; SetDIBColorTable(Picture.Bitmap.Canvas.Handle, Low(Table),High(Table), Table); end; end; procedure TForm1.Button2Click(Sender: TObject); begin with Image1.Canvas do begin Pen.Width := 3; Pen.Color := clPurple; LineTo(100,100); Pen.Color := RGB(40,200,30); Brush.Color := clNavy; Ellipse(10,10,170,80); Pen.Color := RGB(240,200,130); Brush.Color := clMaroon; Rectangle(100,100,150,150); end; end; 任意の色を設定してもカラーテーブルのどれかの色に マッチングされるのが分かる。
STEP2 Image1 の Bitmap に256のグレースケールのカラーテーブル を設定する。 procedure TForm1.Button1Click(Sender: TObject); var Table: array[0..255] of TRGBQuad; i: Integer; begin for i := 0 to 255 do with Table[i] do begin rgbRed := i; rgbGreen := i; rgbBlue := i; rgbReserved := 0; end; with Image1 do begin Picture.Bitmap.Width := Width; Picture.Bitmap.height := Height; Picture.Bitmap.PixelFormat := pf8bit; SetDIBColorTable(Picture.Bitmap.Canvas.Handle,0,255,Table); end; end; procedure TForm1.Button2Click(Sender: TObject); begin with Image1.Canvas do begin Pen.Width := 3; Pen.Color := RGB(80,100,150); LineTo(100,100); Pen.Color := RGB(100,200,230); Brush.Color := RGB(200,100,100); Ellipse(10,10,170,80); Pen.Color := RGB(240,250,230); Brush.Color := RGB(250,120,150); Rectangle(100,100,150,150); end; end; やはり任意の色指定でもグレースケールにマッチングされるのが 分かる。
STEP3 Image1 の Bitmap に任意の256色ビットマップファイルからの カラーテーブルを設定する。 function GetNumOfColorTable(Filename:string):integer; var FST:TFileStream; BIH:TBitmapInfoHeader; begin FST := TFileStream.Create(FileName,fmOpenRead or fmShareDenyNone); FST.Position := SizeOf(TBitmapFileHeader); FST.Read(BIH,SizeOf(BIH)); result := BIH.biClrUsed; FST.Free; end; procedure TForm1.Button1Click(Sender: TObject); var BmpFile:string; BM:TBitmap; Table: array[0..255] of TRGBQuad; i,NumColor: Integer; begin BmpFile := 'c:\ColorTest.bmp'; BM := TBitmap.Create; try BM.LoadFromFile(BmpFile); if BM.PixelFormat <> pf8bit then begin ShowMessage('not 256 color!'); exit; end else begin NumColor := GetNumOfColorTable(BmpFile); GetDIBColorTable(BM.Canvas.Handle,0,NumColor-1,Table); end; finally BM.Free; end; with Image1 do begin Picture.Bitmap.Width := Width; Picture.Bitmap.height := Height; Picture.Bitmap.PixelFormat := pf8bit; SetDIBColorTable(Picture.Bitmap.Canvas.Handle, 0,NumColor-1,Table); end; end;
652 の続き procedure TForm1.Button2Click(Sender: TObject); begin with Image1.Canvas do begin Pen.Width := 3; Pen.Color := RGB(80,100,150); LineTo(100,100); Pen.Color := RGB(100,200,230); Brush.Color := RGB(200,100,100); Ellipse(10,10,170,80); Pen.Color := RGB(240,250,230); Brush.Color := RGB(250,120,150); Rectangle(100,100,150,150); end; end; やはり任意の色指定でもカラーテーブルのいずれかの色にマッチング されるのが分かる。
>MBCS
要はSJISですよね
WideStringは2バイトのみのUTF-16
>>645 APIで文字列操作ってどういうのでしょ?(スレ違いか・・・)
655 :
デフォルトの名無しさん :01/11/14 10:24
>>654 CharLower, CharLowerBuff, CharNext, CharPrev, CharToOem, CharToOemBuff, CharUpper
CharUpperBuff, CompareString, CompareStringW, ConvertDefaultLocale, EnumCalendarInfo
EnumCalendarInfoProc, EnumCodePagesProc, EnumDateFormats, EnumDateFormatsProc
EnumLocalesProc, EnumSystemCodePages, EnumSystemLocales, EnumTimeFormats
EnumTimeFormatsProc, FoldString, FoldStringW, FormatMessage, GetACP, GetCPInfo
GetCurrencyFormat, GetDateFormat, GetLocaleInfo, GetLocaleInfoW, GetNumberFormat
GetOEMCP, GetStringTypeA, GetStringTypeEx, GetStringTypeW, GetSystemDefaultLangID
GetSystemDefaultLCID, GetThreadLocale, GetTimeFormat, GetUserDefaultLangID,
GetUserDefaultLCID, IsCharAlpha, IsCharAlphaNumeric, IsCharLower, IsCharUpper
IsDBCSLeadByte, IsTextUnicode, IsValidCodePage, IsValidLocale, LCMapString
LCMapStringW, LoadString, lstrcat, lstrcmp, lstrcmpi, lstrcpy, lstrcpyn, lstrlen
MultiByteToWideChar, OemToChar, OemToCharBuff, SetLocaleInfo, SetThreadLocale
WideCharToMultiByte, wsprintf, wvsprintf
STEP4 256色のビットマップを Image1 の Bitmap にロードして そのパレットエントリを取得し、それを使って Image2 の Bitmap にパレットを設定し、パレットエントリを表示する procedure TForm1.Button1Click(Sender: TObject); var PE:array[0..255] of TPaletteEntry; pLP:PLogPalette; i,NumPalEntry,x,y:integer; begin with Image1 do begin Picture.Bitmap.LoadFromFile('c:\Windows\花見.bmp'); NumPalEntry := GetPaletteEntries(Picture.Bitmap.Palette,0,255,PE); end; Label1.Caption := IntToStr(NumPalEntry); with Image2 do begin if NumPalEntry > 0 then begin Picture.Bitmap.Width := Width; Picture.Bitmap.Height := Height; Picture.Bitmap.PixelFormat := pf8bit; GetMem(pLP,4+SizeOf(TPaletteEntry)*NumPalEntry); pLP^.palVersion := $300; pLP^.palNumEntries := NumPalEntry; for i := 0 to NumPalEntry-1 do pLP^.palPalEntry[i] := PE[i]; Picture.Bitmap.Palette := CreatePalette(pLP^); FreeMem(pLP); for i := 0 to NumPalEntry-1 do begin Canvas.Brush.Style := bsSolid; Canvas.Brush.Color := RGB(PE[i].peRed,PE[i].peGreen,PE[i].peBlue); x := i mod 16; y := i div 16; Canvas.FillRect(Rect(x*8+1,y*8+1,x*8+7+1,y*8+7+1)); end; end; end; end;
訂正です 657 で NumPalEntry := GetPaletteEntries(Picture.Bitmap.Palette,0,255,PE); のところの 255 を 256 にしてください。
>>655 馬鹿ストレートに聞き返しちゃってすいません
レスありがとうございます
660 :
デフォルトの名無しさん :01/11/14 14:32
Nという形をした部品があって、ある法則にしたがって結合していくと Nの集合が、またNと同じような形になって… というフラクタルはありませんか。いちばん簡単なのは単なる 三角形や四角形だと思うけど…
ジュリア集合やマンデルブロの方がプログラムは簡単
>>660
662 :
デフォルトの名無しさん :01/11/14 14:59
>>661 でも
>>660 の条件に当てはまるかどうかは微妙。
つか完全には自己相似してないんじゃないか?
(拡大すると似たような形はでてくるが)
数学板で聞いたら?
>>660
664 :
( ´∀`) :01/11/14 15:45
,,,,,,,,,,,,,∧,,∧ / ̄
~′,,,,,,,ミ,,゚Д゚彡 < シェルピンシェルピン
UU""" U U \_
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1005721983&res=1 コホー曲線はわかんないYO
666 :
デフォルトの名無しさん :01/11/14 16:19
>>660 レプタイル(rep-tile)も簡単です。
┌─┬─┐
│┌┴┐│←これ系
├┤┌┴┘
│└┤
└─┘
>>665 アルゴリズム辞典に載ってたのと変数名が一緒だYO!
_________
∧,,∧ /
ミ;゚Д゚彡<
>>667 だって、買ったんだモン
ミつ つ \
~ミ ,, ミ.  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∪∪
669 :
Delフサギコ :01/11/14 16:54
∧,,∧ / ̄ ̄ ̄ ̄ ̄ ミ ミ < Delフサ ミ つ \_____ ミ @ ミ '∪'''∪' ピキューン + / ̄ ̄ ̄ ̄ ̄ + ∧,,∧ < 毒舌 ミ,・∀・,ミ \_____ (( ⊂ . つ )) + ミ ミ ''とノ'' + キュピィィィン + / ̄ ̄ ̄ ̄ ̄ ∧,,∧ < 死刑 ミ,,・∀・ミ . \_____ ミ つ つ )) + ミ ⊂.ミ ''∪''''
Λ,,Λ∩ / ̄ ̄ ̄ ̄ ̄ ∑ミ゚Д゚;彡< エェエエ! ,;゙⊃,ジ \_____ ~ミ ,,○ ∪ ∧,,∧ ミ・∀・,,ミ ウマ!ハチレー! ∧∧⊂,, ミ ゴラァ ミ゚Д゚;彡∪''''ヽ~ ∪∪'''''''''''UU ネタでした ということにしておこう。。。
会議っつーか,製品発表会だよな おぜぜ \65,000 也ですか…… (゚Д゚)ウマー
DelフサはBorCon逝かなかったのか・・・ 正直BorCon高い。 今日の最後のセッション1.5hみっちり宣伝だったし(w
674 :
デフォルトの名無しさん :01/11/14 21:09
つか、BorConて何ですか。ボコンて。
675 :
デフォルトの名無しさん :01/11/14 21:32
小一時間ほど自問自答してみたが BorConは某管でOK?
∧ ∧ ・・・・。 ミ ゚Д゚彡 ~ミ,,,,uuミ で、KylixのC++版の名前は?
>>677 (期待してたが)その辺の話は全然なかったな。
BCB6とかもちょっとふれただけ。
Delはまったくっていう位なかった(w
679 :
デフォルトの名無しさん :01/11/15 09:31
>>658 詳しい解説ありがとうございました。STEP3まで試してみて、
これからSTEP4に入ります。
ありがとうございました!
680 :
デフォルトの名無しさん :01/11/15 11:22
初心者スレで質問したのですが返事が無く、 スレ自体が終わりそうなのでここにも書かせていただきます。 誰か教えてください。 > FireBirdにIBXで接続するISAPIアプリケーションを作っています。 > IBDatabaseをひとつのクライアント(WEBブラウザ) > が開いてしまうと、他のクライアントが開けなくなってしまいます。 > 複数クライアントの同時接続はできないのでしょうか? > Win2000+Delphi6Pro+IIS5.0です。 よろしくお願いします。
>>679 追伸です。657 でやっていることは Graphics.pas にある
CopyPalette() 関数を使うと簡単にパレットを同等にできます。
もし、ソースを参照できるようでしたら、この関数の実装コード
は参考になりますので見ることをお薦めします。
しかし、元質問のようにパレットを自前で用意したり、編集可能に
したり、表示したりするには、地道にパレットエントリを取得して
おかなければなりません。
683 :
デフォルトの名無しさん :01/11/15 16:27
>>684 で思い出した。
NetscapeとMozillaの関係みたいなものだ。
本題のほうはわからないのだが。すまそ。
,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
~′,,,,,,,ミ,,゚Д゚彡 <
>>685 俺もどこかで聞いたな。
UU""" U U \_______________
InterBaseのオプソ版が火の鳥なんでしょうか?
>>683 めっさ気体!
インターシモソ輻射長…伊達に太ってないな。ウンウン
_________ ∧,,∧ / ミ;゚Д゚彡< なななんか、今確認したらDelphiMLが ミつ つ \信者獲得大作戦みたいになってる… ~ミ ,, ミ.  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∪∪ D6ならTryStrToIntを使うべきでは?>>VBのInNumeric
信者って何の信者?(w
中村教。
過去ログ教。
数年前に拾って来たDelphi4 Proが手元にあるんだけど、 消そうかどうか迷っている。Delphi6 Personalが無料で 手に入る今、二世代遅れのProfessional版を持っていて 何かメリットがあるんだろうか。どう思われますか?
Del4とDel6の違いよりも Personal版とProfessional版の違いの方が大きいんじゃない? 趣味でやるだけでDBも使わないというのなら話は別かも知れんけど
オブジェクトを手続き内だけでなくグローバル変数のように使うには どこで生成して破棄したらいいんですか? それと、動的配列は破棄しなくてもいいんですよね?
695 :
デフォルトの名無しさん :01/11/15 23:39
>>694 ユニットのinitialization節とfinalization節。
>それと、動的配列は破棄しなくてもいいんですよね?
基本的に長い文字列と扱いは一緒。
696 :
デフォルトの名無しさん :01/11/15 23:44
2Byte moji utenai node korede kanben site ne. Aru jouken o mitasu takakukei wo kaesu kansuu o tukuritai ga sono takakukei wa nankakukei ni naruka wa wakaranai. Douteki hairetu o hikisuu ni tori, kansuu nai de memory o wariatetai. sikasi, ikano youni suruto dame? function GetPolygon(var APoints:array of TPoint); var ... begin .... .... SetLength( APoints, ACount ); for i:=0 to ACount-1 do APoints[i] := .... end;
しかし、singletonパターンを使えば、最初に必要になった時に 生成されるようにも作れるよ。実際ScreenやPrinterオブジェクトは こんな風な書き方で利用者が生成・破棄のタイミングを考えなくても いいようにしてある。 interface function MyClass: TMyCLass; implementation var instance: TMyClass; function MyClass: TMyCLass; begin if instance = nil then instance := TMyClass.Create; Result := instance; end finalization if instance <> nil then instance.Free;
type TDynamicTPointArray = array of TPoint; function GetPolygon(var APoints:TDynamicTPointArray); begin … みたいにする。
function GetPolygon(var APoints: array of TPoint; ACount: Integer): Boolean;
成る程、大変参考になりました。
>>693 なるほど。データベース関連など省かれている機能があるわけね。
腐ってもProfessionalてなわけか。
まあ使うかは分からないけど取っておくとしよう。
Delphi6 Enterpriseが見つかるまで(お
※一部フィクションです。
盗品を使っているうちは二流。
ある程度は移行できるのでは?
∧,,∧ / ̄
@,,,ミ,,゚Д゚彡 <
>>697 ナイス
⊂,,,,,,,,,つつ. \_
>>703 3流かも
失言だったかな。 ∧,,∧ /せっかくなのでジョウホウ ミ;゚Д゚彡 < D4からPro版以上にはコードエクスプロラ ,;゙ ミ \ つーのがついてまして、 ミ. ミ 簡単便利にコーヂング可能になります。 /゛゛゛゛ また、"定義の検索"機能であるコードナビゲーションも かなり便利。(これもPro版だったよね) おかげで Pro版じゃないと生きていけない体になってしまいました。
708 :
デフォルトの名無しさん :01/11/16 16:30
Delphiで印刷関連のプログラム作るのですがうまくいきません moji1 moji2 moji3 moji4 aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa ------------------------------ 以降何行続くかはデータにより変わる。 横向き印刷でやりたいのですがどうしたらいいでしょうか? Orientation := poLandscape;を指定するとプリントアウトされなくなっちゃうんです。 データじたいはメモリ上に持ってます。 Gridに張り付けて印刷しようとか色々考えましたがダメでした。 こうしたら良いよって言うのがあったら教えて下さい。
>>708 >Orientation := poLandscape;を指定するとプリントアウトされなくなっちゃうんです。
座標の指定が間違ってません?
単に打つだけならAssignPrnでテキストファイル変数にプリンタを
割り当てれば座標指定が要らないので楽かも。
var
F:TextFile;
begin
Printer.Orientation := poLandscape;
AssignPrn(F);
Rewrite(F);
Writeln(F, P1:4, ' ', P2:4, ' ', P3:4, ' ' P4:4);
CloseFile(F);
710 :
デフォルトの名無しさん :01/11/17 09:26
他のアプリでロックをかけられているファイルを 無理やり書き換える方法はありませんか。
>>710 そのロックしてるアプリを無理やり強制終了させるか
CreateFileを置換させるDLLを食べさせるか
712 :
デフォルトの名無しさん :01/11/17 11:34
713 :
デフォルトの名無しさん :01/11/17 11:53
BitStreamを扱えるライブラリかコンポーネントってないですか? Read(Buff, 3)で3bit読み込んだりしたいんだけど・・・・
はぁ?
>>710 そんな方法が仮にあったとして、
今度、自分がファイルをロックしたくなったとき困るよ。
>>713 こんな感じですか…テストはしてませんよ
TBitStream = class(TStream)
private
FReadedBit: ShortInt; //Last中何ビット読んだか
FLast: Byte;
FSource: TStream;
public
constructor Create(Source: TStream);
function Read(Buffer, Count); override;
end;
constructor TBitStream.Create;
begin
inherited;
FSource := Source;
FReadedBit := 8;
end;
function TBitStream.Read;
begin
while Count > 0 do
begin
if FReadedBit = 8 then begin FSource.Read(Last, 1); FReadedBit := 0; end;
// FLast and (1 shl FReadedBit) を、(あなたがどういう形で欲しいのかは知らないが)とにかくBufferに書き込む
Inc(FReadedBit);
Dec(Count);
end
end;
717 :
デフォルトの名無しさん :01/11/17 13:23
Delphi6のTActionList使っています 標準アクションのTEditCut,TEditCopyなどEditのアクションを 使っているのですが、TCustomEditから継承されたものしか 機能しないとヘルプに載っていました これをTComboboxでも使用したいのですが、どうすればいいでしょうか
>>716 レス感謝です。
とりあえず、参考にしながらザクっと一回組んでみます。
Delphi6 personal を使ってます。 色んなページのTipsなどを見ながら勉強する毎日ですが悩んでいます。 他アプリのChildのSysListView32 classのリスト文字列を取得したいのです。 今はこんな感じでやってますがだめです。 SendMessage(WND,WM_GETTEXT,256,longint(pch1)); // WND はSysListView32のハンドルです。 何か良い方法は無いものでしょうか。
722 :
デフォルトの名無しさん :01/11/17 20:41
LVM_GETITEMTEXTかListView_GetItemTextを使うんだけど、 いろいろ面倒なんだよね。 OSはなに?
>>722 ありがとうございます。
OSはWinMeです。
かなり面倒なのでしょうか。
今からGoogleで検索してみます。
参考になる所をご存知でしたら教えてください。
>723 基本的には、CreateFileMapping(INVALID_HANDLE_VALUE,... で共有メモリを作って、SendMessageで渡す構造体は(文字バッファも) 共有メモリ上において置くってかんじかなあ。
>>723 ありがとうございます。
難しいですね。むーん
726 :
デフォルトの名無しさん :01/11/17 22:54
>>720 いつの日か,日本にも Jedi のような真の Delphi User Group が育つ日を夢みつ…
720のやつ誰かやってみてください。 自分好みのテレビソフト作りたくない?
729 :
デフォルトの名無しさん :01/11/18 04:50
>>719 どうもありがとうございます
これでコンボボックスの切り取り貼り付けも出来そうです。
>728 作りたくない。 ソースが付いているのよね? なら、デバッグ可能でな?
>730 ソース追いかけるとCPUウインドとかに入ってAccessViolationする。 俺の環境が悪いのかなとおもってどうなのかなって。
732 :
デフォルトの名無しさん :01/11/18 17:04
Delphi6personalでシューティングゲームをつくりたいんですけどキャラクターを たくさんだしたり消したりってどうすればできるんでしょうか? TImageを実行中につくれればできるのかな、と素人考えしています。
734 :
デフォルトの名無しさん :01/11/18 18:34
>>733 なんとなくイメージがわいてきました。
ありがとうございます。
そっちの板だと板違いカエレとかいわれそうでしたので……。
別にここだっていいんじゃねーの?
736 :
Delフサギコ :01/11/18 18:37
>>736 複数行にまたがるコメントのこと,考えた?
∧,,∧ /
ミ,,゚Д゚彡 < テストコード見てよ
>>737 U U \
~ミ ミ
∪∪
739 :
Delフサギコ :01/11/18 19:00
,,,,,,,,,,,,,∧,,∧ /
>>731 ~′,,,,,,,ミ,,゚Д゚彡 < D6Personalでパッチはあてました?
UU""" U U \_______________
,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
~′,,,,,,,ミ,,゚Д゚彡 <
>>729 TComboBoxではProtectedで
UU""" U U \EditHandleが存在するので、それを継承して可視して
メッセージを投げてもCut&Paste&Undoなどが出来ます
∧,,∧,,,,,,,,,,,,,,, / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ミ゚Д゚,,彡,,,,,,,,,,,,ヾ~ < やっと二日酔いから脱したぞぅ
U U """"UU \_
>>736 ざっとリファクタリングして書き込んでみたよ。
test code信用してパス確認しただけ。
741 :
名無しの初心者 :01/11/18 19:10
ゲーム作りたいんですが、Delphiでも十分可能ですか? 可能ならさっそく買いたいと思ってます。 ちにみにプログラム経験ゼロです(汗
つーかテストコード穴あるじゃん(´д`;) 文字列も消してしまうものにしてしまった。すり抜けてる。
,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
~′,,,,,,,ミ,,゚Д゚彡 <
>>742 ん??
UU""" U U \_______________
Preタグで投稿すると改行がコピーできない...
修正して書いたよ。
>>744 あら、preがチェック入ってたのに気づかなかった。すまん
>>744 誰か良案授けてくださぃ
preあり:SPACEとかTAB対応
preなし:改行対応
特にTAB
748 :
Delフサギコ :01/11/18 19:34
,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
~′,,,,,,,ミ,,゚Д゚彡 <
>>745 、センキューセンキューセンキュスコ!
UU""" U U \_______________
コード書くのお早いですね~
>>747 意味がちょっとわかんないです。
コピペしたらそのまま動作するのがいいな。
AAも綺麗に表示されるともっといいな
749 :
名無しの初心者 :01/11/18 19:43
熱意は十分あります! というわけで買ってきます、Delphi6Pro。 一緒に買った方が良い本は何が良いですか?
>>748 test firstでやってるとテストを通れば完成なので、コード書くのは速くなる。
そのかわりテストをきちんと書かないと今回みたいな羽目になるので
仕様をきっちりtestできるようにしないとね。
ほかにも(テストしていない)曖昧な仕様としては
閉じていないコメントを残すのか消すのかってのがあるね。
とりあえず消すほうで書いたけど、あくまでも未定義動作だな。
テストを書いて明文化したいね。
751 :
デフォルトの名無しさん :01/11/18 20:33
ウィンドウを常に再背面にする命令はありませんか。 SetWindowPos( Handle, HWND_TOPMOST , 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE ); のちょうど逆のような。
753 :
デフォルトの名無しさん :01/11/18 22:54
それって、実行したときしかBOTTOMにならないでしょ。 たとえウィンドウがアクティブになっても BOTTOMでいてほしいのです
>>753 アクチブになる時にBOTTOMにすればいいじゃん
755 :
デフォルトの名無しさん :01/11/19 00:01
WinInet使って2chのスレに書き込むにはどうすれば いいんでしょうか?Indyとかのコンポーネントは使わないで。 Monazilla見たんですが、WinInet使った方法は書いてないみたいです。 Delphi4 pro + Win2k
なんとなく、 /bbs.cgi? の後ろにbbs= &key= みたいにくっつけたアドレスを送ればいいんでしょうか?
スレ違い
>758 追い詰めたんだけどわかんないよー
追いつめたコードをここに載せて!
DXCapture.pasの710行目 710: if FWantPreview then begin 711: BuildPreviewGraph; 712: StartPreview; 713: end; FWantPreviewを読むところでCPUウインドに入ってしばらくすすむと 「同時に複数の例外が発生しました」でとまる。
710行以上711行未満でエラーなの? FWantPreviewは Boolean型のフィールドだから、、、 ん~、エクスプローラーから実行したらどぉなるの?
>762 なにも起こらずにプログラム終了。 エラーダイアログもでない。
>>761 のDirectShow系のDLLなんかが古いってオチじゃねぇだろうな
>764 DirectX8を入れた2000とXPでやったけど同じとこで駄目。
768 :
デフォルトの名無しさん :01/11/19 17:28
DirectX8.1 のアップデートをした XP で、無事にサンプル動きました。 カメラは Logitech/Logicool QUickCAM-express. プログラムを IDE から動かすと、4-5 回 Break がかかるけど無視して先に進めば 動き出すよ。
>768 www.microsoft.com/japan/directx/ DirectX 8.1 は Windows XP に含まれていますので、 Windows XP のユーザーは DirectX 8.1 をダウンロードする必要はありません。 ってかいてあるけども?
すまん。家の W2K と間違えた... きにせんといてくれ。
WMPのバージョンとか
>test firstでやってるとテストを通れば完成なので、コード書くのは速くなる。 なるべくfirstでしたいのですが ついついいいかげんになって途中で、煮詰まってからtestを書くこともあります。 ちゃんとFirstでやらないと。 XPの流れですかね。すごい優れたコーディング技法っすね。 >とりあえず消すほうで書いたけど、あくまでも未定義動作だな。 >テストを書いて明文化したいね。 おっしゃるとおりです。 test外の動作では頭の中では考えていたんだけど、ちゃんとテストしないと いけませんね。 _________ ∧,,∧ / ミ,,゚Д゚彡< XPバンザイニャ ミつ つ \ ~ミ ミ.  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ U U >ウィンドウを常に再背面 って不思議な仕様ですね。 それにしても、JBのUML化とUnitテスト統合が エンプラ版だけってのは納得がいかんです… DelではPro版にも乗っけてほしいな。
773 :
デフォルトの名無しさん :01/11/20 01:32
ある事情によりDEL6が起動できなくなりました。 変わりにDEL5で作業を続けているのですが、以前DEL6で保存するときに レジストリ弄るのを忘れたため、dfm のテキストが全て異なる 文字セットで記録されています。これを一括変換したいのですが、 どのようなアルゴリズムで変換できますか?
>>773 これあげる。汚いけど動いてはいる。レジストリで解決できるようになってお蔵入りした奴。
もとのソースをTStringsに読んで、各行をこの関数で変換し、
別のファイルに書き出して。
間違っても元のファイルを上書きして破壊したりしないように!
function Del6DfmToDel5Dfm(const S: string):string;
type
TParseStatus = (psNormal, psQuote, psEndQuote, psUtf, psEndUtf);
var
Pos, Len: integer;
Status: TParseStatus;
c: Char;
N: integer;
Num: string;
begin
Pos := 1;
Len := Length(S);
Status := psNormal;
Result := '';
while(Pos <= Len) do begin
c := S[Pos];
case Status of
psNormal: // Intial state
case c of
'''': begin
Result := Result + c;
Status := psQuote;
end;
'#' : begin
Result := Result + '''';
Status := psUtf;
end;
else
Result := Result + c;
end;
psQuote: // Quotation started with <'>
while (Pos <= Len) do begin
c := S[Pos];
if c = '''' then begin
Status := psEndQuote;
break;
end else
Result := Result + c;
Inc(Pos);
end;
psEndUtf: // End of Utf string case c of '''': Status := psQuote; '#' : Status := psUtf; else begin Result := Result + '''' + c; Status := psNormal; end; end; psUtf: begin // Utf string started with <#> N := 0; Num := ''; while (Pos <= Len) do begin c := S[Pos]; if IsNumeric(c) then begin N := (N * 10) + (Byte(c) - Byte('0')); Num := Num + c; end else if c = '#' then break else if c = '''' then begin Status := psQuote; break; end else begin Status := psEndUtf; break; end; Inc(Pos); if (Pos > Len) then Status := psEndUtf; end; if N < 128 then begin Result := Result + '''#' + Num + ''''; end else Result := Result +WideChar(N); if (Status = psEndUtf) then Dec(Pos); end; psEndQuote: // End of quotation case c of '''': Status := psQuote; '#' : Status := psUtf; else begin Result := Result + '''' + c; Status := psNormal; end; end; end; Inc(Pos); end; if Status in [psEndQuote, psEndUtf] then Result := Result + ''''; end;
776 :
デフォルトの名無しさん :01/11/20 02:09
どうもありがとう 早速やってみます ところで IsNumeric は「引数が整数表現かどうかを判定する関数」 でいいんですよね。
おれのハードかドライバが駄目なのかな。 www.kuroutoshikou.com/products/tvcuner/bt878a.html でもプログラムがとまるところはdirectxに関係なさそう なんだよね。。。
>777 プログラムが止まる所より前で問題が発生しているのでしょう。 どこまでわかるか不明だが、 エクスプローラーから実行時、ファイルにログを書きながら、どこまで実行されたか調べるとか。 ソースをコメントアウトしていくとか。 あと、DirectXに自己チェックツールついていませんでしたか?
>>777 乗りかかった船。
画像アップ版の存在は知っているよね?
ソースを「追わないで」IDE の中から Run して落ちた時の
画面コピーとかどこかにアップできませんか?
CPU ペーンの状態をみてみたい。
あと,Call Stack / 呼び出し履歴も。
チェック OS は W2K を希望。
>>780 Windows Media Playerのバージョンは?
>>780 0000 で 0000 の Read エラーか。予想しているより追いづらいエラーですね。
この状態で,CPU ペーンをアドレス 77F8F45C に移動するとどうなるか。
それと,ソースが全部あるのだからを
- コンパイラ - コード生成 - スタックフレームの作成
- デバッグ - デバッグ版 DCU を使う
を有効にしてもう一度。
メディアプレイヤーは7.01.00.3055だって。最新です。
785 :
デフォルトの名無しさん :01/11/20 15:32
>>784 あぁ。デバッグ情報こみこみで、呼び出し履歴を見たい。
見ればわかると思うけど、ECX の値に間接ジャンプしているだが、ECX が0.
どこかで、関数ポインタに NIL/NULL/0 の値が入っていて、それをチェックしていないのだ。
違うなぁ。構造化例外処理のコードの断片だ。 RtlUnwind に関連した内部コードだな。
次にダンプするときには、スタックペーンのもう少し上のほうまで見せて カレントスタックポイントを表す緑矢印が画面の一番下になるところまで スクロール。 ...あまりアセンブラデバッグしたこと無いでしょ > ure ま、これも経験ということで。 落ちているアドレスはあまりよくないところなので、原因解明の 期待はあまり持たないでください。
うん、まったくない。 よろしければ解説もしていただけるとうれしいです。 CPUウインドウの見方とか。解説ページのポインタでもいいです。 またキャプチャします。
>>785 あめ猫さんが帰ってくるのを祈りましょう
>>790 1. 使っているのは Personal ですか?
2. DxCapture.pas l.82 あたりの DVSizeName の定数定義に日本語環境では
正しく処理できない文字が入っていますから,以下のコードに変更。
const
DVSizeName: array [TDVSize] of string =
(
#$CD#$E5#$20#$E8#$EC#$E5#$E5#$F2#$20#$E7#$ED#$E0#$F7#$E5#$ED#$E8#$FF,
#$CF#$EE#$EB#$ED#$FB#$E9#$20#$F0#$E0#$E7#$EC#$E5#$F0,
#$CF#$EE#$EB#$EE#$E2#$E8#$ED#$E0,
#$D7#$E5#$F2#$E2#$E5#$F0#$F2#$FC,
#$31#$2F#$38#$20#$E8#$F1#$F5#$EE#$E4#$ED#$EE#$E3#$EE
);
3. DXCapture.pas l.437 あたりの FreeMediaType の FreeMediaType を
コメントアウト。
こんな感じに。
procedure FreeMediaType(mt: TAM_MEDIA_TYPE);
begin
if mt.cbFormat <> 0 then begin
// CoTaskMemFree(mt.pbFormat); { TODO -cMust undo : Test }
// Strictly unnecessary but tidier
mt.cbFormat:= 0;
mt.pbFormat:= nil;
end;
mt.pUnk:= nil;
end;
これで動作に変化があるか?
793 :
デフォルトの名無しさん :01/11/20 19:36
100メガのファイルをファイルストリームで開いて、途中の10メガが不要になったと仮定したとき不要な10メガを埋めて90メガにするのに高速な方法ありませんか? いまはもうひとつファイルストリームつくって移してるんですが遅いです。
pCode氏あたり絶対まぎれてる(w
>>794 Delフサギコ = Wizman 説があったが、まさか。
>>795 まぎれているとして?どうよ?
>>793 意味がいまいち分からん…
不要のなるのはどの部分?
末尾…………話は簡単。TFileStreamのプロパチィよくみてみ。
先頭や中間…面倒。てか漏れも効率的なカット/インサートの方法知りたい。
798 :
793です :01/11/20 20:58
最後ならSizeプロパティ変更すればいいのはわかってるんですが・・・ 不特定の場合の処理を速くしたいんです
>>785 「記号摂動法」を使ってみるとか。
誤差の原因が違うところにあるのなら駄目だけど。
って適当なこと書いてますな。すまん。
if FWantPreview then begin この行でbreakしてselfを監視式で見るとnilになってます。 直前のInitCapFiltersの呼び出し前はnilでは無いです。 InitCapFiltersに入ってそのfunctionの最後までnilではないのですが 帰ってくるとnilになってます。
お。復活したね。 少し変化が出ることを期待したのですが。 ちと説明。 最後に落ちていることの直接の原因は、アドレス 0 から実行しようとしたため。 アドレス0は読み書き禁止状態になっているので「アドレス0で0を読もうとしてエラー」 がおきました。これは 77F8F45A の CALL ECX が引き金で、確かに ECX は0だ。 ここは NTDLL の RtlUnwind のルーチンで、NT の構造化例外を処理する部分。 それがこけている。 おそらく例外処理中に別の障害が発生しているんでしょう。 ところで。 「Delphi6 Personal 日本語版」であれば、例外発生時のメッセージは "access violation at ..." ではなく「アドレス ... で読み込み違反が起きました」 って日本語のメッセージが出るはずなんだが、もしかして英語版を混ぜている? コンポーネントパレットの微妙な部分がいつも隠れているのも、ちーと気になる。
最適化をOFFにしたらコンパイルできた!
コンパイルできたじゃないや。 ちゃんとうごいた!!
806 :
デフォルトの名無しさん :01/11/21 00:54
WM_QUERYENDSESSIONって終了するとは限らないのでは?
>>801 どうもありがとうございます… って
ごめんなさい、解読できません…
記号摂動法とはどういうものなのですか?
記号摂動法って大学の演習でチラッとやったんだけど、スマヌ、ほとんど忘れた(w コンピューターで図形処理をするときの誤差を無くす方法なんすけどね。 ちょうど凸包求める問題とかやったんだけどなあ。。。 思い出せたら書きます。 ちなみに記号摂動法に関する本は検索すると出てきます。
811 :
デフォルトの名無しさん :01/11/21 03:58
リストヴューのチェックボックスを反転したときのイベントって取得できる?
>>785 今時間無いからゴメン。
前に凸包やった時は
1) 4方・八方のmax min 点を探す=x , yと(±x±x)の最大最小を探して
初期包とする
2)初期包の重心を求める C点
3)残った全部の点に対してC点からの方向を求め
その方向が包の収まるべき位置を探して、その角度方向に
左右の2点より凸なら包に挿入
包のデータに座標の他にc点から見た角度を持たせて、
角度でソートすると考えれば、 検索するのが高速に
いけない・・・・細長い格好になると3)を単純にやるとダメでゴチャゴチャやった記憶が・・・
814 :
デフォルトの名無しさん :01/11/21 10:14
TListViewで特定の行やセルのみ文字色変えられますか?
OwnerDrawくぁ?
>>814 OnCustomDrawItem イベントと OnCustomDrawSubItem イベントで出来る
・注意点
リストビューのCanvasに直接色を塗ったり書いたりしないで、
フォントのColorプロパティや、Brushの色を変更すること
いろいろなサイズのデータが連続しているファイルなのです。 ジョークだと思いますがFATの書き換えはだめです
>>785 見たよ。
原因は終了条件の問題と複数の点がある場合の問題
終了条件は
始点と同じとなってるけど、y座標が同じ点が複数あると終了しない
819 :
デフォルトの名無しさん :01/11/21 14:28
1に「Borlandに関する・・・」とあったのでこちらで質問させていただきます。 PARADOXver7って、Windows2000(もしくはXP)上で動作するのでしょうか。 Delphiにもデータベースデスクトップが付属していたと思うのですが、 正常に動作しますでしょうか。 どなたか情報をください。よろしくお願いいたします。
820 :
デフォルトの名無しさん :01/11/21 14:45
>>819 自分でインストールしてみたら。
動かんかったら諦めるしかないな。
Paradox ってたしか Corel にうっぱらったから
Corel が面倒みてくれるかもしれんが。
ところで俺もParadox7昔使って ObjectPAL でアプリ作ってたけど
ランタイムとか必要で自由に配布できないしいろいろ面倒だったから
Delphi に乗り換えたけど、やっぱ Delphi でDBアプリ組んだ方がいいよ。
BDE 使えば Paradox で作ったテーブルにアクセスできるよ。
>>819 動作するよ。一ヶ所変になるけど対応可能。
>>811 OnChangeイベントで可能。
ただし、このイベントは、Selectedなどのプロパティが変化したときにも
発生します。しかも、イベントハンドラに渡される情報だけでは、
どのプロパティが変わったのか判定できません。以前の状態と
比較するとかして、自分で調べる必要があります。
>>820 事情がございまして、なかなか試すわけにもいかなかったりします。
単にDBのメンテの場合、アプリ作るほど大袈裟なのも・・・。
>>822 すみませんが、変になる個所と対応方法を教えてもらえないでしょうか。
お忙しいとは思いますが何卒よろしくお願いします。
googleとかだともうPARADOXの情報ってエロゲー(なのかな)情報で、
あるいは通販の昔のページとか、サイト制作者の過去の実績だったりとか
探しきれなくて。
∧,,∧ / ̄ \,,,,ミ,,゚Д゚彡 < さいきんは画面を見せて質問が ⊂,,,,,,,,,つつ. \ 流行ですか? WinXPみたい。 なんか、近頃忙しくて....
826 :
ななしヘタぐらま ◆B18Bks.Y :01/11/21 17:33
>>793 移すときのバッファを大きくすれば多少速くなると思います.
1メガバイトくらい取ってみてはいかがでしょうかっ.
(扱っているファイルがデカイので一瞬で終了!とかは期待しないで下さい(笑))
>>824 すべては自己責任。
確かに今は Corel の持ち物。parardox 10 も出ているし。
https://iw.nifty.com/iw/nifty/fcorel/mes/9/2794.html Win2Kで7Jを使う
W2K の CD-ROM の \SUPPORT\TOOLS にあるリソースキットをインストール
すると Application Compatibility Tool がインストールされます。
それで PDOXWIN32.exe に対し NT4 SP5 で動くよう指示を出せば、ちょっと
変な動きをしますがボタンが見えるようになります。
-------------
XP だと最初から,「互換性」タブが exe のプロパティにあるから
そこに NT4 SP5 を指定すればよい。
828 :
デフォルトの名無しさん :01/11/21 20:24
環境変数Pathを書き換えて反映させることって出来ますか?
829 :
デフォルトの名無しさん :01/11/21 20:58
Delphi 6 Enterprise Trialをインストールしてみましたが、 実行するたびにWindows Installerが起動しちゃいます。 これは、トライアル版の仕様なのかな?
>>829 どっかで見たよ。その話。Nifty か?
Windows Installer が古いとそうなるらしい。
再インストールすると直るらしい。
>>829 https://iw.nifty.com/iw/nifty/fdelphi/mes/18/16316.html RE:Del6の初回表示ダイアログ
再度、Windows2000(Sp2)でDel6を再installしました。
やはり、結果は変わらずダイアログが表示されます。
Del6ディレクトリのreadme.rtfに記載されている自動修復機能が気にかかります。
・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・
Windows 2000 およびそれ以降 (Windows XP を含む) では,Microsoft Installer
サービスは,常にアプリケーションを監視して破損があれば修復を行う自動修復機能
を提供します。
これを実現する 1 つの方法は,アプリケーションがインストールされたディレクトリ
構造を監視する方法です。Delphi によってインストールされたディレクトリを
削除したりその名前を変更すると,Microsoft Installer はその変更を検出し,
なくなったディレクトリの復元を警告を出さずに試みます。
自動修復機能が知らないうちに実行されることを防ぐには,インストール済みの
Delphi のディレクトリを手動で削除したりその名前を変更してはいけません。
機能を追加または削除する場合は,必ずインストーラアプリケーションを
使用してください。
・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・
OSを変更して再度installしてみるつもりです。
>>830-831 レスありがとうございます!
Windows Installerの最新版(2.0)をインストールしてみましたが、
一度目の起動で必ず、Windows Installerが起動されてしまいます。
OSがW2Kなので、
>>831 さんの説明と同じような理由かな。
そういえば、Personal版インストールしている状態で、
Enter版Trialを一緒にインストールしたら、
なぜかアプリケーションの追加と削除が起動してしまったのが
関係あるかもしれませんね。変な風にアンインストールされてしまったとか。
>Personal版インストールしている状態で、Enter版Trialを一緒にインストール それだよ。原因は。 いったん全部アンインストールしてから再インストールしなさい。
ああ!なるほど 言われてみれば確かにそうですね。 ご指摘ありがとうございました。改善します。 記号摂動法は一応検索したのですが、なにやら 難しい文献しか引っかからなかったもので… そういえば、メールエンコード方式(?)で テキスト化された状態の、ZIP圧縮されたサンプルファイル があったのですが、WINではどのようにバイナリ化すれば よいのでしょう。プログラム作ったほうが早いですかね。 #ちなみに、「既に記録済みの頂点は選択しない」という条件を #入れたら誤回答が少なくなりました。
>>818 自分で言うのもなんなんですが、よくあのソースコード見ただけで
問題点分かりましたね。コメントつけていたとはいえ、
分かりにくいかと心配していたのですが。
さすがに本職はちがう…
836 :
793です :01/11/22 00:11
不特定サイズのデータがいっぱい連なったファイルを使いたい場合みなさんどうするものなんでしょうか? ・ストリームでゴリゴリ ・バラして1つ1つファイルにする ・データベーステーブル使う 今回ストリームで行ったわけなんですが、おかげさまでまあなんとかできそうですけど もっとイイ!方法はあるのでしょうか?
仕様はこんなの ・不特定サイズのデータがいっぱい連なったファイル ・途中のデータを任意に破棄できて、ちゃんとサイズもちぢむ ・データの追加ももちろんできる
「不特定サイズのデータがいっぱい連なったファイル」による。
>・バラして1つ1つファイルにする 特にデメリットが思いつかなければこれにする
あまりにも漠然としてて何も胃炎
だから手前でストリームを固定サイズで区切って チェーン情報とインデックス作って、空いた穴に末尾のファイルを埋め直してやれっつうの
ファイルシステムの再開発ですな
>だから手前でストリームを固定サイズで区切って >チェーン情報とインデックス作って、空いた穴に末尾のファイルを埋め直してやれっつうの ああそういう事ね、わかったYO。
>>833 アンインストールしたけど、ダメっぽい...。
レジストリにゴミでも残ってるのかな?
レジストリを掃除して、また試してみます。
チェーンが切れたらどうすんだ? デフラグとスキャンディスクもちゃんと作れよ(藁
>空いた穴に末尾のファイルを埋め直してやれっつうの ここに気がつかなかったです どうもでした
最小サイズが1バイトで、これがたくさんある場合はどうするのYO。
>>847 クラスタサイズを小さくすればいいのでは
849 :
test,test,test,test :01/11/22 01:17
あのさ、ボーランドから出てるSUITEって奴を買おうかと 思っているんだけど、どう? 古いC++コンパイラー(C++5.0Jとか古いソフトがパック になってるやつ)で15000円なんだけど。 とりあえず勉強用に使うんだけど。
>>849 商品があるがままの状態で収録されてるらしいから気を付けてね。
ほとんどDOS時代のフリーソフトのような感じだろう。
あっ、そうかー! 793さんは頭がいいですね。
勉強用ならフリーの Borland C++ Compiler がタダで良いよ。 古いコンパイラーは仕様が古いから、、、
正直お勧めできない。 とにかく言語仕様や開発環境が古すぎる。 GUIに興味がなければVCかCygwinのgcc+gdbが良いかも。
>>845 その辺は適時ガベージ処理でも走らせればいいんじゃない?
チェーン情報で、次クラスタ以外へのジャンプフラグの発生個数メモっとけば
>>849 ほかの方と同意見。C として使う。とか、DOS プログラムをしたい。
という理由がない限りは選ぶべきではない。
Borland C++ 5.0J は 1996/8 発売だけど ANSI C++ の仕様が制定されたのは
1998/9 だよ。
>>803 親切にありがとうございました。テレビ見てます。
結局Delphiの最適化がよくないってことだったのか?バグ?
>>856 もうちょっと追い込みたいんだけどね。
最初はソース単位で最適化の ON/OFF {$O-} ディレクテイブを使う。
差のあるソースが見つかったら大きく半分ずつ {$O-} と {$O+} を入れていって
だいたいの場所を突き止める。っと。
いつのまにかアップグレード優待の案内がきていた 5 Learning→6 professional が約4万か 5買ってアップグレードした方が安いんだなぁ 12/18締め切りか・・・もうちょっと悩もう。 あぁそういや、5PRO → 6PRO のアップグレードの値段っていくらでした?どなたか。
デスクトップアイコンのフォントを書き換えるツールってよくあるけれど、 あれってどうやってるの?
860 :
デフォルトの名無しさん :01/11/22 03:57
>858 税込み25,200円です。
861 :
百合毛羅ー :01/11/22 05:16
Delphiてさ、簡単だって言うけど パスカルなんて知らねーよ。
Delphi(Pascal知らない) と VC++(C言語知ってる) を比べたらどうなんだろうね。 Delphi(Pascal知らない、Cは知ってる) なら全然問題なくDelphiもできるとおもうけど。 VCLとかほかのコンポーネント、情報の豊富さか、ああ、ガイシュツ! ボーランドのマニュアルはあんまよくないけど。 あ、MSのツールからDelphiに移ろうとしたひとはマニュアルの悪さで つまづかされてるのかも。
>>863 C→C++よりも、C→ObjectPascal→C++のが移行しやすいyp!
yp?
>865 大昔、そういう言語があったんだよ。 マンモスうれp!
∧.,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ;゚Д゚彡< マンモスうれPって............. ミ つ目(ミ . \_______________ ~ミ,,O,,,,,,つ ところで、自分の特殊フォルダ C:\Documents and Settings\FusaFusa\スタート メニュー\プログラム を得る方法はレジ(Software\MicroSoft\Windows\CurrentVersion\Explorer)や Shell(SHGetSpecialFolderPath)を使ってできるのですが C:\Documents and Settings\All Users\スタート メニュー\プログラム こういうAllUsersの特殊フォルダを得るのは レジやShellでどのようにすればいいのでしょうか?
,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
~′,,,,,,,ミ,,゚Д゚彡 <
>>868 さん、ありがと
UU""" U U \_______________
>>835 確かに読み難い。 コメントはアルゴリズムを先に説明してよね
あと、ArcTan2を何度も使ってるけど、上のdx,dyとしたのdx,dyを別の変数名にして
例えば
sDx :=(aDx*LDx+aDy*LDy) ;
sDy :=(aDy*LDx-aDx*LDy) ;
SubAngle:=ArcTan2( sDy, sDx );
とやる方がいいし、 もっというと
,sDx,sDyから領域を4つに別けて判断するのが普通だよ
871 :
デフォルトの名無しさん :01/11/22 11:32
>>870 sDx :=(aDx*LDx+aDy*LDy) ;
sDy :=(aDy*LDx-aDx*LDy) ;
SubAngle:=ArcTan2( sDy, sDx );
これって、成分(aDx, aDy)のベクトルと
成分(LDx,LDy)のベクトルの偏角を求めるときの
手段なんですか?
あと、4つに分けて判断とは
どういうことでしょうか。
>>871 そう常套手段ね。元のベクトルで片方を逆転する。
すると、元のベクトルの方向に向いた場合にどっちを向くかが判定出来る
4つに別けて判断は、正負で4象に別けて 必要なの前方右だけだから
sDx :=(aDx*LDx+aDy*LDy) ;
sDy :=(aDy*LDx-aDx*LDy) ;
if sDy <0 then continue;
if sDx <0 then continue;
sDy:=sDy/hypot(sDy,sDx); // ArcTan2で求めた角度でもいいけどこっちが速い
if sDy <= LastError then
begin
LastError := sDy;
Result := APoints[i];
end;
と飛ばしてしまえば、ArcTanやhypotを計算する回数が減るでしょ?
この方法だと、1個もデータが無い場合がありえるから、そういう場合はループ終了
ありゃ、ダメダメ xは負を許さないと 細長い鋭角な場合にダメだ という事で上の後半はダメダメ。りArcTan2は必要みたい
874 :
デフォルトの名無しさん :01/11/22 15:50
数字を少数第2位で丸める方法って無いですか?
875 :
デフォルトの名無しさん :01/11/22 16:04
100倍してtruncして100でわる。
丸めるって、四捨五入でいいのかな。 ,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ~′,,,,,,,ミ,,゚Д゚彡 < 10倍|1/10してRoundOffという手もあるけど UU""" U U \小数点以下ならFormatがよろしいかと。 procedure Check(S1, S2: String); overload; begin if S1 <> S2 then ShowMessage('×'); end; procedure testFormatFloat; begin Check('1', Format('%.0f', [1.4])); Check('2', Format('%.0f', [1.5])); Check('1', Format('%.0f', [1.49])); Check('2', Format('%.0f', [1.50])); Check('1.5', Format('%.1f', [1.49])); Check('1.5', Format('%.1f', [1.50])); Check('1.5', Format('%.1f', [1.45])); Check('1.5', Format('%.1f', [1.54])); Check('1.4', Format('%.1f', [1.44])); Check('1.6', Format('%.1f', [1.55])); Check('1.0001', Format('%.4f', [1.00005000])); Check('1.0000', Format('%.4f', [1.00004999])); Check('1.000', Format('%.3f', [1.00005000])); Check('1.000', Format('%.3f', [1.00004999])); end;
877 :
デフォルトの名無しさん :01/11/22 16:50
じゃあこうして。 x := StrToFloat( Format('%.2f', [x] ) );
Delphi6 Personal でしたが データベースと言う物をやってみたくて今日Pro版を買いました。 こんな高いソフト買ったの初めて・・・ データベースに関する知識が全く無くて、これから 勉強しようと思うのですが、過去ログに出ていた Paradox とか色々あるらしいですが、それらを 使用するのにまた何か購入する必要があるのでしょうか。 予想外の出費に経済危機状態なので心配です。 安く上げる方法を教えてください。
PostgreSQL、タダだよ。SQLもわりと標準的なので良いよ。 ODBC経由で繋げられる。
>>879 レスありがとうございます。
PostgreSQL 検索してみます。
標準的なSQLやODBCなど言われてもまだ全く解らない状態ですが
頑張ってみようと思います。
今日ついでにDelphiでデータベースをやる参考書を
見てたのですが、あまり良いのがありませんでした。
Delphiって書籍が少ないですねぇ。
入門に適した書籍やサイトがあれば教えてください。
>>878 Pro版に付属しているDatabase DesktopはParadoxのサブセットだから
Paradox形式のデータベースはそのまま使えるよ
>>881 レスありがとうございます。
そうなんですか?
PostgreSQL 調べたんですがなんだかややこしそうなので
そのまま使えるParadoxからやってみようかな。
色々種類があるんですねー。
∧,,∧,,,,,,,,,,,,,,, / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ゚Д゚,,彡,,,,,,,,,,,,ヾ~ < InterBaseもフリーDBだと思われ U U """"UU \_ DBの勉強サイトはAcidFloorとMagicOfDelphi 書籍は 2000/7/7 Delphi 5 実践データベースプログラミング BDコンポーネントとQuickReportの活用 田中 和明 カット システム \3,800 ISBN4-87783-025-1 2000/6/24 Delphiデータベースアプリケーション開発ガイド 三原 幸一 秀和システム \2,800 ISBN4-7980-0010-8 この二冊はお勧めですよ。
推薦図書/必読書のためのスレッド in プログラム板
http://pc.2ch.net/test/read.cgi?bbs=tech&key=1005897052 ∫ _________
∧,,∧ ∬ /
ミ,,゚Д゚彡っ━~ < この際ですから、Delphi書籍の書評
_と~,, ~,,,ノ_. ∀ \ 上記スレで、書きません?
ミ,,,,/~), │ ┷┳━  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ .じ'J ̄ ̄| ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ┻
コピペだけど、フサはこの辺りの書籍がお気にです。
Delphiデータベースアプリケーション開発ガイド 三原 幸一 秀和システム \2,800 ISBN4-7980-0010-8
Delphi 5実践データベースプログラミングBDコンポーネントとQuickReportの活用 田中 和明 カットシステム \3,800 ISBN4-87783-025-1
基礎からわかるDelphi5 三原 幸一 秀和システム \2,400 ISBN4-87966-937-7
これで完璧!Delphi5 裏技170選 金井 利美男 エーアイ出版 \2,800 ISBN4-87193-715-1
Delphi4 TECH200 Delphiマガジン編集部 PSネットワーク \2,600 ISBN4-939049-50-7
シェルプログラミング入門DelphiによるCOMの徹底活用 新井 正広 ソフトバンク \3,360 ISBN4-7973-0782-X
Delphi 4プログラミング技法 Vol.1Win32プログラミングテクニック ザビエル・パチェコ+スティーブ・テイクセラ(日向 俊二 訳) プレンティスホール \5,700 ISBN4-89471-082-X
実践Delphiコンポーネントプログラミング 秀和システム出版編集部 秀和システム \2,800 ISBN4-87966-798-6
Delphi 3.1リファレンスガイド 小出 俊夫 秀和システム \2,400 ISBN4-87966-785-4
Delphiオブジェクト指向プログラミング 塚越 一雄 技術評論社 \1,980 ISBN4-7741-0427-2
Delphi 4 プログラミングバイブル Marco Cantu 著篠原 慶 監訳 インプレス \5,680 ISBN4-8443-1273-1
Delphiリファレンスブック(赤い本)がBorlandサイトに見つからないなあ。
フサギコさんからレスもらったー!! ありがとうございます。 探してみます。 しばらく手は洗いません。
∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ ゚Д゚ミ < 手は洗ってヨシ (ミ ミつ)ビシッ\_________ ~ミ ミ ∪ ∪
茶碗に手はないし 猫はしゃべらない
>>887 >猫はしゃべらない
猫はしゃべっていない。
よってその指摘は無意味。
キーボード打って書き込んだだけだ。
遊ぶDelphiは読んでおいて損なし
890 :
ななしヘタぐらま ◆B18Bks.Y :01/11/23 01:20
>>861 私はDelphiでPascal初体験でしたが
Delphi以前にPascal経験があった方って
意外と少数のような気もしますが….
うん。Delphi3.1でPascalを知った。 ポインタの扱いに癖がある以外はすばらしい言語だ。
892 :
ゲィム作りてー :01/11/23 01:35
Delphi6Pro買ったけど、6に関する参考書なし。 Delphi5の参考書でも買っとけば役に立つ? 早く覚えてゲィム作りたいよ。 フサギコさん、ズブの初心者でも覚えられるサイト教えてくれぃ!
Delphiのフリー版をもっていますが Delphi初心者(Pascal未経験者)なので さっぱり分かりません。 今度参考書を買ってみたいのですが初心者 にお薦めの本は有りますか?
∧,,∧ / ̄
\,,,,ミ,,゚Д゚彡 < Delphiは下位互換性が非常に高いので
⊂,,,,,,,,,つつ. \ 6専用本 とか必要ないです。
>>894 のと
Delphi子育て
http://www.valley.ne.jp/~masaiku/index1.htm Best Book
http://home1.infonia.ne.jp/~delphian/delphi/history/book.html Best Book 2
http://home1.infonia.ne.jp/~delphian/delphi/history/bookrank2/book.html これみて選びんさい。
>>892 Kylix用のゲーム本が最近、出てましたね。
立ち読みしたけど、面白そう。
この際だから、D6で読みこなしてみては?
Delphi用ゲーム本は数冊しか出ていませんので
全部手に入れていいでしょう。
ORAソフトのコーナー
http://home4.highway.ne.jp/ora_soft/main/ora_prog.htm ここみたりしてがんばーて。
フサギコさん感謝です。
897 :
デフォルトの名無しさん :01/11/23 03:28
StringGridの文字列を csvとして保存するためのスマートな方法はないでしょうか。
StringText CommaText を使うぐらいしかしらねーな
booleanの値を反転させるのに 半年間もif文を書いていた・・・鬱だ
900 :
デフォルトの名無しさん :01/11/23 07:57
実数の負の記号-を▲に変えて表示するにはどうしたらいいの?
901 :
デフォルトの名無しさん :01/11/23 10:55
S:=AnsiReplaceStr(S,'-','▲');
ToolBarで使用できるアイコンを配布しているサイトって、ありませんか? アイコンを描くのは苦手。。。
IE,Officeのをパクれ
DelphiのをパクるのはOK?
>>902 Delphiインストールしたらに付いてくるでしょーに・・・
>>905 Delphi付属のアイコンはセンスZero。
Delスレの活気がずいぶん減ってきたような。 結局、パーソナル無償配布から新規ユーザーになったぜって人はいるのだろうか。 ほとんどの人はかじっただけで飽きちゃったかな。
>>907 Delphiドトネトの発表で覚悟を決めた人が多いのかも。
ログ漁るとフリーのアイコン・ビットマップ集へのリンクが出てくるよ
┌―――――――――――――――――――――――――┐
│↓誕生の瞬間 │
│
http://piza.2ch.net/mona/kako/973/973021766.html │
│785 名前: ( ´∀`)さん 投稿日: 2000/11/24(金) 21:20.. │
│ │
│ ,,,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ │
│~′,,,,,,,,,,ミ,,゚Д゚彡< 毛ぇ生えたぞゴルァ! │
│ UU"""" U U \_____________. |
└─────────────────────────┘
∩∧,,∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
゙ミ,,゚Д゚彡ノ < 明日は一周年だゴルァ
ミ ミ \____________
ミ ,, ミ
ノ∪ ∪
これだけあれば、満足してもらえます?(BitBtnアイコン)
http://sunsite.icm.edu.pl/delphi/ftp/d10free/glyphs!.zip Toolbar2000付属
http://www.jordanr.dhs.org/ Rimrock Software Programming Glyphs
http://www.rimrocksoftware.com/20x20.html 『あいこんコンテスト』
http://member.nifty.ne.jp/koumei/iconian/ Dean's Icons
http://jfa.javalobby.org/projects/icons/index.html アイコン。。-お色直し工房-
http://hp.vector.co.jp/authors/VA013969/ げんちゃんのお試しページ
http://tokyo.cool.ne.jp/shimagen/ dl_div.htm#glyph
http://www.inner-smile.com/dl_div.htm#glyph Java look and feel Graphics Repository
http://developer.java.sun.com/developer/techDocs/hi/repository/ IBM-Ease of Use-Icons
http://www-3.ibm.com/ibm/easy/eou_ext.nsf/Publish/648 もらとり庵
http://www.rururu.com/moratorian/
神様、Delフサギコ様、仏様、感謝します。
休みの日は下がるけど職業プログラマが職場から書き込んでるのか?
今日、professionalへのアップグレードを頼んだ。 もうもどれん。
915 :
デフォルトの名無しさん :01/11/24 00:15
>Delスレの活気がずいぶん減ってきたような。 >結局、パーソナル無償配布から新規ユーザーになったぜって人はいるのだろうか。 >ほとんどの人はかじっただけで飽きちゃったかな。
>ほとんどの人はかじっただけで飽きちゃったかな。 は、いらなかった…。 オレオレ!新規新規!
918 :
デフォルトの名無しさん :01/11/24 01:41
>>914 いつでもPersonal版に戻れます。
はいはいっかい!! ははいはにかいはいってます。
>>907 delphi6 personal から delphi6 professional を買いました。
白いご飯を食べられなくなりましたが・・・
年末なので少し自己嫌悪。はやく買って良かったと思えるようになりたい。
仕事で使うとか言う事もなく、全くの個人ユーザです。
>>893 レスありがとうございます。
取り合えず今Paradoxからはじめてます。
作った物は他のPCでも動くんでしょうか。
他のPCでも使って良いんでしょうか。
質問
fileexists や directoryexists を使うと FileCtrl は
使わない方が良いよと出てきて卑屈になりそうなんですが
じゃあ他の方法はあるのでしょうか。教えてください。
| ̄ ̄ ̄ ̄ ̄ ̄| |よろしくフサ-| |______| ∧,,∧.. .|| ミ,,゚Д゚ミ..|| すいません、このスレ、イッパイイッパイ ミ づΦ なので....四露死苦って事で...ひとつ. ~ミ ミ U''''.U D6からでしたか。 DirectoryExists は SysUtils または FileCtrl FileExists は SysUtils になってますよ。HELPにも載っているようです。 他のマシンからでもDBが見えるなら(LANとかDBインストルするとか) 作ったプログラは動くと思います。 フサはODBCでエイリアス作って接続したことしかないですが その場合、ODBCでリンクが見えたら何のDBでも何の接続でも プログラムは動きます。 インスタトラメーンばかり食ってると間違いなく 体は壊すからお気をつけください。
>>922 フサギコさんおはようございます。
uses節からFileCtrlを外しても使えました。
すいませんでした。
手持ちの本「Delphi Object Pascal リファレンス」
で見たらDirectoryexists が FileCtrl になってたので勘違いしました。
ちなみにこの本は重宝してます。
>インスタトラメーンばかり食ってると間違いなく
>体は壊すからお気をつけください。
ありがとうございます。
吉牛でも行って脳みそをプリオンで刺激してみます。
924 :
デフォルトの名無しさん :01/11/24 11:48
キーを押した際に、押しっぱなしにしていると 自動的に連続入力されますよね。それが嫌で、 純粋に「キーが押された瞬間」「キーが離された瞬間」を 取得したいので、 OnKeyDown および OnKeyUp イベントに処理コードを書きました。 ところが、やはりずっとキーを押していると OnKeyDown が 何度も発生してしまいます。何とかならないでしょうか。 OnKeyDown には以下のようなコードを書いています。 case Key of VK_A: ~ ; VK_Z: ~ ; VK_K: ~ ; VK_M: ~ ; end; ※ VK_A は 65 と定義してあります。 VK_B = 66; VK_C = 67; ... 現在、KeyDown 時にAが押されたら A_Pushed := True のようにして、対応するキーが True だったら KeyDownを受け付けないようにしていますが、それでも やり方が悪いのか上手くいきません。
[OnKeyDown] if Flag then Exit; Flag := True; ~ 処理 ~ [OnKeyUp] Flag := False; ~ 処理 ~
>>924 キーボードに使われてるマイコンのファームの方がキーリピートをやっています
>>925 のように書けばNEC98以外なら巧く動くかもしれませんが
完璧にしようと思えばoff->onの間隔が一定以下なら無視させるしかありませんね
KeyDown は何度も来ますが、対する KeyUp は1回だけです。たしか。
GetAsyncKeyStateとか使う方法はだめなのでしょうか。 たしか、ジョイスティック入力とかも、このAPIじゃなかったかな。 ∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ,,゚Д゚ミ < イベント発生したいなら、ちょっと違うけど。 ミ ミ \__ ~ミ,UU_ミ
ミ,,゚Д゚彡DelフサギコのフサフサDelphi談話室②
http://pc.2ch.net/test/read.cgi?bbs=tech&key=1006602102 ∫ _________
∧,,∧ ∬ /
ミ,,゚Д゚彡っ━~ < 新スレたてますた。
_と~,, ~,,,ノ_. ∀ \
ミ,,,,/~), │ ┷┳━  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ .じ'J ̄ ̄| ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ┻
もうそろそろ、息切れですかね......
機種依存文字萎え
とりあえずDelフサは
>>930 にブチ切れるとみた(w
∧,,∧___ / ̄ ̄ ̄ ̄ ̄ /ミ*゚Д゚ミ/\< 萌え・・・ /| ̄∪∪ ̄|\/ \_____ |____|/ ,,,,∪∪,,, ,,
933 :
デフォルトの名無しさん :01/12/20 12:43
imageコンポーネントに表示されてる画像を90度回転させたいのですが どうしたら良いでしょうか?
次スレあったのね すいません
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ̄ ̄( ゚Д゚) ̄ ̄| < 良い子は寝る時間 |\⌒⌒⌒⌒⌒⌒\ \ | \ \  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ \ |⌒⌒⌒⌒⌒⌒| \ |_______|
このスレはいただいた。 覚悟するヨロシ。
938 :
デフォルトの名無しさん :02/03/03 23:46
糞スレあげ
∫ _________ ∧,,∧ ∬ / ミ,,゚Д゚彡っ━~ < 漏れは素人童貞ですた。 _と~,, ~,,,ノ_. ∀ \ ミ,,,,/~), │ ┷┳━  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ .じ'J ̄ ̄| ┃  ̄ ̄ ̄ ̄
942 :
デフォルトの名無しさん :02/03/07 07:23
>941 煮詰まってるんだね。
∫ _________ ∧,,∧ ∬ / ミ,,゚Д゚彡っ━~ < 漏れは仮性包茎ですた。 _と~,, ~,,,ノ_. ∀ \ ミ,,,,/~), │ ┷┳━  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ .じ'J ̄ ̄| ┃  ̄ ̄ ̄ ̄
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ̄ ̄( ゚Д゚) ̄ ̄| < 内臓出ちゃう |\⌒⌒⌒⌒⌒⌒\ \ | \ \  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ \ |⌒⌒⌒⌒⌒⌒| \ |_______|
あは~ん
イミフメAA貼るだけなら書き込むなや>ギコ
947 :
デフォルトの名無しさん :02/03/10 11:58
age
いや~ん
ばか~ん
そこはだめよ~
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ̄ ̄( ゚Д゚) ̄ ̄| < 格安ソープまんせー! |\⌒⌒⌒⌒⌒⌒\ \ | \ \  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ \ |⌒⌒⌒⌒⌒⌒| \ |_______|
偽必死ダネ
953 :
デフォルトの名無しさん :02/03/17 20:47
954 :
デフォルトの名無しさん :02/03/17 20:51
あげ
| | ∧ |_|Д゚) ミンナMLでデザパタ論議チュウ |文|⊂) | ̄|∧|
| |,,∧ とりあえず、IteratorはForEachで使えないと.... |_|Д゚ミ Cチャープでは出来るらしいが.... |文|⊂ミ | ̄|∧|
| |,,∧ halbow氏が壊れ初めてる... |_|Д゚ミ |文|⊂ミ IUnknownの実装とか言ってるし... | ̄|∧| カレもまたDelの腐れCOMInterfaceの 犠牲者か...
過去ログ見なさい
CでもOOP出来ると言い張る人みたいになってるな・・・
どうしてVCLからパタンを発掘ってアプローチを取らないんだろ? VCLってパタンの宝庫なのに。 「その実在において、それらに付随している他の考えからそれらを分離する。 これを抽象といい、一般のアイデアはこうして出来ている」 John Locke
またわけの分からん発言を... とにかくGoF読めって。
Delフサギコ ◆zE1iiRdQ はクラスライブラリ無しでは 生COMコンポーネントすら書けない悲しき無能PG。
>生COMコンポーネントすら んなもん書きたく無い。ML入ってないのでどういう議論かキボーン
>>965 特に知らなくても困らないよ<議論
GoFのサンプルをVCLパターンを無視して
とにかく実装してみましょってだけだから。
ともかくDelのinterfaceをJavaのそれと混同して使うなや。
Delは単一継承interface無しで使うのが一番シンプルだよ。
キタ━━(゚∀゚)━━━!!!!!
?
969 :
デフォルトの名無しさん :02/03/23 19:54
>>966 >Delは単一継承interface無しで使うのが一番シンプルだよ。
かっこ閉じ忘れのカキコしてるヤシみてるとLisperの俺は鳥肌立ってくる。
970 :
デフォルトの名無しさん :02/03/23 19:55
と思ったら、 >承interface の承の右側が開きカッコに見えてしまうという罠。 芯できます。
MLで言えばいいのに、2chでコソコソと halbow氏を叩いているDelフサギコって・・・・・
>>971 オマエモナ-
MLにリンク投げてみろや
次スレはどこ逝った?
ども
キタ━━(゚∀゚)━━━!!!!!
なにが?
Delフサギコが。
今だ!1000ゲットォォォォ!!  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´ ∧,,∧,,,,,, ) (´⌒(´ ⊂ミ゚Д゚⊂ `つ≡≡≡(´⌒;;;≡≡≡ """"" (´⌒(´⌒;; ズザーーーーーッ
なかなか1000行かないね。
981 :
デフォルトの名無しさん :02/03/28 19:07
今だ!1000ゲットォォォォ!!  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´ ∧,,∧,,,,,, ) (´⌒(´ ⊂ミ゚Д゚⊂ `つ≡≡≡(´⌒;;;≡≡≡ """"" (´⌒(´⌒;; ズザーーーーーッ
すべりこみアト19回。
ごめんアト17回
984 :
デフォルトの名無しさん :02/03/28 22:12
1000!
すみませんageないでいただけますか・・・
ageたいよおおおおおおおおおおお!!!!!!!!
今だ!1000ゲットォォォォ!!  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´ ∧,,∧,,,,,, ) (´⌒(´ ⊂ミ゚Д゚⊂ `つ≡≡≡(´⌒;;;≡≡≡ """"" (´⌒(´⌒;; ズザーーーーーッ
989 :
デフォルトの名無しさん :02/03/30 00:36
さっさと埋めちまおう。
埋め
埋め
埋め
今だ!1000ゲットォォォォ!!  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´ ∧,,∧,,,,,, ) (´⌒(´ ⊂ミ゚Д゚⊂ `つ≡≡≡(´⌒;;;≡≡≡ """"" (´⌒(´⌒;; ズザーーーーーッ
今だ!1000ゲットォォォォ!!  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´ ∧,,∧,,,,,, ) (´⌒(´ ⊂ミ゚Д゚⊂ `つ≡≡≡(´⌒;;;≡≡≡ """"" (´⌒(´⌒;; ズザーーーーーッ
埋め
埋め
v <(゚ω゚) <うっ! ( )\ /'>
v (゚ω゚)> <はっ! /( ) <'\
v <(゚ω゚)> <うっ! ( ) /'> v (゚ω゚)/ <はっ! /( ) <'\
1000 :
1000 :02/03/30 00:57
v w (゚ω゚)/ \(゚δ゚)<ジーンギスカーン! /( ) ( )ゝ <'\ / >
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。