ミ,,゚Д゚彡DelフサギコのフサフサDelphi談話室

このエントリーをはてなブックマークに追加
1Delフサギコ
            ∫    _________
   ∧,,∧     ∬   /DelphiやBorlandに関する
   ミ,,゚Д゚彡っ━~  <  雑談や質問しながら
_と~,,  ~,,,ノ_.  ∀   \ みなーで、くつろごうや
    ミ,,,,/~), │ ┷┳━   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ .じ'J ̄ ̄| ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄  ┻
2Delフサギコ: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
3Delフサギコ: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/
4Delフサギコ:01/10/21 20:38
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ;:・・.∴○;・.:∴       *     ☆
|      ゚     ⊂⊃   。
|         ☆,, ∧ ∧      *
|   ゚      ヽ(゚Д゚*)ヘ
|      *    (□ノ)ノノ ゚.・∴..*.☆+
|     ⌒⌒⌒∪∪⌒⌒⌒⌒
|     ⌒  ⌒     ⌒ ⌒
|
| Delギコさんはお空の上で幸せに暮らしているだろうか

   ̄ ̄ ̄ ̄ Ο  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       ο
♪   ∧,,∧゚ ♪
    ミ,,゚Д゚彡  ♪
    ミつ[|lllll]).
   〜ミ  ミ
    U''U

Delphiお勉強リンクは過去スレをみてください。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999486538
5デフォルトの名無しさん:01/10/21 20:38
1000
6Delフサギコ:01/10/21 20:39
   ♪        / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\        ♪
♪   ∧,,∧ ♪ <    話題募集中!    > ♪ ∧,,∧  ♪
    ミ,,゚Д゚彡.  ♪\________/♪   ミ゚Д゚,,彡
     ミつ[|lllll]).                      ([lllll|]とミ
   〜ミ  ミ                         ミ  ミ〜
    U U                          U U
7Delフサギコ:01/10/21 20:53
   ∧,,∧      / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡  < 寒い季節になりました。
  ミ つ且~~   \___________
〜ミ,,,,,, ,,ミ

[Delphi:61493..61505] 他のフォーム(フレーム)の表示イメージを別フォームに縮小表示したい

って、TCustomForm.GetFormImageだけで済む問題なのじゃなかったかな。

過去スレが過去スレがと言わずに、もう一度話題にしてあげればいいのに。
9デフォルトの名無しさん:01/10/21 21:08
見苦しい
10Del生徒:01/10/21 21:10
     ∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ( ´∀`)/< 先生!あいかわらずHELPのリンクミスが多いです!
 _ / /   /   \
\⊂ノ ̄ ̄ ̄ ̄\   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ||\        \
 ||\|| ̄ ̄ ̄ ̄ ̄||
 ||  || ̄ ̄ ̄ ̄ ̄||
    .||          ||
11Delフサギコ:01/10/21 21:16
  _____
 /......  .. .../
 ||:::   ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 | ̄\ ミ ゚Д゚ミ<  ひええええ、Borconの恐ろしい情報だ
 |   |: ̄U U ̄:|\_________

確かに、金取りすぎとは思っていたが...BorCon

1万円以下ならフサも逝ってもいいんだけどね。

>>10
多くて報告する気もなくなりますね。

ソース置き場にスレつくってHELPのバグを
積み重ねておきましょうか?

HELPといえば、一つの項目調べるのにVCLとCLXの項目が出てくるの嫌っす。
しかも、内容に差がなかったりするし。
某がやばくなったらMSに吸収される前にOpenにして
OpenKylixとかOpenDelphiなんてのが作られたら別にそれはそれでいいんだけど。
無理だろうな。。。
13Del房:01/10/21 21:26
     ∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ( ´∀`)/< 先生!あいかわらずDELスレが多いです!
 _ / /   /   \
\⊂ノ ̄ ̄ ̄ ̄\   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ||\        \
 ||\|| ̄ ̄ ̄ ̄ ̄||
 ||  || ̄ ̄ ̄ ̄ ̄||
    .||          ||
14Delフサギコ:01/10/21 21:32
     | ̄ ̄ ̄ ̄ ̄ ̄|
     |よろしくフサ−|
     |______|
     ∧,,∧.. .||
    ミ,,゚Д゚ミ..||    Delphiが人気って事かしら?
    ミ   づΦ   あれ、ちがう?
  〜ミ  ミ
    U''''.U
15Del生徒:01/10/21 21:44
     ∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ( ´∀`)/< 人気ありますね! 2chツールもほとんどDel!
 _ / /   /   \
\⊂ノ ̄ ̄ ̄ ̄\   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ||\        \
 ||\|| ̄ ̄ ̄ ̄ ̄||
 ||  || ̄ ̄ ̄ ̄ ̄||
    .||          ||
16デフォルトの名無しさん:01/10/21 22:00
Delばかりやっていて、.net や c# には手を出そうとせず、興味すらない私は
新技術にはついていけないダメプログラマですか。
>>16
ドントヲーリー
>>11
>一つの項目調べるのにVCLとCLXの項目が出てくるの嫌っす。
何とか.zip を展開すると VCL だけが出るようになるんだけど
試した?
19Delフサギコ:01/10/21 22:51
試してません。どやるのですか?>>18

常にVCLだけでも困るかな
CLXつかっているときは出てもらわないと。

 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
   ∧,,∧   
  ミ,,゚Д゚彡∬
   〃  つ旦O
 〜ミ,,,n,,n[ ̄ ̄ ̄.]
        ̄ ̄ ̄
  ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (,,゚∀゚)< マターリしててイイでち
 @_) \________
21Delフサギコ:01/10/21 23:21
         ________
  ,ヘ ヘ   /
  ミ,,゚Д゚ミ< マターリ、日曜洋画劇場を見ますか。
  ミ,,,,,,,,ミノ \
          ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
22Delヒッキー:01/10/22 00:05
(−_−) セイントだっけ。。Orbital好きだよ。。
23Delぞぬ:01/10/22 00:08
    / ̄ ̄ ̄ ̄\
  /     ●  ●、      _____
  |Y  Y        \   /
  | |   |        ▼ | < 正直、フリーカーソルはどうにかして欲しい。
  | \/      _人.|  \_____
  |       ___ノ
  \    ./
   | | |
   (__)_) アドインでどうにかできるのは知ってるけど。。。
24Delヒッキー:01/10/22 00:36
(-_-) アドインって。。 http://homepage1.nifty.com/fuu/ これだね。。。

           _____________
   ___   /
 /´∀`;:::\< >>23 テレホマンはフリーカーソル好きょ
/    /::::::::::| |
| ./|  /:::::|::::::| \_____________
| ||/::::::::|::::::|
26Delフサギコ:01/10/22 01:02
  ∧,,∧    /
  ミ,,゚Д゚彡 < フサはフリカソルエディタもノンフリカソルエディタも
  ,;゙  ミ     \普通に使います。慣れたのかな。
 ミ.  ミ      VSでCtrl+↑↓が効かないのや
/゛゛゛゛      ブックマークジャンプが、イマイチつかいにくかったり
           Ctrl+Shift+Rのキーマクロが出来ないのはどうにかして欲しかったり…

 AAの人増えたのかニャー
27Delフサギコ:01/10/22 01:14
         _________
  ∧,,∧   / VC/VBからの乗り換えを支援するのなら
 ミ,,゚Д゚彡<  非フリーカーソルの実現はプライオリチー高め
  ミつ つ  \ じゃないのかニャ
〜ミ  ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  U U

あのアドインは完璧に非フリカにはならないですし。
(D6に対応してくれたのは大変よいのですが)
VSユーザーがアドインをすぐに知ることが出来るとも思えない
VSユーザーに不便を強いるのはよくなーい。

ユーザーの意見を積極的に反映してもらうためにも
某日NGに匿名で投稿しておきましょうか?
って、匿名でNG投稿する方法わからないや・・・・・・誰か気が向いたらフリカ要望やってちょ。


そういえばJBは非フリカ選択できるのではなかったかな?
技術的には簡単なことじゃニャーか?
28デフォルトの名無しさん:01/10/22 01:17
DelフサギコさんってDelphiX使うアルか?
堀信者のようにイタク無い事を願うアルよ。。
29Delフサギコ:01/10/22 01:33
    ∧ ∧  ・・・・。
    ミ ゚Д゚彡
  〜ミ,,,,uuミ

 痛くならないように気をつけます。
 でも、某に要望出すのは自由だと思うんだ。
 なるべく多くのユーザーの声が届きますよにっと。

しかし、堀信者って痛いのですか・・・・・

言語は宗教って、ヘジーも逝っておられるようですし(C#スレで見た)
原理主義みたいになってはいけないですよね。
信者は度を超すと対象が何であれ痛いもんだよ。
で堀信者って何?初めて聞いたんだが。
>>30
堀=DelphiXの作者
32名無しヘタぐらまさん:01/10/22 11:48
ただでさえDelphiスレが多いなか,あえてスレを立てた意図はいかに.> >>1

Delスレの乱立は他のスレを圧迫し,Delユーザーの情報収集を困難にします.
あえて立てるからには「面白いから許可!」「これはこれでいい」と思えないと.
(プレッシャーかけてごめんなさい)

あと,Delモナさんのスレへのリンクがないのですが…?
33デフォルトの名無しさん:01/10/22 11:48
みんなー
モナースレもよろしく!
http://piza2.2ch.net/test/read.cgi/tech/1003113413/l50
34Delフサギコ:01/10/22 12:00

      ∧,,∧l||l  だから他Delスレが下がっている時に立てたのに…
       ;゙⌒ヽ彡  トホホ
     〜ミ___ミ
    ''" ""''"" "''
35Del萬年初心者:01/10/22 12:26
>>32
他のDel板は技術的な話をしてるので、Del関係の話題でマターリできるこういう
板があってもいいんでない?
>>32
このスレしか見てないから困難は無い(w
37Delフサギコ:01/10/22 12:36
>>35
ばかぼんパパはこう申しております

 ̄ ̄∨ ̄ ̄ ̄
  ∧,,∧
 ミ,,゚Д゚彡
  ミ つ[ |:3ミ ]). <ソレデイイノダー
〜ミ ,, ミ 
  ∪∪  

関係ないけど、大阪弁2ch、プログラーの息抜きにドゾ
http://www.yorosiku.net:8080/-_-http://www.2ch.net/2ch.html
38Delフサギコ:01/10/22 12:43
C♯相談室 Part2
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=1002468050

名無しさん#さんに感謝しつつ

の、258-261のXMLサンプルを移植したいのですが
簡単に同等機能を実装する方法ありますか?
どなたかご存知でしたら教えてください。

   ∧,,∧      / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚∀゚彡  < 素直にCチャープ使えってか。
  ミ つ且~~   \___________
〜ミ,,,,,, ,,ミ

つまりXMLライブラリが欲しいなって事かも。
39Delあめ猫にゃ:01/10/22 13:14
>>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スレ立てて
特集記事・連載の解説してくれよ。
>>44
Wizman の記事だね。
47Delヒッキー:01/10/22 15:52
(-_-) MSXML DOMのサンプルでいいなら。。
     http://homepage2.nifty.com/boheme/delphi/tips/tec1510.htm
     でも C# のサンプルは SAX っぽいね。。。
48名無しヘタぐらまさん:01/10/22 21:08
>>35
たしかにモナスレも技術的な話になりつつあるので
マターリスレとしての意味はあるかもしれません.了解しました.
>>34
というわけで泣かないで〜(泣).

>>41
ニフティのFDELPHIで相当お世話になったので,
(数時間後に回答というのも珍しくなかった)
困っている方の質問を見てしまうと
仕事そっちのけで(それはマズイけど)
カラダが勝手にレスを打ってしまうのです.
他人に親切にされると自分も他人に親切にしてしまいたくなるのは不思議.
塞ぎ込
マターリし
51ビル・ジョブス:01/10/22 22:20
今度、ばぐでるわいとやらを使うのでよろしくー
52 ◆vAhkPfSU :01/10/22 22:23
ひくす in 「ARAHIQS」 on Web
ってなくなっちゃったの?便利だったのに。
53Delフサギコ:01/10/23 01:47
♪聞いてしぃちゃん ちょっと言いにくいんだけど
♪あのねしぃちゃん

今日、初めて蒟蒻畑アロエリーナ喰ろうたら (゚д゚)ウマー
だったの。、アロエのCMがこれだったって初めて知ったの…

聞いてくれてあーりがと しぃちゃん♪
_____  __
       \/
 ∧∧    ∧,,∧ ブラックジンヂャ ハ ノンダコト ナイノ
 (*゚ー゚) ミ゚Д゚,,彡
 ノつ旦) ミ(旦⊂ミ
て  ) )   ミ( (  ミ〜
| ̄∪ J ̄ ̄ιし' ̄| Ψ ソウ オレハ、ショクヨウ
|..             |□


XMLの情報サンクスコ、
今日は書泉グランデでいろいろ立ち読みしてきて
疲れたーYO

>>52
調査してみます。

七味唐辛子といい、BCB系はなんで閉鎖するのでしょう?
大変、便利で感謝しちえるユーザーがいるのに〜〜〜

ちなみに七味は、一時期ファイル日付が完全に狂っていたので
アップ時にファイル更新で作者さんがHomepageデータを誤って全削除した
可能性が高いかと思っているのニャガ....

CマガはWizmanさんの記事以外はDelに冷たいので
買ってやらないのーニャ
54デフォルトの名無しさん:01/10/23 02:20
え!
Wizman てCマガの筆者だったの!?
C マガ筆者への差別反対!
56Delフサギコ:01/10/23 02:57
 ∩|
 ミ ゙''゙゙゙つ
 ミ∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ミ;゚Д゚彡 < >>55、いや、別に差別しているつもりは・・・
 U U    \________

OpenToolsAPIの情報はすごく有用なのですが...
もう一押し、前のように中村先生タンの記事があれば買ったかも。

でも、考えてみるとCマガってVBには異常に冷酷っすね
VBの情報は他誌で出ているからCマガで扱う必要性がないと
踏まえて編集されているのでせうか。
57Delフサギコ:01/10/23 03:07
http://www.google.com/search?q=cache:mGqkFgu_mUk:www.biwa.ne.jp/~shinya-/+ARAHIQS&hl=ja
移動中なだけかも。

    ∧ ∧         / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ̄ ̄ミ,,゚Д゚ミ ̄|   <  おやすみなさいまー
|\⌒⌒⌒⌒⌒⌒\   \
|  \           \    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
\  |⌒⌒⌒⌒⌒⌒|
  \ |_______|
>>56
ほら、一応 C (言語) マガジンだった過去を背負っているのよ。
    ∧ ∧   /
    ( ゚Д゚)< もちっとペースダウソで夜露氏久
     |つ つ  \
   〜   |
    ∪ ∪

スレ傾向としてヒートアップに向かうのはよろしくないと思う
願わくば肉・野菜・野菜・野菜・肉・野菜・野菜
>肉・野菜・野菜・野菜・肉・野菜・野菜
ワラタ
61Delあめ猫にゃ:01/10/23 07:43
   ∧  ∧ にゃ  。
  /∂⌒∂    。゚。。°
  (( ┃ ┃ ))  ☆ °゜
  彡 ー ミ /   ご挨拶忘れてたにゃ
 O( つ  つ      よろしくにゃ
   (ノ (つ

   ∧  ∧ 。o 0 〇
  /∂⌒∂
  (( - - ))   Λ Λ
  彡 ー ミ   ミ゚Д゚,彡 
 |~~~~~~~~~~~~~~~~~~~~~~~| 
62ヒキ:01/10/23 10:52
フサギコ ッテ フサギコンデル ギコ カト イッシュン オモッタ
63Delフサギコ:01/10/23 11:12
  ∧,,∧    / 前々から山ほどお世話になっている気もしますが
 ミ,,゚Д゚彡 <
Π ̄ ̄ ̄|  \あらためまして、コニャニャチワ
|つご挨拶()  
| |___.|
  ∪∪

あめ猫さんAA、マンセー
64Delフサギコ:01/10/23 11:23
          || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
          ||  フサは    。    Λ,,∧ いいですか?!
          ||フサフサのフサ \ ミ゚Д゚,,ミ
          ||________⊂ ⊂ ,,ミ
  ∧,,∧    ∧,,,∧    ∧,,∧    ...| ̄ ̄ ̄ ̄|
  ミ  ∧,,∧ ミ   ∧,,∧ ミ  ∧,,∧. |教授  .│
〜(_ミ  ∧,,∧ __ミ  ∧,,∧__ミ   ∧,,∧ ̄ ̄ ̄
  〜(_ミ  ∧,,∧_ミ  ∧,,∧_ミ ∧,,∧  はい、教授。
    〜( ,,ミ   ,,ミ〜(,,,,ミ  ,,ミ〜(_ミ   ,,ミ
      〜(___ノ  〜(___ノ   〜(___ノ
65Delフサギコ:01/10/23 11:24
           ∧,,∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ミ゚Д゚,,彡 < なんてこったい!
          ⊂ ⊂ミ__   \____________
     / ̄ ̄ ̄ ̄ ̄ /|
    ∧_∧     //|
  / (  ,, )__//┌─────────
 || ̄/    )  ||/ < どうしたの?
 || (_○___)  ||   └─────────

                / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ∧,,∧  <  AAを1から収集しなおしなんだぞ!
         ミ゚Д゚,,彡_ \____________
     / ̄ ̄∪ ∪ /|
   /∧_∧    //|
  / ( ;´∀`)_//┌─────────
 || ̄(     つ ||/ <  ほっぺに"ミ"付けただけでしょ
 || (_○___)  ||   └─────────
66Delフサギコ:01/10/23 11:25
          || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
          ||  ほっぺに   。    Λ,,∧ テストにでますよ!
          ||  「ミ」を付ける \ ミ゚Д゚,,ミ
          ||________⊂ ⊂ ,,ミ
  ∧,,∧    ∧,,,∧    ∧,,∧    ...| ̄ ̄ ̄ ̄|
  ミ  ∧,,∧ ミ   ∧,,∧ ミ  ∧,,∧. |教授  .│
〜(_ミ  ∧,,∧ __ミ  ∧,,∧__ミ   ∧,,∧ ̄ ̄ ̄
  〜(_ミ  ∧,,∧_ミ  ∧,,∧_ミ ∧,,∧  はい、教授。
    〜( ,,ミ   ,,ミ〜(,,,,ミ  ,,ミ〜(_ミ   ,,ミ
      〜(___ノ  〜(___ノ   〜(___ノ
67Delフサギコ:01/10/23 11:33
   ,∧,,∧∩  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚ 彡< 唐突ですが、シツモソです。
__ミ ミ  ミ   \___________________
\,,∪  ̄ ̄ ̄\
||ヽ|| ̄ ̄ ̄ ̄||"
 ...|| ̄ ̄ ̄ ̄||

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
あげ
70Delフサギコ:01/10/23 13:46
>>68情報ThanxCo。だけど
         _________
  ∧,,∧   / さっぱりわからニャイ
 ミTДT彡<  何をインストールすればいいかすら…
  ミつ つ  \
〜ミ  ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  U U  イキナリ ど挫折...


ナ・ナナジウGet〜
71名無しさん♯:01/10/23 13:54
こんちは。ヽ(´ー`)ノ

>>38
MSXMLを使えば「そこそこ」簡単にできると思われ。
書き込みはSAX、読み込みはDOMという感じで。

でも、C#でサンプル作ろうと思ったらあっさり挫折。(藁
(VB.NETの方がはるかに楽そう。)
DelphiのCOM interopの場合はどうなんだろう...?
72Delフサギコ:01/10/23 14:39
>>名無しさん#さん
      ♪
  ♪           お世話になって
♪  ∩ ∧,,∧   ♪
   ヾミ ゚Д゚彡 フッフフサ フフサ フフサ
    ヾ ⊂ ヾ  フッフフサ フフサ フフサ
     O-、 )〜
       U

          ♪  おりまするー
       ♪
 ♪    ∧,,∧     ♪
     ミ ゚Д゚彡⊃ フッフフサ フフサ フフサ
   ヽ⊂   ミ    フフサ フフサ フッサ〜ル
    ⊂,,,   ミ
       し″

フサはいまいちわかってません。
どなたか、救いの手を...(他力本願マンセー)
73802:01/10/23 14:49
>>Delふさぎ湖

おまえ実はDellギコそのものじゃないの?
>>73
そのことにふれちゃいけません。
75第三者ですが:01/10/23 15:17
>>73 まず違う。てかDellギコってだれ?
76802:01/10/23 16:16
>>75
(゚Д゚)ハァ?
77名無しさん♯:01/10/23 17:48
>>72
ソース置き場使わせてもらいました。
ということで、MSXMLのサンプル。(VB.NETだけど...。)

 http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049&res=2
Delphiスレがいっぱいあるんですが、それぞれ対象は何(誰)なのか教えてください。
■キャラ物■
 モナーの *やさしい* Delphi質問スレ
 http://piza2.2ch.net/test/read.cgi/tech/1003113413/
 簡単な質問にモナーが答える筈なんですが・・・
 質問が結構難しいようで・・・

 ミ,,゚Д゚彡DelフサギコのフサフサDelphi談話室
 http://piza2.2ch.net/test/read.cgi/tech/1003664165/
 フサギコとお話しましょうというスレです

■質問類■
 Borland Delphi初心者用お勉強スレ
 http://piza2.2ch.net/test/read.cgi/tech/1001035627/
 D6を落として初めて使う人の質問を主に扱います

 Delphi相談室その2
 http://piza2.2ch.net/test/read.cgi/tech/995950803/
 TIPSや技術的な相談室です。中級上級向

■夢と希望■
 ★クライアントサイド最強の Delphi に物申す★
 http://piza2.2ch.net/test/read.cgi/tech/1001442200/
 Delphiにこんな機能があったらいいのに、とかの話題です

■廃■
 Delphi/Kylix Tech 2nd
 http://piza2.2ch.net/test/read.cgi/tech/993005709/
 DelphiMLというメーリングリストのウオッチになってしまいました
>>79
分かりました。質問は「質問類」のスレですればいいんですね。
ありがとうございました。
>>80
見ている人は全部見ているからあまり気にせんでよいよ。
規則が無いのが 2ch
MSXのMLってやっぱMSXMLなの?(w
83Delフサギコ:01/10/24 00:45
   ∧,,∧      / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡  < >>79 分類わけ、どもーありがと
  ミ つ且~~   \___________
〜ミ,,,,,, ,,ミ
、近頃ネタ不足なので、息抜きにでもAAドゾ
84Delフサギコ:01/10/24 00:46
               ∧ ∧
            ソ ̄(,,゚Д゚)
    /| ̄ ̄ ̄ ̄ ̄ ̄ ヽ) ヽ) ̄ ̄ ̄|
   | | | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| |
   | | | GIKO MANZAI      .| |
   | | |   ∧ ∧    ∧,,∧   / ̄ ̄ ̄
   | | |   (,,゚Д゚)  ミ゚Д゚,,ミ < 逝ってヨシ
   | | |   | つつ ¶ (ミ  ミ)  \___
   | | |  〜   |  ||  ミ  ミ〜  | |
   | | |_  ∪∪  ||  ∪∪____| |
   | |   | ̄ ̄ ̄ ̄ ̄ ̄ ̄| ・・ロ |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
85Delフサギコ:01/10/24 00:47
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| こんばんちはー、ギコーズです。

   ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      ∧ ∧    ∧,,∧
     (,゚Д゚,) 目 ミ゚Д゚#ミ
      |つ つ ..|| (ミ  ミ)
    〜   |  .||  ミ  ミ〜
      ∪ ∪ . ||  ∪ ∪
  _______/|_______

| どっちが[ギ]でどっちが[コーズ]だ ゴルァ
\_______________
      /|
/ ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| そんな分け方してません。
\_______________
86Delフサギコ:01/10/24 00:47
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| S A G E !!
\________ _______
                  |/
    Σ∧ ∧    ∧,,∧
     (#゚Д゚) 目 ミ゚Д゚,,ミ
      |つ つ ..|| (ミ  ミ)
    〜   |  .||  ミ  ミ〜
      ∪ ∪ . ||  ∪ ∪
      /|
/ ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 思いっきりAGEとるがな!!
\_______________
87Delフサギコ:01/10/24 00:48
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| A G E !!
\________ _______
                  |/
              ∧,,∧
            ⊂ミ,,゚Д゚彡つ
    Σ∧ ∧    ∩∧_∧∩
     (;゚Д゚) 目 ヽ( ´∀`)ノ タカイタカーイ
      |つ つ ..||   (    )
    〜   |  .||   | | |
      ∪ ∪ . ||   (__)_)
      /|   
/ ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| アンタ誰!?、、Delモナさん?
\_______________
88Delフサギコ:01/10/24 00:48
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 別人だ
\________ _______
                  |/
      ∧ ∧    ∧,,∧
     (゚Д゚,,) 目 ミ゚Д゚,,ミ
      |つ つ ..|| (ミ  ミ)
    〜   |  .||  ミ  ミ〜
      ∪ ∪ . ||  ∪ ∪
      /|
/ ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 本人はこう申しております。
\_______________
89Delフサギコ:01/10/24 00:49
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 「もどってきて!」って言ってくれた方々ありがとう
\________ _______
                  |/
      ∧ ∧    ∧,,∧ テレルゼ
     (;゚Д゚) 目 ミ゚Д゚*ミ
      |つ つ ..|| (ミ  ミ)
    〜   |  .||  ミ  ミ〜
      ∪ ∪ . ||  ∪ ∪
      /|
/ ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 別人って言ったばかりでしょ・・・・
\_______________
90Delフサギコ:01/10/24 00:50
 TVつまんねー。もう寝よう…

   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄
                ∧ ∧ Zzz...
           〃' ̄(,,-Д-)     モット Delphi ネタ デナキャ
    /| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄.| "めも電卓"クライ ザンシンナ ネタ ガ・・・
   | | | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| |
   | | |                | |
   | | |                | |
   | | |    放  送  終  了    | |
   | | |                | |
   | | |        JOGX-TV    | |
   | | |___________| |
   | |   |             | ・・ロ |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
そんなに暇ならフリーで2wayなUMLモデリングツールでも作ってくれ
    (○)
    ヽ|〃
  _|三三|_  / ̄ ̄ ̄ ̄ ̄
  ヽミ ´∀`ミノ < ガミワヅナツ、ミヤミヒユアネメーハ!
   彡ノノミ    \_____
   丿 >
>>83-90
ワラタ。このスレはマターリ逝きたいですね。
94Delしたらば:01/10/24 01:38

    ∧,,,,∧/)  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    彡,,・ー・ミ/  < したらば〜
    (  @ ⌒ヽ  \____________
    丶_) ( ⌒"
      ヽ__)

    ∧,,,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   彡,・ー・,ミ < よろしくにょら
   ⊂ @ つ   \_____________
   ヽ |   |
     ∪ ∪
95Delしたらば:01/10/24 01:39

 でる        ふぁい    まん       せー♪

            ∧,,∧     ∧,,∧       ∧,,∧
  ∧,,∧      ∩・ー・ミ)   ミ・ー・彡     ミ・ー・ミ
 ミ・ー・ミ      ) @丿   ⊂@⊂ヽ     |つ@つ
  ( つ@つ    〜|   /      ヽ⊂,,)〜   ⊂,,  丿
  て ) )      (/''(/        ヽJ       ∪ 
96Delフサギコ:01/10/24 01:43
   ∧,,∧   / ̄
@,,,ミ,,゚Д゚彡 < したらば、かわイイd(・∀・)
⊂,,,,,,,,,つつ.  \_

  カワイースギ!
>>94
@はカラータイマーですか?
98802:01/10/24 11:50
ネタがないなら上げるなあほ。AA はネタと一緒に書けよ。ぼけ。
また煽られるぞ。
99Delフサギコ:01/10/24 14:15
  チコウヨレ  
   ∧,,∧∧∧       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ミ,,゚Д゚ミ・ー・彡    < しーちゃん、ゴメンネ
_と~,,,  ミ,@⊂|  ∀  V  \______________________
    .ミ,,,/~),(( ノ〜┷┳┷
 ̄ ̄ ̄ .し'J ∪ ̄|.. ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄   .┻
  _∧_________
/しーには内緒だぞ。。。




かわいくて作ってしまいました...スマソ>>94-95
したらばが、♂か♀かも知らないのに…

いや、むしろ、かわいければ♂だって♂でも♂しか、むしろ♂の方が、、、

ところで、上沼恵美子似の歌手は
なぜ、つんく♂(ツンクチンコと読むのか?)という名前なの?
100Delフサギコ:01/10/24 15:12
  今だ! 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 節に無いときには勝手に挿入してくれる。
104Delモナ:01/10/24 18:05
 / ̄ ̄ ̄ ̄ ̄ ̄ ̄
 | なんかネタにされているモナー >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.
>>105
ブラクラ
107Delフサギコ:01/10/24 18:55
>>103 かっこいい!どこからそんな情報が・・・

  ∧,,∧    /
 ミ,,゚Д゚彡 <  ところで、便利なArrowコンポーネントはないですか?
Π ̄ ̄ ̄|  \ 上下左右しか矢印が書けないショボいのとか
|つキボンヌ()    斜めが書けても、TviArrowExくらいしか見つからない。
| |___.|     もっとビクーリするくらい矢印が書きやすいものがありそうかと
  ∪∪      思うの・・・・ないのかな。
108下手人:01/10/24 20:00
>>108
あっちにも書いたけど,RegEdit に渡せる形式でなかったことと
Enterprise 版にあるユニットが入っているため下位の版ではうまく動かん。

修正した Enterprise 版のファイルをあっちにアップしておきます。
110下手人:01/10/24 21:53
111デフォルトの名無しさん:01/10/24 22:09
>>107
どんな矢印を書きたい?
希望する機能を全て書いてみてよ。
つくってあげる…かも。
112Delフサギコ:01/10/24 23:35
   |
電 |
   |∧,,∧
柱 ミ,,゚Д゚彡 <ちょっと無茶っぽいこと言っていいかしら>>111さん
  ⊂ ミ
   |, ,,ミ
   |∪
, ' , ; ' ;

最理想はD6ダイアグラムページの矢印なのだけど
捕まえグリッド(マウスでつかめる黒い点)の
実装がかなり手間ですのでそれはあきらめて

TShapeのようなクラスを3つ用意して

TArrowOrigin(始点)
TArrowLine(線)
TArrowEndPoint(終点)

これらがそれぞれをpropertyで関連づいて
任意の"角度"で三角形やらひし形やら丸やら四角を
枠と中身を任意の色やStyleで描画できるようにしておくと

RADのみで
かなり自由度の高い矢印がかけるのではないでしょうかと
思ったりしています.

TArrowContactPoint(接点)を用意して

始点-線-接点-線-接点-線-終点

と組み合わせたら折れ線も書けそう。

良く知りませんがベジェ曲線みたいな拡張も可能かも...

組み合わせ時にコンポーネント同士の位置関係に気配りが必要。
連動して動くといい感じですね。
113Delフサギコ:01/10/25 00:18
         _________
  ∧,,∧   / それより、TImageを継承して
 ミ,,゚Д゚彡<  設計時クリックした2点間に指定した形の始点終点で
  ミつ つ  \ 矢印描画したほうがいいか。
〜ミ  ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  U U
      我ながらよい設計は思いつきませんが...
米国テロの影響で配送が滞っていたThe Delphi Magazine Vol.73がやっと届いたので
読んでいたら、こんなのが紹介されてた。
Bold for Delphi
http://www.boldsoft.com/products/bfd/index.html

ビジネスソフト開発用だけど、DelphiアプリをUMLでデザインできるみたい
試してないけど。
>>114
... 白い粉,まざってない?
117デフォルトの名無しさん:01/10/25 04:49
>>116
フケとか?
118デフォルトの名無しさん:01/10/25 09:46
>TShapeのようなクラスを3つ用意して

>TArrowOrigin(始点)
>TArrowLine(線)
>TArrowEndPoint(終点)

>これらがそれぞれをpropertyで関連づいて
>任意の"角度"で三角形やらひし形やら丸やら四角を
>枠と中身を任意の色やStyleで描画できるようにしておくと

? コントロール矩形に内接するひし形、三角形、楕円、長方形、正方形、円を 任意の境界色、スタイル、塗りつぶし色、塗りつぶしスタイルで描画できるって事かな。

矢印は、矩形の辺に平行、対角線のどちらかを選ぶって事か。
でも気を付けないと矢印の”棒”は描けても、スペースが足りなくて”矢じり”が描画できないことってあるよね…
119Delあめ猫にゃ:01/10/25 09:57
>>118
GrapihcControlは 親のDCハンドルを貰って描くから ハミダシテも描けるよ
はみ出していいかどうかは別にして
120Delあめ猫にゃ:01/10/25 10:44
しまった。 TGraphicControl でも  IntersectClipRect されて渡されるから外には描けないや
121デフォルトの名無しさん:01/10/25 10:44
>107
もと
http://community.borland.com/article/0,1410,27913,00.html

ボブさんちはBorland系の最新情報をまとめてチェックできるから良いぞ。
http://www.drbob42.com/
kylix2の話もでてるな。
122Delあめ猫にゃ:01/10/25 11:47
という事で、
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
あら?Delphi6 じゃないね?
>>123
TShiftStateは集合型。
ssShiftはTShiftStateの要素の列挙型。
集合型として書くには、 [ssShift] として ssShift要素だけが
ある集合にする必要がある。

言語ガイドで集合型あたりを読むこと。
列挙型じゃね?
[ssShift]
>>127
ssShift の方が列挙型
[ssShift] として集合型にする必要がある。
129123:01/10/25 12:53
すいません。
Kylixです。
130123:01/10/25 13:08
img1MouseDown(Sender,mbLeft,[ssShift],0,0);

これで解決しました。
ありがとう御座います。
131Delフサギコ:01/10/25 13:10
  ,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,ミ,,゚Д゚彡 < サンクスコ。
  UU""" U U    \_______________

>>115
矢印のサンプルはないのですね。ぜひ見てみたい。
いいのがそろってますねー。

実行時マウスでコントロール移動可能コンポと
矢印を組み合わせたら,,,簡易UMLツールじゃないかな!

>>118
>? コントロール矩形に内接するひし形、三角形、楕円、長方形、正方形、円を 任意の境界色、スタイル、塗りつぶし色、塗りつぶしスタイルで描画できるって事かな。
別に内接はしなくてもいいのですが、そういう事です。
任意角で描画可能なのが大切
矢印の線と始点終点の形が一致しなきゃいけませんよね。

でもコンポを組合すのはどうもだめっすね
┌─────┬─┐
│        │ │
├─┐     └─┤
│  │        │
└─┴─────┘

こういう領域を自分で設定して
左下から右上に線を描画
左下で始点を描画、右上に終点を描画

こうしたら解決しそう。

矢印の矢じり角度を90度以上にも設定できるように
なるのがいいですね。

>>122
そうか。矢じりだけの矢印も使いたいから(使いたいの?)
それ自体一つのコントロルにしてしまって
内部に持つのはいい感じニャー!!

>>121
レジストリ情報(>>103)なりね。サンクスコ
132Delあめ猫にゃ:01/10/25 13:26
内接しなくていいんだとすれば
  設計時に、マウスで設定出来るようにすればいいかも


TGraphicControlでも
 WndProcを継承して
if (csDesigning in ComponentState) then Dispatch(Message) else inherited;
 みたいにやれば設計時にメッセージを貰う事が可能みたい。
133Delあめ猫にゃ:01/10/25 13:33
作るなら、矢印ひとつじゃなくて
 線とか箱とか文字箱とかを表示出来て編集出来るコンポがいいな

データは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でチャレンジしたけどしんどかったの。)

の。
135Delフサギコ:01/10/25 14:22
>>134
  ∧,,∧ ──────
 ミ゚Д゚,,彡 < >>4のリンック先みてチョー
 ⊂⊂ ミ──────
    ヾ ,,ミ〜 ────
     し じ ─────
136111=118:01/10/25 14:25

ためしにちょっとつくってみた。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049
の4に KShape.pas が置いてあるから、インストールしてみて。
Saw.enabled プロパティを有効にするとなんだかバぐるので
注意してね。
再描画に問題あり。どうやって解決するんだ?
137デフォルトの名無しさん:01/10/25 14:38
>>136
再描画されないし。
こんな程度の腕でつくってあげるなんてぬかすな
138Delフサギコ:01/10/25 14:49
   ∧,,∧      / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡  <  >>137厳しいでござるな
  ミ つ且~~   \___________
〜ミ,,,,,, ,,ミ

>>132
ナイスな情報ありがとございます。

>>133
それは暗に、UMLツールを作れという指令ですか?。。。。。。。。。。。。。゚Д゚;;;

>>136サンクスです。試してみます。
矢印コンポといえば、
昔の日経ソフトの連載で出ていたり
D4プログラミングバイブルに載っていたりしますので
その辺りを調査するのもいいかもね。

あと、DSPやTorryで探せば二つくらいみつかりますよ。
>>137
まあ落ち着きなさいって。世の中にはコンポすらつくれないDELプログラマが何人いることか…
140横レススマソ:01/10/25 15:58
>何人いることか…
たった何人なのか(w
微妙なフォローにワラタ
141Delあめ猫にゃ:01/10/25 16:26
 ソースUpするの 恐いにゃ〜

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999294620&res=25

マウス左で矢印の先と尻尾をドラッグ移動出来るかの実験コンポだから
 範囲外にドラッグしようとしたらとか考えてない

それとマウスで動かした時にプロパティエディタを更新する方法が判らん
142デフォルトの名無しさん:01/10/25 17:15
Delphi 6 ドキュメントアップデート・ダウンロードサービス
http://www.borland.co.jp/delphi/del6docup.html

IBX のヘルプ、pascal 化されとる。
143デフォルトの名無しさん:01/10/25 17:21
>142

http://piza2.2ch.net/test/read.cgi/tech/1001442200/l50

某の人がここ読んだんじゃない?
144デフォルトの名無しさん:01/10/25 17:24
>141
published
property Source: TWinControl;
property Destination: TWinControl;
property Space: Integer; default 4;
が欲しいかも
>>143
>某の人がここ読んだんじゃない?

読んでるのは事実でしょ。こないだもあっという間に誤字が直ったし。
けど、これは関係ないでしょ
146Delフサギコ: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)、インストールできなくない?
日本語版のパッチは判別してくれないのかな…。
148下手人:01/10/25 19:03
3時間程CGIのメンテしますので、少々お待ちくださいませ
>>147
そうじゃなくて.

D6 付属のものは Ver8
"A patch is now available for Indy 9.0.2" は
9.0.2-B に対するパッチ。ということ。まず最初に 9.0.2 を落とさないと。
150Delフサギコ:01/10/25 19:30
      ∩,,,,,,,,,,,∩ ,,,_ >>146
   〜⊂`'''''''''ミ。Д。ミ⊃  アボオーン
      `'''''''''''∨ ∨

 OE⇒OIだった。オブジェクトインスペクタでOEって間違うなんて…
これは何に使うの?>矢印
152147:01/10/25 20:59
>>149
ごめん言葉がたらなすぎた。
Indy9.0.2をインストールしようとすると、Delphi6のアップデートをしてないとインストールできませんよ
というメッセージが出る。
すでにアップデートパッチを当てているのに。
なので日本語版のアップデートは認識してくれてないのかな、と。
153147:01/10/25 21:03
と、数日前にはインストール失敗していたんだけど今やったら出来た。
すいません。 152とかは無視して。
154147:01/10/25 21:07
たびたびすまん。やっぱり失敗。
Indy9.0.2-Bをインストールしようとすると、
"This installation requires Borland Delphi Service Pack 1 ..."
とのメッセージが。
とりあえず9.0.1を使っていますが。
155sage:01/10/25 21:11
>151
>これは何に使うの?>矢印
フサギコがDel用2wayUMLツールを作ってくれるそうです
おぉ〜、フサギコマンセー
完成した暁には、プラスチックの下敷きで、ナデナデしてあげよう
>>156
warata
158Delフサギコ:01/10/25 21:45
  _____
  ±±±±±
   ̄ ̄ ̄ ̄ ̄
    ∧M∧  ・・・・。
    ミ ゚Д゚彡
  〜ミ,,,,uuミ

作"れ"ません。

(作"り"ませんに非ず)

矢印は矢じるしたい時に矢じってください。
159136:01/10/25 22:00
シクシク
俺のは誰も評価してくれないのか…
評価してくれたのは1人
それも煽り…
>>154
インストーラーの問題かな?
ソースコードキットを使って,ビルドしたら?
161下手人:01/10/25 22:53
>>159
  --------∧ ∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜□□ □□ ( ゚Д゚)< そんな時もあるさ。精進せぇよ
 U U U U U U-U   \__________
162Delあめ猫にゃ:01/10/26 08:15
>>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で無効を宣言するだけにした方がいいと思う
163Delあめ猫にゃ:01/10/26 08:49
       │\
 ┌───┘  \
 │          \
 │          /
 └───┐  /
       │/  この表示したい時の 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進行見っけ
>>164-165
 サンプルコードきぼーん
168Delフサギコ:01/10/26 11:09
      ∧,,∧l||l  昨日道に倒れてた交通事故にあった猫を介抱してた(リアルワールドで)
       ;゙⌒ヽ彡  頭を打って脳がやられちゃったみたい。
     〜ミ___ミ    鬱だ。まじ鬱だ。今は動物病院....
    ''" ""''"" "''  後遺症がひどく残るようなら保健所逝きになるかも........まだ子猫なのに。


>>159さん、作ってくださってありがとね。
最初に評価したけど
いきなりIDEごとハングする処理はせめて混ぜないで欲しかった。

あと、矢じるし系とShape系を混ぜるのは
クラスの分類として混乱しそう。

それとああいうUIだと矢じるしの端が消えた時に
それを見せるための操作が非常に面倒だという事が
改めてわかりました。

>>162あめ猫さん
> 複数のキャラクタが重なった時に
> 操作させるには、結局操作点を別のcontrolにしてZオーダ上げたり
> させなくちゃいけない。
使っていくうちにその不便さが身にしみました。
見せてもらって初めて問題点が浮き彫りに

まるで仕様をろくに決めていない顧客みたいだ>俺

> どうせやるなら >>133 みたいに複数のキャラクタを一つのコンポ
> 内で操作出来るコンポを作りたいにゃ

ドウイニャー

ああいう操作の形がありだと知っただけでも
非常に勉強になりました。感謝感謝。

>>164-165
非短形コンポって見たことないでした。作れないって。
169164:01/10/26 11:16
>>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 は任意方向むくよ
171164:01/10/26 12:03
>>170

リージョンを回転させるAPIはあるけど、Win9X ではダメ。
保持しているリージョンを回転させるのではなく、リージョン
を定義している点の座標を回転による変換で作り直すわけ。
163のコードでもこれは同じでしょ。
でも、任意回転のこと考えたら確かにリージョンを使うメリットは
減るね。うーむ、164 でのOR合成によるリージョンでの描画は撤回。
163 で計算された座標をもとにポリゴンリージョンを保持することを
提案。リージョンを保持することの利点は、

1) 一度作ってしまうと、再描画のたびに計算する必要がない
2) 特定の点がリージョン内にあるかどうかをすぐに判断できる

くらいかなぁ...。
172Delフサギコ:01/10/26 13:37
   ∧,,∧     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡  < 矢じるしコンポ。どうりで標準で用意されていない
  ミ つ且~~   \&有名なのがない、わけですね。
〜ミ,,,,,, ,,ミ

>>171
>1) 一度作ってしまうと、再描画のたびに計算する必要がない
再描画ごとに計算するのは
やり方さえ工夫すればリージョン使わず描画する時も必要ないのでは?

任意角度のプリミティブ図形(△やら□などのことだったよね)
の描画計算にそれほど時間がかかると思えないです。

>2) 特定の点がリージョン内にあるかどうかをすぐに判断できる
ゲームじゃないし....必要になるかな。マウスドラッグはしやすくなりそうだけど

あめ猫さんのものを拡張して
TArrowsPaintみたいなのを用意して
複数のArrowを動的配置できるようにできたらいいですのにね。
そうすればコンポーネントの重なりも無視できるし

インスペクタ連動するためには
TCollectionとTCollectionItemが必要になるか....ますますフサには不可能だ。
173164:01/10/26 13:59
>>172

171 の 1) については、確かにポリゴンの座標を配列で持っていれば
リージョンを使わなくても簡単に再描画できるね。

でも 2) については結構重要だと思うよ。とくに斜めに矢印が描画さ
れている時は、それを囲む矩形領域がコンポの領域になるわけだろう。
ユーザが図形をマウスでドラグしたくなったとき、ほんとに選択したい
図形が判断できるのは重要なのでは。とくに、他の図形コンポと重なり
あっているときには。

あとリージョンでは
3)それを囲む外接矩形領域が簡単に取得できる
ことも重要だと思わないか。コンポーネントの領域に反映させるために。
>>173
それを囲む外接矩形領域が簡単に取得できる
ってのは、頂点のリストがあるのなら
単に最大・最小を走査するだけで出てくるんでは?
175164:01/10/26 14:33
>>174

あのね、リージョンじゃなきゃできない、と主張してるんじゃないんだよ。
172 や 174 のコメントの内容は、「リージョンをつかわなくてもこう
すればできる」という内容だよね。リージョンを使えばもっと簡単だよ、
ということを主張してるのよ。おれもリージョンに固執するわけでもな
いが、ちょっとでも便利ならリージョンを使う、という選択もありだろ。

一般論として、ベジェ曲線や弧などを輪郭の一部としてもつ図形では、
スキャンして外接矩形は求められんだろ。今回の矢印の場合でもAPI
一つで取得できる方がスキャンして求めるより簡単だろ。

なぜリージョンを使う、ということを避けたがる?
176174:01/10/26 14:42
>>175
別に避けたがってるんじゃないよ。
ポリゴン形状前提の場合、外接矩形を得るのに
リージョンのメリットの補強にはならないって思っただけ。

ポリゴンに限定しないのなら、システムにやってもらったほうが
いいのは間違いないけどね。
177Delフサギコ:01/10/26 14:46
全く経験がないからわからないのですが
設計時にリージョンを使うと矢印図形の描画領域外の余白部分の
向こう側にある矢印を選択できるのでしょうか。
(変な形のボタンコンポーネントなどはどうなっているのかな。
 そんなの使ったことないからしらにゃい)
だとしたら便利ですね。

でも出来ないのなら"矢印"というものは
単なる2点間指示なわけなので
外接領域が必要になることはすくなさそう。と思うてます。

一つのTGraphicCtrlに複数の矢印を描画することと
一つのTArrowsMyPanel上に矢印リージョンな子Windowを
動的生成するのと同じことなのかな。

>なぜリージョンを使う、ということを避けたがる?
そういうわけではないのですが

必要無いときには使わないですし。
"描画"が必要なのと"Window"が必要なのとは違うし。

いろいろな可能性を模索がいいですね。

 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
   ∧,,∧    クチ バッカ デ ゴメン ヨ
  ミ,, ゚Д゚彡
   〃  つ旦~~
 〜ミ,,,n,,n[ ̄ ̄ ̄.]
        ̄ ̄ ̄
178164:01/10/26 14:58
>>176
> 別に避けたがってるんじゃないよ。
> ポリゴン形状前提の場合、外接矩形を得るのに
> リージョンのメリットの補強にはならないって思っただけ。

わかった。そのとおり、ポリゴンの場合は補強にはなってないね。
すまぬ。

>>all

市販のドローソフトが描く矢印を見てると、矢印の方向だけでなく
「やじり」部分の大きさや形を選ぶことができるよね。単純な三角
だけでなく、曲線の入ったヤツとか。ああいうふうにするには、
しつこいようだが、リージョンを使えば簡単なんだがね。ネックは
170 が指摘しているように、Win9X 系では、リージョンを回転させる
APIが使えないことなんだよ。だれか、一般的な方法でAPIを
使わずに任意角度にリージョンを回転させる方法を教えてくれないだ
ろうか? ポインタだけでもOK。よろしくお願いします。
179Delフサギコ:01/10/26 15:15
   ∧,,∧   / ̄
\,,,,ミ,,゚Д゚彡 < なるほど、リージョン自体と
⊂,,,,,,,,,つつ.   \ SetWindowRgnとは違うのですね。

フサは良く知らなかったので、同じ機能かと思ってた...スマソ

読んでいたはずの、D4プログラバイブルの矢印コンポーネントでは
矢印の三角形部分クリックの判定にリージョン使ってた。

そんで、気になる所ですが
設計時コンポーネントにSetWindowRgnを適応することはできるのだろうか…

>>178
ようやく話が見えてきました。確かにリージョ使うと簡単ですね。

>任意角度にリージョンを回転させる方法
思いっきり単純計算でリージョン作り直すとか?
これなら労力さえあれば何とかできるでしょうが…
180164:01/10/26 15:16
>>177
>必要無いときには使わないですし。
>"描画"が必要なのと"Window"が必要なのとは違うし。

リージョンは、ペンやブラシ、フォント、と同じGDI オブジェクト
だぞ。Window とは関係ない。ただ、リージョンを使ってウィンドウ
にクリッピング領域を設定できる、ということだよ。

> 一つのTGraphicCtrlに複数の矢印を描画することと
> 一つのTArrowsMyPanel上に矢印リージョンな子Windowを
> 動的生成するのと同じことなのかな。

これは見かけだけが似てるけど、コーディングするほうでも、
ウィンドウズのリソースの面からみても全く違うでしょ。
リソースのことを考えなければ、矢印ウィンドウというのが
コンポーネントとしては実装が一番簡単そう。
設計時はともかく、実行時には、<その形>のままでマウス
メッセージに応答できるよね。
181164:01/10/26 15:31
>>179
>>任意角度にリージョンを回転させる方法
>思いっきり単純計算でリージョン作り直すとか?
>これなら労力さえあれば何とかできるでしょうが…

リージョンを構成するプリミティブを作成するときの座標を
っかいてんさせれば、リージョンも回転できそうに思うのだが
そうではないんだよ。これが悩みの種なんだ。
たとえば、単純な楕円リージョンを作ったとして、それを中心
を原点にして20度傾けるにはどうしたらいい?外接矩形の座標を
傾けてもできないんだよ....。
>>181
ベジェ曲線なら制御点リストを回転/変形させるだけで
生成される曲線もそのとおりに回転/変形するから便利だよね。
楕円を使いたい時はベジェで描けって事か・・・
184Delフサギコ:01/10/26 15:56
         _________
  ∧,,∧   / を!出来た。設計時リージョン。
 ミ,,゚Д゚彡<  これで矢印がいくら重なっても大丈夫!か?
  ミつ つ  \
〜ミ  ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  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下手人:01/10/26 16:18
無理にリージョン側を回転させる必要ありますかね?
回転角度覚えてるんなら、リージョンの中心座標とカーソル座標使って
カーソルの座標側を回転させられない?
最初に生成したリージョンだけで判定できると思うが
186164:01/10/26 16:25
>>185
全く理解できない。カーソル座標って何だ?
カーソルの座標を回転するって何の事だ?
簡単なサンプルコードを頼む。
184みたいに使う時はリージョン回転が必要でしょう。
188Delあめ猫にゃ:01/10/26 17:15
自己レス

>141 それとマウスで動かした時にプロパティエディタを更新する方法が判らん
やっとみつけた
GetParentForm(Self).Designer.Modified;
189Delあめ猫にゃ:01/10/26 17:37
どうもCM_MOUSELEAVE が設計時に貰えないにゃ
これが無いとドラッグしたままエリア外に動かしてしまうと困った事に
190下手人:01/10/26 18:21
>>186

クリック位置からどのリージョン選択するか判定する時は、リージョン回転無しでできないスカ?って事ッス

例えば45度回転してるなら、図形の回転軸(X,Y)からクリック位置(x1,y1)の相対距離(X-x1,Y-y1)と逆正接で
角度と距離を得て、図形の回転量(45)を引くと。
で再度、正接と距離で座標に変換してリージョンとの衝突判定すれば
判定計算軽くならない?

FireWall-1でモメてるんでソースは勘弁(w
191Delあめ猫にゃ:01/10/26 18:26
>>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で持たせるという方式です。

これなら簡単でしょ?
192164:01/10/26 18:31
>>190
>クリック位置からどのリージョン選択するか判定する時は、リージョン回転無しでできないスカ?って事ッス

返信ありがとう。
クリック位置からの判定とリージョンの回転はなにか関係あるんですか?
同じ座標系なら PtInRegion() API ですぐに分かるんでは?
193下手人:01/10/26 18:44
   ||
 Λ||Λ
( / ⌒ヽ
 |下手人
 ∪ / ノ
  | || リージョンが回転済ならその通りです...>>192
  ∪∪
194Delフサ2ネコ:01/10/26 19:36

 ∧ ∧∩  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ミ@゚Д゚@ミ < 楕円など、回転して変になる奴はリージョンをかけない方向は?
 (| 2ネコ |   \真円とかポリゴンとか認めないでいたら?
〜| _ |
  し'  `J  リージョンの使い方を自分で限定してしまえばいいかもね。

ところで、あめネコ氏はどうしてそんなに百戦錬磨っぽいの。
>>191 そんなの普通思いつかないYO.発想がすごいや。

矢印を含むキャラクタ名を追加したら
内部で動的にオブジェクトを追加しておくってことでしょ。

で指定したいオブジェクトのIndex値orキャラクタ名をOIで指定すると
そのオブジェクトのプロパチがOIで指定できるって事かな。

出来たらすごい。
195164:01/10/26 20:18
>>194
>楕円など、回転して変になる奴はリージョンをかけない方向は?

うん、これならいいよね。
ポリゴンみたいに、複数の点だけで完全にリージョンを記述できれば
回転は簡単だよね。例の三角と長方形の矢印だったら7点の座標を
保持すると、回転は外接矩形の中心を原点にして任意にできるね。
ちょっとトライしてコンポーネントつくってみる。
みんな、ありがとね。
196Delあめ猫にゃ:01/10/26 21:19
>>194
 いや、あの・・・・オブジェクトインスペクタにいちいち登録したら
 逆にうっとうしいと思う。

 あめ猫の考えてるのは単に TStrings 用のエディタで編集するだけです
 LINE ,10,10,100,200 みたいにね
 これをマウスで移動とか出来るようにすれば便利かなと
 この土日には雛型作ってみるから、 便利そうだったら誰か
 拡張して、プロパティエディタとか作って欲しいなと・・・


ところで、今、線分と点の距離とか
ttp://www.infoeddy.ne.jp/~tensyo/prog/linealgo.htm
ここ見てるんだけど、ここに 楕円をベジェで描く方法とかもあるよ
>196
いいページ!Viva!あめ猫もViva
198Delフサギコ:01/10/26 21:48
    ∧ ∧  ・・・・。
    ミ ゚Д゚彡  拾ったネコ、あまり調子が良くニャイ。
  〜ミ,,,,uuミ   ご飯も飲み物もなんも食べないナー
          元気になってくれるのかな。
199164:01/10/26 22:31
>>198
その猫、元気になるといいね。
陰ながら祈ってるよ。
Delフサさん、あとの経過報告も頼むよ!
もう帰る....。
200164:01/10/26 22:38
>>196
おっと、帰る前に、
いいページ紹介してくれて、ありがとう。
役に立ちそうだ。ベジェから直接リージョンは
作れないんだけれど、パスを通せばつくれそう。
やってみるよ。
201デフォルトの名無しさん:01/10/27 00:59
質問。

フリーカーソルや、予約語機能をつけた
エディタコンポーネントがありますね。
あれは、すべて自前のコードで実現してるんですか。

つまり、キー入力に応じてカーソルを移動、
カーソルの点滅や文字入力、削除、上書き、選択時の挙動にいたるまで
すべて自分でコードを書かないといけないのですか。
202デフォルトの名無しさん:01/10/27 01:07
>>201
多機能なエディタの多くはそうです。
>>201
他人の褌を使っているうちはろくな事はできないと思われ。
204通りすがり:01/10/27 02:14
>>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が勝手にやってくれます.
フォントがプロポーショナルだったり
さらに色つき,大きさ違いなどの修飾がつくと
飛躍的に難しくなりますけど.
209Delフサギコ:01/10/27 19:21

  ,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,ミ,,゚Д゚彡 < 201さんじゃないのですが
  UU""" U U    \_______________

キャレットってどうやって表示するのでしょうか。

テキストビュワーなら自前で作ったことあるので
そこにキャレットが表示できると
簡単なエディタになると思うのです。

プロポショなどは抜きで簡単なやり方を紹介してほしー
210Delフサギコ:01/10/27 22:00
    ∧ ∧  ・・・・。
    ミ ゚Д゚彡
  〜ミ,,,,uuミ
 えっと、MLで話題になっているチャットプログラムって
 >>67-68で出てる要望を見たせますかニャ?
211201:01/10/27 22:08
>>208
> カーソル(キャレット)の処理は場所と大きささえ指定すれば
>点滅はWindowsが勝手にやってくれます.


初めて知りました。DCを指定すると、キャンバスに描画するんですか?それとも
超基本エディタオブジェクトみたいな奴があって、それを継承した
モノに対してキャレット表示を行うのですか?想像できません。
212Delあめ猫にゃ:01/10/27 22:09
まだイメージの段階だにゃ
 けど一応動くから見てほしいにゃ

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999294620&res=29
プロパティエディタは無いから
 Lines プロパティに LINE か ARROW1 を入れるにゃ

ややこしいコードは>>196のWebからパクりまくり
213Delあめ猫にゃ:01/10/27 22:12
LINE , 10,10,100,100 と入力 すると線が表示されるにゃ
そこにマウスを持ってゆくと 色が変わるから ドラッグするにゃ

線なら全体移動、○まら端だけ移動
キャレットは(好きな言い方じゃないんだけど)CreateCaret, ShowCaret, SetCaretPos
をヘルプで見てください。めちゃ簡単です。
追伸:キャレットはウィンドウに対して作ります。
215Delフサギコ:01/10/27 22:45
  ∧,,∧∩  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡 < IDesigner がニャーです>>212
  U  ミ   \____________
  ミ  ミ
 ノ∪∪
216201:01/10/27 22:56
>214
どうもありがとうございます!
ウィンドウにカーソルを表示することが出来ました。

質問ついでに。
日本語変換のときに、IME(なんの略なんだろう?)の
日本語入力&変換ウィンドウがでてきますね。
あれを任意の位置に表示するにはどうすればよいのでしょうか。
217Delフサギコ:01/10/27 23:03
  ∧,,∧  うごきましたニャ。
 ミ,,゚Д゚彡
 ミつ[|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はやいなー。ネコにもわかるように教えてくれにゃ。
簡単なサンプルなど、、キボンヌ...
218201:01/10/27 23:08
Form1 上に Button1 を配置し、OnClick イベントに以下のように書きます

CreateCaret(
 Handle, // 表示先 Window ハンドル。例えば Panel1 に表示するならば Panel1.Handle とする
 0, // キャレットに使う Bitmap ハンドル。ビットマップを使用しない場合は 0.
 2, //キャレットの横幅
 16 // キャレットの高さ
);

ShowCaret( Handle ); //キャレットを表示
SetCaretPos( 20, 30); // キャレットを移動(キャレットの左上座標(多分)を指定

…キャレットとカーソル、どちらがただしいのでしょう。
自分はカーソルのほうがしっくり来るんですけど。
imeの表示位置はちょっと面倒かも
http://www2.big.or.jp/~osamu/Delphi/Tips/key.cgi?key=10
にサンプルがあるけど(BCB用だけど)
220201:01/10/27 23:19
あのう…大変な事に気がついてしまったのですが、
キャレットの表示にウィンドウハンドルがいるということはですよ、
TWinControl を継承したコントロールに対してのみキャレット表示が可能という事ですよね。

TGraphicControl を継承して文字を描画しようと思ったのですが、
もしかして不可能ですか。

キャレットを表示しつつ、文字描画をも行うには
なんのコントロールを利用すればよいですか。
221デフォルトの名無しさん:01/10/27 23:29
>>220
キャレット表示は基本的にフォーカスを持っていることを
示しているのだから TWinControl 継承が必須です。

TCustomControl はどうでしょうか?
222201:01/10/27 23:42
>>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;
223Delフサギコ:01/10/28 01:09
>>222、サンクスですよくわかりました。
uses IMMが追加で必要っすね

   ∧,,∧   /
(,,,,,,,ミ,,゚Д゚彡 < PanelなどだとTABSTOP=True
⊂,,,,,,,,,つつ.   \にする必要があるのですね。

VCLのCanFocusはあてにならないし

どうしてButtonはTabsとp=Falseでも
クリックしたらフォーカスを他Ctrlから
奪えるのにPanelはだめなのかしら

PanelClickイベントに
Panel1.SetFocusと書いたら
出来たけど...
224Delあめ猫にゃ:01/10/28 09:43
>>217
   ∧  ∧
  /∂⌒∂
  (( × メ ))   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  彡 ヘ ミ  <  ありゃD5 で試してたにゃ
  (    ⊂)   \__________
  ◯(⌒Y⌒)
 結局 中間変数を使わない事にしたにゃ
 折線の時に便利かと思ってわざわざ複数選択が同時に出来るようにしてたにゃ
 結局全体移動の時は複数選択出来ないように変更したにゃ

関数型のメソッドのinherited のやり方判らなくなったから procedure に直してるにゃ

で、便利そうかにゃ?
225Delあめ猫にゃ:01/10/28 10:38
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999294620&res=31

1、ARROW2 >>163 の追加
2、>>224
3、矢印の端をドラッグして矢の大きさを変えられる
226Delあめ猫にゃ:01/10/28 10:48
225をD6パーソナルで試すと、
 なぜか編集中ドラッグしてると画面表示されないにゃ
D5だと問題無いし、TMyDraw.IsDesgine:=True にして実行すると問題ない

どうやら PropModified を呼び出すといけないみたいだ・・・
まあ Linesプロパティだけだから呼び出す必要ないかもにゃ
227デフォルトの名無しさん:01/10/28 11:15
http://www2.big.or.jp/~osamu/Delphi/Tips/key.cgi?key=10
関係ないけどさ、JAVAスクリプトでのみ、リンクさせてるサイトって
殺したくなるんだよな。 俺JAVA切ってるから。
殺すなよ。殺人になるから(藁
229下手人:01/10/28 13:05
  --------∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜□□ □□ ( ゚Д゚)< 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;
232>>231:01/10/28 13:59
あなたのところでは、日本語の印字は不可なのですね。
233デフォルトの名無しさん:01/10/28 14:03
”半角”で印字可能な文字は

function IsPrint(C:Char):Boolean;
begin
 result := C in [' '..'~'];
end;

ただし半角カナ除く。
234下手人:01/10/28 14:12
  --------∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜□□ □□ ( ゚Д゚)< 添え付けってなんだゴルァ(w
  (O)----(O)U-U) \__________
235Delあめ猫にゃ:01/10/28 15:14
>>234 了解にゃ
  これでいいかにゃ

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999294620&res=33

MyDraw.Pas として貼付したにゃ

自分で使ってみた感じ、
 けっこういい。
  後、マウスの右ボタンで
  コピーや追加ボタンが出ると嬉しいけど、あめ猫はこれで満足

これ以上便利にするにはちゃんと設計しないと・・・・
236Delフサギコ:01/10/28 16:54
  ∧,,∧   実行時も考慮すれば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 メソッドが呼ばれます。
241Delあめ猫にゃ:01/10/28 18:04
>>236
そうまとめないで、作ってね
242237:01/10/28 18:08
うーん、フォーカスは取得しているはずなんです(;´Д`)
>>242
普通のアルファベットのキーとかが認識できないのか?
それとも特殊なキー(ALTとかカーソルとか)が認識できないのか?
調べるのにちょっと手間取った。

>>243の続き。

もし>243の通りなら、
procedure CMWANTSPECIALKEY(var Msg: TMessage); message CM_WANTSPECIALKEY;
をpublicに追加、実装はResultに1を入れてみるがよい。


外してたらスマソ
245Delフサギコ:01/10/28 19:27
>>241
         ∧,,∧ ガビーン
        ミ゚Д゚,,彡
        ⊂ ⊂ミ  そそそそ
       ⊂゙゙ 〃  そんな、ご無体な
       /(/″
Delあめ猫さん鋭すぎ(w
247237:01/10/28 20:16
どうやらキーニュー力部ではなく。その後の処理の仕方に問題があるようなんですが、いかんせん >>237(後半)の状態で
ステップ実行すらできないのです…
248デフォルトの名無しさん:01/10/28 20:42
>>247
まさか実は override していなかったとか無い?
ブレークポイントを置けないというのはそうとしか考えられない。
249Delあめ猫にゃ:01/10/28 20:51
>>246  あめ猫の今回の動機は、
 設計時にドラッグとか出来るようなDrawグラフィカルなコンポって
 出来るのかなって疑問だけだったから、まあだいたい出来るって
 結論出たら、それ以上やる元気が出ないんだよね
 マウスの右ボタンでメニュー出したりは普通の処理だから出来る
 の判ってるしさ

・・後メニューを付けたりアイテムを増やすのは、手間はかかるけど
 そんなに難しい処理じゃないと思うけどなあ・・・
250Delあめ猫にゃ:01/10/28 21:05
>>235で距離を計算するルーチンにバグがあって
 長さ0の線分が入っていると必ず選択状態になってしまう。
 修正分はソース置場と
 参考にさせて貰った元のソースがあった
http://pc.2ch.net/test/read.cgi/tech/1003559977/
に置きました
251237:01/10/28 21:08
なぜかブレークポイントは無効ですが、なぜかステップ実行はできました。
とりあえず一件落着です。さて…

キャンバスを持った簡易メモコンポ@バグたくさん です。
文字を描画するイベントがあるので、イベント内で独自の文字を描画する
事が可能になっています。袋文字描画のサンプルコードが入ってます。
感想聞かせてください。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999294620&res=36&fi=no
>>249
それは、きっと使う人が追加してくれるでしょうニヤソ
そして、きっと追加した人が公開してくれるでしょうコジキスマソ
254下手人:01/10/28 22:16
>>251
移転しました
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1004273797&res=2

1ネタ1スレで結構ですのでヨロシコ
255237:01/10/28 23:51
>>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に値入れるのが吉。
257256:01/10/29 00:27
あ、気が付いたら $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にはそのような物が有るのでしょうか?

全くの未経験なので、、

あったら凄く便利なんで。
261ねこま:01/10/29 01:41
標準ではありませんが,実現しているコードライブラリがあります.
262256:01/10/29 02:19
>>258-259
説明不足スマン。
今一度よくコード見てみた。

procedure Tなんちゃら.CMWANTSPECIALKEY(var Msg: TMessage);
begin
inherited;
If Msg.WParam in [必要なキーの集合] then
Msg.Result := 1;
end;

なコードでよかったハズ。
あとはKeyDownのオーバーライドで処理すれば無問題。
また外してたらスマソ。
263Delフサギコ:01/10/29 19:16
  ,∩ ∩
  ミ ゙ミ゙ ミ
  ミ  〜
  ミ∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚ミつ < 下がってまーす
  ゙U  ゙゙   \________

>>260
[Delphi-ML:41732] Re: How to Call _Dispose
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=041732
やればできなくないってものだと思った方がいいかも。
そんなに便利ですか?興味あるのでどんな時に便利とか聞きたいニャ


最近、デザパタを知って
もっとDelで積極的にインターフェースを使いたいのですが
どうもうまく使えなくて鬱〜〜。
264Delフサギコ:01/10/29 19:25
    ∧∧    で。BorConは大丈夫なの?
  ⊂ミ,,゚Д゚彡つ
  ∩∧_∧∩
  ヽ( ´∀`)ノ タカイタカーイ
   (    )
   | | |
   (__)_)
>>263
実体をとった後に TAutoObjRef に関係付けなきゃいけないところがダメ。
それができるくらいなら開放コードを書くよ。
266Delフサギコ:01/10/29 23:55
  _____
 /......  .. .../
 ||:::   ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 | ̄\ ミ ゚Д゚ミ<  ダメとか言われても知らん
 |   |: ̄U U ̄:|\_________

 ガベコレがあればうれしいけどね。
 なくてもそうは困らない。
267デフォルトの名無しさん:01/10/29 23:58
>>266
混ざると悪夢をみるよ...
268Delフサギコ:01/10/30 00:08
      ∧∧____   / ̄ ̄ ̄ ̄ ̄
    /ミ;゚Д゚ミ ./\< インターフェースが
  /| ̄∪∪ ̄|\/  \なんか変
    |____|/   うーん。COMを引きずらないで
     ,,,,∪∪,,, ,,    Java並にまともなインターフェースを
             実装してほしかった。

QueryInterface
_AddRef
_Release
のないインターフェースがなぜ作れなかったのだろう。
VCLからも使われない、COMも使えない
インターフェースなんてDelではそんなに使い道ないだろ。
おれはD6使ってないんだけど、IInterfaceっていう素のInterfaceが
出来たんじゃなかったっけ?違った?
271デフォルトの名無しさん:01/10/30 00:20
>>268
つまり参照カウンタ管理機能の無い、単なるメソッドテーブルと化した
インターフェースが欲しいって事?

あればあったで便利かもしれない。
272Delフサギコ:01/10/30 00:33
 いつのまにかIUnknownからIInterfaceになったのかと思えば

メモ IInterface は IUnknown と同等です。
一般的には,プラットフォームに依存しないアプリケーションには
IInterface を使用し,
Windows に依存する部分があるプログラムには
IUnknown を使う必要があります。

ですって。ダメダメです。前と同じ。

どうして素のInterfaceを用意していないのか
聞いてみたい。小一時間。

 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
   ∧,,∧    ホエホエ
  ミ,, ゚Д゚彡
   〃つ旦O
 〜ミ,,[ ̄ ̄ ̄.]
      ̄ ̄ ̄
   デザパタやりにくいやんか。
  どうしてInterface変数を破棄するときに
  オブジェクトの破棄命令が動作するの。しなくていいっつの。
カウンタいじるんじゃいけないの?
QueryInterface
_AddRef
_Release
を空実装すればいいのでは?
275Delフサギコ:01/10/30 01:48
         _________
  ∧,,∧   / さんぷる書いてみますね。
 ミ,,゚Д゚彡< 
  ミつ つ  \ ちこっとまっとくれ。
〜ミ  ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  U U
276デフォルトの名無しさん:01/10/30 02:07
TListViewに5500個ほどアイテム突っ込むのに4分ほどかかるんですが
こんなに時間かかっていい物なんですか?
ふつうにリストからデータ引っ張り出してListViewに入れてるだけなんですが‥‥
277Delフサギコ:01/10/30 02:15

  ∧,,∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡 < 婆ちゃん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 ) する。
282Delあめ猫にゃ:01/10/30 08:18
あめ猫も矢印アイテムをインターフェースで書こうと思ったけど
  TStringsのObjectsにインターフェース綺麗に入れらないから止めちゃった

 でも後から考えたら インターフェースの動的配列作って、TStringsを継承して
 外からはTStringsに見えるようなの作ればよかったかも・・・・
>>282
インタフェースのドラフト晒してみれば、良い知恵出ないかな?
284Delフサギコ:01/10/30 16:05
  ∧,,∧∩  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡 < インターフェースのしつもーソをアゲました。
  U  ミ   \____________
  ミ  ミ
 ノ∪∪

インターフェースがわからない
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1004423652

長くなってしまいましたが
非常に簡単なことしかしてません。

質問を二つ書いています。


インターフェース変数の使い方、教えてくださいな。

あの使い方であっているものかどうかもイマイチ自信なし。
優れた正しいやり方を氏ってましたら
指摘してくださいな。

「インターフェースって何?」
って方も動作させてみると面白いかもね。
あまりなじみがないものですし、わからなかったら
質問してくださいな。
285デフォルトの名無しさん:01/10/30 16:23
>>284
インターフェースの中身はメソッドテーブルって事は知っているよね?

そのメソッドテーブルはオブジェクトのインスタンス毎に生成されています。
インスタンスを廃棄した場合、メソッドテーブルも同時に廃棄されます。

インターフェースの参照を解放する前にインスタンスを廃棄してしまった場合、
_Releaseメソッドなどを呼びだそうとすると既に存在していない
メソッドテーブルを参照しようとしてメモリアクセス違反が起きます。

これは回避不可能なので、あらかじめ nil を代入しておき _Release メソッドの
自動呼び出しを抑制するほかありません。
286Delフサギコ:01/10/30 16:33
         _________
  ∧,,∧   /
 ミ;゚Д゚彡< ゼンゼンんしらにゃー。
  ミつ つ  \>>285さん、ありがとう。
〜ミ ,, ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∪∪  

> インターフェースの中身はメソッドテーブルって事は知っているよね?
知りませんです。
なんとなく、そんな気はしますが。


> そのメソッドテーブルはオブジェクトのインスタンス毎に生成されています。
> インスタンスを廃棄した場合、メソッドテーブルも同時に廃棄されます。

なるほどなるほど。
つまり、インターフェース変数にはメソッドテーブルが入るという事ですね。


> インターフェースの参照を解放する前にインスタンスを廃棄してしまった場合、
> _Releaseメソッドなどを呼びだそうとすると既に存在していない
> メソッドテーブルを参照しようとしてメモリアクセス違反が起きます。

えーーーー!!!

nilが入っていないとメソッドテーブルの実体はなくなっているのに
インターフェース変数の参照が消える時にメソッドテーブルにアクセスしようとするわけですね。

> これは回避不可能なので、あらかじめ nil を代入しておき _Release メソッドの
> 自動呼び出しを抑制するほかありません。

にゃんじゃって〜〜〜!

こんな実装した奴どこの誰ジャー−−

      ∩,,,,,,,,,,,∩ ,,,_
   〜⊂`'''''''''ミ。Д。ミ⊃ ギャフーン
      `'''''''''''∨ ∨
287Delフサギコ:01/10/30 17:26
気を取り直して....暗い話題でも。
         _________
  ∧,,∧   /
 ミ;゚Д゚彡< D6UP1でもTToolbarのCustomizeがバグったままだと
  ミつ つ  \思うのですが・・・・・・
〜ミ ,, ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∪∪   バグなのか、仕様なのか・・・
288デフォルトの名無しさん:01/10/30 19:28
http://www.vector.co.jp/vpack/browse/pickup/pw4/pw004591.html
こういう風に、アクティブウインドウのタイトルバーに
張りつくプログラム作りたいんですけれども、
どうすればよいか分かる方いらっしゃいませんか?
289デフォルトの名無しさん:01/10/30 20:00
ウィンドウリスト取得や位置設定を
カプセル化したユニットがあるけど、公開しようか?
290Delフサギコ:01/10/30 20:13
   ∧,,∧   / ̄
(,,,,,,,ミ,,゚Д゚彡 < こんなんすると、いろいろな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;
291288:01/10/30 20:27
ごめんなさい。問題点をはっきり書くべきでしたね。

えとですね、今考えてる手順は

1.アクティブウインドウのハンドル取得。WindowRect取得。
2.ボタンの数を数えたり、タイトルバーの高さとかいろいろ調べる。
3.borderstyleがnoneなフォームを、位置を考えながらペタッと貼りつける

です。で、困ってることと言うのは、アクティブウインドウが
「最前面に表示するウインドウ」だった場合、隠れちゃうんで困ったなぁ
って言う感じで考えてました。

手間かけてすいません。
292Delフサギコ: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;
なるほどー。
タイマー使って最前面に表示させつづけるわけですね。
サンプルコードどうもです。
294下手人:01/10/30 23:36
確かWM_ACTIVATEかWM_ACTIVATEAPPだった記憶が
拾ってみなされ
295293:01/10/30 23:45
>>294
あう。。。
もしかしたら、それやろうとしたら、サブクラス化しないといけないですか。。
サブクラス化はまだ勉強中っすー。
>>294
どうやってひろう?
システムグローバルなフックでもインストールする?
うん、これが一番美しいかなぁ。

>>295
サブクラス化は関係ないと思う。
297下手人:01/10/31 00:51
苦渋をなめた経験的には、Delフサギコのタイマー駆動が一番無駄なく期待通り(w
誤動作も無いしデバッグもしやすい
つまりストーカーするならゴミの日にゴミ箱漁るより、監視カメラを仕込む方が確実ということですか(´Д `)ハァハァ
299下手人:01/10/31 01:12
>>297=>>298 ジサクジエンデシタ!!(・∀・
300296:01/10/31 05:13
>>297-299
タイマーで監視は簡単かもしれないが、PGとしては心痛まない?
ゴミの日でもないのに、1秒ごとにゴミ置き場を見に行くんだぜ。
フックでメッセージを捕まえられれば、ゴミの日に収集車から電話
で直前に知らせてもらうのと同じだぜ。他の事に専念できるし、
寝ててもいいし。
301276:01/10/31 06:03
ちと遅レスになってしまいましたが。

>>277
sampleディレクトリの中にあったんでソース覗いてみます。

>>278
一括置換用のツールの操作対象ファイルの一覧です。
(特定ディレクトリ以下で特定条件を満たしたファイルを除く全ファイルに対して複数の置換処理(Webページのヘッダ部分書き換えとか)をバッチ処理するツール)
たまたまテストしたディレクトリ(Apacheのドキュメントルート)にPHPのマニュアル(約2500ファイルw)とかがあっただけなんですが異様に遅かったのでどこか不味かったかな?と思ったんで。

>>281
こっちのほうが簡単そうなのでとりあえずこっちで様子を見てみます。
>300
グローバルフックも結構コストかかるような気がするけど(´Д `)
303ねこま:01/10/31 09:19
慣れると OwnerData モードのほうが簡単です

そういえば ownerdata とかで google で検索してもあんま出てこないんですけど
検索のしかたが悪いんでしょうか?
304デフォルトの名無しさん:01/10/31 13:31
>>286
COMインターフェースは基本的にリファレンスカウンタを持つから
そういう実装になるのは当然だよ。

Delphi 2 では、インターフェースは言語でサポートされておらず
class 宣言を使って擬似的にインターフェースを定義していた。
参照カウンタも AddRef,Release メソッドを呼びだして自分で
管理する必要があったんだよね。

俺は言語レベルでリファレンスカウンタを自動的に管理してくれる方が
良いが、単なるメソッドテーブルとしてインターフェースを使いたい場合
それが邪魔になるということだね。
305デフォルトの名無しさん:01/10/31 13:57
★解決した問題はこちらへ★

2chで解決したDelphi質問をFAQ収集するスレ
http://pc.2ch.net/test/read.cgi/tech/1004501183/
306Delあめ猫にゃ:01/10/31 14:04
メッセージフックによるフォームに矢印とかを表示する増やすサブクラス化の実験

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999294620&res=37

前回作った複数矢印コンポと同じアイテムを使います

貼り付けると、まるで矢印コンポがあるかのように見えるけど、
 アイテムは TObjectから継承してるのでコンポではありません。

Win2000では ほぼ巧く動きました
307デフォルトの名無しさん:01/10/31 14:06
256色BMPの保存および読み込みを独自関数で行いたいと思っています。
(パレットを独自で管理したいと思っているので)
ご存知の方がいましたら、教えていただきたいです。
よろしくお願いします。
308デフォルトの名無しさん:01/10/31 14:08
>>307
質問の内容がまったく分かりません。
我々は何を答えれば良いのでしょう。
309Delあめ猫にゃ:01/10/31 14:35
>>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思いっきり逝って善し。死言語デス
312Delフサギコ:01/10/31 15:04
>>304さん、レスサンクス

インターフェースも継承できるのだから
COMに依存しないインターフェースを作って
そこからIUnknownを派生させればいいのにと思うニャ。

というかクロスプラットホーム環境でまで
なぜCOM的なリファレンスカウンタ実装しなきゃならないのか
納得いかない。

TObject以下のクラス変数=ポインタは
DelphiPascalの利点だったけど

このインターフェース変数の実装は
明らかにJavaに劣る欠点だと思うニャ

 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
   ∧,,∧   
  ミ,, ゚Д゚彡
   〃つl⌒|⌒l
 〜ミ,,[ ̄ ̄ ̄.]
      ̄ ̄ ̄
>>312
それは Delphi は Java では無い。から。です。
314Delフサギコ:01/10/31 15:29
  ____
 /......  .. .../
 ||:::   ∧,,∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 |: ̄\ ミ,, ゚Д゚ミ<  と、過激に言ってはみたものの
 |:   :|: ̄U U ̄:|\_________
 |:   :|:     .:|

   _____
 /:\._____\  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 |: ̄\ ミ ゚Д゚ミ < ちょっと後悔
 |:   :|: ̄U U ̄:|  \_________

 .______
 |:  :\.    \  隠れとこう
 |:   :|: ̄U U ̄:|


インターフェース変数に入れた時は
オブジェクトを開放しないように気をつける
という対処方法でよいかニャ
315Delあめ猫にゃ:01/10/31 15:34
うぅ〜ん〜 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;
★解決した問題はこちらへ★

2chで解決したDelphi質問をFAQ収集するスレ
http://pc.2ch.net/test/read.cgi/tech/1004501183/
>>319
解決する問題と
解決しそうにもない問題を切り分ける能力くらい持ってくれ。
おれってバカだから。

★解決した問題はこちらへ★

2chで解決したDelphi質問をFAQ収集するスレ
http://pc.2ch.net/test/read.cgi/tech/1004501183/
322Delあめ猫にゃ:01/10/31 18:05
>>306 >>309 のコンポは
Linesプロパティに
RTEXT,39,138,164,218,34,TEST漢字

みたいに定義すると斜めのラベルを貼ったように使えます
 けっこう面白いのですが、ドラッグでサイズ指定する時が、
なんか格好悪いのです。 何か巧い方法はないでしょうか?

 今は四隅をドラッグするとサイズ指定になっています
>>318のやつは面白いねぇ。たぶん使わないけど(笑)
324Delあめ猫にゃ:01/10/31 21:22
306 移動しました
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1004530597

どうも 斜め文字を描く時に、サイズを得るのに HDC が必要な為、 Paintメソッドが呼ばれた
時についでにサイズを変更してるのが良くない感じ・・・・

 しかし、アイテムはWinHandleを持っていないから HDCが簡単には手に入らないし・・・
 sysytem.Handleから HDC 作ってもいいのかな?
325Delあめ猫にゃ:01/10/31 21:28
×sysytem.Handle
○Application.Handle ・・・鬱
326Delフサギコ:01/11/01 00:37
               \   テケテケ      /
___.___.  ∀     ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
       .   .| ┷┳━    ∧,,∧,,,,,,,,,,,,,,,
 ̄ ̄ ̄ ̄ ̄ ̄ ̄|... ┃    ミ゚Д゚,,彡,,,,,,,,  ゙〜
 ̄ ̄ ̄ ̄ ̄ ̄ ̄   .┻       U U """"UU

            ∫    _________
   ∧,,∧     ∬   /
   ミ,,゚Д゚彡っ━~  < ただーいま。..
_と~,,  ~,,,ノ_.  ∀   \
    ミ,,,,/~), │ ┷┳━   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ .じ'J ̄ ̄| ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄  ┻

いろいろ教えてくださってサンクスコ。
話が複雑すぎてついていけない、恭子の語呂
>>325

GetDC(0) でスクリーンDCのハンドルがいつでも使える。
328Delフサギコ:01/11/01 01:34
   ,∧,,∧∩  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚ 彡< 教官!!>>318さんのコードが
__ミ ミ  ミ   \_なぜ動いているのかわからません
\,,∪  ̄ ̄ ̄\
||ヽ|| ̄ ̄ ̄ ̄||"
 ...|| ̄ ̄ ̄ ̄||

○interfaceってGUIDなくてもいいのかニャ?

○IHogeをinterface継承しているのに
 TTestImpAdapterは
 procedure ShowMessageを作らなくても
 いいのかニャ?

○  property Imp: THogeImp read FImp implements IHoge;
 つーか implements 指令って何これ?

○ Hoge.ShowMessage;
 なぜTHogeImp.ShowMessageが呼ばれるのか....

 ニゲロー
  ∧,,∧ ──────
 ミ゚Д゚,,彡 < さぱーり理解できませーん。
 ⊂⊂ ミ──────
    ヾ ,,ミ〜 ────
     し じ ─────

 こんなコード、いったいどこで取引されているのYO・・・・
  やはり闇市場でしょうか...
329Delフサギコ:01/11/01 01:37

    ∧ ∧         / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ̄ ̄ミ,,゚Д゚ミ ̄|   <  もう寝ます。
|\⌒⌒⌒⌒⌒⌒\   \
|  \           \    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
\  |⌒⌒⌒⌒⌒⌒| きっと明日になったらわかる、きっときっと
  \ |_______|
Delあめ猫のレヴェルの高さに、舌を巻いてる奴は多いと思われ(w
331Delフサギコ:01/11/01 01:52
そいえば、MLでも出ていたのでご紹介。
UMLスレでおもしろいツールが紹介されてました。

http://www.osk.3web.ne.jp/~shino/dev/DICON/DICON.html
どうですかねー>>各位

 ̄ ̄∨ ̄ ̄ ̄
  ∧,,∧
 ミ,,゚Д゚彡
  ミ つ[UML]).
〜ミ ,, ミ 
  ∪∪  

MLの人たちはD6のダイアグラムページは
無視しているのだろうか....
ガムバッタラUMLのクラス図かけなくはないだろうに…

>>330 (W
コード書くの早すぎ...
332Delあめ猫にゃ:01/11/01 08:44
>>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が呼ばれる。
334Delフサギコ:01/11/01 10:05
    ∧ ∧  >>333
    ミ ゚Д゚彡  すごすぎ
  〜ミ,,,,uuミ

なぜにsage進行・・・・ageとくかしら
335Delフサギコ: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
>>339
同意。漏れはTrunc呼んじゃう。
341Delフサギコ:01/11/01 22:03
      ∧,,∧l||l  腹をこわした。
       ;゙⌒ヽ彡 
     〜ミ___ミ
    ''" ""''"" "''

          クワッ
       ∧,,∧l||l  Delphiの悪口言ったら
       ;;゙ミ゚Д゚彡  バチあたったんか!
     〜ミ___ミ
    ''" ""''"" "''


      ∧,,∧l||l  あた、、あたたたた。(TДT
       ;゙⌒ヽ彡 
     〜ミ___ミ ))
    ''" ""''"" "''
>フサギコさん
お大事に。猫は元気ですか?
343Delフサギコ:01/11/01 22:10
       ∧,,∧l||l  彼女は病院に入院中です。
       ;;゙ミ゚Д゚彡  名前はトラギコかトラしーちゃんにしようか...検討中
     〜ミ___ミ     いま一つ体調はよくならないのです。点滴うってもらってます。
    ''" ""''"" "''

      ∧,,∧   そうそう。彼女の痛みに比べりゃ
       ;゙⌒ヽ彡  この腹の痛みなど、大したことないよな。
     〜ミ___ミ
    ''" ""''"" "''   ♀の子だから、トラしーちゃんかな…ヤパシ
杞紗がいい。
いやー、今朝夜食買いにコソビニ逝ったら、
途中の道の中央分離帯のところで交通事故死したと思われな、
黒い子猫の死体をハッケソ、一気にウトゥになったよ…


Delフサのウトゥな気分を垣間見た気がする…
346デフォルトの名無しさん:01/11/02 07:29
ファイル検索関数を作りましたが、どうも
非効率的な気がします。
Maskユニットを使いたくなかったので MatchesMask 関数を使わなくても
大丈夫なように少し工夫しました。

最初に、マスクを指定して FindFirst → ファイル一覧を得る

次に、マスクには * を指定して FindFirst → ディレクトリ一覧を得る
→ 再帰検索。

2回目で結局全てを検索しているので、1回目の検索は無くてもいいような
気もしますが、1回目で * マスク検索をすると、ディレクトリ以外だった場合に MatchesMask 関数でチェックをしないといけません。

高速化のために、よい知恵はありますか。

ソース↓
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1004653717&res=1
>非効率的な気がします。
気がしますって...
プロファイル取ったの?
いえ。単に、2回も3回も同じ場所を検索しているから
非効率的だと思っただけです。
349Delフサギコ:01/11/02 11:11

   .∧,,∧     ∧,,∧   ∧,,∧     ∧,,∧   ∧,,∧    .∧,,∧
  ミ,,゚Д゚彡   ミ,,゚Д゚ミ  ミ,,  彡  ミ,,  ミ  .ミ゚∀゚,,彡   ミ゚∀゚,,彡 アヒャ
  ⊂  つ   〃 つつ  〃 つ   ⊂  つ  ⊂ミ⊂ ミ   ⊂  つ
   0  ミ〜 〜 ,, つ   〜 ,,つ   〜  ,つ  .⊂  ミ〜   0,  ミ〜
    ,` J    (/      (/´       し´      ,`J      `J

>>344読めません。
>>345時には出会います
>>346フサが自作しているのはワイルドカードマッチを
無視して全検索するものなので、知恵はでてこないです。
350Delフサギコ:01/11/02 12:07
  ∧∧              / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (*゚−゚)⊃∧         < 最近シツモソが少ないねー
__| つミ,, ゚Д゚ミ,,,,/~つ_     \______________
  と_)ヽ,,,つ,,,,,,,ノJ  | ━┳━
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|... ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  .┻
   聞くは一時の恥、聞かぬは一生の恥ぞよ
   何でも聞いてみましょうな。
>>348
 他の方法は FileListBox を非表示で作成して temsを見る方法が思いつくけど

そういうの追いかけてもしょうがないと思うよ。
   それがメインの物作ってるなら別だけど
   その方法でも、そんなに待てない程は遅くないでしょう
>>350
まぁマターリいこうや
353346:01/11/02 15:52
うーん、いくらかばかりでも
盛り上げようと
問題提起をしてみたのですが(内容に問題があったか)
無理か…
354Delフサギコ:01/11/02 16:03
  ∧,,∧     />>353そでしたか、サンクスコ
 ミ,,゚Д゚彡  < そもそも、ワイルドカド使うファイル検索って
  U  U    \多用します?
〜ミ  ミ
  ∪∪

フサはワイルドカドなしファイル検索で十分なので
必要性を感じないのだけど...
みんな悩んでおおきくなった
356デフォルトの名無しさん:01/11/02 16:38
まあ、正直なところ
ワイルドカードよりも、任意の拡張子の
ファイルを探す事 "しか" ありませんね。

*.txt

こういう風にしか使わない…
Delの作業ファイル消すときに
*.~*;*.DCUとかで使ったぐらいかなぁ
358Delフサギコ:01/11/02 19:17
  ∧,,∧   トラしーちゃんが
 ミ,,  彡  亡くなったってさ。
 ミ   ミ 
 ミ〜,, ミ
  ∪ ∪
359199:01/11/02 20:29
>>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ごと固まってしまいます(涙).
メモリの開放,どこかで忘れたかなぁ???
366Delフサギコ:01/11/03 18:17
 ∧,,∧     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ミ ゚Д゚ミ ∫< >>361 多重継承みたいなことできます
.(ミ  ミっ-~  \__________
〜ミ,,⊃ミ⊃

TComboBoxとTEditのTextプロパティを同列に扱いたい場合
それぞれにインターフェースをくっつけてTextプロパティを
操作するとコーディング量がすくなくて済みます。

I := ComboBoxInterface1;
I.Text := ’ニテヨシ’;
I := EditInterface1;
I.Text := 'ヤイテヨシ';
こんな感じ。

>>365
*.*で全ファイルを検索して実際にファイル名を拾うときに
拡張子がpasか、dfmかという判断をする検索でも
6000ファイルをなめてもストレスはあまり感じてないです。

メモリリーク調査ユニットを使ってはいかがでしょうか?
TListView を仮想リストビューで使うとき、
OnData で表示する TListItem を作るわけですが、
同様のリストビューが複数必要なので、
TListView を継承したコンポーネントを作成しようと思いました。
モデルのクラスは固定です。

この場合、OnData や OnDataFind を定義した上で
外部から変更できないようにするのがいいでしょうか?
それとも UpdateAction メソッドをオーバーライドして作れる?
368ねこま:01/11/03 20:14
複数っていくつ必要なのか知りませんが,
そういう場合私だったら普通にイベントハンドラを使い,
なるべくコメントでわかりやすくするようにこころがけます.
>>365
>Del5ProにはMatchesMaskがない(はず)なので私も同じ方法ですが
あるよ・・・。
370デフォルトの名無しさん:01/11/04 00:25
インターフェースを使って、他の言語で作成されたモジュールとやり取りする場合、
WideString型の引数や戻り値を使っても大丈夫なのですか?

Delphiで書くとこんなかんじです。

 IHoge = interface
  function GetName: WideString; stdcall;
  procedure SetName(const AName: WideString); stdcall;
 end;
371名無し:01/11/04 00:35
インターフェースとはどんなものか勉強しているのですが、
以下の 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;
372371:01/11/04 00:38
わかりましたすみません (汗
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;
374名無し:01/11/04 00:48
>>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 が見つかりません』等の
エラーメッセージをオプション等で自動的に表示する事は
可能でしょうか?
376Delフサギコ: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の記述してあるメモリ領域が存在しないと
思った方がいいかも。

って、のであってるかな。
377373:01/11/04 00:56
>>284のリンク先にあったよ・・・。
378名無し:01/11/04 01:01
>>376
マジデスカっ!?
何度やっても全然エラーが出ないです・・・
MemCheck にもひっかからないです・・・
コワ〜
379デフォルトの名無しさん:01/11/04 01:07
INodeData;
TNodeComponent;
が何なのか解らないから、答えようがないのでは?
380名無し:01/11/04 01:09
>>371 のTestをNodeと読み替えてください
ややこしくてすみません
381デフォルトの名無しさん:01/11/04 01:10
NodeComp.Free; 後に
NodeIntf._Releaseが呼ばれて、その中で
NodeComp.Destroyが実行されるって事?
382Delフサギコ: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;
384Delフサギコ: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はとりあえず必要ないです。
385371:01/11/04 01:27
>>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;
386Delフサギコ:01/11/04 01:28
>>383コードのままだと
  ,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,ミ,,゚Д゚彡 < フサの環境では「無効なポインタ操作」例外でます
  UU""" U U    \_______________

>>383のコードから
// Hoge.Free;
Freeをコメントアウトするとちゃんと動作します。
387デフォルトの名無しさん:01/11/04 01:32
CreateしたものはFreeしないと気が済まないの。
388Delフサギコ: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;
390371:01/11/04 01:49
>>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;
391371:01/11/04 01:50
(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;
396392:01/11/04 02:11
>393
その都度インターフェースを作っていたら、
インターフェースだらけ
 IHoge, IHoge2, IHoge3, IHoge4,....
になるのですが。
これは避けたい。
397Delフサギコ: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 には出来ないのかな・・・
401Delフサギコ:01/11/04 02:31
    ∧ ∧ 
    ミ ゚Д゚彡 >>400  同じ事、思った。
  〜ミ,,,,uuミ
402371:01/11/04 02:32
いろいろ考えた結果、やはり >>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;
404371:01/11/04 03:09
う〜ん、どうもわたしは自分がやりたい事を見失っていたようです
私はただ永続的な Interfaced クラスを作りたいだけでした
別に _Release で破棄されるならそれでいいや
nil を代入しなければならないってのも慣れの問題かも
405371:01/11/04 03:18
>>402
「だめなような気がしてきました」というか
よくみると「絶対だめ」でしたね
406デフォルトの名無しさん:01/11/04 13:53
質問でゴワス。
MDIアプリケーションで
MDIチャイルドを表示させたときに、メインウィンドウのメニューを

メインウィンドウのメニュー + チャイルドフォーム用のメニュー

というように、混ぜたいのです。いまは、チャイルドフォーム用のメニューにわざわざ
メインメニューと全く同じメニュー構造+チャイルドフォーム用の
メニューを付け加えるという、無駄とも思える作業をしています。

もっと楽な方法はありますか。
407Delフサギコ:01/11/04 15:40
あまりMDIのことは知らないけど
...Delphi6\Demos\Doc\TextEdit\textedit.dpr
これみるといいっすよ。>>406
┏━━━━━┯━━━━━
┃          |
┃          |
┃       ∩∩
┃       ∧ ∧
┃      ミ,,゚Д゚ミ
┃       ミ  ミ フゥ…
┃       ミ  ミ
┃       ミ  ミ ミノムシ ミタイ ダナ
┃       ..U..U
┃        
┃ ぶら下がり倦怠期

基本はほとんど全部作らなければいけないけど
DemoではWindowメヌーが重なってますね。
408Delフサギコ:01/11/04 16:10
  ,,,,,,,,,,,,,∧,,∧   /
〜′,,,,,,,ミ;゚Д゚彡 < 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
>>369
ぐぉ.ツッコミありがとう.
>>411
マ板見れ
414デフォルトの名無しさん:01/11/04 23:43
_AddRefと_Releaseが-1を返すやり方はマニュアルに載っていますよ。
415名無し:01/11/04 23:46
interface で定義するメソッドは stdcall を付けないとだめなのですか?
Delphi でだけ使えればいいのなら付けなくていいよっていうもの?
>415
Delphi only なら stdcall はいらない。
417名無し:01/11/04 23:55
クラスを順序型にする良い方法はないでしょうか?
case ClassType of
TButton:
end;
こういう事がしたい

if (ClassType = Txx) then XX else
if (ClassType = Txx) then XX else
  :
こういうのは嫌

今は自分で番号を決めてやっています
418415:01/11/04 23:56
>>416
わかりました thx!
419名無し:01/11/04 23:59
TComponent は _AddRef, _Release で -1 しか返さないんですね〜
(VCLComObject が nil である限り)
昨日知ったです
420デフォルトの名無しさん:01/11/05 00:22
>417
ないな・・・。
逆は出来るんだけどね。
421417:01/11/05 00:43
>>420
そうですか・・・ レスthxです

ヘルプ眺めてたら ClassID ってのを見つけて「おぉっ!?」と思ったんですが
TComObjectFactory.ClassID
property ClassID: TGUID;

だめじゃん・・・
422名無し:01/11/05 03:49
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

こんな方法しか無いのでしょうか?
423名無し:01/11/05 05:36
TInterfaceList で解決しました
424名無し:01/11/05 05:38
でももし Pointer 型から戻せる方法があるのなら教えてほしいです
よろしくお願いします
425デフォルトの名無しさん:01/11/05 13:11
頼むから半角カタカナはやめてくれ。
>>425
??
半角カナは悪ではないよ。
427デフォルトの名無しさん:01/11/05 13:45
>>424
参照カウンタのことを完全に理解していないのなら、Pointer型を
介して使うのは大変危険です。

ただ単にキャストすればいいだけなんだけど、
 ptr := Pointer(intf);

 IUnknown(ptr) := intf;
は動作が違う。前者はptrにただ代入するだけだが、後者は
代入に加えて参照カウンタをもインクリメントする。

前者はきちんと参照カウンタをデクリメントしないとメモリリークするし
後者はインターフェースが勝手に廃棄されることがある。
428427:01/11/05 13:46
>>427
書き込んだ瞬間に誤り見つけた…

(訂正版)
後者はきちんと参照カウンタをデクリメントしないとメモリリークするし
前者はインターフェースが勝手に廃棄されることがある。
マカーハ ヨウズミ
シツモソ
現在の時間を取得するのに一番時間のかからないやつってなんでしょう
いくつか方法あるけど・・・
ドウナンショ?
431デフォルトの名無しさん:01/11/05 18:16
NowTime := Now;

って、そんなに時間かかるんですか。
横槍
ミリ秒まで正確に測りたいときは
どうすんだろ
TZtimerでも使うのかな
_rsdtc
434424:01/11/05 20:34
>>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;
435424:01/11/05 22:13
一つ加えておくと
intf := TXComponent(p^);
これは当然できます。
やりたいのはクラスがわからないという場合の話です

TObject(p^).ClassType という話になって
>>417 >>422 へとリンクされてしまいます
436デフォルトの名無しさん:01/11/05 23:07
>>434
TObject にいったんキャストして、GetInterface メソッドを呼び出す。
使い方は TInterfacedObject.QueryInterface の実装を参考に。

as 演算子はこの場合、使用不可。
437436:01/11/05 23:14
>>434
で変なところがあるな。

p := @obj; って変数自体へのポインタを得てどうするの?
関数抜けたら無効なポインタになるっしょ。

p := obj; として TXComponent にキャストするときは
TXComponent(p) とするべき。
438デフォルトの名無しさん:01/11/05 23:38
プログラマを目指すなら、ActiveX や
Interface は知っておいたほうがいいかな。
ActiveXはいまだに動作原理…というか
何の目的で使うのかが良く分からないし、
Interface に関してはここの議論を見ても
???だし…
>438
必要になれば分かるよ。
Delphiのって限定じゃないInterfaceは理解すると良いかも。
JavaとかC#で。
440434:01/11/06 00:10
>>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; って変数自体へのポインタを得てどうするの?
>関数抜けたら無効なポインタになるっしょ。
あっそうか!なるほど

世界が広がったーよ
441434:01/11/06 00:15
Supports ってここで使うのか!
442434:01/11/06 00:42
>>441の続き 〜
と思ったら、多分 >>395 の理由で IUnknown が無いと False しか返さないんですが
やはりこういう場合 class に定義追加しておかないとどうしようもないんでしょうか?
どうしようもない
Supports使わないって事で終わり
444デフォルトの名無しさん:01/11/06 00:56
>>441
GetInterface の戻り値をチェックすればいいんじゃないの?
445Delフサギコ: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
>>446
oh.exe ってない?
ヘルプファイルがあるディレクトリに、それッポイテキストファイルがあるので、
直接書き換えればいい。
452デフォルトの名無しさん:01/11/07 09:28
TFrameでOnCreateイベントを使いたいけど、いい方法ありませんか?
453デフォルトの名無しさん:01/11/07 14:09
delphiスレも消えかかってきましたね。
自然淘汰ですか。

さて。

OpenPictureDialog で独自の画像フォーマットを開けるように、
フィルタにマイ拡張子を追加してありますが、
このファイルを選択すると「毎回表示できませんエラー」が出てきます。

標準でない拡張子を選択した場合に、エラーを回避する方法はありませんか。
454453:01/11/07 14:10
X 回避する方法はありませんか
○ 回避するにはどうすればよいですか。
>>454
その画像フォーマットを登録してしまえば済むと思うのだが?
456デフォルトの名無しさん:01/11/07 16:37
とうろく?
OpenPictureDialogに?
それとも、単に拡張子を関連付けるって事?
457Delフサギコ:01/11/07 17:10
  ∧,,∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡 < TGifImageをusesしたら
  ,;゙  ミ     \
 ミ.  ミ     ダイアログでもGif表示できたような…
/゛゛゛゛
画像登録ってそう言うこと?
extras の jpeg.pas より
>TPicture.RegisterFileFormat('jpeg', 'JPEG イメージファイル', TJPEGImage);
459デフォルトの名無しさん:01/11/07 21:48
TPicture に登録して、その情報はPictureDialogに反映されるの?
460Delフサギコ:01/11/07 22:13
         _________
  ∧,,∧   / >>452
 ミ,,゚Д゚彡<  Frameのコンストラクタは?
  ミつ つ  \
〜ミ  ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  U U
461Delフサギコ:01/11/07 22:32
  ホーイ シツモン
   ∧,,∧∩  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡 < ヘジルスバーグ氏って
   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;
実装部に必要な処理を書きます.
465462:01/11/08 00:20
>>463
そーです。
今回はTFileStreamです。
泥臭い方法もあるけど、
TStringStream経由するのが正統的かな?
ss := TStringStream.Create;
ss.CopyFrom( filestream, n );
ss.DataStringで文字列として取れる
467462:01/11/08 00:28
>>466
ありがとさん。
Str?Copyとかその辺使うのかと思ってたけどちがかったわ。
SetLength(S, n);
Stream.Read(S[1], n);
は安全ですかねぇ〜?
469Delフサギコ:01/11/08 00:34
         _________
  ∧,,∧   / こんなんつくーたよ。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;
>>468
いつもそう書いてるYO
>>469
うーむ、
 MS2 := TMemoryStream.Create;
で失敗したら、MS1.Freeが呼ばれませんが、
どうしましょう?
472Delフサギコ:01/11/08 00:55
   ∧,∧     ,::  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡っ━'~  | 適当なサンプルだから
  ミ∪  ~,ノ    < 勘弁してよ。
   ミ  '' ミ       \____________
   し'~し'
適当なサンプルでも考えさせられます。
最初にnilで初期化するか、try-finallyブロックをネストするか。
よくこんなエディタでやってられるな。>del使い
VB⇒VC⇒java(秀丸)と触ってきたが一番使い辛いぞ。
フリーカーソルなんぞはツールで克服すつとしても、それ以前の基本機能である
window分割とかできんし、なんだかストレスが溜まってしかたない俺はdelさわるなってことか?
>>474
ウィンドウの「分割」はできないけど,同じエディタバッファを複数のウィンドウで
同時編集できますが?
476Delフサギコ:01/11/08 02:21
         _________
  ∧,,∧   /
 ミ;゚Д゚彡< 慣れですから。
  ミつ つ  \
〜ミ ,, ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∪∪  

別の編集windowを開けて上下に配置して
デスクトップ位置保存をしてみるとよかれ。

あと、ツールに
エディタを登録して実行引数を$EDNAMEにでもすると
開いているテキストが他のエディタで開けるから
それをつかってちょ。
>>474
これでどう? http://www.gexperts.org/
>>474
弘法筆を選ばず.
良く出てくるフリーカーソルって、
フルスクリーンエディタの事?
N88-BASICとかと同じ。
>>477
それを入れると何がどう変わるのか、軽く触りだけでも教えてもらえたり
なんかすると、厨房なボクとしては凄く感激だったりするんだけど、教え
てみたりなんかしてみない?
ここに絵付きで一覧がある
http://www.gexperts.org/tour/html/

エディタの拡張とかgrep検索とかVCっぽくしたりもできる
どのあたりが気に食わないのかわからないけど
GExperts は D2 の頃から開発されつづけてるからだいたい何でもあると思う
オープンソースだ

オレはフリーカーソルじゃないと嫌だけどなぁ
>>479
フリーカーソルってのは、行の終わりよりも右にカーソルを置ける機能のこと
おれもフリーカーソル派だけど、
フリーカーソルは宗教論争的なので、話題にするのは危険。
的じゃなくて、完全に宗教論争
485Delフサギコ:01/11/08 13:32
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| はい、ありがとうございます!
| 某landサポートセンターです!
\_____ _______
         ∨
       ∩_∩ D
      ( ´∀`)○    ___
      (    )D……/◎\
=============================
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|  Delphiを作った人は
|  アンダースヘジルスバーグさんって
|  お呼びすればいいのでしょうか?
\_____ _______
         ∨
         C∧,,∧
   ___    ○ミ゚Д゚,,彡 ハツオン ワカラン
 /◎\……Cミ  ミ
=============================
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ・・・・・・・・・・・・・・・・・・・・
|   インシデント減りますがお調べいたしましょうか?
\_____ _______
         ∨
       ∩_∩ D
      (;´∀`)○    ___
      (    )D……/◎\
=============================
>>485
実話?
>>485 ワラタ
     漏れも実話か気になる、教えてくれ。
488Delフサギコ:01/11/08 14:12
  ∧,,∧     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ミ;゚Д゚ミ  <  実話なわけないっしょ
 (ミ  ミつ)ビシッ\_________
〜ミ  ミ
  ∪ ∪

ホントにやったら、Borlandから目をつけられるという
諸刃の剣ですね。
実際に試してみてよ。
同じ質問を「C# を作った人は...」に置き換えて、MS に聞いてみて、
対応を比較するのも一興。
490474:01/11/08 16:57
むむ、有益な情報皆様ありがとう。
弘法は筆を選ばないが、厨房なので筆を選んでしまいます。
ま、とりあえずGExperts入れてみます。つーヵdelだけの人って
MSDNとかネットでみてんの?
491Delフサギコ:01/11/08 17:56
  ∧,,∧  >>490 そだよ。
 ミ,,゚Д゚彡
 ミつ[|lllll]).  >>489 やだよ。
〜ミ  ミ
  U''U
>>490
筆おろしした?
>>490
当然。常時接続だし。
MSDN Professional購読してるが
値上げしたので次の延長時期が来るのが怖い…
495Delフサギコ:01/11/08 18:46
    ∧ ∧  D6対応β時点でCtrl+Alt+CとUが効かなかったのですが
    ミ ゚Д゚彡 治ってます?>Gエキスパ
  〜ミ,,,,uuミ

 だーれか。日本語化してほしなーー。

http://hp.vector.co.jp/authors/VA003525/jmysoft.htm#6
もあるしー。exeScopeのライセンス料の2000円あげるからGエキスパの日本語化
だれかしない?って、誰もやらないか....
496462:01/11/08 18:53
Anchorsを指定してフォームのリサイズに応じてコントロールもリサイズ、移動
するようにしてる場合、画面のプロパティでフォントの大きさを変えると
レイアウトが崩れます。回避するにはどうすればいいでしょうか
497Delフサギコ:01/11/08 18:58
 ∩|
 ミ ゙''゙゙゙つ
 ミ∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ミ,,゚Д゚彡 < ニュートンのリサイズキットなど・・・・・・・
 U U    \________

http://www.newtone.co.jp/produc11.html

GetPixelPerInchアピとかでフォントサイズ取得できたっけ?
498462:01/11/08 19:00
フォームにPixelsPerInchていうプロパティありますが、
触ればどうにかなりますか?
>>495
CVS でソース公開しているけど、それじゃだめなんか?
500デフォルトの名無しさん:01/11/08 20:26
ふむ。GExperts 日本語化プロジェクトを始めようか。
501474:01/11/08 22:15
ふむ、なかなか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 を勉強し始めたのですが、コーディングガイドラインとか変数の命名規則で、
標準的なものとか推奨なものがあれば、載っている本とかサイトを教えて下さい。

よろしくお願いします。
507>506:01/11/08 23:11
508デフォルトの名無しさん:01/11/08 23:11
>>506
「コーディングガイドラインとか変数の命名規則」は識別子に短い名前しかつけられなかったり
型管理が弱い言語において、楽をするための方便です。

C++ や Pascal などの型情報をちゃんと処理できる言語では、言語仕様に型情報を管理する機能が
入っているので、変数名に型情報を盛り込むのは二度手間になります。
暗号のような名前を使うよりは、その物ずばりの名前をつけたほうが確実です。
510506:01/11/08 23:28
>>507 さん
Hungarian Notation ですか。うーん。

>>508 さん
一応、Java では
Writing Robust Java Code とか、
http://ObjectClub.esm.co.jp/ のコーディング標準などを見てたんです。
で、Delphi でもそういったものはないのかな、と。

ということで、>>509 さんのをこれから読んでみます。
511デフォルトの名無しさん:01/11/08 23:29
フサギコって、C#スレで自爆したDelギコなの?
512デフォルトの名無しさん:01/11/08 23:40
どんも。IMEの郵便番号辞書つかって
郵便番号->住所の変換をやりたいんですけど
ImmGetConversionListの使い方おしえてください。
変換の一覧が欲しいのです。
DelphiMLのサンプルじゃ動かんし。
自分でもやったけど、わけ・わか・らん。

ちなみに WinNT4+Delphi5+IME97です。
513474:01/11/08 23:51
>>504
もちろんオンラインで見れるけども、それはVSのMSDNを見るのに比べ著しく
動作が遅く、非効率ではないだろうかってことだったんですが。まぁ回線切らずにお勉強サイト
逝ってきます
514>512:01/11/08 23:59
変換候補はImmGetCandidateListですが。
515Delフサギコ:01/11/08 23:59
     ∧,,∧   /おぉ!>>499-500
    ミ,,゚Д゚彡< 期待していいでしょうか!
   'ミ つ旦)~~ \ わかりやすいから英語でもOKのトコ多いですが
  ⊂ミ",, ,,ミ つ    細かいオプションはやぱり日本語がいいですよね。

>>498
スマソ、わかりませんん。MLのログみたら解決に近ずく方法はあるかも

>>511
>>84-90みてね。
ジ…自爆したかなあ....名無しさん#さんにはお世話になってます。

C#スレみたけど、Gridにオーナードローってないのかな。

命名則はフィールドにFつけるくらいかな。

>>512
それって何か市販のコンポーネントがあった希ガスる。
大昔Delマガに広告載ってなかったかな。
MLのサンプルってせめてURL出して聞こう!
ImmGetConversionListは読み方やな。
517Delフサギコ:01/11/09 00:05
   ∧.,,∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ.,,゚Д゚彡<  あったあった。
  ミ つ目(ミ . \_______________
〜ミ,,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".

ハイルスバーグ
みたいだよ。
520Delフサギコ:01/11/09 00:57
  _____
 /......  .. .../
 ||:::   ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 | ̄\.ミ*゚ー゚ミ< なななななななななななな
 |   |: ̄U' U ̄:|\__________
 |   |:      :|
 |   |   ∧,,∧:|  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 |   \ ミ,,゚Д゚彡< なななななななななな
 |     |: ̄U' U ̄:| \__________
 |     |:      :|
521512:01/11/09 01:02
即レス多謝
>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なのよねぇ?
どうしたらいいんでしょうか?
52228:01/11/09 01:29
ファンです。フサギコさんがんばれ!
523Delフサギコ:01/11/09 01:49
    ∧ ∧  ア...アリガトゴザイマス>>521
    ミ ゚Д゚彡
  〜ミ,,,,uuミ   でも、何をがんばりましょう・・・・?


>残念ながらコンポーネント案はだめなのよ。
なぜでしょう。
自前で出来るにこした事はないと思いますが。
524518:01/11/09 02:45

>>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)"
これをアンインストールしたらぞろぞろと今までのが表示される様になりました。
525518:01/11/09 02:47
上の訂正

iアプリ作成用にNTTより配布されている
もとい
iアプリ作成用にNTTドコモより配布されている
です
526デフォルトの名無しさん:01/11/09 03:31
( ゚д゚) ( ゚д゚) ( ゚д゚)
てっきり「ExePress」というインストーラー作成ソフトで
「アプリケーションの追加と削除」に登録しない方法を
聞きたいのかとオモターヨ。
>>521
http://plaza27.mbn.or.jp/~satomii/design/imm/imm7.html
を見ると、いつでも使えるAPIではないようです。
529518:01/11/09 04:03

読み返してみれば・・・なるほど
書き方が悪かったようです
530518:01/11/09 04:10

ちなみに他のインストーラでも同様の影響が出る事が
あるようです。ご注意を
531ななし:01/11/09 08:40
インラインアセンブラって、どんなときにつかうのですか?
>>496
フォームのScaledをfalseにして、
フォームのFontのHeightを正の値にしてみたり。
533デフォルトの名無しさん:01/11/09 09:01
>>531
その1・Pascalで書くと遅いのでもっと高速化してみたいとき(出来るとは限らない)
その2・特殊な命令(cpuidとか)を実行したいとき
その3・アセンブラを使えと強要されたとき
534512:01/11/09 14:45
>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だと、ブラウザで入力された値が取れないよー。
536535:01/11/09 15:59
違ってた、Request->ContentFields->Textの値がおかしー。

なんか、行末がCRLFになるべきところが、CRCRLFになったりする?
537Delフサギコ:01/11/09 16:05
 ∩ ∩
 ミ ゙''゙〜
 ミ∧,,∧  / CGIはわからないですが
 ミ,,゚Д゚彡 < 改行コードを普通にするのはAdjustLineText
 U U   \________
       
538535:01/11/09 16:08
ギコちゃんアリガトウ。それ使ってみるYO!

事実の方も誰かから聞きたいな...
539535:01/11/09 17:37
また違ってた!
Request->ContentFields->Text
が途中で切れてるんだけど、Apacheって制限があるんだね。
識者解説キボン。
540462:01/11/09 17:39
AdjustLineTextをF1で検索しても見つからない。
なんでこんなにマニュアルの出来がわるいの?
541535:01/11/09 17:41
それは自分はわかったYO!>>540

AdjustLineBreaksだ!
542Delフサギコ:01/11/09 18:00
   _____
 /:\._____\  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 |: ̄\ ミ,,゚Д゚ミ  < ごめん、まちがえてた
 |:   :|: ̄U U ̄:|  \_________

 .______
 |:  :\.    \   隠れろ
 |:   :|: ̄U U ̄:|
>>542
フサ君や、手がはみ出ておるぞ。
544452:01/11/09 22:00
>>460
>>464
できました。
constructor, destructor は
ここでも使えるのですね。
>>534
ヒドイ。
とりあえずループの中は
 ListBox1.Items.Add(PChar(Integer(lpCand) + C[I]));
だけでOK。
547デフォルトの名無しさん:01/11/10 06:11
ユニコード対応コントロールってどういうコントロールなのですか?
548Delフサギコ:01/11/10 14:51
         _________
  ∧,,∧   /
 ミ;゚Д゚彡< >>54 どういうっていわれても困るけど
  ミつ つ  \
〜ミ ,, ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∪∪  
CLXのEditコントロールはFontのCharaSetをUniにできます。
Editの中に♥マークが表示できるね(IEからコピペしたりしたら)
549512:01/11/10 22:30
>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
553Delフサギコ:01/11/11 00:03
  ,,,,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,,,,ミ,,゚Д゚彡 <  EM_LINESCROLLじゃない?
  UU"""" U U    \_______________
554Delフサギコ:01/11/11 00:09
  ,,,,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,,,,ミ,,゚Д゚彡 < ここみるよし>>550
  UU"""" U U    \_______________

http://homepage2.nifty.com/boheme/delphi/tips/tec0280.htm
http://homepage2.nifty.com/boheme/delphi/tips/tec0300.htm
555550:01/11/11 00:38
あああ
EM_LINESCROLL どうりでうまくいかないと思っていたら、
メッセージの第一引数にスクロール量を
指定していました(;´Д`)

逝ってきます
556Delフサギコ:01/11/11 00:46
  ,,,,,,,,,,,,,,,,∧,,∧   /
〜′,,,,,,,,,,ミ,,゚Д゚彡 < APIヘルプEM_LINESCROLL みても
  UU"""" U U    \Lパラ Wパラ の意味はわかるニャリ
 カンチガイ ノ リョウガ ケイケン ニナルカモ
557デフォルトの名無しさん:01/11/11 01:09
あの、ついでに聞きいちゃいます。
キャレットが移動された事を知りたいのですが、

EM_CaretMoved

みたいなメッセージはありませんか?
558デフォルトの名無しさん:01/11/11 01:37
>>531
>>533

Delphi のインラインアセンブラの話なら
ここと
http://pc.2ch.net/test/read.cgi/tech/1002267809/212

ML の次のスレッドをよく読むよろし。
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=049229
559デフォルトの名無しさん:01/11/11 01:38
アタシlParam。あの小さかったwParam君が久しぶりに会ったらアタシと長さになってたわ。
560Delフサギコ:01/11/11 02:05
    ネムイ    ∫    _________
   ∧,,∧     ∬   / マウスとキーボードの入力で
   ミ-Д-彡っ━~  <  SelStartの位置を監視するとよし
_と~,,  ~,,,ノ_.  ∀   \ >>557
    ミ,,,,/~), │ ┷┳━   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ .じ'J ̄ ̄| ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄  ┻
アタシと長さ?
562Delフサギコ:01/11/11 02:17
  ∧,,∧,,,,,,,,,,,,,,,      / ̄
 ミ-Д-彡,,,,,,,,,,,,ヾ〜  <  RichEditならOnSelectionChangeがあるようです
   U U """"UU     \_
procedure TCustomRichEdit.CNNotify(var Message: TWMNotify);

 EN_SELCHANGEを監視してるのですね。

 なんでTMemoにはないんかな。
563デフォルトの名無しさん:01/11/11 02:23
まる〜(*´ρ`*)
564557:01/11/11 11:38
どうもありがとう。とりあえず解決しました。

そして…
目的の行を表示させるのは良いのですが、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 );
565Delフサギコ:01/11/11 16:18

  ,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,ミ,,゚Д゚彡 < 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
吉祥寺にある大検・大学受験予備校の中央高等学院
ここは、完全に狂ってる。
授業料は一年分一括前払いなので、
金が入れば、生徒は要らない
金を振り込んだら、何とかその生徒を辞めさせようと
講師どもが、あの手、この手でイヤガラセをしてきますね。
セクハラはもちろん、脈絡の無い罵倒は日常茶飯だね。
酒臭い講師もいるし・・・ 人生の最果て中央高等学院

http://chs-f.com/index.html 福岡校
学歴詐称 経歴詐称 デタラメ授業
http://www.chuo-school.ac/ 東京本校
OnCloseQueryを使う
571デフォルトの名無しさん:01/11/11 22:12
Delphiには抽象的な多分木クラスとかってありませんか?
ツリービューのビューがないヤツ、みたいな。
572デフォルトの名無しさん:01/11/11 22:16
>>571
TComponent がそれ。
573デフォルトの名無しさん:01/11/11 23:49
>>571

自作するとか。

そのレコード自身のポインタを管理するTListとかもって。

っていうかTTreeNodeは?
574571:01/11/12 00:09
結局多分木は必要なくなってしまった。
けど参考になりました。ありがとう。
575ねこま:01/11/12 00:23
>>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でやるのが無難。
582Delフサギコ:01/11/12 09:09
>>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)を拾って消すのは?
585584:01/11/12 15:04
訂正、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に四角を書こうとしたのですが、ダメでした。
(へんな色が表示される。)
難しいです。
ずーっと前からこの板でパレットについて聞いてる人?
590587:01/11/12 16:30
適当に答えたかも。。。

よく知らないけど
CreateCompatibleDC(Null) でコンテキストを作って、
SelectObject でBitmapと関連付け、
GetDIBColorTable で読めるらしいです。
591199:01/11/12 16:37
>>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;
594591:01/11/12 17:48
>>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色の絵になりますけど。はじめから

そんな事はありません。単にハーフトーンパレットになるだけです。
597Delフサギコ:01/11/12 18:23
    ∬   ∧,,∧      / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ~━っミ ゚Д゚彡,,    <  >>583 がんばる。
    ∀._(,,,~  ,,,~⊃_   \____________________
━┳┷ |. ,(~ヽ,,,ミ.
  ┃...| ̄ ̄し'J.  ̄ ̄ ̄  パレットはわからなー
  ┻ ヽ ̄ ̄ ̄ ̄ ̄ ̄ ̄
598591:01/11/12 18:52
>>596
>そんな事はありません。単にハーフトーンパレットになるだけです。

パレットの話ではない、ということを言いたかったんですよね。

フルカラーで実行してハーフトーンパレットになる理由はなに?
DDB→DIB変換のVCLの実装についてのおはなしですか?
そもそも256色であることに相違ないとおもいますが。
>はずしていたらごめんなさい.

この免罪符嫌い
600596:01/11/12 19:10
>>598
591 で「たんに256色以下の色数を使えば…」と書いてあることから
24bit画像に256色以内の色数を使って描画すれば、8bitに減色したときに
理想的な減色が行われると言っているように思えたんだが違うのか?

実際はハーフトーンパレットを使って適当に減色が行われる。
601Delフサギコ:01/11/12 19:11
   |
電 |
   |∧,,∧
柱 ミ,,゚Д゚彡 <はずしたらゆるさねー
  ⊂ ミ   と書いてみてはDO?
   |, ,,ミ
   |∪    そういえば、昔PC98Doって機種があって....
, ' , ; ' ;  98と88のソフトが動いただよ。
602Delフサギコ:01/11/12 19:22
気が付いたら、BorCon明日明後日なのですが

なぜになんも話題にならないの?

 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
   ∧,,∧    ウラグチ カラ ハイリタイ
  ミ,,゚Д゚彡∬
   〃  つ旦O
 〜ミ,,,n,,n[ ̄ ̄ ̄.]
        ̄ ̄ ̄
603591:01/11/12 19:28
>>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行くような人はここにはいないのでは
オレモナー
>>604
ヤメレ
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に当り散らしてるし。
>>611
初心者スレはそうでもないよ。
613Delフサギコ:01/11/13 00:24
  ∧,,∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡 < リアルワールド(米)で飛行機が墜落して大変だ。
  ,;゙  ミ     \_____________
 ミ.  ミ
/゛゛゛゛
>>605 V33でしたっけ?
>>603
MSの減色だって(ピー)でしょう
>>613
V33AはDo+
samplesタブにあるShellTreeViewを使うとメモリリークするのは、
おいらのDelphi6が逝ってるからなのだろうか。
鬱だ
617デフォルトの名無しさん:01/11/13 05:53
WinGのサンプル(牛だったとおもう)は奇麗な減色だったような気がします。
はずしていたらごめんなさい。
618>616:01/11/13 09:04
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;
624591:01/11/13 11:46
>>620

>DataImage.Picture.Bitmap.PixelFormat := pf8bit;
>というのをすると、BMPが変な色になります。
>コメントアウトすれば普通に表示されます。
>フルカラーのBMPでなるのなら分かるのですが、
>256色のBMPでもなってしまいます。

596 が教えてくれたところによると、TBitmap では256色でも
そうなるみたいです。まったく、いい加減ですね。

>256色の固定パレット(もちろん編集は可能)を用意して、
>そのパレットを使うBMPを複数枚書くのを目的としています。

そこで、上記のことをするためには、まず TBitmap のインスタンス
を作って初期化し PixelFormat := pf8bit; に設定してから
こちらで任意の256色の論理パレットを作成して、それに設定する。
そして、そのパレットから色を選んで描画する。ということでは
どうでしょうか?

うーむ、試してみたいが時間がないのでごめん。
625591:01/11/13 12:08
>>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
マジですか!早速再起動することにします。
本当に基本のようなことが分かっていなくて申し訳ないです。
ありがとうございました。

現在皆さんから教えていただいたことを参考にいろいろ試しています。
ありがとうございます。
627596:01/11/13 12:45
>>626
念のため言っておくけど、>>625の内容は嘘です。
再起動してもどうにもならないでしょう。

>>625
知識も無いのに適当な事言っているんじゃねーよ。
628625:01/11/13 12:49
>>627

>>>625
>知識も無いのに適当な事言っているんじゃねーよ。

おい、おい、その言い草はないだろう。
自分の環境で試した結果だけど、なぜ嘘だと決めつける?
629デフォルトの名無しさん:01/11/13 13:24
>>627
えっ!嘘なの!本当なの?でもどっちにしろ良くないことには違いないので
再起動しました。状況は変わってないですけど・・・。
630625:01/11/13 13:54
ハイカラー(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を行ったり来たりするとややこしいことになるよね
632Delフサギコ:01/11/13 15:18
   ∧,,∧∩  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡 < 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)をサポートします。
637test:01/11/13 21:52
test
638デフォルトの名無しさん:01/11/13 22:12
すいません、どなたか教えてください。

TListViewで、項目が長すぎて途切れて表示されているとき、
ツールチップみたいな表示でポップアップして表示したいん
ですが、どうやったらいいのでしょうか?
640デフォルトの名無しさん:01/11/13 23:30
Kylix2/JBuilder6/Borland Enterprise Server同時発表か・・・
すごすぎ!
JBuilderは少し早すぎるな・・・JDK1.4対応してるかな?
641 :01/11/13 23:30
>>640
JBuilderってJDK選ばないことで有名じゃなかったか?
>>641
Personalでマウススクロールして欲しいのよ。標準で。
そのほうが初心者受けいいでしょ。
643 :01/11/14 00:46
>>642

ってことはあなたは初心者?
644デフォルトの名無しさん:01/11/14 00:54
MBCSはウニコードじゃないでしょう。
645 :01/11/14 00:56
〜W系のAPI呼んだら?
MBCSってなんすか?
>646
ハァ?
Managed Business Consultancy Service
Member British Computer Society
Meteor Burst Communications System
UTF-8
650625:01/11/14 04:13
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;

任意の色を設定してもカラーテーブルのどれかの色に
マッチングされるのが分かる。
651625:01/11/14 04:14
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;

やはり任意の色指定でもグレースケールにマッチングされるのが
分かる。
652625:01/11/14 04:15
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;
653625:01/11/14 04:16
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;

やはり任意の色指定でもカラーテーブルのいずれかの色にマッチング
されるのが分かる。
654635:01/11/14 06:58
>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
656625:01/11/14 10:24
色の操作と解析では、以下のサイトが非常に役に立つ

http://www.efg2.com/Lab/
657625:01/11/14 12:08
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;
658625:01/11/14 12:15
訂正です

657 で

NumPalEntry := GetPaletteEntries(Picture.Bitmap.Palette,0,255,PE);

のところの 255 を 256 にしてください。
659635:01/11/14 13:45
>>655
馬鹿ストレートに聞き返しちゃってすいません
レスありがとうございます
660デフォルトの名無しさん:01/11/14 14:32
Nという形をした部品があって、ある法則にしたがって結合していくと
Nの集合が、またNと同じような形になって…

というフラクタルはありませんか。いちばん簡単なのは単なる
三角形や四角形だと思うけど…
ジュリア集合やマンデルブロの方がプログラムは簡単>>660
662デフォルトの名無しさん:01/11/14 14:59
>>661
でも>>660の条件に当てはまるかどうかは微妙。
つか完全には自己相似してないんじゃないか?
(拡大すると似たような形はでてくるが)
数学板で聞いたら?>>660
いや、完全な自己相似は無限の大きさが無い限り無理ですよ

コッホ曲線 シェルピンスキー なんかで検索するといいでしょう

例:
http://www.tennoji-h.oku.ed.jp/tennoji/suriken/SURIKEN.HTM
664( ´∀`):01/11/14 15:45
ちょっとおもろいプログラム作ってみたのん。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1005720042&res=1
数列を第6項まで入力すると、第20項までを予測する。
例えば
1 2 3 4 5 6
と入力すると、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
と表示する。

いまのところ、等差、階差、等比数列に対応。
うまくやれば、階比(?)数列にも対応できると思うのよ。
だけど、なぜか公比 -1 の数列は対処できない…
( ´∀`)ダレカカイゾウシナイカナ
665Delフサギコ:01/11/14 16:14
  ,,,,,,,,,,,,,∧,,∧   / ̄
〜′,,,,,,,ミ,,゚Д゚彡 < シェルピンシェルピン
  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!
668Delフサギコ:01/11/14 16:52
         _________
  ∧,,∧   /
 ミ;゚Д゚彡< >>667だって、買ったんだモン
  ミつ つ  \
〜ミ ,, ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∪∪  
669Delフサギコ:01/11/14 16:54
       ∧,,∧
     ミ,,゚Д゚彡
     ミ⊃  つ
     〜ミ ⌒ )
        し'´`J
インターシモソさん、おなかをひじ掛けにするのは、チョットどうかと思うの。
http://www.watch.impress.co.jp/pc/docs/article/20011113/bor02.jpg
るろ〜氏と、どっちが………

http://www.watch.impress.co.jp/pc/docs/article/20011113/borland.htm
> 午前10時からの基調講演には、約600名の受講者が参加した。
誰だよ、人少ないとか炒ってたのは!!
というかサクラですか?サクラですか?サクラタンエロ画像キボンですか!?

サクラでも、エロ画像でもいいから、猫も裏口から入れてホシカタ
首に鎖つけるから、ペットとして持ち込んで呉れ


ボーランド、J2EE対応の開発ツールとアプリサーバーを発表
http://biztech.nikkeibp.co.jp/wcs/show/leaf?CID=onair/biztech/comp/154335

ボーランド、『JBuilder 6』『Kylix 2』など次期主力製品群を一斉発表
http://biz.ascii24.com/biz/news/article/2001/11/13/631228-000.html

すべてのプラットフォームを標準技術で統合するボーランド
http://www.zdnet.co.jp/enterprise/0111/13/01111305.html


   .∧,,∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
@'"ミ,,゚Д゚ミ < Delフサの某ランド、ちょっと一言コラム
 UU''UU   \___________
http://www.borland.co.jp/about/column/column01.html
http://www.borland.co.jp/about/column/column02.html
http://www.borland.co.jp/about/column/
http://biz.ascii24.com/biz/news/article/2001/11/13/imageview/images668564.jpg.html
シャチョさん、どんどん太ってないですか。
おいしいもの食べ過ぎてないのですか?
売上増でウハウハで、毎晩毎晩オネーチャンはべらしてませんか?
670Delチビフサ:01/11/14 17:19
    ∧,,∧     / ̄ ̄ ̄ ̄ ̄
   ミ    ミ <  Delフサ
   ミ    つ   \_____
   ミ @ ミ
   '∪'''∪'

ピキューン      +  / ̄ ̄ ̄ ̄ ̄
 +   ∧,,∧    <  毒舌
   ミ,・∀・,ミ     \_____
((  ⊂ .  つ   ))
 +  ミ   ミ  
    ''とノ''  +

キュピィィィン   +   / ̄ ̄ ̄ ̄ ̄
     ∧,,∧   < 死刑
    ミ,,・∀・ミ .  \_____
    ミ  つ つ ))
 +   ミ ⊂.ミ
     ''∪''''
671Delフサギコ:01/11/14 17:20
   Λ,,Λ∩  / ̄ ̄ ̄ ̄ ̄
  頒゚Д゚;彡< エェエエ!
    ,;゙⊃,ジ   \_____
 〜ミ ,,○
    ∪   


        ∧,,∧
       ミ・∀・,,ミ ウマ!ハチレー!
      ∧∧⊂,, ミ
 ゴラァ  ミ゚Д゚;彡∪''''ヽ〜
      ∪∪'''''''''''UU

                ネタでした
                ということにしておこう。。。
会議っつーか,製品発表会だよな
おぜぜ \65,000 也ですか…… (゚Д゚)ウマー
673某困:01/11/14 21:02
DelフサはBorCon逝かなかったのか・・・

正直BorCon高い。
今日の最後のセッション1.5hみっちり宣伝だったし(w
674デフォルトの名無しさん:01/11/14 21:09
つか、BorConて何ですか。ボコンて。
675デフォルトの名無しさん:01/11/14 21:32
676某管:01/11/14 22:20
小一時間ほど自問自答してみたが
BorConは某管でOK?
677Delフサギコ:01/11/14 22:37
    ∧ ∧  ・・・・。
    ミ ゚Д゚彡
  〜ミ,,,,uuミ  で、KylixのC++版の名前は?
678某管:01/11/14 22:43
>>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です。

よろしくお願いします。
681625:01/11/15 13:09
>>679

追伸です。657 でやっていることは Graphics.pas にある
CopyPalette() 関数を使うと簡単にパレットを同等にできます。
もし、ソースを参照できるようでしたら、この関数の実装コード
は参考になりますので見ることをお薦めします。

しかし、元質問のようにパレットを自前で用意したり、編集可能に
したり、表示したりするには、地道にパレットエントリを取得して
おかなければなりません。
>>680 FireBirdって何?
683デフォルトの名無しさん:01/11/15 16:27
「「Delphi .NETを提供する」,米Borlandの副社長が語る」
ちょっとショックです。
http://itpro.nikkeibp.co.jp/free/NSW/NEWS/20011115/2/
684680:01/11/15 17:24
>>682
http://firebird.sourceforge.net/
本当のところはよくわかりませんが無料で使えるDBMSで、
INTERBASEと基本的には同じようなものです。きっと。
DelphiのIBXで接続できますし。
>>684で思い出した。
NetscapeとMozillaの関係みたいなものだ。

本題のほうはわからないのだが。すまそ。
686Delフサギコ:01/11/15 18:59

  ,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,ミ,,゚Д゚彡 < >>685 俺もどこかで聞いたな。
  UU""" U U   \_______________
InterBaseのオプソ版が火の鳥なんでしょうか?

>>683
めっさ気体!
インターシモソ輻射長…伊達に太ってないな。ウンウン
687Delフサギコ:01/11/15 19:18
         _________
  ∧,,∧   /
 ミ;゚Д゚彡< なななんか、今確認したらDelphiMLが
  ミつ つ  \信者獲得大作戦みたいになってる…
〜ミ ,, ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∪∪  

D6ならTryStrToIntを使うべきでは?>>VBのInNumeric
信者って何の信者?(w
中村教。
過去ログ教。
691Delフサギコ:01/11/15 20:53
|
|,,∧
|Д゚彡 ジー   (す)ギタンからメール届いたYO
⊂ミ
| ミ

http://www.borland.co.jp/borcon2001/report/

|
|、  サッ
|彡彡   >>690 信者は一人?
|
|
|
692kala:01/11/15 21:40
数年前に拾って来た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;
697695:01/11/15 23:52
しかし、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;
700699:01/11/16 00:00
>>698 あ、そっか
成る程、大変参考になりました。
702kala:01/11/16 00:42
>>693
なるほど。データベース関連など省かれている機能があるわけね。
腐ってもProfessionalてなわけか。
まあ使うかは分からないけど取っておくとしよう。
Delphi6 Enterpriseが見つかるまで(お

※一部フィクションです。
盗品を使っているうちは二流。
ある程度は移行できるのでは?
705Delフサギコ:01/11/16 09:24
   ∧,,∧   / ̄
@,,,ミ,,゚Д゚彡 < >>697 ナイス
⊂,,,,,,,,,つつ.   \_

>>703
3流かも
706Delフサギコ:01/11/16 10:24
失言だったかな。
  ∧,,∧    /せっかくなのでジョウホウ
  ミ;゚Д゚彡 <  D4からPro版以上にはコードエクスプロラ
  ,;゙  ミ     \ つーのがついてまして、
 ミ.  ミ       簡単便利にコーヂング可能になります。
/゛゛゛゛    
また、"定義の検索"機能であるコードナビゲーションも
かなり便利。(これもPro版だったよね)

おかげで
Pro版じゃないと生きていけない体になってしまいました。
707Delフサギコ:01/11/16 16:14
   ∧,,∧∩  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡 < 保守!
  (ミ  ミ   \____________
 〜ミ  ミ
   ∪''∪

ギコBASIC拡張計画
http://pc.2ch.net/test/read.cgi/prog/961558082/
http://www.geocities.co.jp/SiliconValley-Oakland/8522/data/gikob064.lzh
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
>>710
なに考えてるんだ?
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でも使用したいのですが、どうすればいいでしょうか
718713:01/11/17 13:52
>>716
レス感謝です。
とりあえず、参考にしながらザクっと一回組んでみます。
719Delフサギコ:01/11/17 16:46
http://homepage1.nifty.com/wizman/component/coolaction/index.html

     ∧,,∧   / ̄ ̄ ̄ ̄ ̄
     ミ,,゚Д゚彡< >>717 これ使うといいんじゃない?
     ./つ=||||  \_____
   〜ミ \_/
720ure:01/11/17 19:42
他のスレでも書いたのですが。

http://www.delphi-jedi.org/DelphiGraphics/jedi-index.htm
ここのDirectShowの動画キャプチャのサンプル(TCapture)が動かないんです。
これが使えれば自分好みの「TVを見るプログラム」が作れるなと。
DirectShowだとwmvで録画も出来そうだしさ。
Delphi6でやってます。どなたか動作した方いらっしゃいますか?

http://www.delphi-jedi.org/ってなんかすごぞう
Indyもここのサブプロジェクトみたいだし。
721茶碗:01/11/17 19:50
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はなに?
723茶碗:01/11/17 20:47
>>722
ありがとうございます。
OSはWinMeです。
かなり面倒なのでしょうか。
今からGoogleで検索してみます。
参考になる所をご存知でしたら教えてください。
>723
基本的には、CreateFileMapping(INVALID_HANDLE_VALUE,...
で共有メモリを作って、SendMessageで渡す構造体は(文字バッファも)
共有メモリ上において置くってかんじかなあ。
725茶碗:01/11/17 21:51
>>723
ありがとうございます。
難しいですね。むーん
726デフォルトの名無しさん:01/11/17 22:54
>>720
いつの日か,日本にも Jedi のような真の Delphi User Group が育つ日を夢みつ…
>>710
セクタ直接書き込みとかできないの?
728ure:01/11/18 03:07
720のやつ誰かやってみてください。
自分好みのテレビソフト作りたくない?
729デフォルトの名無しさん:01/11/18 04:50
>>719
どうもありがとうございます
これでコンボボックスの切り取り貼り付けも出来そうです。
>728
作りたくない。
ソースが付いているのよね?
なら、デバッグ可能でな?
731ure:01/11/18 16:32
>730
ソース追いかけるとCPUウインドとかに入ってAccessViolationする。
俺の環境が悪いのかなとおもってどうなのかなって。
732デフォルトの名無しさん:01/11/18 17:04
Delphi6personalでシューティングゲームをつくりたいんですけどキャラクターを
たくさんだしたり消したりってどうすればできるんでしょうか?

TImageを実行中につくれればできるのかな、と素人考えしています。
1、キャラクターのデータをリストで複数持っておく
2、リストしたキャラクターの数分だけ、画面に描画
でOK。
実際には、データは構造体でもクラスでもいいし、リストは動的配列でもTListでもいい。
描画は、あらかじめ設計時にTImageに貼り付けておいた画像から転送してもいいし、
もちろん、実行時にTImageに読み込んで転送してもいい。

さらにゲームよりの話ならこちらの方がいいかも↓
http://game.2ch.net/test/read.cgi/gamedev/1005038203/
734デフォルトの名無しさん:01/11/18 18:34
>>733
なんとなくイメージがわいてきました。
ありがとうございます。

そっちの板だと板違いカエレとかいわれそうでしたので……。
別にここだっていいんじゃねーの?
736Delフサギコ:01/11/18 18:37
         _________
  ∧,,∧   / Delphiソース文字列からコメントを削除する関数つくったけど
 ミ,,゚Д゚彡<  どうも、リファクタリングがうまくいかないので
  ミつ つ  \ もっとエレガントに書けないものかな?
〜ミ  ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  U U
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1006076016

>>734
いいんじゃないっすか。ブロック崩しスレも結構面白いし。
フサも学びたいっす。
>>736
複数行にまたがるコメントのこと,考えた?
738Delフサギコ:01/11/18 18:48
  ∧,,∧     /
 ミ,,゚Д゚彡  < テストコード見てよ>>737
  U  U    \
〜ミ  ミ
  ∪∪
739Delフサギコ: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でも十分可能ですか? 可能ならさっそく買いたいと思ってます。 ちにみにプログラム経験ゼロです(汗
742740:01/11/18 19:12
つーかテストコード穴あるじゃん(´д`;)
文字列も消してしまうものにしてしまった。すり抜けてる。
>>741
熱意があれば十分
744Delフサギコ:01/11/18 19:15

  ,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,ミ,,゚Д゚彡 < >>742ん??
  UU""" U U   \_______________
Preタグで投稿すると改行がコピーできない...
745740:01/11/18 19:22
修正して書いたよ。
746740:01/11/18 19:23
>>744
あら、preがチェック入ってたのに気づかなかった。すまん
747下手人:01/11/18 19:29
>>744
誰か良案授けてくださぃ

preあり:SPACEとかTAB対応
preなし:改行対応

特にTAB
748Delフサギコ:01/11/18 19:34
  ,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,ミ,,゚Д゚彡 < >>745、センキューセンキューセンキュスコ!
  UU""" U U   \_______________
コード書くのお早いですね〜

>>747
意味がちょっとわかんないです。
コピペしたらそのまま動作するのがいいな。
AAも綺麗に表示されるともっといいな
749名無しの初心者:01/11/18 19:43
熱意は十分あります! というわけで買ってきます、Delphi6Pro。 一緒に買った方が良い本は何が良いですか?
750740:01/11/18 20:07
>>748
test firstでやってるとテストを通れば完成なので、コード書くのは速くなる。

そのかわりテストをきちんと書かないと今回みたいな羽目になるので
仕様をきっちりtestできるようにしないとね。

ほかにも(テストしていない)曖昧な仕様としては
閉じていないコメントを残すのか消すのかってのがあるね。
とりあえず消すほうで書いたけど、あくまでも未定義動作だな。
テストを書いて明文化したいね。
751デフォルトの名無しさん:01/11/18 20:33
ウィンドウを常に再背面にする命令はありませんか。
SetWindowPos( Handle, HWND_TOPMOST , 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE );
のちょうど逆のような。
>>751
HWND_BOTTOM
753デフォルトの名無しさん:01/11/18 22:54
それって、実行したときしかBOTTOMにならないでしょ。
たとえウィンドウがアクティブになっても
BOTTOMでいてほしいのです
>>753
アクチブになる時にBOTTOMにすればいいじゃん
755デフォルトの名無しさん:01/11/19 00:01
WinInet使って2chのスレに書き込むにはどうすれば
いいんでしょうか?Indyとかのコンポーネントは使わないで。
Monazilla見たんですが、WinInet使った方法は書いてないみたいです。

Delphi4 pro + Win2k
756755:01/11/19 00:18
なんとなく、

/bbs.cgi? の後ろにbbs= &key= みたいにくっつけたアドレスを送ればいいんでしょうか?
スレ違い
>>731
AV出る前からトレース。
759ure:01/11/19 01:37
>758
追い詰めたんだけどわかんないよー
追いつめたコードをここに載せて!
761ure:01/11/19 02:21
DXCapture.pasの710行目
710: if FWantPreview then begin
711: BuildPreviewGraph;
712: StartPreview;
713: end;
FWantPreviewを読むところでCPUウインドに入ってしばらくすすむと
「同時に複数の例外が発生しました」でとまる。
710行以上711行未満でエラーなの?
FWantPreviewは Boolean型のフィールドだから、、、

ん〜、エクスプローラーから実行したらどぉなるの?
763ure:01/11/19 04:14
>762
なにも起こらずにプログラム終了。
エラーダイアログもでない。
>>761のDirectShow系のDLLなんかが古いってオチじゃねぇだろうな
>>751
>ウィンドウを常に再背面にする命令はありませんか。

http://nt.sakura.ne.jp/~miwaki/progtips/wndpos/alwaysbackground.shtml

Delphi でもテスト済みです。
>>749
遊びのレシピ
767ure:01/11/19 16:46
>764
DirectX8を入れた2000とXPでやったけど同じとこで駄目。
768デフォルトの名無しさん:01/11/19 17:28
DirectX8.1 のアップデートをした XP で、無事にサンプル動きました。
カメラは Logitech/Logicool QUickCAM-express.

プログラムを IDE から動かすと、4-5 回 Break がかかるけど無視して先に進めば
動き出すよ。
769ure:01/11/19 17:57
>768
www.microsoft.com/japan/directx/
DirectX 8.1 は Windows XP に含まれていますので、
Windows XP のユーザーは DirectX 8.1
をダウンロードする必要はありません。

ってかいてあるけども?
すまん。家の W2K と間違えた...
きにせんといてくれ。
WMPのバージョンとか
772Delフサギコ:01/11/19 20:18
>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 のテキストが全て異なる
文字セットで記録されています。これを一括変換したいのですが、
どのようなアルゴリズムで変換できますか?
774OK:01/11/20 01:41
>>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;
775つづき:01/11/20 01:42
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 は「引数が整数表現かどうかを判定する関数」
でいいんですよね。
777ure:01/11/20 02:37
おれのハードかドライバが駄目なのかな。
www.kuroutoshikou.com/products/tvcuner/bt878a.html

でもプログラムがとまるところはdirectxに関係なさそう
なんだよね。。。
>777
プログラムが止まる所より前で問題が発生しているのでしょう。


どこまでわかるか不明だが、
エクスプローラーから実行時、ファイルにログを書きながら、どこまで実行されたか調べるとか。
ソースをコメントアウトしていくとか。

あと、DirectXに自己チェックツールついていませんでしたか?
>>777
乗りかかった船。

画像アップ版の存在は知っているよね?
ソースを「追わないで」IDE の中から Run して落ちた時の
画面コピーとかどこかにアップできませんか?
CPU ペーンの状態をみてみたい。
あと,Call Stack / 呼び出し履歴も。

チェック OS は W2K を希望。
780ure:01/11/20 05:11
>>778,779
ありがとう。
とりあえずキャプチャした。

ソースを「追わないで」IDE の中から Run して落ちた時
http://ure.s5.xrea.com/capture/accessviolation.png

そのときの呼び出し履歴とスレッド
http://ure.s5.xrea.com/capture/yobidashithread.png

ちなみにamcap.exeというdirectxのサンプルは正常に動きます。
>>780
Windows Media Playerのバージョンは?
>>780
0000 で 0000 の Read エラーか。予想しているより追いづらいエラーですね。

この状態で,CPU ペーンをアドレス 77F8F45C に移動するとどうなるか。

それと,ソースが全部あるのだからを
- コンパイラ - コード生成 - スタックフレームの作成
- デバッグ - デバッグ版 DCU を使う
を有効にしてもう一度。
783ure:01/11/20 15:03
メディアプレイヤーは7.01.00.3055だって。最新です。
784ure:01/11/20 15:28
77F8F45C に移動した図。
http://ure.s5.xrea.com/capture/77F8F45C.png

スタックフレームとデバッグDCUをONにした図。
http://ure.s5.xrea.com/capture/debug.png
このばあいも0000の位置だったから77F8F45Cに移動しました。
785デフォルトの名無しさん:01/11/20 15:32
凸包を求めるプログラムを作ったのですが、
点の数が多くなると誤った答えが出てしまいます。
たすけてください。

ソースは以下の場所に置きました。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1006237724&rm=100

テスト用ソースもつけてあります。
私のプログラムでは点が 400 個を超えたあたりから
誤った解答が多く見られるようになるのです。
どうすれば改善できるでしょうか。

おねがいです。


凸包とは、以下の条件を満たす多角形の事です。

前提: 平面上にn個の点がある

条件:
1.全ての点が内側に存在する(「内側」には多角形の境界上を含む)
2.頂点には必ず点が存在する(つまり、点を結んでできる多角形)
3.凸型多角形である

これはつまり、板に打ちつけた釘の集合に輪ゴムを巻きつけたときにできる形です。
>>784
あぁ。デバッグ情報こみこみで、呼び出し履歴を見たい。

見ればわかると思うけど、ECX の値に間接ジャンプしているだが、ECX が0.
どこかで、関数ポインタに NIL/NULL/0 の値が入っていて、それをチェックしていないのだ。
違うなぁ。構造化例外処理のコードの断片だ。
RtlUnwind に関連した内部コードだな。
次にダンプするときには、スタックペーンのもう少し上のほうまで見せて
カレントスタックポイントを表す緑矢印が画面の一番下になるところまで
スクロール。

...あまりアセンブラデバッグしたこと無いでしょ > ure
ま、これも経験ということで。


落ちているアドレスはあまりよくないところなので、原因解明の
期待はあまり持たないでください。
789ure:01/11/20 17:26
うん、まったくない。
よろしければ解説もしていただけるとうれしいです。
CPUウインドウの見方とか。解説ページのポインタでもいいです。
またキャプチャします。
790ure:01/11/20 18:05
>>788

スタックペインを広げた図。
http://ure.s5.xrea.com/capture/dump0.png

逆アセンブルペインをどんどん戻った図
http://ure.s5.xrea.com/capture/dump1.png
http://ure.s5.xrea.com/capture/dump2.png
http://ure.s5.xrea.com/capture/dump3.png
おねがいします。

俺がコンパイルしたバイナリをちゃんと動いた環境の人が使ったらどうなるんだろう。とおもった。
>>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メガにするのに高速な方法ありませんか?
いまはもうひとつファイルストリームつくって移してるんですが遅いです。
794Delフサギコ:01/11/20 19:59
         _________
  ∧,,∧   /
 ミ;゚Д゚彡< みんなさん、すごすぎ
  ミつ つ  \ ・・・・・・
〜ミ  ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  U U   あめ猫さまカムバックー

>>773-775
ソースアプ板を使っては?
あと、こんなんもあるみたいですが。
http://homepage1.nifty.com/wizman/app/bt5/index.html
pCode氏あたり絶対まぎれてる(w
>>794
Delフサギコ = Wizman 説があったが、まさか。

>>795
まぎれているとして?どうよ?
>>793
意味がいまいち分からん…
不要のなるのはどの部分?

末尾…………話は簡単。TFileStreamのプロパチィよくみてみ。
先頭や中間…面倒。てか漏れも効率的なカット/インサートの方法知りたい。
798793です:01/11/20 20:58
最後ならSizeプロパティ変更すればいいのはわかってるんですが・・・
不特定の場合の処理を速くしたいんです
799ure:01/11/20 21:44
>>792
パーソナル版です。

文字列を直し、コメントアウトして実行しました。
http://ure.s5.xrea.com/capture/commentout.png
あんまり変わってないように見えます。

問題の行にブレークポイントを設定してストップした後トレース実行した図。
http://ure.s5.xrea.com/capture/accessviolation2.png

なにがおこってるのかさっぱり。
>>785
「記号摂動法」を使ってみるとか。
誤差の原因が違うところにあるのなら駄目だけど。
って適当なこと書いてますな。すまん。
>>785

ってまんまやってくれるプログラムを見つけてしまった。
FORTRANだけど(w

参考になれば。
http://www.simplex.t.u-tokyo.ac.jp/~sugihara/opensoft/opensoft.html
802ure:01/11/20 22:09
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 ..." ではなく「アドレス ... で読み込み違反が起きました」
って日本語のメッセージが出るはずなんだが、もしかして英語版を混ぜている?

コンポーネントパレットの微妙な部分がいつも隠れているのも、ちーと気になる。
804ure:01/11/20 22:13
最適化をOFFにしたらコンパイルできた!
805ure:01/11/20 22:16
コンパイルできたじゃないや。

ちゃんとうごいた!!
806デフォルトの名無しさん:01/11/21 00:54
WM_QUERYENDSESSIONって終了するとは限らないのでは?
>>793
ファイルは何でもアリで?
>>793
FAT書き換え。
809785:01/11/21 01:38
>>801
どうもありがとうございます… って
ごめんなさい、解読できません…

記号摂動法とはどういうものなのですか?
810800:01/11/21 02:59
記号摂動法って大学の演習でチラッとやったんだけど、スマヌ、ほとんど忘れた(w
コンピューターで図形処理をするときの誤差を無くす方法なんすけどね。

ちょうど凸包求める問題とかやったんだけどなあ。。。
思い出せたら書きます。
ちなみに記号摂動法に関する本は検索すると出てきます。
811デフォルトの名無しさん:01/11/21 03:58
リストヴューのチェックボックスを反転したときのイベントって取得できる?
812Delあめ猫にゃ:01/11/21 08:32
>>785
 今時間無いからゴメン。
   前に凸包やった時は
 1) 4方・八方のmax min 点を探す=x , yと(±x±x)の最大最小を探して
   初期包とする

 2)初期包の重心を求める C点

 3)残った全部の点に対してC点からの方向を求め
   その方向が包の収まるべき位置を探して、その角度方向に
   左右の2点より凸なら包に挿入 

包のデータに座標の他にc点から見た角度を持たせて、
  角度でソートすると考えれば、 検索するのが高速に
813Delあめ猫にゃ:01/11/21 10:04
いけない・・・・細長い格好になると3)を単純にやるとダメでゴチャゴチャやった記憶が・・・
814デフォルトの名無しさん:01/11/21 10:14
TListViewで特定の行やセルのみ文字色変えられますか?
OwnerDrawくぁ?
>>814
OnCustomDrawItem イベントと OnCustomDrawSubItem イベントで出来る
・注意点
リストビューのCanvasに直接色を塗ったり書いたりしないで、
フォントのColorプロパティや、Brushの色を変更すること
817793です:01/11/21 14:18
いろいろなサイズのデータが連続しているファイルなのです。
ジョークだと思いますがFATの書き換えはだめです
818Delあめ猫にゃ:01/11/21 14:23
>>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 で作ったテーブルにアクセスできるよ。
>>817
自己管理のFAT作ればどうでしょう?
>>819
動作するよ。一ヶ所変になるけど対応可能。
>>811
OnChangeイベントで可能。
ただし、このイベントは、Selectedなどのプロパティが変化したときにも
発生します。しかも、イベントハンドラに渡される情報だけでは、
どのプロパティが変わったのか判定できません。以前の状態と
比較するとかして、自分で調べる必要があります。
824819:01/11/21 17:07
>>820
事情がございまして、なかなか試すわけにもいかなかったりします。
単にDBのメンテの場合、アプリ作るほど大袈裟なのも・・・。
>>822
すみませんが、変になる個所と対応方法を教えてもらえないでしょうか。
お忙しいとは思いますが何卒よろしくお願いします。

googleとかだともうPARADOXの情報ってエロゲー(なのかな)情報で、
あるいは通販の昔のページとか、サイト制作者の過去の実績だったりとか
探しきれなくて。
825Delフサギコ:01/11/21 17:11
   ∧,,∧   / ̄
\,,,,ミ,,゚Д゚彡 < さいきんは画面を見せて質問が
⊂,,,,,,,,,つつ.   \ 流行ですか?

  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してみるつもりです。
832829:01/11/21 22:49
>>830-831
レスありがとうございます!
Windows Installerの最新版(2.0)をインストールしてみましたが、
一度目の起動で必ず、Windows Installerが起動されてしまいます。

OSがW2Kなので、>>831さんの説明と同じような理由かな。
そういえば、Personal版インストールしている状態で、
Enter版Trialを一緒にインストールしたら、
なぜかアプリケーションの追加と削除が起動してしまったのが
関係あるかもしれませんね。変な風にアンインストールされてしまったとか。
>Personal版インストールしている状態で、Enter版Trialを一緒にインストール
それだよ。原因は。
いったん全部アンインストールしてから再インストールしなさい。
834785:01/11/21 23:27
ああ!なるほど
言われてみれば確かにそうですね。
ご指摘ありがとうございました。改善します。

記号摂動法は一応検索したのですが、なにやら
難しい文献しか引っかからなかったもので…
そういえば、メールエンコード方式(?)で
テキスト化された状態の、ZIP圧縮されたサンプルファイル
があったのですが、WINではどのようにバイナリ化すれば
よいのでしょう。プログラム作ったほうが早いですかね。

#ちなみに、「既に記録済みの頂点は選択しない」という条件を
#入れたら誤回答が少なくなりました。
835785:01/11/21 23:45
>>818
自分で言うのもなんなんですが、よくあのソースコード見ただけで
問題点分かりましたね。コメントつけていたとはいえ、
分かりにくいかと心配していたのですが。
さすがに本職はちがう…
836793です:01/11/22 00:11
不特定サイズのデータがいっぱい連なったファイルを使いたい場合みなさんどうするものなんでしょうか?
・ストリームでゴリゴリ
・バラして1つ1つファイルにする
・データベーステーブル使う
今回ストリームで行ったわけなんですが、おかげさまでまあなんとかできそうですけど
もっとイイ!方法はあるのでしょうか?
837793です:01/11/22 00:14
仕様はこんなの
・不特定サイズのデータがいっぱい連なったファイル
・途中のデータを任意に破棄できて、ちゃんとサイズもちぢむ
・データの追加ももちろんできる
「不特定サイズのデータがいっぱい連なったファイル」による。
>・バラして1つ1つファイルにする
特にデメリットが思いつかなければこれにする
840740:01/11/22 00:19
あまりにも漠然としてて何も胃炎
だから手前でストリームを固定サイズで区切って
チェーン情報とインデックス作って、空いた穴に末尾のファイルを埋め直してやれっつうの
842>841:01/11/22 00:48
ファイルシステムの再開発ですな
843793:01/11/22 00:49
>だから手前でストリームを固定サイズで区切って
>チェーン情報とインデックス作って、空いた穴に末尾のファイルを埋め直してやれっつうの
ああそういう事ね、わかったYO。
844829:01/11/22 00:58
>>833
アンインストールしたけど、ダメっぽい...。
レジストリにゴミでも残ってるのかな?
レジストリを掃除して、また試してみます。
チェーンが切れたらどうすんだ?
デフラグとスキャンディスクもちゃんと作れよ(藁
846793:01/11/22 01:00
>空いた穴に末尾のファイルを埋め直してやれっつうの
ここに気がつかなかったです
どうもでした
最小サイズが1バイトで、これがたくさんある場合はどうするのYO。
848793:01/11/22 01:05
>>847
クラスタサイズを小さくすればいいのでは
849test,test,test,test:01/11/22 01:17
あのさ、ボーランドから出てるSUITEって奴を買おうかと
思っているんだけど、どう?
古いC++コンパイラー(C++5.0Jとか古いソフトがパック
になってるやつ)で15000円なんだけど。
とりあえず勉強用に使うんだけど。
>>849
商品があるがままの状態で収録されてるらしいから気を付けてね。
ほとんどDOS時代のフリーソフトのような感じだろう。
851847:01/11/22 01:21
あっ、そうかー!
793さんは頭がいいですね。
勉強用ならフリーの Borland C++ Compiler がタダで良いよ。
古いコンパイラーは仕様が古いから、、、
853>849:01/11/22 01:24
正直お勧めできない。
とにかく言語仕様や開発環境が古すぎる。

GUIに興味がなければVCかCygwinのgcc+gdbが良いかも。
>>845
その辺は適時ガベージ処理でも走らせればいいんじゃない?
チェーン情報で、次クラスタ以外へのジャンプフラグの発生個数メモっとけば
>>849
ほかの方と同意見。C として使う。とか、DOS プログラムをしたい。
という理由がない限りは選ぶべきではない。

Borland C++ 5.0J は 1996/8 発売だけど ANSI C++ の仕様が制定されたのは
1998/9 だよ。
856ure:01/11/22 03:19
>>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てさ、簡単だって言うけど
パスカルなんて知らねーよ。
>>861
食べる前に水で洗うやつです。
Delphi(Pascal知らない)

VC++(C言語知ってる)

を比べたらどうなんだろうね。
Delphi(Pascal知らない、Cは知ってる)
なら全然問題なくDelphiもできるとおもうけど。

VCLとかほかのコンポーネント、情報の豊富さか、ああ、ガイシュツ!

ボーランドのマニュアルはあんまよくないけど。
あ、MSのツールからDelphiに移ろうとしたひとはマニュアルの悪さで
つまづかされてるのかも。
>>863
C→C++よりも、C→ObjectPascal→C++のが移行しやすいyp!
yp?
>865
大昔、そういう言語があったんだよ。
マンモスうれp!
867Delフサギコ:01/11/22 06:37
   ∧.,,∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ;゚Д゚彡<  マンモスうれPって.............
  ミ つ目(ミ . \_______________
〜ミ,,O,,,,,,つ

ところで、自分の特殊フォルダ
C:\Documents and Settings\FusaFusa\スタート メニュー\プログラム
を得る方法はレジ(Software\MicroSoft\Windows\CurrentVersion\Explorer)や
Shell(SHGetSpecialFolderPath)を使ってできるのですが

C:\Documents and Settings\All Users\スタート メニュー\プログラム
こういうAllUsersの特殊フォルダを得るのは
レジやShellでどのようにすればいいのでしょうか?
869Delフサギコ:01/11/22 08:13

  ,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,ミ,,゚Д゚彡 < >>868さん、ありがと
  UU""" U U   \_______________
870Delあめ猫にゃ:01/11/22 08:44
>>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つに分けて判断とは
どういうことでしょうか。
872Delあめ猫にゃ:01/11/22 12:38
>>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個もデータが無い場合がありえるから、そういう場合はループ終了
873Delあめ猫にゃ:01/11/22 13:07
ありゃ、ダメダメ
 xは負を許さないと 細長い鋭角な場合にダメだ

という事で上の後半はダメダメ。りArcTan2は必要みたい
874デフォルトの名無しさん:01/11/22 15:50
数字を少数第2位で丸める方法って無いですか?
875デフォルトの名無しさん:01/11/22 16:04
100倍してtruncして100でわる。
876Delフサギコ:01/11/22 16:09
丸めるって、四捨五入でいいのかな。
  ,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,ミ,,゚Д゚彡 < 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] ) );
878茶碗:01/11/22 17:37

Delphi6 Personal でしたが
データベースと言う物をやってみたくて今日Pro版を買いました。
こんな高いソフト買ったの初めて・・・

データベースに関する知識が全く無くて、これから
勉強しようと思うのですが、過去ログに出ていた
Paradox とか色々あるらしいですが、それらを
使用するのにまた何か購入する必要があるのでしょうか。

予想外の出費に経済危機状態なので心配です。
安く上げる方法を教えてください。
PostgreSQL、タダだよ。SQLもわりと標準的なので良いよ。
ODBC経由で繋げられる。
880茶碗:01/11/22 17:55

>>879

レスありがとうございます。
PostgreSQL 検索してみます。
標準的なSQLやODBCなど言われてもまだ全く解らない状態ですが
頑張ってみようと思います。
今日ついでにDelphiでデータベースをやる参考書を
見てたのですが、あまり良いのがありませんでした。
Delphiって書籍が少ないですねぇ。
入門に適した書籍やサイトがあれば教えてください。
>>878
Pro版に付属しているDatabase DesktopはParadoxのサブセットだから
Paradox形式のデータベースはそのまま使えるよ
882茶碗:01/11/22 18:24
>>881
レスありがとうございます。

そうなんですか?
PostgreSQL 調べたんですがなんだかややこしそうなので
そのまま使えるParadoxからやってみようかな。
色々種類があるんですねー。
883Delフサギコ:01/11/22 18:49
  ∧,,∧,,,,,,,,,,,,,,,      / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ミ゚Д゚,,彡,,,,,,,,,,,,ヾ〜  < 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

この二冊はお勧めですよ。
884Delフサギコ:01/11/22 18:57
推薦図書/必読書のためのスレッド 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サイトに見つからないなあ。
885茶碗:01/11/22 19:02

フサギコさんからレスもらったー!!
ありがとうございます。
探してみます。
しばらく手は洗いません。
886Delフサギコ:01/11/22 19:49
  ∧,,∧     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ミ ゚Д゚ミ  < 手は洗ってヨシ
 (ミ  ミつ)ビシッ\_________
〜ミ  ミ
  ∪ ∪
887俺が正しい:01/11/22 20:30
茶碗に手はないし
猫はしゃべらない
888揚げ足取りにつきsage:01/11/22 20:57
>>887
>猫はしゃべらない
猫はしゃべっていない。
よってその指摘は無意味。

キーボード打って書き込んだだけだ。
遊ぶDelphiは読んでおいて損なし
890ななしヘタぐらま ◆B18Bks.Y :01/11/23 01:20
>>861
私はDelphiでPascal初体験でしたが
Delphi以前にPascal経験があった方って
意外と少数のような気もしますが….
891 :01/11/23 01:22
うん。Delphi3.1でPascalを知った。
ポインタの扱いに癖がある以外はすばらしい言語だ。
892ゲィム作りてー:01/11/23 01:35
Delphi6Pro買ったけど、6に関する参考書なし。
Delphi5の参考書でも買っとけば役に立つ?
早く覚えてゲィム作りたいよ。
フサギコさん、ズブの初心者でも覚えられるサイト教えてくれぃ!
>>882
PostgreSQLもZeosDBOコンポーネントなんかを使えば割合簡単。
ただし、現状だと日本語未対応・・・。
http://www.zeoslib.org/zeos_zdo_main.php
894    :01/11/23 01:41
Delphiのフリー版をもっていますが
Delphi初心者(Pascal未経験者)なので
さっぱり分かりません。
今度参考書を買ってみたいのですが初心者
にお薦めの本は有りますか?
895Delフサギコ:01/11/23 01:49
   ∧,,∧   / ̄
\,,,,ミ,,゚Д゚彡 < 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
ここみたりしてがんばーて。
896    894:01/11/23 01:53
フサギコさん感謝です。
897デフォルトの名無しさん:01/11/23 03:28
StringGridの文字列を
csvとして保存するためのスマートな方法はないでしょうか。
898 :01/11/23 03:34
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ドトネトの発表で覚悟を決めた人が多いのかも。
909がいしゅつなので:01/11/23 16:00
ログ漁るとフリーのアイコン・ビットマップ集へのリンクが出てくるよ
910Delフサギコ:01/11/23 17:31
┌―――――――――――――――――――――――――┐
│↓誕生の瞬間                                │
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フサギコ様、仏様、感謝します。
休みの日は下がるけど職業プログラマが職場から書き込んでるのか?
>>912
そう。Delphi-ML と同じ。
今日、professionalへのアップグレードを頼んだ。
もうもどれん。
915デフォルトの名無しさん:01/11/24 00:15
だれか>>806を教えて。
>Delスレの活気がずいぶん減ってきたような。
>結局、パーソナル無償配布から新規ユーザーになったぜって人はいるのだろうか。
>ほとんどの人はかじっただけで飽きちゃったかな。
917916:01/11/24 01:36
>ほとんどの人はかじっただけで飽きちゃったかな。
は、いらなかった…。
オレオレ!新規新規!
918デフォルトの名無しさん:01/11/24 01:41
>>914
いつでもPersonal版に戻れます。
919「はい」は一回!!:01/11/24 01:55
 
はいはいっかい!!
ははいはにかいはいってます。
921茶碗:01/11/24 08:08
>>907

delphi6 personal から delphi6 professional を買いました。
白いご飯を食べられなくなりましたが・・・
年末なので少し自己嫌悪。はやく買って良かったと思えるようになりたい。
仕事で使うとか言う事もなく、全くの個人ユーザです。

>>893
レスありがとうございます。
取り合えず今Paradoxからはじめてます。
作った物は他のPCでも動くんでしょうか。
他のPCでも使って良いんでしょうか。

質問
fileexists や directoryexists を使うと FileCtrl は
使わない方が良いよと出てきて卑屈になりそうなんですが
じゃあ他の方法はあるのでしょうか。教えてください。
922Delフサギコ:01/11/24 08:28

     | ̄ ̄ ̄ ̄ ̄ ̄|
     |よろしくフサ−|
     |______|
     ∧,,∧.. .||
    ミ,,゚Д゚ミ..||    すいません、このスレ、イッパイイッパイ
    ミ   づΦ    なので....四露死苦って事で...ひとつ.
  〜ミ  ミ
    U''''.U

D6からでしたか。
DirectoryExists は SysUtils または FileCtrl
FileExists は SysUtils
になってますよ。HELPにも載っているようです。

他のマシンからでもDBが見えるなら(LANとかDBインストルするとか)
作ったプログラは動くと思います。
フサはODBCでエイリアス作って接続したことしかないですが
その場合、ODBCでリンクが見えたら何のDBでも何の接続でも
プログラムは動きます。

インスタトラメーンばかり食ってると間違いなく
体は壊すからお気をつけください。
923茶碗:01/11/24 08:56
>>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回だけです。たしか。
928Delフサギコ:01/11/24 20:02
GetAsyncKeyStateとか使う方法はだめなのでしょうか。
たしか、ジョイスティック入力とかも、このAPIじゃなかったかな。

  ∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚ミ < イベント発生したいなら、ちょっと違うけど。
  ミ   ミ   \__
〜ミ,UU_ミ
929Delフサギコ:01/11/24 20:46
ミ,,゚Д゚彡DelフサギコのフサフサDelphi談話室A
http://pc.2ch.net/test/read.cgi?bbs=tech&key=1006602102

            ∫    _________
   ∧,,∧     ∬   /
   ミ,,゚Д゚彡っ━~  < 新スレたてますた。
_と~,,  ~,,,ノ_.  ∀   \
    ミ,,,,/~), │ ┷┳━   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ .じ'J ̄ ̄| ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄  ┻
もうそろそろ、息切れですかね......
機種依存文字萎え
とりあえずDelフサは>>930にブチ切れるとみた(w
932Delフサギコ:01/11/25 02:28
      ∧,,∧___   / ̄ ̄ ̄ ̄ ̄
    /ミ*゚Д゚ミ/\<  萌え・・・
  /| ̄∪∪ ̄|\/  \_____
    |____|/
     ,,,,∪∪,,, ,,
933デフォルトの名無しさん:01/12/20 12:43
imageコンポーネントに表示されてる画像を90度回転させたいのですが
どうしたら良いでしょうか?
934933:01/12/20 12:44
次スレあったのね
すいません
このスレは終了しています。
質問などは次スレによろしくお願いします。

ミ,,゚Д゚彡DelフサギコのフサフサDelphi談話室A
http://pc.2ch.net/test/read.cgi?bbs=tech&key=1006602102
    ∧ ∧         / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ̄ ̄( ゚Д゚) ̄ ̄|   < 良い子は寝る時間
|\⌒⌒⌒⌒⌒⌒\   \
|  \           \    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
\  |⌒⌒⌒⌒⌒⌒|
  \ |_______|
このスレはいただいた。
覚悟するヨロシ。
938デフォルトの名無しさん:02/03/03 23:46
糞スレあげ
939Delフサギコ:02/03/05 21:35

            ∫    _________
   ∧,,∧     ∬   /
   ミ,,゚Д゚彡っ━~  < 漏れは素人童貞ですた。
_と~,,  ~,,,ノ_.  ∀   \
    ミ,,,,/~), │ ┷┳━   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ .じ'J ̄ ̄| ┃
 ̄ ̄ ̄ ̄
>>939はキチガイ
>>933
ディスプレイを横に転がせ。
942デフォルトの名無しさん:02/03/07 07:23
>941
煮詰まってるんだね。
943Delフサギコ:02/03/07 19:37

            ∫    _________
   ∧,,∧     ∬   /
   ミ,,゚Д゚彡っ━~  < 漏れは仮性包茎ですた。
_と~,,  ~,,,ノ_.  ∀   \
    ミ,,,,/~), │ ┷┳━   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ .じ'J ̄ ̄| ┃
 ̄ ̄ ̄ ̄


    ∧ ∧         / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ̄ ̄( ゚Д゚) ̄ ̄|   < 内臓出ちゃう
|\⌒⌒⌒⌒⌒⌒\   \
|  \           \    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
\  |⌒⌒⌒⌒⌒⌒|
  \ |_______|
あは〜ん
イミフメAA貼るだけなら書き込むなや>ギコ
947デフォルトの名無しさん:02/03/10 11:58
age
いや〜ん
ばか〜ん
そこはだめよ〜
951Delフサギコ:02/03/17 14:02
    ∧ ∧         / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ̄ ̄( ゚Д゚) ̄ ̄|   < 格安ソープまんせー!
|\⌒⌒⌒⌒⌒⌒\   \
|  \           \    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
\  |⌒⌒⌒⌒⌒⌒|
  \ |_______|


偽必死ダネ
953デフォルトの名無しさん:02/03/17 20:47
>>951=952
954デフォルトの名無しさん:02/03/17 20:51
あげ
|  | ∧
|_|Д゚) ミンナMLでデザパタ論議チュウ
|文|⊂) 
| ̄|∧|
957Delフサギコ ◆zE1iiRdQ :02/03/21 15:35
|  |,,∧  とりあえず、IteratorはForEachで使えないと....
|_|Д゚ミ Cチャープでは出来るらしいが....
|文|⊂ミ 
| ̄|∧|
958Delフサギコ ◆zE1iiRdQ :02/03/22 02:42
|  |,,∧  halbow氏が壊れ初めてる...
|_|Д゚ミ 
|文|⊂ミ  IUnknownの実装とか言ってるし...
| ̄|∧|  カレもまたDelの腐れCOMInterfaceの
      犠牲者か...
過去ログ見なさい
>>958
どこがどう腐っているんだい?
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にリンク投げてみろや
次スレはどこ逝った?
>>973
偽ギコがたてた次スレならこっち


ミ,,゚Д゚彡DelフサギコのフサフサDelphi談話室A
http://pc.2ch.net/test/read.cgi/tech/1013298748/
ども
キタ━━(゚∀゚)━━━!!!!!
なにが?
Delフサギコが。
今だ!1000ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧,,∧,,,,,, )      (´⌒(´
  ⊂ミ゚Д゚⊂ `つ≡≡≡(´⌒;;;≡≡≡
       """""  (´⌒(´⌒;;
      ズザーーーーーッ

なかなか1000行かないね。
981デフォルトの名無しさん:02/03/28 19:07
今だ!1000ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧,,∧,,,,,, )      (´⌒(´
  ⊂ミ゚Д゚⊂ `つ≡≡≡(´⌒;;;≡≡≡
       """""  (´⌒(´⌒;;
      ズザーーーーーッ
すべりこみアト19回。
ごめんアト17回
984デフォルトの名無しさん:02/03/28 22:12
1000!
すみませんageないでいただけますか・・・
ageたいよおおおおおおおおおおお!!!!!!!!
今だ!1000ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧,,∧,,,,,, )      (´⌒(´
  ⊂ミ゚Д゚⊂ `つ≡≡≡(´⌒;;;≡≡≡
       """""  (´⌒(´⌒;;
      ズザーーーーーッ

>>987
おまえにゃ無理だ。
989デフォルトの名無しさん:02/03/30 00:36
さっさと埋めちまおう。
埋め
埋め 
埋め
今だ!1000ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧,,∧,,,,,, )      (´⌒(´
  ⊂ミ゚Д゚⊂ `つ≡≡≡(´⌒;;;≡≡≡
       """""  (´⌒(´⌒;;
      ズザーーーーーッ
今だ!1000ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧,,∧,,,,,, )      (´⌒(´
  ⊂ミ゚Д゚⊂ `つ≡≡≡(´⌒;;;≡≡≡
       """""  (´⌒(´⌒;;
      ズザーーーーーッ
埋め  
埋め    
       v
     <(゚ω゚) <うっ!
      (  )\        
      /'>
       v
      (゚ω゚)> <はっ!
     /(  )        
       <'\
       v
     <(゚ω゚)> <うっ!
      (  )        
      /'>

       v
      (゚ω゚)/ <はっ!
     /(  )        
       <'\
10001000:02/03/30 00:57
     v       w
    (゚ω゚)/ \(゚δ゚)<ジーンギスカーン!
   /(  )    (  )ゝ
     <'\    / >

10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。