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

<前スレ>
くだすれDelphi(超初心者用)その42
スレリンク(tech板)

<過去スレ>
DelWiki避難所
URLリンク(delwiki.info) 関連の過去スレッド


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

3:デフォルトの名無しさん
07/08/03 12:20:19
重複です。移動してください。
スレリンク(tech板)

4:デフォルトの名無しさん
07/08/03 12:32:59
無償ダウンロード
URLリンク(www.microsoft.com)

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

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

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

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

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

Hexe19 - Doxygen for Delphi : Pas2Dox
URLリンク(web.archive.org)

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

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

・DelphiCodeToDoc home page
URLリンク(dephicodetodoc.sourceforge.net)
JavaDoc互換文法
GExperts 用のテンプレート完備

・JADD - Just Another DelphiDoc - Automatic Generation of Documentation for Delphi/Kylix-Projects
URLリンク(delphidoc.sourceforge.net)

・PasDoc - pasdoc
URLリンク(pasdoc.sipsolutions.net)

・SourceForge.net: Pascal To Doxygen Convertor
URLリンク(sourceforge.net)
Doxygen文法?


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

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


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


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

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

・Doc-O-Matic - Doc-O-Matic - Documentation System
URLリンク(www.doc-o-matic.com)
商用
CodeGearが使っているらしい

・Time2HELP - The Developer's Source Code Documentation Solution
URLリンク(www.time2help.com)
"JavaDoc" for Delphi
だそうで。

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



13:デフォルトの名無しさん
07/08/04 08:24:36
追加
・The Delphi Inspiration: DIPasDoc
URLリンク(www.yunqa.de)

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


14:デフォルトの名無しさん
07/08/04 08:27:27
>>11

【VBと比べて、比べる事であそびたい人】
VB vs Delphi @夏厨2006
スレリンク(tech板)


【VCと比べて、比べる事であそびたい人】
結局DelphiとVC++ってどっちの方がいいんだ?
スレリンク(tech板)


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

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



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

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

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

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

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

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


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


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

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

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

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

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

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


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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

59:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/08/06 01:06:50
ありがとうございます。
ポインタでやってみます。

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

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

URLリンク(nw.odoruinu.net)
とか、どうでしょ。

タイプライブラリを作る方法は、この辺を参考に。
URLリンク(www.delphipraxis.net)
URLリンク(www.delphipraxis.net)

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

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

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

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

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

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

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

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

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

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

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

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


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



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

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

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

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

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

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

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

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

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

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

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


79:デフォルトの名無しさん
07/08/06 21:43:35
URLリンク(www2.big.or.jp)

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


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


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

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

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

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

86:ななしへたぐらま ◆XcB18Bks.Y
07/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:デフォルトの名無しさん
07/08/07 20:28:16
これでもいけそうだぞ。
for I := 0 to Grid.RowCount - 1 do Grid1.Rows[I].Clear;



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

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

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

91:89
07/08/07 23:19:39
>>90

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

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

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

92:89 1/2
07/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
07/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:デフォルトの名無しさん
07/08/07 23:56:18
Jw_cad for Windows のクロックメニューってどうやって実現しているのでしょうか?

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

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

97:89 2/2
07/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:デフォルトの名無しさん
07/08/08 01:23:52
>>97
New

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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


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

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

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

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

116:ななしへたぐらま ◆XcB18Bks.Y
07/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:デフォルトの名無しさん
07/08/08 15:38:02
>>114
 コンパイラそのものはD7から殆ど変わってない。ライブラリも殆ど同じ。

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

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

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

118:89
07/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:デフォルトの名無しさん
07/08/08 15:55:18
>>118
関数の引数でソレをやったら、動的配列ではなくなる
Type TArraySeitoSuu_Rec = array of TSeitoSuu_Rec; と動的配列型を定義しておいてから

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

とやらないと


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

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

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

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

キャノンかダかな?



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

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

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

TNT Unicode Controls 配布場所

Silverpoint Development
URLリンク(club.telepolis.com)

URLリンク(club.telepolis.com)



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

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

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

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

環境は、Delphi2006

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

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


131:89
07/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:デフォルトの名無しさん
07/08/10 00:09:13
ListFって何?

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

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

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

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

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

138:ななしへたぐらま ◆XcB18Bks.Y
07/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:デフォルトの名無しさん
07/08/10 15:22:57
フォームからドラッグしてデスクトップやエクスプローラにドロップする
処理はどうしたら良いんでしょうか?
エクスプローラからアイテムをドラッグしてフォームにドロップする
処理は彼方此方で見かけるんですが、その逆が見つかりません・・・

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


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

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

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


142:128
07/08/10 17:27:44
Delphi 7以降の IDEの新機能
URLリンク(dn.codegear.com)

これによると、
URLリンク(dn.codegear.com)
部分一致検索が標準でできるように見えるのですが、
どうやったらいいんでしょ・・・

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

D_DevLog DDevExtensions
URLリンク(ddev.blog46.fc2.com)

DelphiSpeedUp Delphi/BCB/BDS IDE plugin
URLリンク(andy.jgknet.de)



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

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

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

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

環境は、Delphi2006です。

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

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

と出てしまいます。


148:146
07/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
07/08/10 19:50:24
試行錯誤していたら、うまく設定を保存できました。

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

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


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4300日前に更新/113 KB
担当:undef