5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

くだすれDelphi(超初心者用)その43

1 :デフォルトの名無しさん:2007/08/03(金) 12:18:00
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を
勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが
お礼はDelphiの布教と初心者の救済をお願いします。

<前スレ>
くだすれDelphi(超初心者用)その42
http://pc11.2ch.net/test/read.cgi/tech/1180613145/

<過去スレ>
DelWiki避難所
http://delwiki.info/?Delphi 関連の過去スレッド


2 :デフォルトの名無しさん:2007/08/03(金) 12:19:07
Delphi初心者のための寺子屋
http://pc11.2ch.net/test/read.cgi/tech/1132756268/
Delphiで無料でプログラミングしてみるお
http://pc11.2ch.net/test/read.cgi/tech/1158233434/
バカボンのDelphi不買・販促・その他談話室その29
http://pc11.2ch.net/test/read.cgi/tech/1153227982/
Borland Developer Studio 2006 No.13
http://pc11.2ch.net/test/read.cgi/tech/1175861395/
Borland Developer Studio 2006 アンチスレ
http://pc11.2ch.net/test/read.cgi/tech/1153353434/
VB vs Delphi @夏厨2006
http://pc11.2ch.net/test/read.cgi/tech/1152851763/
【Delphi】 Indyコンポーネント 【C++Builder】
http://pc11.2ch.net/test/read.cgi/tech/1093654251/
delphiで2ch保守プログラムを作ろう
http://pc11.2ch.net/test/read.cgi/tech/1165632604/
Delphi持ってるならGLSceneを使え
http://pc11.2ch.net/test/read.cgi/tech/1163269079/
【Delphi】 ゲームつくるぞ(゚Д゚)ゴルァ 2【Delphi】
http://pc11.2ch.net/test/read.cgi/gamedev/1097836469/
Delphiでアクションゲームが作りたい!! Part2
http://pc11.2ch.net/test/read.cgi/gamedev/1027482533/
ネットワークゲーム作成のお勉強(Delphi専用スレ)
http://pc11.2ch.net/test/read.cgi/gamedev/1028278884/
delphiでMMO
http://pc11.2ch.net/test/read.cgi/gamedev/1072515100/
【Delphi互換!?】FreePascal【GPL】
http://pc11.2ch.net/test/read.cgi/tech/1137051510/
CodeGear
http://dn.codegear.com/jp/

3 :デフォルトの名無しさん:2007/08/03(金) 12:20:19
重複です。移動してください。
http://pc11.2ch.net/test/read.cgi/tech/1184037822/

4 :デフォルトの名無しさん:2007/08/03(金) 12:32:59
無償ダウンロード
http://www.microsoft.com/japan/msdn/vstudio/express/vbasic/

5 :デフォルトの名無しさん:2007/08/03(金) 18:37:42
WideString対応のTStringList、
TWideStringListってないですか?

6 :デフォルトの名無しさん:2007/08/03(金) 18:52:00
WideStringsに、TWideStringListがありました。
これを使ってみようと思います。

7 :デフォルトの名無しさん:2007/08/03(金) 20:48:35
Delphi向けのドキュメントツールを探しています。
みなさんは何を使っておられますか?

過去スレをみると、DIPasDocなどがあるようですが、
日本語対応版?が見つけられませんでした。

8 :Delフサギコ ◆A6VzDeLphI :2007/08/04(土) 01:14:53
           _________
   ∧,,∧   / 
  ミ,,゚Д゚彡 <  これかしら。
   ミ つ旦)~~ \ 
 @ミ   ミ     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ∪''∪

Hexe19 - Doxygen for Delphi : Pas2Dox
http://web.archive.org/web/20060718000634/www.hexe19.net/doxygen/quickstart-delphi.html

また、Archive化しなけれ....

9 :デフォルトの名無しさん:2007/08/04(土) 08:03:33
海外のドキュメンテーションツールは、海外ではいくつかありそうです。

・DelphiCodeToDoc home page
http://dephicodetodoc.sourceforge.net/
JavaDoc互換文法
GExperts 用のテンプレート完備

・JADD - Just Another DelphiDoc - Automatic Generation of Documentation for Delphi/Kylix-Projects
http://delphidoc.sourceforge.net/

・PasDoc - pasdoc
http://pasdoc.sipsolutions.net/

・SourceForge.net: Pascal To Doxygen Convertor
http://sourceforge.net/projects/pas2dox/
Doxygen文法?


どれも日本語は、たぶん、修正がいるだろうな・・・
ソースコードがUNICODEになったら、対応もいらないんだろうけど

DelphiCodeToDocがアクティブっぽいので、試してみようと思います。


10 :デフォルトの名無しさん:2007/08/04(土) 08:04:09
x 海外のドキュメンテーションツールは、海外ではいくつかありそうです。
o Delphiのドキュメンテーションツールは、海外ではいくつかありそうです。


11 :デフォルトの名無しさん:2007/08/04(土) 08:21:06
DelphiとVBはどちらが優れていますか?

12 :デフォルトの名無しさん:2007/08/04(土) 08:23:58
ドキュメンテーションツール追加

・Doc-O-Matic - Doc-O-Matic - Documentation System
http://www.doc-o-matic.com/
商用
CodeGearが使っているらしい

・Time2HELP - The Developer's Source Code Documentation Solution
http://www.time2help.com/
"JavaDoc" for Delphi
だそうで。

一回Delwikiにでもまとめたいですね



13 :デフォルトの名無しさん:2007/08/04(土) 08:24:36
追加
・The Delphi Inspiration: DIPasDoc
http://www.yunqa.de/delphi/pasdoc/

PasDocをDelphiでコンパイルできるようにしたものらしい


14 :デフォルトの名無しさん:2007/08/04(土) 08:27:27
>>11

【VBと比べて、比べる事であそびたい人】
VB vs Delphi @夏厨2006
http://pc11.2ch.net/test/read.cgi/tech/1152851763/


【VCと比べて、比べる事であそびたい人】
結局DelphiとVC++ってどっちの方がいいんだ?
http://pc11.2ch.net/test/read.cgi/tech/1177431417/


それぞれ専用スレがあるので、ご活用下さい。

15 :デフォルトの名無しさん:2007/08/04(土) 16:02:16
AnsiStringでリードバイトの処理がわからん外人はUnicodeになっても、サロゲートの処理がわかんないんだろうな。



16 :デフォルトの名無しさん:2007/08/04(土) 17:44:33
で?

17 :デフォルトの名無しさん:2007/08/04(土) 19:11:09
  彡川川川三三三ミ〜
   川|川/  \|〜 プゥ〜ン __________________
  ‖|‖ ◎---◎|〜     /AnsiStringでリードバイトの処理がわからん
  川川‖    3  ヽ〜   < 外人はUnicodeになっても、
  川川   ∴)д(∴)〜    \サロゲートの処理がわかんないんだろうな。
  川川      〜 /〜       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  川川‖    〜 /‖ _____
 川川川川___/‖  |  | ̄ ̄\ \
   /       \__|  |    | ̄ ̄|
  /  \___      |  |    |__|
  | \      |つ   |__|__/ /   カタカタカタ
  /     ̄ ̄  | ̄ ̄ ̄ ̄|  〔 ̄ ̄〕
 |       | ̄

18 :デフォルトの名無しさん:2007/08/04(土) 19:28:34
Delphiでは特に気にする必要ないよね
前スレにいたUTF-8変換にバグがあるとか言ってた馬鹿がまた来たか?

19 :デフォルトの名無しさん:2007/08/04(土) 19:57:23
>>1
スレ立て乙です〜

>>18
UTF-8にサロゲートペアってあったっけ?

20 :デフォルトの名無しさん:2007/08/04(土) 20:53:12
>>18
Delphiってより気にする必要がないのはおまえのプログラムがだろ??頭大丈夫?


21 :デフォルトの名無しさん:2007/08/04(土) 20:56:51
>>19
>>18がいいたいのはUCS2のことだろ、エンコーディングと文字集合の違いも理解できない
やつはほっとこう。


22 :デフォルトの名無しさん:2007/08/04(土) 21:10:35
  彡川川川三三三ミ〜
   川|川/  \|〜 プゥ〜ン __________________
  ‖|‖ ◎---◎|〜     /Delphiでは特に気にする必要ないよね
  川川‖    3  ヽ〜   < 前スレにいたUTF-8変換に
  川川   ∴)д(∴)〜    \バグがあるとか言ってた馬鹿がまた来たか?
  川川      〜 /〜       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  川川‖    〜 /‖ _____
 川川川川___/‖  |  | ̄ ̄\ \
   /       \__|  |    | ̄ ̄|
  /  \___      |  |    |__|
  | \      |つ   |__|__/ /   カタカタカタ
  /     ̄ ̄  | ̄ ̄ ̄ ̄|  〔 ̄ ̄〕
 |       | ̄

23 :デフォルトの名無しさん:2007/08/04(土) 22:34:14
>>20
Delphiにはサロゲート処理のある関数がない
人のレス読んで煽る前にVCLのソース読んでこい

24 :デフォルトの名無しさん:2007/08/04(土) 22:40:10
前スレのってCESU-8がどうのこうの言ってたやつか
それまで散々粘着してたのにUCS2だって言われてから急に消えて笑ったな

25 :デフォルトの名無しさん:2007/08/04(土) 22:49:01
つーか、Del用でUCS4なUnicodeコンポ作ってる外人さんはいても日本人の作ったのは知らないなぁ

26 :デフォルトの名無しさん:2007/08/04(土) 22:54:13
資料も今じゃロシア語や中国語で書かれたものの方が多いしな
日本語文献はどんどん消えていく

27 :デフォルトの名無しさん:2007/08/04(土) 23:19:30
拝啓ユーザー様
 開発環境が対応していないので、私のプログラムも対応してません。


28 :デフォルトの名無しさん:2007/08/04(土) 23:20:57
  彡川川川三三三ミ〜
   川|川/  \|〜 プゥ〜ン __________________
  ‖|‖ ◎---◎|〜     /Delphiにはサロゲート処理のある関数がない
  川川‖    3  ヽ〜   < 人のレス読んで煽る前にVCLのソース読んでこい
  川川   ∴)д(∴)〜    \
  川川      〜 /〜       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  川川‖    〜 /‖ _____
 川川川川___/‖  |  | ̄ ̄\ \
   /       \__|  |    | ̄ ̄|
  /  \___      |  |    |__|
  | \      |つ   |__|__/ /   カタカタカタ
  /     ̄ ̄  | ̄ ̄ ̄ ̄|  〔 ̄ ̄〕
 |       | ̄

29 :デフォルトの名無しさん:2007/08/04(土) 23:21:56
  彡川川川三三三ミ〜
   川|川/  \|〜 プゥ〜ン __________________
  ‖|‖ ◎---◎|〜     /前スレのってCESU-8がどうのこうの言ってたやつか
  川川‖    3  ヽ〜   < それまで散々粘着してたのにUCS2だって言われてから急に消えて笑ったな
  川川   ∴)д(∴)〜    \
  川川      〜 /〜       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  川川‖    〜 /‖ _____
 川川川川___/‖  |  | ̄ ̄\ \
   /       \__|  |    | ̄ ̄|
  /  \___      |  |    |__|
  | \      |つ   |__|__/ /   カタカタカタ
  /     ̄ ̄  | ̄ ̄ ̄ ̄|  〔 ̄ ̄〕
 |       | ̄

30 :デフォルトの名無しさん:2007/08/05(日) 03:17:57
tnt買収してさっさとUnicodeに公式対応してくんないかな

31 :デフォルトの名無しさん:2007/08/05(日) 10:32:35
めちゃめちゃ初心者なんですけど、セルに色をつけるってどうやるんですか?
Ondrawcellを使うのはわかったんですけど、ヘルプ見てもコマンドがよくわかりません><


32 :デフォルトの名無しさん:2007/08/05(日) 11:29:54
>>31
何のセルだよ。TStringGrid?
あとこのスレは超初心者用なんだからいちいち初心者ですなんて言わなくておk

33 :デフォルトの名無しさん:2007/08/05(日) 11:42:45
はい。おっしゃるTStringGridです。
excelのような簡単な表を作成し、この列は赤、この列は青のように色分けを
したいのですが、canvasコマンド?がいまいちよくわからないのです。

34 :デフォルトの名無しさん:2007/08/05(日) 11:51:15
ヘルプでTCanvas を一度全部見てゆくといいよ。
Brush.Color とか Pen.Color とか Font.Color で色を変えられるよ
文字を描く場合は、TextRect で枠に合わせて描くと

35 :デフォルトの名無しさん:2007/08/05(日) 12:19:11
たびたび申し訳ありません
色分けについて、
http://www2.biglobe.ne.jp/~sakai/gensfaq2.htm#a017-1
このページを発見したのですが、
// セルに書き込む
TextRect(Rect, Rect.Left + 2, Rect.Top + 2,
StringGrid1.Cells[Col, Row]);
という行の+2などの意味がよくわからないのですが教えていただけたら幸いです。

36 :デフォルトの名無しさん:2007/08/05(日) 12:30:09
delphi って、近年なくなるってことはないですか?
将来5年間くらい存続する確立は何%くらいでしょうか?

37 :デフォルトの名無しさん:2007/08/05(日) 12:46:18
今までもさんざん危機を叫ばれていながら存在し続けているので35%の確率で存続するのではないでしょうか?
まあそんな事は神の味噌汁ですが。

38 :デフォルトの名無しさん:2007/08/05(日) 12:49:47
>>35
単なる足し算。 左上よりちょっと真ん中に描画するって意味だけど、
セルが大きいと無意味ですね。

39 :デフォルトの名無しさん:2007/08/05(日) 13:12:01
2年なら50%、5年なら20%くらいの確率で生き残れる、と思う。

40 :デフォルトの名無しさん:2007/08/05(日) 13:22:27
ま、いつ発売中止になっても驚かない、って状況ではある。

41 :デフォルトの名無しさん:2007/08/05(日) 13:25:10
例えば10年以上も前にとっくに実機が販売されなくなったMSXだけども、
いまだにMSXユーザーってのは根強く存在するわけで。
ユーザーがいなくならない限り存在し続けるんじゃないかな。どんな形であれ。

しかし色々なゴタゴタがあったのにここまで残ってこられたのは本物なんじゃないかな。

42 :デフォルトの名無しさん:2007/08/05(日) 13:56:52
  彡川川川三三三ミ〜
   川|川/  \|〜 プゥ〜ン __________________
  ‖|‖ ◎---◎|〜     /しかし色々なゴタゴタがあったのにここまで
  川川‖    3  ヽ〜   < 残ってこられたのは本物なんじゃないかな。
  川川   ∴)д(∴)〜    \
  川川      〜 /〜       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  川川‖    〜 /‖ _____
 川川川川___/‖  |  | ̄ ̄\ \
   /       \__|  |    | ̄ ̄|
  /  \___      |  |    |__|
  | \      |つ   |__|__/ /   カタカタカタ
  /     ̄ ̄  | ̄ ̄ ̄ ̄|  〔 ̄ ̄〕
 |       | ̄

43 :デフォルトの名無しさん:2007/08/05(日) 14:01:53
そんなの、N88Basic ユーザがまだいるわいな、というくらい製品として無意味。

44 :デフォルトの名無しさん:2007/08/05(日) 14:15:03
  彡川川川三三三ミ〜
   川|川/  \|〜 プゥ〜ン __________________
  ‖|‖ ◎---◎|〜     /そんなの、N88Basic ユーザがまだいるわいな、
  川川‖    3  ヽ〜   < というくらい製品として無意味
  川川   ∴)д(∴)〜    \
  川川      〜 /〜       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  川川‖    〜 /‖ _____
 川川川川___/‖  |  | ̄ ̄\ \
   /       \__|  |    | ̄ ̄|
  /  \___      |  |    |__|
  | \      |つ   |__|__/ /   カタカタカタ
  /     ̄ ̄  | ̄ ̄ ̄ ̄|  〔 ̄ ̄〕
 |       | ̄

45 :デフォルトの名無しさん:2007/08/05(日) 15:12:33
     ↓>>17,22,28,29,42,44
     _____  
   /::::::::::::::::::::::::::\〜プーン
  /:::::::::::::::::::::::::::::::::::::::\〜プーン
  |:::::::::::::;;;;;;|_|_|_|_|〜プーン         
  |;;;;;;;;;;ノ∪  \,) ,,/ ヽ〜          
  |::( 6∪ ー─◎─◎ )〜        / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  |ノ  (∵∴ ( o o)∴)〜      < えーと、製品として無意味っと・・・
  | ∪< ∵∵   3 ∵>         \_____________
  \        ⌒ ノ_____
    \_____/ |  | ̄ ̄\ \   カチャ
___/      \   |  |    | ̄ ̄| カチャ
|:::::::/  \___ | \|  |    |__|   
|:::::::| \____|つ⊂|__|__/ /
|:::::/        | ̄ ̄ ̄ ̄|  〔 ̄ ̄〕  

46 :デフォルトの名無しさん:2007/08/05(日) 15:14:31
またUnicodeの人か

47 :デフォルトの名無しさん:2007/08/05(日) 18:16:43
  彡川川川三三三ミ〜
   川|川/  \|〜 プゥ〜ン __________________
  ‖|‖ ◎---◎|〜     /またUnicodeの人か
  川川‖    3  ヽ〜   < 
  川川   ∴)д(∴)〜    \
  川川      〜 /〜       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  川川‖    〜 /‖ _____
 川川川川___/‖  |  | ̄ ̄\ \
   /       \__|  |    | ̄ ̄|
  /  \___      |  |    |__|
  | \      |つ   |__|__/ /   カタカタカタ
  /     ̄ ̄  | ̄ ̄ ̄ ̄|  〔 ̄ ̄〕
 |       | ̄

48 :Cの老師を目指す女:2007/08/05(日) 20:31:33
裕美子といいます。大都会の片隅で×いちで孤独なOLをしています。
私はDelphiはあまり得意ではありませんが、Delphiユーザーは
ハイレベルなプログラマが多いので尊敬しています。がんばってくだ
さい。

上のAAから悪しきオーラを感じます。あなたはプログラマではなく
単なるフィッシングがネチな2ちゃん根らですね。たとえどんなに
策を労使ようとも私たちはくじけますん。

49 :Cの老師を目指す女:2007/08/05(日) 20:32:20
ごめんなさい

くじけますんじゃなくてくじけませんです。訂正してください。

50 :デフォルトの名無しさん:2007/08/05(日) 22:47:39
小池徹平より不細工な女は女とは認めますん

51 :デフォルトの名無しさん:2007/08/05(日) 22:52:40
許しますん

52 :デフォルトの名無しさん:2007/08/05(日) 23:13:17
労使よう


53 :デフォルトの名無しさん:2007/08/05(日) 23:58:36
まあ仮に近い将来消えちゃったとしても、
ライブラリソースに手を入れられるのが唯一の救いだな
64bit全盛時代が来るまではそれで何とか繋げる

54 :デフォルトの名無しさん:2007/08/06(月) 00:22:07
べつにDelphiじゃなくても、しのげる人は大勢いますけど・・・

55 :デフォルトの名無しさん:2007/08/06(月) 00:23:41
Delphiユーザは、ふさによると2%くらいなんだから、消えたってまったくこの業界
に影響ないでしょ。

56 :デフォルトの名無しさん:2007/08/06(月) 00:28:40
レコード型を使おうと思っているのですが
それぞれのフィールドの型が循環参照(?)している場合は
どうやって定義したらいいですか。

type Ttest1 = record
 index: Integer;
 test2: Ttest2;
end;

type Ttest2 = record
 index: Integer;
 test1: Ttest1;
end;

57 :デフォルトの名無しさん:2007/08/06(月) 00:28:50
隔離スレでやれ

58 :デフォルトの名無しさん:2007/08/06(月) 00:37:17
>>56
再設計を勧める

59 :デフォルトの名無しさん:2007/08/06(月) 00:42:51
type
PRec1 = ^TRec1;
PRec2 = ^TRec2;

TRec1 = record
rec2: PRec2;
end;

TRec2 = record
rec1: PRec1;
end;

みたいに一つのtypeにまとめてTRecX, PRecXをついにして定義すれば可能。
ただ>>56みたいなポインタではなく変数そのものを循環的に格納するなんて論理的に不可能だぞ。

60 :デフォルトの名無しさん:2007/08/06(月) 01:06:50
ありがとうございます。
ポインタでやってみます。

61 :デフォルトの名無しさん:2007/08/06(月) 01:07:57
クラスにしちゃえよ

62 :デフォルトの名無しさん:2007/08/06(月) 03:52:46
前スレ999
> uPnPを使ってuPnP対応のルータにポートを開閉を要求するにはどうしたらよいのでしょうか

http://nw.odoruinu.net/?p=191
とか、どうでしょ。

タイプライブラリを作る方法は、この辺を参考に。
http://www.delphipraxis.net/post598522.html
http://www.delphipraxis.net/topic59019,0,asc,0.html

63 :デフォルトの名無しさん:2007/08/06(月) 12:56:08
先輩にDelphi勧められているんでこの夏休みに勉強しようと思うんですが、
友達に聞いたらもう終わってるとか言われたんですがどうなんでしょう?
何でもキリックスとかに移ったとか(よくわからないのでスマソ)

64 :デフォルトの名無しさん:2007/08/06(月) 13:05:23
Delphiなんて古木を今更わざわざ拾わなくても
ゆとりプログラマは根の張った大木にぶらさがって優雅にC#でもやってなさいってこった

65 :デフォルトの名無しさん:2007/08/06(月) 13:44:04
ポインタないし

66 :デフォルトの名無しさん:2007/08/06(月) 14:03:47
それはJAVAだろ・・・・・っといってもDelphiのClass形と同じような参照としてのポインタはあるんだけどな

67 :デフォルトの名無しさん:2007/08/06(月) 15:07:11
StringGridについて詳しく解説されてるページとかありませんか?
あったら教えてください。

68 :デフォルトの名無しさん:2007/08/06(月) 15:46:58
>>63
Unicodeベースでなければならない、.NETでなければならない、
就職に繋げたいということでもないなら
Win32な開発環境としては別に終わっちゃいない。
今なおWindowsで最も楽な開発環境の一つ。

Kylix(カイリックス)はDelphiのLinux版で
かなり大昔にバージョンアップが途絶えて
どちらかというとこっちの方が終わってる環境だ。

69 :ななしへたぐらま ◆XcB18Bks.Y :2007/08/06(月) 15:58:17
>>35
ためしに+2を取り除いたり違う数(たとえば10とか20とか)にして実行してみましょう.
また片方の値だけを変えて実行してみてください.
その数が何を意味しているのか,またどうして+2なのかがわかると思います.

DelphiやVBはコードを書いたら速攻で実行できるので
いろいろ考えるよりもまずは条件をいろいろ変えて動かしてしまいましょう.

>>36
いつ無くなってもおかしくありませんがまだしぶとく生き残ると思います.
もっとも,大切なことはDelphiという道具の使い方を覚えることではなくて
自分のやりたいことを形にする技術を身につけることなので,
Delphiでそれを身につけていればどの開発環境にいってもうまくやっていけるはずです.

>>56
そのTtest1とTTest2が別のものである必然性は本当にありますか?
実はひとつのもので済んだりはしませんか?

本当に相互に参照しなければならない場面は案外少なかったりします.
これはレコードに限らず,オブジェクトやユニットにも言えます.


70 :デフォルトの名無しさん:2007/08/06(月) 16:05:48
>>68
ネタにマジレスする馬鹿



71 :デフォルトの名無しさん:2007/08/06(月) 16:32:23
dephi6 personalを使っています。
クラスのメンバとして定数を定義したいのですがpublicのあたりに
 public
  const val: Integer = 0;
としても「'END'が必要な場所に'CONST'があります」とコンパイルエラーになります。
こういうものはプロパティで代用するしかないんでしょうか。

72 :デフォルトの名無しさん:2007/08/06(月) 18:52:57
クラスのメンバではないグローバルな定数で代用してください

73 :デフォルトの名無しさん:2007/08/06(月) 18:56:48
プロパティにするとインスタンス生成しないと参照できなくなるから
class function val: integer;
にするのも手。オーバーヘッドが発生するんで一長一短だな。

74 :デフォルトの名無しさん:2007/08/06(月) 19:20:37
>>71
使ってる環境をTurbo Delphiに変えれば可能です

75 :デフォルトの名無しさん:2007/08/06(月) 19:27:21
Delphiは関数内関数や、関数の中で構造体を定義出来たり、定数を定義出来たりするのに
クラスの中で そういうのが出来ないんだよな

まあ、ユニットを1つの単位と考えて、1ユニット1クラスで考えればいいと思うんだけどな

76 :デフォルトの名無しさん:2007/08/06(月) 20:02:06
Delphi6ではできないことがわかってすっきりしました。
代替方法でやってみます。
ありがとうございました。

77 :デフォルトの名無しさん:2007/08/06(月) 20:56:11
(´-`)。oO(なんで普通の定数だとまずいんだろう…)

78 :ななしへたぐらま ◆XcB18Bks.Y :2007/08/06(月) 21:24:10
VCLのソースファイルの再構築はどうやればよいのでしょうか.

Delphi 5を使っているのですが
HeaderControlにメモリリークのバグがあるので
VCLのソースファイル(comctrl.pas)に手を加えてみました.

しかしソースファイルを書き換えただけでは駄目,bcc32でコンパイルしても駄目,
パッケージの再構築をしようにもパッケージのソースファイルがないようなので困っています.


79 :デフォルトの名無しさん:2007/08/06(月) 21:43:35
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=061257

80 :ななしへたぐらま ◆XcB18Bks.Y :2007/08/06(月) 22:08:45
ありがとうございます.
おかげさまでうまくいきました.
これで今日は家に帰れます…


81 :デフォルトの名無しさん:2007/08/07(火) 02:53:32
>>75
おいおい。できるってw


82 :デフォルトの名無しさん:2007/08/07(火) 02:54:34
アンチは、デマばかり振りまく。
かまうな馬鹿

83 :デフォルトの名無しさん:2007/08/07(火) 03:28:23
ふるいバージョンではできないでしょ。質問者はそういってるし。

84 :デフォルトの名無しさん:2007/08/07(火) 03:47:57
いつになったらテンプレートが使えるようになるんですか?

85 :デフォルトの名無しさん:2007/08/07(火) 11:11:45
StringGridのセルを初期化するにはどうすればいいんでしょうか?

86 :ななしへたぐらま ◆XcB18Bks.Y :2007/08/07(火) 19:26:07
>>85
文字列グリッドのすべてのセルの文字列をカラにするということですか?
特にそういうメソッドはないので手でカラにしてください.

{ 文字列グリッドのすべてのセルの文字列をカラにする手続き }
procedure ClearGridCells(Grid: TStringGrid);
var
 iRow, iCol: integer;
begin
 for iRow := 0 to Grid.RowCount - 1 do
  for iCol := 0 to Grid.ColCount - 1 do
   Grid.Cells[iCol, iRow] := '';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 ClearGridCells(StringGrid1);
end;

87 :デフォルトの名無しさん:2007/08/07(火) 20:28:16
これでもいけそうだぞ。
for I := 0 to Grid.RowCount - 1 do Grid1.Rows[I].Clear;



88 :デフォルトの名無しさん:2007/08/07(火) 21:27:39
>>87
オレもそうしている。
でも、行の削除なんかのときに1行削除するたびにクリアしないと、
再度行を増やしたときに前の値が出てくるのは何でなんだろう。

89 :デフォルトの名無しさん:2007/08/07(火) 23:04:30
DataBaseからデータを取得してグローバル配列変数List:array[1..8]of TListに格納しているのですが、
リストにあるデータを使おうと思ったら変な値が出てきます。
どうしたらいいのでしょうか?
環境はにD5Entです。

90 :デフォルトの名無しさん:2007/08/07(火) 23:12:07
>>89
・「変な値」とは具体的に何?
・値を取得するコードは?
・TListはちゃんとCreateしたか?

91 :89:2007/08/07(火) 23:19:39
>>90

変な値とは次に使うSQL文です。

値を取得するコードは次に書きます。

TListはちゃんとFrameのInit(FormのShowイベントで呼ぶ)関数でCreateしています。

92 :89 1/2:2007/08/07(火) 23:34:36
>>90

SQL.Add('SELECT BEID,GAKKOID');
//集計条件
if SMC.F_KT_DispType=0 then begin //
SQL.Add(',MODEL');
end else begin //
SQL.Add(',G_TYPE');
end;
SQL.Add(',sum(SEITO) FROM V_OPE_U11 WHERE BEID=:b AND GAKKOID=:ga');
SQL.Add(' GROUP BY OWNER,GAKKOID');
//集計条件
if F_KT_DispType=0 then begin //
SQL.Add(',MODEL');
end else begin //
SQL.Add(',G_TYPE');
end;
ParambyName('b').AsInteger := BEID; //
ParambyName('ga').AsInteger := GAKKOID; //
Open;


93 :89 2/2:2007/08/07(火) 23:37:19
>>90

while not EOF do begin
List.Add;
p.F_KT_OWNER:=FieldByName('BEID').AsInteger;
p.F_KT_STORE:=FieldByName('GAKKOID').AsInteger;
//集計条件
if F_KT_DispType=0 then begin //
p.F_KT_MODEL := FieldByName('MODEL').AsInteger; //
p.F_KT_GAKKO_TYPE_CD := '';
end else begin //
p.F_KT_MODEL := -1;
p.F_KT_GAKKO_TYPE_CD := FieldByName('G_TYPE').AsString; //
end;
p.F_KT_SEITO := FieldByName('SUM').AsInteger; //
List.Add(p);
NEXT;
end;

大体こんな感じです。


94 :デフォルトの名無しさん:2007/08/07(火) 23:56:18
Jw_cad for Windows のクロックメニューってどうやって実現しているのでしょうか?

95 :デフォルトの名無しさん:2007/08/07(火) 23:57:05
何かクセェ
List.Add;
p.

96 :デフォルトの名無しさん:2007/08/08(水) 00:04:17
>>89
うん。Listとpが怪しい。
宣言は?
pは何処で入れてる?

97 :89 2/2:2007/08/08(水) 00:27:52
>>92の前に
procedure TDM1.Get_SeitoSuu(Cond: TGakkoCond_Rec;
List: TList);
var
p: PGakko004_Rec;
beginで
PGakko004_Rec = ^TGakko004_Rec;
TGakko004_Rec = record
F_KT_BEID: Integer; //
F_KT_GAKKOID: Integer; //
F_KT_MODEL: Integer; //
F_KT_GAKKO_TYPE_CD: String[1]; //
F_KT_SEITO: Integer;
end;
です。

98 :デフォルトの名無しさん:2007/08/08(水) 01:23:52
>>97
New

99 :デフォルトの名無しさん:2007/08/08(水) 01:45:05
クラスにして、Create で生成し、TObjectList で管理することを勧める。
1レコードごとに、New でポインタをつくってメモリ確保しなけりゃ
ならないなんて、非効率すぎだし、メモリリークも心配。それに、そのコードを
見ると、ポインタそのものも理解してるのか疑問。

100 :89:2007/08/08(水) 02:02:23
>>98 List.Add;はNew(p)でした。
>>99 14430000件以上もレコードがあるのですが大丈夫でしょうか?
>>100Get_Seitosuuは今オーバーロードして新しいの作り始めたんですけど、
そっちのほうをコピーしたのでList.Addが二回も出てきちゃったみたいです。

101 :デフォルトの名無しさん:2007/08/08(水) 02:13:59
>>100
あらかじめ件数分かってるなら配列でいいんじゃない?
すっきりするしポインタで悩むこともなくなる
ちなみに>>99の言ってることは間違ってるから無視していいよ
クラスにしてもCreateする度に内部でメモリ確保してるわけで変わらない
むしろ余計なものが付く分そんなに件数あると有意な差が出てくる

ただその前に、全部メモリに読み込む必要あるの?300MB弱くらいにならない?
SQLで完結しそうにも思えるんだけど

102 :89:2007/08/08(水) 02:27:26
>>101
データを一覧表とグラフに集計してまとめるんです。
横浜市の学校で1990年以降に出来た小学校限定とか、
関西地区を除く地区の生徒数2000人以下の学校限定とか、
これを検索ボタンを押したら、条件変更ボタンですぐに一覧表とグラフを変えないといけないんです。
2秒以内に表示しなおすことが前提なのでいちいちSQLを使って取得している時間が無くて、
メモリに確保したままにしてグローバルから読み込もうと思ったんです。

103 :デフォルトの名無しさん:2007/08/08(水) 02:27:37
> 14430000件
ふつうは、DB使う罠w

104 :89:2007/08/08(水) 02:40:36
>>103 使ってますよ。
SQLで取得したデータをどうするかで悩んでるんです。

105 :デフォルトの名無しさん:2007/08/08(水) 02:41:15
>>102
やっぱりSQL発行すれば済む問題じゃないかな
ひょっとしてDBから1件ずつ取得して比較してると時間がない、なんて思ってるのかもしれないけど、
SQLってのはそういう条件で絞り込んで結果だけ返してくれる道具ですよ?
コード見てる限り高速検索アルゴリズムを自分で実装するってわけでもなさそうだし、
素直にSQL出しといた方がよっぽど早いかと思われます。

106 :89:2007/08/08(水) 02:47:00
>>105 SQLは使ってますよ。
SQL使って取得したデータをいち早く表示するために考えたのが、
「取得したらグローバル変数に格納する」なんです。
ですけど、いちいちSQLでデータを取得して書き込みだと、
データを一時変数に代入するのに時間がかかりすぎていて困っているのです。
条件ボタンを押すたびに一千万件以上のデータをSQLから取得していくと、
時間がかかりすぎといわれるのです。

107 :デフォルトの名無しさん:2007/08/08(水) 03:01:33
バックエンドにDB使ってて、その中身をまんま持ってきて、
フロントエンドの言語のデータ構造に入れ込む状況が思い浮かばん

108 :89:2007/08/08(水) 03:15:30
>>107
DBへのアクセスは専用のフォームを使っているんです。
ですけどデータ表示とかはおのおののフレームが担当しているんです。
DBへアクセスした後そのフォームが別のグリッドやリストビュー、グラフにアクセスするのはおかしいし、
引数に渡すのも不自然だし、フレームに書いていくと修正が大変なので。

109 :デフォルトの名無しさん:2007/08/08(水) 04:27:16
>>106
どうも読んでる限りではDBを使いこなせてないみたいだね
SQLは色んな書き方があるから、まずはそれを学ぶといいよ
SQLってのは単にレコードを1件1件読むためのものじゃない

また、1000万件以上の処理ということに変な思い込みを持ってるようだけど、
DBを使う場面ってのは大抵それと同じかそれ以上の件数のレコードを扱うよ
だからそれぞれのDBだってほとんどの場合それに耐えうるように設計されてる

110 :89:2007/08/08(水) 04:38:09
>>109
分かりました。もうちょっとSQLも勉強したいと思います。
そういえば此処に来たら何を調べていたのか忘れていましたが、
今思い出しました。

TListだとSQLに変わるので、TObjectListを使おうと思ったのですが、
var
Ob:TObject;
begin
Ob:=TObject.Create;
ObjectList1.Add(Ob);
Ob:=TObject.Create;
ObjectList1.Add(Ob);
end;
と言うように同じ変数にCreateを複数回も使ってもエラーとか言わないでしょうか?
また前にObjectListにAddしたオブジェクトは破棄されたり変な値が入らないでしょうか?
それと共にグローバルにおいて、関数が終了したら不正なデータに代わるとか無いでしょうか?

111 :デフォルトの名無しさん:2007/08/08(水) 08:34:19
Q 同じ変数にCreateを複数回も使ってもエラーとか言わないでしょうか?
A 同じ変数にCreateしたものを複数回代入してもエラーにはならない。 
  ただメモリーリークに注意しなければいけないが、この場合は他の管理方法に委ねているので大丈夫

Q 前にObjectListにAddしたオブジェクトは破棄されたり変な値が入らないでしょうか
A Createによりヒープにオブジェクトが作成され  Addでその参照が管理されるだけなので、それは杞憂

Q 関数が終了したら不正なデータに代わるとか無いでしょうか?
A オブジェクトはヒープにしか作成されない(スタックには作成されない)ので杞憂


なおTObjectのインスタンスを作成してるけど、これは単なる例?
TObjectList を使うより、record を使って型を作り
array of TMyRecord ; のような、動的配列の方が扱い易いよ


112 :デフォルトの名無しさん:2007/08/08(水) 11:07:18
2秒以内か。データベースサーバー何使って、Delphi側はからデータベースに接続するのに
BDE使ってるの?ADO使ってるの?BDEのこと忘れたけど、ADOならTADODataSetのCacheSizeプロパティで
一度に取り出す行数制限できるからそれ使えば?一度に1千万のデータなんか画面に表示できないから、
一度に1千万のデータなんて読み込まなきゃいいだけ。

113 :ななしへたぐらま ◆XcB18Bks.Y :2007/08/08(水) 11:45:03
>>110-111
TObjectListはデフォルトで項目オブジェクトを所有します.
つまりリストをクリアしたりオブジェクトを解放すると全項目のオブジェクトを解放します.

TListのような参照するだけのリストを作りたい場合は
コンストラクタで引数にFalseを指定するか
(ナントカ := TObjectList.Create(False) )
生成後にOwnsObjectsプロパティにFalseを代入すると
(ナントカ.OwnsObjects := False )
所有しなくなります.
つまりリストをクリアしたりオブジェクトを解放しても項目のオブジェクトは解放されなくなります.


114 :デフォルトの名無しさん:2007/08/08(水) 12:11:06
Turbo Delphi Explorerで
Delphi 7と同じ規格?で作ることできますでしょうか?

115 :89:2007/08/08(水) 12:37:31
>>111
詳しい情報有難うございます。
TObjectは例で実際には構造体を使うのですが、動的配列のほうが速いのですか?

>>112
FireBirdとIBQueryを使っています。

>>113
標準だと参照型じゃないんですね。
参照型だと関数が終了した時に代入していたローカル変数をうやむやにして、
変な所を参照してしまうみたいで。でもそんな心配ないのですよね?

116 :ななしへたぐらま ◆XcB18Bks.Y :2007/08/08(水) 15:35:15
>>115
Delphiのオブジェクト変数(キーワードclassを使うもの)は常にポインタです.
つまりDelphiのオブジェクト変数はそのオブジェクトの場所を覚えているに過ぎません.

そしてTObjectListはオブジェクトの場所の一覧です.
TObjectListのAddメソッドではオブジェクトの場所が渡されて内部のリストにこの場所を書き足します.

たとえば以下のようなコードだと

TMyForm = class(TForm)
private
 FList: TObjectList;
 procedure Nantoka;
end;

procedure TMyForm.Nantoka;
begin
 obj := TMyObject.Create; // @
 FList.Add(obj); // A
end;

@でオブジェクトが生成されてその場所が変数objに書き込まれます.
Aでリストにそのオブジェクトの場所が渡ります.
メソッドNantokaを抜けると変数objは消滅しますがオブジェクトそのものは残ります.
(目的のビルの場所を書いたメモが捨てられてもそのビルが消滅するわけではないのと同じです)

リストはオブジェクトの場所しか見ていないので
変数objが消滅しても見てはいけないところを見てしまう心配はありません.

これはリストが項目オブジェクトを所有する場合もしない場合も全く同じです.


117 :デフォルトの名無しさん:2007/08/08(水) 15:38:02
>>114
 コンパイラそのものはD7から殆ど変わってない。ライブラリも殆ど同じ。

>>115
>TObjectは例で実際には構造体を使うのですが、動的配列のほうが速いのですか?

いちいちオブジェクトをCreateするより、構造体の動的配列の方が一度にメモリを確保するから
多少速度も上がると思うよ。

サイズが判らない場合でも、動的配列は最初に多めにとって、足らなくなったらまた多めにとって
というようにやればいい。

118 :89:2007/08/08(水) 15:48:00
>>116
だと本来出てこない値が出てきてしまうのは何故でしょう?

>>117
procedure TFrame1.ListSwitch(List1: TList; var List2: array of TSeitoSuu_Rec);
var
i:integer;
p:PSeitoSuu_Rec;
begin
SetLength(List2,List1.Count);←互換性の無い型です。
for i:=0 to List1.Count-1 do
begin
p:=POPE004_Rec(ListA[i]);
list2[i]:=p^;
end;
end;

と成ってしまいます。
どうしたら再定義できますか?

119 :デフォルトの名無しさん:2007/08/08(水) 15:55:18
>>118
関数の引数でソレをやったら、動的配列ではなくなる
Type TArraySeitoSuu_Rec = array of TSeitoSuu_Rec; と動的配列型を定義しておいてから

procedure TFrame1.ListSwitch(List1: TList; var List2: TArraySeitoSuu_Rec);

とやらないと


120 :89:2007/08/08(水) 15:59:06
>>119解決しました。
皆さん有難うございました。

121 :デフォルトの名無しさん:2007/08/08(水) 16:06:21
こんなレベルの人が学校関係のDB扱う仕事やってんのか…
そりゃ情報流出しまくるよなとおもた

122 :デフォルトの名無しさん:2007/08/08(水) 16:19:47
引数で 動的配列のような格好の定義が出たら、ソレはオープン配列パラメータだ

123 :デフォルトの名無しさん:2007/08/08(水) 19:11:06
また匿名でコテハン叩きか

キャノンかダかな?



124 :デフォルトの名無しさん:2007/08/09(木) 10:19:34
Delphi4 Pro を使ってます。
それでKOL(EXEのサイズが小さくなるやつ)を使いたいと思って
KOLとMCKをDLして同じフォルダに解凍、「開く」からDelphi4用の
パッケージ(.dpk)を開き、インストールを選択。
でもKOLaddが無いと怒られてしまった。
オフィシャルからKOLadd.zipを何度DLしても
解凍しようとすると「破損してる」って言われるし・・・

どこが間違ってるんでしょうか?

125 :デフォルトの名無しさん:2007/08/09(木) 17:00:21
メモ:

TNT Unicode Controls 配布場所

Silverpoint Development
http://club.telepolis.com/silverpointdev/sptbxlib/support.htm#installation

http://club.telepolis.com/silverpointdev/sptbxlib/TntUnicodeControls.2.3.0.zip



126 :デフォルトの名無しさん:2007/08/09(木) 17:03:09
>>114
Explorer版は、コンポーネントのインストールができないので、
Delphi7で、コンポーネントを使っている場合は、そのままは移植できない。
THoge.Create(Self)のような、動的生成はできるので、無理やり移すことは一応可能。

(Explorer版ではない有償版や、同規格のDelphi2006では、ほぼ修正なしでコンパイルは通る)

127 :デフォルトの名無しさん:2007/08/09(木) 17:05:46
>>124
ちょっと聞きたいのですが、
KOLってどういう理由で使いたいのですか?
ただ、EXEが小さくなる、という理由だと、はっきりいって、
茨の道を火を付けて歩くことになるので、やめた方がいいです。

128 :デフォルトの名無しさん:2007/08/09(木) 18:49:40
コンポーネントのツールパレットを、キーボードで、検索したいのですが、
部分一致で検索する方法はなかったでしょうか?
通常は前方一致だけのようです(というか、THogeなら、hogeにヒットする)

環境は、Delphi2006

129 :デフォルトの名無しさん:2007/08/09(木) 21:18:58
>>127
だな。
UPXMask を勧めとく

130 :ななしへたぐらま ◆XcB18Bks.Y :2007/08/09(木) 22:27:40
>>118
本来出てこない値について結局わからなかったので適切な答を出せませんでした(すいません).


131 :89:2007/08/09(木) 23:55:07
>>130
本来出てこない値とは取得したデータが>>97のレコードだった場合に、
本来、Modelは-1〜1しかないのに適当な値(118927354等)や
>>97では書き忘れていたんですけど、F_KT_GakkoMei:String;があって、
そのF_KT_GakkoMeiに取得用SQLがそのまま書かれていたりするんです。

解決したんですが、新たな所でつまずいてここにもう一度来ました。
TFrame1のプライベート静的配列を宣言したんです。
ListA:array[1..3]of char;と言う具合に
そして>>118のListSwitchの中で
ListA[0]:='0';
ListA[1]:='T';
ListA[2]:='F';
代入するようにしてButton1Clickの中でListSwitchを呼ぶのですけど、
Button1Clickの関数を一度通り抜けるとListFは('','','','','','','',...)となって、
次にアクセスしようとするとおかしくなるのです。
解決する方法は無いのでしょうか?
どうか教えてください。

132 :デフォルトの名無しさん:2007/08/10(金) 00:09:13
ListFって何?

133 :89:2007/08/10(金) 00:22:57
>>132
ListAでした。結構打ち間違えますね。

134 :デフォルトの名無しさん:2007/08/10(金) 00:33:55
Button1Clickからその後のListAの確認するまでの間でぶっ壊してるんだろ
コードも晒さずに解決法など出るわけ無いと何度

135 :デフォルトの名無しさん:2007/08/10(金) 00:34:44
あとコード出す時は再現できる最小のコードでな

136 :デフォルトの名無しさん:2007/08/10(金) 04:03:24
>>131
ご自分で宣言した添え字をお忘れですか?

137 :デフォルトの名無しさん:2007/08/10(金) 04:38:35
>>134-135
わかったか?能無しは黙ってろってことだ。

138 :ななしへたぐらま ◆XcB18Bks.Y :2007/08/10(金) 12:11:35
>>131
>>118のコードですが
3バイトの文字配列であるListAの内容を無理矢理POPE004_Rec型だと解釈させていることになります.
POPE004_Rec型は恐らくTOPE004_Recっていうレコード型を定義していて
それに対するポインタ型(レコードのある場所を指す型)なのだと思いますが

> ListA[0]:='0';
> ListA[1]:='T';
> ListA[2]:='F';

という文字の並びを4バイトのアドレスだと解釈すると$??465430番地になります.
当然この場所は意味をなしませんからList2[i]にはでたらめな値が入っていると思われます.

このコードはコピー元がでたらめになるだけなのでListAの内容を壊しているわけではないと思われます.
しかし似たようなミスをほかの場所でもやらかしてListAの内容を壊している可能性は低くないと思います.


139 :デフォルトの名無しさん:2007/08/10(金) 15:22:57
フォームからドラッグしてデスクトップやエクスプローラにドロップする
処理はどうしたら良いんでしょうか?
エクスプローラからアイテムをドラッグしてフォームにドロップする
処理は彼方此方で見かけるんですが、その逆が見つかりません・・・

140 :デフォルトの名無しさん:2007/08/10(金) 15:43:19
ドロップして単にショートカット を作るというような事なら、そのままマウスイベントで処理すればいい
ドロップして独自の動作をさせるものを貼り付けるというような事なら シェルエクステンションを作成しないといけない


141 :デフォルトの名無しさん:2007/08/10(金) 17:04:51
みなさんは、
・配置したコンポーネント名:
・フォーム名:
・フォームのユニット名:
をどのように決めてますか?

コーディング規約に属すると思いますが、
参考までにお聞きしたく。
(どこかに記述あったかなあ?)

私の場合は、
・配置したコンポーネント名:TPanelなら、 HogePanel
・フォーム名:メインフォームなら MainForm、他、HogeForm
・フォームのユニット名:MainFormUnit、HogeFormUnit
としてます


142 :128:2007/08/10(金) 17:27:44
Delphi 7以降の IDEの新機能
http://dn.codegear.com/no/article/34361

これによると、
http://dn.codegear.com/article/images/34323/ToolPalette.gif
部分一致検索が標準でできるように見えるのですが、
どうやったらいいんでしょ・・・

143 :128:2007/08/10(金) 17:42:45
こちらのプラグインで部分一致検索はできるようですが、
>>142のアニメーションが解せないなあ・・・

D_DevLog DDevExtensions
http://ddev.blog46.fc2.com/blog-entry-57.html

DelphiSpeedUp Delphi/BCB/BDS IDE plugin
http://andy.jgknet.de/dspeedup/index.php?page=DDevExtensions



144 :デフォルトの名無しさん:2007/08/10(金) 18:00:53
デルファイはもうやめtロケ、最近、ザイリンクスのハードウエアみたいなプログラミング
が面白い

145 :デフォルトの名無しさん:2007/08/10(金) 18:24:56
確かに VHDLはpascalに似てるけど、このスレで話題にするより他のスレでお願いね

146 :デフォルトの名無しさん:2007/08/10(金) 19:16:13
ヘルプの表示項目をカスタマイズすることはできないでしょうか?
具体的には、Win32のDelphiだけを表示したいです。

WinHelpの時代は、手動でカスタマイズできたのですが・・・

環境は、Delphi2006です。

147 :146:2007/08/10(金) 19:22:10
メニューの「ヘルプ」「ページのフィルタの編集」で、
デフォルトの表示を編集しようとしたのですが、フィルタなしを
 ("DevLang"="Delphi") OR ("DocSet"="bds_Win32")
に、カスタマイズして、Saveをしても、

>このページのスクリプトでエラーが発生しました。
>'undefined'は、Nullまたはオブジェクトではありません。

と出てしまいます。


148 :146:2007/08/10(金) 19:40:48
("DevLang"="Delphi")
だけにしたら、Saveできたけど、
空欄にしたり、変更するとエラーが出て、もどせなくなってしまった。

orz

「フィルタなし」を空欄にしてSaveした場合
---------------------------
Microsoft Internet Explorer
---------------------------
Filter cannot be saved without a definition
---------------------------
OK
---------------------------

("DocSet"="bds_Win32")で、Saveした場合
---------------------------
Microsoft Internet Explorer
---------------------------
All keywords and attributes must be enclosed with in double quotes ( " ).
Please correct your text for this filter definition.
---------------------------
OK
---------------------------
ちゃんと " つけてるよ・・・ orz

149 :146:2007/08/10(金) 19:50:24
試行錯誤していたら、うまく設定を保存できました。

「ページのフィルタの編集」で、
Newして、
 ("DevLang"="Delphi")
と書いて、Save Asで、「(デフォルト)」と書いて保存したらうまくいきましたヽ( ´ー`)ノ
括弧()つけると最初の項目になり、デフォルトで選択されるようです。

さらに、
("DocSet"="bds_Win32") OR ("DevLang"="Delphi")
にすると、うまくエラーが出ずに保存できました。
(エラー出たりでなかったりするので、うまくいかないかもしれませんけど)

150 :デフォルトの名無しさん:2007/08/10(金) 22:26:19
>>142-143
つ インクリメンタルサーチ

151 :デフォルトの名無しさん:2007/08/10(金) 22:54:52
ドキュメントのない開発環境はドキュンだな・・・

152 :デフォルトの名無しさん:2007/08/10(金) 23:01:32
座布団一枚...

食え

153 :デフォルトの名無しさん:2007/08/11(土) 05:06:14
>>139
OLE Drag&Drop

>>141
それがいいと思う。

154 :デフォルトの名無しさん:2007/08/11(土) 13:33:07
>>150
だから困るんですよ
なんで、部分一致検索じゃないかと・・・

155 :デフォルトの名無しさん:2007/08/11(土) 17:30:58
>>154
別に誰も部分一致検索じゃないなんて言ってないけど

156 :デフォルトの名無しさん:2007/08/11(土) 18:29:36
いやだから、部分一致検索じゃないから、困ってるんです。


157 :デフォルトの名無しさん:2007/08/11(土) 19:50:48
ドキュメントのない開発環境はドキュンだな・・・

158 :デフォルトの名無しさん:2007/08/11(土) 20:06:02
>>156
はぁ?部分一致検索じゃん
勝手な思い込みで困ると書かれても困るんですけど
第一プラグインで解決したんじゃないの?じゃあもういいだろ

159 :デフォルトの名無しさん:2007/08/11(土) 21:02:44
>>158
プラグインで問題は、解決はしましたが、
うちの2007では部分一致ではなく、前方一致です。
解せません。


160 :デフォルトの名無しさん:2007/08/11(土) 21:03:30
すみません、2006でした。

161 :デフォルトの名無しさん:2007/08/11(土) 21:05:31
二つの環境で試しましたが、両方とも、前方一致検索でした。
なんで、デフォルトでこんな不便な仕様なんだろう・・・

162 :デフォルトの名無しさん:2007/08/11(土) 22:23:05
画像を任意の角度だけ回転させるような手続き
Rotate(TImage, kakudo) みたいなのは標準でありますか?

163 :デフォルトの名無しさん:2007/08/11(土) 22:30:02
ない。

164 :デフォルトの名無しさん:2007/08/11(土) 22:31:11
そうですか
じぶんで描くしかないみたいですね

165 :デフォルトの名無しさん:2007/08/11(土) 22:37:48
コンポーネントさがす

166 :デフォルトの名無しさん:2007/08/11(土) 22:42:58
GDI+を使う

167 :デフォルトの名無しさん:2007/08/11(土) 23:15:38
TImage は画像じゃないよ

168 :デフォルトの名無しさん:2007/08/12(日) 10:29:47
http://www.asahi-net.or.jp/~HA3T-NKMR/DGS/

169 :デフォルトの名無しさん:2007/08/12(日) 12:08:42
TBigBitmapCanvas って塗りつぶしうまくいかないよね。

170 :デフォルトの名無しさん:2007/08/12(日) 13:13:58
回転にCanvasはつかわないしょ。
普通に補間関数書いて、座標変換するだけ。

171 :デフォルトの名無しさん:2007/08/12(日) 15:50:19
>>170
> 普通に補間関数書いて
それが意外と難しい罠。

172 :デフォルトの名無しさん:2007/08/12(日) 23:47:28

Threadの扱いで困っています。

Thread内でエラーが出た時に、ユーザーにしらせたいのですが、
どうするのがよいのでしょうか?

今は、Threadは、ひとつだけなので、
メインスレッドで、FThread: THogeThread; として、
サブスレッドの変数をもたせ、

開始時は、

FThread := THogeThread.Create(False);

とし、サブスレッド停止時には、スレッドの終了を待つように、

procedure TMainThread.StopThread;
begin
 if Assigned(FThread) then begin
  FThread.Terminate;
  FThread.WaitFor;
  FreeAndNil(FThread);
 end;
end;

としています。



173 :172:2007/08/12(日) 23:48:21
そして、サブスレッド内で、エラーが起きた場合
Synchronize で、メインスレッドでエラーをポップアップし、
Terminate; を呼び出しています。

しかし、こうすると、メインスレッドから、停止処理(StopThread)を呼ぶのはよいのですが
サブスレッドで、エラーが起きた場合は、
FThread が、終了したにも関わらず、FThreadが、保持された状態になります。
次に開始したときは、また生成してしまい、メモリリークになります。

こういうときはどうするのが良い方法なのでしょうか?
それとも、FThreadを持たない方法がよいのでしょうか?
(その場合、どうやってスレッドの終了を待てばよいのか……?)

174 :172:2007/08/12(日) 23:49:04
あ、よく考えたら、

サブスレッド開始時に、StopThread呼べばいいのか・・・

175 :172:2007/08/12(日) 23:55:04
もしくは、スレッド一個なら、最初から生成しておく方法でもいいですね。
メインスレッド(メインフォーム)生成時に、生成しておいて、

SyncObj.TSimpleEvent を使って、イベント待ちにして、
スレッド開始時には、TSimpleEvent .SetEvent;する。
スレッド停止時は、フラグを立てて、ループを抜け、イベント待ちにもどる、と。

で、メインスレッド破棄時のみ、TMainThread.StopThread を呼び出すと。

176 :172:2007/08/13(月) 00:17:03
結局、
FreeOnTerminate = True; を使って、スレッドを自動的に破棄するようにしたのですが、
アプリケーション終了時に、メモリリークが起きてしまいます。
(ReportMemoryLeaksOnShutdown := True;で確認)

TMainThread.StopThread;のように、スレッドの解放を待つにはどうしたらよいのでしょうか?

177 :172:2007/08/13(月) 00:27:39
>>176に関して、メインスレッド終了時(Destory)に、

 if Assigned(FThread) then begin
  FThread.Terminate;
  FThread.WaitFor;
  FThread := nil;
 end

としていたのですが、
スレッドを起動した状態で、終了すると
「スレッドエラー:ハンドルが無効です。 (6)」というエラー
と言われて、正常に終了できませんでした。

たぶん、Terminateで、スレッドが破棄されているからだと思います。

そこで、

  if Assigned(FThread) then begin
    FThread.FreeOnTerminate := False;
    FThread.Terminate;
    FThread.WaitFor;
    FreeAndNil(FThread);
  end;
としたところ、無事に正常に終了できました。
ありがとうございました。

でも、FThreadを持たず、複数Createする時はどうやって待つんだろ……



178 :デフォルトの名無しさん:2007/08/13(月) 01:53:30
TTabControlのDragModeをdmAutomaticにすると
タブをクリックしても選択されないのは仕様ですか?
そうするとOnMouseDownやOnMouseUpイベントも呼び出されてないみたいだし、
自前でやるしかないんですか?

179 :デフォルトの名無しさん:2007/08/13(月) 02:09:09
自前でやるのがプログラミングなんだぜ

180 :178:2007/08/13(月) 02:17:21
>>179
そうですか・・・><

181 :デフォルトの名無しさん:2007/08/13(月) 03:33:12
Delphi2007でTNT Unicode Control使うにはどうしたらいんでしょ?
無償版はだめっぽいし、最新の有償版ですら
パッケージ C:\Program Files\tmssoftware\TMSUnicode\Packages\TMSUnicodeDED2006.bpl を読み込めません。
指定されたモジュールが見つかりません。.
ってエラーがでる。(ちゃんとあんのに)

182 :デフォルトの名無しさん:2007/08/13(月) 10:49:40
>>181
パスとおせよ。

183 :デフォルトの名無しさん:2007/08/13(月) 13:18:40
>>182
すみません、通ってるようです。

184 :デフォルトの名無しさん:2007/08/13(月) 14:58:38
>>172-177
Threadから自前のメッセージをポストしてメインスレッドでユーザーに知らせればいいの
では? そしてその時にエラー処理なども一緒にすれば、Threadの方はシンプルにできる
と思うんだけど。

185 :デフォルトの名無しさん:2007/08/13(月) 16:13:30
http://rsdn.ru/article/delphi/Handlers.xml
ページみてるんですが、

type
 TCalcFunction = function(const A, B : integer) : integer;

function Add(const A, B : integer) : integer;
begin Result := A + B;end;

procedure Example;
var CalcFunction : TCalcFunction;
begin
 CalcFunction := Add;
 ShowMessageFmt('CalcFunction(2, 3) = %d', [CalcFunction (2, 3)]);

なんでこういうふうにわざわざやるんでしょうか?
どういうときにこういうのを使うんでしょうか?

186 :デフォルトの名無しさん:2007/08/13(月) 16:25:16
いや別にいやだったら本人の好きなようにやればいいんじゃないの?

187 :デフォルトの名無しさん:2007/08/13(月) 16:26:25
>>185
自由に関数を切り替えるためじゃない?例えば
var


188 :デフォルトの名無しさん:2007/08/13(月) 16:28:05
>>185
理由はそのページの説明文に書いてあるぞ

189 :187:2007/08/13(月) 16:37:52
ごめん、途中で送信しちゃった。

var
  SomeFunction : array[0..3] of TCalcFunction;
として
  SomeFunction[0] := Add;
  SomeFunction[1] := Sub;
  SomeFunction[2] := Multi;
  SomeFunction[3] := divi;
と代入すると(それぞれの関数は宣言してあるとする)。
  SomeFunction[a](2, 3) でaの値を変えるだけで関数を切り替える事ができる。

190 :デフォルトの名無しさん:2007/08/13(月) 16:43:46
関数ポインタの使いどころって意味なら
C言語の例だけどqsortで検索してみたら。

191 :デフォルトの名無しさん:2007/08/13(月) 17:11:48
>>185 えーそうなんですけ?
>>189 条件分岐を不要にできるんですか。これは使ってみたいです。
>>190 かえってわかんなくなってしまいました><
ありがとうございました。

192 :ななしへたぐらま ◆XcB18Bks.Y :2007/08/13(月) 22:29:46
>>189 Delphiだと「手続き型」になりますがTListやTObjectListのSortメソッドがそれに相当しますね.
サンプルを作ってみたのですがちょっと長すぎるのでぐぐってみました.
(ほかのサンプルは Delphi TList Sort でぐぐるとよいかも)
http://www.smart-bbl.info/CQN/FAQ/delphi/d0009394.html

TList.Sortでは手続き型を使うことによって「データをどういう順番に並べ替えるかを決める処理と,
その条件に従って実際に並べ替える処理とが完全に分離」しています.

どんな形式のデータを並べ替えさせる場合でも,どんな順序で並べ替えさせる場合でも,
その条件に従って並べ替える方法はほぼ決まっているので,
結果としてリストを使うプログラマーは前者のコードを書くだけで済むようになり,
プログラマーが毎回並べ替えのコードを書くという無駄な作業から解放されるのです.

ちなみに上のページのサンプルコードではスタッフを年齢順にソートしていますが名前順にソートすることもできます.

function StaffSortCompareByName(Item1, Item2: Pointer): Integer;
begin
 Result := AnsiCompareText(PStaff(Item1)^.Name, PStaff(Item2)^.Name);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 StaffList.Sort(StaffSortCompareByName);
end;

ボタン1を押すと年齢順でソートされてボタン2を押すと名前順でソートされます.実質1行で.


193 :デフォルトの名無しさん:2007/08/13(月) 23:27:52
一番身近な関数ポインタは「イベント」ですわ。OnClickとか。





194 :Delフサギコ ◆A6VzDeLphI :2007/08/14(火) 01:26:03
             ___________
    ∧,,∧     /こんな風にすると
   ミ,,゚Д゚彡 <  おもしろいよ。
   ミ つ日   \
 〜ミ,,,,,, ,,ミ       ̄ ̄

type
 TCheckLineFunction = function(Line: String): Boolean;
 TStringListFunction = record
  FStrings: TStrings;
  constructor Create(Strings: TStrings);
  procedure DeleteLine(f: TCheckLineFunction);
 end;
constructor TStringListFunction.Create(Strings: TStrings);
begin
FStrings := Strings;
end;
procedure TStringListFunction.DeleteLine(f: TCheckLineFunction);
var
 i: Integer;
begin
 for i := FStrings.Count - 1 downto 0 do
 begin
  if f(FStrings[i]) then
  begin
   FStrings.Delete(i);
  end;
 end;
end;


195 :Delフサギコ ◆A6VzDeLphI :2007/08/14(火) 02:14:32
             ___________
    ∧,,∧     /
   ミ,,゚Д゚彡 <  以下、使い方。
   ミ つ日   \
//空行を判定している
function CheckEmptyTextLine(Line: String): Boolean;
begin
 if Line=EmptyStr then
  Result := True
 else
  Result := False;
end;

var
 StringListFunc: TStringListFunction;
begin
   StringListFunc.Create(OutputMemo.Lines);
   StringListFunc.DeleteLine(CheckEmptyTextLine);

end;

関数側で、Lineの内容を判定して、判定がTrueなら
行削除する処理を行えるわけです。



196 :デフォルトの名無しさん:2007/08/14(火) 11:39:22
指定のアプリーションに、アクティブにせずに、キー入力を送りたいのですが、
可能でしょうか?
可能ならば、どのようにやったらよいのでしょうか?
検索単語でもいいので、ご享受ください

197 :デフォルトの名無しさん:2007/08/14(火) 11:39:43
最近は1つ質問すると10回答が来たり、自問自答がはやってるのか?
いやぁ、夏枯れですねぇ。

よきかな、よきかな・・・

198 :デフォルトの名無しさん:2007/08/14(火) 13:58:05
>>196
sendmessage

199 :デフォルトの名無しさん:2007/08/14(火) 14:51:59
>>198
サンクソ。
PostMessageと、SendMessageっぽいですね。
調べてみます。

200 :デフォルトの名無しさん:2007/08/14(火) 16:22:30
>>194 動かしてみたらなるほどおもしろいと思いました。
ありがとうございました。


201 :デフォルトの名無しさん:2007/08/14(火) 16:32:17
最近は1つ質問すると10回答が来たり、自問自答がはやってるのか?
いやぁ、夏枯れですねぇ。

よきかな、よきかな・・・

202 :デフォルトの名無しさん:2007/08/14(火) 20:44:16
こんにちは。

TnTコントロールとOpenXMLにパスを通してコンパイルすると、
以下のように、言われてコンパイルが通りません。
なんとか、通す方法はないでしょうか?

[Pascal 致命的エラー] TntClasses.pas(29): F2051 ユニット WideStrings は異なるバージョン WideStrUtils.WideQuotedStr によりコンパイルされています

203 :202:2007/08/14(火) 20:51:30
わかりました。

TnTから利用している VCL の WideStrUtils と、
OpenXML内の WideStrUtils がファイル名がかぶっているためでした。

Delphiは、ファイル名が、同じだと不都合でるんですね・・・
勉強になりました

204 :デフォルトの名無しさん:2007/08/15(水) 00:32:27
また自問自答か・・・

205 :デフォルトの名無しさん:2007/08/15(水) 00:45:58
自ら成長する
いいことじゃないか

206 :デフォルトの名無しさん:2007/08/15(水) 01:02:33
ファイル名が同じだと、dcuファイルの出力先で上書きされるんじゃないのか?

207 :デフォルトの名無しさん:2007/08/15(水) 02:45:07
Delphi and Programming
http://d.hatena.ne.jp/wkmghn/

今の時期にDelphi入門記事が・・・
よきことです。

208 :デフォルトの名無しさん:2007/08/15(水) 05:07:50
まあ投げっぱなしで二度と来ない奴よりは数千倍マシだな

209 :デフォルトの名無しさん:2007/08/15(水) 09:57:37
Delphi6だとTLabelのcolorプロパティを設定すれば即座に反映されますが
Delphi2007だと設定しても反映されません。

Delphi6で作成したプロジェクトをDelphi2007でコンパイルして実行すると
設定した色になりますが、最初からDelphi2007で作成するとコンパイルしても
色が灰色のままです。 (;_;)



210 :デフォルトの名無しさん:2007/08/15(水) 10:59:21
やったじゃん!

211 :デフォルトの名無しさん:2007/08/15(水) 14:23:46
>>209
VCL ソースでは property Color nodefault; になってるね。
コードで変えても変わらないわけだ。

212 :デフォルトの名無しさん:2007/08/15(水) 14:26:01
ありゃ核爆

213 :デフォルトの名無しさん:2007/08/15(水) 18:43:53
各Windowの位置の保存は、みなさん、どう実装していらっしゃるのでしょうか?
既存のコンポーネントを使っておられますか?

214 :デフォルトの名無しさん:2007/08/15(水) 18:44:51
Torryのページに、そのまんまのカテゴリがありました。

Components > Forms > State savers. Torry's Delphi Pages
http://www.torry.net/pages.php?id=96


その中のこれが、使いやすそうです。
ありがとうございました。

DelphiDabbler.com || Window State Components - Save and restore window size, state and position
http://www.delphidabbler.com/software?id=wdwstate


215 :デフォルトの名無しさん:2007/08/15(水) 20:10:50
自問自答って、あらたな拡販の手口?
あほすぎるのは、お笑い系?

216 :デフォルトの名無しさん:2007/08/15(水) 20:16:29
>>214のコンポーネントは、けっこう便利そうです。

普通に使う分には、TPJWdwStateをFormにはっつけて、
AutoSaveRestore を Trueにいておけば、
自動的に、終了時にサイズ、位置、WindowStateが .ini に保存され、
起動時に復元されます。
(レジストリ版のコンポーネントもあります)

簡単な用途なら、コードを書く必要がないのが便利です。

217 :172:2007/08/15(水) 20:18:38
>>184
なるほど!メッセージを投げるのは思いつきませんでした。
簡単にできて、すっきりしますね
参考になりました。
サンクス。

218 :デフォルトの名無しさん:2007/08/15(水) 20:25:02
それをラップしたのがSynchronizeなわけで。
エラー通知に使っちゃいけないという理由はない。

219 :デフォルトの名無しさん:2007/08/15(水) 22:38:48
>>216
簡単な用途ならこーどでいいんでないかい?

220 :Delフサギコ ◆A6VzDeLphI :2007/08/16(木) 00:32:02
           _____________
   ∧,,∧    />>213さん
  ミ,,゚Д゚彡 < 漏れは自作
   U  つ   \
 @ミ  ミ       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ∪''∪ 

DelFusa Library - Delphi OpenSource - DelFusa Floor
http://delfusa.main.jp/delfusafloor/opensource/delfusa_library_f.html
の、FormPosition.pas

221 :デフォルトの名無しさん:2007/08/16(木) 00:34:23
簡単な、それでいて反復性のあるコードをまとめたのがコンポーネントだし、
どんな用途でも使っていけばいいんでないかい?

てか自問自答に恨みでもあるかのごとく噛み付いてるのがいるけど、
ここのスレタイと>>1を理解できてないようじゃ初心者以下だよな
いくら下らないことでも、それに引っかかる人間が今後いるかもしれないし、
解決方法を残しておくことは決して悪くない、むしろいいことだと思う
ただ、ここに来る人間は過去ログ読まない人の方が多そうだが…

222 :デフォルトの名無しさん:2007/08/16(木) 00:35:37
また自問自答してるよ

223 :デフォルトの名無しさん:2007/08/16(木) 03:36:51
超初心者が枯渇したため、これからこのスレは自問自答を装った
Tips スレになりそうだな。www

224 :デフォルトの名無しさん:2007/08/16(木) 03:43:28
それはそれで

225 :デフォルトの名無しさん:2007/08/16(木) 05:20:50
みじめすぎ

226 :悲劇のヒロイン:2007/08/16(木) 05:26:32
ありがとう

227 :デフォルトの名無しさん:2007/08/16(木) 08:21:26
>>VCL ソースでは property Color nodefault; になってるね。
>>コードで変えても変わらないわけだ。

なぜこんな事をしたのでしょうか?

Delphi6 と 2007 のソース比べてみましたが、かなり変更されていますね

ソースを見ても ThemeServices なんて知らないものがいっぱいだし
ヘルプは英語で、お手上げです。

せっかく2007入れたけど Del6 を 入れ直します (;_;)

228 :デフォルトの名無しさん:2007/08/16(木) 08:32:18
おめでとう

229 :デフォルトの名無しさん:2007/08/16(木) 08:43:22
property Color nodefault;  には D7 の段階から変更されているよ 何か勘違いしてないかな?

230 :|:2007/08/16(木) 09:01:45
LabelのColor property使ったことなかたから気付かなかった。
よくわからんだが、意味のないものになってるの?

>>220
サンクスです。

Delフサさんのページあったのですね。
参考にさせてもらいます。


231 :デフォルトの名無しさん:2007/08/16(木) 11:10:28
>property Color nodefault;  には D7 の段階から変更されているよ 何か勘違いしてないかな?

そうあって欲しいです。Del7はアンインストールしてしまったので
すぐに解りませんが、後で試してみます。


>LabelのColor property使ったことなかたから気付かなかった。

私も今まで色には無頓着だったのですが、今回のシステムは先行したVB
のプログラムで色を豊富に使っているため、絶対使わないと駄目なんです。

まさかこんなところではまるとは (@_@)



232 :デフォルトの名無しさん:2007/08/16(木) 11:24:21
はまってごらんよ、あ〜の〜角を〜

233 :DEKO ◆v8todlW3ks :2007/08/16(木) 13:18:10
>>231
TransparentプロパティがTrueになってませんか?
このプロパティはD2007からデフォルトでTrueになっています。

234 :デフォルトの名無しさん:2007/08/16(木) 15:07:34
>TransparentプロパティがTrueになってませんか?
>このプロパティはD2007からデフォルトでTrueになっています。
おっしゃるとおりでした。

Del6はデフォルトでFalseでしたが、Del2007で開くとTrueに変化していました。
困ったことに、この状態でコンパイルすると False 状態で実行されました。

Del2007で一度プロパティを変化させてから保管すれば正しい状態に戻ります。

色々と調べていただきありがとうございました。





235 :デフォルトの名無しさん:2007/08/16(木) 21:13:57
メニュー(A)から、開発中のプロジェクトのプログラム(B)を
起動するようなアプリケーションを作成しています。

起動するアプリケーション(B)を、メニュー(A)を起動した状態で実行したいため、
オプションの「ホストアプリケーションの指定」で、
メニュー(A)のパスを入れたのですが、
実行しても、指定したメニュー(A)ではなく、
プロジェクトのアプリケーション自体(B)が立ち上がってしまいます。

何か他にする設定がありますでしょうか?
環境は、BDS2006 Delphi win32です。


236 :デフォルトの名無しさん:2007/08/16(木) 21:35:36
他のDelphi製アプリの位置やサイズを得たいのですが、
良い方法はありませんでしょうか?

今は、EXEのファイル名から、Windowハンドルを取得するところまで
できたのですが、
GetWindowRectで、Windowハンドルを渡しても、(640, 512, 640, 512)
みたいな予期しない値が帰ってきます。

たぶん、Delphi特有のTApplicationの座標が帰ってきていると思うのですが、
ここから、メインフォームのハンドルを得る方法はありませんでしょうか?

237 :236:2007/08/16(木) 21:50:23
AppHandleにTApplicationのHandleが入っているとして、

 FormHandle := FindWindowEx(AppHandle, 0, PChar('TForm1'), nil);

としたのですが、FormHandleは 0 が返ってきました。

238 :デフォルトの名無しさん:2007/08/16(木) 22:00:14
FindWindowExの理解不足。
所有されているウィンドウと子ウィンドウの違いが解っていないのかもしれない。

239 :デフォルトの名無しさん:2007/08/16(木) 23:38:31
Vista で標準となった? ALT 押したらメインメニューが出てくるのってどうやって実装するのですか?
マウスを上部に持って行ったら…とかなら、MainMenu:=nil で切り替えられると思うのですが、
キーボード主体で行いたいので。

240 :デフォルトの名無しさん:2007/08/17(金) 00:06:40
>>236
すなおにFindWindow('TForm', 'HogeHoge')でよいんでないの。
もしくはTApplicationのHandleを使って、EnumWindowsとか。


241 :デフォルトの名無しさん:2007/08/17(金) 01:10:04
2006→7?

242 :236:2007/08/17(金) 01:29:51
第6章 ウィンドウの階層について
http://homepage2.nifty.com/Mr_XRAY/Halbow/VCL06.html

これ見て、

GetWindow(hParent,GW_CHILD)
でいけるかと思いましたが、ダメでした。
Delphi2006のVCLと、ページの内容のバージョンのVCLとは違うのでしょうか?

>>238
FindWindowExやGetWindowで取得できないということは、
子ウインドウではないのですね・・・。

>>240
単純なFindWindowだと、識別が難しいのです
TApplicationのHandleを使ったEnumWindow試してみるす

243 :236:2007/08/17(金) 01:38:10
なんという勘違い/(^o^)\

第6章 ウィンドウの階層について
http://homepage2.nifty.com/Mr_XRAY/Halbow/VCL06.html

このページよく見たら、わかてきた気がします。

> FindWindowExやGetWindowで取得できないということは、
> 子ウインドウではないのですね・・・。

TApplicationに対して、TFormは、子ウインドウではなく、
所有するウインドウなんですね。

とすると、TApplicationのHandleに対して、
EnumThreadWindowsして、
GetWindow(Handle,GW_OWNER)が、TApplicationのHandleかどうか調べればいいわけですね。
上のページで言えば、EnumDirectOwnedWindowsですね。

明日試してみます

244 :Delフサギコ ◆A6VzDeLphI :2007/08/17(金) 01:48:28
>>236-237さん

DelFusa Library - Delphi OpenSource - DelFusa Floor
http://delfusa.main.jp/delfusafloor/opensource/delfusa_library_f.html
   ∧,,∧
  ミ,,゚Д゚彡
  ,ミ'  ミ
〜OUUつ

ここのEnumWinUnit.pasでWindow列挙も出来るし
得たハンドルをTWinInfoのCreateでハンドルを入れたら
様々な情報をプロパティから読めるようにしておいてるよ。

VCLのメインフォームを得るためには
EnumWindows(@EnumWndProc, 0); {←Topレベルウィンドウなので0を指定}
これとか
function EnumWndProc(h: HWND; l: Integer): BOOL; stdcall;
これを使っていて
EnumChildWindows(h, @EnumChildWndProc, l+1);
これは使ってない。




245 :Delフサギコ ◆A6VzDeLphI :2007/08/17(金) 01:49:24
   ∧,,∧   深夜なのに
  ミ,,゚Д゚彡  気温が暑いっすね〜
  ,ミ'  ミ
〜OUUつ

タスクマネージャーのアプリケーションタブ互換は
VisibleTrue/Owner有り/タイトル有り

TApplication系のメインを見つける場合は
VisibleTrue/Owner無し/タイトル有りで
OwnerがTApplicationのものを列挙で見つけるのが
いいと思うんだ。

例えばホットゾヌの場合
TApplicationにTHotzonuWindowがぶらさがっているのは
TApplicationのハンドルとTHotzonuWindowのOwnerを調べると
一致するから、わかるよ。


246 :Delフサギコ ◆A6VzDeLphI :2007/08/17(金) 01:58:53

♪   ∧,,∧ ♪
    ミ,,゚Д゚彡  ♪
    ミつ[|lllll]).
   〜ミ   ミ
     ∪''∪

勉強すると楽しいよね。がんばってください。

とりあえず、D2007ではTApplicationウィンドウは廃止されますた。

dprの中身が
begin
 Application.Initialize;
 Application.MainFormOnTaskbar := True;
 Application.CreateForm(TMainForm, MainForm);
 Application.Run;
end.
このようになっていて
.MainFormOnTaskbar:=Trueとなると
VCL、TApplication式ではなくVista対応アプリになります。

※Win2Kで、今確認したら
タスクマネージャーのアプリケーションタブに表示されないという
バグがありますが....orz....

247 :デフォルトの名無しさん:2007/08/17(金) 03:57:44
ListViewのOwnerDataをTrueにすると
CheckboxesをTrueにしてもチェックボックスは表示されません
自分でチェックボックスを描画するんですか?><

248 :236:2007/08/17(金) 04:25:44
>>244-245
EnumWindowsで列挙して、OwnerがTApplicationのハンドルと比較
が確実つーことですか。

実験してみるす

公開されているユニットも、参考にさせていただきます。

>>246
マジスカ

249 :デフォルトの名無しさん:2007/08/17(金) 09:39:04
アジャイル、アジャイルってコンパイル速度のめっちゃ速いDelphiじゃすでに当たり前なんだよ

250 :デフォルトの名無しさん:2007/08/17(金) 19:03:18
導入したい超初心者ですが、
コードギアのユーザ登録のZip/Postal code ってなんですか?お願いします。

251 :デフォルトの名無しさん:2007/08/17(金) 19:06:22
中学生からやりなおせ

252 :デフォルトの名無しさん:2007/08/17(金) 19:50:44
郵便番号

253 :デフォルトの名無しさん:2007/08/17(金) 20:35:40
TStringListの各行を下記のように
個別のstringデータに入れたいのでが、

stringA:=List.strings[0];
stringB:=List.strings[1];
stringC:=List.strings[2];
stringD:=List.strings[3];

TStringListの最大行数(せいぜい10行)は決まっているのですが、
実際は1行だけなのか、最大行数まであるのかは分かりません。
こういう場合どうしたらスムーズですかね?
ifで1行の場合、2行の場合ってやっていくしかないでしょうか?


254 :デフォルトの名無しさん:2007/08/17(金) 20:41:15
ほう

255 :デフォルトの名無しさん:2007/08/17(金) 20:49:05
stringlist.count
case文

美しくないな

256 :ななしへたぐらま ◆XcB18Bks.Y :2007/08/17(金) 22:14:01
>>245
どうでもよいことですが「気温が暑い」って言い方は正しくないです.「(やけに)気温が高い」もしくは単に「暑い」でおけ.
わざとならごめんなさい.
>>247
データを自前で持つようにするとチェックボックスは使えなくなるようです.
VCLのバグなのかWindows側の問題なのかいまいちよく分かりません.
>>253
あなたが『List.Strings[]に文字列を代入していないところを読み出そうとしたら空文字列を返すようにしたい』
…と考えていると決めつけてレスします.
{ Index がStrings.Count以上なら空の文字列を返す.0〜(Index - 1)ならStrings[Index]を返す. }
function GetString(Strings: TStrings; Index: integer): string): string;
begin
 if Index < Strings.Count then
  Result := Strings.Strings[Index]
 else
  Result := '';
end;
で,stringA := GetString(List.strings[0]) みたいに使う.

でも「何かを鍵にして複数の文字列を格納し,その鍵を使って文字列を取り出す」ということをしたいのでしたら
Valuesプロパティを使って文字列を鍵にして文字列を格納したり取り出したりする方が良いかもしれません.
procedure TForm1.Button1Click(Sender: TObject);
begin
 Edit_Value.Text := ListBox1.Items.Values[Edit_Key.Text];
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 ListBox1.Items.Values[Edit_Key.Text] := Edit_Value.Text;
end;


257 :Delフサギコ ◆A6VzDeLphI :2007/08/17(金) 23:30:05
    ,,,,,,,,,,,,,,,∧,,∧   /もちろん
  〜′,,,,,,,,,,ミ,,゚Д゚彡<  わざとやがな
   UU"""" U  ⊃  \

いやあ、ご無沙汰っす。元気してます〜?
暑いっすねー。



258 :デフォルトの名無しさん:2007/08/18(土) 00:22:00
初心者スレを荒らすなよ・・・

259 :デフォルトの名無しさん:2007/08/18(土) 01:57:00
文字列とか動的配列は参照カウントとか使ってるのに、
なんでクラスのインスタンスはわざわざFreeしなくちゃならず、
しかもC++みたいにスタックに置いたりできないのですか?

260 :デフォルトの名無しさん:2007/08/18(土) 02:46:29
文字列や動的配列はCopyOnWriteの機能が特に有効に使える型なので標準で実装されているが、
クラスは必ずしもそうとはいえないので各々のクラスの実装に任せている。

スタックに置けないのは、メモリの確保をクラスに委譲する設計を採用している為。

261 :デフォルトの名無しさん:2007/08/18(土) 04:28:45
理由を聞いてるんじゃないでしょ。

「できません」が回答。

262 :デフォルトの名無しさん:2007/08/18(土) 04:32:27
誰か2007洒落にください

263 :259:2007/08/18(土) 04:43:25
>>261
理由を聞いているんですが、何か?

264 :デフォルトの名無しさん:2007/08/18(土) 05:05:07
>>261
文字列とか動的配列は参照カウントとか使ってるのに、
なんでクラスのインスタンスはわざわざFreeしなくちゃならず、
~~~~~~
しかもC++みたいにスタックに置いたりできないのですか?


265 :デフォルトの名無しさん:2007/08/18(土) 06:10:51
>文字列とか動的配列は参照カウント
文字列や動的配列は変数の寿命をそのままメモリ確保の寿命と出来る。
なお、俺がソースを見た範囲では参照カウントは使われていないようだ。
代入時に中身をコピーしてるように見える

クラスの場合、windowsハンドルとかのリソースを持ってる場合があり、
開放時期を自分でコントロールしたい場合も出てくるのと、
自動開放するためには、その参照の代入で 複数の変数が参照してる場合もあり、
参照カウンタなどの管理機構が必要になる。 
なおインターフェース型では参照型でメモリ開放管理が出来るようになっている。

>しかもC++みたいにスタックに置いたりできないのですか?
これは単純に面倒だったからだろう。 その代わりにC++のようにドットと-> を混在させなくてすむ。
try finally の構文もあるし、ユニットという単位を持っていて、ユニット単位にinitialization や
finalizationも書けるので、メモリスコープへの出入りで自動的に
コンストラクタデストラクタを呼ぶような仕掛けを作る必要は無かったのだろう

266 :デフォルトの名無しさん:2007/08/18(土) 06:25:45
よくもまぁ適当なことが書けるもんだなぁ・・・

267 :デフォルトの名無しさん:2007/08/18(土) 06:26:48
>>265
>代入時に中身をコピーしてるように見える
え?StringってCopy on Write じゃないの?

268 :デフォルトの名無しさん:2007/08/18(土) 06:30:05
StringはCopy on write
動的配列は、普通の参照カウンタ

269 :デフォルトの名無しさん:2007/08/18(土) 06:35:37
実装が古い

だけでしょ。

270 :デフォルトの名無しさん:2007/08/18(土) 06:40:36
Stringと動的配列はクラスベースにして
'foo'.UpperCase // = 'FOO'
[1, 4, 3].Add(6).Sort // = [1, 3, 4, 6]
とかできるようにしてもらいたいね。

271 :デフォルトの名無しさん:2007/08/18(土) 07:43:28
>>269
いやC++のほうが古いよ。
C++の二の舞にならぬようこの方法になった。

272 :デフォルトの名無しさん:2007/08/18(土) 08:18:00
知ったか乙

273 :デフォルトの名無しさん:2007/08/18(土) 08:42:09
文字列の構造は
StrRec = packed record
  allocSiz: Longint;
  refCnt: Longint;
  length: Longint;
end;
この後に文字列が続いている。 基本的に、メモリ管理は参照カウンタ方式

文字列を代入すると system.pas の _LStrLAsg _LStrAsg というアセンブラ関数が呼ばれるので確認よろしく

274 :デフォルトの名無しさん:2007/08/18(土) 08:54:15
知ったか乙

275 :デフォルトの名無しさん:2007/08/18(土) 12:05:55
長い文字列は、Delphi2 から、Interface 型は Delphi3 から、動的配列は
Delphi4 か 5 からですね。だから、スマートポインタ関係はここ10年で
実装された。クラス実装を可能にしたのは、Delphi 以前の直前のバージョン。
Delphi は、Pascal の文法は拡張してきたが、変更はしていないので、
古い実装はそのままなんだよ。それが、つぎはぎ感を感じさせるが、一方、
あるていど使いやすさにも通じている。OOPL として不完全なのも同じ。

276 :デフォルトの名無しさん:2007/08/18(土) 16:35:40
>>273
allocSizの部分ってあったっけ?
その後はあったと思うけど

277 :デフォルトの名無しさん:2007/08/18(土) 18:27:38
>>275
知ったか乙。

278 :デフォルトの名無しさん:2007/08/18(土) 19:27:39
>>277
知らない乙

279 :デフォルトの名無しさん:2007/08/18(土) 19:36:05
しったかならまだいいが、おすた化しないようにな
http://genpin.com/


280 :253:2007/08/18(土) 22:19:23
>>256
ありがとうございます。激しく感激。

281 :デフォルトの名無しさん:2007/08/18(土) 22:45:10
var
S : TStringList;
begin
while True do S:=TStringList.Create;
end;

282 :デフォルトの名無しさん:2007/08/18(土) 23:19:59
AnsiIndexTextって言うのを使いたいんですが、
2つ目のパラメータの意味というか設定の仕方が
分かりません。
string型の変数を渡してもだめって言うのは分かったのですが、
じゃあどうすればいいのかがさっぱりです。


283 :デフォルトの名無しさん:2007/08/18(土) 23:32:05
>>281
こんな感じに使う。
AnsiIndexStr('うう', ['ああ', 'ううい', 'うう', 'ええ']);
詳しくはヘルプの「オープン配列コンストラクタ」を参照のこと。

284 :デフォルトの名無しさん:2007/08/19(日) 00:00:59
>>280
他の奴にも礼言ったれよ死ね

285 :デフォルトの名無しさん:2007/08/19(日) 08:19:09
つまりはつぎはぎのないC#が最高なのです。
Pascalは糞です。いますぐやめるべきです。

286 :デフォルトの名無しさん:2007/08/19(日) 09:01:12
まあPascalが廃れC#が主流になったとしても
VBしか使えない人がが主役になることはない訳だが。

287 :デフォルトの名無しさん:2007/08/19(日) 14:19:13
>>283
THX. よくわかりました。

288 :デフォルトの名無しさん:2007/08/19(日) 21:26:42
while True do ShowMessage('あひゃ');

289 :デフォルトの名無しさん:2007/08/19(日) 22:41:16
>>285
 おまいは鮮人か?


290 :デフォルトの名無しさん:2007/08/19(日) 22:48:11
そっとしておいてあげてください。

291 :デフォルトの名無しさん:2007/08/19(日) 22:56:48
var
i : integer;
S : TStringList;
begin
i:=0;
S := TStringList.Create;
try
while True do
begin
S.SaveToFile(IntToStr(i));
inc(i);
end;
finally
S.Free;
end;
end;


292 :デフォルトの名無しさん:2007/08/20(月) 09:47:50
ある文字列の中に0〜9、a〜fの文字が使われていればTrue、それ以外の文字
が使われている場合はFalseを入れるプログラムを作りたいのです。
どうかご教授よろしくお願いします。

293 :デフォルトの名無しさん:2007/08/20(月) 09:50:34
function have09af(s: string): boolean;
var i: integer;
begin
 for i := 1 to length(s) do if s[i] in ['0'..'9', 'a'..'f', 'A'..'F'] then begin result := true; exit; end;
 result := false;
end;

294 :デフォルトの名無しさん:2007/08/20(月) 09:56:31
>>292 一つでも 0..9 a..f があれば真なら >>293 さんの通り

16進数の文字列だけで構成されているかどうかなら
var p: PChar;

p:=PChar(s);
while p^ in ['0'..'9', 'A'..'F', 'a'..'f'] do inc(p);

このあと、 p^ = #0 がtrue falseか

295 :デフォルトの名無しさん:2007/08/20(月) 10:00:01
>>293,>>294
御二方ともありがとうございます。
早速試してみますね。

296 :デフォルトの名無しさん:2007/08/20(月) 10:46:19
無事にできました。
ありがとうございます。

更に文字列がすべて空白の場合はTrue、
それ以外の空白(1文字空白等)はFalseという条件をつけ足そうとしました。

begin
 for i := 1 to length(s) do
 begin
  if s[i] in ['0'..'9', 'a'..'f', 'A'..'F'] then
begin
if s = '' then
begin
result := true; exit;
end;
end;  
result := false;
end;
end;

上記のようなコードを書いたのですが、上手くいきません。
重ね重ね申し訳ありませんが、ご教授お願いします。

297 :デフォルトの名無しさん:2007/08/20(月) 12:44:14
当方見習いエスパーなので、読み取れませんが、
全部spcかどうかは
function spcCheck(s: string): boolean;
var p: PChar;
begin
p:=PChar(s);
while p^ in [' ', #7 ] do inc(p);
 result := p^ = #0;
end;
のような感じで


298 :デフォルトの名無しさん:2007/08/20(月) 19:02:33
try
 raise EMyError.Create('foo');
except
 on E: EMyError do
  self.error := E; // インスタンスを開放せずにerrorにセット。後でfreeなんてことは出来ませんか?
end;

299 :デフォルトの名無しさん:2007/08/20(月) 19:13:23
こんにちは。
Delphi7で、Excelに書き込まれた値を読むプログラムを作成します。
ユーザー側のExcelのバージョンが統一されていないため、
バージョン依存しないようにプログラムを作成したいのです。

VBだと、ExcelのDLLに対する参照設定を行わずに

dim objExcel as Object
Set objExcel = CreateObject("Excel.Application")

というようにできるのですが、
Delphiではどのように行えばよいのかお知恵を拝借させてください。

"Delphi レイトバインディング"などで検索したのですが、
見つけることができませんでした。
お力をお貸しくださいませ。
どうぞよろしくお願いします。

300 :デフォルトの名無しさん:2007/08/20(月) 20:17:03
>>299
Delphi Excel CreateOleObject

これでぐぐれば色々でてくるから参考に汁

301 :デフォルトの名無しさん:2007/08/20(月) 20:25:39
>>300
参考になるサイトがわんさか出てきました。
これでいけそうです♪
ありがとうございます!!


302 :デフォルトの名無しさん:2007/08/20(月) 22:10:17
>>298
raise した分は勝手に破棄されるので_
同じ例外オブジェクトをもう一度 raise 無しで作ればおk

303 :Delフサギコ ◆A6VzDeLphI :2007/08/20(月) 22:22:48
>>292-296
          _______________
   ∧.,,∧   /そこで、前にも紹介した
  ミ.*゚Д゚彡< CheckStrInTableですよ。
  ミ つ目(ミ . \
〜ミ,,O,,,,,,つ     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
いつでもどこでも、一度書いていれば再利用できて汎用的って素敵。ウットリ

http://delfusa.main.jp/delfusafloor/opensource/delfusalibrary/20070708185145/StringUnit/StringUnitLight.pas

type TInTable = (itUnknown, itAllInclude, itAllExclude, itPartInclude);
function CheckStrInTable(const Str, Table: WideString): TInTable;

文字がテーブルに指定したもので
全部含まれている、全部含まれていない、一部含まれている
を判断できます。



304 :デフォルトの名無しさん:2007/08/20(月) 22:25:46
   ∧.,,∧  
  ミ.*゚Д゚彡
  ミ つ目(ミ .
〜ミ,,O,,,,,,つ   

305 :Delフサギコ ◆A6VzDeLphI :2007/08/20(月) 22:34:38
            _____________
     ∧,,∧   /
    ミ,,゚Д゚彡<  ところでですね。
   'ミ つ旦(ミ~~ \___________
  ⊂ミ",, ,,ミ つ

delphi-fanさんところで、listviewの項目並び替え
テクがのっていますが
あたしは、メーラーでよくみかける
listviewヘッダの△▽マークを実装したいのですよ。

実装方法はわかっているんですが
これが、コンポーネント化誰かしませんか...

漏れ、もうコンポーネント化するとか、って
相当わすれちゃったので、誰か教えてくらさい。

Delphiでlistviewヘッダの△▽マークを実装方法は
日本語で非常に情報が少ないですが、この辺。

ListView?の?カラムクリックによるソート
http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200608/06080023.txt
http://delfusa.main.jp/delfusafloor/archive/www.nifty.ne.jp_forum_fdelphi/samples/01281.html



306 :デフォルトの名無しさん:2007/08/20(月) 22:37:29
     ∧,,∧  
    ミ,,゚Д゚彡
   'ミ つ旦(ミ~~
  ⊂ミ",, ,,ミ つ

307 :デフォルトの名無しさん:2007/08/20(月) 22:46:59
>>303
これはひどい

308 :デフォルトの名無しさん:2007/08/20(月) 22:48:52
>>307
これはひどい

309 :Delフサギコ ◆A6VzDeLphI :2007/08/20(月) 23:34:40

      ∧,,∧___   /最近、よーやく
    /ミ*゚Д゚ミ/\<  テストコードを
  /| ̄∪∪ ̄|\/  \同一ユニットに
    |____|/     いれるべきではないかなと
     ,,,,∪∪,,, ,,      きがちいた。


310 :デフォルトの名無しさん:2007/08/21(火) 03:27:38
>>323
つまりどーすんの?

311 :デフォルトの名無しさん:2007/08/21(火) 04:10:32
>>323に期待

312 :デフォルトの名無しさん:2007/08/21(火) 22:45:47
>305
ListViewのソートの対象カラムに方向の矢印を出す方法の別解。
予めFBitmapArrowDnとFBitmapArrowUpに下向き、上向きのビットマップを用意しておく。で、

var
 Index: Integer;
 Hdr: HWND;
 HdItem: THDItem;
begin
 Hdr := Listview_GetHeader(ListView1.Handle);
 for Index := 0 to ListView1.Columns.Count - 1 do
 begin
  FillChar(HdItem,sizeof(HdItem),0);
  HdItem.Mask := HDI_FORMAT;
  Header_GetItem(Hdr,ListView1.Columns.Items[Index].Index,HdItem);
  if (矢印を出すカラムだったら) then
  begin
   if (昇順だったら) then
   begin
    HdItem.hbm := FBitmapArrowDn.Handle;
   end
   else
   begin
    HdItem.hbm := FBitmapArrowUp.Handle;
   end;
   HdItem.Mask := HDI_FORMAT or HDI_BITMAP;
   HdItem.fmt := HdItem.fmt or HDF_BITMAP_ON_RIGHT or HDF_BITMAP;
  end
  else
  begin


313 :312:2007/08/21(火) 22:46:50
   HdItem.Mask := HDI_FORMAT;
   HdItem.fmt := HdItem.fmt and not(HDF_BITMAP_ON_RIGHT or HDF_BITMAP);
  end;
  Header_SetItem(Hdr,ListView1.Columns.Items[Index].Index,HdItem);
 end;
end;

こんな感じでやってます。コンポーネント化?うぅむ…。

314 :デフォルトの名無しさん:2007/08/22(水) 00:02:43
うぅむ

315 :デフォルトの名無しさん:2007/08/22(水) 00:16:25
procedure ahya;
begin
 ahya;
end;


316 :デフォルトの名無しさん:2007/08/22(水) 00:26:31
うぅむ…。

317 :312:2007/08/22(水) 00:43:17
そういやこれのネタ元どこだっけな?確か海外だったような希ガス。

318 :デフォルトの名無しさん:2007/08/22(水) 16:55:31
TComboBoxでTMemoのModifiedみたいに、値が変更されたのかを知るにはどうすればいいのですか?

319 :デフォルトの名無しさん:2007/08/22(水) 17:03:03
うぅむ…。

320 :haru:2007/08/22(水) 17:36:28
はじめましてよろしくお願いします。

GetWindowやFindWindowを使って、ウインドウハンドルを取得し、
とあるソフトを自動的に操作したいのですが、
そのソフトが、確認の際にダイアログを表示してきます
(delphiでいうMessageDlgを使用している感じ)
その際、delphiのソフトは待ち状態になってしまうのです。

そのダイアログを消さないと操作が続かないのですが、
delphiのソフトからはどうにもこうにもできなくて困っています。

何かよい方法をご存知の方はいらっしゃいませんか?

321 :デフォルトの名無しさん:2007/08/22(水) 17:42:23
ダイアログも自動的に操作すればいいじゃん

322 :デフォルトの名無しさん:2007/08/22(水) 21:54:50
>>323に期待

323 :デフォルトの名無しさん:2007/08/22(水) 22:07:59
テスト専用のプロジェクトを作るんでしょ。

>>320
OKボタンがウィンドウなら、OKボタンに対してWM_LBUTTONDOWNを送る。

324 :デフォルトの名無しさん:2007/08/23(木) 07:03:08
>>320
SendMessage を使って操作したら、その操作の中で相手がダイアログを出すから処理が帰って来ないって事だよね?

ならPostMessageに変更したらどう?

325 :haru:2007/08/23(木) 09:40:41
早速のお返事ありがとうございます。
>>321さん
ダイアログが出た瞬間、delphiのソフトは待ち状態になるので
ウィンドウが取得できないのです。
>>323
そのダイアログのウィンドウハンドルが取得できなくて悩んでいます。
>>324
そのとおりです。
PostMessageについて調べてみました。
確かにこれを使えばできそうな気がしますが、
その前に、出てきたダイアログのウィンドウハンドルが取得できません。
これは元のウィンドウから見てハンドルが決まってたりするんでしょうか?
ダイアログが出ていないときに、
ウィンドウハンドルやその中のボタンのハンドルは決まっているのでしょうか?
(ダイアログが出てしまうとdelphiソフトは何も調べられないので。。)

再度よろしくお願いします。

326 :デフォルトの名無しさん:2007/08/23(木) 09:53:27
>>325 PostMessage に変更したら、処理は即座に帰って来るので
その後開かれるダイアログを検索する事は出来ると思うよ。

Delphiのbinフォルダに WS32.exe があるからコレをまず眺めてみたら?

327 :デフォルトの名無しさん:2007/08/23(木) 14:25:42
TListの中身がFreeされているか判断したいとき
予めnilを入れておく以外の方法ってありますか?

328 :haru:2007/08/23(木) 14:54:52
>>326
解決しました。
ありがとうございました。

またお世話になるかもしれないので、よろしくお願いします!!

329 :デフォルトの名無しさん:2007/08/23(木) 15:41:34
>>327
難しく考えず、ポインタも所詮数値なんだから
数値の正しさとは何か、を追求すればおのずと答えが出るじゃろ

330 :デフォルトの名無しさん:2007/08/23(木) 15:45:23
コンソールアプリケーションを用いて、
1 4 9 16
2 3 8 15
5 6 7 14
10 11 12 13
17 18 …
と書くプログラムを作りたいのですが、よく分かりません。
分かる方、教えてください。


331 :デフォルトの名無しさん:2007/08/23(木) 15:47:15
すいません。
 
1 4 9 16
2 3 8 15
5 6 7 14
10 11 12 13

 
です。


332 :デフォルトの名無しさん:2007/08/23(木) 16:22:16
>>331
Pascalの宿題は俺にやらせろ!!Part2
http://pc11.2ch.net/test/read.cgi/tech/1136994325/

333 :デフォルトの名無しさん:2007/08/23(木) 17:14:04
begin
Writeln('1 4 9 16');
Writeln('2 3 8 15');
Writeln('5 6 7 14');
Writeln('10 11 12 13');
Writeln('…');
end.

じゃだめなの?

334 :デフォルトの名無しさん:2007/08/23(木) 17:54:48
>>329
kwsk
freeしてもポインタはそのままなので判断できないのですが。

335 :デフォルトの名無しさん:2007/08/23(木) 17:55:18
規則性のあるものにソレやっちゃったらダメだろうw

336 :デフォルトの名無しさん:2007/08/23(木) 18:18:18
>>327
コミュニケーション能力の欠如した輩がなにやらグダグダ言ってるようだが
一言で言うと「ない」。

337 :ななしへたぐらま ◆XcB18Bks.Y :2007/08/23(木) 18:35:02
>>327
ないと思います.
ポインタの値(場所,アドレス)がnilではない場合,
その値自体からそれが指している場所が開放されたかどうかは知ることはできませんし
ポインタが指している場所のデータを実際に読み書きして試すこともできません.

結論として領域を解放したあとにnilを入れることになると思いますが
開放する領域がオブジェクト以外ならFreeMem(p)の代わりにReallocMem(p, 0)とすると
領域の解放とnilの代入を一度にできます.

>>333
計算して値を出せという宿題なのでしょう.


338 :デフォルトの名無しさん:2007/08/23(木) 20:29:37
お前ら頭いいな
330の言葉足らずな質問だけでは俺も333としか思わかった
一種のエスパーだよ

339 :デフォルトの名無しさん:2007/08/23(木) 20:35:25
>>329
が言いたかったのは
>>336-337
なんでしょ。つーかポインタって嫌いなんだけど好き

340 :329:2007/08/23(木) 20:40:10
違う

341 :デフォルトの名無しさん:2007/08/23(木) 21:59:10
何が

342 :デフォルトの名無しさん:2007/08/23(木) 22:10:09
日本語をおk

343 :デフォルトの名無しさん:2007/08/23(木) 22:50:18
日本語を?

344 :デフォルトの名無しさん:2007/08/23(木) 23:18:38
日本語が

345 :デフォルトの名無しさん:2007/08/24(金) 01:43:12
>>327
Freeしたとき、Deleteもしちゃえ。
そうすれば、ListになければFreeされてると判断できる。
Createもされてないけどね!

346 :デフォルトの名無しさん:2007/08/24(金) 01:46:59
このスレならどんな質問にも答えてくれるよ
http://pc11.2ch.net/test/read.cgi/avi/1102121520/

347 :デフォルトの名無しさん:2007/08/24(金) 09:53:27
Turbo Delphi で正規表現って、使えますか?

348 :デフォルトの名無しさん:2007/08/24(金) 09:55:03
使えません
http://www.google.co.jp/search?q=delphi+regexp&sourceid=navclient-ff&ie=UTF-8&rlz=1B3GGGL_jaJP229JP231

349 :デフォルトの名無しさん:2007/08/24(金) 10:03:51
使えます

350 :デフォルトの名無しさん:2007/08/24(金) 10:32:37
Turbo Delphi 無料の で正規表現の使い方を教えてください。

351 :自殺志願者 ◆bBXkw6pgOA :2007/08/24(金) 10:58:23
Delphi for PHPの話題もココでいいでつか?

352 :デフォルトの名無しさん:2007/08/24(金) 11:02:55
消えろカス

353 :デフォルトの名無しさん:2007/08/24(金) 11:55:38
>>351
初心者用の質問スレはないからここでいいんじゃね? あってもどうせすぐ落ちそうだし。
でも、答えられる人がいるかは不明。
PHPに関する質問なら、PHPスレのがいいかもね。

総合的な話題なら、オッチャの方でも時々出てるよ。

354 :デフォルトの名無しさん:2007/08/24(金) 12:09:12
オッチャ って何? とgoogle 検索したら・・・・なるほど、オッチャだけで成立してるんだな

355 :デフォルトの名無しさん:2007/08/24(金) 12:15:48
(ノo`)アチャー (ノO`)アチャー
(ノ∇`)アチャー (ノ▽`)アチャー
(ノ∀`)アチャー (ノ◇`)アチャー
アチャー(ノo`;) アチャー(ノO`;)
アチャー(ノ∇`;) アチャー(ノ▽`;)
アチャー(ノ∀`;) アチャー(ノ◇`;)
アチャ・・・(ノ_< ;)  
(・o+)アチャー (+。+)あちゃー
(*_*)アチャ (^_・;)あちゃー
(;´o`)ゞアチャー!! (;´O`)ゞアチャー!!
(;´∇`)ゞアチャー!! (;´▽`)ゞアチャー!!
(;´∀`)ゞアチャー!! (;´◇`)ゞアチャー!!
Σ(´o`;|||)アチャァ〜ッ Σ(´O`;|||)アチャァ〜ッ
Σ(´∇`;|||)アチャァ〜ッ Σ(´▽`;|||)アチャァ〜ッ
Σ(´∀`;|||)アチャァ〜ッ Σ(´◇`;|||)アチャァ〜ッ
(≧o≦;)アチャー (≧O≦;)アチャー
(≧∇≦;)アチャー (≧▽≦;)アチャー
(≧∀≦;)アチャー (≧◇≦;)アチャー
(/≧o≦\)アチャー!! (/≧O≦\)アチャー!!
(/≧∇≦\)アチャー!! (/≧▽≦\)アチャー!!
(/≧∀≦\)アチャー!! (/≧◇≦\)アチャー!!
(/o≦\)アチャー! (/O≦\)アチャー!
(/∇≦\)アチャー! (/▽≦\)アチャー!
(/∀≦\)アチャー! (/◇≦\)アチャー!
(/o≦\)アチャー!ミテランナイ!(/O≦\)アチャー!ミテランナイ!(/∇≦\)アチャー!ミテランナイ!
(/▽≦\)アチャー!ミテランナイ!(/∀≦\)アチャー!ミテランナイ!(/◇≦\)アチャー!ミテランナイ!
アチャ〜(/o\) アチャ〜(/O\)アチャ〜(/∇\) アチャ〜(/▽\)アチャ〜(/∀\) アチャ〜(/◇\)
(/・_・\)アチャー・・  
(→←)アチャ (→o←;;; アチャ
(→o←)ゞあちゃー  
q(→-←q) q(→0←)p (p→-←)pアチャー

356 :Delフサギコ ◆A6VzDeLphI :2007/08/24(金) 17:41:33
           _____________
   ,∧,,∧∩  /せんせい、
  ミ,,゚Д゚彡<  しつもんでーす
__ミ ミ  ミ   \
\,,∪  ̄ ̄ ̄\  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
||ヽ|| ̄ ̄ ̄ ̄||"
 ...|| ̄ ̄ ̄ ̄||

ファイルパスって
A:\とか
C:\とか
\\マシン名\
とかじゃないですか。

AA:\
とかっていう可能性もあるんですか?

それとも、アルファベット1文字限定?

ネットワークドライブ接続をみると、アルファベット1文字のほうかなと
思っているんですが。


357 :デフォルトの名無しさん:2007/08/24(金) 17:46:16
>356
スレ違いだが、Windows上では2文字のドライブレターは存在しないと思う。

358 :デフォルトの名無しさん:2007/08/24(金) 23:20:22
誰もWindowsなんて言ってない

359 :デフォルトの名無しさん:2007/08/24(金) 23:28:27
じゃあ>356は何のOSの話してるんだ?

360 :デフォルトの名無しさん:2007/08/24(金) 23:31:13
ひ・み・つ♪

361 :Delフサギコ ◆A6VzDeLphI :2007/08/25(土) 01:07:59
          _______________
   ∧.,,∧   /ああ、そうか。
  ミ.*゚Д゚彡< 
  ミ つ目(ミ . \
〜ミ,,O,,,,,,つ     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

自分の関数で、ファイルパスか否かを判断する関数を作ろうとしてて

一文字目アルファベット
二文字目:
三文字目\
で、\が連続して追加されてなければ
ファイルパスかな、って判断。
している仕様でよいかな、

っておもう思考して質問してたから
すれ違いとか、全然わかんなかったよ。

http://delfusa.main.jp/delfusafloor/opensource/delfusalibrary/20070708185145/FileNameUnit/FileNameUnit.pas
これで、CheckDrivePathやCheckUNCPathはOKってことだね。
よかったよかった。

ありがとうございます。

362 :デフォルトの名無しさん:2007/08/25(土) 01:14:20
   ∧.,,∧  
  ミ.*゚Д゚彡
  ミ つ目(ミ
〜ミ,,O,,,,,,つ  

363 :デフォルトの名無しさん:2007/08/25(土) 09:26:27
印刷プレビューを作ってるんですが、
例えばモノクロプリンタで黒以外の色で線を引くと、当然グレーなどで印刷されますよね。
それを画面上でプレビューするにはどうすればいいでしょうか?
ようするに線やフォントのColorプロパティをグレイスケールに変換したいのです。

364 :デフォルトの名無しさん:2007/08/25(土) 09:48:28
モノクロプリンタで黒以外の色で線を引くと
1、グレーで印刷される・
2、消えたり、黒だったりする     場合の2通りありますね

いったん TBitmapを作成して そのTCanvasにいったん描画すればいいんじゃないの?
1の場合は256色グレースケールのパレットで
2の場合はモノクロで

365 :デフォルトの名無しさん:2007/08/25(土) 10:02:13
QuickRep

366 :363:2007/08/25(土) 15:06:29
YUV変換でググったらありました。

367 :デフォルトの名無しさん:2007/08/25(土) 20:20:47
初心者も初心者でおはずかしいのですが、
0から始めるとしたら、Turbo ExplorerとDelphi6 Personal
どっちを選んだほうがいいのかな?

さらにTurbo Explorerを選ぶとするなら、DLページに
Turbo C++、Turbo Delphi、Turbo Delphi for .NET、Turbo C#から
どれか選べとありますが、どれにしたらいいのか…。
.NET って.Net Framework対応のソフトを作るとかそういう為?
利点さえよくわかってないので…ごく普通に配布用ゲームとか
自分用プログラムが作りたいだけなんです。

368 :デフォルトの名無しさん:2007/08/25(土) 20:27:19
DBが使いたいならTurbo。そうじゃなきゃ6でいい。

369 :デフォルトの名無しさん:2007/08/25(土) 20:30:47
>>367
6はライセンス取得できない。サイズやメモリ消費量の小さいバイナリが作れるTurboにしとけ

370 :デフォルトの名無しさん:2007/08/25(土) 20:38:58
>>368
DB自体がよくわかって(ry 言葉自体は聞くんですが…
そっから始めないとというレベルで。
でもないよりはあったほうがいいのかな?

>>369
ライセンスキー?は現在取得できないとかまとめWikiに
ありましたがそれのことでしょうか?

お二人ともが推薦してくれてるのでおとなしく
Turbo Explorerにしてみます。>>366の4つのTurboでは
無印「Turbo Delphi」を選んだほうが無難ですか?

371 :デフォルトの名無しさん:2007/08/25(土) 20:39:26
.NET が必要でヘルプが糞でコンポインストールできないTurboにしとけ

372 :367=370:2007/08/25(土) 20:41:58
グダグダですいません

>>370
×>>366 → ○>>367

>>371
無印Turboは糞なんすか?

373 :デフォルトの名無しさん:2007/08/25(土) 20:42:25
デルファイアンのみなさまこんにちは、毎年お騒がせしています夏厨です。

今日はこのページで配布されているマウスジェスチャーコンポーネントについて
質問です。 ⇒ ttp://hp.vector.co.jp/authors/VA024591/

このページの一番下の 「マウスジェスチャー(右クリックでグリグリ)」 のリンクから
ダウンロード出来ます mousegesture.zip 内に収録されている Project1.dpr ですが
何故かエラーが出てコンパイル出来ません。
これを出来るように修正出来る方、良かったらご教授下さいませ。

エラーの内容は

「クラスTMouseGestureが見つかりません」

というものです。

gMouseGesture.pas にはこのクラスが定義されているのにおかしいです。
Unit1の uses節 には gMouseGesture が正しく追加されています。

一体何がいけないのでしょうか、Delphi MLやGoogleさんに聞いても教えて
もらえませんでした、よろしくお願い致し候。

374 :373:2007/08/25(土) 20:46:18
環境は Delphi6 personal、RTL3までの全てのアップデートを適用済みでおじゃる。
OSはWindowsXP home SP2でおじゃる。

375 :デフォルトの名無しさん:2007/08/25(土) 20:50:51
コンポーネントとしてインストールしていないから。

376 :デフォルトの名無しさん:2007/08/25(土) 20:51:48
あ、ゴメン。
インスコしてなかったらIDEがフォームを表示する時にエラーになるわ。

377 :デフォルトの名無しさん:2007/08/25(土) 20:57:24
いやインストールしてないだけだろ

378 :373:2007/08/25(土) 21:00:07
>>375-377
なるほど、そういうことでおじゃるか、今から試してみるでおじゃる。
ありがたき幸せ。

379 :373:2007/08/25(土) 21:04:59
動いたでおじゃる!! ありがとうごじゃる! おまんら神!

380 :デフォルトの名無しさん:2007/08/25(土) 21:06:58
偉くレベルの低い神だな

381 :デフォルトの名無しさん:2007/08/25(土) 21:33:07
>サイズやメモリ消費量の小さいバイナリが作れるTurbo
kwsk

382 :デフォルトの名無しさん:2007/08/25(土) 21:50:28
自分で試してみればいいじゃん

383 :デフォルトの名無しさん:2007/08/25(土) 21:58:30
なんとか長所をさがした末の苦しいほめ言葉wwwwww

384 :デフォルトの名無しさん:2007/08/25(土) 22:13:01
ウザイな。自分が使ってる物が一番だと思ってるんだろうね。

385 :デフォルトの名無しさん:2007/08/25(土) 22:15:27
>>383
長所のない過去の産物に縋り付いてる人に言われたくないですよ。


386 :デフォルトの名無しさん:2007/08/25(土) 22:27:02
ばか
反論するなら383だけにしろ。
Personal版使ってる人に謝れ。

387 :デフォルトの名無しさん:2007/08/25(土) 23:11:01
どっちも素晴らしいと思います。

388 :デフォルトの名無しさん:2007/08/26(日) 00:24:34
その割には使われてないなぁ・・・

389 :デフォルトの名無しさん:2007/08/26(日) 21:23:00
ヘルプが糞。初心者にはお勧めできない。

390 :デフォルトの名無しさん:2007/08/26(日) 23:48:11
>>385
へぇー、Delphi は過去バージョンは長所がなくて、現バージョンはヘルプが糞
なんですね・・・

だめだこりゃ

391 :デフォルトの名無しさん:2007/08/27(月) 00:25:00
初心者に優しいのはD6だろうな
サイズやらメモリなんてのは初心者の作る物では大差出ないし
あとはライセンス発行さえしてくれればいいんだが

392 :デフォルトの名無しさん:2007/08/27(月) 03:06:34
D6なのですが、エディタオプションで指定可能なフォントが
日本語の等幅フォントしか選択できません。
(Terminal, FixedSys, MS ゴシック, MS 明朝)

これをプロポーショナル、あるいは欧文の等幅フォントに変更するには
どの様にすれば良いでしょうか?

393 :デフォルトの名無しさん:2007/08/27(月) 03:39:11
Turboに乗り換える

394 :デフォルトの名無しさん:2007/08/27(月) 08:46:33
ヘルプが糞。やめとけ。

395 :デフォルトの名無しさん:2007/08/27(月) 08:55:40
D6のライセンス発行する方法を教えてください。 

396 :デフォルトの名無しさん:2007/08/27(月) 09:57:47
どうしてCodeGearスレでやらないんだろう・・・

397 :デフォルトの名無しさん:2007/08/27(月) 11:02:34
プロポーショナルフォント使うとインデントが揃わないよね。

398 :デフォルトの名無しさん:2007/08/27(月) 12:34:22
ヘルプなんて見たことなかったわ。
IDEは新しい方が使い易いよね。

399 :デフォルトの名無しさん:2007/08/27(月) 12:44:38
矩形選択とか多用してた人には評判悪いだろうな

400 :デフォルトの名無しさん:2007/08/27(月) 12:56:35
矩形選択とか繰り返したのはお前だけだろ

401 :デフォルトの名無しさん:2007/08/27(月) 19:19:48
Delphi7でOleContainerにWordを表示させてるんだけど、
Activeになってない状態だと改頁以降が表示されないっぽい。
Activeにするとちゃんと表示されてくれるんだけど…

OleContainerで改頁以降もちゃんと表示出来る方法ナイ?

402 :デフォルトの名無しさん:2007/08/27(月) 22:00:33
>>401
自分で解決法書いてるじゃん

403 :デフォルトの名無しさん:2007/08/28(火) 03:26:14
Java→Delphiにした。

んで、惚れた。

404 :デフォルトの名無しさん:2007/08/28(火) 07:58:24
VB→Delphiにした。

んで、惚れた。


405 :デフォルトの名無しさん:2007/08/28(火) 08:32:40
よっこいしょ

406 :401:2007/08/28(火) 10:54:12
>>402
Activeにしない状態で改頁以降も表示される方法はないのかな?

407 :デフォルトの名無しさん:2007/08/28(火) 11:49:32
随分前に自分で2chタブブラウザ作ったんだけど、使い続けるとガンガンメモリを食っていく。
DATからHTMLに変換する時と、タブ開け閉めの繰り返しが問題みたいなんだが。
やっぱメモリ関係をしっかり制御しないとマズい?

408 :デフォルトの名無しさん:2007/08/28(火) 11:51:35
当たり前だ
メモリリーク検出ライブラリ使ってどこでリークしてるのか洗い出せ

409 :デフォルトの名無しさん:2007/08/28(火) 11:59:39
メインがVB系の業務プログラマなので、あまりメモリ管理は詳しくなかったり。
自分的には最初に変換用メモリを確保して使いまわしてるつもりなんだけど
それが上手くいってないって事か。
このブラウザを長時間使うと、物凄いスワップ入るようになるし。

元々WEB+2chブラウザが無かったので自作したんだけど、いまだに乗り換えれる物が開発されないし。
やっぱ需要が無いんだろうな。

410 :デフォルトの名無しさん:2007/08/28(火) 12:02:12
ええーーーーーーーーーーーーーーーっ!!!!
そんなメモリ食いまくりのヘボプログラムより乗り換えれる物いっぱいあるじゃん

411 :デフォルトの名無しさん:2007/08/28(火) 12:29:24
スレ違だが、以下の条件を満たせるブラウザがあるなら教えて欲しい。
・インストール・常駐・レジストリ無し、フォルダコピーするだけで起動。
・Webに完全対応。
・2chに完全対応。
・多段、多重(タブグループ)タブ対応。

元はActy使ってたけど、サポート無いし一括更新チェックし辛いので。

412 :デフォルトの名無しさん:2007/08/28(火) 12:32:48
板違い

413 :デフォルトの名無しさん:2007/08/28(火) 12:40:39
当然自分でも調べてるけど、上の条件が全て満たせるブラウザは存在しないんだよな。
動作的にはWEBブラウザ+常駐2ch変換タイプが一番近いんだろうけど。
自力でなんとかするしかないか。

ところでメモリ関係が詳しく説明されてるサイトって無い?
どうもにもメモリ関係の分かり易い資料が見つからないもんで。

414 :デフォルトの名無しさん:2007/08/28(火) 12:51:39
何が悲しくて非力な自分のヘボアプリ使わなきゃならんのだろうな

415 :デフォルトの名無しさん:2007/08/28(火) 13:40:59
IE使ってるタブブラウザは使用メモリがガンガン増えていくから
コード内でリークしてないなら別にいいんじゃないの

416 :デフォルトの名無しさん:2007/08/28(火) 13:55:45
>>415
IEコンポーネントだとそうなのか。
タスクマネージャで使用メモリ見てると、タブを閉じずに更新チェックする分には
使用メモリが一定以上は増えないから、それなりに上手く行ってるのだろうか?
もしIEの問題だと解決が難しいな。他のブラウザはどうしてるんだろう。

417 :デフォルトの名無しさん:2007/08/28(火) 14:41:28
Delphi7でActiveDirectoryにログインしてるかどうかを判断する方法ってありますか?

418 :デフォルトの名無しさん:2007/08/28(火) 23:10:13
だからメモリリークチェッカー使えよw

419 :デフォルトの名無しさん:2007/08/28(火) 23:30:07
>>416
お前の糞アプリなんて誰も使わないから、リークなんてどうでもいいんじゃね
適当に作って適当に使えば?

420 :デフォルトの名無しさん:2007/08/28(火) 23:40:20
メモリリークは当然調べるべきで、見つかったら明らかなバグとして修正。
で、IEコンポがメモリ食いすぎているならキャッシュ機構を組み込んで
アクティブになったタブの履歴を記録していって
古いタブのIEコンポ自体かその内容をクリアしていくなんて事をやればメモリの大幅な節約にはなるな。

421 :デフォルトの名無しさん:2007/08/29(水) 16:35:00
(INT = 10) or (INT = 20) or (INT = 30) or (INT = 40) or (INT = 50) or (INT = 60) or (INT = 70) or (INT = 80) or (INT = 90)

この条件を省略して書く方法はないでしょうか?


422 :デフォルトの名無しさん:2007/08/29(水) 16:37:18
if INT in [10,20,30] then

とかかな。数値が多くなれば使えなかったと思うけど。

423 :デフォルトの名無しさん:2007/08/29(水) 16:38:32
>>422
ありがとうございます。
一応10〜90までです。早速試してみます。

424 :デフォルトの名無しさん:2007/08/29(水) 16:48:32
case int of
10, 20, 30 ... 90: ・・・
end;

if InRange(int, 10, 90) and (int mod 10 = 0) then

425 :デフォルトの名無しさん:2007/08/29(水) 18:14:34
質問です。
1つの変数を複数の自作関数内で使う場合、グローバル変数としてではなく
変数のポインタを引数にして使うにはどのようにしたらいいですか?

426 :デフォルトの名無しさん:2007/08/29(水) 18:23:23
エスパーが出払っているようですので、勘違いを恐れずにお答えします。

>>425
ポインタを引数にするには、まずポインタ型を定義します。
type PByte = ^PByte;

関数の宣言で この型を
function hoge( p : PBye):string;
のようにすればポインタを引数にする事が出来ます。


でも、ポインタを使わず 参照( 引数にvar) を使った方が使い易いですよ

427 :デフォルトの名無しさん:2007/08/29(水) 18:29:22
エスパーを要するレベルでなくただ単にお前のレベルが低いだけかと

428 :デフォルトの名無しさん:2007/08/29(水) 18:38:44
>>426
ありがとうございます。ポインテャはやめて参照のほうを使ってみます。

429 :デフォルトの名無しさん:2007/08/30(木) 07:53:01
>>425
function hoge( p : Pointer):string;

430 :デフォルトの名無しさん:2007/08/30(木) 12:56:09
var
 Value: Integer;
begin
 hoge(@Value);

431 :デフォルトの名無しさん:2007/08/30(木) 13:28:02
ヒント:解決済み

432 :425:2007/08/30(木) 15:52:40
>>429-430
重ね重ねありがとうございます。
でも参照を使ったほうがらくですよ?

433 :デフォルトの名無しさん:2007/08/30(木) 15:57:13
変数引数だとnilを渡すのが汚くなるけどね。

434 :425:2007/08/30(木) 18:43:55
いいえ、ポインタを使った方が楽です。

435 :デフォルトの名無しさん:2007/08/30(木) 19:15:00
両方使え。 たとえば文字列の解釈ルーチンなら

function Hoge(var p:PChar ; out ret:string):boolean;
type
TACHAR = array[0..9999] of Char;
var
pA: ^TACHAR absolute p;

と始めるのが最強だ

436 :デフォルトの名無しさん:2007/08/30(木) 19:28:49
プッそんなんが最強だって(;゚;ж;゚; )

437 :デフォルトの名無しさん:2007/08/30(木) 20:01:24
>>435
具体的に何やるときが最強なの?

438 :デフォルトの名無しさん:2007/08/30(木) 20:52:43
>>437 文字列の解釈って書いてるじゃん?
http://www.google.co.jp/search?q=var+p%3a+PChar


439 :デフォルトの名無しさん:2007/08/30(木) 21:20:51
>>438
文字列の解釈というとても抽象的な言葉があったので具体的な例示を求めたのですが、
どうやら日本語が理解できない方だったようですね
こちらの配慮が足りなくて申し訳ありません

440 :デフォルトの名無しさん:2007/08/30(木) 21:22:33
お前らは器がちいさいのう

441 :デフォルトの名無しさん:2007/08/30(木) 21:24:23
> type
> TACHAR = array[0..9999] of Char;
> var
> pA: ^TACHAR absolute p;

この辺が馬鹿っぽい

442 :デフォルトの名無しさん:2007/08/30(木) 21:48:40
>>441
ソレは、たとえば 区切り文字が複数バイトの場合とかに対応するのが楽だからやってるわけで
サイズに意味はないよ。 せいぜい3文字も先読み出来ればいいので

443 :デフォルトの名無しさん:2007/08/30(木) 22:18:58
>>442
そんなことは知っている。最高にわろた

444 :デフォルトの名無しさん:2007/08/30(木) 23:03:36
>>442
これはひどいw

445 :デフォルトの名無しさん:2007/08/30(木) 23:05:24
ココって人を見下した感じの人が居るよな。
バカにするだけで全然役に立ってないし。
正直居なくていいと思う。

446 :デフォルトの名無しさん:2007/08/30(木) 23:05:53
>>445
バカにするだけで全然役に立ってないし。
正直居なくていいと思う。

447 :デフォルトの名無しさん:2007/08/30(木) 23:30:21
>>445
自分のことをそんなに客観的に判断できるなんてすごいね

448 :デフォルトの名無しさん:2007/08/31(金) 00:24:36
>>447 日本人?

449 :デフォルトの名無しさん:2007/08/31(金) 00:25:45
いいえ神です。

450 :デフォルトの名無しさん:2007/08/31(金) 00:40:35
まあ日本人はコミュニケーションとるのへたっぴーだからほっとくと荒れるわな。

451 :デフォルトの名無しさん:2007/08/31(金) 01:26:24
型無しポインタなんか教えるなよ

452 :デフォルトの名無しさん:2007/08/31(金) 01:30:42
別に誰も教えてない

453 :デフォルトの名無しさん:2007/08/31(金) 01:42:29
はぁ?ログ読めよカス

454 :デフォルトの名無しさん:2007/08/31(金) 01:43:41
わろた。ログ読んでも分からんのかカス

455 :デフォルトの名無しさん:2007/08/31(金) 01:45:06
451は一人で勝手に教わったつもりでいるんだろ

456 :デフォルトの名無しさん:2007/08/31(金) 01:55:02
>>442
例外的にPChar型はP[10]のようにアクセスできる。

457 :デフォルトの名無しさん:2007/08/31(金) 07:09:35
PCharとPWideCharだけ 特殊で

 ・p:=p+3のような ポインタと整数との加減算が出来る
 ・(p+3)^ を p[3] と書ける

他のポインタ形はポインタと整数との加算はincを使わないと出来ないし
もちろん配列表現も出来ない。
これに馴れて、シリアル通信でバイナリデータだからと下手にPByteにしたりすると・・・・

458 :デフォルトの名無しさん:2007/08/31(金) 07:56:00
>>457
・・・キャストが必要になる。
もったいぶるほど深刻か?

459 :デフォルトの名無しさん:2007/08/31(金) 11:00:50
435はわざとじゃないの? absoluteとかありえない。

460 :デフォルトの名無しさん:2007/08/31(金) 13:48:56
馬鹿だからしょうがない

461 :デフォルトの名無しさん:2007/08/31(金) 14:51:12
absoluteとはまたすごい化石を掘り出してきたな

462 :デフォルトの名無しさん:2007/08/31(金) 15:03:18
Delphi7で終了時によくエラー吐くんだが、どうにかならん?

463 :デフォルトの名無しさん:2007/08/31(金) 15:14:27
IDEに組み込んだコンポーネントやアドインにバグがあるとおかしくなる。
自分で組み込んだパッケージを一つずつ取っ払っていってチェックするとか。

464 :デフォルトの名無しさん:2007/08/31(金) 15:19:25
>>462
C:\Documents and Settings フォルダに SendToというのがあるから、そこに

DelDel.BAT をエディタで新規作成して、
--------------------------
CD /D %1
del *.tds
del *.~*
del *.dsk
del *.dof
del *.dsm
del *.dcu
--------- ここまで -----
を入れておくといい。

そのプロジェクトのフォルダに対して マウスの右ボタン⇒送る を時々やるクセをつければ 頻度が下がると思うよ

465 :デフォルトの名無しさん:2007/08/31(金) 19:02:33
OpenDialog.Executeすると常に画面の真中にダイアログ開くのですが
任意の位置に開きたい場合はどうすればよろしいのでしょうか?
Delphi6です。

466 :デフォルトの名無しさん:2007/08/31(金) 19:50:57
>>465 難しい事を聞くね。 
出来ない事は無いだろうけど・・・・どうしてもやりたいの?

467 :デフォルトの名無しさん:2007/08/31(金) 20:12:14
>>465 簡単な事を聞くね。 
もちろん出来るけど・・・・何でそんな事も分からないの?

468 :デフォルトの名無しさん:2007/08/31(金) 20:46:50
type
 TMyOpenDialog = class(TOpenDialog)
 public
  MyHandle:THandle;
  xPos, yPos: Integer;
  procedure WndProc(var Message: TMessage); override;
  function ExecutePos(x,y:Integer):boolean;
 end;
function TMyOpenDialog.ExecutePos(x, y: Integer): boolean;
begin
xPos:=x;
yPos:=y;
Result:=Execute;
end;

procedure TMyOpenDialog.WndProc(var Message: TMessage);
var
 Rect: TRect;
 Monitor: TMonitor;
begin
inherited;
  GetWindowRect(Handle, Rect);
  MoveWindow(Handle,
  xPos,yPos ,
  Rect.Left-Rect.Right,
  Rect.Top-Rect.Bottom, True);
end;

こうやってみたけど、ダメだった。 ダイアログのHandleは窓ハンドルじゃないのかなあ

469 :デフォルトの名無しさん:2007/08/31(金) 21:05:44
それ、やったことあるよ。 もう忘れたけど。

470 :デフォルトの名無しさん:2007/08/31(金) 21:32:24
>>466
難しいかったのですか・・・。320*240程度の小さいウィンドウのアプリなので
OpenDialogが画面中心に開くと、元ウィンドウとまったく重ならない位置で開くので
なんとかしたいのですが。

471 :デフォルトの名無しさん:2007/08/31(金) 22:19:08
OpenDialog の表示位置
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=012600
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=017797

472 :Delフサギコ ◆A6VzDeLphI :2007/09/01(土) 01:53:57
[builder:19268] Re: TSavePictureDialogの拡張コンポーネント
[builder:10261] Re: TOpenDialogにユーザー定義のコントロールを乗せるには

     ∧,,∧      
     ミ,,゚Д゚彡 このあたりから...
      ミ⊃旦⊂   
    @ミ ⊃ ⊃  

procedure TForm1.OpenDialog1Show(Sender: TObject);
var
 Rect1: TRect;
 DialogWidth, DialogHeigh: Integer;
begin
 GetWindowRect(GetParent(TOpenDialog(Sender).Handle), Rect1);
 DialogWidth := Rect1.Right - Rect1.Left;
 DialogHeigh := Rect1.Bottom- Rect1.Top;

 MoveWindow(GetParent(TOpenDialog(Sender).Handle),
       Trunc((Width-DialogWidth)/2) + Left,
       Trunc((Height-DialogHeigh)/2) + Top,
       DialogWidth, DialogHeigh, true);
//開いたダイアログの親Formの中心に表示するようにしている
 Abort; //このAbortが無いと動作しない。
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 OpenDialog1.Execute;
end;

473 :デフォルトの名無しさん:2007/09/01(土) 02:36:12
CodeZineのSMTP認証のサンプル(Indy10)のサンプルを実行してるんだが動かん・・・。
Libeay32.dllとssleay32.dllはぶちこんであるのに何故だ?

ちなみにIndy以外にSMTP認証が出来るコンポって何かある?
SynapseはOpenSSL入れないと駄目だからちょっとあれだし、ICSやらも無理。
何かあったら教えてくれ。

474 :デフォルトの名無しさん:2007/09/01(土) 02:38:09
エラー文くらい書いてもらわないと

475 :デフォルトの名無しさん:2007/09/01(土) 02:46:34
>>474
とりあえずコンパイル環境が悪いのかと思って
コンパイル済みのものを実行しているが、”メール送信に失敗しました”となってしまう。
アカウントはGoogleのもを使用。

他のメーラーだと送信できるから何かしら問題があると思うのだが、よくわからん・・・。

476 :デフォルトの名無しさん:2007/09/01(土) 02:51:44
>>474
ちなみに例外は
'Socket Error # 10054
Connection reset by peer.'
が飛んでくるようですねぇ・・・。

むぅ・・・。

477 :465:2007/09/01(土) 04:30:58
>>471-472
上手く任意の位置でダイアログを開くことができました。
ありがとうございました。


478 :デフォルトの名無しさん:2007/09/01(土) 06:02:24
Indyも開発止まってのかな。どんどんDelphi絡みのプロジェクト死んでいくな。
南無阿弥陀仏


479 :デフォルトの名無しさん:2007/09/01(土) 06:36:34
BDS2006です。
DelphiでC++Builder(やVC++)みたいに、コンパイル時の構成を切り替えたりすることはできますか?(DebugとかReleaseとか)
あと他人のソースとか見て思ったんですが、Delphiだと関数のinline化は滅多にしないんですか?

480 :デフォルトの名無しさん:2007/09/01(土) 07:48:59
>>479
コンパイル時の構成を変える一番簡単な方法は複数のプロジェクトを作る事だね
dprだけ別にして、他のユニットを同じにしてやる。

ただ、プロジェクトグループで一気に両方作ろうとすると コンパイルオプションの差は区別されないので
1プロジェクト毎に再構築させる事。

481 :デフォルトの名無しさん:2007/09/01(土) 08:08:15
>できますか?
できない。なぜこれをIDEから出来るようにしないのか本当に理解できない。
10年前から出来ていても何の不思議もないのに。

とはいえ構成の大半はソース中のコンパイラスイッチで指定できるので
{$HINTS ON}
{$WARNINGS ON}
{$LONGSTRINGS ON}
{$IOCHECKS ON}
{$ifdef Fastest}
{$ASSERTIONS OFF}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$else}
{$ASSERTIONS ON}
{$OVERFLOWCHECKS ON}
{$RANGECHECKS ON}
{$endif}
{$ifdef Release}
{$DEBUGINFO OFF}
{$OPTIMIZATION ON}
{$else}
{$DEBUGINFO ON}
{$OPTIMIZATION OFF}
{$endif}
みたいなのを1ファイルに記述して各ユニットで
{$i Swiches}すれば一応は可能。
ProjectName.cfgを外部のスクリプトで書き換えてプロジェクトを一旦閉じて開きなして切り替えるやりかたもあるにはある。

inlineはだいぶ後に追加されて古いコンパイラで互換性がないからあまり使われていないのだと思う。

482 :デフォルトの名無しさん:2007/09/01(土) 12:44:57
Delphi 2007ではできるようになりました、って話じゃなくて?

483 :デフォルトの名無しさん:2007/09/01(土) 13:52:43
inline はDelphi2005の目玉だったが、その使用は非推奨です、と力説してた。
呪われた機能ですから使用しないように。

484 :482:2007/09/01(土) 15:34:23
あ、できるようになったってのはビルドの使い分けの話ね。
inlineはどうなんだろう。まともになったのかな?でも必要性はそれほどないかな。
C++でinlineってまずgetter/setterが対象だろうけど(それだけじゃないが)、
property Foo read FFoo write FFoo;なら気にする必要ない。それに継承ツリーの
比較的深いVCLではinlineとかでパフォーマンスを稼いでも効果が薄いんじゃないかな。
それよりもCPUとRAMを強化したほうが。

485 :デフォルトの名無しさん:2007/09/01(土) 15:51:30
フォルダ選択ダイアログのUNICODE対応版のコンポーネントはないですか?

>>483
吹いた。そういや、inline使ってねえわw

486 :デフォルトの名無しさん:2007/09/01(土) 16:04:48
ShelObj . SHBrowseForFolderW  を使ったらどう?


487 :デフォルトの名無しさん:2007/09/01(土) 21:55:47
>>485
TNTにある

488 :487:2007/09/01(土) 21:56:18
>>485
ごめ、ファイル選択と勘違いした。

489 :デフォルトの名無しさん:2007/09/01(土) 22:30:24
いやフォルダもあったはず

490 :489:2007/09/01(土) 22:31:27
コンポじゃなくて関数だけど

491 :デフォルトの名無しさん:2007/09/01(土) 23:47:55
Release版はコマンドラインコンパイラ使ってコンパイルするといいよ。

492 :デフォルトの名無しさん:2007/09/02(日) 05:01:23
>>490
マジで?さがしてみるす

493 :デフォルトの名無しさん:2007/09/02(日) 09:10:40
シフトJISの"接"を"%90%DA"というようなコードに直すライブラリ、どこかにありませんか?


494 :デフォルトの名無しさん:2007/09/02(日) 09:12:35
http://www.google.co.jp/search?q=Delphi+URL%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89&sourceid=navclient-ff&ie=UTF-8&rlz=1B3GGGL_jaJP229JP231

495 :デフォルトの名無しさん:2007/09/02(日) 09:15:17
>>494
はやw
ありがとう、たすかったよ。

496 :デフォルトの名無しさん:2007/09/02(日) 09:33:37
DarkBasicから呼び出すDLLを作りたいのですが

■ソース
library DB_StrLib;
uses
Windows,System;
{$R cmdtable.res}
function Len(strTextIn:Pchar):Int64;cdecl
begin
Result := Length(strTextIn);
end;
exports
Len name 'Len';
begin
end.

■cmdtable.rc
STRINGTABLE
Begin
1, "DB_LEN[%S%Len"
End

といった感じで出来たものを呼び出してみたんだけど、値の受け渡しがよく分からない。
返ってきた値は63605613795475461でした。
http://forum.thegamecreators.com/?m=forum_view&t=69292&b=18
上記を参考にしていたのですがexportsの所の@@YAXPAXとかって何でしょうか?これを入れると呼び出しもエラーになってしまいます。
DLLを作るのは初めてでかなり的外れな事を聞いているかもしれませんがよろしくお願いします。

497 :デフォルトの名無しさん:2007/09/02(日) 12:15:47
DLL関数の戻り値にInt64とかStringとかレコードとか
普通じゃない型は使えないと思った方が良い。
整数型かポインタ位にしておくべき。

こういうときは関数の引数にデータへのポインタを渡して
関数内で逆参照して代入するのがセオリー。


498 :デフォルトの名無しさん:2007/09/02(日) 14:09:55
DarkBasic では、name 'Len' と STRINGTABLE はいるの?
通常のDLLの場合はいらないけど。

499 :デフォルトの名無しさん:2007/09/02(日) 14:26:48
>>497
そうですか……Int64を使った記述例がマニュアルに書いてあったので使えると思い込んでました(^^;)。
DLL側でメッセージボックスを出して調べた所、引数は問題なく渡っているようです。
戻り値をintegerにしてみましたが値は同じような感じのものしか返ってきませんでした。


>>498
exports節を削除するとDLLのロードは出来ますが、関数の呼び出しが出来なくなります。
どうやらここの設定がDarkBasicに値を送るためには重要なようです。

サンプルのexports節に
 // These are the function DBpro will call:
 Construct name '?Constructor@@YAXXZ',
 Destruct name '?Destructor@@YAXXZ',
 ReceiveCoreDataPtr name '?ReceiveCoreDataPtr@@YAXPAX@Z';
と書かれているのが気になりますが@@以降の文字列の意味がさっぱり分かりません。

STRINGTABLEはDBの関数?として使うために必要なのではないかと思います。
無くてもDLLをCALLするコマンドを使えば一応は動きます。現在はこの方法で呼び出しています。

500 :デフォルトの名無しさん:2007/09/02(日) 16:32:42
DarkBasicって渋いな・・・
ゲームだろうか。
応援してるぜ?

501 :デフォルトの名無しさん:2007/09/02(日) 16:53:01
>499
@@については(ネーム)マングリングでぐぐれ。
渡される文字列はPascal文字列じゃなくC文字列なのでLengthじゃなくStrLenを使え。
ヘルプのDLL関係のところは読んでおけ。
exportはその関数を外部から読めるようにするために必須だからそのままでおk。
STRINGTABLEはこの場合はいらないだろ、普通に考えて。

502 :デフォルトの名無しさん:2007/09/02(日) 18:43:42
マングリ


503 :デフォルトの名無しさん:2007/09/03(月) 08:37:39
フォームに、小さなドット(・)を場所(Loft=?top=?)を指定してうつにはどうやればいいんですか?

504 :デフォルトの名無しさん:2007/09/03(月) 08:59:43
Canvas.Pixels[x, y] := clBlack;

505 :デフォルトの名無しさん:2007/09/03(月) 10:56:13
TDBCombobox.Itemsを「名前 = 値」形式でセットして、
DBとのリンクはNameでコンボの表示はValueで、ということは
実現可能ですか?
ちなみに、NameとValueは扱いが逆でもかまいません。

506 :デフォルトの名無しさん:2007/09/03(月) 15:46:41
久々にこのスレみたら、Delphiのポインタについてむちゃくちゃなこと言ってる奴がいるような

>>426
これコンパイル通るかね。
多分
type PByte = ^Byte
;の書き間違いなんだろうけど。
で、PByteとかありきたりのポインタ型はWindowsユニットその他に定義済みだからそれをusesした方が楽。

>>457
>・(p+3)^ を p[3] と書ける
むしろ、他のポインタ型ではp[3]としか書けなくて、C/C++みたいな(p+3)^とは書けないというべきだろう
強引に書くなら phoge(longword(p)+3*sizeof(p))^

507 :デフォルトの名無しさん:2007/09/03(月) 15:55:26

>むしろ、他のポインタ型ではp[3]としか書けなくて

var p:^Byte; で p[3]:=1; とかが通るって事?

いつから書けるようになったの?



508 :デフォルトの名無しさん:2007/09/03(月) 16:26:49
DBGridでもStringGridでもいいんですが、
ユーザーが列の幅を自由に変更できるようにしている状態で
変更した幅を、すべて元の(開発時)幅に戻すにはどうすれよいでしょうか。
現在は起動時にiniファイルにすべて書き込んでおいて、戻したいときにiniファイルを読んで変更していますが、
列幅だけではなく、DBGridの各Column等のプロパティをすべてやろうとすると大変なんで
Reloadコマンドみたいなのは無いでしょうか?

509 :デフォルトの名無しさん:2007/09/03(月) 18:14:20
>>507
日本語読めない方ですか?

510 :デフォルトの名無しさん:2007/09/03(月) 18:25:49
PChar と PWideChar 以外では 
ポインタへの加減算も、
ポインタと配列の混交も許されてないだろ

511 :デフォルトの名無しさん:2007/09/03(月) 19:09:37
PChar,PWideChar以外にもp[3]と書いて通る型があるんですけど?

512 :デフォルトの名無しさん:2007/09/03(月) 19:25:59
var p : ^Char; とした場合は、他のポインタ形と同じで、ポインタの加減算なんかの特例は受けられない

513 :デフォルトの名無しさん:2007/09/03(月) 19:28:01
面毒せー連中だな・・・

514 :デフォルトの名無しさん:2007/09/03(月) 19:28:30
>>511 はいはい PAnsiChar もそうですね

515 :デフォルトの名無しさん:2007/09/03(月) 20:21:59
>>514
それ以外にもあるんですけど(笑)

516 :デフォルトの名無しさん:2007/09/03(月) 20:42:46
>>むしろ、他のポインタ型ではp[3]としか書けなくて

言い訳になってないがな・・・



517 :デフォルトの名無しさん:2007/09/03(月) 21:12:00
TabControlでMultiLineがtrueの時にタブが何行になってるのかを調べる方法を教えて下さい。

518 :デフォルトの名無しさん:2007/09/03(月) 21:13:21
その前にその数値を何に使うか教えてもらおうか。

519 :デフォルトの名無しさん:2007/09/03(月) 21:20:36
ちゃんとした求め方は知らんけどacClientなPanel置いて
(TabControl1.Height - Panel.Height) div (1タブの高さ)
とかやったらとりあえず求まりそうだな。

520 :517:2007/09/03(月) 21:25:13
ごめんボケてた。RowCount使えばいい事に気づいた。

521 :デフォルトの名無しさん:2007/09/04(火) 02:21:00
配列型へのポインタはp[3]のように書けるよ。 もちろんp^[3]のようにも書ける。

522 :デフォルトの名無しさん:2007/09/04(火) 02:45:55
それは逆参照して単なる配列になるから添字がつけられるだけで
ポインタを配列として使えることとは違うだろう

523 :デフォルトの名無しさん:2007/09/04(火) 04:20:07
文句の多い人だな

524 :デフォルトの名無しさん:2007/09/04(火) 04:49:01
ってか、意味がぜんぜん違うわな・・・

525 :デフォルトの名無しさん:2007/09/04(火) 06:12:05
ズコー

526 :デフォルトの名無しさん:2007/09/04(火) 16:26:31
フォーム1のbutton1.clickに以下を書いてあります。

form2.ShowModal; //form2表示

for i:=0 to 100 do
begin
sleep(10);
form2.progressbar1.position:=i;
end;

form2.close; //form2消す

プログレスバーを乗せたフォーム2を出して
ループの進行と共にプログレスバーを進めたいんですが
この時だと、フォーム2は表示されますが、一向にプログレスバーが変わりません。
教えてくんなさい。

527 :デフォルトの名無しさん:2007/09/04(火) 17:11:40
ShowModalにブレイクポイント張って実行しておくんなまし。
開いたウィンドウ閉じるまで処理戻らない

528 :デフォルトの名無しさん:2007/09/04(火) 18:04:25
>>526 という事で、 form2.ShowModal -> form2.Show に変更してはどう?

529 :デフォルトの名無しさん:2007/09/04(火) 18:36:18
普通そういうのはform2側でやるもんだがな

530 :デフォルトの名無しさん:2007/09/04(火) 18:46:28
進捗フォームの実装はヒトクセあるから
サンプルないと理解不能だろうな

531 :デフォルトの名無しさん:2007/09/04(火) 19:45:48
ShowModalで進捗表示したい場合はスレッド立ててメッセージとか投げるのが普通だと思うけど、
モーダルでスレッド使わない場合は普通どうやって書くの?無理?

532 :デフォルトの名無しさん:2007/09/04(火) 21:08:03
モーダルなダイアログ出すと、使い方を強制してしまうので、
ファイルの読み書きとか決まったダイアログ以外は出来るだけ使わないようにしてる。

533 :デフォルトの名無しさん:2007/09/04(火) 22:23:34
del6,del7のproとstr版をもっています。いずれ使用承諾コードが
取れなくなる日がやってくると思って、レジストリを保存しておきたいの
ですが、regeditでレジストリをテキストファイルで全て書き出し、関連部分を
抜き出そうとしても、インストール番号とインストールキーの項目は
分かりましたが、使用承諾コードの項目がどこにあるのか分かりません。

どなたか、再インストールに備えてのレジストリのバックアップの方法
(認証関係部分のみ)を教えてくれませんでしょうか。

534 :デフォルトの名無しさん:2007/09/05(水) 01:13:26
>str版
文字列版ですか?

535 :デフォルトの名無しさん:2007/09/05(水) 01:54:44
質問です!
Turbo delphi でMDI アプリを作ってるものです。

delphiでMDIアプリケーション作成しようとすると
メニューバーがデフォルトでついてくるんですが、
このメニューバーって非表示にしたりできないんでしょうか?

536 :デフォルトの名無しさん:2007/09/05(水) 02:27:18
できないとでも思ったんですか?

537 :デフォルトの名無しさん:2007/09/05(水) 02:28:58
すみません。私があほなだけかもしれませんが
できないと思いました。。


538 :デフォルトの名無しさん:2007/09/05(水) 03:01:34
>>537
おお、よく気がつきましたね
その通り、あなたがあほなだけです
素晴らしい洞察力だ

539 :デフォルトの名無しさん:2007/09/05(水) 03:03:20
くだすれって、初級者が初心者見下す場面が多いけど、どんだけ心に余裕がないんだろうと毎回思う。


540 :デフォルトの名無しさん:2007/09/05(水) 03:39:58
工作員が荒らしてるんでしょ。

541 :デフォルトの名無しさん:2007/09/05(水) 07:53:49
例のabsoluteポインタ君だろ

542 :デフォルトの名無しさん:2007/09/05(水) 08:23:11
>>531
進展表示をするという事は、 どこかで処理が進展してるわけだよね?
メインスレッドで処理させたくてモーダルにするなら、
ShowModalで呼び出された先で処理するしかない。


1、タイマーを使って分割処理させる
  タイマーの処理はメッセージループ中で呼び出されるので ShowModal中にも呼び出される

2、Application.OnIdleで処理させる
 procedure TForm1.Idle(Sender: TObject; var Done: Boolean) ;
 begin
  with Form2.ProgressBar3 do begin
  Position:=Position+1;
  if Position>=Max then Position:=0;
  end;
  Done := False;
 end;
 procedure TForm1.FormCreate(Sender: TObject);
 begin
 Application.OnIdle:=Idle;
 end;


543 :デフォルトの名無しさん:2007/09/05(水) 08:44:34
>>535 メニューを付けたり外したりの事なら、
if MainForm.Menu<>nil
then MainForm.Menu:=nil
else MainForm.Menu:=MainMenu1;
みたいにやれば出来るけど・・・・ でもメニュー無いと不便ではないの?

544 :デフォルトの名無しさん:2007/09/05(水) 08:49:27
>>543
ありがとうございました!
メニュー表示/非表示の切り替えができればうれしいと思ってたので・・

545 :デフォルトの名無しさん:2007/09/05(水) 09:34:43
そういえば昔、時間掛かる処理中に表示するプログレスバーとか処理中の文字を
別フォームで出すってのを面倒なコード書いていろいろ作って進化したなとか独りで思ってたけど
パネルのvisibleを切り換えるだけでいいじゃん!と気づいた時はショックだった。

546 :デフォルトの名無しさん:2007/09/05(水) 10:22:59
>>545
でもプログラムスケールによっては
他の処理でも同じプログレスフォームを使いまわしできるのでは。

547 :デフォルトの名無しさん:2007/09/05(水) 10:23:15
例外を複数行書くときはどうしたらいいのでしょうか?

except
  on E:foo do
  begin
    FErrorMsg1 := E.Message;
    Efoo;
  end else
  on E:bar do
  begin
    FErrorMsg2 := E.Message;
    Ebar;
  end else;
end;

としてもコンパイルできない・・・。

548 :デフォルトの名無しさん:2007/09/05(水) 11:07:48
case

549 :デフォルトの名無しさん:2007/09/05(水) 11:19:10
Helpくらい嫁

try
...
except
on EZeroDivide do HandleZeroDivide;
on EOverflow do HandleOverflow;
on EMathError do HandleMathError;
end;

550 :デフォルトの名無しさん:2007/09/05(水) 11:44:50
ちょっとおしえて、フレームの上の青いバー   _□X これがあるバーの高さは何ドットですか?

551 :デフォルトの名無しさん:2007/09/05(水) 11:47:13
環境によって違うからGetSystemMetrics(SM_CYCAPTION);で計測しろ

552 :デフォルトの名無しさん:2007/09/05(水) 11:58:33
>>551
30でした。 ありがとう!

553 :デフォルトの名無しさん:2007/09/05(水) 13:14:06
環境によるって…

554 :デフォルトの名無しさん:2007/09/05(水) 13:33:50
育ってきた環境が違うから スキル違いはいなめない

555 :デフォルトの名無しさん:2007/09/05(水) 16:19:52
前に、フォルダ選択ダイアログのUNICODE(WideString)版のコンポーネントがないか聞いたものです。

>>487
探したら、ありました!!
TNTのソースをgrepかければよかったんだな orz

TnTFileCtrl ユニットの WideSelectDirectory です。
ていうか、VCLに元からついてくる SelectDirectory すら知らなかった orz
てっきり面倒な人はコンポーネント使うものかと・・・。

とりあえず、使い方。
uses TnTFileCtrlして、

var Directory: WideString;
begin
  Directory := WatchFolderEdit.Text;
  if TnTFileCtrl.WideSelectDirectory('選択するフォルダ', '', Directory) then begin
    WatchFolderEdit.Text := Directory;
    StartWatching;
  end;
end;

3番目の引数にあらかじめディレクトリを入れておくと、そこが選択された状態で、
選択ダイアログがでます。
選択されたフォルダは、3番目の変数に入っています。
あとは、if文で、場合分けすればおk

556 :デフォルトの名無しさん:2007/09/05(水) 16:51:49
DelWiki - コンポーネント/Toolbar2000
http://delwiki.info/?%A5%B3%A5%F3%A5%DD%A1%BC%A5%CD%A5%F3%A5%C8%2FToolbar2000

TBXのUNICODE対応+機能追加のコンポーネント SpTBXLib について、
言及しておきました。

私は、まだ、使い始めたばかりですので、
バリバリに使っておられる方等、
変なところありましたら、修正、加筆していただけたらと思います。

557 :デフォルトの名無しさん:2007/09/05(水) 18:04:16
BDS2006や、Sleipnir2のように、
オプションページを作りたいのですが、
どのようなコンポーネントの組み合わせで作るのでしょうか?

TreeView+TabPage?


558 :デフォルトの名無しさん:2007/09/05(水) 18:54:26
TThreadをFreeOnTerminate:=falseにしてCreateしたら
処理が終わった後そのスレッドはどうなるのでしょうか?また呼び出して使う事とかできるのでしょうか?

サーバーとの通信にスレッドを使っているのですが今はタイマーでFreeOnTerminate:=trueにして毎回Createしています。
一度だけCreateして必要な時にスレッドを使うような方法があれば教えて下さい。

まだよくスレッドの概念がわかっていないので参考になるサイト等があれば合わせて教えて下さい。宜しくお願いします。

559 :デフォルトの名無しさん:2007/09/05(水) 18:57:24
>>558
while not terminated do
begin
処理
suspend;
end;

必要な時
resum;

以上

560 :デフォルトの名無しさん:2007/09/05(水) 19:01:30
>>557
TreeView+PageControlお勧め。
設計時にタブ名を
全般
表示
表示/フォント
みたいにパス風にして実行時に解析してTreeViewに
+全般
+表示
  +フォント
といったノードを作る。
PageControl.Visible := Falseで非表示にして
ノードがクリックされたらノードに対応するPageControlの対応するTabSheetを
TabSheet.Parent := Form1;
とやるとフォームにそのタブシートの中身が表示されるようになる。

TabPageでやるよりちょっと面倒だけど一回作ってしまうと使い回しがきくよ。

561 :デフォルトの名無しさん:2007/09/05(水) 22:38:13
>>557
TNotebookでやれば?Samplesページにあるぞ

562 :デフォルトの名無しさん:2007/09/05(水) 22:50:59
>>560
Visible とか Parent 変えたりするの?普通でいいんでないか?
procedure TFrom1.FormCreate(Sender: TObject);
var
 i:integer;
begin
 with PageControl1 do
 begin
  for i := 0 to PageCount - 1 do
   Pages[i].TabVisible := False;
  Align:=alClient;
  ActivePageIndex:=0;
 end;
end;

procedure TFrom1.TreeViewClick(Sender: TObject);
begin
 PageControl1.ActivePageIndex:=TreeView.Selected.Index;
end;


563 :デフォルトの名無しさん:2007/09/06(木) 19:16:45
TabVisible弄るのってなんか変な挙動があったような

564 :562:2007/09/06(木) 21:11:56
そなの?
デザイン時に邪魔かなって思うくらいで今までは何もなかったけど

565 :デフォルトの名無しさん:2007/09/07(金) 00:44:09
memcheck2.0使ったら起動してすぐ終了するだけでものすごい数のリークが報告されるんですが書き出されたログの見方がわからない・・・。
pasファイルのどの行でリークしてるかわかるやつもあるけど、ClassesとかControlsとかFormsとかピンとこないです。
みんなどうやってリーク箇所を判断してるんですか?
誰か助けて下さい。

566 :デフォルトの名無しさん:2007/09/07(金) 01:10:49
ソース読んでリークの箇所を判断してますが。

567 :デフォルトの名無しさん:2007/09/07(金) 01:17:26
スタックトレース機能を使えばどの関数で漏れてるかまでわかるような。

568 :デフォルトの名無しさん:2007/09/07(金) 08:10:28
各ユニットで定義されているTPersistentを継承していないクラスも含めた
全classを列挙してクラス参照を得る方法はないですか?

569 :デフォルトの名無しさん:2007/09/07(金) 08:27:48
列挙するにはdcuファイルを解析して インクルードファイルを吐き出すツールを作成しかないと思うよ
DCU2Pasのソースが手に入れればいいんだけど 
DCU32INT
ttp://hmelnov.icc.ru/DCU/index.eng.html
あたり参考にしたら?

570 :デフォルトの名無しさん:2007/09/07(金) 09:06:55
ズブの素人です。質問させてください。

TStringListのItemsが持ってるデータは何MBなのかを知るにはどうすればいいんでしょうか?

571 :デフォルトの名無しさん:2007/09/07(金) 09:24:39
SizeOf()というのはあるが、そもそもTStringListに何持たせてるんだ??

572 :デフォルトの名無しさん:2007/09/07(金) 09:49:13
Length(sl.Text)じゃねーの

573 :デフォルトの名無しさん:2007/09/07(金) 10:05:27
>>571
TStringListは2G以上のデータを持てないと噂に聞いたので、まず2G以内かのチェックと、限界までの何%の情報が入ってるのか、分かれば楽しかろうと…

>>572
Lengthは文字数だと思います。
今回はLengthではなくて、ファイルなんかにしたときのサイズが知りたかったのです。

574 :デフォルトの名無しさん:2007/09/07(金) 10:15:27
解からないからと質問してきて返ってきた回答は確認もせずに否定するとか

575 :デフォルトの名無しさん:2007/09/07(金) 10:42:33
>>568
基本的には、できないよね
TPersistentも登録しないと、列挙できないよね

576 :デフォルトの名無しさん:2007/09/07(金) 10:44:54
普通はストリーム系を使わないか?
つかサイズチェックなら他にもあるだろ・・・。

577 :デフォルトの名無しさん:2007/09/07(金) 10:45:13
>>574

>Length(sl.Text)じゃねーの
これでサイズわかるの?

578 :デフォルトの名無しさん:2007/09/07(金) 10:45:15
>>573
Length(String)から、大体のサイズは推察できる
TStringListは、Itemsは、Stringのリストだから、
サイズは、大体、Char * Length(String) + αとなる

厳密にやるなら、メモリマネージャ乗っ取る方法があるだろうが、面倒だろうね

579 :デフォルトの名無しさん:2007/09/07(金) 10:46:42
> 厳密にやるなら、メモリマネージャ乗っ取る方法があるだろうが、面倒だろうね
これに関しては、取り消し
わからんので、つっこまれても、何も返せんw

580 :578:2007/09/07(金) 10:47:54
>厳密にやるなら、メモリマネージャ乗っ取る方法があるだろうが、面倒だろうね

面倒なんですか…
2Gなんて滅多になるものではないから普通は気にしないもんなんですか。

わかりやした。

581 :デフォルトの名無しさん:2007/09/07(金) 10:50:09
>>577
わかるだろ

582 :デフォルトの名無しさん:2007/09/07(金) 10:52:29
なんかカオスな流れだな

583 :デフォルトの名無しさん:2007/09/07(金) 10:53:29
>>580
何でお前が>>578を騙ってるんだよw

584 :573:2007/09/07(金) 10:57:41
あ、573を578とアンカーつけ間違えました。すみません。

585 :デフォルトの名無しさん:2007/09/07(金) 11:04:10
結局のとこどうなのよ?
中村さんやHalbowさんくらいの手練の人はおらんのか?

586 :デフォルトの名無しさん:2007/09/07(金) 11:05:29
答えが出てるのにわからんといわれても手の施しようがありません。

587 :デフォルトの名無しさん:2007/09/07(金) 11:22:43
そんなに疑うならSaveToFileででもサイズ確認すりゃいいだろ。
そもそも何故上限が2Gなのか・・・・

588 :デフォルトの名無しさん:2007/09/07(金) 11:38:08
なんだ、TStringListそのもののサイズかとおもた。
そうじゃないんなら、なおさら、Length(String)でわかるじゃないかYO

589 :デフォルトの名無しさん:2007/09/07(金) 11:43:55
こんな感じ?
Length(sl.Text) + (SizeOf(TStringItem) - Length(sl.LineBreak)) * sl.Count

590 :デフォルトの名無しさん:2007/09/07(金) 11:50:20
SaveToしたときのサイズなんだからSizeOf(Text)でいいだろ。

591 :デフォルトの名無しさん:2007/09/07(金) 13:56:08
>そもそも何故上限が2Gなのか・・・・

なに?上限2Gは都市伝説だったのか?
俺、信じてたのに…

592 :デフォルトの名無しさん:2007/09/07(金) 14:18:57
1Gの長さの文字列を二つ以上ぶら下げたってTStringListの制限には引っかからないだろ。
あまり長大なテキストを扱う場合は、それよりも先にパフォーマンス的な壁にぶつかるだろうな。

593 :デフォルトの名無しさん:2007/09/07(金) 14:29:58
Text プロパティを持っていて、これを呼び出す場合もある事を考えると
(2^31-1) で制限されていると考えていいと思うけどな


594 :デフォルトの名無しさん:2007/09/07(金) 14:42:48
昔は制限あったね

595 :デフォルトの名無しさん:2007/09/07(金) 15:13:52
Win32ってアドレス空間が4G、内2GはOS予約、ユーザプロセスは2Gしか使えない、じゃないの?

596 :デフォルトの名無しさん:2007/09/07(金) 15:38:13
くだすれでそんな高度な会話すんな。

597 :デフォルトの名無しさん:2007/09/07(金) 16:03:19
今ソース確認したけど、LoadFromFileやLoadFromStreamで読み込むと2Gの壁に引っかかるね。
自分で一行ずつ追加するなら、恐らく理論的にはいけるけど今度はOSの制限にひっかかる。
ま、そもそもTStringListはそんな巨大なファイル向けの設計じゃないから、
自分で適当な処理作った方が早いし速いと思うよ。

598 :デフォルトの名無しさん:2007/09/07(金) 17:13:05
同じlabel内に前の文+改行+文章と表示させたいのですがどうしたらいいでしょうか?
文字の表示にfor文使って1文字ずつ表示させているので
途中に改行なり入れると1文字ずつ改行されてしまうんです

599 :デフォルトの名無しさん:2007/09/07(金) 17:30:20
>>598
意味がわからんぞ。

Label1.Caption:='死ね'+#13#10+'アフォ!';


600 :デフォルトの名無しさん:2007/09/07(金) 20:21:02
画面を切り替えるためには、
(ウィザードのようにコンポーネントの位置がころころ変わるような)
PageControlを使って複数ページ作ってその中に配置すればいいということを聞いたのですが、
その方法だとどうしてもウィンドウ淵に数ピクセル隙間ができてしまいます。
この間を消す方法はあるのでしょうか?

601 :デフォルトの名無しさん:2007/09/07(金) 20:46:30
>>600
TNotebook使ってみろって

602 :デフォルトの名無しさん:2007/09/07(金) 20:46:31
tabcontrolとpanelででも実装すればいい

603 :デフォルトの名無しさん:2007/09/07(金) 21:01:13
もうdelphiを買わないほうがいいですか?

604 :272:2007/09/07(金) 21:05:59
nyで流れてるから落とせばいいんじゃね?

605 :デフォルトの名無しさん:2007/09/07(金) 21:06:21
>603
はいはいクマクマ


606 :デフォルトの名無しさん:2007/09/07(金) 21:52:20
>>600>>560

607 :デフォルトの名無しさん:2007/09/07(金) 21:52:48
>>601
おおおおおおおお
うまくできました感謝です。ありがとうございます。

608 :デフォルトの名無しさん:2007/09/07(金) 21:56:23
TNotebookは管理が非常に面倒なのはここだけの話

あと読み込みも遅いのも
まぁこれはフレームを使って必要な時だけ読み込むようにすれば何とかなるけどね

609 :デフォルトの名無しさん:2007/09/08(土) 00:19:22
>>598
ゲームで一文字づつ表示して、端まで行ったら改行したいわけ?
for文で毎回入れるんじゃなくて、入れたいときに入れればいいよ。

610 :デフォルトの名無しさん:2007/09/08(土) 03:36:20
エスパーが住むスレ。それがくだすれ。

611 :デフォルトの名無しさん:2007/09/08(土) 09:21:29
回答者にはある程度のESP能力が要求される。

612 :デフォルトの名無しさん:2007/09/09(日) 00:25:46
delwikiなくなったの?

613 :デフォルトの名無しさん:2007/09/09(日) 01:07:53
403になってるね

614 :ミ,,゚Д゚彡 ◆A6VzDeLphI :2007/09/09(日) 01:15:47
すんませーん。
TRegExpの質問。

http://』にはマッチせずに
『ttp://』にはマッチするような正規表現、はTRegExpでは
どのように書けばいいのでしょうか。

何をやりたいかというと、
文中の、"ttp://"を"http://"に置き換えたいのだけれど
"http://"を"hhttp://"には置き換えたくないので

ReplaceRegExprに何を書いたらいいのだろうかと・・・


615 :デフォルトの名無しさん:2007/09/09(日) 01:30:29
んなもんStringReplaceで十分。
http:// を ht@tp:// に置き換えて、
ttp:// を http:// に置き換えて、
ht@tp:// を http:// に置き換える。

616 :デフォルトの名無しさん:2007/09/09(日) 01:35:09
http://にはマッチせずにってのは自分で書くしかないんじゃないか

617 :デフォルトの名無しさん:2007/09/09(日) 01:44:19
普通はh?t?tpだろうけど・・・

618 :名無し募集中。。。:2007/09/09(日) 01:47:01
>>615


619 :デフォルトの名無しさん:2007/09/09(日) 01:48:18
>>615
無いとは思うけど「ht@tp://」ってのが元々あったら
どうする?

620 :デフォルトの名無しさん:2007/09/09(日) 02:00:08
>>617
>>617
>>617

621 :Delフサギコ ◆A6VzDeLphI :2007/09/09(日) 02:00:15
レスさんくすこ。>>615さん。

ユーザーに置換文字列を正規表現で設定させたいのです。
http://delfusa.main.jp/delfusafloor/download/replacetext/readme.html
これに、正規表現置換も組み込んでみたいかな、と思いまして
TRegExpだと、そういう応用も利くのかなと試してみてたところなのです。
>>616さんもレスありがとです。

   ∧,,∧∩ >>617さん。ばっちりです!
  ミ*゚Д゚彡 
  ミ⊃旦 ミ センキュー  
 @ミ ,,, ミ
   し' `J

複数文字列一括置換は、下記の"StringsReplace"使ってくれたら
619さんの危惧する問題にはぶつからなくなるです。
http://delfusa.main.jp/delfusafloor/opensource/delfusalibrary/20070828160200/StringUnit/StringUnitLight.pas.txt


622 :デフォルトの名無しさん:2007/09/09(日) 02:02:28
>>619
@なんて例えばの話なんだから、そういうのが予測される場合適宜変えればいいだけの話
それくらい頭使えよ

623 :デフォルトの名無しさん:2007/09/09(日) 02:33:39
http:// → ttp://
ttp:// → http://
でいいんじゃね?

624 :デフォルトの名無しさん:2007/09/09(日) 02:34:29
Delphiというのをやってみようと、Delphi7をインストールし、MDIアプリケーションの雛形をウィザードでつくり、その親フォームにPanel一つとButton一つを置きました。

そして「すべて保存」し、ビルドボタンを押すと、配置したときはPanelとButtonの色が灰色だったのに、親フォームのグレーの色に変わっていました。

何が原因なんですか?

625 :デフォルトの名無しさん:2007/09/09(日) 02:48:35
>>614
([^h]|)ttp://

でヒットさせて

$1http://

で置換。

Janeでしかチェックしてないが、行頭にttp://があるなら^で行頭も指定すれば大丈夫かと。


まあ今度からは正規表現スレに行きなよ。

626 :デフォルトの名無しさん:2007/09/09(日) 03:03:55
>>624
あてずっぽだけど、ParentColor って無いか?


627 :デフォルトの名無しさん:2007/09/09(日) 03:05:56
>>624
割れだから

628 :デフォルトの名無しさん:2007/09/09(日) 03:07:53
>>626
ParentColor をtrueにしてもfalseにしてもグレーになっちゃう・・・

ついでに初めからついてるToolBarまでグレーになっちゃう。
なんでだろ?

629 :デフォルトの名無しさん:2007/09/09(日) 03:09:06
>>627
割れじゃないよ。ちゃんと買ったやつ。

630 :デフォルトの名無しさん:2007/09/09(日) 03:09:35
お前らバカだなー

gray
n. 灰色, ネズミ色

つまり色なんて変わってないんだよ
こんな叙述トリックに騙されるようじゃやっていけないぞ

631 :デフォルトの名無しさん:2007/09/09(日) 03:12:40
>>630

いや、そういう言葉遊びじゃなくて、マジで困ってるんだ・・・
厳密にはclBtnFacrっていう明るいパネルの灰色がclAppWorkSpaceっていう暗い親フォームの色になってしまう。

632 :デフォルトの名無しさん:2007/09/09(日) 03:26:08
ボタンの色が変わるなんてありえるの?

633 :デフォルトの名無しさん:2007/09/09(日) 03:38:31
フォームエディタと実行されたウィンドウとで表示が違うのか
それともビルドするとフォームのプロパティが書き換わるのか
どっち?

634 :デフォルトの名無しさん:2007/09/09(日) 05:22:16
>>631
変わっちゃうなら、フォームクリエイトイベントで
書き換えたらいいじゃない

635 :617:2007/09/09(日) 05:43:30
>>620
もしかして置き換えじゃないからこんなレスされてんの?
>>617だけhttpに置き換えれば済む話だろ・・・
そんなんわからん奴はif文書いとけ

636 :デフォルトの名無しさん:2007/09/09(日) 11:54:02
>>634
Createイベントで代入してもOnShowイベントで代入しても暗い親フォームの色になってしまう。
なんでだろ?

どこかで親フォームの色が代入されるようになってるんだ・・・

637 :デフォルトの名無しさん:2007/09/09(日) 11:57:41
フォームにメインメニュー作っても実行するとなぜか表示されない…なんでだろうorz

638 :636:2007/09/09(日) 12:27:06
さらにpanelの上にpanelを一つ置き、上のパネルの色を白に設定しても実行時には上のpanelの色が親フォームの暗い色になってしまうorz

バグ?

639 :638:2007/09/09(日) 12:39:13
プロジェクトを全部破棄して新たに作り直したらうまくいきました。

なにかの値を知らずのうちに動かしたのかもしれません。
それはなんの値だったのか、気にかかるのですが… ひとまず自己解決しました。

640 :デフォルトの名無しさん:2007/09/09(日) 22:36:47
ある文字列をwidestringでとって、それをcanvas.textoutで20文字ごとに
出力したいんだけど、どうやってもうまくいかない(´・ω・`)
canvas.textout(1〜20字まで) + #13#10 + canvas.textout(21字〜) みたいにできるかとも思ったけどできず…
誰か助けてorz

641 :デフォルトの名無しさん:2007/09/09(日) 22:41:07
>>635
必死だね

642 :デフォルトの名無しさん:2007/09/09(日) 23:49:26
>640
CanvasはANSI版なので、W系のAPIを直接呼び出すべし。

643 :デフォルトの名無しさん:2007/09/10(月) 00:17:30
textoutはCRLFを解釈してくれたっけ?
Y座標を増やして描画したらどうかな。
ListBox使うと手っ取り早いけど。

644 :デフォルトの名無しさん:2007/09/10(月) 00:18:05
unicode を使おうと思ったらもう全て wで行く決意をしなくちゃいけない

ってのもどうかと思うけどな〜 -> delphi 7だけど、最近のは違うのかな?

645 :デフォルトの名無しさん:2007/09/10(月) 00:25:13
改行を解釈して出力してほしいならDrawText(W)

646 :デフォルトの名無しさん:2007/09/10(月) 03:32:07
wikiなくなってない?

647 :デフォルトの名無しさん:2007/09/10(月) 03:40:20
>>612-613

648 :デフォルトの名無しさん:2007/09/10(月) 03:59:30
こんばんはです
すこし負荷のかかる処理をしているのですが
使用者のPCがデュアルコアCPUの場合に、2つのCPUに処理を振り分けることはできるのでしょうか
今のままだと50%でCPU使用率が止まってしまうものでして。

649 :デフォルトの名無しさん:2007/09/10(月) 04:33:08
TThread

650 :デフォルトの名無しさん:2007/09/10(月) 04:35:39
マルチスレッドか、マルチプロセス。

651 :デフォルトの名無しさん:2007/09/10(月) 08:29:26
>>646
復活してる

652 :640:2007/09/10(月) 08:40:55
情報くれた人ありがとう、実はまだ手出したことないけど今後のためにもAPIでやってみるよ。

653 :デフォルトの名無しさん:2007/09/10(月) 08:43:01
ひさしぶりにDelphiに復活したけどやっぱDelphiはいいわ。
vsにもどりたくない

654 :648:2007/09/10(月) 15:29:22
>>649-650
なるほどです。これでなんとかできそうです
ありがとうございました。

655 :デフォルトの名無しさん:2007/09/10(月) 19:22:42
まともなレポートツールはないのかっ!
RaveもQuickもダメダメじゃんか。
PrinterオブジェクトやExcelでせこせこ地味な
コーディングしないと仕様を満たせないのかな?
あるいいはサードパーティの製品版を買うか?
どうすればいいんだ。

656 :デフォルトの名無しさん:2007/09/10(月) 19:30:25
俺クリレポ使ってる

657 :デフォルトの名無しさん:2007/09/10(月) 19:39:12
ちょっとずれるけど、
レポートツールってどんなことに使うんですか?
素朴な疑問なんですが・・・

658 :デフォルトの名無しさん:2007/09/10(月) 19:49:15
>>655
サードパーティの製品版買って
これで金取るなよ・・・と愚痴る

659 :デフォルトの名無しさん:2007/09/10(月) 20:20:21
>>657 なんか楽そうに見えるんだろ。
俺はデータベースの印刷なら自作マクロで印刷してる

660 :Delフサギコ ◆A6VzDeLphI :2007/09/10(月) 21:02:15
  ∧,,∧∩  昨日はありがとござい
 ミ,,゚Д゚彡  ましたー、
 ミ つ旦.ミ  
また質問っすー
TRegExpのReplaceRegExprなのですが
大小文字を区別しない、もしくは、区別する。という
オプションはありますでしょうか?

どこで指定したらいいでしょう?
ご存じでしたら教えてください。
ソースみても、さっぱりわからないっす。
IgnoreCaseのオプション、見つからず。でした。

正規表現だから、そういうの無いのかな?

661 :デフォルトの名無しさん:2007/09/10(月) 21:05:07
愛だよ、愛。

662 :デフォルトの名無しさん:2007/09/10(月) 21:13:19
なんかもうお前自分で作った方がいいんじゃないか

663 :デフォルトの名無しさん:2007/09/10(月) 21:34:20
鏡を見れば解るかも。 鏡に映っているのは・・・

664 :デフォルトの名無しさん:2007/09/10(月) 22:08:22
indyのソースって勝手に書き換えていいの?

665 :デフォルトの名無しさん:2007/09/10(月) 22:38:23
いい。

666 :デフォルトの名無しさん:2007/09/10(月) 22:51:21
property ModifierStr : RegExprString read GetModifierStr write SetModifierStr;
// Set/get default values of r.e.syntax modifiers. Modifiers in
// r.e. (?ismx-ismx) will replace this default values.

property ModifierI : boolean index 1 read GetModifier write SetModifier;
// Modifier /i - caseinsensitive, initialized from RegExprModifierI

667 :デフォルトの名無しさん:2007/09/10(月) 22:52:38
>>660
var RegExp: TRegExp;

RegExp := TRegExp.Create(nil);
RegExp.IgnoreCase := True;

668 :デフォルトの名無しさん:2007/09/10(月) 22:59:46
>>667
> ReplaceRegExpr

669 :Delフサギコ ◆A6VzDeLphI :2007/09/11(火) 01:37:49
♪∧,,∧ ♪
 ミ,,゚Д゚彡  ♪
 ミつ[|lllll]).  わかってきました。
TRegExpは、ここが詳しいですね。
BlueLeaf1336-PROBLEMS-2005_0032 > リンクタグ作成 HrefBuilder > 基本処理作成
http://www.geocities.jp/fjtkt/problems/2005_0032.html

とりあえず漏れはTRegExprのReplaceRegExprを使っているので
こんなのをつくってみた。

//大小文字無視フラグ搭載のReplaceRegExpr
function ReplaceRegExprCase(const ARegExpr, AInputStr, AReplaceStr : RegExprString;
   IgnoreCase : boolean = False) : RegExprString;
begin
 with TRegExpr.Create do try
  Expression := ARegExpr;
  ModifierI := IgnoreCase;
  Result := Replace (AInputStr, AReplaceStr, False);
  finally Free;
  end;
end;

これでうまく動きました。
みなさん、とりわけ、>>666さん、ありがとう。


670 :デフォルトの名無しさん:2007/09/11(火) 01:39:44
Delphiだとinterfaceはあまり使わないんですかね。
なんかGUIDが必須っぽいですが。

671 :デフォルトの名無しさん:2007/09/11(火) 03:01:00
いや、GUIDが無くても使えるよ。
他のモジュールとはexportした関数でやり取りするのがいいと思うので、
interfaceは使いませんね。

672 :デフォルトの名無しさん:2007/09/11(火) 03:57:09
DelphiのinterfaceはCOMとの絡みで導入されたから変な機能がずるずるとくっついてきちゃってて
他言語のinterface的な使い方はあまり見ないな。
プリミティブな標準クラスライブラリでEnumeratable, Comparableみたいな事はやってないから
上乗せする形で拡張することもできないし。

673 :デフォルトの名無しさん:2007/09/11(火) 08:05:45
GUID必須じゃないよ。 自動開放とかの仕掛けも使うのが必須じゃないよ。
D6以上なら登録コンポーネントのプロパティにすると、ちゃんとプロパティエディタにも反映されるよ。

でも最初から設計するならインターフェース型を使うより、
共通のインターフェースを持つクラスを継承させた方が使い易いんで、なかなか出番が無い。
さらに、名前が同じならDelphiの強力な実行時型情報でメソッドでもメンバーでも共通アクセス出来てしまう

だから既に作ってしまった名前の異なるインターフェースを持つコントロールの機能を共通に使いたい場合とかになるな。


674 :デフォルトの名無しさん:2007/09/11(火) 11:44:29
GUID付けんと、is演算子で実行時に問い合わせることできんしな。


675 :デフォルトの名無しさん:2007/09/11(火) 12:34:55
結論
Delphiのインタフェース、つかえねぇ・・・

676 :デフォルトの名無しさん:2007/09/11(火) 15:45:40
Genericsに対応させる前にそのへんてこInterfaceをどうにかしてほしかった。

677 :デフォルトの名無しさん:2007/09/11(火) 16:55:05
クラスのメソッドアドレス引いて自分でVMT作ってインターフェースに
キャストする仕組み作っておくと色々と面白いことができるよ
両方の内部構造を把握しておく必要があるけど

678 :デフォルトの名無しさん:2007/09/11(火) 17:01:19
くだらない、くだらなすぎる、まともなインタフェースないのかよぉ

679 :デフォルトの名無しさん:2007/09/11(火) 17:46:06
>>677
それ面白そう。
サンプルとかないすか?

680 :デフォルトの名無しさん:2007/09/11(火) 18:59:42
ないある

681 :デフォルトの名無しさん:2007/09/11(火) 20:20:55
> でも最初から設計するならインターフェース型を使うより、
> 共通のインターフェースを持つクラスを継承させた方が使い易いんで、なかなか出番が無い。
> さらに、名前が同じならDelphiの強力な実行時型情報でメソッドでもメンバーでも共通アクセス出来てしまう

俺は、これが知りたい
実行時型情報っていまいち使いこなせてないんだよな、おれ
かなり有用そうなんだが・・・

682 :デフォルトの名無しさん:2007/09/11(火) 20:59:47
なくても済むし、動的にメソッドやプロパティーを列挙しなけりゃならんなら
それはプログラムコードに問題あり、だ。

683 :デフォルトの名無しさん:2007/09/11(火) 21:42:24
published だけだし、実際に役に立つ場面はほとんどない。

684 :デフォルトの名無しさん:2007/09/11(火) 23:06:18
>>681
名前が同じだと、だいたい共通の親を持たせる場合が殆どだと思う。
だから実行時型情報が使いたくなる場合はあんまりないと思う。

それでも既にあるコントロールを自分が継承して同じ名前のメソッドを追加したいような場合がある。
そういう場合は
TObject . MethodAddress で出来る。
var AMethod: TMethod;
  AMethod.Code := AHandle.MethodAddress(name);
  AMethod.Data := AHandle;
とすれば、メソッドポインタが作れるから、これを TNotifyEvent型とかの変数に代入して呼び出せばよい

プロパティへのアクセスは uses TypInfo して
文字列型ならGetStrProp/SetStrProp
整数型ならGetOrdProp/SetOrdProp
てな関数がある。


685 :デフォルトの名無しさん:2007/09/11(火) 23:18:11
あ、
たとえば GetStrPropには
function GetStrProp(Instance: TObject; PropInfo: PPropInfo): string;
function GetStrProp(Instance: TObject; const PropName: string): string;
とがあって、当然名前を直接渡す方が使い勝手はいいけど、
検索時間が毎回かかる。
何度もアクセスしたり、読んで書くような場合は、

var PropInfo: PPropInfo;
PropInfo := GetPropInfo(Instance, PropName);
と、一度名前を解決するといい

686 :デフォルトの名無しさん:2007/09/12(水) 00:14:23
>MethodAddress
簡易スクリプト言語作ったときにDelphi側の関数呼ぶために使ったくらいだけど、
C#なんかを見てるとこういうリフレクション的な機能がもっとあってもいいなとオモタ


687 :デフォルトの名無しさん:2007/09/12(水) 00:25:03
実行時情報はJITが効くC#の方が何倍もあるわな。コンパイル言語はそこが不利。

688 :デフォルトの名無しさん:2007/09/12(水) 03:26:38
C#ってそんなに実行時型情報、豊富なのか・・・
どんなことができるんだろ

689 :デフォルトの名無しさん:2007/09/12(水) 04:30:13
eval("obj.Exec();");

690 :デフォルトの名無しさん:2007/09/12(水) 04:45:25
型情報だけじゃないよ。DelphiのRTTIがカスに思えるくらい豊富。
ま、C#の機能というよりは.NETの機能なんだけどね。だからDelphi.NETなら扱えると思う。
System.DiagnosticsとかSystem.Reflectionあたり。
スタックフレームや変数の内容、行番号なんかが簡単に取得できるから、簡易デバッガみたいな振る舞いもできる。

691 :デフォルトの名無しさん:2007/09/12(水) 05:52:32
Delphiで作った花火のプログラムはないですか?

692 :デフォルトの名無しさん:2007/09/12(水) 06:15:03
>>691
おまえはなにをいっているんだ

693 :デフォルトの名無しさん:2007/09/12(水) 06:23:49
昔よく作ったろ延々花火が上がりつづけるだけのプログラム
ああいうやつの事なんじゃね?

694 :デフォルトの名無しさん:2007/09/12(水) 08:02:01
小学1年の頃、basicで作ったな・・・
懐かしい

695 :デフォルトの名無しさん:2007/09/12(水) 09:43:59
ドンちゃん

696 :デフォルトの名無しさん:2007/09/12(水) 13:10:05
>>689
evalまであんの?

>>690
ほうほう。すごそうだ
逆コンパイルが楽にできるというが、それが理由なんでしょうかね

697 :デフォルトの名無しさん:2007/09/12(水) 16:10:16
ドトネトはDelphi使いには不評だが、ライブラリとしては凄いんだよな
まさにあれこそ誰かさんの言うVCL2.0だし

698 :デフォルトの名無しさん:2007/09/13(木) 07:15:28
全世界で不評の間違い

699 :デフォルトの名無しさん:2007/09/13(木) 07:40:39
>>698
自分=全世界ですか・・・

700 :デフォルトの名無しさん:2007/09/13(木) 08:44:17
全宇宙で不評の間違いだろ

701 :デフォルトの名無しさん:2007/09/13(木) 08:45:20
まぁほんとのところ俺が嫌いなだけだよ

702 :デフォルトの名無しさん:2007/09/13(木) 17:16:45
turbo delphi をDLして色々やってみてるんだけど難しい・・・・。
ツールパレットのTmainmenuを使ってメニュー作ってるんですけど
メニューの位置が上のウインドウの位置と近いので少し下にさげたい。
こういうのってどこをいじればできるんでしょうか?

あと超初心者にお勧めのサイトってありませんか?

703 :デフォルトの名無しさん:2007/09/13(木) 17:31:09
行ってる事がよくわからないところもあるがメインメニューは上にくっついてるもんだよ
TToolbarを使うべきなのかも

704 :702:2007/09/13(木) 17:57:48
すいません。言い方がおかしかったです。
このファイルや編集の位置をもう少し下に微妙製できないかなぁということです。
ttp://www.imgup.org/iup462088.jpg.html

705 :デフォルトの名無しさん:2007/09/13(木) 18:03:13
>>704
うん、だから、メインメニューはウィンドウの上にくっついてるもんだってば。

706 :デフォルトの名無しさん:2007/09/13(木) 18:04:49
>>704
マージンのプロパティなかったか?

707 :デフォルトの名無しさん:2007/09/13(木) 18:16:27
>>705-706
ありがとう、とりあえずマージンのプロパティがあるか探してみます

708 :デフォルトの名無しさん:2007/09/13(木) 18:26:40
メニューの描画ってOwnerDrawじゃない限りOSに投げるんじゃないのか?
だから単に>>702のシステムフォント設定がまずいだけじゃないかと思うんだけど
違ってたらすまん

709 :デフォルトの名無しさん:2007/09/13(木) 20:05:07
>>704
ウインドウの上のバーが、妙に小さいし、いろいろ弄っているせいでは?

710 :デフォルトの名無しさん:2007/09/13(木) 20:36:00
メニューなんてToolBarに乗せちゃえば?

711 :デフォルトの名無しさん:2007/09/13(木) 20:44:47
>>710
ToolBarのMenuをTrueにするやつ?
あれって、なんか変じゃない?

俺は、TBXに逃げたけど

712 :デフォルトの名無しさん:2007/09/13(木) 22:39:10
OwnerDrawでメニューっぽく書けばいいだけだろ。
OwnerDraw使わなかったらただのボタンになるし。

まあTBXはおすすめだけどね。

713 :デフォルトの名無しさん:2007/09/13(木) 23:42:26
Delphiってメニューでさえまともに表示できないの?

714 :デフォルトの名無しさん:2007/09/14(金) 00:18:32
TMenuはツールバーじゃないってだけかと。

715 :デフォルトの名無しさん:2007/09/14(金) 00:44:21
はい?

716 :ドシロウト:2007/09/14(金) 01:05:17
フォルダ内のファイルを列挙するのにFindFirstを使った例をよく見ることができますが、

これをタイムスタンプ(作成された日時?)が古い順に列挙されるようにするにはどういった処理をはさめばよいのでしょうか?

717 :デフォルトの名無しさん:2007/09/14(金) 01:13:05
自分でソート

718 :デフォルトの名無しさん:2007/09/14(金) 01:13:25
>>716
全部列挙した後でソートする。

719 :ドシロウト:2007/09/14(金) 02:40:39
>>717-718

ありがとう、了解です。

720 :デフォルトの名無しさん:2007/09/14(金) 05:10:35
BMPをリソースとして取り込もうとしたら「行が長すぎます」ってエラーが出て
うまくいかないんだけど、もしかしてBMPって無理?

721 :デフォルトの名無しさん:2007/09/14(金) 07:11:44
>>720 無理じゃないよ。
普通に xxx.RC の拡張子でテキストファイル作って
1行を

名前 BITMAP "ファイル名"

の書式で作る
特殊なファイルなら
名前 RCDATA "ファイル名"


で、このxxx.RC ファイルをIDEでプロジェクトに入れるか
ソースに自分で
{$R xxx.RES xxx.RC}
の行を入れる。

旨くゆかない、今やってる方法を書いてみて

722 :デフォルトの名無しさん:2007/09/14(金) 07:45:23
ExecCommand(Command: String; StdInput, StdOutput, StdErrOutput: TStringList);
みたいな関数ないの?

723 :デフォルトの名無しさん:2007/09/14(金) 07:57:44
CreateProcessじゃだめなん?

724 :デフォルトの名無しさん:2007/09/14(金) 10:47:06
>>722
これを参考にしたら?
http://www.autch.net/page/tips/delphi_anonymous_pipe.html


725 :720:2007/09/14(金) 11:20:34
>>721
今は、ファイル名を「xxx.RC」にしてソースに{$R xxx.RES xxx.RC}ってのを入れて
プロジェクト追加から追加しようとしたけどうまくいかないorz
名前 BITMAP "ファイル名"ってどこにいれたらいい?

726 :デフォルトの名無しさん:2007/09/14(金) 11:31:23
xnresourceeditor

727 :デフォルトの名無しさん:2007/09/14(金) 11:54:39
>>725
ソースに{$R入れて、更にプロジェクトに追加?

728 :デフォルトの名無しさん:2007/09/14(金) 12:14:19
>>725
まさか BMPファイルの拡張子を RCに変更してないか?
BMPファイルはそのまま同じフォルダにおいておく

新規作成で TXT ファイルを作って、これの拡張子を RC に変更、
そのテキストファイルの中身に

HOGEBMP BITMAP "ファイル名.BMP" というように書くんだよ


729 :720:2007/09/14(金) 13:18:42
>>728
われながらアホだった…まさにその通りorz
無事RCを読み込んでくれたw
けどその内容のウインドウが表示されただけで、肝心のBMPが使えない状態…
ここからは少し自分で試行錯誤してみようと思う
レスくれた人ありがとう、お騒がせしました

730 :デフォルトの名無しさん:2007/09/14(金) 13:30:36
リソースからビットマップを得る方法は
ttp://homepage2.nifty.com/Mr_XRAY/Halbow/Notes/N008.html

他に汎用的な話ならTResourceStreamを使うといい
リソースからハンドルを得る方法なんかは
http://pc.2ch.net/tech/kako/1009/10090/1009080085.html

731 :デフォルトの名無しさん:2007/09/14(金) 14:56:08
TWebBrowserを使って自動操作を行うアプリケーションを作っています。
で、操作中にIEが別Windowを出そうとしたときにOnNewWindow2で
ppdisp := xxx.Application; してるですが、どうしても別Windowが
出てきてしまう場合があります。どうやらJavaScriptでopenしてる場合に
別Windowが出てきてしまうようです。

このような場合でもTWebBrowserに結び付けたいのですが
どうすればよいでしょうか?

732 :デフォルトの名無しさん:2007/09/14(金) 17:29:10
WAVファイルをMP3に変換しろって言ったら
拡張子をMP3も書き換えて勝ち誇ってた人を思い出した

733 :デフォルトの名無しさん:2007/09/14(金) 17:33:01
>>731
開く「前に」書き換える

734 :デフォルトの名無しさん:2007/09/14(金) 17:50:22
OnNewWindow2は開く前ではないということですかorz
別のイベントか何かあるんでしょうか?
自分の理解が足りないせいもあり、ぐぐっても有効なところに
たどり着かなくて困ってるです。。。

735 :デフォルトの名無しさん:2007/09/15(土) 00:10:34
作業中、ふとフォームが表示されてないことに気づきました。
で、フォームの表示→Form1とやっても何の反応もなくオブジェクトツリー
のウインドウもグレーなまま…
なんとか表示できないでしょうか?

736 :デフォルトの名無しさん:2007/09/15(土) 00:27:28
表示すればいいです

737 :デフォルトの名無しさん:2007/09/15(土) 01:15:44
そんだけの情報じゃなあ。もっと詳しく。でもなんともならないに100CodeGear。

738 :735:2007/09/15(土) 01:25:48
プログラムを試運転させて戻ってきたら作成してたForm1が非表示になってて
表示させようとしても無反応、でも実行するとその間だけどこかから戻ってくるんです。
フォーム上にボタンなどを設置できなくなって困ってますorz
今まではフォームが消えたら保存せずに閉じたら直ったんですけど、今回はうっかり保存
しちゃって…

739 :デフォルトの名無しさん:2007/09/15(土) 01:27:32
>>738
F12

740 :デフォルトの名無しさん:2007/09/15(土) 01:31:39
OSの再起動をしたほうがいいKAMO!
変なコンポーネントも外す!

741 :デフォルトの名無しさん:2007/09/15(土) 01:43:10
Delphiのバージョンは?Classic Undockスタイルにしてる?

742 :デフォルトの名無しさん:2007/09/15(土) 01:46:43
ライン入力端子からの入力をCDを同じ音質でWAVファイルに保存したいのですが、
どうしたらよいですか?

743 :デフォルトの名無しさん:2007/09/15(土) 01:48:22
保存すればいいです

744 :735:2007/09/15(土) 01:55:17
>>735
押してみました、が何も…orz

>>740
再起動は3回しました、コンポーネントはデフォルトのままで何も追加してないです

>>741
6、Personalです
スタイルとかそのへんもデフォルトです

745 :デフォルトの名無しさん:2007/09/15(土) 03:06:48
[F12]でフォーム表示→[ALT]+[F12]でテキスト形式で表示してTop/Leftがあらぬ値になっていないか確認。

746 :735:2007/09/15(土) 03:56:07
>>745
F12押しても何も反応なしですorz
開いた瞬間からフォーム自体読み込まれてる感じがしないし、もしかしてバグってるのかな…?

747 :デフォルトの名無しさん:2007/09/15(土) 04:03:26
dfmの中身晒せ

748 :735:2007/09/15(土) 04:10:11
ごめんなさい、コードに余計な物打ち込んであってそれ消したら
なぜか表示されましたorz ほんとにすいませんでしたorz

749 :ドシロウト:2007/09/16(日) 06:31:12
MDIでコード上から子フォームを最大化したり最小化するにはどうすればいいんですか?

750 :デフォルトの名無しさん:2007/09/16(日) 06:54:49
アプリケーションの設計についての質問です。

今度、Delphiで作るアプリケーションには、
A、B、Cという画面があり、全て異なる編集画面です。
A、B、Cには、それぞれ独自のツールウインドウ、MDI子フォームがあります。

Delphiの8以降で言えば、編集時と、デバッグ時に、画面が切り替わるようなのを想像してください。
これを実現したいのです。

今は、A、B、C、をそれぞれ別アプリで作って連携させる、という方法を取ろうとしていますが、
編集しているファイルの扱いや、アプリの連携が煩雑になります。

ですので、やはり、A、B、Cを1つのアプリにしたいのです。

TBX(厳密にはSpTBX)を使って、ドッキング可能なツールウインドウを作っているのですが、
メインのFormに、A、B、Cのそれぞれのツールウインドウが収まりません。

どのように設計したもんでしょうか?

TBXで、ドッカブルなツールウインドウを別々に設計できる方法があればいいんですが・・・
ツールウインドウには、
TSpTBXMultiDockと、TSpTBXDockablePanelを使っています。


751 :ドシロウト:2007/09/16(日) 07:17:13
749ですが、WindowStateなるものがありました。 自己解決ということで…

752 :デフォルトの名無しさん:2007/09/16(日) 12:43:58
>>750
どんなのか想像できんな。
>ツールウインドウを別々に設計できる方法
TBXがどんな仕組みになってるか知らんが、フレームでも使ってみるとか。

753 :750:2007/09/16(日) 16:11:19
x ツールウインドウ
o ツールパネル

あと、TBXの場合、TTBXMultiDockと、TTBXDocakblePanelになるかと思います。


ドッカブルなツールパネル(TSpTBXDockablePanel)は設計時に、
ドッキングした状態で編集するのですが、
やりたいことは、極端な話、そのツールパネルが、たくさんあって、
モードにより(A, B, Cという状態)、いくつかの可視、不可視を切り替えたいのです。

しかし、ツールパネルがたくさんあると、一度に画面に表示しきれないので、
設計時にどうやって編集したものか、
という具合です

言葉だと伝えずらいので、画像でも用意しないといけないかな・・・

>>752
フレームで、できるのかな・・・

754 :750:2007/09/16(日) 16:47:03
http://sylphys.ddo.jp/upld2nd/pc2/src/1189928710620.png
こんな感じです。
これは、SpTBXのdemoですが、
こんな感じの画面(実際には、MDIなのですが)で、
ツールパネルをたくさんよういして、切り替えたい感じです。

755 :デフォルトの名無しさん:2007/09/16(日) 17:33:26
>>754
ソース提示しない限り誰も答えられない。

756 :デフォルトの名無しさん:2007/09/16(日) 17:36:13
ソース関係ないんじゃね?俺はなんとなく理解できるが。

757 :デフォルトの名無しさん:2007/09/16(日) 17:38:14
一時的にクローズすればいい話なのでは?

758 :デフォルトの名無しさん:2007/09/16(日) 17:46:12
でっかいディスプレイ買う

759 :デフォルトの名無しさん:2007/09/16(日) 17:50:40
タブコントロール内で設計

760 :デフォルトの名無しさん:2007/09/16(日) 17:56:08
スクロールさせる

761 :デフォルトの名無しさん:2007/09/16(日) 18:19:57
やっぱフレームに乗っけたいコントロールをのせて、TTBXDocakblePanelの中に貼り付けるってのがいいんじゃないの
何個くらいパネル作るかしらないけど設計時に隙間も無いくらいつめるにしても動的にはっつければいいし

762 :デフォルトの名無しさん:2007/09/16(日) 20:31:37
>>753
編集に邪魔なツールパネルのTopプロパティかLeftプロパティの値を大きくして一時的に画面の外に追い出したら?

763 :デフォルトの名無しさん:2007/09/16(日) 20:34:24
Delphi for PHPのせいでDelphi言語の情報がぐぐりにくくなった。
さようならDelphi。

764 :デフォルトの名無しさん:2007/09/16(日) 20:42:40
ググるときに「-PHP」って加えればいいんじゃね?

765 :デフォルトの名無しさん:2007/09/17(月) 00:31:29
Timageの画像を半透明表示したりすることはできますか?

766 :デフォルトの名無しさん:2007/09/17(月) 02:16:01
はい

767 :デフォルトの名無しさん:2007/09/17(月) 02:28:30
半透明のアルゴリズム知らないと出来ないよ。
白の背景に黒の点を半透明で描画する方法を知らないなら、無理。

768 :750:2007/09/17(月) 02:35:37
>>755
画面写真は、SpTBXのdemoのデモです。
ツールパネルの部分は、
TSpTBXMultiDock の上に TSpTBXDockablePanel コンポーネントはっつけただけですので,
実質ユーザーが書くソースはありません(いりません)

しかし、もし全体のソースを見たければ、こちらのDemos\Overviewに含まれています。
http://club.telepolis.com/silverpointdev/sptbxlib/SpTBXLib.1.8.3.zip

>>757
設計時にどうしようかという話なのです(´・ω・`)

>>759-762
dです。

とりあえず、簡単そうなのから。試してみるっす



769 :デフォルトの名無しさん:2007/09/17(月) 07:37:30
>>764
やってみたら逆にほとんどひっかからくなりました。
さようならDelphi。そしてありがとう。

770 :デフォルトの名無しさん:2007/09/17(月) 08:13:16
C#触ってみたらDelphi(というかVCL)のパクりで話路他
ネイティブコード生成できるようになったらDelphiからスイッチする

771 :デフォルトの名無しさん:2007/09/17(月) 08:15:45
delphi作った奴が作ったんだから当たり前だ

772 :デフォルトの名無しさん:2007/09/17(月) 09:43:46
そうそう、.NET Framework の GUI 部分は VCL そっくりだよね。
.NET Framework をライブラリとしてみた場合、VCL の 10倍以上充実してる
から、もはや VCL は旧態依然の機能不足にしか見えなくなる。

C# は、まさしく Delphi ユーザなら、ほとんど違和感なくすぐ使えるように
なるよ。Delphi はネイティブアプリづくりには依然としてすごく便利だから
捨てる必要はないけど、C# もやってみると視野が広がるよ。

773 :デフォルトの名無しさん:2007/09/17(月) 10:13:10
>>754
JEDI

774 :デフォルトの名無しさん:2007/09/17(月) 15:29:25
>>772
ま、後発ということもあるし、VCLみたいに互換性の維持に努めずに
一から構築できたことが一番の要因だろうね
VCLも過去の資産を切り捨てるという英断ができればもっと素晴らしいものになってただろうけど、
ズルズルとしがみついているうちにもはやしがみつく体力すら無くなってきた…

775 :デフォルトの名無しさん:2007/09/17(月) 18:24:44
QuadrupleDを3.03から3.10にアップデートしたいのですが
ファイルを上書きするだけでよいでしょうか?
それともDelphi6Personalをアンインストールして最初からインストールしなおしになりますか?

776 :デフォルトの名無しさん:2007/09/17(月) 18:28:49
.NET がそんなに良いとはとても思えないのだが? どこが良いのだろ?

それに、VCLをもっとよく出来ると思うなら、自分で作ればいいのでは?
それこそ改善点こそ商売のチャンスだろう。

777 :デフォルトの名無しさん:2007/09/17(月) 19:05:10
>>775
QD3を一旦アンインストールして、31.0インスコすればいいんじゃね?
ファイルが追加されていないなら、上書きで、パッケージを再コンパイルすればいい。

778 :デフォルトの名無しさん:2007/09/17(月) 19:12:42
>>777
QD3のアンインストールでうまくいきました
ファイル追加されてるか確かめる方法わからなかったので試してません・・・・orz



779 :デフォルトの名無しさん:2007/09/17(月) 19:33:12
diffとかじゃ調べられないのかね?

780 :デフォルトの名無しさん:2007/09/17(月) 19:41:32
>>772
(´-ω-`)ドトネトのツール自体や、製作物の動作モッサリ感がなければ良いけどな

781 :デフォルトの名無しさん:2007/09/17(月) 21:04:26
CodeGear の IDE ってそんなにもっさりしてるのか。
BlackFish も純.NET製だからつかいものにならんな、それじゃ。

782 :デフォルトの名無しさん:2007/09/17(月) 21:12:06
'diff' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

783 :デフォルトの名無しさん:2007/09/17(月) 21:49:19
Delphiやるならこれ便利だぞっていうライブラリありませんか?
いま色々と物色していて生産性をあげられるものを探しています。

784 :デフォルトの名無しさん:2007/09/17(月) 21:54:40
jedi

785 :デフォルトの名無しさん:2007/09/17(月) 22:11:12
vcl

786 :デフォルトの名無しさん:2007/09/17(月) 22:11:13
VCL

787 :デフォルトの名無しさん:2007/09/17(月) 22:34:26
TComponentは置いといて、TStringListとかTBitmapとかC++に移植した物ありますか?MSVCで使えるもので。

788 :デフォルトの名無しさん:2007/09/17(月) 22:47:58
TStringListの変わりにstd::vector<std::string>では駄目かな?
そのままじゃ同じようには使えないけど。



789 :750:2007/09/18(火) 18:37:47
道開けてきそうです。
TSpTBXDockablePanelのスプリッターを上や下に引っ張れば、設計時でも、
コンポーネントなど置いた後でも、自由に小さくできるのに、気づかなかった orz
これなら、10個くらいなら、設計できそう

>>773
なんで、JEDI?アンカーミス?と思ったのですが、
調べてみましたら、
JVCL の、TJvDockVSNetStyle が VS.NET みたいなドッキング可能ツールパネルを実現していて(!)、
別に作成したFormをドッキングできるようです。
別のFormということは、設計時に、画面サイズに困らずに設計できますね

しかも、MXS配布 の TJvDockVSNetStyleTBX を使うと、TBXテーマも適用できて、
ダサい外観からもおさらばで (゚Д゚)ウマー

後は、UNICODE周りさえうまくいけば!!俺は乗り換えるぜ?ムヒヒ

790 :デフォルトの名無しさん:2007/09/18(火) 18:49:38
きめえ

791 :デフォルトの名無しさん:2007/09/18(火) 19:15:04
最前線君が脳裏をよぎった

792 :デフォルトの名無しさん:2007/09/19(水) 07:27:59
Cみたいに
int narray[] = {10, 20, 30,};
と配列サイズを自動設定させる書き方を教えてください

793 :デフォルトの名無しさん:2007/09/19(水) 08:23:55
>>792
ないです

794 :デフォルトの名無しさん:2007/09/19(水) 10:11:07
なんでないのかな。 要素の数を数えるの大変なのに。

795 :デフォルトの名無しさん:2007/09/19(水) 10:15:15
なんでないのかな。 要素の数を数えるの大変なのに。

ところで、\SLib ってどうやって使うのですか?
デバッグ付きdcuみたいですけど、いまいち使い方が解りません。

796 :デフォルトの名無しさん:2007/09/19(水) 18:21:06
コンパイルの高速性を維持するのに必要だから

797 :デフォルトの名無しさん:2007/09/19(水) 18:34:01
オープン配列引数でも使って設定する関数作れば。

798 :デフォルトの名無しさん:2007/09/19(水) 20:33:58
UIWebBrowser を使ってみました。で、IeNo3DBORDER プロパティを True に
しても、フォームの入力枠が立体的に表示されてしまいます。
あと付属の TUIFavorites も使ってみたのですが、お気に入りの表示順が
IEと同様になりません。アイコンも表示されません。delphi7 と IE6 です。

799 :デフォルトの名無しさん:2007/09/19(水) 20:45:45
独り言はちらしの裏へ

800 :デフォルトの名無しさん:2007/09/19(水) 20:56:43
ムカ〜つく 困んってるのに〜

801 :デフォルトの名無しさん:2007/09/19(水) 21:31:10
UIWebBrowser のことなら Delphi-ML に書き込んだら⊆(⌒◎⌒)⊇さんが答えてくれるよ。
生きてたらね

802 :デフォルトの名無しさん:2007/09/19(水) 22:07:34
>>796
ジェネリクスとか不要な機能を付ける前にこっちを何とかしろよ

803 :デフォルトの名無しさん:2007/09/19(水) 22:08:45
ユニコードもイラネ。
.NETでやれよ。

804 :デフォルトの名無しさん:2007/09/19(水) 22:23:01
genericsとunicode化が不要と思ってるのは素人か池沼だけだろ

805 :デフォルトの名無しさん:2007/09/19(水) 22:23:31
スレタイ嫁余暇須津も

806 :誰か助けて:2007/09/19(水) 22:33:12
納得いかないので、Turboを入れてみました。でもやっぱりBDS2006を
使いたいので、Turboをアンインストールして、BDS2006を再度インストール
しました。認証が失敗(コードを間違えていた)するので、Turboの
認証用ファイルを読み込ませたら、なんと受け付けてくれた。BDS2006の
起動時にあと100年近く使える旨が表示されて、TurboExpみたいでキモおもしろかった。

Delphi2007proアップグレード版を今朝注文しました。

807 :デフォルトの名無しさん:2007/09/19(水) 22:56:02
>>806
>>799

808 :デフォルトの名無しさん:2007/09/20(木) 00:13:21
すいません質問させてください。
DelWikiに商用利用についての記述があり、
>商用利用不可
>業務で利用したり、販売目的 (対価を要求するシェアウェアも含む) で開発することができない
となっていますが、同人ソフトも言葉の通りでしょうか?
MP3の商用利用の用にn数以上の場合とかではなく、前面禁止でしょうか?

809 :808:2007/09/20(木) 00:14:17
すいません、言葉足らずでした。
Delphi6personalの場合です。

810 :デフォルトの名無しさん:2007/09/20(木) 00:15:33
>>804
不要とは言ってない。
使いたかったら.NETいけってだけ。
これ以上Win32版が使いにくくなったらかなわん。

811 :デフォルトの名無しさん:2007/09/20(木) 00:19:07
genericsなんて入れたらコンパイル遅くなるじゃん。
バリアント型で我慢しとけよ。

812 :デフォルトの名無しさん:2007/09/20(木) 00:19:12
むしろ「同人ならもしかして…」って期待する方がおかしいと思う。

813 :デフォルトの名無しさん:2007/09/20(木) 00:21:08
>>809
同人ソフトって事は、金を取るわけだろ。
当然販売目的ってことになるわな
D6パーソナルは、学習用であり機能評価用という位置付けだ。
販売しなくても業務での使用は不可というところにそれが現れている。
正確なところを知りたければ、ボーランドに問い合わせるのが一番なんだが。


814 :808:2007/09/20(木) 00:21:48
>>812
ありがとうございました。
有償の方を検討してみます。

815 :デフォルトの名無しさん:2007/09/20(木) 00:23:54
ここでおおっぴらに言うことでもないが
そんなに神経質になることもないと思うけどな

816 :808:2007/09/20(木) 00:32:03
>>813
見逃しました、回答ありがとうございます。
有償版買う前に一度聞いてみる事にします。


817 :デフォルトの名無しさん:2007/09/20(木) 01:27:23
>>810
機能追加望まないなら旧版にしがみついていればいいじゃん

818 :デフォルトの名無しさん:2007/09/20(木) 01:29:50
>>816
フリーのTurboDelphiは商用も可だよ

819 :デフォルトの名無しさん:2007/09/20(木) 02:50:37
Delphiのアカデミック版はVSと違って商用不可なのが残念だな

820 :デフォルトの名無しさん:2007/09/20(木) 03:26:04
VSって貧乏人向けなのですか?

821 :デフォルトの名無しさん:2007/09/20(木) 04:54:23
>>808
本格的にやるなら製品版買ってみればいいよ。
試用版とは違っていろんなコンポとかついてて楽しいよ。

822 :デフォルトの名無しさん:2007/09/20(木) 06:24:12
Delphiの学割は商用不可以前に作ったアプリの公開すら不可だからな
なんでなのかいまだにわからない

823 :デフォルトの名無しさん:2007/09/20(木) 07:37:21
>>817
高速化とバグ取りはありがたいからその提案は断る

824 :デフォルトの名無しさん:2007/09/20(木) 07:41:53
マジな話、コンパイル速度がC並に低下したならCの方がいいぜ

825 :デフォルトの名無しさん:2007/09/20(木) 09:46:06
作ったソフトを配布しようと思ったのですが、Personal版のため
インストーラがなくて、仕方なくフリーのインストーラをDLしたはいいけど
どのファイルを入れたらいいやら…
必要なファイルが分かる場所とかってあるんですか?
配布するのは初めてでまったくわかりませんorz

826 :デフォルトの名無しさん:2007/09/20(木) 10:00:45
自己解凍形式(SFX)のを使ってるの?

Delphiの良さは実行ファイルだけあればいいこと。
つまり、データベースとか使ってないなら exeだけ入れればいいんだ。

ついでにソースも一緒に配布したいなら、ソースのフォルダも圧縮してやればいい

827 :825:2007/09/20(木) 10:08:54
>>826
さっきexeファイルを他のPCに移したらエラー起きて起動すらしなくてorz
何かのファイルが足りないかと思ってましたが
もしかしてコンパイル方法が間違ってますかね?

828 :デフォルトの名無しさん:2007/09/20(木) 10:20:51
実行時パッケージを使って構築にチェックが入ってんじゃないの?

829 :825:2007/09/20(木) 10:28:16
入ってませんでした
ちなみに使ってるのはF1bookってのとイメージとラベルとメニューで、
今までdelphiの入ってたPCからdelphiを削除したら起動はするけど
EOleSysErrorがモジュール Peoject1.exe の 000604F0 で発生しました。
クラスが登録されていません.
って出ますorz


830 :デフォルトの名無しさん:2007/09/20(木) 10:36:03
ここの一番したあたり見てみて
ttp://delfusa.main.jp/delfusafloor/archive/VA009712_take/delphi/kabedel.htm


831 :825:2007/09/20(木) 11:13:15
ありがとうございました、動きました!
ちょっと動作不備なところがまだありましたが、後は自分で調べてみます

832 :デフォルトの名無しさん:2007/09/20(木) 19:25:04
>>824
C/C++は文字列やオブジェクトの扱いがどうも馴染めないな…

833 :デフォルトの名無しさん:2007/09/20(木) 22:01:53
>>823
むしろコンパイラレベルのバグはバージョンアップごとに増えてるが

834 :デフォルトの名無しさん:2007/09/20(木) 22:07:42
>>823
高速化なんてしたっけ?

835 :デフォルトの名無しさん:2007/09/23(日) 09:37:35
Turbo Delphi Explorerで作ったアプリって、Windows95でも動作しますか?

836 :デフォルトの名無しさん:2007/09/23(日) 12:54:16
CheckListBoxでチェックだけ付けたいのに、
普通の ListBoxのようにマウスで選択状態にできてしまいますよね、
あれを、選択状態にしないでマウスのクリックのみでチェックを付けたり外したりでないでしょうか?


837 :デフォルトの名無しさん:2007/09/23(日) 12:56:06
onclickで付けたり外したりすればいいんじゃね

838 :デフォルトの名無しさん:2007/09/23(日) 13:03:02
>>837
それが…OnClickはマウスのボタンを離したときに発生するらしく
クリック中は選択状態になってしまい選択箇所がちらついてしまうのです。


839 :デフォルトの名無しさん:2007/09/23(日) 13:43:30
じゃあListBoxにしてCheckBoxは自分で描画すれば?

840 :デフォルトの名無しさん:2007/09/24(月) 01:48:05
マウス入力を奪って、自分で処理すればいい。

841 :デフォルトの名無しさん:2007/09/24(月) 04:32:56
私も奪って!

842 :デフォルトの名無しさん:2007/09/24(月) 08:45:46
TABitmapを使ってアルファチャンネルの部分を透明にしたくて、
色々試したのですが上手くいきません。
ColorAlphaPicAlphaを使っても、色が薄くなるだけで透明にはなりませんでした。
↓の様にコードを書いたのですが、どう直せば良いのでしょうか?
初心者で根本的に間違ってる部分があるのかもしれませんが、よろしければご教示お願いします。
procedure TForm1.FormCreate(Sender: TObject);
var
bmp1:TABitmap;
bmp2:TABitmap;
begin
bmp1:=TABitmap.Create;
bmp1.LoadFromFile('aaa.bmp');
bmp2:=TABitmap.Create;
bmp2.SetSize(500,500);
bmp2.Do32;
bmp1.ColorAlphaPic(0,0,500,500,0,0,bmp2);
image1.Canvas.Draw(0,0,bmp2);
bmp1.Free;
bmp2.Free;
end;

843 :デフォルトの名無しさん:2007/09/24(月) 10:01:12
単なる透明なら、普通にTBitmapでTransparentColor: を使う方が簡単では?

844 :842:2007/09/24(月) 11:08:54
>>843
レスありがとうございます。
TransparentColorは透明か不透明かの2択だったと思うので。違ったらごめんなさい。
出来れば、アルファチャンネルで綺麗にくりぬいたり、半透明にしたいなと思いまして。
わがままを言って申し訳ないです。

845 :デフォルトの名無しさん:2007/09/24(月) 12:45:55
GDI では無理。自分でつくるか GDI+ 使うしかない。

846 :デフォルトの名無しさん:2007/09/24(月) 12:49:35
いや、ABitmap使えばαチャンネル使えるはずだが。もう使い方忘れたから説明できないが。

847 :デフォルトの名無しさん:2007/09/24(月) 12:52:03
つくるのは ScanLine で簡単。どうやって描画するか、が問題。

848 :デフォルトの名無しさん:2007/09/25(火) 13:50:12
delphi2007 UP3にしたら

SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
Application.ShowMainForm:=False;

でタスクバー隠せなくなってしましました。
なんか情報ないですかotz

849 :デフォルトの名無しさん:2007/09/25(火) 15:44:00
微妙にスレ違いになるかもですが、先日配布について質問した者です。
今さっき配布先の知り合いからPCが起動しないと言われましたorz
ライセンスフリーと聞いたのでActiveXを動かす為の
Vcf132.ocx
Oc30.dll
Mfcans32.dll
Msvcrt20.dll
を同時に配布してシステムフォルダに上書きさせたのですが、それが原因で
PCが起動しなくなるなんてことあるんでしょうか…?

850 :デフォルトの名無しさん:2007/09/25(火) 16:13:13
>>849
あるんでしょうか?って実際に起こってんだろwww

851 :デフォルトの名無しさん:2007/09/25(火) 16:28:06
>>825-829 の人?
M$のDLLをシステムフォルダに勝手にインストールすると、DLLの呪いにかかるよ。
あいつら勝手に訳の判らない事やって、それで失敗したら改善しましたってやってるんだから。


基本的にDLLが必要ならシステムフォルダではなく、
インストールするフォルダに入れてしまうようにしないとね。


852 :849:2007/09/25(火) 16:28:35
>>850
起動しないのは事実らしいんですが、それが原因なのかどうかが分からないところで…

853 :849:2007/09/25(火) 16:33:07
>>851
そうです、最初からそう言った方が早かったですね・・・w
そうなんですか…うーん、どうしたものやらorz
メーカーロゴから進まなくて
リカバリもセーフモードでの起動もできないらしいんです

854 :デフォルトの名無しさん:2007/09/25(火) 16:57:42
>リカバリもセーフモードでの起動もできないらしいんです

どのバージョンか判らないけど、最近のならソレはないと思うけどな
起動出来ないならとりあえず古いDLLで動くと思うんだけど

あと、DLLのインストールについては
http://www.microsoft.com/japan/msdn/windows/windows2000/dlldanger1.aspx


855 :849:2007/09/25(火) 17:27:10
>>854
ありがとうございました、初心者のうちから配布はやめた方がいいですねorz
ノンサポートって事前に伝えましたが、やはりなんとかしてみようと思います。

856 :デフォルトの名無しさん:2007/09/26(水) 07:13:32
すみません。Windowsプログラミングド素人です。おしえてくださいおながいします。

以前このスレで教えていただいた iphelper API を使おうと思っています。
で、

  #include <iphlpapi.h>

は Delphi ではどう書いたらいいのでしょうか?

あと、iphlpapi.h で宣言される構造体、たとえばこんな感じ

typedef struct _IP_ADAPTER_INDEX_MAP {
 ULONG Index ;
 WCHAR Name[MAX_ADAPTER_NAME];
} IP_ADAPTER_INDEX_MAP, *PIP_ADAPTER_INDEX_MAP;

のはどう定義したらいいのでしょうか?やはり再帰的に下っていってULONGやWCHAR、
MAX_ADAPTER_NAME を Delphiで宣言するのでしょうか?

857 :デフォルトの名無しさん:2007/09/26(水) 07:34:55
>>856 そういう時は、だいたい iphlpapi.pas でgoogle検索すると色々教えてくれるよ

その構造体は
type
IP_ADAPTER_INDEX_MAP = record
Index : ULONG;
Name : : array[0..(MAX_ADAPTER_NAME-1)] of WCHAR ;
end;

PIP_ADAPTER_INDEX_MAP = ^IP_ADAPTER_INDEX_MAP;

みたいに定義すればいい。
ULONG WCHAR は windows ユニットで定義されている。

858 :デフォルトの名無しさん:2007/09/26(水) 07:44:49
>>857
朝からありがとうございます!.pas で Google というのは知りませんでした。
道理でひっかからないわけだ…。

859 :デフォルトの名無しさん:2007/09/26(水) 07:48:33
ごめん Name : : の  : 2つは 単純な打ち間違い

860 :デフォルトの名無しさん:2007/09/26(水) 08:09:43
というかiphlpapi delphiでぐぐれば

861 :デフォルトの名無しさん:2007/09/26(水) 08:12:43
Delphi の名前がphpにもついたからぐぐりにくくなったな。
ボーランドってほんとセンスない。

862 :デフォルトの名無しさん:2007/09/26(水) 13:16:01
OleVariant 型の変数に、未割り当ての状態を確かめる方法ってありますか?

V.IsNull
V = Null
等々、試しましたが、比較演算の実行時エラーが出てしまいます


863 :862:2007/09/26(水) 13:37:17
自己レスです

(IDispatch(V) = nil) で、解決しました
未割り当てではなく、$00000000 という値が入っていました

864 :デフォルトの名無しさん:2007/09/26(水) 18:37:49
質問です
@フォームに opendialog と edit と button を貼り付けます
Abutton をダブルクリックして以下のシンプルなコードを書きます

procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then Edit1.Text := OpenDialog1.FileName;
end;

B実行して button をクリックし特定のファイルにマウスポインタを重ねます
 クリックしてもしなくても構いません
Cキャンセルを押します
Dもう一度 button をクリックし特定のファイルにマウスポインタを重ねます

以上の動作を行うと例外が発生してしまいます
特定のファイルとは20MB超とかのファイルだと思います
原因は何ですか?
環境はdelphi6、XPSP2です

865 :デフォルトの名無しさん:2007/09/26(水) 19:19:33
BDS2006 で試したけど、再現しませんね。
例外は何て出ますか?

また、デバッグ版DCUの使用にチェックを入れると、どこで止まりますか?

866 :デフォルトの名無しさん:2007/09/26(水) 19:22:24
>>864
OpenDialog は Windows だから。たぶんエクスプローラとかでやっても
同じように落ちない?

867 :864:2007/09/26(水) 19:34:33
メモ帳では落ちましたがペイントでは落ちませんでした
他に色々試しましたが一定の結果が得られず、法則が分かりません
うちの環境だけなら気にしないでいようと思います

868 :864:2007/09/26(水) 19:42:19
>>865
delphiから実行すると、こんな感じのダイアログとアセンブラのソースが出てきます

---------------------------
情報
---------------------------
プロジェクト C:\○○\Project1.exe が例外により実行を停止しました。
'access violation at 0x7d64159e: read of address 0x03b12038'
再開するにはステップ実行または実行を選択してください。
---------------------------
OK
---------------------------

exeで実行すると窓がぱっと消えます
「デバッグ版DCUの使用」というのは見当たりません

869 :デフォルトの名無しさん:2007/09/26(水) 19:47:34
>>867
たぶんその辺のシステムDLLが壊れてる
OS再インスコ汁

870 :デフォルトの名無しさん:2007/09/26(水) 20:36:58
>>868 0x7d64159e は アプリケーション内ではなく OS の領域と思うよ。 >>869 が正しいかもな

871 :デフォルトの名無しさん:2007/09/26(水) 20:37:12
>>864
ほかでも起こるなら、OSが不安定になってるだけじゃん
再インストールしる

872 :デフォルトの名無しさん:2007/09/26(水) 21:30:40
断る

873 :デフォルトの名無しさん:2007/09/26(水) 22:09:18
そんな

874 :デフォルトの名無しさん:2007/09/26(水) 22:45:30
特定のファイルが問題なんじゃないの? 
スキャンディスクしてみるとか。

875 :デフォルトの名無しさん:2007/09/26(水) 22:53:13
スキャンディクスってファイル内容の破損も検出できるの?

876 :デフォルトの名無しさん:2007/09/27(木) 02:40:12
そのファイルを別のPCに持っていってテスト。

877 :デフォルトの名無しさん:2007/09/27(木) 07:00:13
ダイアログ拡張するフリーウェアでも入れてるんじゃねーの。
とりあえずスキャンディスク、ウィルスチェックして
窓の手で余計な自動実行ファイルを停止して
新規ユーザー作ってログインして試してみたら。それで駄目ならOSが腐ってる。

878 :デフォルトの名無しさん:2007/09/27(木) 07:25:43
Win32で
var I: UInt64;
でコンパイルが通るのですが、Delphi Win32は符号無し64bit整数をサポートしてたのでしょうか??



879 :デフォルトの名無しさん:2007/09/27(木) 07:53:58
>>878
なんでヘルプ見ないの?

880 :デフォルトの名無しさん:2007/09/27(木) 08:10:09
>>878
UInt64で右クリックして定義を探すとよくわかると思うよ

881 :デフォルトの名無しさん:2007/09/27(木) 09:58:51
オレの場合、
regsvr32 /u ivivideo.axとregsvr32 /u iviaudio.axで解決した。
原因は不明。


882 :デフォルトの名無しさん:2007/09/27(木) 13:37:15
>>880
UInt64はコンパイラに組み込みの型だと思うが、
君はどのソースファイルで定義を見たんだい?

883 :デフォルトの名無しさん:2007/09/27(木) 13:41:06
なぜ一行目で終われないのか、
君は私生活で不満でもあるのかい?

884 :デフォルトの名無しさん:2007/09/27(木) 13:47:18
>>883
へ?ただ単にどこかにあるのならその場所を聞こうと思ったんですけど…
不満があるとすれば私生活ではなく、あなたのその疑り深い態度ですね

885 :デフォルトの名無しさん:2007/09/27(木) 13:57:47
^^ この人、やっぱ1行多い

886 :デフォルトの名無しさん:2007/09/27(木) 14:05:14
>>883
客観的に見てお前が煽ってるだけだろ

887 :デフォルトの名無しさん:2007/09/27(木) 14:08:48
>>886
^^ その1行も無駄ですね

888 :デフォルトの名無しさん:2007/09/27(木) 14:09:31
仰るとおり人を煽るレス書く人はいない方がいいですよね

889 :デフォルトの名無しさん:2007/09/27(木) 14:10:26
私も同意
素直に書けばいいのに無駄なこと書く必要性を感じない
さっさと消えればいいと思う

890 :デフォルトの名無しさん:2007/09/27(木) 14:11:08
BDS2006から、Delphi2007にアップデートしようとしたのですが、
アップデートのはがきを見たところ、9月21日までとか書いてあります orz
まさか、期間限定とは・・・

もう新規で買うしかないのでしょうか?
7万円もだせない・・・

891 :デフォルトの名無しさん:2007/09/27(木) 14:11:14
>>883さんが言うように私生活に不満でもあるんだろうね
かわいそうに^^;;

892 :デフォルトの名無しさん:2007/09/27(木) 14:15:34
>>890
買う気があるなら問い合わせろよ。

893 :デフォルトの名無しさん:2007/09/27(木) 14:51:31
定義の検索しても何も出なくなってしまったのですが、
どうすれば出るようになりますか?

894 :デフォルトの名無しさん:2007/09/27(木) 16:21:36
もー! みんなして1行多いよ!!

895 :デフォルトの名無しさん:2007/09/27(木) 19:42:09
>>892
問い合わせてみます

896 :デフォルトの名無しさん:2007/09/27(木) 19:44:56
Formの新規作成時のフォントが、Tahomaになっているのを
直したいと思い、

Delphi Holic (HopeSeeds blog) | 今更のDelphi Tips:BDS2006 のフォームデザイナのディフォルトフォント
http://delphiholic.hopeseeds.com/?eid=214270

を参考に、
「オプション」の「トランスレーションツールオプション」→「フォント」の
日本語を、MS UI Gothicにしたのですが、
Formの新規作成をしても、Tahomaになったままになります・・・。

日本語フォントをデフォルトにする方法はないのでしょうか?
この辺のことってマニュアルに書いてあったりしますか?

897 :デフォルトの名無しさん:2007/09/27(木) 20:12:46
マニュアルってなに?

898 :デフォルトの名無しさん:2007/09/27(木) 22:02:12
9月19日にDelphi2007アップグレード版を注文しました。(ぎりぎりだったかな)
本日やっと到着しました。ネットを利用してUpdate3をかませました。
最後のヘルプファイルの更新がでたらめに時間がかかるのですが、
じっと我慢して気長に待ちながら2chしてました。(もち、同じマシンでです)

これBDS2006より気のせいかサクサク動きませんか?

しばらく検証して酷い不具合が見つからなかったら、
BDS2006関係と、.NET1.1関係のファイルを根こそぎデリートして、
.NET2.0のみに移行しようと思っています。



899 :デフォルトの名無しさん:2007/09/27(木) 22:06:37
D7より早けりゃ入れ替えたいけどそうじゃないからねぇ。
なんか妙にもたつくのよね。
画面の切り替え。

900 :デフォルトの名無しさん:2007/09/27(木) 22:07:56
それで?

901 :898:2007/09/27(木) 22:14:20
今試してみたけど、起動に関してはDel7もDel2007も最初はもたつくけど
いったん終了して再起動するとDel2007のほうが若干早くなってませんか?

自分のマシンは メモリ1.5GB CPUはPenM1.7GHzです。

902 :898:2007/09/27(木) 22:15:18
いや、若干というよりかなり早いです。私のマシンの場合は・・。

903 :デフォルトの名無しさん:2007/09/27(木) 22:26:20
D7+起動早くするやつ
一度目:4秒
二度目:1秒以下
標準コンポ+@、すべて読み込み。
少し前のシングルCPUでこんなもん。

D2007はこれより早いのか?

904 :898:2007/09/27(木) 22:39:11
いや、さすがにそこまでは早くないですね。

Webアプリ関係やデータベース関係のコンポーネントを省き(使わないので)、
IDEの機能で使わない機能をインストールしないで、2度目の起動は4秒です。
起動を早くするといった特別なユーティリティは使っていません。

ただ、BDS2006に比べたら相当早いですよ。まださわって30分ほどですが、
BDS2006からアップグレードして良かったと思います。Vistaをもっていないので
スルーするつもりでしたが・・。あとはヘルプの出来ですね。今から検証してみます。

905 :デフォルトの名無しさん:2007/09/28(金) 00:16:53
てんこ盛りと比べたら早くて軽いのは当たり前だろ。2007はモモタロスだけなんだから。

906 :デフォルトの名無しさん:2007/09/28(金) 00:43:26
>904
え〜と、ここ半年くらいCodeGearのいろんな情報を一切見てなかった?2007の売りのひとつが
D7並みの軽さなんだけど。ま、さすがにそこまではいかないけど。
あとヘルプは期待しないほうがいい。そう思っていれば、よくなったところがあればうれしいでしょ?

907 :デフォルトの名無しさん:2007/09/28(金) 00:52:18
>>905
Delphiはモモタロスで決定なのか?

908 :デフォルトの名無しさん:2007/09/28(金) 21:46:49
4年前のバージョン並みになった、が売りのひとつとはなさけない・・・
しかもヘルプは駄目駄目らしい・・

これは駄目そう。


909 :906:2007/09/29(土) 00:48:05
はいはいワロスワロス

910 :デフォルトの名無しさん:2007/09/29(土) 01:30:12
そうそう、ワロスワロス
これから始めるなら、やっぱVSだよな。

911 :デフォルトの名無しさん:2007/09/29(土) 07:07:45
これから始める人にVSを勧める理由ってなんだろう?
MS製であるから・・って言うことかな?

912 :デフォルトの名無しさん:2007/09/29(土) 07:48:36
俺はヘジタンについていくっ!

913 :デフォルトの名無しさん:2007/09/29(土) 08:34:10
DBEditで値を書き換えて、フォーカスが他のコントロールに移動すると
その値がDataSetに反映されますが、フォーカスを移動せずに直ちに値をDataSetに反映させる方法はありますか?

914 :デフォルトの名無しさん:2007/09/29(土) 08:47:10
>>913
Post

915 :デフォルトの名無しさん:2007/09/29(土) 20:04:31
ttp://fundementals.sourceforge.net/unicode.html
これらは無料ですか?

916 :デフォルトの名無しさん:2007/09/30(日) 03:28:07
Memoコンポーネントに半角スーペスや全角スーペスやタブ文字を書いたときにどれがどれだか分からなく
なるので見分けられるようにマークを付けたい。 そこらへんのテキストエディタでよく見かける機能です。

どうやりゃいいのけんじ? 初心者にも手軽に出来る方法があれば教えて。 無ければ無いでいいや。

917 :デフォルトの名無しさん:2007/09/30(日) 03:28:49
ない。ばいばい。

918 :デフォルトの名無しさん:2007/09/30(日) 03:29:57
スーペスをなんとかすればいいよ

919 :デフォルトの名無しさん:2007/09/30(日) 03:30:39
なるほどうあたまいいな

920 :デフォルトの名無しさん:2007/09/30(日) 07:15:29
>>916
若者よ、TEditorを使うのじゃ。精進せいよ。

921 :デフォルトの名無しさん:2007/09/30(日) 07:42:48
いやだ^^

922 :Delphiで祈る女:2007/09/30(日) 12:42:50
牛田モーミンといいます。大都会の片隅で×いちで孤独なOLをしています。

最近Delphiの新刊がでるようになりましたね。私は2冊買いました。
どちらも佐竹那月さんという女性のライターが執筆されています。

日経BPパソコンベストムック「TurboDelphiではじめるWindowsプログラミング」
カットシステム「ナッキーのDelphiはじめて奮戦記」

前者のp9に 「〜以下ではWindowsXPにインストールすることを前提に、
説明を進めていきます。Windows2000でも同様の手順です。ずんずん進んでください。」
後者はp43に「〜っていわれたけど、ちょっとごわごわ。」と書いてあります。

私は「どんどん進んでください。「ちょっとこわごわ。」だと思うのですが、
出版社が違ってこの表現が通るということは、単なる校正のミスではなく彼女は
日ごろこのような表現で会話をしているのでしょうか・・・・。だとしたら

   なんてすばらしいことでしょう。

私も負けないような感性溢れる表現で皆さんの琴線に触れるような書き込みを
していきたいと思います。

923 :デフォルトの名無しさん:2007/09/30(日) 13:25:17
>ちょっとごわごわ
単に柔軟剤が足りなかっただけだろ?
くだらんことで、騒ぎすぎる新参乙。

924 :デフォルトの名無しさん:2007/09/30(日) 13:29:48
東北人を馬鹿にすんでねぇ。
東北では「どんどん」「こわごわ」なんていわねぇ。


925 :デフォルトの名無しさん:2007/09/30(日) 15:14:47
うん、私もどこかの地方のなまりだと思う。

926 :デフォルトの名無しさん:2007/09/30(日) 15:35:44
>>50

927 :デフォルトの名無しさん:2007/09/30(日) 16:52:21
>>922
はいはい良かったね
分かったから帰れよ

928 :デフォルトの名無しさん:2007/09/30(日) 17:31:59
>>926
すごいトコもってきたなぁw

929 :デフォルトの名無しさん:2007/09/30(日) 20:08:04
群馬の変な女子高生、裕美子ちゃんが一生懸命頑張って大学に入学できて、
そして就職してすぐ結婚して離婚して・・・・。

裕美子ちゃんの初登場は「CかC++か」じゃなかったっけ?老師を目指すには
どちらを先に学習すべきかだったと思う。

もうあれから5年たったんだっけ?大学は中退したの???
自分で日ハムの小笠原にそっくりな顔って言ってたけど、小笠原は現在
髭を剃っているので、巨人戦の野球を見るたびに、この顔にそっくりな
ちょっと不思議っ子な女子大生がどこかにいるんだと、いつも思っている。

930 :デフォルトの名無しさん:2007/10/01(月) 00:32:29
indy等でdeflateで圧縮されたデータをストリームで受け取って
それをメモリ上で展開するようなユニット、どこかにありませんか?
似たような機能でgzipのものは見つけたのですが
deflateが見つからない・・・。

931 :916:2007/10/01(月) 04:27:58
>>917-920
みなさんありがとうございました。 TEditorはぐぐったときに見つけたんですけど
自分でMemoをいじれないかと思ってお聞きしました。 TEditorを使う方向で考えてみます、どもでした。

932 :デフォルトの名無しさん:2007/10/01(月) 10:47:40
集合型について教えてください。
カンマ区切りの文字列、例えば「1,4,5,7,8」という文字列を
数値型の集合として扱いたい場合はどうしたらいいのでしょうか。

933 :デフォルトの名無しさん:2007/10/01(月) 12:19:39
数字じゃないなら、フォームのpublishedなプロパティメンバーにして、uses に typeinfo加えて
GetSetProp / SetSetProp で相互変換するとか出来るけど

数値が要素の集合となると・・・・Low/Highの間でビット列でアクセスとかやるんだろか?

934 :932:2007/10/01(月) 13:26:12
いえ、単純に
if I in [1,4,5,7,8] then
をやりたかっただけなんですが、
集合の中身が状況によって異なるので。

935 :デフォルトの名無しさん:2007/10/01(月) 13:43:34
文字列からというなら、個別に数値へ変換して集合型に足すんじゃね?

936 :932:2007/10/01(月) 14:31:25
Include関数ですよね?
やっぱりそれしか無いですか。
キャストとかできればと思ったのですが。

937 :デフォルトの名無しさん:2007/10/01(月) 14:48:49
with tstringlist.create do
begin
 commatext := '1,4,5,7,8';
 if indexof(inttostr(i)) >= 0 then

938 :デフォルトの名無しさん:2007/10/01(月) 17:01:54
>>936
自分でそういう関数を作ればよろし

939 :932:2007/10/01(月) 17:15:33
まあ、そういうことですね。
ありがとうございます。

940 :デフォルトの名無しさん:2007/10/02(火) 17:13:59
IBXってスレッドフリーだっけ?

941 :デフォルトの名無しさん:2007/10/02(火) 17:16:34
いいえちがいます。

942 :デフォルトの名無しさん:2007/10/02(火) 17:17:19
んーならIBOは?

943 :デフォルトの名無しさん:2007/10/02(火) 17:20:32
私はIBOについてよく知りません。

944 :デフォルトの名無しさん:2007/10/02(火) 17:52:45
スレッドフリーってどういう意味?
スレッドセーフと同じ意味?

945 :デフォルトの名無しさん:2007/10/02(火) 19:52:33
スーパーフリー

946 :デフォルトの名無しさん:2007/10/02(火) 22:49:02
Delphi7で
>EOSError がモジュール test.exe の 00D76854 で発生しました。

というエラーに対応する箇所を調べるのはどうすればいいですか?

947 :デフォルトの名無しさん:2007/10/03(水) 06:22:54
Button1とButton2を同じ位置に置くと重なって表示されてどっちかが上、もう一方が
下になりますよね、これを意図的にどちらかが上になるようにすることは可能ですか?

Enabled=false; や Visual=false; などを使わずに純粋に上か下かを指定したいです。
TabStopのように順番が決まってたりするんでしょうか、お願いします。

948 :デフォルトの名無しさん:2007/10/03(水) 06:54:49
設計時なら右クリして前面、背面に移動でできるが
実行時は知らん。
.dfmの記述の順番に依存してるんだよな確か。

949 :947:2007/10/03(水) 07:01:10
>>948
なるほど、調べてみます、ありがとうございますた。

950 :デフォルトの名無しさん:2007/10/03(水) 07:40:12
知らないなら答えなきゃいいのに

951 :デフォルトの名無しさん:2007/10/03(水) 08:44:01
作成順でしょ。 ウィンドウハンドルがあるから、
SetWindowPos 等で無理やり手前に持ってくることも可能かもしれない。

>>946
CPUViewでそこに何のコードがあるかはわかる。
VCLのメソッドだと思うけど。

952 :デフォルトの名無しさん:2007/10/03(水) 10:34:50
BringToFront
コントロールを親コントロール内のそれ以外のすべてのコントロールの前に移動します。

こんなのがある

953 :デフォルトの名無しさん:2007/10/03(水) 11:52:18
ZOrderいぢればいいんでないかい?

954 :デフォルトの名無しさん:2007/10/03(水) 17:24:54
>946
つ ttp://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=068565

955 :デフォルトの名無しさん:2007/10/03(水) 21:06:23
コード上からTTreeViewのノードを展開してやろうと思い、

TreeView1.Items[1].Expand(true);
とか
TreeView1.Items[1].Expanded := true;

とかやっても開いてくれません。AllowExpansionはtrueのようです。
考えられる原因はなんでしょうか? バージョンはDelphi7Proです。

956 :デフォルトの名無しさん:2007/10/03(水) 22:38:50
>>946
F8 で実行〜すぐに IDE でメニューの「健作」〜「エラの健作」で「00D76854」を探す

957 :デフォルトの名無しさん:2007/10/04(木) 09:00:27
あるプロジェクトを元に修正をしたい場合、プロジェクトのフォルダの
ファイルを全部別のフォルダにコピーすればいいのでしょうか。
それともプロジェクトを開いて、ユニットなどを全て別名で保存する方が
いいのでしょうか。

958 :デフォルトの名無しさん:2007/10/04(木) 11:26:36
基本的に単純コピーでOK。
プロジェクト固有のユニットは相対パスで見てるから。

959 :デフォルトの名無しさん:2007/10/04(木) 13:19:35
コンパイルはコピー先のフォルダじゃなくて実はコピー元を参照してたりして

960 :デフォルトの名無しさん:2007/10/04(木) 14:22:14
簡単な物作って公表しようとしたらフリー版で作ったEXEやDLLは配布できないんですね。
古いバージョン(3とか4とか)でもいいので一番安くライセンスを得る方法って何でしょうか?

961 :デフォルトの名無しさん:2007/10/04(木) 17:04:15
作った奴公開できないのはアカデミック版だけでフリー版は別に問題ないんじゃないの。6でもTurboでも

962 :デフォルトの名無しさん:2007/10/04(木) 18:07:19
>>958
ありがと。今まで後者のやり方でずっとやってきてバカみたいでした。

963 :デフォルトの名無しさん:2007/10/04(木) 21:35:41
ただし作業状態を保存(拡張子dskだったかな?)してて、さらにそれもコピーしちゃうと、
IDEが以前のファイルを開いてしまい、修正したつもりがコピーした方は全く変更なしという状態になりかねないので注意

964 :デフォルトの名無しさん:2007/10/04(木) 21:39:25
妄想乙

965 :デフォルトの名無しさん:2007/10/05(金) 00:02:05
フリーはシェアとか製品がダメなだけだったか……
どもでした。

966 :デフォルトの名無しさん:2007/10/05(金) 00:20:39
TurboDelphiならシェアでもいいんじゃなかったっけ?

967 :デフォルトの名無しさん:2007/10/05(金) 00:44:36
>>963
あるあ・・・・あるw

俺も前にそれやって、爆死した

バージョン管理ソフトでのコミット時にも、*.dskは、除外対象に指定している。
Subversionとか使うと、フォルダ名違うのって当たり前だからな


968 :デフォルトの名無しさん:2007/10/05(金) 00:45:24
というか、dskってできるだけ相対ファイルパスで、記録すべきだと思うんだ、俺は
要望出してみようかしら・・・

969 :デフォルトの名無しさん:2007/10/05(金) 07:45:33
VMWare Player上で動作しているゲストOSをホストOSシャットダウン時に
同時にシャットダウンしたいのですが何かよい方法あるでしょうか。
ゲストOSの右上のバツボタンを押せばゲストがシャットダウンするので何とかなりそうな気はするのですが・・・

970 :デフォルトの名無しさん:2007/10/05(金) 12:37:25
VMWareって使ったこと無いけどただのウィンドウならWM_CLOSE送ればいい

971 :デフォルトの名無しさん:2007/10/05(金) 12:44:49
ミ田+R
shutdown -s -t 0
でもSendMessageで送ったら。
VMWareがそれを受け付けるかは知らないけど。

972 :デフォルトの名無しさん:2007/10/05(金) 13:05:10
finalization に判断含んだコード書いたりすると
BPレジスタの保存・復帰が旨くゆかない事があるみたい。
結果、systemユニットの  FInitUnits で例外が出る事があったよ。

だから終了手続きを書いてから finalizationではそれを呼ぶだけにするべきみたい

973 :デフォルトの名無しさん:2007/10/05(金) 15:54:13
>>972
レジスタやスタックの中身破壊するコード書いてただけじゃね?

974 :デフォルトの名無しさん:2007/10/05(金) 16:32:05
>>973
いや、そんなコードは書いてないよ。

今しらべた範囲では、判断が問題じゃなくて、
何かの条件+finalization で帰り値が文字列の関数を呼び出た場合のよう。
その条件を満たすと

push ebp
mov ebp,esp
push $00 <------- この命令が挿入される。
xor eax,eax
push ebp
push 例外ハンドラ
push dword ptr fs:[eax]
mov fs:[eax],esp
inc dword ptr [ユニット]
jnz Finalization + $4A

他は同じだから、帰りのEBPが0になってしまうって事みたい。

普通に新規作成したフォームにfinalizationを書いた場合は起きなかった。
コンポーネントを作った時に起きたけど、必ず起きるわけじゃないみたい。


975 :972:2007/10/05(金) 16:44:42
再現コードが作れた。
D5 と D7 では起きる。 D2006では起きない。

フォームを新規作成して、end. の前に以下の8行を追加

var TestName:string='Test.txt';
function SaveFileName: string;
begin
Result := 'abc.txt';
end;
initialization
finalization
SaveFileName; //<--- ここにブレークポイントをかけて CPU窓でステップ実行すると EBPが最後に0になるのが見える

どうやら、
文字列変数を定義して、それを初期化する行があって、
finalizationで で帰り値が文字列の関数を呼び出すコードを追加したら起きる
条件判断で実際にその関数を呼び出さない場合も同じ。

D2006では起きないから修正されてるみたい。

976 :デフォルトの名無しさん:2007/10/05(金) 16:48:02
>end. の前に以下の8行を追加

何のジョークだ?
つりか?

977 :デフォルトの名無しさん:2007/10/05(金) 16:48:58
検証乙
Delphi BugList Projectに登録世路

978 :デフォルトの名無しさん:2007/10/05(金) 16:52:30
Delphi6あたりで、
*.dpr の begin end部に、string変数宣言するとリークするという問題もあったな
いつも、もう一段、Main関数つくって、読んでたわ

979 :デフォルトの名無しさん:2007/10/05(金) 16:53:34
>>976は何が気に入らなかったんだろう・・・

980 :デフォルトの名無しさん:2007/10/05(金) 17:05:52
EBPが0になるとどーなんの?

981 :デフォルトの名無しさん:2007/10/05(金) 17:52:38
>>980
困る

982 :デフォルトの名無しさん:2007/10/05(金) 18:08:09
>>975
QC8360かな?
文字列のクリーンアップに関する問題みたいだから、自前でやれば解決するかもしれない

983 :デフォルトの名無しさん:2007/10/05(金) 18:15:19
>976

984 :デフォルトの名無しさん:2007/10/05(金) 18:20:45
>>970
>>971
すみません、まったく意味がわからないっす・・・


985 :デフォルトの名無しさん:2007/10/05(金) 18:21:58
>>976
>>976
>>976
>>976
>>976


986 :デフォルトの名無しさん:2007/10/05(金) 18:22:39
>>979 BPはスタックフレームを示す。
つまりスタック上に変数を取ってる所までリターンしてエラーになるから
全然関係ない所でアクセスエラーなんかが起きる事になる。


>>972 が書いてるように、finalizationでは
単なるprocedure を呼び出すようにしておけば安全。

987 :デフォルトの名無しさん:2007/10/05(金) 20:10:05
>>986
なんか微妙に説明おかしくね?
要するにPOPが不変なのにPUSHされる値が1つ増えるせいでエラーになるってだけ

988 :デフォルトの名無しさん:2007/10/05(金) 21:18:49
>>987 いや、>>974 が勘違いだろう。
ステップ実行して試したが、スタックのpush/pop数は合ってる
壊れるのは、 call @LStrArrayClr が呼ばれた時。


989 :デフォルトの名無しさん:2007/10/06(土) 01:44:24
どうでもええわ

990 :デフォルトの名無しさん:2007/10/06(土) 03:44:14
そうでもない

991 :デフォルトの名無しさん:2007/10/06(土) 05:47:23
ちゃんと知ってないと、原因不明のメモリリークに悩むことになるよ。

992 :デフォルトの名無しさん:2007/10/06(土) 07:40:24
超初心者用

993 :デフォルトの名無しさん:2007/10/06(土) 08:23:13
Turboで直ってるならそれでいいや

994 :デフォルトの名無しさん:2007/10/06(土) 12:15:43
質問! INIファイルに引数付きのアプリのパスを登録し、それを読み込んでShellExecuteで
起動させようと思ったんだけどうまくいかない!

------------------------test.ini-------------------------------
[Path]
APP="C:\WINDOWS\notepad.exe" "C:\WINDOWS\setuplog.txt"
------------------------test.ini-------------------------------

uses節 に IniFiles, ShellAPI を追加。

procedure TForm1.Button1Click(Sender: TObject);
var IniFile : TIniFile; AppPath, IniPath : String;
begin
IniFile := nil; // 初期化
// INIファイルのパスを格納
IniPath := ExtractFilePath(Application.ExeName) + 'test.ini';
try
IniFile := TIniFile.Create(inipath); // INIファイルの読み込み
AppPath := IniFile.ReadString('Path', 'APP', '');
finally
IniFile.Free;
end;
if AppPath <> '' then
begin
ShellExecute(Form1.handle,'open', PChar(AppPath), nil , nil , SW_SHOWNORMAL);
end
else
begin
ShowMessage('AppPathはカラです。');
end;
ShowMessage('AppPath=' + AppPath);
end;

995 :944:2007/10/06(土) 12:21:12
AppPathの中身を見たら 「C:\WINDOWS\notepad.exe" "C:\WINDOWS\setuplog.txt」 でした。
何故が最初と最後の 「"」 が勝手に削除されてしまってます。

ShellExecute の PChar(AppPath) では引数付きのパスの指定はNGみたいです。
ということは AppPath の中からアプリのパス部分を抜き取る文字列操作をしないとダメなんでしょうか?

上の 「"」 が勝手に削除されることもあり、元から 「"」 が付いていたかどうかの判定や、それによって
分岐を作らなければいけないとなるとかなり手間がかかりそうです。

もっと簡単な方法はないのでしょうか、もしあればご教授下さいませ^^;

996 :944:2007/10/06(土) 12:23:53
PS、ShellExecute で起動引数を指定するときは PChar(AppPath) の次の要素(上では1つ目のnil)で指定する
ということは知っています。 やはり文字列操作をして引数の部分を取り出す処理を書かなければいけないのでしょうか・・。

997 :デフォルトの名無しさん:2007/10/06(土) 12:36:22
普通取り出しやすいように書き出すだろ

998 :944:2007/10/06(土) 12:49:43
>>997
うーん、こんなことで悩むのは自分だけなのかな。
「アプリのパス 引数」 を一行で書けたらINIに手動で追加するときに便利で良いかと思ったんですが・・。

他の方法も考えてみます。 INIでなくLoadFromFileで読み取れば 「"」 が消えたりしませんし。
INIでやるなら

[APP1]
path=
param1=
param2=

のようにしたほうがコーディングは格段に楽ですね^^; ひとまずこの2択で考えてみます、どもでした。

999 :デフォルトの名無しさん:2007/10/06(土) 14:36:52
INIのAPIは両端に""がついていたら取っ払って読み込むという仕様なんで
途中にスペースがあり、両端が""でなければ両端に""をつけるというコードでいけたはず。
複合データはTStringListで読み書きするようにして
TInifileEx.ReadStrings
TInifileEx.WriteStrings
みたいに一度ラップしておけばいろいろ使いまわせるよ。

INIファイルをLoadFromFileで読み込むのはAPIとの不整合が起こる危険があるから下策。

1000 :994:2007/10/06(土) 15:14:43
>>999 レスありがとうございます。

>途中にスペースがあり、両端が""でなければ両端に""をつけるというコードでいけたはず。

それがそう単純にはいかないようで、例えば↓の場合、↑の条件を満たしていますが
両端に "" を付けると "notepad.exe "A" B" となってしまいマズいことになってしまいます。
こういうケースに対応させていくことも出来ますが無駄に骨が折れそうです・・。
I
------------------------test.ini-------------------------------
[Path]
APP=notepad.exe "A" B
------------------------test.ini-------------------------------

>TInifileEx.ReadStrings
なるほど、とても参考になりました、ありがとうございます^^

>APIとの不整合
これは知りませんでした、どもです。

INIの自動カットに憤慨しつつ1000ゲット!

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

249 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)