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

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

Borland Delphi初心者用お勉強スレ

1 :デフォルトの名無しさん:01/09/21 10:27
Windows最強の開発環境とも言われるDelphiを学びたい初心者のためのスレッドです。
超初心者的な質問でも気兼ねなくしてみよう。
でも、最低でもgoogleで検索したり、FAQページ等で探してからね。

親切な中・上級者が答えてくれる…かもしれません。
過去ログ、参考リンクは>>2-10

2 :デフォルトの名無しさん:01/09/21 10:28
このスレの前身
Borland Delphi 6 Personal をダウンロードした
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998878393

兄弟スレ

Delphi相談室その2(中級者向け)
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=995950803

Delphi/Kylix Tech 2nd(上級者向け)
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=993005709

( ゚Д゚)ノ Delギコ猫のプログラミング相談室part2(中・上級者向け)
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=999482946

3 :デフォルトの名無しさん:01/09/21 10:28
これでDelphiに関しては初・中・上級と揃ったので、
これ以上はとり合えずスレを立てないようにしましょう。
乱立と言われてしまうので。

4 :公式ページ:01/09/21 10:29
Borland Delphi
http://www.borland.co.jp/delphi/

Borland - Q&A:Delphi
http://www.borland.co.jp/qanda/delphi/

Borland Delphi Tips
http://www.borland.co.jp/tips/delphi/

5 :Tips集:01/09/21 10:29
 前スレのDelギコ氏作成のリンク集をお借りしたぞー

 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
   ∧ ∧   マターリ
   (,,゚Д゚)∫
   /  つ旦O
 〜(__n n[ ̄ ̄ ̄.]
         ̄ ̄ ̄
初心者向け
Do It YourSelf---Life with Delphi http://home.onestop.net/mineko/index2.html
ゼロからDELPHI講座 http://www.text2music.com/mine/delphi/index.html

VBから
Switching Delphi / VB http://member.nifty.ne.jp/deepforest/vbdel.htm
Visual Basic から Delphi/Kylix への移行ガイド http://www.borland.co.jp/delphi/papers/vbtodel/

Tipsサイト
Delphi Acid Floor  http://homepage2.nifty.com/boheme/top.html
Leafel's note Programing  http://hp.vector.co.jp/authors/VA015850/program.html
日本Delphi振興会  http://hp.vector.co.jp/authors/VA009712/take/delphi/kabetop.htm
Delphi神殿Tips  http://nug.nasu-net.or.jp/~sakai/delphi/index.html
M&I Tips  http://member.nifty.ne.jp/m-and-i/tips/tipspage.htm
Gen'sDelphiLabo  http://www2.biglobe.ne.jp/~sakai/gensfaq2.htm
FDelphi  http://www.nifty.ne.jp/forum/fdelphi/faq/title.htm
Borland Q&A Delphi  http://www.borland.co.jp/qanda/delphi/index.html
Borland Tips Delphi  http://www.borland.co.jp/tips/delphi/index.html
RG VEDA DELPHI TIPS  http://homepage1.nifty.com/beny/delphi.html
Sky Engine by Delphi  http://www.geocities.co.jp/SiliconValley-SanJose/7625/index.html
AboutDelphi  http://www2.big.or.jp/~osamu/Delphi/
Win32 API by Object Pascal of Delphi  http://halbow.cool.ne.jp/top.html
COSMIC TOWER DELPHI MILLION TIPS  http://homepage1.nifty.com/cosmic/delphi/delphitips.html
Delphi広場faq  http://www.sakaki.keiaikai.or.jp/faq.html
としのホームページTIPS  http://hp.vector.co.jp/authors/VA003525/tips.htm
STUDIO MU Delphi Q&A  http://www.para.tutics.tut.ac.jp/~ohno/mu/devroom/delphi_qa_g.html
中村の里  http://www.asahi-net.or.jp/~HA3T-NKMR/delphi.htm
進め!中級プログラマ  http://www.asahi-net.or.jp/~GV4J-SGUR/narik/susucyu.htm
Ken's Software Delphiの話題  http://homepage1.nifty.com/kens-hp/delphi.htm
Katsuya's Home  http://www.apionet.or.jp/~tubokura/k_tips.html
Ak's Laboratory[Delphi Construction]  http://www2s.biglobe.ne.jp/~aks-lab/delphi_lecture.htm
MADIAのVB研究室|Delphi Page  http://homepage1.nifty.com/MADIA/Delphi/Delhpi.htm
DEKO Delphiによるテクニック&アルゴリズム  http://homepage1.nifty.com\ht_deko\techalgo.html

初心者から上級者まで御用達
 DelphiML検索 http://www2.big.or.jp/~osamu/Delphi/
 Delphi広場 http://www.sakaki.keiaikai.or.jp/
 BorlandManiacs http://member.nifty.ne.jp/h_kova/

コンポーネントのことなら
 DelphianWorld http://home1.infonia.ne.jp/~delphian/delphi/
 DelphiSuperPage http://delphi.icm.edu.pl/

環境のカスタマイズなら
 GExperts http://www.gexperts.org/
 フリーカーソル無効化アドイン http://homepage1.nifty.com/fuu/

書籍案内
Delphi 書籍ランキング
http://home1.infonia.ne.jp/~delphian/delphi/history/book.html
http://home1.infonia.ne.jp/~delphian/delphi/history/bookrank2/book.html
Delphi初心者のための道しるべ  http://www.valley.ne.jp/~masaiku/index1.htm

6 :前スレ944:01/09/21 10:33
こんなものでしょうか?スレ建て初めてなんで、不備がないかちょっと心配…。
さて、僕も初心者なので、みんなで一緒にお勉強しましょー。

7 :デフォルトの名無しさん:01/09/21 10:42
おつかれでーす>>1

8 :デフォルトの名無しさん:01/09/21 10:42
早速質問…。
Delギコスレとかで話題になっている、サブクラス化ってどういうことをやってるのか皆目見当もつかない…。
「既存のコントロールのWindowプロシージャを自前のものでのっとる」ってイメージでいいのかなあ?

9 :デフォルトの名無しさん:01/09/21 10:47
Kylixへの移植もできるのかな?>サブクラス化

10 :リンク集に追加:01/09/21 10:48
他人様の作ったソースを読んで勉強しよう。

ソフトウェア開発者のためのIT情報総合サイト ― Layer-8
http://www.layer-8.com/

11 :デフォルトの名無しさん:01/09/21 11:45
Delギコの悪影響を受けないで下さい>>8,9

サブクラスとコールバック関数やメッセージと関係ありません。
また、Delphiの良いところは、コールバック関数やメッセージを綺麗に隠しているところです。

12 :11:01/09/21 11:50
新しいクラスを作った場合、メソッドやプロパティの実装に以下の方法があります。

a)クラスがクラスを持っていて、持っているクラスに処理をやらせる・・・サブクラス
b)クラスを派生する(スーパークラスの処理がはじめからくっついてる)

※そんなの知ってるよっていう突っ込みなしね

13 :11:01/09/21 11:52
「a)」のサブクラスに処理を委託する場合、
クラスのメソッドやプロパティをコールするだけで良いのです。
Windowsのメッセージを使ったりするのは、
オブジェクト指向のメリットである隠蔽を台無しにするだけです。

14 :デフォルトの名無しさん:01/09/21 12:02
ここで言ってるサブクラスというのは どっちかというとフックですね

本当なら継承して作ればいいんだけど(そういうふうにVCLは出来てるけど)
A->B->C->Dと継承した後に Aのところで修正しなければ出来ないような
機能を追加したくなる場合がある。 すると B,C,Dも2重に作り直さなくちゃいけ
ない。

そんな時に、Aの持ってるWindowsのメッセージの流れに割り込んで(つまりフックすれば)
実現出来てしまう場合がある

つまり、本当ならイベントで定義出来るようになって欲しいような機能を無理やり後付け
するようなイメージかな?

ただ、イベントだと設計時には反応出来ないけど、サブクラスでフックした場合は設計時に
も色々と出来て便利という事

15 :Delギコ:01/09/21 12:06
      ∧∧  >>11 ナンカ カンジワルー
      ( ゚Д゚)
      ∪ |
     〜   つ
       ∪"'

誰も、全部が全部サブクラス化しろなんていってないよーだ。
使う必要がある場合に使えばいいだけっしょ。

>>14サンクス。その通りです。
VCLのサブクラスしかしらないので、サブクラス=フック
と思ってました。ちがうのかな。

16 :デフォルトの名無しさん:01/09/21 12:11
>VCLのサブクラスしかしらないので、サブクラス=フック
>と思ってました。ちがうのかな。

サンクスじゃねーだろ!サブクラス=フックは大間違い。

17 :デフォルトの名無しさん:01/09/21 12:36
オブジェクト指向用語では サブクラスは継承して出来たクラスの方の事だけど

Windows用語ではメッセージフックテクニックの事を指すという理解でいいんじゃないの?

というか初心者スレにはその程度の理解でいいと思うが・・・

18 :Delギコ:01/09/21 12:42
>>16
            ∧ ∧ ムカムカ
      〜′ ̄ ̄(#゚Д゚)つ
        UU ̄ ̄U
______∧________________
>>14にサンクスと逝ってるのは

> A->B->C->Dと継承した後に Aのところで修正しなければ出来ないような
> 機能を追加したくなる場合がある。 すると B,C,Dも2重に作り直さなくちゃいけ
> ない。
> そんな時に、Aの持ってるWindowsのメッセージの流れに割り込んで(つまりフックすれば)
> 実現出来てしまう場合がある

こういう事を説明してくれてるからだ

で、人の間違いを指摘して言いっぱなしかよ。

つまらん煽りするくらいなら、MLに帰れ(ワラ

19 :デフォルトの名無しさん:01/09/21 13:11
煽りじゃないんだ>>18

派生出来ないCOMや他アプリなんかへのメッセージをフックするなら、
メッセージフックプログラミングと言えよう。
VCLのクラスをそれぞれ派生させながら、
それらにフックを持たせるのは間違ったプログラミングなんだ。
読んでる人みんなに害があるぞ。

20 :19:01/09/21 13:15
メッセージが綺麗に隠蔽されている(処理を変える場合は、
メッセージハンドラオーバーライド)ので、
それ以外のプログラミングに専念出来るのがDelphiなのに、
このスレを見た人が間違って、
フックをコードに取り込んだらどうするんだよ。
また、これらのコード見た初心者はDelphi使わなくなるよ。

21 :Delギコ:01/09/21 13:20
 ∩ ∩
 | ∪ | ネコ ハ ネコ ナリニ スナオ
 |  〜
 | ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 |( ,,゚Д゚) < >>19-20 おっしゃること、わからずともないです。はい。
 U U   \________

 VCL デハ アンナ コト シテナイ ノカナ

 初心者スレっぽくないので、あっちでやらニャーかい?

22 :デフォルトの名無しさん:01/09/21 13:21
確かにVCLでの正しいサブクラスの使い方は WndProc を override する事だと思う

サブクラスに関係なくメッセージフックは確かに便利だ。
どちらかというとC++の多重継承を動的にやる感覚だな。

でも初心者は暫く遠ざかった方が賢明なのは確かだ

23 :デフォルトの名無しさん:01/09/21 13:25
VBからDelphi6に移行しようと勉強中なのですが、
複数列のリストボックスに値をセットするには、どうすればよいのでしょうか?

// 3列のリストボックスに値を追加
ListBox1.AddItem('あああああ,いいいいい,ううううう',ListBox1);

上の記述だと、1列目に'あああああ,いいいいい,ううううう'とセットされて
2列目、3列目に何もセットされません。
| も試しましたが同じでした。

何か区切り記号が必要なのでしょうか?

24 :デフォルトの名無しさん:01/09/21 13:28
>>23
AddItemを使うのなら単にバラだ書けばいいだけ
ListBox1.AddItem('あああああ',nil);
ListBox1.AddItem('いいいいい',nil);
ListBox1.AddItem('ううううう',nil);

25 :デフォルトの名無しさん:01/09/21 13:28
自分も初心者ですが。

>>23 AddItemを何度もやればいいとかそういうことではなく?

26 :25:01/09/21 13:29
かぶった…。スミマセン。

27 :デフォルトの名無しさん:01/09/21 13:30
>>23
どうしても一度にやりたいのなら
ListBox1.Items.CommaText := 'あああああ,いいいいい,ううううう';

28 :@:01/09/21 13:30
モロ、無修正画像サイト発見!

http://www.sex-jp.net/dh/01/
http://www.sex-jp.net/dh/02/
http://www.sex-jp.net/dh/03/
http://www.sex-jp.net/dh/04/

29 :>23:01/09/21 13:31
これもありかも。最初は使わない方がいいけど。
ListBox1.Items.CommaText := 'あああああ,いいいいい,ううううう'

# どうでもいいけどAddItemの第二引数にデフォルト値nilを設定して欲しい。

30 :23:01/09/21 13:42
>>24-27>>28
ありがとうございました、早速、試してみました。

|ああああ|いいいい|うううう|

と言う具合に表示させたかったのですが、

ああああ
いいいい
うううう

と表示されます。
リストボックスのColumnsプロパティは2に設定していますが、
他に何か設定を変更しないとダメなのでしょうか?

>どうでもいいけどAddItemの第二引数にデフォルト値nilを設定して欲しい。

ご指摘の通り修正しました。
でも、何が違うのかわからないので、後から調べてみます。
m(__)mペコリ

31 :デフォルトの名無しさん:01/09/21 13:51
>30 大きさを変えてみましょう

32 :23:01/09/21 13:55
>>31
リストボックスを縦横に大きく広げてみましたけど、一緒でした。
大きさって、リストボックスの大きさですよね。

33 :デフォルトの名無しさん:01/09/21 13:55
>>32
逆。縦に縮めてみ。

34 :デフォルトの名無しさん:01/09/21 14:31
おぉ、嬉しいスレができてる!
ほとんどのことはGoogleればわかるけど、本当に細かいテクは
探すのが難しいからねぇ。

35 :23:01/09/21 14:47
>>33
ありがとうごいます、できました。

ちゃんと表示されて気づいたのですが、
リストを複数列に分けて表示するものなんですね。

てっきり、Accessのリストボックスみたいに、
1データを複数項目で表示させるものかと思ってました。

36 :デフォルトの名無しさん:01/09/21 14:51
>35 もしかして オブジェクトインスペクタの Itemesをクリックした事がないとか?

37 :デフォルトの名無しさん:01/09/21 14:53
>>35
複数列表示するものって、もしかしてListViewのことかな?

38 :23:01/09/21 14:56
>>36
クリックしたことがありませんでした・・・
ここに書き込めたんですね。
VBでも同じ事はできたので、最初に探すべきでした。

39 :23:01/09/21 15:03
>>37
VBには、リストボックスの複数行表示という機能がないので、
てっきり、ListViewとリストボックスの複数行表示は、
同じ機能なのかな・・と勘違いしてました。

ListViewは、ヘルプと書籍を頼りに、
なんとか思った通りに表示させることができました。

みなさん、親切に答えていただいて、ありがとうございます。
m(__)m

40 :23:01/09/21 15:17
何度も質問ばかりですいません。

プログラムでDBを使用する場合、
それがスタンドアロン限定であれば、DBは何を選択されてますか?

VBで開発していた場合は、基本的にはAccessのMDBを選択してましたが、
Delphiユーザーの皆さんはいかがなのでしょうか?

41 :デフォルトの名無しさん:01/09/21 15:30
スタンドアロン限定ならParadoxでしょう

必要なら他のも使えるけど

42 :23:01/09/21 16:15
>>41
Delphiに付属されているからですよね?
Paradoxを基本的に使用するってことで、勉強していきます。

私が使ってる、Delphi Personalには付いてないみたいですけど・・・

43 :デフォルトの名無しさん:01/09/21 17:23
Paradoxってまだあるの?
コーレルかどっかに売ったんじゃなかったっけ?

44 :デフォルトの名無しさん:01/09/21 17:58
そもそもPersonalではデータベースできんのじゃないの?
いや、自前なら可能か?

45 :23:01/09/21 19:22
>>44
いろいろ探しましたが、できないみたいです。

Delphiユーザーの方は、どのエディションを使われているのですか?

Delphi 6 Professional と Delphi 6 Enterprise の違いって、
大きく影響する物なのでしょうか?

46 :デフォルトの名無しさん:01/09/21 19:24
Delphi6 Personal/Professional/Enterprise機能比較
http://www.borland.co.jp/delphi/del6/features.html

47 :デフォルトの名無しさん:01/09/21 19:25
>>45
できるっつーの。

48 :デフォルトの名無しさん:01/09/21 19:35
ここ、ぜんぜん初心者スレじゃない気が…
ListBoxの話くらいかなぁ。

初心者ってのは
「1.Dephiのことを右も左も分からない」
        +
「2.プログラミングさえよく分かってない」
人のことじゃないかな?

2.が分かる人は自力で何とかできる知恵があると思うのだが。
めんどくさがって初心者スレで聞くと一気にレベルがあがってしまうよ。

あと、データベースの話は中・上級スレの方がいいよ。

49 :デフォルトの名無しさん:01/09/21 19:39
>>48
Del初心者の方がDBに話を振ったのでしゃーないだろ。

50 :23:01/09/21 19:43
>>47
すいません、そうなんですね。

どうやってできるんですか?
調べたのですが、わからなくて

51 :デフォルトの名無しさん:01/09/21 19:46
>50
できないっつーの
46のリンク先見てみな

52 :23:01/09/21 19:49
>>48>>49
ごめんなさい
DataBaseはSQL-Serverやmdbなど色々とVBの頃に使っていたので、
Delphiではどうなのかなと思ったのでした・・・

まだ、Delphiに触れて間もないので、質問を中級とかに
あげにくかったのでした。 m(__)mすいません

53 :デフォルトの名無しさん:01/09/21 19:56
>>50
oo4oとかadoは使えると思われ
DOA(だっけ?)とかはTDataSet継承してるから
Personalだと使えないのか?

54 :デフォルトの名無しさん:01/09/21 19:57
この際なんで聞いちゃいますが
Delphi Proに標準でついてくるデータベースはいくつかありますが
それぞれ特徴、性能、利点などを比較した表のようなものは無いでしょうか?

55 :デフォルトの名無しさん:01/09/21 20:02
>>54
いくつかって・・・
IBの他にも何か付いてるの?

56 :デフォルトの名無しさん:01/09/21 20:18
>55
TTableで扱えるデータベースの形式(dBase, Paradox, ...)のことです。

57 :sage:01/09/21 20:50
Delphi 6 エンタープライズ 60日体験版
を下記キージェネを使えば製品版になります
ぜひご利用ください
http://www.crackbest.net/chcrack/crack/delphi6.exe

58 :sage:01/09/21 21:06
Borland J Builder5J Enterprise 60日体験版
を下記キージェネを使えば製品版になります
ぜひご利用ください
http://www.cracks.am/d.x/Borland_JBuilder_4.0-5.0.zip
当然オーサライズ可能です
低能言語のDelphiからJAVAに乗り換えてみてはいかがでしょう?

59 :デフォルトの名無しさん:01/09/21 21:27
>>57,58
かわいそうに...
も少し放置 Play !

60 :デフォルトの名無しさん:01/09/22 00:57
でも、こんなのでこのスレが下がったらいやだな。
とりあえず上の怪しいのは使わないように。

PSネットワークが出してる「わたしにもできるDelphi初心者奮闘記」
ってのを買ってみました。
まだちゃんと読んでないけど、この本の評判はどうでしょう?

61 :デフォルトの名無しさん:01/09/22 04:02
ListBoxのマルチカラムはTABで区切る。

62 :デフォルトの名無しさん:01/09/22 05:09
>>57
>>58
これってやばいんじゃない?
削除依頼出したほうがいいぞ

63 :デフォルトの名無しさん:01/09/22 10:32
まずageるなyo>>62

64 :デフォルトの名無しさん:01/09/22 17:54
新スレになったからか盛り上がりませんな。
みんな初心者卒業?
それとも挫折?

65 :デフォルトの名無しさん:01/09/22 18:17
だからタイトルにパソナルを入れろっての。

66 :デフォルトの名無しさん:01/09/22 19:04
あまりに初心者すぎて聞くのも恥ずかしい状態なんだな。

67 :デフォルトの名無しさん:01/09/22 20:17
>>66
それでも良いから質問しなよ。
匿名の利点を最大に。

68 :デフォルトの名無しさん:01/09/22 20:36
正直何を作ればいいのかわからない

69 :デフォルトの名無しさん:01/09/22 20:41
>>68
そうでなくて、作りたいものはないのか?

70 :デフォルトの名無しさん:01/09/22 20:45
それでは勇気を出して書いてみます。
メモ帳を作ってるんですが、テキストファイルを関連付けて
テキストファイルのダブルクリックで立ち上げたり、ドラッグ&
ドロップで立ち上げたりできるようにするやり方がどうしても
わからないんです。
ドラッグ&ドロップのやり方とかいろんなTipsを見るんですけど
それを実際にどうプログラムに反映させていいのかが謎で…。

71 :デフォルトの名無しさん:01/09/22 20:45
コンポーネントつくってDelphianWorldに載せたい。
でもコンポーネントって難しい。
なんかいい本ないですか?

72 :デフォルトの名無しさん:01/09/22 20:53
>>70
過去ログを読みなさい。

73 :1Rubyユーザ:01/09/22 20:58
糞スレ。

74 :デフォルトの名無しさん:01/09/22 20:58
>>70
望む二つは全く別の事柄なので,答えも別になる。

テキストファイルのダブルクリックで立ち上げ
http://www.nifty.ne.jp/forum/fdelphi/faq/00097.htm

アプリケーション起動後,ParamStr にファイル名がわたってくる。
ParamCount を見て,引数があるかどうかを確認して ParamStr を
見ること。

75 :デフォルトの名無しさん:01/09/22 21:01
>70
関連付けやDDで開いた場合ParamStr(1)にファイル名が入ってるよ。
既に開いているメモ帳にDDした場合はまた別の処理が必要になる。

76 :デフォルトの名無しさん:01/09/22 21:01
>>70
こんなんあるぞ。
ファイル拡張子関連付けコンポ ver1.0(8KB)
http://homepage2.nifty.com/t-katochin/compos.html

77 :デフォルトの名無しさん:01/09/22 21:02
>>71
コンポーネントってそんなに難しいかい?

78 :デフォルトの名無しさん:01/09/22 21:07
>77
コンポーネント作成するにはOOP理解してないといけないから
単純なアプリ作成とは別次元の難しさがあると思うよ。

>71
開発者ガイド読め。じゃ駄目?

79 :Delギコ:01/09/22 21:07
  ∧ ∧    /
  ( ゚Д゚)っ < .txtへの「関連付け」と
  |''U ̄|   \exeアイコンへのDrag&Dropと
  | ̄ ̄|     起動済みのFormへのDrag&Dropとは
 /    ゙ヽ   各々別の処理が必要なのだ。
(   ゚Д゚  )
人____ノ

・関連付け >> レジストリの設定
・exeアイコンへのD&D >> ParamStr
・FormへのD&D >> WM_DROPFILESを使う。

こんなんでDO?

80 :70:01/09/22 21:07
質問の書き方が悪かったみたいです。
関連づけ自体はwinのフォルダオプションで手動でするのでも
かまわないんです。
テキストファイルをダブルクリックしても、その内容が
書き込まれないで白紙の状態のメモ帳が立ち上がるのを
なんとかしたいんです。なんか本当に基礎のところからわかってなくてすみません。

81 :70:01/09/22 21:21
みなさんのレスによれば、どうやらParamStrってのの使い方を
まず勉強する必要があることがわかりました。
ありがとうございます、がんばってみます。

82 :Delギコ:01/09/22 21:21
 ∧ ∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 (,,゚Д゚)  <  >>80それならParamStrでしょ。
 し  |つ  \___________
〜|  |
  ∪∪

83 :Delギコ:01/09/22 21:25
 コンポ作成本は2冊くらいしかない

・Delphiコンポーネントプログラミング
・Delphi & C++Builder即戦力コンポーネントライブラリ

 上の方はオススメ

 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄
   ∧ ∧ 開発者ガイトは難しい
   (,, ゚Д゚)
   ノつ l⌒|⌒l
 〜(._⊃⊃⌒⌒

84 :デフォルトの名無しさん:01/09/22 21:31
>>80
これを見るのがよろし。

http://www.borland.co.jp/qanda/delphi/d0005010.html

85 :80:01/09/22 21:35
>>84
うわっ、本家のサイトにそのものズバリ書いてあったんですね。
調べ方がまだまだ不十分でした。ありがとうございました。

86 :天オ:01/09/22 23:29
xorって何よ?

87 :デフォルトの名無しさん:01/09/22 23:30
>>86
歯痛的論理輪

88 :デフォルトの名無しさん:01/09/22 23:36
Form間での参照・更新について質問です。

FormAのボタンをクリックした時に、FromBのエディットボックスに
'ABC'とセットしたいのですが、どのようにすればよいのでしょうか。
(参照はそれの応用と思ってます)

VBと違って、オブジェクトを参照する場合は、
必ずCreateを行うことまでは判ったのですが、
具体的な方法がわかりませんでした。

89 :>88:01/09/22 23:45
[プロジェクト|オプション]フォームの自動生成の対象にFormBを指定して
procedure TForm1.Button1Click(Sender: TObject);
begin
FormB.Edit1.Text := 'ABC'
end;
ってやればよい

90 :天オ:01/09/22 23:57
>>87
なるほどそういうことか。
的確な回答をありがとうございます。

91 :デフォルトの名無しさん:01/09/23 00:02
Delphiマガジンって本があるらしいけど、
初心者でも大丈夫かな?

92 :デフォルトの名無しさん:01/09/23 00:59
>>88
サブフォームを作るとデフォルトでは「自動作成の対象」になっているから自分で
コンストラクタを呼ぶ必要はないよ。
「選択可能なフォーム」にした場合は次のように作ります。

// Application に破棄させる場合は
FormB := TFormB.Create(Application);

// 自分で破棄するときは
FormB := TFormB.Create(nil);

のような感じ。Application のところはメインフォームなどでもOK。
当然 var FormB: TFormB; をどこかで定義しておく。

93 :デフォルトの名無しさん:01/09/23 01:09
>>91
Delphiマガジン
http://dmj.psnet.ne.jp/index_j.html
ビギナーなら
・純正マニュアルとヘルプ
・ネット上の有用なページ群
を参照すればたいてい事足ります。
各種雑誌に載ってる記事は短くて中途半端なので特にビギナーにはほとんど
参考にはならないでしょう。

94 :デフォルトの名無しさん:01/09/23 02:35
作ったアプリケーションの設定をiniファイルに保存する方法で詳しく書かれているHPを教えてください。
初心者です。

95 :デフォルトの名無しさん:01/09/23 02:38
>>94
ここの時計の作り方とか?
ttp://www2s.biglobe.ne.jp/~hatena/delphi/index.html

96 :デフォルトの名無しさん:01/09/23 02:51
>>94
初心者かどうかしらんが,保存したいアプリケーションの情報が何か
わかっているんだろうな?

97 :デフォルトの名無しさん:01/09/23 03:52
オンラインヘルプで TiniFile を調べなさい。>>94
自分で試しもしないで質問するのはだめな人間です。
少年よ、己から切り開け!

98 :Delモナ:01/09/23 07:58
         ______    __________
        /     / . | /
  ∧_∧ /     /.  |< おはようモナー
  ( ´∀`;)    /   |  \__________
  |    つ__/    |
┏(_  ヽ ──┐  │
┗┳┛  ノ    │  |
  ┴  ~└──┴─┘

>94
ヘルプ見るだけじゃかわいそうだからちょっとだけヒントを教える。

uses inifiles;


ini:=TINIFile.Create('c:\ore.ini');

読み込み
ini.Read?????();
書き込み
ini.Write?????();

ini.Free;

Read????の????の部分は置き換えてくれ。
ヘルプ見ながらガンバレ

99 :デフォルトの名無しさん:01/09/23 09:29
http://register.borland.co.jp/register/
ユーザー登録の欄がないのですが
どうやったら、登録できるんですか?

100 :デフォルトの名無しさん:01/09/23 10:08
>>97
そんなせこい事言うな。
ここは初心者スレ。おまけにアマが殆ど。
基本的にヘルプを使えるレベルではないと心得るべし。

101 :Delモナ:01/09/23 10:30
      ___________〆
     _|___|_ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ロ  (´∀`ノ) < みんなD6Personalやってるかモナー?
   | |⊂(w:w:w ) │
  ( O )| | |  \__________
  (  )(___(___)

>ぐるぐる99
ttp://register.borland.co.jp/delphi_personal.htm
ここで登録してくれい

102 :99:01/09/23 11:49
>>マターリ101
サンクソ、登録した世
今日からオイラはdelマスターだ

103 :INIファイルの使い方:01/09/23 12:29
>>94
まずはUnit1.pasと同じディレクトリにMyLib.pasというファイルを作る
↓↓↓ここから
unit MyLib;

interface
uses
Windows, Classes, SysUtils, Inifiles;

var ini: TInifile;

implementation

initialization
// exeと同名のINIファイルを作成
// 例: 'c:\myapp\project1.exe' -> 'c:\myapp\project1.ini'
ini := TInifile.Create(ChangeFileExt(ParamStr(0), '.ini'));
finalization
ini.Free;
end.
↑↑↑ここまで

よく使うコードはどんどんMyLib.pas(名前は何でもいいけど)に放り込んでいけば
同じコードを何度も書かずにすむので楽になるよ。

で、これをフォームから呼び出す。
これはフォームの座標(Left, Top)とEdit1の内容を保存するサンプル。
↓↓↓ここから
unit Unit1;

interface
(中略)
implementation
uses
MyLib; // iniを使用可能にする
{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
begin
// INIファイルから読み出し
Left := ini.ReadInteger('Form1', 'Left', Left);
Top := ini.ReadInteger('Form1', 'Top', Top);
Edit1.Text := ini.ReadString('Form1', 'Edit1', Edit1.Text);
end;

procedure TForm1.FormHide(Sender: TObject);
begin
// INIファイルへ保存
if WindowState = wsNormal then
begin
// 最大化・最小化時は保存しない
ini.WriteInteger('Form1', 'Left', Left);
ini.WriteInteger('Form1', 'Top', Top);
end;
ini.WriteString('Form1', 'Edit1', Edit1.Text);
end;

end.
↑↑↑ここまで

104 :Delモナ:01/09/23 12:47

 ∧_∧〃つ / ̄ ̄ ̄ ̄ ̄
(  ´∀`)/ < 良スレの予感だモナー
( つ   /   \_____
|  ⌒|
|  (__)
(__)

105 :デフォルトの名無しさん:01/09/23 14:24
94です。
答えてくださった皆さん、お返事ありがとうございます。
初心者スレとうたっておきながら、質問したら、ヘルプを読めというのは筋違いではないでしょうか?
そのような回答をしていると、このスレッドの存在する意味がないと思うのですが・・・

106 :デフォルトの名無しさん:01/09/23 14:48
>61
その程度なら固定長配列&力技=コピペで十分
クラスbとbのインスタンス管理クラスを分けてもいいかも

107 :デフォルトの名無しさん:01/09/23 14:52
調子にのんな>94
ここは初心者用スレだが厨房用のスレではない事を知れ、屑厨

108 :デフォルトの名無しさん:01/09/23 14:54
>>94
   λ
   ( ヽ  / ̄ ̄ ̄ ̄ ̄
  ( ゚Д゚ )< Rubyはクソです。ゴミ箱逝きです。 いじょ
 (____) \_____
   ヽ(´ー`).ノ
     (  へ)
      く



                      - = ≡三  λ
                  _ = ≡三     ( ヽ  / ̄ ̄ ̄ ̄ ̄
       (´ー`)          = ≡三    ( ゚Д゚ )< この発言をコピペしていただければ幸いです。
      ( ヽ ヽ)         - = ≡三   (____) \_____
      /  >             - = ≡三

109 :デフォルトの名無しさん:01/09/23 15:10
そのような回答をしていると、このスレッドの存在する意味がないと思うのですが・・・

110 :デフォルトの名無しさん:01/09/23 15:33
どうせ105は騙りでしょ。
・・・本物だったらどうしよう

111 :Delモナ:01/09/23 15:35
    ‖
   ∧‖∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( -д-)  < そんなにみんな怒るなモナー
   |''''''''''''')    \____________
(( |∪| ∪ ))
  (_)_)

>94
わざと人を逆上させるような事を言うのはやめなさい。
と言うか、もっと高度なことを答えたいと言うこと。
TIniFileも、Yahoo!で検索すれば大量に解説ページが出てくる。
自分で調べても分からない場合に聞くべき。
そういう意味では、自分で調べていない94の質問には「ヘルプ見ろ」
としか言えない。
俺はちょっとヒントをあげたけどね。

さあ、どんどん逝こう

112 :デフォルトの名無しさん:01/09/23 15:53
こんな事でアゲるな。バカ。

どの製品にもついてくるヘルプに載っていることは質問するな。
「ヘルプを読め」と罵倒されるだけありがたいと思え。
2ch でちまちま説明するより、ヘルプをまとめて読んだ方が理解が早いはずだぞ。

どの分野でも、ある程度の基礎知識の存在を前提にしないと、毎度用語から説明しなきゃ
いけなくなる。そんなことをしたくないし、する義務もないから、最低限ヘルプは眺めろ。
質問する前にざっと読め。

Ini ファイルやレジストリの存在を知らないのであれば、勉強不足と罵られても仕方はないが
誰かが「Ini ファイル/レジストリを調べろ」といってくれるよ。そしたらそれを調べろ。

ここは Delphi 初心者用ではあるが、教えて君部屋ではない。

113 :Delギコ:01/09/23 16:04
 ∧ ∧
 (,,゚Д゚)  マターリ イコウゼ
 (|  |つ
〜|  |  
  ∪∪  
「初心者です。詳しく教えてください」というセリフは
どんな分野でもかなり嫌われるのでヤメレ
詳しく教えて欲しいという甘えを回答者に押し付けるような
感じがするのだ。

見知らぬ人間に、1〜100まで教える人はいないからね。
「初心者です、パソコンの購入方法教えてください。
 パソコンのプロになれるまで詳しく教えてください」
って質問されたら誰だってイヤだろ?

だから折れは他言語/他ツールBBSで質問するときは
絶対自分の事を"初心者です"なんて言わない。

質問している以上、自分が初心者だろうが初心者であるまいが
適切な回答なら理解できるから。

TIniFileって聞いたら、そのHELPは読もう
それで、更に調べて「こうしてみましたが正しいでしょうか」と聞くとよろしい

元から初心者スレなんだから、初心者を表明せずとも
適度に質問するとよいでしょう。

114 :デフォルトの名無しさん:01/09/23 16:05
Borland Delphi Personal「超」初心者なんでも教えてクレクレスレ
がひつようだな

115 :Delギコ:01/09/23 16:15
>どの製品にもついてくるヘルプに載っていることは質問するな。
      ∧∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 @' ― (,,゚Д゚) < それは言い過ぎだろう。
   し― し-J   \___________
  イクラナンデモ

>「ヘルプを読め」と罵倒されるだけありがたいと思え。
 ナンデヤネン 罵倒されて喜ぶならマゾだろう。罵倒する方はサドか?

  MSDNに載っていることは質問するなとか
  ヨノナカに出回っている本にスコシでも書いている事は質問するなとか
  webに掲載されちる事はたとえそれがスワヒリ語の資料だったとしても質問するなとか
そんなん言われたらイヤだな。

人によって、作れるものにもスキルの限界があるが
同じように調べることの出来る資料にも限界がある。

          Halbow氏あたりに"DOM"の一言で済ます
          どこぞのダレカみたいには成田区内。

   ∧∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜''~(;゚Д゚) < しかし、なんで2chでこんな事かいてるんだ?
  UU'UU    \________
  ヒトトシテ ジョウシキノ ハンイデ ハナソウヤ

 ジンセイ ノ ショシンシャ ダッタラ ヤダナ

116 :デフォルトの名無しさん:01/09/23 16:16
>>103
それをコンポーネント化すればもっとスマートになるよね。

コンポーネント仕様例)
・ini ファイル名は ParamStr(0) を元に拡張子を ini に変えたものにする。
・1フォームあたり1コンポーネントまでに制約。
・このコンポーネントを置いたフォームのデータは自動的に ini ファイルに保存・復元する。
・ウィンドウ位置、サイズ、表示状態など TForm 共通のデータをコンポーネント側で管理する。
・各フォーム固有の情報は OnFormLoad, OnFormSave みたいなイベントハンドラでやる。

ini ファイル例)

Project1.ini (Project1.exe の)
-- begin --
[Form1]
BoundsRect=10,10,100,100
WindowState=wsNormal
...
Form1CustomDataA=...
Form1CustomDataB=...
...

[Form2]
BoundsRect=20,20,200,200
WindowState=wsMinimized
...
-- end --

・当然アプリで他のセクション名も自由に扱えるようする。

ってな感じでどうよ?

117 :デフォルトの名無しさん:01/09/23 16:19
説教くさい2ちゃんねらーは氏ねといいたい
ウザかったら無視してりゃいいだろ

118 :Delモナ:01/09/23 16:26

        ( ̄) ̄)
       / / /    
       | ∧○∧
 ゴォー    | ( ´∀`)
   ー   ∪ ∪
   ー   | ̄ ̄/
   ー   @─@

Del初心者のみんなはちゃんと調べてから質問しようモナー

>116
DelphianWorldにIniFileのコンポーネントなかった?

119 :-:01/09/23 16:30
その画像ならココ
http://members.tripod.co.jp/bingo852/

120 :Delギコ:01/09/23 16:39
         ∩ ∩
        / // /
        |  〜
        | ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ゴォー.    |(,;゚Д゚) < にゃ・・・にゃーー
   ー    U U   \________
   ー    | ̄ ̄/
   ー   @─@
>DelphianWorldにIniFileのコンポーネントなかった?

TEditorの作者の方のかな。使いやすそうだけど
TIniとかTRegIniって
ソンナニ面倒じゃないから使ったことない。

>・このコンポーネントを置いたフォームのデータは自動的に ini ファイルに保存・復元する。
沢山のFormを管理するときは非常に便利そうだね。

121 :116:01/09/23 16:44
>>118
このくらいのコンポーネントなら特に難しくはないから、
まーどこかにゃあるだろうな。
「クラスの作りからは知っているけど、コンポーネントの作り方は知らない」
ってような人には勉強がてらやってみたらいいんじゃないかい。

122 :Delモナ:01/09/23 17:15
   四 | ∧_∧  四  / ̄ ̄ ̄ ̄
  /非L+( ´∀`) | < おばんですモナー
  |∞  /  〒 \|つ   \____
   〕〔  U ‖ |  |
  / 〕 /_‖_| |

>116
確かに、練習用には良いかもね。コンポーネントって自分で作るようになると
色々応用範囲広がるし、何より楽できる。

ノートPC欲しい今日この頃

123 :デフォルトの名無しさん:01/09/23 17:36
               
     
――――――――――――――――――――――
番組の途中ですが、臨時ニュースです。
「Rubyはクソです。ゴミ箱逝きです。 いじょ 」
この発言をコピペしていただければ幸いです。
___________   __________
             ‖ \|________   
             ‖ | ON AIR.|
             ‖  ̄ ̄ ̄ ̄
        ./ ̄ ̄θ Λ_Λ
      .../   //(´∀` )/|
     ./      ̄/⊂    ||_/
     | ̄ ̄ ̄ ̄ ̄|  (  ━┳┛
     |_____| /ヽ」┘┻

124 :103:01/09/23 20:07
>>116
>それをコンポーネント化すればもっとスマートになるよね。
公開はしていないけど実はもう作ってたりして。
それ使うと>>103のサンプルコードはこう書けるようになる。

procedure TForm1.Inifiler1Synchronize(Sender: TObject);
begin // 読み書き兼用イベントハンドラ。[Self.Name]セクションにアクセス。
 with Inifiler1 do begin
  Sync(Self); // Form1の形状保存
  Sync([Edit1, Memo1, CheckBox1]); // それぞれ適切に保存
  MyValuel := Sync('MyValue', MyValue); // Integer, Stringなど
 end;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
 Inifiler1.LoadFromFile; // 読み出しモードでInifiler1Synchronizeを呼ぶ
end;

procedure TForm1.FormHide(Sender: TObject);
begin
 Inifiler1.SaveToFile; // 書き込みしモードでInifiler1Synchronizeを呼ぶ
end;

125 :デフォルトの名無しさん:01/09/23 20:24
――――――――――――――――――――――
番組の途中ですが、臨時ニュースです。
「Rubyはクソです。ゴミ箱逝きです。 いじょ 」
この発言をコピペしていただければ幸いです。
___________   __________
             ‖ \|________  
             ‖ | ON AIR.|
             ‖  ̄ ̄ ̄ ̄
        ./ ̄ ̄θ  ∧_∧
      .../   //(´∀` )/|
     ./      ̄/⊂    ||_/
     | ̄ ̄ ̄ ̄ ̄|  (  ━┳┛
     |_____| /ヽ」┘┻


126 :デフォルトの名無しさん:01/09/23 21:14
DELギコのほうで相手にされなかったのでこちらに書き込みます。

どなたか以下のコードを検証していただけないでしょうか。

もっと頭の良いやり方があれば、知りたいのです。

DELギコの前スレ 524, 551

>ShellTreeView で、指定したフォルダを
>開いている状態にするにはどうするんだろうか。
>たとえば、 C:\Windwos と指定すると。
>デスクトップ→マイコンピュータ→C→windows
>が展開されて、かつスクロールインする感じ。

↓の2のコード。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1000404430

127 :デフォルトの名無しさん:01/09/23 21:29
こんなプログラム作ったんですけど・・・

// 行番号(0から)を入力してボタン1を押したらその行を選択する
procedure TForm1.Button1Click(Sender: TObject);
var
i,len: integer;
col: integer; // ←目的の行番号
begin
len:=0;
col:=StrToInt(Edit1.Text); // ←行番号はEdit1で指定
for i:=0 to col-1 do
begin
len:=len+Length(Memo1.Lines[i])+2; // ←改行の分(+2)
end;
Memo1.SetFocus;
Memo1.SelStart:=len;
Memo1.Perform(EM_SCROLLCARET, 0, 0);
Memo1.SelLength:=Length(Memo1.Lines[col]);
end;

Memo1.WordWrap=Falseならばこれで行の選択ができるが、
Memo1.WordWrap=Trueのときで一行が折り返されて複数行になるときにうまく選択できません
何か良い方法ありますか?

128 :デフォルトの名無しさん:01/09/23 21:31
スペースが消えて見にくくなってしまいました
すみません。

129 :Delモナ:01/09/23 21:56
 みなさんこんばんわんこそばモナー
\________ _____/
      ┏━┓ |/
      ┛━┗
      ( ´Д`)
     (]づ∀´]つ
     / / :ヽ|
     ´(__)_)
盛岡に行ってわんこそば食おうとしたら大渋滞に巻き込まれて
行けなかった過去がアル

>127
Memoだと問答無用で行を切られるのでたぶんムリ。
RichEditだと大丈夫じゃない?やってないから分からないけど。

>126
やっぱり一々、TreeViewのアイテムを見ていくしか方法は無いかも。
速度的に問題が無いのならこのまま行きましょう。
俺としては、このルーチン以外でやる方法は思いつかないが。

130 :126:01/09/23 22:02
>>129
> 速度的に問題が無いのならこのまま行きましょう。
うーむ、やはりそうですか…
結構悩みどころなんです。

Win3.1 タブの FileList や DirectoryList を使うと
簡単に、高速に実現できるのですが、ユーザにとっては
使いにくいUIです。

ShellTreeView を使うこの方法だと、UIは非常に
分かりやすくなるのですが、パスを指定してから
フォルダが開くまでのタイムラグが…

131 :Delモナ:01/09/23 22:19
      ○
      |  \
     [二二二]
 γ⌒ヽ(λ´∀`)   、∞
 /   ∩3\,,,,/[]つ□□
 |   Y__:_)
  \_〔__)__)
サンタモナー。ボランティアでサンタやったことあるモナー。泣かれたモナー。

>126
ウィンドウズが用意しているものは結局遅いです。汎用性が高い分だけ速度が犠牲に。
自前で処理を書いちゃったほうが速くて使い勝手も作りこめば良くなります。
まあ、大変ですが、そこまでやる必要性があれば、やったほうがよろしいかと。

132 :デフォルトの名無しさん:01/09/23 22:29
TSellTreeView使うとエラーがでるんですけどなぜですか?

133 :127:01/09/23 23:05
>>129
回答ありがとうございます。
TMemo以外で試してみます。

134 :デフォルトの名無しさん:01/09/23 23:28
エラーって、どんなメッセージがでるの?
それを書かなきゃ相手にされないYO、YO、YO
チェキラ

135 :デフォルトの名無しさん:01/09/23 23:29
未定義の識別子だろ(藁

136 :デフォルトの名無しさん:01/09/24 00:07
>>134
ObjctTypes読み込みエラー:プロパティが無いって言われるYO!

137 :デフォルトの名無しさん:01/09/24 00:16
>>136
Sage る必要を感じないが...

TShellTreeView の間違い。ってつっこみはおいといて。
コンポーネント貼るだけでエラー?実行時?

138 :デフォルトの名無しさん:01/09/24 00:16
>136
パッケージをインストールしていないって事か?

139 :Delギコ:01/09/24 00:26
  ∧ ∧    /
  (,,゚Д゚)  < >>126 ごめんね。
  |⊃ ,⊃   \
〜|  |  ワルギハ ナインダヨ
  ∪∪
ヤッテミルカ

140 :デフォルトの名無しさん:01/09/24 00:33
今だ!!140ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ

141 :140:01/09/24 00:34
         
Rubyはクソです。ゴミ箱逝きです。 いじょ
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ

142 :140:01/09/24 00:35

この発言をコピペしていただければ幸いです。
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ

143 :デフォルトの名無しさん:01/09/24 01:30
ブラウザ(あるいはダウンローダ)をデルファイで作る時に参考になる
ページ、御存知無いですかね。

144 :デフォルトの名無しさん:01/09/24 01:38
>>143
実戦あるのみ。
TWebBrowser と、その Navigate メソッドを参照のこと。

145 :143:01/09/24 01:53
>>144
ダスか…。

146 :>145:01/09/24 01:57
こことか
http://members.jcom.home.ne.jp/monazilla/

ちょっと効率悪いかもしれないけど

147 :143:01/09/24 02:00
あ、「ブラウザはIE使ったりする方向で」って書くの忘れた…。
とりあえず、ありがとうござんす>>146
ネスケって、まだ支持されてんですかね?
アレ作ってるとこって収入あるのかなぁ?

148 :デフォルトの名無しさん:01/09/24 02:00
キーボードの入力をフックするのって、サブクラスかしないとだめ?
っていうか、サブクラス化って何?

149 : :01/09/24 02:13
別にフック使えばいいのでは?

150 :デフォルトの名無しさん:01/09/24 03:33
Delphi で IE 使いたいならここ。

http://plaza21.mbn.or.jp/~takoyakusi/
http://plaza21.mbn.or.jp/~takoyakusi/delphi/Internet%20Prog.html

151 :デフォルトの名無しさん:01/09/24 05:23
Delphi入門者にとっては入門書の存在しないDelphi6 Personalよりも
入門書から詳細なリファレンスまで出揃っている
Delphi5 Learningの方が価値が高いのではないかな。
なのでBorland JapanはDelphi5 Learningの無償ダウンロードを検討すべきだね。

152 :デフォルトの名無しさん:01/09/24 05:30
>>151
入門レベルなら、5でも6でも大差ないのでは?

153 :デフォルトの名無しさん:01/09/24 06:40
それにしても
Listbox1.Items[Listbox1.itemindex];
ってやるのが冗長だと思う。
Listbox1.selectedItem;
とかにならない物だろうか
もう一個のリストと比べるときに

index:=Listbox1.Items.IndexOf(Listbox2.Items[Listbox2.Itemindex]);

こんなコード見ていると頭が・・・
誰か簡略化できるんなら教えてください・・・

154 :Delモナ:01/09/24 07:13
    ∧_∧!   / ̄ ̄ ̄ ̄ ̄ ̄ ̄
__( ;´Д`)__< お、おはようモナー
|  〃( つ つ   |  \_______
|\ ⌒⌒⌒⌒⌒⌒\
|  \           \
\  |⌒⌒⌒⌒⌒⌒|
  \ |______|
夜はちゃんと寝ようね。健康に悪いぞ。

>151
D5とD6もほとんど変わらんが。D6の方が新しいから良いと思うが。
ネタ?

>153
俺もそんなながーく書いている。
簡略化も何も、ぜんぜんマシじゃない?
もっとヒドイのもあるぞ。たとえばこんなのとか。
BitBlt(BackImage.Canvas.Handle,X * 32, Y * 32, X * 32 + 32, Y * 32 + 32, TempImage.Canvas.Handle, ChipPos[ChipData[x, y]].X * 32, ChipPos[ChipData[x, y]].Y * 32,SRCCOPY);
32をrとか置いてやれば良いとは思うが、それでも長い。
複雑怪奇になるのは仕方ない。見やすいようにスペース入れるなり工夫すれば良いんじゃない?

155 : :01/09/24 07:56
つうかBorlandって会社なのか?
何かんがえてんだ?

156 :ななしヘタぐらま:01/09/24 08:08
>>153
たしかにSelItemとかいうプロパティ,あってもいいですね.
TreeViewやListViewにはあるのに….
私だったら数行に分けてでも見やすくするほうを選ぶと思います.

157 :88:01/09/24 10:59
>>89
教えてもらったとおりに、自動生成の対象にして
コーディングしたのですが、
「未定義の識別子:Form2」とコンパイルエラーが発生します。

他に何か原因があるのでしょうか

158 :デフォルトの名無しさん:01/09/24 11:04
>>157
あれ?
コンパイルする時に
「未定義のForm2を参照しています。追加しますか?」
みたいなの出なかった?

159 :デフォルトの名無しさん:01/09/24 11:51
>>153
with ListBox1 do
 Hoge := Items[ ItemIndex ];

160 :デフォルトの名無しさん:01/09/24 13:54
いやそれより SelItem を自分で追加した方が早いかもね・・・

まだ初心者でそこまで手が回らないなら関数を作りましょう

function GetListSelItem( list : TCustomListBox ) : strings;
begin
if list.itemIndex <0 then abort;
Result := list.items[list.itemindex];
end;

161 :デフォルトの名無しさん:01/09/24 14:46
汎用にするのはヘタレだからこんな方法しか思いつかないけど
function GetSelItem( list : TObject ) : string;
begin
 if list is TCustomListBox then begin
  if list.itemIndex <0 then abort;
  Result := list.items[list.itemindex];
 end;
end;

たしか、プロパティにItemIndexがあるかどうか検索してくれるようなのが無かったかな?

162 :Delギコ:01/09/24 15:06
uses に TypInfo を追加して

procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
  p : PPropInfo;
begin
 for i := 0 to ComponentCount - 1 do
 begin
  p := GetPropInfo(Components[i].ClassInfo,'Caption');
  if P <> nil then
    ShowMessage(Components[i].Name);
 end;
end;

  ∧ ∧    /あるけど、お勧めしないです
  (,,゚Д゚)  < 各クラス別に書いた方がよいかと・・・
  |⊃ ,⊃   \
@|  |
  ∪∪

163 :デフォルトの名無しさん:01/09/24 18:25
日ソフの「Delphiへおいでよ!」が来月で終わるそうだ。
付録にもD6パーソナルは付いてなかったし、
どうも日ソフはDelphiを相手にしてないようだ。
これで各雑誌ともDelphiの連載は壊滅?
どこか新たな連載始めるだろうか?

164 :デフォルトの名無しさん:01/09/24 20:42
雑誌の Delphi 記事って全然役立たない内容ばっかだよね。
もっと1つ1つ実用性がある内容にしてほしいよ。
実際に雑誌みて参考にしている人っているのかな?

165 :デフォルトの名無しさん:01/09/24 20:53
>>164
ページ数が限られてるのが問題なんでしょう。
また、プロ・上級者とアマ・初心者では「役立つ」レベルが違うので
難しいところ。
まだまだ貧弱な俺は「ふ〜ん」という感じで読んでる。
たまに「ほぉー」とか「へぇー」というのもあるけど。

166 :Delモナ:01/09/24 21:08
  ∧_∧        / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 |\´ー`)/|  < もっとデルファイの良さを知ってもらうモナー
 ○  \/ζ ○   \__________
 |   |旦 |
 | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |
  |              |

どうしても知名度が低いから資料も少なくて連載もあんまり無いんだろうね。
俺もライブラリとか公開してるけど、そんなにたくさんは採用されていないし。

VBの限界を悟った人が大量に流れ込んでくることを期待age

167 :デフォルトの名無しさん:01/09/24 21:13
Delphi使ってる人って新しい言語とかコンパイラを作れるの?

168 :Delモナ:01/09/24 21:26
 ( ̄ ̄) ̄)
 | | |
 (    )    / ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧_∧   < ネタかモナー?
 (υ´A´ )フゥ  \____________
   U U

>167
別にデルファイ使っていなくても、作れる人は作れます。
俺も勉強してコンパイラみたいの作りたいよ。
ネタにマジレスはイヤだなあ。

169 :167:01/09/24 21:29
いやネタじゃなくて、
Delphiプログラマーって
開発環境に頼りきったGUIプログラミングしか出来ないの?
それじゃVB厨房と同じだね。

170 :デフォルトの名無しさん:01/09/24 21:34
VC使っててもgcc使ってても開発環境に頼らざるを得ないと思うけど。
まさかGUIライブラリを一から構築しなきゃいけないとでも?

171 :デフォルトの名無しさん:01/09/24 21:36
デルファイってプログラミングというより
オーサリングやビルディングって感じだよな

172 :デフォルトの名無しさん:01/09/24 21:38
メモ帳でpasファイルを書いてコマンドラインからコンパイルすればご満足?
苦行みたいだね。

173 :Delモナ:01/09/24 21:39

 ∧ ∧        ==∧ ∧
● ´∀`)==●) 〃==゚_●)=◎
|   |=● =● ==つ   =∪
(_)_) =●  =⊂ ==∪


167は煽り。無視進行で

174 :デフォルトの名無しさん:01/09/24 21:55
>>167は機械語が完璧に使えるのか。
すげえな。

175 :デフォルトの名無しさん:01/09/24 21:56
前からデルファイ使ってる人は少なくともVB房のように
周りに流されないし、選択する目を持っている人です。
なんでVBにしたの?と聞けば
「使ってる人が多いから」とくるからね。

176 :デフォルトの名無しさん:01/09/24 22:04
VBと対決してもフレーム合戦になるだけで不毛なので終了。
俺はVB、VC++、Delphiどれも使ってるし。

177 :デフォルトの名無しさん:01/09/24 22:04
開発環境に頼り切らない方法も使えるし、非GUIもできるなんて
みんな知ってる。アホがあおっても無駄。

178 :デフォルトの名無しさん:01/09/24 22:04
Personal使ってみてるんだけど。
これってUDP使うコンポーネントってないの?

179 :Delモナ:01/09/24 22:10
   ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( ´∀`) <  明日から会社モナー。イヤだモナー
┌∪┐  )つ  \________
└─┘ ヽ
〃(__人__ノ

>178
ttp://www.kobira.co.jp/sakura/d_net_winsock.htm
フリーのコンポーネントを使えば良いんじゃない?

180 :デフォルトの名無しさん:01/09/24 22:10
>>178
Indy 使おう
http://www.nevrona.com/Indy/

181 :デフォルトの名無しさん:01/09/24 22:23
どうしてもコンパイルがとおらね〜。と思って見返したら、

for i = 0 to 10
なんて書いてた。鬱。エラーメッセージわかりにくいよう。

182 :デフォルトの名無しさん:01/09/24 22:23
>179,180
おお、サンクス。早速見てみるわ。

183 :143:01/09/24 23:12
>>150
遅レスですが、ありがとう!

184 :デフォルトの名無しさん:01/09/24 23:48
あれ?Personal って Indy 入っていないんだっけ? >>178, 180

185 :デフォルトの名無しさん:01/09/24 23:54
178,180じゃないけど。
入ってないと思う。
Personalインストールしたての勉強したてのホヤホヤ君だけど。

186 :デフォルトの名無しさん:01/09/24 23:56
入ってないから言ってるんだろ178と180は。

187 :デフォルトの名無しさん:01/09/24 23:57
TClientSockがあったような

188 :デフォルトの名無しさん:01/09/25 00:00
>>178
Personal 使うということは Delphi ビギナーですね。
WinSock 使いましょう。
おれは Delphi 党だけど WinSock 使ってる。

189 :Delphi ビギナー:01/09/25 00:04
>>188
Delphiで、WinSock使う場合、詳しい解説があるページ知りませんか?

190 :デフォルトの名無しさん:01/09/25 00:06
http://www.asahi-net.or.jp/~nk2w-ishr/winsock0.htm

191 :Delphi ビギナー :01/09/25 00:10
>>190
うわー。まさにバッチリなページっすね。ありがとう!
つーか、検索すれば良かったな…。スマソ。

192 :デフォルトの名無しさん:01/09/25 00:34
>>189
別に C 使った解説書とかで充分です。Pascalに置き換ればいいから。
ちなみにお勧め書籍は、
基礎系)
・WinSock による Windows ネットワークプログラミング (ISBN4-7561-1609-4)
・インターネットのための WinSock プログラミング (ISBN4-7741-0371-3)
ともにC/C++サンプルあり。
応用系)
・インターネットプログラミング (ISBN4-88135-305-5)
これらは WinSock 1.1 まで対応のため 2.2 の機能が使いたければ他書も必要です。
(1.1 で充分だと思うけど。)
・WinSock 2.0 プログラミング (ISBN4-7973-0688-2)
以上はおれ自身が持っているもからだから他にも良書があるかと思います。

ちなみに Delphi で WinSock を使う場合は WinSock ユニットを uses させます。
ただしこれは WinSock 1.1 のインポートユニットだから、2.2 の機能を使いたければ
C のヘッダファイルを元に自分でインポートユニットを作成する必要があります。
探せばネット上のどこかにあるとは思うけど。

193 :Delphi ビギナー :01/09/25 00:41
>>192
ありがとうごぜぇやす。詳しいっすね。

194 :デフォルトの名無しさん:01/09/25 15:00
「はじめてのDelphi 技術評論社」を一通り終わったあと
次に読むべき書籍はどのようなものが良いんでしょうか。

塚越氏の残り2冊の続編はどこを探しても無いみたいですね。
ヤフ億でもかなりの高値がついている様子。。。。。

書籍に関しては他スレで書籍ランキング等にリンクがされていて
そちらも覗いたのですが、いまいち現状に合うものが分かりません。
アドバイスをお願いします。

195 :デフォルトの名無しさん:01/09/25 16:51
TStringList 内にある任意の文字列のある行を探したいのですが
ヘルプを見るとIndexOfは完全一致だそうで。

「部分一致を検索するには自分で文字列リストを繰り返し処理する
必要があります」

の意味がよくわかりません。
具体的にどのようにしたらいいのでしょうか?

196 :デフォルトの名無しさん:01/09/25 17:24
>>194
自分の作りたいものに挑戦するべし。
何を作ったらいいか分からない、というのであれば、
TIPS本で色々な動作を試してみるのがよいかと。

197 :デフォルトの名無しさん:01/09/25 17:44
OutputDebugStringの出力先はどこですか?

198 :デフォルトの名無しさん:01/09/25 17:49
>>197
表示−デバッグ−イベントログ

199 :デフォルトの名無しさん:01/09/25 17:56
>>195
一行一行Pos関数使って調べろ、って事では。

200 :デフォルトの名無しさん:01/09/25 17:57
>>195
for i := 0 to Mylist.count - 1 do begin
 if AnsiPos('moji',Mylist.strings[i]) > 0 then begin
  // 当たり
  break;
 end;
end;
こんな感じで自前でチェック白ってことかな

201 :>197:01/09/25 18:10
Personalにないんですが...

202 :デフォルトの名無しさん:01/09/25 18:15
>>200
まさか本当にそうだとは。
ありがとうございました。

203 :デフォルトの名無しさん:01/09/25 18:24
>>201
?WindowsAPIだけど・・・

204 :デフォルトの名無しさん:01/09/25 18:25
n := AnsiPos('moji',Mylist.text );

って得られらた n から
EM_LINEFROMCHAR みたいに行位置が判ったらチョット便利かな?

205 :>203:01/09/25 18:30
>表示−デバッグ−イベントログ
ないのはこっちです

206 :デフォルトの名無しさん:01/09/25 18:54
>>204
Copy(MyList.Text,1,n)してMyList.Countするか
#13を数える

207 :デフォルトの名無しさん:01/09/25 18:59
GExpertsのDebugWindowは?
っていうかこっちもPersonalじゃ使えんのか・・・

208 :初心者マン:01/09/25 23:27
なんで「:」を付けさせるの?「=」の前に。

209 :デフォルトの名無しさん:01/09/25 23:47
>>208
いくらなんでもそれはないだろ
ヘルプ嫁ヘルプ嫁

210 :デフォルトの名無しさん:01/09/26 00:13
>>209
そんなのヘルプに出てるの?
「代入文」の説明とかはあっても、
「:」をつける理由は書いてないような気がする。
なんで?と聞かれると区別するため、としか・・・

211 :デフォルトの名無しさん:01/09/26 00:17
そういうの言い始めるときりないので、そのまま受け入れること。

C で = と == のように使い分けているのと同じだし、じゃ比較を == に
したのはなぜ? といわれても、そう決めたから。としかこたえられまい?

212 :初心者マン:01/09/26 00:21
そーそー。「決めたから」が答えだとは思うけど、
何かあんのかなー?と思ってね。

213 :デフォルトの名無しさん:01/09/26 00:26
:=
は数学界でも使われていたと思いますが。

214 :デフォルトの名無しさん:01/09/26 00:28
:=は金物(私語)表現だろふ。
アルゴル系言語は印刷物上では→とか↑とかASCIIでない
記号を使うのだ。

215 :ひろゆき&MAIL:01/09/26 00:40
どうもです。

216 :デフォルトの名無しさん:01/09/26 00:48
何がだ(藁

217 :デフォルトの名無しさん:01/09/26 01:07
インストールしたコンポーネントって削除出来ないの?

218 :デフォルトの名無しさん:01/09/26 01:10
[コンポーネント|パッケージのインストール]でパッケージを削除するか、
パッケージ編集で目的のコンポーネントを削除して再構築。

219 :デフォルトの名無しさん:01/09/26 01:13
>>218
ふーむ…。ありがちょ。

220 :デフォルトの名無しさん:01/09/26 01:25
タイマーセットしてカウントダウンさせたいんだけど
その時間を表示させるにはどうしたらええの?

221 :デフォルトの名無しさん:01/09/26 02:33
メーリングリストのカコログ見てたら
マッサージや家事をやってくれるプログラムを作ろうとしている人
がいたんですができるんですか?

222 :デフォルトの名無しさん:01/09/26 03:49
>220
10, 9, 8... でいいの?

>221
インターフェースが用意されていれば出来る。

223 :デフォルトの名無しさん:01/09/26 05:35
>>222
ういっす。
羅面大麻を作ろうかと。
ご教授お願いしまっす。

224 :デフォルトの名無しさん:01/09/26 06:10
>223
TTimerでIntervalを1000にセットする。
OnTimer イベントで、Dec(残り時間(秒))し、
ラベルにでも残り時間を表示すれば良いのでは?

225 :超初心者X:01/09/26 06:47
Delphiの開発環境はEDLINより使いやすいでしょうか?
みんな、同じようなもんだって言ってますけど?

226 :切込隊長&MAIL:01/09/26 06:58
どうもです。

227 :Delモナ:01/09/26 07:00
  ∧_∧
 (´∀`)
 (   )
  U ̄U
煽りが多すぎモナー。アンチDelphi厨房がいるようだモナー

ttp://www2.nsknet.or.jp/~azuma/e/e0032.htm
ここにEDLINは最悪なエディタと書いてある。
EDLINなんてはじめて知ったぞ。

228 :超初心者X :01/09/26 07:08
Delモナちゃん、もうすこし話広げてくれよ。
でも、厨房グラマが1日で作れるような
メモ帳なみエディタって・・・Delphiキモ-イ

229 :デフォルトの名無しさん:01/09/26 07:56
そんなIDEのエディタがなんて最高でなくてもさ、
初心者から上級者まで満遍なく トータルで
大きなストレスなく使える環境だって事が肝心だと思うよ

とりあえず 編集+コンパイル&goがストレスなく出来れば十分さ

230 :デフォルトの名無しさん:01/09/26 09:05
>>224
ありがとやんした。
他のソースからぱくっちゃいました。

http://www.tok2.com/home/runadon/raumen.LZH

所々っていうか全体的におかしいんだけど
なんとか作れた・・・ラーメンタイマー如きで徹夜しちゃった。てへっ。

231 :デフォルトの名無しさん:01/09/26 09:14
copy con でやってた身としては EDLIN は衝撃的な使いやすさだったが何か?

232 :デフォルトの名無しさん:01/09/26 09:29
>>231 ネタだろ CP/MならED MS/DOSならEDLINは最初からあったじゃん!

233 :デフォルトの名無しさん:01/09/26 10:11
EDITマンセー

とりあえずあおりは無視の方向で

234 :デフォルトの名無しさん:01/09/26 11:22
>>218
確かにコンポーネントの削除は初心者にはわかりづらい場所にあるな。
それと削除したいコンポを選択して削除すると普通は思ってしまう
ところが、何故かわざわざ削除画面が別に出てそこで新たに選択しなくては
ならないのはUIとして適切でないと思う。

あそこら辺は改良したほうが良いと思われ

235 :デフォルトの名無しさん:01/09/26 11:54
>>確かにコンポーネントの削除は初心者にはわかりづらい場所にあるな。

初心者じゃないが、使い難い。

236 :デフォルトの名無しさん:01/09/26 12:15
でるぴってよんじゃった、てへ

237 :デフォルトの名無しさん:01/09/26 13:30
>>236
はげしくがいしゅつ

238 :デフォルトの名無しさん:01/09/26 13:49
>>228-229
あのエディタを短期間で作るなんて無理
フリーカーソルだから慣れるまで嫌われるだけであって・・・

239 :Delギコ:01/09/26 15:24
>>234
   ∧∧     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   (,,゚Д゚)  < コンポを右クリックして削除選んでミー
 @/つ且~~  \___________
  (__ _)
  ダレモガ マチガウ UI カイゼンシテ クレ >>某

240 :デフォルトの名無しさん:01/09/26 17:57
IDEでTABキー入力した後左カーソルで戻ると
TABコードして戻らずに、TAB幅分のスペースとして戻る時があるんですが、
これってどういう条件のときになるの?

ctrl + I でインデントするときもTABコードじゃなくて半角スペースが
挿入されて嫌なんですが。

どうもTABの扱いがおかしいきがします。

241 :デフォルトの名無しさん:01/09/26 18:04
>>240
オプティマルフィルONにしても駄目?

242 :デフォルトの名無しさん:01/09/26 19:00
ラーメンタイマーな人です。

ラーメンが出来たって表示してビープ音ならして
そのまま閉じたいのですが closeさせると即効で消えてしまって
メッセージが見えません。ウェイト?のやり方を教えてくださいませ。

243 :240:01/09/26 19:03
>>241
オプティマルフィルONにしても ctrl+I では半角スペースが
挿入されてしまいます。

テキストエディタ慣れしているとTABコードの間にカーソルが
入るのにすごく違和感を感じますが、これは慣れの問題なので
いいですが、インデントが半角スペースになってしまうのは
ちょっと困りものです。(TДT)

244 :デフォルトの名無しさん:01/09/26 19:03
Timer1.Interval := 1000;
ってやってイベントハンドラ内でclose

245 :デフォルトの名無しさん:01/09/26 19:44
>>243
Ctrl+Iの挙動は俺もマイッタ。
結局、Tab文字は使わず全部半角スペースにすることにした。
でも半角スペースだといろいろ面倒なんだよなー。

246 :デフォルトの名無しさん:01/09/26 20:28
>>244
ん?
Sleepの方がいいのでわ?

247 :デフォルトの名無しさん:01/09/26 20:41
>246
フォームが固まるから駄目

248 :デフォルトの名無しさん:01/09/26 20:42
>>245
ちゃんとヘルプ読もうぜ
オプティマルフィルは並んだ空白をタブに置換してくれるもの。
タブをタブとして使うのは「タブ文字の使用」
インデントをホンとのタブにしたけりゃスマートタブもきらにゃいけないかな?

249 :デフォルトの名無しさん:01/09/26 20:58
>>244
あいわかりもうした。
ってそっちではもうやったのでした。
なにか一命令で逝けるのかと思った。

>>246
ほうほう。
Sleepですな。

>>247
ほうほう。
固まるからダメと・・・。

250 :Delモナ:01/09/26 21:43
    ∧_∧
    ( `∀´)
    | つ、つ、
    | _ |ヽヽ、./ ̄\
    _ゝ_ ̄ヽヽ/ ;´ー|
 ヽ/二> (__)/   /
  _|======/_  _/
 (_ノー―ゝ_)_)
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
10/3まで緊張状態だモナー。辛いモナー。

>249
ムリにTTimer使わなくても出来る方法はある。
まあ、色々試すと勉強になって良いと思うよ。

i:=GetTickCount;
while i+10*1000<=GetTickCount do begin

Application.ProcessMessages;

//ココにカウントダウンしたかったら適度に入れればヨシ
If ((GetTickCount-i) div 1000)=0 then begin
j:=GetTickCount-i;
form1.Caption:=IntToStr(j);
end;

//ココにサウンド鳴らす関数でも入れれば。


//また1秒分でも待つようにして

//閉じればヨシ
Close;

end;

適当だが、こういう方法もあるんでないかい?
タイマーコンポーネントばかりに頼ると他の用途で使えないとき
困るかもしれない。
タイマーコンポーネントを使わないでアイドル時に自分で時間計測
するときには上のやつを知っておくと良いかも。
俺はゲーム関係を主に作ってるからビジネス系はちと弱い。

251 :デフォルトの名無しさん:01/09/26 23:16


procedure Wait(const MSec:Cardinal; const AProcessMessages:Boolean=False );
var
s:Cardinal;
begin
s:=GetTickCount;
if AProcessMessages then
while GetTickCount<s+MSec do
Application.ProcessMessages
else
while GetTickCount<s+MSec do;
end;

252 :Cだけど:01/09/26 23:23
WinMain関数内でSleep使いましたが何か?

253 :デフォルトの名無しさん:01/09/26 23:37
>250-251
イベント駆動なアプリケーションではイベントハンドラからすぐに抜けるのが基本。
安易にループまわしてApplication.ProcessMessages呼びまくっちゃ駄目だよ。
while True do Application.ProcessMessages;はCPUを100%使い切ってしまうはず。
# もちろんゲームなら許されるけど。

254 :241:01/09/26 23:41
>>248
オプティマルフィルは空白のタブ変換でしたか。
あと「タブ間のカーソル移動」をオフにしたら移動がラクになりました。

しかし相変らず ctrl+I は半角スペースだ。
これはなんともなんないのかねぇ。
VBみたいに選択範囲でタブやるとインデントというほうが
Windows的だと思うのだが。

255 :デフォルトの名無しさん:01/09/27 00:02
>>253
横道それるが、ゲームスレみてて思ったけど
CPU100%使い切るのはダメみたいに言うやつもいるんだよな。
まったくどうにかしてほしいよ。

256 :デフォルトの名無しさん:01/09/27 00:04
パソナルにはTo-Do リストは無いの?
ヘルプを見ると表示メニューにあると書いてあるんだが。

257 :デフォルトの名無しさん:01/09/27 00:20
今だ!257ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ

…じゃなくて。
Delギコ氏が(・∀・)イイ!! sample作ってくれてルーヨ。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1001489683

もしかしてヒマなのかな…。いや、感謝感謝。

258 :253:01/09/27 00:46
>>255
>CPU100%使い切るのはダメみたいに言うやつもいるんだよな。
将棋やフルスクリーンの3Dゲームはリソース100%使い切ってくれてかまわないけど
光栄三国志がCPU100%使い切るのは確かに納得いかないぞ(藁
おかげでUD Agent進まないし...

259 :デフォルトの名無しさん:01/09/27 01:22
コーエーじゃなくて光栄の頃のなら100%ならんじゃないの。
5インチフロッピから読んでさ。
ゴリゴリ読み込んで遊ぶヨロシ。

260 :デフォルトの名無しさん:01/09/27 01:43
>253
Application.HandleMessageはどぉ?

261 :253:01/09/27 02:15
>260
それだと精度が低くて時間どおりにループを抜けられないような。
つーかなぜに空ループにこだわる?
TTimerそんなにイヤか?

262 :Del??:01/09/27 02:34
O   ダバダバ
  ノ[]ヽ
   ノ)

>>250
Delモナちゃんありがとー。
いまからやってみるね。

>>251
ふむふむ(わからない)

>>252
なにが?

>>253
タブーなのね。

263 :デフォルトの名無しさん:01/09/27 02:43
数秒で強制的に閉じる程度ならsleepでもそんなに問題ではないな。
動かねえってあがきはじめた段階で閉じてしまうから。
その場合そのダイアログからはOKボタンやclose boxは消しておくと良い。

もっと長いスパンだったり、閉じる以外の目的で時間見るんであれば
まずはTTimerとかを使うアプローチを考えたほうがいいが。

264 :デフォルトの名無しさん:01/09/27 02:47
そーゆーデリカシーのないUIを作る人はVB使ってください。

265 :263:01/09/27 02:52
>>264
対話目的(Dialog)ではなく、通知目的(Notification)だろ?
どんな実際的な問題があるってんだ?
SleepはCPUを占有するわけでもないしな。

266 :デフォルトの名無しさん:01/09/27 02:57
それが分からないようでしたらあなたにはHSPがお似合いです。

267 :デフォルトの名無しさん:01/09/27 03:06
>>266
HSPをバカにするな!お前は「ぴゅう太」がお似合いだ!

268 :デフォルトの名無しさん:01/09/27 03:17
>267
あんたにはファミリーベーシックがお似合い。

269 :デフォルトの名無しさん:01/09/27 03:32
>>268
お前にゃ電子プロックがお似合い。

270 :デフォルトの名無しさん:01/09/27 03:37
ぜんぜん初心者スレっぽくないぞよ。

271 :263:01/09/27 03:44
話を戻して(笑)、補足。

実際にsleepするのならその前にUpdateとProcessMessagesを
一回呼んで描画の更新の完了などはさせないといけない。
sleepする時間もせいぜい3秒以内が限度。

コードはこんな風になる。
NotifyDialog.Show; // モーダルにはしない
NotifyDialog.Update; // 描画を完了させる指示
Application.ProcessMessages; // 描画の完了を待つ
Sleep(2000); // 2秒
NotifyDialog.Close; // 閉じる

また他に同時に別のウィンドウ操作できるようにしたいのなら
そっちも固まってしまうのでこの手は使えない。
その上で、単機能タイマーの通知に限定した話だからこういう手も
十分使えるということ。まあ、初心者スレっぽくないか(笑)


ところでそもそもの前提として、勝手に閉じるというUI自体が問題を
はらんでいることは注意したほうが良い。
確実に知らせたいのなら、確認を示す意思表示としてボタンを
押させること。
そうでないと画面のそばにいなかった時にすでに終わったということ
自体を気づかないことがあるからな。

272 :ラーメンタイマー:01/09/27 04:03
>>271
> ところでそもそもの前提として、勝手に閉じるというUI自体が問題を〜
あーならいまのままがいいですね。
確かにその方が親切ですし。

んで今度は時間が来たらウィンドを最前面に出してやりたいのです。
って教えて君ですな・・・調べてきまっす。

273 :263:01/09/27 04:12
>>272
最前面に出すという行為も、何かユーザーが操作している
最中に出てくるとユーザーを邪魔することになってしまうので
問題があるんだよね。
そのために、Win98以降では従来の方法で最前面に出そうとしても
タスクバーで名前が点滅するだけに終わるように変更されている。

最前面に出す機能は、主に手前に置きっぱなしにするソフトに、
ユーザーの意思によって設定可能にするだけにしたほうが良い。

ということを言っておいた上で(笑)

従来の方法で最前面に出すだけならばFormStyleプロパティを
fsStayOnTopにしておくだけでOK。

274 :デフォルトの名無しさん:01/09/27 06:13
データベースの質問です。
IBTableのfilterありますよね。
あれ使って日付型の項目からレコードの絞り込みしたいんですけど
どうやったらいいんですか?

275 :Delモナギコ:01/09/27 07:01
    ∧∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜´ ( ´∀`)< かなり良い感じーモナーギコー
  uu u u   \_______

俺が変にGetTickCountとwhileでのループ技書いたから
CPU処理%について論議が・・・・。みんなの言う通りだよね。
最近は、CPU処理の方にも気を使ってるつもり。でも使いまくり。
某エロゲーとかはつねに60%とかだから、どうやってるのかなあ
とか考え込んでしまってもいる。

>274
データーベースは分からないので答えられない・・・。
他の人ヨロシク

276 :274:01/09/27 09:36
自己レス こんな風に書いたら動きました。
I_DATE>'8 20 2001' AND I_DATE<'9 21 2001'

277 :デフォルトの名無しさん:01/09/27 09:42
>>275
MAMEみたいなエミュレータをノートPCで走らせるとファンが回りまくりで
どうしようもない。CPUの使用率って制御できないものか私も知りたい。

278 :デフォルトの名無しさん:01/09/27 10:28
別スレッド作ってそっちでSleepし、Sleepが終わったらメインスレッドに
終了コード投げて自分も終わるというのはどうだろうか。

…あほらしいか。

279 :デフォルトの名無しさん:01/09/27 11:02
TMemoの内容をINIファイルに書き出したいと思いますが
---------
gikogiko
monamona
---------
という内容を以下のように記述すると

SL := TStringList.Create;
SL.Text := Memo1.Text;
iniFile.WriteString( 'CATEGORY', 'ITEM', TMemo1.Text );

↓のように書き出されてしまいます。
---------
[CATEGORY]
ITEM=gikogiko
monamona

monamona

---------

逆にこのINIファイルを読み込ませてTextプロパティに入れると
最初の行「gikogiko」しかMemo1に表示されてくれません。
どのようにしたらよいのでしょうか?

また、Memo1の内容に「Name=Value」がある場合そのまま
書き出されてしまいますが、これは問題ないのでしょうか?
INIファイルに同じ項目がある場合、読みだし時に誤動作しそうな・・・。

そもそもTMemo内容をINIファイルに書きだそうとするのが間違いですか?

280 :デフォルトの名無しさん:01/09/27 11:03
>>279
iniFile.WriteString( 'CATEGORY', 'ITEM', TMemo1.Text );
じゃなくて
iniFile.WriteString( 'CATEGORY', 'ITEM', SL.Text );
ですね。
書き間違えすいません。

281 :>>279:01/09/27 11:27
>そもそもTMemo内容をINIファイルに書きだそうとするのが間違いですか?
間違いでしょう。一行に対する最大長制限もあるし,95/98/NT で微妙に動作が違うし。
ファイルの読み書きでしかないから速度も遅いしね。

.ini にはパスを入れるだけにするとか。

282 :279:01/09/27 12:03
>>281
TMemoの内容だけ別ファイルに書き出すことにします。
ありがとうございました。

283 :ラーメンタイマー:01/09/27 12:05
>>273
ほうほう色々とむつかしいんですな。
ならタスクバーをチカチカさせるだけでいいのかな?
まー実際にラーメンタイマーなんて使わないと思うし(笑)

284 :デフォルトの名無しさん:01/09/27 12:36
ラーメンタイマー、
そもそも、なんで自動で閉じたいの?

285 :デフォルトの名無しさん:01/09/27 12:49
INIファイルには、改行文字を含める事は出来ません。
そこで、制限の無い TMemIniFile を使う。
改行文字を含めず、引用符とカンマ区切りで1行1行を区別する。

with TMemIniFile.Create( '****.ini' ) do
begin
 WriteString( ***, ****, Memo1.Lines.CommaText );
 Flush;
 Free;
end;

with TMemIniFile.Create( '*****.ini' ) do
begin
 Memo1.Lines.CommaText := ReadString( ***, ***, '' );
 Free;
end;

286 :ラーメンタイマー:01/09/27 13:26
>>283
タスクバーじゃなくてタイトルバーだ(;´Д`)

>>284
連続で使う事はあまりないかなと思って。
でも263さんの言う通り 不親切なのでやめますた。

287 :279:01/09/27 13:31
>>285
TMemIniFileですか。なるほどっ!
まさに思い通りのコトができました。
ありがとうございますっ!

288 :デフォルトの名無しさん:01/09/27 21:33
オープンソースのソフトで、オブジェクト指向プログラミングのいいサンプルないですか?
いくつかフリーソフトのソース見てみたんですが、結構手続き指向?を使ったものがほとんどなので。

289 :デフォルトの名無しさん:01/09/27 22:17
>>288
Delphiスレでこういう質問をする意図が読めぬが、
これがDelphiのソースとしてそういうものを読みたいという要望なら、
DelphiのComponentのソース公開されてる奴を探して(いっぱい有る)
そのソースを読むとよかろうと思う。
Component作りは、OOPは避けて通れないので。

特に、1つの配布セットに、互いに関連の強い複数のComponentが
入ってる奴は狙い目だ。単体より「相互関係」を学ぶことに
色々と意義があるので。継承とか委譲とか色々。

拙作(内緒)は20個もゴミみてーなComponentが入っている。
ゆえに、さぞかしタメになるだろうな。わははははは。。。。。

290 :Delモナ:01/09/27 22:41
       ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(|_(|  ( ´∀`)< すげえ良い物見つけたモナー
(. .\ ⊂   )_\__________
(● ノ   ̄ノ ノ   川
   '''|| (|__)ー|||川
   (_(__)  (_(__)

既出っぽいよーな気がするが、見たこと無いのでリンク
ttp://glscene.org/
にある
ttp://glscene.sourceforge.net/misc/CodeWarp.zip
ってソフトは良いね。
コードエクスプローラーの代わりになるので非常に便利。
なんで、このソフトを発見できなかったのか悔やまれる。

リンクスレの「環境のことなら」のところにリンク張っておいてくれい。

>288
自分がオブジェクト指向でプログラムしてるのかそもそもよく分かっていない・・・。
まあ、結果良ければオッケーっと言うことで。

>289
ウチのコンポーネントは全然オブジェクト指向じゃないっぽいので
参考にならないかも・・・。関数をガンガンつけまくっているだけだし。

291 :雑魚:01/09/27 23:42
Del6のSampleタブにあるShellListViewを使いたいんですが、
使いかたはどこで調べればいいんですか?
ヘルプに何も書いてないですよね?

292 :Delギコ:01/09/28 01:01
  ∧ ∧    />>290 リンク先のアドイン
  (,,゚Д゚)  < モードレスで
  U  ,つ゛  \Formの位置調整が出来るようにしたいです。
〜|  |
  ∪∪ モーダル & ScreenCenterは ツライッス
>>288
ホットゾヌなどは?大きすぎますか?

>>291
Sampleの中のものは伝統的悪しき週間により
HELPはつきません。ソースがあるので
それを見ながらガンバルしかないです。

 ガンバルンバ!

293 :デフォルトの名無しさん:01/09/28 08:38
ホトゾヌ依存コンポーネント多すぎてコンパイルできぬ・・・かなしい

294 :デフォルトの名無しさん:01/09/28 08:38
具体的にはTUIWebBrowserのコンパイルでつまる・・・

295 :デフォルトの名無しさん:01/09/28 09:24
TUIWebBrowserインストールしようとしたらrequires vclieのところでつまるし…。
パーソナルではインストールできないとか?

296 :Delギコ:01/09/28 10:03
 ∧ ∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 (,,゚Д゚)  <  ホットゾヌは依存Compoが激少で
  | つ[|lllll]). \_ 折レは驚いていたけど…
〜|   |
  ∪∪ タコタコ サイト シラベテミル

タコタコの説明によるとD5まではTWebBrowserを継承していなかったから
StdやLernでも利用できたみたい。
D5からComの継承が可能になったみたいで
D6用のはTWebBrowserから継承しているみたいだけど・・・

PersonalはTWebBrowserないから不味そう__
詳細わからないので、作者さまに要連絡がよろしいと思われ

297 :デフォルトの名無しさん:01/09/28 10:55
>>3ドリルちんちんだ。

298 :デフォルトの名無しさん:01/09/28 11:13
ボタン操作などでTPageControl上にある特定のTTabSheetを
開けなくしたいのですが、Enableプロパティ、Visibleプロパティを
変更しても変化しません。

TCheckBoxとかTMemoとか他の要素はEnableをオフにすることで
使用不可状態にできたのですが、TTabSheetでは出来ないのでしょうか?

299 :デフォルトの名無しさん:01/09/28 11:39
派生すれば良いと思います>>299

300 :Delギコ:01/09/28 12:29
今だ!300ゲットォォォォ!!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ

 >>298TabVisibleをFalseにしてみたらど・かしら?

301 :デフォルトの名無しさん:01/09/28 13:30
MDIアプリケーションの子フォームを全て閉じるにはどうすればいいですか?

302 :デフォルトの名無しさん:01/09/28 13:51
HELP に、そのまんま「例」としてのっているのですが。




■VCL リファレンス
TCustomForm.MDIChildren


MDIChildCount, MDIChildren, Close 例
--------------------------------------
以下のコードは,Form1 の MDI 子フォームをすべて閉じます。

var

I: Integer;
begin
with Form1 do
for I := MDIChildCount-1 downto 0 do
MDIChildren[I].Close;

end;

303 :デフォルトの名無しさん:01/09/28 14:04
>>296
TWebBrowser って、IE のタイプライブラリからインポートしたものなんだけど。
Personal でもタイプライブラリのインポートはできると思ったが。

304 :デフォルトの名無しさん:01/09/28 14:11
では質問。
何故Delphiが最強なの?

305 :デフォルトの名無しさん:01/09/28 14:19
>>302
HELPにのってたんですか。探しが足りなかったです。
ありがとうございました。

306 :Delギコ:01/09/28 14:21
   ∧∧   / ̄ >>303 サンク--スソデシタカ
@_(,,゚Д゚) <  とりあえずD6Proではタイプライブラリトリコミして
⊂,,__つつ.  \_ ソースをちょこっと修正してライプラリパスを通したりしてたら
             TUIWebBrowserのインストは出来たよ。

タイプライブラリ取り込みの説明はTUIWebBrowserインストール説明の
D5のものを参考にしよう。>>295

ちがうかな?

307 :Delギコ:01/09/28 14:23
     _     >>304
    | ∧ ∧   コンパイルが早いから
    | ( ゚Д゚)
    | ⊂ |  とか逝ってみる。
    | ⊂__ノ@
    | |

308 :デフォルトの名無しさん:01/09/28 14:29
>>300
あ、TabVisibleでしたか。
ありがとうです。

309 :デフォルトの名無しさん:01/09/28 17:12
単にDLLファイルだけが与えられている場合、どのようにしてこのDLLで定義されている関数名や型を知り利用するのでしょうか?

310 :デフォルトの名無しさん:01/09/28 17:18
>>309
名前は知ることができますが、引数や戻り値の型や呼び出し規約は知ることができません。
適当に当てずっぽうで推測したり、逆アセンブルして解析したり、作者に訊いてみたり、あきらめたりするしかありません。

311 :295:01/09/28 20:23
皆様ありがとう。
タイプライブラリのインポートは出来たみたいなんですがやはりTUIWebBrowserが
インストールできません…。
どこが悪いのかも把握できてないんでもう少し調査してみます。

…他にもIEコンポを使えるようになるコンポーネントってあるんだろうか…。

312 :デフォルトの名無しさん:01/09/28 21:13
パソナルってほとんどのコンポがインストできないよね

313 :Delモナ:01/09/28 21:47

       (>312)
           \从//
         \ヽ   // ボン!
          <     >∧_∧
          <   l⌒l´∀` )
             /ヽ ヽ   つ
             ((( \_   ノ
                  \ ヽ
                   し''
>312
アンチデルファイ厨房、マジで消えてくれ。
とっととプログラム板から消えてくれ。

>311
IndyとかでIEコンポをいじれなかった?
Ieコンポだったらmonazillaを参照するといいかもネ。
ttp://members.jcom.home.ne.jp/monazilla/

314 :デフォルトの名無しさん:01/09/28 21:59
つい最近はじめて見ました。結構ハマりますね。
質問なのですが、ユーザーがウインドウのサイズ変更、
最大化をできなくするにはどのようにしたら良いでしょうか?

315 :デフォルトの名無しさん:01/09/28 22:04
>>314
プロパティ変えるだけ

316 :デフォルトの名無しさん:01/09/28 22:07
ウィンドウがアクティブになってない時にキー入力を取得するにはどうすればいいんでしょむか?

317 :デフォルトの名無しさん:01/09/28 22:18
>>316
アクティブにすれば良いと思われ

318 :デフォルトの名無しさん:01/09/28 22:20
>>317
そ、そうじゃなくて、、
ウィンドウが消滅しててバックグラウンドで動いていてあるキーを押すと
ひょこっとウィンドウが現れるように作りたんです

319 :デフォルトの名無しさん:01/09/28 22:22
フック。

320 :デフォルトの名無しさん:01/09/28 22:27
http://www.text2music.com/mine/delphi/2.html.
このページを見ながら乱数発生器を作っているのですが、
「オブジェクトスペクターの上のタブ "Event" を選んで、その中の"OnCreate"をダブルクリックしてください。」
という説明がでてきました。
ところが、私のDelphi Personal には、OnCreate というものが見当たりません。

なぜでしょう?

ちなみに、上記の解説サイトを作っているのは、ひまわりの作者さんみたいです。

321 :デフォルトの名無しさん:01/09/28 22:29
>>320
なんか2ちゃんからの直りんを禁止してるみたいなので、URL をコピペしてください。
ttp://www.text2music.com/mine/delphi/2.html.

322 :デフォルトの名無しさん:01/09/28 22:29
>>321
違いました。
URL の最後にどっとが入っていたからでした。
正式URL
http://www.text2music.com/mine/delphi/2.html

323 :デフォルトの名無しさん:01/09/28 23:07
>>320
絶対あるはず。
左にあるオブジェクトインスペクタのコンボボックスからForm1を選ぶ。
そしてイベントタブのなかにOnCreateはある。

324 :デフォルトの名無しさん:01/09/28 23:11
OnCreateならフォームをダブルクリックしたらすむんじゃないかな

325 :デフォルトの名無しさん:01/09/28 23:15
>>323
ありがとうございます。
言われた通りにやったらできました。
コンボボックスに別のものが入っていたので表示されてなかったようです。

326 :・∀・:01/09/28 23:15
・∀・

327 :317:01/09/28 23:16
>>318
> ウィンドウが消滅しててバックグラウンドで動いていてあるキーを押すと
> ひょこっとウィンドウが現れるように作りたんです

この用途なら RegisterHotKey が良い

328 :遅レス:01/09/28 23:30
>295 :デフォルトの名無しさん :01/09/28 09:24
>TUIWebBrowserインストールしようとしたらrequires vclieのところでつまるし…。
>パーソナルではインストールできないとか?
パーソナル0円プログラミング派だけど、TWebBrowserインストールして
ヘッポコブラウザ作って遊んでますが…。
つーか、スーパー初心者なんで、「TUIWebBrowser」と「TWebBrowser」は
別物?勘違いしてるかな?オレ。

329 :316:01/09/28 23:36
見なさムありあとうございました。
なんとか方向性は見えてきましたハイ。

330 :キティガイ:01/09/29 07:23
マッサージしたり料理を作ってくれるようなトータルライフサポートアプリケーションを作成したいのです。
しかし標準のコンポーネントではマッサージや料理ができません。
Delphiってだめですね〜。
VC++だと簡単にできるんですよね♪

331 :デフォルトの名無しさん:01/09/29 07:44
>>330

おもろないぞ! やっぱ養殖もんはダメだねえ
やっぱ天然 もんのキレが全く無い

332 :チョコボーイ:01/09/29 07:50
関数 手続きが,まだ理解できません

税抜き
消費税
税込み と 3つの答えを DBEdit に 格納したいのです

別フォーム で作りたいです。

おしえてください、また なにか参考に出来るもの おしえてください

333 :デフォルトの名無しさん:01/09/29 08:55
俺はクラスとオブジェクト指向が理解できてない。
でもアプリつくれるデルファイマンセー。
解ってないからコンポーネントなんかつくれんがな

334 :デフォルトの名無しさん:01/09/29 10:10
>>333
Delphi使ってればそのうちなんとなくわかると思われ。
TButton とか TCheckBox とかがクラス。
Button1 とか Button2 とか CheckBox1 とかがオブジェクト。

335 :デフォルトの名無しさん:01/09/29 10:13
>>332

税抜き、消費税、税込み、3つともわからんなら、どうやって求めるんだ。そもそも。

336 :デフォルトの名無しさん:01/09/29 11:27
>>332質問の意味が違ってたらごめん

var
Form1: TForm1;
//手続きの宣言
procedure aaa(zeinuki:Currency ; Zei_ritu:Single);
implementation

uses Unit2; //betuformのユニット名

{$R *.DFM}
procedure aaa(Zeinuki:Currency ; Zei_ritu:Single);
var
Zeikomi,Zei:Currency;
begin
//消費税の計算
Zei:=round(Zeinuki*(Zei_ritu/100));
//税込価格の計算
Zeikomi:=Zeinuki+zei;
//Betuformというフォームに張ってあるDBEditに表示する
//税抜きをDBEdit1に表示
Betuform.DBEdit1.text:=FloatToStr(Zeinuki);
//消費税をDBEdit2に表示
Betuform.DBEdit2.text:=FloatToStr(Zei);
//税込みをDBEdit2に表示
Betuform.DBEdit3.text:=FloatToStr(Zeikomi);
end;

//ボタンを1個張り付けて手続きを呼んでみる
procedure TForm1.Button1Click(Sender: TObject);
begin
//別フォームを表示
betuform.visible:=true;
//税抜き100000,消費税率は5パーセント
aaa(100000,5);
end;

337 :Delギコ:01/09/29 14:14
      ∧∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 @' ― (,,゚Д゚) < TUIWebはTWebの変なところを改善している
   し― し-J   \___________
 TWebBrowser
 ショートカットキーがうまく動かなかったりしないかな?

 >>314
 GetMinMaxInfoという単語を調べるてヨシ

338 :デフォルトの名無しさん:01/09/29 16:20
337のGetMinMaxInfoや70あたりに出てきたファイルのD&Dなどは
Delphiのどうこう言うよりWindowsAPIとかShellの話になってきますよね
その辺参考になる書籍、HP等ありましたら教えていただけると幸いです。

339 :デフォルトの名無しさん:01/09/29 17:05
コンソールアプリケーションで
“次の処理まで○秒待つ”という処理をさせたいんですが
どう記述すればいいのかわかりません。

waitさせたいと言ったほうがわかり易いでしょうか。
ご教授お願いします。

340 :Delモナ:01/09/29 17:36
    ∧_∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ◯( ´∀` )◯ < 今日は色々あって楽しかったモナー
   \    /   │
    |⌒I、│    \__________
   (_) ノ
      ∪
     ∬

>339
251で書いてあることを使えばどう?

341 :デフォルトの名無しさん:01/09/29 17:51
コンソールアプリならSleep(1000)で1秒止める、とかでいいんでねすか

342 :チョコボーイ:01/09/29 21:06
>>332
改めて自分の質問を読んだら わかりずらかったです 済みませんでした。

336さんのお答えのような物を求めていました。
本当にありがとうございました。

335さん。 それぞれの求め方は分かるのですが、関数として別フォームで扱いたいと言うことでした。
たしかに伝わりずらかったと思います。 すみませんでした。

343 :デフォルトの名無しさん:01/09/30 02:49
ActiveXコントロールってさ、勝手にフリーソフトとかでつかっちゃっても
いいものなの?

344 :デフォルトの名無しさん:01/09/30 04:28
そのコントロールのライセンスによるんじゃないの?
配布権とか。

345 :339:01/09/30 06:20
>>340-341
>>251を見てみましたが、何が書いてあるのかさっぱりわかりませんでした。
なので、とりあえずSleepを使う事にします。
ありがとうございました。

346 :デフォルトの名無しさん:01/09/30 09:57
すげえDelphi。
ネイティブだよネイティブなんだよ。
おいら感動して眠いよ。

347 :デフォルトの名無しさん:01/09/30 11:23
フォームにfsStayOnTopってありますよね?
あれ、ひとつだけフォーム表示してる時は機能してるんですけど、
二つ目のフォームを表示させると後ろにまわっちゃうんですが、
常に前に表示するにはどうしたらいいんでしょうか?

348 :デフォルトの名無しさん:01/09/30 11:25
間違ってsageてしまった…

349 :デフォルトの名無しさん:01/09/30 11:31
>>347
ShowModal で表示したときのこと?
それなら呼び出し元フォームが前になっちゃまずいよ。

350 :347:01/09/30 12:18
>>349
言葉足らずですみません。そうですShowModalで呼び出した時です。
フォームが一個の時は常に手前に表示されるんですが二つ目のフォームを出したとき、
両方のフォームが他のウィンドウの後ろにまわっちゃうんです。
呼び出し元と呼び出したフォームの前後関係を変えないで、他のウィンドウより前に出したいんです。

351 :デフォルトの名無しさん:01/09/30 12:41
>>350
SetWindowPos API 使えばいいんじゃないかな。
例えば Form2 を前面に表示させたければ、
 SetWindowPos(Form2.Handle, HWND_TOPMOST, 0,0,0,0, SWP_NOMOVE or SWP_NOSIZE);
のように呼び出すとかして。
ただ常に前面で表示されている保証はないけど。

352 :デフォルトの名無しさん:01/09/30 12:47
TStringGridって、直接入力できますか?

353 :デフォルトの名無しさん:01/09/30 12:49
>>352
もっと具体的に書いてくれ(;´д`)

354 :デフォルトの名無しさん:01/09/30 12:54
>>352
ObjectInspector で Options の goEditing を True にすればできる。
& goAlwaysShowEditor=Trueで常に入力キャレットが出ている状態にすることもできる。
ちゃんとヘルプ読んでるのかい?
このくらいのことはヘルプ見ればわかることだと思うよ。

355 :デフォルトの名無しさん:01/09/30 13:43
>>354 まあ、初心者スレだから

>>352 でも、354の言うとおりだよ
必要なコンポーネントについてはヘルプに目を通して
何ができるのか把握することから始めましょう

356 :352:01/09/30 14:01
>>353-355
ありがとうございました。
これからは、きちんとヘルプ見ます。

357 :347:01/09/30 14:14
>>351
できました。両方共最前面表示できました。
ありがとうございます。
今度はForm1がVisible=Falseになってる状態で同じ事をやろうとしたんですが、出来ません(;´Д`)

358 :デフォルトの名無しさん:01/09/30 14:59
>>357
>今度はForm1がVisible=Falseになってる状態で同じ事をやろうとしたんですが、出来ません(;´Д`)

以下のようにするとOKだったよ。

・Form1.FormStyle を fsStayOnTop にしておく。
・Form2.FormStyle を fsStayOnTop にしておく。
・Form1.OnShow ハンドラを以下のように実装する

  procedure TForm1.FormHide(Sender: TObject);
  begin
   Application.NormalizeTopMosts;
  end;

・Form2.OnShow ハンドラを以下のように実装する

  procedure TForm2.FormShow(Sender: TObject);
  begin
   SetWindowPos(Handle, HWND_TOPMOST, 0,0,0,0, SWP_NOMOVE or SWP_NOSIZE);
  end;

これで Form2.ShowModal する前に Form1.Hide しても前面に出るようになったけどね。

テストコード)
procedure TForm1.Button1Click(Sender: TObject);
begin
 Visible := False;
 Form2.ShowModal;
 Visible := True;
end;

359 :358:01/09/30 15:03
訂正
誤)・Form1.OnShow ハンドラを以下のように実装する
正)・Form1.OnHide ハンドラを以下のように実装する

360 :347:01/09/30 16:11
>>358
おおっ!!出来ました。
ありがとうございますヽ(´ー`)ノ

Application.NormalizeTopMostsは気が付かなかったです…。

361 :デフォルトの名無しさん:01/09/30 20:37
RAS接続しているかどうかを判定したいんですが wininet.dllを
使えばいいんでしょうか?

http://homepage1.nifty.com/~suzuki/delphi/wininet.html
にそれらしいやり方はあるのですが、
例えば↑にあるIsGlobalOfflineを使ってみようとして
LANにぶら下がっておらず、ダイアルアップ接続もしていない
環境で試してみましたがFALSE(接続している)が返ってきてしまいます。

362 :Delギコ:01/09/30 21:01
http://members.jcom.home.ne.jp/monazilla/document/wininetdel.html
 これでダメなら折れしらない。
\___  _________
      ∨
♪   ∧ ∧ ♪
    (,,゚Д゚).  ♪
     |つ[|lllll]).
   〜|  |    Indyにはそういうのないの?
    U U

363 :デフォルトの名無しさん:01/09/30 21:36
三本柱が一本になってしまった…。

364 :デフォルトの名無しさん:01/09/30 21:44
>>363
誤爆?

ボーランド株式会社が Delphi/CBuilder を捨てて JBuilder に
傾いていることをいっているの?

365 :361:01/09/30 23:32
>>362
やはり接続できない状態にも関わらず「接続できるよ」になってしまいます。
これってなにをもって「接続できるよ」って判定してるんでしょね?

やはりRASが動いているかどうかでチェックしたほうが確実っぽいです。
しかしその方法が見つかりません・・・

366 :デフォルトの名無しさん:01/09/30 23:48
↑のほうでPersonalでTUIWebBrowserを使おうとしてた者ですが…。
タイプライブラリの取り込みがよくわからないままいろいろやってたんですが、
何とかTWebBrowserは取り込むことが出来ました。
ただ、Professional版とはクラス名とかが違う?ので、Pro向けに書かれたコンポとかはかなりソースを修正しないと
インストールできないみたいです。これからチャレンジしてみます。

3行しかコードを書いてないのにブラウザもどきができてちょっと感動。

367 :366:01/10/01 00:30
TUIWebBrowserのインストールにも成功しました。
コンパイル指令を書き換えて、要求するパッケージ名を書き換えたらできました。

これでパソナるでも色々遊べる〜。

368 :D6マン:01/10/01 01:01
パーソナル(無償DL版)と無償じゃないヤツの違いってのは、
シェアウェアを作っちゃダメ!ってことだけでやんしたか?
詳しい違いを書いてるページは御存知無いでしょーか?

369 :デフォルトの名無しさん:01/10/01 01:21
>>368
残念ですが,パーソナルは有償版と無償版は全く同一です。
・印刷されたマニュアルがつくかどうか
・IE5.5 が収録されているかどうか
この二つ以外はバイナリも同じ。ライセンスも同じです。

パーソナルは有償版でも,それで利益を得てはいけません。

370 :D6マン:01/10/01 01:37
>>369
ありがとザマス。
あら、一緒ザマスか…。
なんか、まだまだ入手したてで全然分からんので遊んでるだけなんだけど、
「『Controls.pas』があらへん」って怒られますのんや。
で、無償版はファイルが足らへんのでは?と思いましたドスエ。

371 :デフォルトの名無しさん:01/10/01 01:53
>370
Controls.pasは付いていませんよ。
Controls.dcuがあるフォルダへのパスを設定していないのでしょう。

普通にインストールすれば、問題無いと思うのですが。

372 :D6マン :01/10/01 02:02
>>371
はれま!たびたびありがとザマス。
そーですか…。うーむ。やってみまふ。
どーもです。

373 :デフォルトの名無しさん:01/10/01 03:33
>>366
TWebBrowser
TUIWebBroeser
のインストール方法教えてください。

374 :デフォルトの名無しさん:01/10/01 03:49
TWebBrowser を用意してから
TUIWebBroeser をインストールします。

375 :373:01/10/01 04:38
TWebBrowserは

コンポーネント>ActiveX コントロールの取り込み

からでいいんでしょうか?

376 :Delモナ:01/10/01 07:03
          ∧ ∧
   ∧ ∧    (´Д`* )
  (*´Д`)  (     )
  ./  |/ ̄ ̄ ̄ ̄∧ ∧
〜(_ ∧ ∧     (´Д`*)
  /_(*´Д`)_/ (UU )〜
  || ̄/  | ̄ ̄||/┌───────―――
  ||, (___ノ   || <  そうだモナー >375
  /         └───────―――

377 :デフォルトの名無しさん:01/10/01 07:38
僕は今の時代のアプリケーションはアイコンが全てだと考えます。
どんなに性能の良いアプリケーションでもアイコンが悪いと糞以下の存在になると思います。
また、どんなに性能の悪いアプリケーションでもアイコンがよければすべて良しということになると思います。
そこで、カコ(・∀・)イイ!アイコンはどうやって作ればいいのでしょうか?

378 :デフォルトの名無しさん:01/10/01 07:52
>377
カコイイアイコンが出来るまで、アイコンを描く。

379 :366:01/10/01 09:03
TWebBrowserインストール方法。
タイプライブラリの取り込み、またはActiveXコントロールの取り込みを使ってMicrosoft HTML Object Library(Version 4.0)
とMicrosoft Internet Controls( Version 1.1)を取り込む。
すると、コンポーネントパレットのActiveXページにScriptlet, WebBrowser_V1, WebBrowserというコンポーネントができるはず。

次に、TUIWebBrowserのインストール。
ダウンロードしたファイルのDelphi6のディレクトリをどこかライブラリパスの通っているところに置く。(置いたところに通す)
次にソースを修正する。
UIWebBrowserPG.dpkをエディタで開き、requires vcl, vclie; となっているがvclieを消す。
その上に{$IMPLICITBUILD OFF}というコンパイラ指令があるので、{$IMPLICITBUILD ON}と書き換える。
UIWebBrowserPG.dpkをDel6で開き、インストールボタンを押す。するとあちこちでコンパイルエラーがでるので、該当ソースの
uses節の、ShellDocVWをShellDocVW_TLBと書き換える。すべて書き換え終わったらコンパイルが通ってインストール終了。


以上だったはずです。よくわかってない初心者の書くことなので鵜呑みにはしないでね。
詳しい人は捕捉してくれるとありがたいです。

380 :366:01/10/01 09:06
あ、もちろん↑の記述はDelphi6 Personal版にインストールするときのことです。
Pro以上にインストールするときはソースの修正、タイプライブラリの取り込みは要らないはずです。

381 :デフォルトの名無しさん:01/10/01 10:02
>>377
・その1
ドット絵を学ぶ。
del付属のイメージエディタは激烈に使いにくいので、
ちゃんとしたドットエディタを使う。

・その2
画像加工を学ぶ
ドット絵がかけなくても、大きめに絵を書いて
フォトレタッチソフトで縮小してその後また加工して調整。

オレは、両方併用派

382 :デフォルトの名無しさん:01/10/01 10:03
>>379
ありがたい。
pro版ユーザーだけどインストールできなくて困ってた

383 :Delギコ:01/10/01 10:46
>uses節の、ShellDocVWをShellDocVW_TLBと書き換える。すべて書き換え終わったらコンパイルが通ってインストール終了。

   ∧ ∧     /
   ( ゚Д゚)   < Pro版ならIFDEF VER130を IFDEF VER140に変えると
.=| |==U=U==.| |= \よさそうです。
 | | |  |  | |
 | | ノU U.  | |
 | |      .| |

384 :デフォルトの名無しさん:01/10/01 15:59
Del5ラーニングからDel6パーソナルへの移行はどんなメリット、(&デメリット)がありますか?

385 :D6マン:01/10/01 23:12
>>379
そんな面倒なことしなくても、アチキ、D6無償ザンスが、
インストール出来たんですが…?
はて?
それしないとインストール出来ないんじゃ、アチキにゃ入れられないっスよ。

386 :373:01/10/02 00:31
>Delモナさん、366さん

ありがとうございます。
TUIWebBrowserは「vclieが見つかりません!!!」
とか言われてインストールできなかったので、助かります。

vclieを消せばよかったのね。vclieって何のためのものなのかな?

387 :D6マン :01/10/02 00:37
アチキの面目丸つぶれ(藁
おかしいなー??
普通に入ったけど。何が普通かよく分からんが。
ま、いっか。
vclieってナニ?そんなこと言われなかったなぁ。

388 :デフォルトの名無しさん:01/10/02 01:09
379の書いたとおりにしても「ShellDocVW_TLB.douが見つかりません」って怒られるんだけど…
何でだろう?

389 :デフォルトの名無しさん:01/10/02 01:12
C:\Program Files\Borland\Delphi6\ImportsにShellDocVW_TLB.pasとかdcuとかはある?
なかったらタイプライブラリの取り込みが出来てない。

390 :D6マン:01/10/02 01:27
「SHDocVw_TLB.pas」ってのはありますな。
dcuもありまふ。
不思議だ。

391 :デフォルトの名無しさん:01/10/02 01:31
>>390
インストールしたんじゃないのか?

392 :D6マン :01/10/02 01:38
>>391
書き方が悪かったザマス。スマソでございます。
「vclieが無いわよアハン」とも言われないし、
何か複雑な書き換えもしなかったのに、インストール出来たのが不思議だと…。
つーか、不思議不思議言うてても意味無いので、アチキはこのネタはこれで終わりにしまッソ。
失礼おば。

393 :デフォルトの名無しさん:01/10/02 02:07
Delphi6パーソナルをインストールしようとしたら
インストーラーがページ違反(モジュールKERNEL32.DLL)してしまった。
インストールは続行出来そうなんだが、俺の環境が腐っているのか?

394 :デフォルトの名無しさん:01/10/02 02:09
>>393
常駐全部外しても、それが出るんなら腐ってるのかもな。

395 :デフォルトの名無しさん:01/10/02 02:11
>>393
どこら辺で落ちたんだ?
多くの製品が使っている Windows Installer なんだから環境の方に
問題があるんだと思う。

396 :デフォルトの名無しさん:01/10/02 02:12
>>392
典型的な役に立たない通りすがり。
いや,2ch だし悪いとはいわないよ。

397 :デフォルトの名無しさん:01/10/02 02:15
>>396
役立たず発見!

398 :D6マン:01/10/02 02:18
>>396
すいませんねぇ。役立たない通りすがりで。
アンタのくだらねーレスも同じってことで、ひとつ。

399 :393:01/10/02 02:24
>394-395
おぉ、優しい方サンクス。
インストーラークリック一発でページ違反が2回。
その後、ファイルの保存場所を聞いてくる。
とりあえず常駐とっぱらってインストールしてみますです。m(__)m

400 : :01/10/02 02:33
>399
ファイルが壊れているのかもしれませんわ。

401 :デフォルトの名無しさん:01/10/02 03:38
たぶん関係ないけど Win9x なら IME を MS-IMExxx に。

402 :デフォルトの名無しさん:01/10/02 03:41
>>401
俺、ATOK。無事インストール。

>>393
もしDLしたヤツで、ファイル壊れてるんなら
今月号のテックウィンに付録で付いてるよ。
俺それでインストールして何事も無かったよ。

403 :デフォルトの名無しさん:01/10/02 03:45
TListView の OnSelectItem イベントなんだけど、
これってクリックして選択した後に一回だけ起きる?
何か2回起きてるんだけど。
しかも、右クリックでも起きるし。

404 :デフォルトの名無しさん:01/10/02 05:15
行間が空いていないメモ帳のようなものではなく、Outlook Expressの
メール本文のように行間が空いているテキストエディタを作りたいのですが、
どうやればテキストボックスの行間を設定できるのでしょうか

405 :デフォルトの名無しさん:01/10/02 09:17
>>403
一回目のは選択解除されたとき(Selected=False)
2回目のは選択されたとき(Selected=True)のイベント

406 :デフォルトの名無しさん:01/10/02 09:34
>>494
シェアウエアでよければ
ttp://member.nifty.ne.jp/~katsuhiko/

のTEditorを使えば マージンの設定が出来ますよ

407 :デフォルトの名無しさん:01/10/02 17:26
StringGridのセル内文字列の左右中央寄せってどうすれば設定できますか?

408 :デフォルトの名無しさん:01/10/02 18:04
現在レコード型を利用してファイルアクセスを行っています。
これをクラスにして見通しを良くしようと思うのですが
(ファイルアクセスを行うのはこのクラスのみにしたい)
どのように記述すればよいのでしょうか?
クラスのprivate部にレコード型の定義を記述するとエラーが出るようなんですが...

409 :393:01/10/03 00:56
>>400-402
常駐とっぱらって、Borlamdとベクターか数回ダウンするもクリック一発ページ違反へようこそ。

環境腐ってるみたいだ・・・逝ってきます。
アドバイスくれた方サンクス。

410 :テックウィンから入れた人:01/10/03 01:02
>>409
そっかー。残念。雑誌からインストール試してもダメなら
いよいよ環境がマズいかもね。
メモリ周りとかは?

411 :404:01/10/03 01:08
>>406
レス有難うございます。確かに行間の設定は出来ましたが
プロポーショナルフォントが正常に表示されないのはちょっと・・・
もう少し自力で探してみます

412 :デフォルトの名無しさん:01/10/03 01:23
>>407
TStringGridを継承してDrawCellをoverrideするところかも

procedure TStringGrid.DrawCell(ACol, ARow: Longint; ARect: TRect;
AState: TGridDrawState);
begin
if DefaultDrawing then
Canvas.TextRect(ARect, ARect.Left+2, ARect.Top+2, Cells[ACol, ARow]);
inherited DrawCell(ACol, ARow, ARect, AState);
end;

このCanvas.TextRectで描画位置を調整するとよろしいかと・・・
文字列の巾・高さはCanvas.TextExtentで求めるべし
(あとは自分でバンバン)

413 :412:01/10/03 01:35
追記(ここは初心者スレだった)
やりかたが分からなければ「初心者にはちょっと早かった」ということで
納得しましょう
412のはコンポーネントを作るとういことだからね

414 : :01/10/03 01:43
1.DelphiからOLE使ってExcelにデータはく。
2.Excel閉じる。
3.1をもう一度する。→Delphiアボーン!

ってなるんだけどどうすりゃいいの?

415 :デフォルトの名無しさん:01/10/03 02:22
>414
Excelのバグでは?

416 :403:01/10/03 02:31
>>405
おお、謎は全て解けた!ありがとう!

417 :Delギコ:01/10/03 10:02
>>411
>プロポーショナルフォントが正常に表示されないのはちょっと・・・

 ∧ ∧   /TEditorはギコペにも使われているから
 (,,゚Д゚) < そんなこと無いと思うけど。
  |つ つ  \
@|  |
  ∪∪ シラナイケド

418 :デフォルトの名無しさん:01/10/03 13:05
右寄せStringGridの例だよ

procedure TRightStringGrid.DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState);
var
 oSize : TSize;
begin
 oSize:=Canvas.TextExtent(Cells[ACol, ARow]);
 Canvas.TextRect(ARect, ARect.Right-oSize.cx-2, ARect.Top+2, Cells[ACol, ARow]);
end;

419 :407:01/10/03 17:42
>412 ,>418
どうもありがとうございます。まだよく分からないレベルなんですけど、
わかるまでレス保存しておきます。

420 :フリーカーソル無効化:01/10/04 00:06

ttp://homepage1.nifty.com/fuu/software/nonfreecursor.htm

421 :Cマニア(デル初心者:01/10/04 00:19
Delphi パーソナルDLしてみた。
おー!?マウスをクリックするとHello world!の
文字列がたくさん(驚

422 :デフォルトの名無しさん:01/10/04 07:34
わーい。
パソナルでもフリーカソル無効にできるようになたよ。

423 :ななしヘタぐらま:01/10/04 07:40
>>404
海外モノですがTRichEdit98というコンポがあります.
Windowsのリッチエディット2.0をコンポ化したもので,
設定無しで行間があきます.
ただ,日本語処理では一部バグがあるようですし,
Delphi5以降ではソースの修正が必要かもしれません.
サイトの場所は失念したのですいませんが検索エンジンで探してみてください.

424 :ななしヘタぐらま:01/10/04 08:23
>>407
WindowsのAPI,DrawTextを使う方法があります.
以下はTStringGridでCells[]の内容を右寄せ表示する例.

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
// Rect を周囲1ピクセル縮小(Windows API)
InflateRect(Rect, -1, -1);
// デフォルトの描画を一部塗りつぶして消す
StringGrid1.Canvas.FillRect(Rect);
// Cells の描画(Windows API)
DrawText(StringGrid1.Canvas.Handle,
PChar(StringGrid1.Cells[ACol, ARow]), -1, Rect,
DT_NOPREFIX or DT_RIGHT);
end;

DT_RIGHTをDT_CENTERに変えるとセンタリングになります.

縦のセンタリングや下寄せ,ワードラップの機能もあります.
詳しくはAPIのヘルプを見てください.
編集画面でDrawTextにカーソルを移動してF1キー,

425 :ななしヘタぐらま:01/10/04 08:26
>>424
補足.これはTStringGridのOnDrawCellイベントです.

426 :デフォルトの名無しさん:01/10/04 13:11
質問させてください。
Delphi6Personalを使ってプログラミングを勉強しようと思うのですが、
その手の本が、まだ5までしか出ていませんよね。
過去スレを眺めてきたのですが、差はないから、という声もあがっていて、
Delphi5入門本で代わりになりそうかな、とも思ったのですが、
これから出るであろう、Delphi6入門本を待ったほうがいいのかな、とも思いました。
Delphi使いの方々に、どちらがいいのか聞いてみたいです。

427 :Delギコ:01/10/04 13:26
入門時には何度も繰り返し反復して勉強しないと覚えられないので
D5の本を買って、勉強して
D6の本が出たらまた買って勉強して
なんども同じような事を復習して学んだ方がいいと思います。
D6本を待つ必要はありません。

また、本当にD5とD6は差がないと思っていいです。

 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄
   ∧ ∧  ヒビ ベンキョウ
   (,, ゚Д゚)
   ノつl⌒|⌒l
 〜(._[ ̄ ̄ ̄.]
       ̄ ̄ ̄

428 :デフォルトの名無しさん:01/10/04 13:31
質問なんすが・・・
DataType = array[0..7] of byte;
TData = class
Data : DataType;

てなときに
  for i:=0 to 7 do data2[i]:=TMydata.data[i];

みたいなことができないのはなぜ?
コンパイルは通るけど実行するとエラーになる????
わけわかめ

429 :デフォルトの名無しさん:01/10/04 13:45
>>427
レスありがとうございます。
わかりました、まずはDelphi5入門本を買ってやってみることにします。

430 :デフォルトの名無しさん:01/10/04 15:27
>>428
var TMyData:TData ;
なの?

TMyData:=TData.Create;
with TMyData do
try
 for i:=0 to High(data) do data2[i]:=data[i];

finally Free;end;

431 :デフォルトの名無しさん:01/10/04 15:38
感謝age

432 :デフォルトの名無しさん:01/10/04 15:52
Delphiは入門本よりTips本の方がオモシロイNE!

433 :デフォルトの名無しさん:01/10/04 16:18
  ∧ ∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (,,゚Д゚)  < 画像貼り込むと大きくなるんです(当然
  U  ,つ   \____________
@|  |
  ∪∪

画像を無圧縮Bitmapでリソースに入れておくと
当然実行ファイルが大きくなっちゃいますが、
内部に圧縮画像として持たせる方法ってありますか?

434 :デフォルトの名無しさん:01/10/04 16:38
type TStatus = ( A, B, C, D );
var Now : TStatus;

みたいに定義してある状態で

if Now in ( A, B ) then

みたいにやることって出来ますか?

if (Now = A) or (Now = B) then

ってやるしかないのでしょうか?

435 :デフォルトの名無しさん:01/10/04 16:40
>>434
inまで発見できてるのならもう一歩ですな。
if Now in [A,B] then

436 :デフォルトの名無しさん:01/10/04 16:44
>>433
Jpeg 使えば劇的に小さくなるが。

437 :Delモナ:01/10/04 16:52
   ∧_∧  / ̄ ̄ ̄ ̄ ̄
  ( ´∀`)< 久しぶりだモナー
  (    )  \_____
  | | |
  (__)_)

>433
DelphianWorldに[圧縮保存機能付イメージコンポ]ってのがあるから
それを使うとPNG並に小さくなるよ。と言うかZLib使ってるからねえ・・・。

438 :デフォルトの名無しさん:01/10/04 16:52
>>435
()ではなく[]でしたか!
ありがとうございます。

439 :デフォルトの名無しさん:01/10/04 17:01
EXEをUPXで圧縮というのは後ろ向きかな?
リソースのbmpとかは圧縮効かないのかな?

440 :434:01/10/04 17:53
>>435
度々すいません。

if Now in [A,B] then
の「A,B」の部分を引数としてもってくることは出来るのでしょうか?

start( [A,B] );

procedure start( var ST:??? );
begin
 if Now in ST then

のような感じに・・・。
このへんってマニュアル読んでも見つからないので。

441 :Delギコ:01/10/04 17:59
    ∧∧   / ̄
  _(,,゚Д゚) < 集合型です
乙,,__つつ.  \_

type TStatus = (A, B, C, D)
   TStatusS = set of TStatus;

procedure start( var ST:TStatusS);
begin
 if Now in ST then

442 :434:01/10/04 19:04
>>441
うう、なんか順序型と集合型の使い方がわかんなくなりました。

type Status = ( A, B, C, D );
var Now : Status;

という「現在の状態を記録するもの」を用意しておいて

Now := A;
現状を記録して

・現状が「A or B」なら実行
・現状が「A or B」でないなら実行
とやりたい。そしてこの条件は引数で指定したいわけです。

if 〜 else if 〜 よりか
case of 〜
のがスッキリした記述になるから順序(集合?)にしたんですが、
なんか stringで if 使ったほうがいい気がしてきました。(TДT;)

自分で書いててなにがなんだか。

443 :デフォルトの名無しさん:01/10/04 20:14
>>442
集合型なら
 type Status = set of (A, B, C, D);
でしょう。

>・現状が「A or B」なら実行
 if Now = [A,B] then
  ...

>・現状が「A or B」でないなら実行
 if not (Now = [A,B]) then
  ...


ちなみに型名の頭には T を付ける慣習があるので、
付けるようにした方が見やすいよいと思います。
あと集合型の名前の末尾は s が付くようにした方がよいでしょう。
Delphiで定義している集合型と列挙型の名前を参考にしてみれば
よいと思います。


444 :デフォルトの名無しさん:01/10/04 20:35
ギコスレはレベル高いのでこちらで質問します。
よろしく

445 : :01/10/04 21:11
すいませんが質問です。

チュートリアルに

「コンポーネントパレットの[Additional]ページにある ActionManager コンポーネントを
 ダブルクリックして,フォームに配置します。このコンポーネントは非ビジュアルなので,
 フォームのどこに配置してもかまいません。」

って書いてあるんだけど、[Additional]には

BitBtn、SpeedButton、 〜、ColorBox とあるんだけど、ActionManagerはありません。
これってどういうことなんでしょうか?

446 :デフォルトの名無しさん:01/10/04 21:14
[Additional] に ActionManager あるよ。
pro版使ってるけど。

447 :デフォルトの名無しさん:01/10/04 21:15
整数(Word)を実数(Extended)にキャストするには?

448 :446:01/10/04 21:17
>>445
CLXアプリのときはないね。

449 :デフォルトの名無しさん:01/10/04 21:19
キャストなんて出来ないよ・・・

450 :デフォルトの名無しさん:01/10/04 21:24
>>447 キャストの結果どちらをお望みですか?

1)整数の値をExtendedにしたいなら単に代入すれば大丈夫です
2)内部のビット情報をそのまま移動する abosolute で別の変数を同じアドレスにする
  か record で case を使う
 ただし、ビット幅が違うので無意味です

451 :デフォルトの名無しさん:01/10/04 21:36
>>450
質問をいろいろ間違えてました。すみません。
Sec : Word;
x,y,r : Integer;
なときに、
x := r * Cos(2*Pi/(Sec/60) )
をやりたいのです・・・

452 :デフォルトの名無しさん:01/10/04 21:37
x := floor(r * Cos(2*Pi/(Sec/60) ))でとおると思う人ー

453 :デフォルトの名無しさん:01/10/04 21:44
ふーん
x := r * Cos(2*Pi/(Sec/60) )
こういうのVBだととおるんだねー

454 :デフォルトの名無しさん:01/10/04 21:48
>>453
すんません。Cでも通ります。ほんとすんません。

>>452
Truncというのを使うことにしました。
Floorは未定義とか言われて弾かれました。ごめんなさい。

455 :Delギコ:01/10/04 21:53
      ∧∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 @' ― (,,゚Д゚) < みんな面倒がって説明しないけど、
   し― し-J   \___________
>>445
超外出で、チュートリアルの記述ミスです。

なんとか自分で工夫してみてくれ。

456 : :01/10/04 22:20
>>446
どのボタンの間にあるんですか?

457 : :01/10/04 22:21
>>455
ありがとう

458 :デフォルトの名無しさん:01/10/04 22:31
>>456
ActionManagerはPro版とEnt版のみです
(Delphi6バージョンアップ案内の機能一覧より)

459 : :01/10/04 22:46
>>458
なるほど、ありがとうございます。

460 :デフォルトの名無しさん:01/10/04 22:48
TImageでいろいろ書いたのをアイコンにしたいです。
やり方がわかったらここに書きます。

461 :434:01/10/04 23:15
>>443

>>・現状が「A or B」なら実行
> if Now = [A,B] then
これは「A and B なら実行」になってしまうのではないでしょうか?

あと、 case でスッキリ書くことを目的とするならばやはり
集合じゃなくて順序になるんでしょうか?

しかし大きなヒントを得ることができました!
ありがとうございます。

ちなみに VBを使っていたクセで「intInteger、strString、prcProcedure」
みたいに型を頭に付けるようにしてます。

462 :433:01/10/04 23:16
>>437
圧縮保存コンポ探してみるです。Thx!

463 :460:01/10/04 23:28
だめだ・・・さっぱりわからないです。
TIconはファイルまたはストリームからしか設定できず、
TImageはそのどちらにも出力できないですよね?

464 :デフォルトの名無しさん:01/10/04 23:29
hInstanceはvarのところに定義しなくても使えるようですがなんで?

465 :デフォルトの名無しさん:01/10/04 23:32
>>463
TImage.Picture.SaveToFile(const FileName: string);
とか
TImage.Picture.Icon.SaveToStream(Stream: TStream);
とかあるけど・・・

466 :デフォルトの名無しさん:01/10/04 23:39
>>464
定義済み変数のひとつです(所在はSysInit)

467 :460:01/10/04 23:47
>>465
ありがとうございます。で、さっそく

iconStream : TMemoryStream;

Image1.Picture.Icon.SaveToStream(iconStream);
Application.Icon.LoadFromStream(iconStream);

として実行してみたところ、

ソースパスが見つかりません
Graphics.pas

といわれてしまいました。
ライブラリか何かを指定しなければならないのでしょうか?

468 :デフォルトの名無しさん:01/10/04 23:47
>>466
定数じゃないんですよね。
その管理とかをしなくても、必要なときに使って問題ないんでしょうか?

469 :デフォルトの名無しさん:01/10/05 00:14
>>468 全然問題ないです
VCLの中でも実際に使われています
(CreateWindowExとかで)

470 :デフォルトの名無しさん:01/10/05 00:17
>>467
uses の中に Graphics が入っていないとか?
(Formを使っていれば自動的に書かれているはずですけど)

471 :467:01/10/05 00:22
>>470
usesの中にはGraphicsは入ってました。

ここで無いと言われたGraphics.pasというファイルは、検索しても
確かにありませんでした。
ライブラリかなんかのソースだと思うんですけど、
Delphi6のPersonal版にはついてないんですかね。

で、ためしにコンパイルして実行してみたところ、
アイコンイメージが不正です
といわれてしまいました。
どこか致命的なミスがあるんでしょうね・・・どこでしょう。

472 :ななしヘタぐらま:01/10/05 00:23
>>433
リソースって,リソースファイル?それとも設計時にイメージコンポにいれちゃうこと?

前者ならどんな種類のWindowsビットマップでも読み込めます.
イメージコンポはD5以後だとDIBやJPEGのイメージをそのままの形で格納するようになったようです.

ちなみにD5はRLEの読み込みができないバグがある.要アップデート.

473 :470:01/10/05 00:24
違った・・・usesにGraphicsが入っていなければそのメッセージはでないものね
誰かHELP!

474 :470:01/10/05 00:28
>>471
>アイコンイメージが不正ですといわれてしまいました。
Imageコンポーネントへ絵を読み込んだ時
オブジェクトインスペクタのPictureが(TIcon)となってないと駄目みたいですね

475 :デフォルトの名無しさん:01/10/05 00:29
>>469
ありがとうございました。
これで気兼ねなく使えます(w

476 :467:01/10/05 00:42
>>474
どもです。

Imageコンポーネントに絵を読み込んでるのではなく
自分でまるとか三角とかを描いてるんですけど
そういう場合はアイコンに出来ない、ということでしょうか?

477 :Delモナ:01/10/05 00:45
        / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´∀`) < 最近、気が抜けて駄目だモナー
/)www)   \_______________
'`∨∨´
  ^ ^

>467
ttp://www.users.gr.jp/ml/archive/Delphi/46147.asp
これは、どう?

478 :470:01/10/05 01:12
>>477 参考になりました
イメージリストを使うとは思いつきませんでした
CreateIcon APIでしこしこやるしかないかと思ってましたけど

いずれにせよ初心者スレのレベルを越えてますね

479 :467:01/10/05 01:48
>>477
ありがとうございます。
で、そこを参考にアイコンをまずビットマップに描き、そのあと
ico := TIcon.Create;
il := TImageList.CreateSize(bm.Width, bm.Height);
il.GetIcon( 0,ico );
Application.Icon.Assign(ico); ★
としてみたところ、変な四角がアイコンに設定されてしまいました。

ためしに★部分を
ico.SaveToStream(iconStream);
Application.Icon.LoadFromStream(iconStream);
としてみたところ今度はアイコンイメージが不正、となってしまいました。

う〜ん。あともう少しっぽいなぁ

480 :467:01/10/05 01:50
>>478
私はまだDel2日目の初心者です。if文も書いたこと無いです。
CやJavaなら少しできるけど・・・

481 :467:01/10/05 03:03
>>479
アイコンが本当に出来ていないのかどうか SaveToFileメソッドで
外部に保存して確認してみたところ、きちんと生成できていました。

というわけで、Application.Icon にアイコンを設定するところが
まずかったようです。

Personal版だから・・・なんてことは多分関係ないですね。

482 :467:01/10/05 03:08
ico.SaveToFile('e:\tmp\test.ico');
Application.Icon.LoadFromFile('e:\tmp\test.ico');

のように、外部に一度保存したアイコンを読み込むようにしたら
設定できました。
できれば外部ファイルを使わないで済むいい方法を考えます。

483 :467:01/10/05 03:21
これで最後の書き込みです。
il := TImageList.CreateSize(32, 32);
il.GetIcon( 0,Application.Icon );
と、直接放り込んだらうまく行きました。ありがとうございました。

484 :デフォルトの名無しさん:01/10/05 10:42
>>461
オレは状態の保持によく順序型をつかってますがなにか?

type
 TStatus = (sYes, sNo, sMakura);
var
 Status: TStatus;

Staus := sYes;

if Status in [sYes, sMakura] then begin
 :
end;

case Status of
 sYes: ;
 sNo: ;
 sMakura: ;
end;

他にもっとエレガントな方法ないかね。

>ちなみに VBを使っていたクセで「intInteger、strString、prcProcedure」
>みたいに型を頭に付けるようにしてます。
ハンガリアン記法はMSがよく使ってるけど、あまり言い評判はきかないね。
オレはPointer型のときにpつけるぐらいかな。
あとはVCLのソース風にしてる。

485 :デフォルトの名無しさん:01/10/05 15:16
VCLって何?

486 :デフォルトの名無しさん:01/10/05 15:42
>>485
Visual Component Library
ネタ?

487 :デフォルトの名無しさん:01/10/05 18:37
TThread使っているのですが、あるスレッドではprocedure宣言がちゃんと
出来るのに、もうひとつのスレッドでは「未定義の識別子」と言われてしまいます。

type
 TMyThread = class(TThread)
 public
  procedure SetConfig(var S:String);  // ここだと「未定義」
end;
procedure SetConfig(var S:String);  // ここだと通る
〜〜〜〜〜
procedure TMyThread.SetConfig(var S:String);
begin
 〜
end;
〜〜〜〜〜
procedure Foo;
begin
 SetConfig('A');
end;

のように書いてます。
しかしTMyThreadの定義の外に書いて、「TMyThread.」を消すと
コンパイル出来るようになります。
これはどのような違いなのでしょうか。

488 :デフォルトの名無しさん:01/10/05 20:09
>>487
説明がいまいちよくわからんのだが、
とりあえずスレッドの前に覚えることがたくさんありそうだな。

オブジェクト指向言語は初めてか?
クラスとかスコープとかメソッドとかわかるか?
なんかの参考書でもう少しObject Pascal勉強すれ。


位置から説明すると大変なので、とりあえずヒントを出しておくと。。。
スレッドのオブジェクトは生成してるか?

MyThread1 := TMyThread.Create(False);

とかしていてそのオブジェクトがスコープの範囲内なら

MyThread1.SetConfig('A');

でいける。がんばれ。

489 :488:01/10/05 20:10
>位置から説明すると大変なので、とりあえずヒントを出しておくと。。。

一からだな。

490 :487:01/10/05 23:16
>>488
説明ヘタですいません。(汗
とにかく実践してみてわからないとこがあったら調べるということをやってるので
スコープ、クラス、継承などは浅い理解しかありません。

TMyThread.Create(False);はしてあります。スコープという言葉をヒントに

procedure MyThread.ProcTest;
begin 〜 end;

procedure MyThread.Execute;
begin
 ProcTest; // コンパイル通る
end;

なるほど。同じ MyThreadの範囲でなら大丈夫なのですね。
今作っているのが3つのUnitに別れてまして、

Unit1(MyThread1 を作成)
↓ スレッド起動
Unit2(MyThread2 を作成)
↓ スレッド起動
Unit3

そして Unit3 の中に MyThread2 の内容が書かれています。

Unit2 から MyThread2.ProcTest を呼び出すことは問題なし。
これは Unit2 内で MyThread2 を作成しているから、という理解でいいでしょうか。

問題となっているのは、 MyThread2.ProcTest を Unit1 から
呼び出そうとしている時だったのですが、MyThread2 は Unit2 から
作り出されるものだから Unit1 から見えない場所にある。
これがスコープ範囲外ということなのでしょうか。

そして
type TMyThread2 = class(TThread)
の定義外に書くということは TMyThread2 のものではなく、
プロジェクト全体のグローバルな関数になる。

正しい理解ではないかもしれませんが、なんとなくスコープというものが
わかったような気がします。

491 :長くてスマン:01/10/06 09:24
スコープとは・・・

unit ...;

interface

uses ...;

type
 TFoo = class
  // デフォはpublic.
  procedure ...;
 private
  // クラス(実装部)の内側か,同一ユニットでのみアクセス可.
  procedure ...;
 protected
  // ほぼprivateと同様.但しユニット外からでもサブクラスであればアクセス可.
  procedure ...;
 public
  // どこからでもアクセス可.
  procedure ...;
 published
  // ほぼpublicと同様.実行時型情報を持たせるための物.
  property ...;
 end;

var
 // 他ユニットからアクセス可.
 ...;
const
 // 同上.
 ...;

implementation

var
 // ユニット内でのみアクセス可.
 ...;
const
 // 同上.
 ...;

procedure ...;
var
 // 手続き,関数内でのみアクセス可.
 ...;
const
 // 同上.
 ...;
begin

end;

end.

だいたいはこんなもんだと思うけど,
間違ってたら誰かつっこんでくれ.

492 :デフォルトの名無しさん:01/10/07 00:59
TImageでアニメーションをさせようとしているのですが、
再描画の際にちらついてしまします。
これってどのようにしたら回避できるのでしょうか?

for i := 0 to 10 do begin
 ImageList1.Draw( Image1.Canvas, 0, 0, i );
 Image1.Refresh;
end;

googleって探してるのですが
いまいちこれという回答が見つかりません。

493 :デフォルトの名無しさん:01/10/07 01:01
Image1.DoubleBuffered := True;

494 :492:01/10/07 01:41
ありがとうございます。
Image1.DoubleBuffered := True;
だと未定義になりますが、DoubleBufferedで調べてみたら
http://www.users.gr.jp/ml/archive/delphi/51536.asp
を見つけました。

Form1.DoubleBuffered := True;
とすることでちらつかなくなりました。

495 :ななしヘタぐらま:01/10/07 06:28
>>485
Visual Component Library(びじゅある こんぽーねんと らいぶらりー)の略.

ライブラリーっていうのはプログラミングの世界では
あると便利なプログラムの部品みたいなものを集めたもののこと.
あらかじめ用意されているものは特に基本ライブラリーといわれたりします.
VBとかだとエディットもボタンも言語の一部だけど,
他の言語ではたいてい,基本的な命令や関数以外は基本ライブラリーの形を取っています.

コンポーネントは説明不要ですよね.
エディットコンポ,ボタンコンポ,タイマーコンポ,…その他もろもろです.

ビジュアルというのはここでは
エディットやらボタンやらを実行時と同じイメージで
ポコポコ貼り付けられること.
びじゅあるべーしっく(VB)のびじゅあると同じ意味.
ただし『びじゅあるしぃーぷらすぷらす』(Visual C++)は
なまえこそびじゅあるですが実際は全くそんなことはないので要注意.


>>486
わからなくても無理はないと思うな.

最初に始めた言語がCとかなら別ですが
BASICやDelphiだったりすると
『基本ライブラリ』などという概念を意識することはないでしょうから.
※BASIC系だと意識しない,以前に全てが言語仕様なので
 『基本ライブラリ』自体存在しない…はず.

496 :デフォルトの名無しさん:01/10/07 07:04
Delphi6personalとそれ以外の違いは?
ネット上のフリーのコンポーネントをインストールしようとして、
できないのが多い。
vclieとかfileutil.pasがないと怒られる

497 :Delモナ:01/10/07 07:43
  ≡  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ≡( ´∀`)< JAVA勉強中だモナー
  ≡ ( つ=つ \_________
   ≡| | |\
   ≡(__)_)\
 ≡ ◎ ̄ ̄ ̄ ̄◎

>492
俺は、Form.CanvasにBitbltで直に書き換えている。
バックバッファも自分で管理。面倒だけど自由度あがるしね。

>496
俺もコンポーネント作っているが、エディションに依存するような
コンポーネントは書かない。そもそも使っているのがPersonalだからだけど。
作者に頼んで改良してもらうとかしてもらおう。
それでもダメなら問題個所を修正してしまうのが良いかと。

498 :496:01/10/07 09:31
personalにないファイルを他人から貰うとやばいの?
ていうかフリーのコンポーネントの中に、personalにないが他のエディションに
入ってるファイルを一緒に入れてるのがあったが。
ゴメン、Delphiは使い出したばかりでもっと勉強してから聞きます

499 :デフォルトの名無しさん:01/10/07 11:26
>personalにないファイルを他人から貰うとやばいの?
やばいよ。完全なライセンス違反。
Borlandユーザに犯罪者はいらん。

500 :デフォルトの名無しさん:01/10/07 12:48
>>496
vclieってTWebBrowser関連?
それだったら上のほうで回避策が載ってる。

501 :Delはじめて物語:01/10/07 13:12
「はじめてのDelphi」にかいてある、
「ラベル」っつーのが、Del6personalには無いような気がするんだけど。
どこにあんの?
わかんないんで、StaticTextとか言うやつで代用してる。
ま、それでいまんとこ問題ないけど。

502 :デフォルトの名無しさん:01/10/07 13:14
[Standard]のAって書いてあるやつだよ。

503 :Delはじめて物語:01/10/07 13:20
鬱だ…
こんなもんも見つかんなかったのか…
目の前じゃねーか…

504 :Delはじめて物語:01/10/07 13:24
ちなみに、
LabelとStaticTextって、どう言う風に使われるべきものなの?
「はじめての〜」やった限りでは、
同じように動いてんだけど。

505 :デフォルトの名無しさん:01/10/07 13:35
>>504
>TStaticText はフォーム上にテキストを表示するウィンドウコントロールです。
>
>ユニット
>
>StdCtrls
>
>説明
>
>TStaticText コンポーネントは TWinControl から継承されているためにウィンドウハンドルを持っていることを除けば TLabel に似ています。
>ActiveX のプロパティページのように,コンポーネントのアクセラレータキーがウィンドウコントロールに属さなければならないときは,TLabel のかわりに TStaticText を使います。

506 :デフォルトの名無しさん:01/10/07 15:08
Personal使っているんですが、
FormatMaskText ってないの?
LightReport2 を組み込もうと思ったらFormatMaskTextが未定義ってでるんだよな・・・

507 :名無しさん:01/10/07 18:10
class foo{
static int var;
};
みたいなのはどうすればいいのでしょうか?

508 :デフォルトの名無しさん:01/10/07 18:21
>>507
言語が違うということは,実装方法そのものを変えなきゃいけない。ということ。
「みたいなもの」を何をするために使うの?
その内容によって答えも変わる

509 :496:01/10/07 18:31
>500
TUIWebBrowserの話です
上で思い切りガイシュツだった・・
おかげでインストールできました
この板に感謝!

ただpersonalだからか分かんないけど
インストールできんコンポーネントが多いんだよね・・・
delphian worldにあったextmemoは速攻でインストールできたけど。
作るならリッチテキストエディタの当たりか?
テキストエディタは多すぎるから

510 :>507:01/10/07 18:33
FAQだね。Delphiだとやけに長くなる。
property使わずにTFoo_Value変数に直接アクセスすれば簡単だけど。

interface

type
 TFoo = class
 private
  class function GetValue: Integer;
  class procedure SetValue(const Value: Integer);
 protected
  property Value: Integer read GetValue write SetValue;
 end;

implementation

{ TFoo }
var
 TFoo_Value: Integer; // TFooで使いまわす共通の変数

class function TFoo.GetValue: Integer;
begin
 Result := TFoo_Value;
end;

class procedure TFoo.SetValue(const Value: Integer);
begin
 TFoo_Value := Value;
end;

511 :デフォルトの名無しさん:01/10/07 19:11

            
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!

512 :507:01/10/07 19:49
propertyという修飾子のところを勉強することができました。
ありがとうございます。>>510
Delphiを触りだして2日目なので勘弁してください。>>508

513 :Delモナ:01/10/08 21:29
|
|_∧  モナーッ
|´∀`)
|  /
| /
|/
|

みんな、元気にプログラミングやっているかモナー?

質問とか無いけど、無いことはいい事だ。
みんな悩んでいない証拠だからね。

514 :デフォルトの名無しさん:01/10/08 21:37
人間悩むことをやめたら,それは堕落の始まりである(かもね).

515 :デフォルトの名無しさん:01/10/09 00:08
コードの記述についての質問です。
例えば、変数を宣言する時の記述ですが

1.var i: Integer; // コロン(:)の右側に半角スペース
2.var i : Integer; // コロンの両脇に半角スペース
3.var i:Integer;  // コロンの脇に半角スペース無し
4.var
    i : Integer; // 改行あり

など、人によって記述がまちまちで、
どれを使えばいいのか、混乱してます。
“正しい記述”みたいなものはないんでしょうか。

516 :デフォルトの名無しさん:01/10/09 00:10
>>515
ありません。

517 :デフォルトの名無しさん:01/10/09 00:19
比較的その手の規制が厳しい C に比べて

元が教育用言語のpascalなので、
 極端な書き方さえしなければ 可読性を損なう事は少ないですから

あまり気にする必要はありませんよ >>515

518 :デフォルトの名無しさん:01/10/09 00:25
Del使いは現行Pascal(Borland独自)が標準化されてない点に
ついてとか危惧したりしないの?
将来を不安がったり。
Borland無くなったら、それで終いよ?

519 :デフォルトの名無しさん:01/10/09 00:37
>>518
プログラム言語は別に何でもいい
その時点でもっとも効率が良いと思われるツールを使うだけ

Del使いにはそういうスタンスの人が多いと思うけど

520 :デフォルトの名無しさん:01/10/09 00:39
おまえらVCLが無いと、なんにも出来ないもんな。

521 :デフォルトの名無しさん:01/10/09 00:40
Delphiスレ一つにしろっていっとろうが!
そんなにDelスレ上げまくって楽しいのか?

522 :デフォルトの名無しさん:01/10/09 00:40
何か作ろうとする度に、こういうコンポあります?とか言ってるもんな。

523 :デフォルトの名無しさん:01/10/09 00:40
>>519
同意

524 :デフォルトの名無しさん:01/10/09 00:42
 あっちのスレでまた始まってるよ はやくお戻り >520

525 :デフォルトの名無しさん:01/10/09 00:43
早く某ランドが潰れないかなぁ

526 :Del萬年初心者:01/10/09 00:44
>>519
同意。EXEのみで動くという点でDelを使うことにした。

527 :802:01/10/09 00:44
みなさん数学およびコンピューターサイエンスも忘れずに

528 :デフォルトの名無しさん:01/10/09 02:39
>>522
車輪の再開発を出来るだけ避けたい、ということだから
むしろそういう姿勢は奨励されるのでは?

もちろん、無い時点であきらめる人はダメダメだと思うけどさ。

529 :デフォルトの名無しさん:01/10/09 03:05
カーネルハッカが少ないか、ディストリビューションがないと何もできない
のね、とか、そんな感じ。

530 :デフォルトの名無しさん:01/10/09 11:50
MyThread.OnTerminate := procedure;
みたいにイベント発生時のプロシジャーを指定しますが、
ここで引数を指定する方法はないのでしょうか。

MyThread.OnTerminate := procedure('A','B');
みたいに。

受け渡したいものは事前にグローバル変数に値を入れておいて、
それを読ませるとか素直にやるしかないのでしょうか。

531 :デフォルトの名無しさん:01/10/09 11:52
TMyThreadのフィールドとして持たせればよい。
TMyThread=class(TThread)
public
a, b: Integer;
end;

MyThread.a := 10;
MyThread.Execute;

532 :デフォルトの名無しさん:01/10/09 12:25
>>531
ううむ、やはり引数指定は無理ですか。
教えたいただいたように
TMyThread内のpublicに記述してやるようにします。

533 :名無しヘタぐらまさん:01/10/09 12:33
>>530
>>531 さんの方法でよいと思いますが
(フィールド変数はプロパティにしたほうがいいと思う)
もし引数を渡すイベントがほしいのでしたらそういうイベントを定義して,
継承したクラスに追加します.
以下は処理中の進行をあわせて発生するイベントの例.

TMyProgressEvent = procedure (Sender: TObject; Done, Count: integer) of object;

TMyJob = class(TObject)
private
FOnProgress: TMyProgressEvent;
protected
procedure Progress(Done, Count: integer); virtual;
public
procedure Execute; virtual;
property OnProgress: TMyProgressEvent read FOnProgress write FOnProgress;
end;

// 処理
procedure TMyJob.Execute;
var
i: integer;
begin
for i := 0 to 9999 do
begin
if (i mod 100) = 0 then
Progress(i + 1, 10000);
// 作業
end;
end;

// イベントハンドラが割り当てられていたらそれを呼び出す
procedure TMyJob.Progress(Done, Count: integer);
begin
if Assigned(FOnProgress) then
FOnProgress(self, Done, Count);
end;

534 :Delはじめて物語:01/10/09 13:18
Quick Startとかいう付属ドキュメント見てんだけど、
ActionMenuBarとかActionManagerとかActionToolBarとかが
Personalには付いてないの?
それ使いまくってるんだけど。
そんで見つかんなかったんで、
何か似てる感じのMainMenu,ActionList,ImageList,ToolBarを使ってんだけど。
これで代替可能なんでしょうか?
ドキュメントで言うとおりの挙動にはしたけど。
何かだましだましやってる感じがしてるんで、ちゃんと知っときたいんです。

535 :名無しさん:01/10/09 13:40
Delphi 6 Parsonal を使うにあたってすごくわかりやすいチュートリアルってどこかにありませんか?

ヘルプのヤツって Personal 向けじゃないところがあって・・・

536 :530:01/10/09 14:24
>>533
なるほど、イベントを自分で定義してしまうわけですか。
重要そうなので覚えておくことにします。

すいません、もうひとつ質問です。
例外処理についてなのですが

--------------------
procedure TMyThread.Execute;
begin
 proc0;
 proc1;
end;
--------------------
procedure proc0;
begin
 try
  〜処理〜
 exception
  ErrCode := 1;
 end;
end;
--------------------
というコードで、proc0内部で例外を起こし ErrCode := 1; に入りました。
ここまではいいのですが、何故かその後 proc1 まで実行してしまうのです。
残りはパスして TMyThreadを終了し、メインスレッド内にあるエラー表示処理に
とばしたいのですが継続実行されてしまうのです。

http://www.nifty.ne.jp/forum/fdelphi/faq/00236.htm
を見る限りでは exceptionを書かなければエラーフックしないので
素通りすると思っていたのですが。

ひょっとしてこれは TMyThreadというスレッドのルートで実行
しているからなのでしょうか?

537 :530:01/10/09 14:25
>>536
「exception」→「except」ですね。

538 :デフォルトの名無しさん:01/10/09 14:31
finally と 勘違いしてるように思うよ >>536

エラー処理(except内部)が終ったらその次から実行されるから
その次の隠れたexitを実行して、return するのが正解

539 :デフォルトの名無しさん:01/10/09 14:45
>>536
エラー表示処理というのがよくわかんないが勝手に想像して書くと。

procedure TMyThread.Execute;
begin
 try
  proc0;
  proc1;
 finally
  エラー表示処理(同期処理すること)
 end;
end;

procedure proc0;
begin
 try
  〜処理〜
 exception
  ErrCode := 1;
  raise;// 例外再生成
 end;
end;

540 :539:01/10/09 14:46
「exception」→「except」
間違い。
コピペしたままだった。

541 :530:01/10/09 15:19
>>539
ありがとうございます。わかりました、「raise」でした。
exceptの中を実行して「例外じゃなくなったよ〜」っていう
状態になってたのですね。
raiseで例外再生成することで思い通りの処理になりました!

542 :539:01/10/09 15:30
>>541
わかってよかったな。
エラー表示は同期処理しろよ。

543 :515:01/10/09 16:44
>>516-517
返事が遅れましたが、ありがとうございました。

544 :デフォルトの名無しさん:01/10/11 01:11
なんか書き込みがないな・・・

545 :デフォルトの名無しさん:01/10/11 01:24
じゃあ書きます。
TListboxでhintを出しているのだが
セル(?)を移動してもhintは更新されない・・・
メーリングリストの例でもいまいち理解しきれんかったので誰か教えて・・・

実際aplication.cancelhintを使うタイミングも解らないし・・・

ヒントが出ているかどうか調べるプロパティがあれば処理できるんですが
ヘルプ探しても見つからなかったもので・・・

546 :デフォルトの名無しさん:01/10/11 01:26
sageてどうするよ・・・

547 :デフォルトの名無しさん:01/10/11 02:02
>>545
VCL のヒントは、デフォルトではコントロール単位に定義されている。
マウスポインタをのっけると「私はファイル名一覧でござい」と出るわけだ。
リストボックスの場合、各行はそのままユーザーに見えているので、
(たとえばリストボックスにファイル名が出ているとして)
sample.txt を選択状態にして「sample.txt」というヒントが出ても
別にうれしくないよね?

どの状況でどのようなヒントを出すべきなのかはある程度状況が決定しないと
決められないので、そこまで VCL として対応きれない。

548 :デフォルトの名無しさん:01/10/11 02:28
>545
WM_MOUSEMOVEでは?

549 :545:01/10/11 04:55
自己レス
例ですが、こんな感じでできました。
マウス動かすたびにパパパっとヒントの文字列が変わる・・・感動だ

procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
listbox1.Hint:= inttostr(listbox1.ItemAtpos(point(x,y),true));
Application.ActivateHint(point(x,y));

end;

ヘルプ調べまくりー。
ヒントくれたおかげだかなんだかたどり着けました。
かまってくれてありがとうです。

550 :デフォルトの名無しさん:01/10/11 11:42
スレッドの中からアプリケーション終了処理をさせようと
思ったのですが

Application.Terminate;

をやろうとすると未定義の識別子と言われてしまいます。
メインフォームのほうでは問題ないです。
スレッドの中からは終了させられないのでそしょうか?

551 :デフォルトの名無しさん:01/10/11 13:04
>>550
Applicatoin が未定義なの?
Terminate が未定義なの?

552 :Delあめ猫にゃ:01/10/11 13:16
>>550
uses Forms; ある?

553 :550:01/10/11 13:46
>>551
未定義なのはApllicatironです。
情報少なくてすいません。(汗

>>552
あ、ヘルプのユニットのところに Formsって書いてありますね。
uses に Forms 追加で動作しました。
ありがとうございます。

554 :デフォルトの名無しさん:01/10/11 14:03
スレッドからアプリケーション終了していいんか?

555 :デフォルトの名無しさん:01/10/11 14:22
メインスレッド以外からApplication.Terminate呼ぶのはまずい。
中で呼ばれてるCallTerminateProcsで呼ばれる、登録されていた
終了関数の中に誤動作するものがあるかもしれない。

単にPostQuitMessage(0)するならそういう問題はなさそうだけど
今度はCallTerminateProcs自体が呼ばれない?

メインウィンドウにWM_CLOSEをPostするとかが無難かな?

556 :550:01/10/11 15:36
>>555
スレッド内で処理するデータの中に「これを読んだら終了しなさい」
というキワードを入れておいて、それを読んだら完全にアプリケーションを
終了させたいと思っています。

この場合は TThread.OnTerminate で指定されてる処理をする必要もないので
直接終了させても問題ないかなと思ったのですが、そうでもないのですか。

>メインウィンドウにWM_CLOSEをPostするとかが無難かな?
とは具体的にどのようにやるのでしょう?

557 :デフォルトの名無しさん:01/10/11 16:30
Synchronize でやればそんな気にしなくていいように思うけど? >555

>>556
PostMessage( Handle, WM_CLOSE,0,0);

558 :555:01/10/11 16:39
>>557
けど? と言われても。
確かにSynchronize使えばVCLのスレッドで実行してくれるので安全だね。

559 :550:01/10/11 17:42
>>557
synchronize(CloseQuit);

procedure TMyThyread.CloseQuit;
begin
 PostMessage(Application.Handle, WM_CLOSE, 0, 0);
end;

とやって確かに終了はしますが、アプリケーションエラーが
発生してしまいます。

例外を発生させて途中の処理を省きスレッドをで終了させ
メインスレッドで終了させたほうが安全でしょうか?

560 :デフォルトの名無しさん:01/10/11 17:58
>>559
PostMessageを使うのならsynchronize使わないで
直接実行できるよ。

あと、スレッドはスレッドで自分で終了しないと…

561 :Delあめ猫にゃ:01/10/11 18:03
>>559

560さんに追加するにゃ

555 さんが メインウィンドウにって書いてるにゃ

 渡すハンドルは Form1.Handle にゃ

562 :550:01/10/11 18:37
>>561
Form1.Handle でできました。
ありがとうございます!

563 :550:01/10/12 00:39
>>557
ひょっとして、
PostMessage( Form1.Handle, WM_CLOSE,0,0);
やった場合って Form1 の OnCloseは実行されないのですか?
最後の状態が保存されないのでひょっとしてと思いまして。

564 :_:01/10/12 07:12
パーソナルのパッケージ版を4800円で買えば正規登録ユーザになれるの?
将来アップグレードのときにProfessinal版が安く買えるようになるのかな。
だれか買った人いないですか?

565 :Delあめ猫にゃ:01/10/12 07:43
>>563
  PostMessage(Form1.Handle, WM_CLOSE, 0, 0);
 だけなら OnCloseも OnCloseQuery も呼ばれる

 PostQuitMessage(0); やってると 呼ばれないよ

どっかでやってるとか?

566 :550:01/10/12 09:36
>>565
そうですか。ありがとうございます。
もうちょっと原因を調べてみます。

「あめ猫」…20年前に流行った「なめ猫」を思い出した。(笑

567 :デフォルトの名無しさん:01/10/12 11:16
PostMessageは綺麗じゃないな。

Form1にCloseByThreadメソッドみたいなの作っといて、
そのメソッドで全スレッド終わったか確認して、Form1自身を閉じれば良いじゃない。

568 :550:01/10/12 19:18
>>567
type EExitApp = class(Exception);

〜スレッド内〜
raise EExitApp.Create('ExitApp');

例外作って「終了コマンド受けました」画面を出して
ちゃんと終了させるようにしました。
Delphiが持つ例外処理の考え方って素晴らしい。^_^

569 :デフォルトの名無しさん:01/10/12 21:45
初心者質問で、すいません

FormをCloseで閉じた後、Showで再表示すると
閉じる前に入力していた値が残ってしまいます。

これは、仕様なのでしょうか?

Formを再表示すると、値をクリアしたいのですが、
どのようにすればよいのでしょうか・・・

570 :Delあめ猫にゃ:01/10/12 21:55
あめ猫は消極的反対だにゃ ・・・ どっちでもいいけど・・・・

571 :Delあめ猫にゃ:01/10/12 21:58
間違えた・・・

>>569
showは画面表示だけなんで実際には消えてない

だからOnShowイベント内部で初期化のコードを

572 :569:01/10/12 22:42
Delあめ猫にゃ さん、ありがとうございます。

OnShowイベントに初期化のコードを書いて解決しました。

VBからDelphiに移ろうとしているのですが、
画面の初期化って面倒なんですね。
VBは画面が完全に消えるので、何にも考えてませんでした。

逆に、画面が残っているDelphiの利点ってあるのでしょうか?
Delphiユーザーの方は、みなさん、初期化のコードを書かれている
のですか?

573 :デフォルトの名無しさん:01/10/12 22:51
>>572 正直消えない方が良い。
今日ずっとcloseしたらreleaseされると思いこんでて
どうやって処理しようかと考えていたが・・・ただShowすればいいだけだと今気がついた。

必ず消えるとなったら消えるだけだが、
消えないとなれば必要なときに消せるという選択ができるのでよい。

>FormをCloseで閉じた後、Showで再表示すると
>閉じる前に入力していた値が残ってしまいます。
create と release を使えば次呼んだとき必ず初期化されてない?
初期化コード書くよりは楽だと思うけど・・・どうだろ

574 :デフォルトの名無しさん:01/10/12 23:14
>>572
おらの場合はVBの方が扱いにくい。
Unloadしてもメモリに残ってるし。

DelやBCB(つーかVB以外の言語)みたいに
表示のみなら.Show & .Hide
完全に初期化したいなら.Destroy & .Create(delete & new)
って明示的に宣言した方が管理しやすいと思われ

575 :574:01/10/12 23:16
>>572
追加。

Show & Hideはツールボックスみたいなのを使うとき便利。
AdobeとかMacromediaのUIみたいなやつ。

576 :初心者:01/10/12 23:32
Delphiって、Rubyみたいにオブジェクト指向プログラミングができますか?

577 :デフォルトの名無しさん:01/10/13 00:16
>576
Rubyとはどんな言語なのか、見たことも触ったこともないのですが、
SmallTalkとは、ちょっと違っていて、C++/C#、Javaとはよく似ている
オブジェクト指向言語を搭載しています。

578 :デフォルトの名無しさん:01/10/13 03:52
SetWindowRgn を使ってリージョンは成功したのですが、
これを戻す方法がわかりません。
そんな方法ってありますか?

579 :デフォルトの名無しさん:01/10/13 03:54
>>578
SetWindowRgnのhRgnパラメータをNULLにすればいいんでないの?

580 :デフォルトの名無しさん:01/10/13 05:14
>>579
nilはダメだったのでウィンドウサイズのリージョン作って、戻したように
見せかけてみました。

で、また切り替えボタンでリージョン設定するとなんか形がおかしなことに。
リージョンって何回も変更できないのですか?

581 :デフォルトの名無しさん:01/10/13 06:27
>580
nilはどうして駄目だったの?

582 :デフォルトの名無しさん:01/10/13 13:01
>>581
SetWindowRgn(Handle, nil, True);
とやってみたのですが

[エラー] main.pas(574): 'HRGN' と 'Pointer' には互換性がありません

と言われてしまったのです。ううむ。

583 :Delあめ猫にゃ:01/10/13 13:46
>582 そこでくじけないで
 nilがダメなら 0を試そうよ

584 :デフォルトの名無しさん:01/10/13 15:36
dbExpressを利用してOracleに接続するアプリケーションを作成したのですが、
dbexpora.dllも一緒に配布するのが面倒です。

ヘルプを読んだところ静的リンクをすれば、単一のEXEだけで配布できて(・Д・)ウマーかなと思うのですが、
具体的にどうやればいいのかわかりません。

教えてください。

585 :デフォルトの名無しさん:01/10/13 19:31
CSV形式のテキストファイル(カンマ、改行区切り)は、
どのように行えばよいのでしょうか?

586 :デフォルトの名無しさん:01/10/13 19:42
>>585
CVSファイルに「何を」行うんですか?

分からんので読み書きの方法でも。

読むときは
TStringListのLoadFromFileで読んで、各行をさらに
行用のTStringListのCommaTextで分解、かな。

書くときも同様。SaveToFileで書くだけ

587 :585:01/10/13 20:08
>>586

すいません、読み書きの方法を聞くつもりでしたが、
書き込みの時に、きちんと書いていませんでした。
m(__)mすいません

でも、つたない文章から読み取って頂いて助かりました。
ありがとうございます。

588 :デフォルトの名無しさん:01/10/13 23:20
C++かじってからこっちに来ましたが、

var
const a:Integer=100;{←ここだけ定数で}
b:Integer;{←これは変数のつもり}

とかやって10分ほど悩んだのは私だけでしょうか?

589 :デフォルトの名無しさん:01/10/13 23:43
>>588
悩むのは勝手。
他人の思い込みを書き込まれても共感しないよ。

590 :デフォルトの名無しさん:01/10/13 23:53
どこがおかしいのか2分間気がつかなかったよ

591 :デフォルトの名無しさん:01/10/14 00:15
age

592 :デフォルトの名無しさん:01/10/14 00:16
節ない。

593 :578:01/10/14 01:38
>>583
「0」で戻せました。nilでダメだったと思考が止まってました。

ところでリージョンのデータって一度使用されると破棄されてしまうのでしょうか?
中村拓男氏の NkBitToRgn.pas を使って Bitmapから
リージョンデータを作成し、一度目はうまくいくのですが、
再度そのデータを使ってリージョンをきろうと思ったのですが
反映されてくれないのです。

private、public、protected のどこで定義してもダメでした。

594 :デフォルトの名無しさん:01/10/14 01:48
>>593
APIマニュアル読めー。
一度設定すると所有権がOS側に移るので勝手に解放されるし、
もう自分で操作してはならない。

595 :578:01/10/14 02:35
>>594
ありがとうございます。
ううーん、本格的に組むわけではないのですが
APIマニュアルとかやっぱり必要みたいですね・・・。

596 :デフォルトの名無しさん:01/10/14 04:39
>>595
まずは Delphi 付属の日本語ヘルプを眺めてみることを勧める。
ネットワーク接続が気にならない環境なら、オンライン版 MSDN 日本語版。
ただし、こちらもすべての API が載っているわけではない。

何も最新の API だけを使いたいわけではないだろうし、Win98/Me で動かしたかったら
古いヘルプに載っている範囲の API を使うしかないんだし。

597 :デフォルトの名無しさん:01/10/14 04:45
Tstringlistから空白行を削除したかったのですが

while (stringlist.Items.IndexOf('') >0 ) do
stringlist.Items.Delete(stringlist.Items.IndexOf(''));

とやっても削除されなくて・・・
indexofだと空白は検索されないようですがいい方法ありませんですかね。
もう一つstringlist作って空白じゃなければaddってやるしかないかな・・・
どうも格好悪い気がする。

598 :デフォルトの名無しさん:01/10/14 05:04
For i := stringlist.count - 1 down to 0 do
if StringList[i] = '' then StringList.Delete(I);

動作確認とっていないけど、Sort していなければこれで十分では?

599 :597:01/10/14 05:08
>>598 ありがとうございました。
downto なんて忘れてました・・・
stringlist.items.deleteの時は便利ですね。 indexOf に拘りすぎてたかな・・・

600 :デフォルトの名無しさん:01/10/14 05:12
>0
だと 0 の時は入らないよ。

601 :デフォルトの名無しさん:01/10/14 05:19
>598
その場合も空白は見つけられないよ。

602 :597:01/10/14 05:23
えっ駄目!?
いまほかのところを修正中だからまだ実験してないのでした・・・うーん・・・

603 :デフォルトの名無しさん:01/10/14 05:42
ところで空白行ってどういう行?
そのへんがあいまいな気がします。

604 :デフォルトの名無しさん:01/10/14 05:46
>603
Length(s)=0であるような文字列s

605 :597:01/10/14 05:50
やっぱり>>598で出来たようです。
初心者としてはでかいプログラムになってきたので把握が・・・1000行程度なのになぁ

606 :デフォルトの名無しさん:01/10/14 05:53
>604
それなら
while (stringlist.Items.IndexOf('') >0 ) do
stringlist.Items.Delete(stringlist.Items.IndexOf(''));
で最初の行以外はいけるとおもうけどな。
効率は悪いけど。

598でもOK。

607 :デフォルトの名無しさん:01/10/14 06:00
For i := stringlist.count - 1 down to 0 do
if StringList[i] = '' then StringList.Delete(I);

608 :607:01/10/14 06:01
>>607
げ、操作ミス失敬。コードコピーしていじろうとしてたら送信してしまった。鬱

609 :デフォルトの名無しさん:01/10/14 06:07
while (stringlist.Items.IndexOf('') >= 0 ) do
stringlist.Items.Delete(stringlist.Items.IndexOf(''));
でうまくいかない理由が知りたい。

610 :デフォルトの名無しさん:01/10/14 06:17
>>609
">="ならうまくいくっしょ。
">"だから先頭行が見えないだけ。

611 :デフォルトの名無しさん:01/10/14 06:32
>>609
いや例えば
_index:=stringlist.Items.IndexOf('');
だと _index には必ず -1 が入ってるみたい
空白行があろうが無かろうが。

612 :デフォルトの名無しさん:01/10/14 06:33
無意味に長くしてみたYO(アホ)

firstEmpty := stringlist.IndexOf('');
if firstEmpty >= 0 then
begin
 stringlist.BeginUpdate;

 (* 空行以外を前に詰める *)
 newCount := firstEmpty;
 for i := firstEmpty to stringlist.Count-1 do
  if stringlist[i] <> '' then
  begin
   stringlist[newCount] := stringlist[i];
   Inc(newCount);
  end;

 (* 後ろを全部消す; 一発削除があればいいのに *)
 for i := stringlist.Count-1 downto newCount do
  stringlist.Delete(i);

 stringlist.EndUpdate;
end;

613 :デフォルトの名無しさん:01/10/14 06:41
>611
>_index:=stringlist.Items.IndexOf('');
>だと _index には必ず -1 が入ってるみたい

それは、長さ0の行が無いという事です。

614 :デフォルトの名無しさん:01/10/14 06:45
ありゃ、じゃあデバッグ用のshowmessage入れるところ間違えたかな・・・
ちょっと実験してくるYO。

615 :デフォルトの名無しさん:01/10/14 11:08
StringList.IndexOfはEmptyStrに対応していなかったと思う。

検索文字がEmptyStrならforで頭からEmptyStrを探し
非EmptyStrならIndexOfの値を返すNULL文字対応IndexOf関数を作るとよさそう。

616 :デフォルトの名無しさん:01/10/14 11:26
TStringGrid で任意の行を削除する方法はないのでしょうか?

617 :615:01/10/14 11:45
嘘だった。StringsもStringListもIndexOfはEmptyStrにも対応しているな。

>>616
TStringGridのprotected属性にDeleteRowがあるので
継承して見えるようにしたらよいかも。

type
 TOpenStringGrid = class(TStringGrid);

procedure TForm1.Button1Click(Sender: TObject);
begin
 TOpenStringGrid(StringGrid1).DeleteRow(1);
end;

これだけ1行目が削除されるた。

618 :デフォルトの名無しさん:01/10/14 12:48
>>617

ありがとうございます、行削除できました。

でも、RowCountを増やして行を追加すると、
削除した行が出てくるんですね。(^^;;)びっくり

私の技量では解決できそうもないので、
行を削除する前に、全ての項目値を消してから、削除するようにしました。

お陰で、削除ができました。
ありがとうございます。

619 :デフォルトの名無しさん:01/10/14 13:00
IndexOfの挙動が記憶とどうしても違うので調べてみました。

function TCustomComboBoxStrings.IndexOf(const S: string): Integer;
begin
 Result := SendMessage(ComboBox.Handle, CB_FINDSTRINGEXACT, -1, LongInt(PChar(S)));
end;
なんだよ、このソース!!(unit StdCtrls;)
ComboBoxのItemはIndexOfがAPIだからEmptyStrが誤動作していたのか。
(バグがあったのはComboBoxを使っていた時)
HELPみてもこんなのわからないよ

ListBoxについてもこのようなソースがあるので調べていませんが誤動作しているかも。
このような問題があるので注意です。
function TListBoxStrings.IndexOf(const S: string): Integer;
begin
 if ListBox.Style in [lbVirtual, lbVirtualOwnerDraw] then
  Result := ListBox.DoFindData(S)
 else
  Result := SendMessage(ListBox.Handle, LB_FINDSTRINGEXACT, -1, LongInt(PChar(S)));
end;

ComboBox.Itemsに対して
TCustomComboBoxStrings.IndexOf
ではなく
TStrings.IndexOfを実行させたいと思い
キャストしてみたのですがコンパイルエラーでうまく記述できません。
実際にはどのようにするのがよいのでしょうか?

>>618
StringGrid1.Rows(i).Text := '';
行の項目削除は上のように一行で済みそうです。
StringGrid.Selectionの選択範囲なども気にすると少々面倒になります。
考えてみてください。

620 :デフォルトの名無しさん:01/10/14 15:58
質問ばかりで、すいません。

StringGridで固定行をクリックして、並び替えを行いたいのですが、
固定行をクリックした時に、コマンドボタンのように凹んだような
動作は可能なのでしょうか。

621 :sage:01/10/14 16:48
OwnerDraw でできます

622 :620:01/10/14 18:15
>>621
回答ありがとうございます。
初心者なりに、OwnerDrawについて調べてみました。
デザインや色を変更するなんですね。

これで、クリックの際に凹凸(ボタンの様な動き)と描画するという
ことなのでしょうか?

623 :おにため:01/10/14 18:23
HSPとどっちをやったらいいでしょうか?

624 :_:01/10/14 18:26
>>623
タダだし両方試してみたら?

625 :おにため:01/10/14 18:29
>>624
はい。
HSPあきたらやってみます。

626 :デフォルトの名無しさん:01/10/14 18:37
今日、何度も質問してますが、よろしくおねがいします。
m(__)m

VBからdelphiに移行しようと勉強しているのですが、
どうやれば、VBよりも高い生産性を出せるのでしょうか?

delphiのUnitとVBのグローバルモジュールの違いも、
よくわからない初心者なのです。

マニュアル片手に悪戦苦闘していますが、
delphiってスゴイって体験できる機能を使ってみないと、
いつまでもVBに留まってしまいそうなので・・・
私と同じようにVBから移行された方は、
delphiのどの機能を使って高い生産性を得られているのでしょうか?

627 :デフォルトの名無しさん:01/10/14 19:36
>>626
こないだまでちょろっとVBいじってみましたけど、
何かやるたびにDLLが必要という理由で離れました。

ローカルな環境だけならいいのですが、一般への配布を
考えると DLLのインストールって敷居が高いですから。
バージョン違いの問題とかもあるし。

628 :626:01/10/14 19:50
>>627
回答ありがとうございます。
VBで受託開発をやってますけど、MS-Officのバージョン、
IEのバージョンで全く動作が異なり、私も何度も泣かされました。

配布する事を考えるとexeだけでの配布ができるというのは、
環境に影響されないので、とても魅力的です。

ただ、生産性について、まだ見えないことが多くて・・・

629 :デフォルトの名無しさん:01/10/14 20:27
type
 TFunc = function: boolean of object;

TTest = class
function Func: boolean;
   :
end;

procedure TTest.HogeHoge;
var p: Pointer;
begin
 p := @Func;
  :
end;
エラー: 変数が必要です。

procedure TTest.HogeHoge;
var
 p: Pointer;
 f: TFunc;
begin
 f := Func;
 p := @f;
  :
end;

だと、オッケー。
こんなもんなの?
関数参照使えばいいんだけど、リストなんかの項目でPointerでないとダメだと思って下せえ。

630 :デフォルトの名無しさん:01/10/14 20:27
あげ

631 :629:01/10/14 20:30
 p := @Func;
だとFuncの返却値(boolean)のアドレスになってちまうから仕方ないのか。

632 :デフォルトの名無しさん:01/10/14 21:40
>>626 >>627
一度、VB の事をすっかり忘れると良いと思うな。
VB でああやっていたのに.. と考えちゃうとそこから先に行かない。
VB に限らないけど。

あと生産性云々はコンポーネントを書き換えたり新しく作成できるようにならないと
分からないと思う。転がっているコンポをただ使うだけで満足できるのなら VB の方が
良いかも。

633 :sage:01/10/14 22:55
TMethod

634 :デフォルトの名無しさん:01/10/14 22:55
>>626
おお、同士!
俺は取敢えずVB的でも良いから一つ作ってみる事にしたよ。
OOなんかはその次からって事で...

635 :デフォルトの名無しさん:01/10/15 01:09
>>626
かなり語弊があるかもしれんが
従来のプログラムだと1から10までコーディングして、
OOの場合(VBも含むが)は既存のコンポの機能追加&改造
のみをコーディングするっていうイメージかな。

この辺の扱いを実践出来るようになると、生産性が大幅に上がるYO!

636 :デフォルトの名無しさん:01/10/15 01:14
単純にTStringList、TIniFile、TRegIniFile、TListあたりから
使っていくと便利に思えるのではないでしょうか。
AnchorプロパティやConstrainプロパティなども便利かも。

637 :デフォルトの名無しさん:01/10/15 01:28
>629
@@
はどぉ?

638 :デフォルトの名無しさん:01/10/15 02:34
VBにDelphiのPanelに相当する部品ってあったっけ?

フォームをデザインする際
PanelのAlignプロパティはかなり便利だと思うけど

639 :デフォルトの名無しさん:01/10/15 03:01
>>619
>ComboBox.Itemsに対して
>TCustomComboBoxStrings.IndexOf
>ではなく
>TStrings.IndexOfを実行させたいと思い
>キャストしてみたのですがコンパイルエラーでうまく記述できません。
>実際にはどのようにするのがよいのでしょうか?
>

type
TIndexOfMethod = function(const S: string): Integer of object;

procedure TForm1.Button1Click(Sender: TObject);
var
P: TIndexOfMethod;
begin
P := ComboBox1.Items.IndexOf;
TMethod(P).Code := @TStrings.IndexOf;
Caption := IntToStr(P(''));
end;

640 :デフォルトの名無しさん:01/10/15 09:11
「ヘルプ」の「トピックを検索」で
単語を入力しても一覧に現れないんです。
'ExtactFilePath' とか 'TString' とか。
そのくせ、エディタ上で TString と書いてから F1 を押すと
ちゃんとヘルプが表示されます。

なんとかなりませんか。

641 :デフォルトの名無しさん:01/10/15 09:42
仕様です

642 :Delphi:01/10/15 09:45
まずはバージョンを言いなさい

643 :ななしヘタぐらま:01/10/15 10:25
>>640
綴り,間違ってるヨ.
"ExtractFilePath"
"TStrings"
ヘルプを見るときは正しく売っていたのかもしれませんし
原因が別にあるかもしれませんが
とりあえずもう一度挑戦してみては?

644 :デフォルトの名無しさん:01/10/15 10:43
バージョンは Delphi6 Pro です。

645 :デフォルトの名無しさん:01/10/15 10:55
>>644
さてはOSはWindows9x系だな?

646 :デフォルトの名無しさん:01/10/15 11:25
>>645
ああ、そうそう Kylix ではなくて Delphi です。
どうすればよいのですか。

647 :デフォルトの名無しさん:01/10/15 11:29
サポートに電話しろ。
次の書き込みは、電話してからね♥

648 :デフォルトの名無しさん:01/10/15 11:48
>>626
APIを使うときにいちいち宣言する必要がない。
VBつかってたの2までだから今どうなのか知らないけど。

649 :Delphi超絶技巧キボンヌ:01/10/15 17:24
>>639
わおぅ、わたしのような厨房には超絶技巧にしか見えん

650 :ななしヘタぐらま:01/10/15 18:28
>>626
生産性という意味ならどちらも差はないと思います.
フォームを書くのに見ため通りに作れるし,
自分で書かなければならないコードも少ない.
生産性という売りはVBに対しての言葉じゃないと思う.

ただ,エラー処理という点ではどうですか?
VBは2しか知らないのですが
特にファイルを開く処理に失敗したときのエラー処理,

・デフォルトだとプログラムが終了してしまうので
 エラー処理ルーチンを書かなければならない.
・しかも開く場所ごとに書かなければならない
 (VBはローカルエラー処理はなかったでしょうか?でもそれなら発生場所ごとに分岐が面倒かも)
・エラー処理コードは結構長くてソースが汚い.なんのコードかわかりにくい.

でもDelphiだと

procedure TForm1.Open1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Image1.Picture.LoadFromFile(OpenDialog1.FileName);
end;

このままでOK.読み込みに失敗したらイベント待ちに戻ってくれる.

他のケースで処理ルーチンを書かなければならない場合もありますが,
その場合でもはるかに簡潔にわかりやすく書けますし,
挙動も確実です.
エラー処理でドツボにハマった経験はDelphiでは一度もありません.

651 :デフォルトの名無しさん:01/10/15 19:29
ココハホントウニショシンシャスレナンデスカ?

652 :デフォルトの名無しさん:01/10/15 19:32
>>651
Delphiは初めてだけど、他の環境ではかなりの経験がある
という人も混じっているようですね

プログラムの初心者はモナースレの方がいいのかも

653 :デフォルトの名無しさん:01/10/15 19:42
もう1つ新しいDelphiスレッド立てようよ

654 :明日デビュー:01/10/15 19:55
Delphi Personalなんてものがあったんですね
今日登録してきました
VisualC++によるWindowsアプリの開発で
自分の限界を知ってしまったので
大学入学を機会にプログラミングを止めてしまったのですが
Del厨なるものを大量発生させるDelphiならば
案外楽しめるかもと思い、挑戦してみます

655 :626:01/10/15 21:32
>>632>>634>>635>>636>>638>>648>>650
みなさん、レスありがとうございます。

TStringGridやTIniFileは昨日使って試しました。
かなり便利だと思います。

土日でdelphiに必死に触れてみましたが、生産性については、
よくわかりませんでした。
ですが、私と同じように移行された方がいらっしゃる事と、
いつまでもこのままでは、ずっとVBで悩まされ続けるので、
本格的にdelphiを習得しようと思います。

継承など便利な機能があるのは本から知りましたが、
まだ良さを理解できない初心者なので、
みなさんが言われるように、生産性ってのは
後から実感できるものかもしれません。
(開発するアプリによっても異なるでしょうし)

大変参考になりました。
ありがとうございます。
m(__)m

ちょくちょく質問を書き込むかもしれませんが、
よろしくお願いします。
がんばります。

656 :Delはじめて物語:01/10/15 22:04
汎用関数の作り方が分かりません。
付属ドキュメントにもなんも書いてない。
オーバーロードは書いてあるからあると思うんだが。
どうしたらいいんだろう。

657 :デフォルトの名無しさん:01/10/15 22:28
>>656
テンプレート?
無いよ。

658 : :01/10/16 05:00
なぜか突然クラスを理解できた。override と overload も。
これでやっとオブジェクト'思考'出来るようになったかもしれない
parsonal にもクラス補完機能が欲しい

659 :デフォルトの名無しさん:01/10/16 17:49
質問でつ。
当方VBしかやったことないんですが、移行(フリーのやつへ)は簡単ですか?
操作性が全然違かったりするのでせうか?

660 :デフォルトの名無しさん:01/10/16 18:03
プロフェッショナルへの逝行は簡単です。コンポーネントが増えますから。
フリーのやつは、データベースコンポーネントがカットされてるので、
難しいのではないでしょうか。

661 :デフォルトの名無しさん:01/10/16 18:18
>>660
どうもありがとうございました。

662 :Delはじめて物語:01/10/16 23:04
汎用関数ないんじゃ、
どうやってそれと同じようなことすんの?
やっぱそれなりに必要なもんだと思うけど。

663 :デフォルトの名無しさん:01/10/16 23:16
そんな事するなよカッコわりーな

664 :デフォルトの名無しさん:01/10/17 07:11
すれ立てるほどでもないスレから引っ越してきました。
MediaPlayerで音楽を聴くときに出てくるみょわーんとした
画像ありますよね。あの手のを作りたいのですが、
参考サイトとかありますでしょうか? あまり凝らないで良いです。

ソフトの背景に使いたいのです。

665 :Delあめ猫にゃ:01/10/17 07:32
>>664

 平滑化という処理判るかにゃ?
 Pixels[X, Y] の四方八方の点から 例えば (中央*4+上+下+左+右)/8 みたいにゃ計算の事

オフスクリーンのビットマップTBitmapを2つ用意しといて交互に
 これを繰り返すとモワーとなるにゃ

 動かしたいなら重みを替えてみるにゃ 上の重みを大きくすると上に動くにゃ
 中央にだんだん動くようにしたいなら 重みを中央に向くように変更しておくにゃ
   |
   | ∧
   |⌒∂ にゃ
   | ┃))
   |ー ミ
   |⊂)
   |⌒)   AA貼ると叩かれるかにゃ?

666 : :01/10/17 09:34

      ∧∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 @' ― (,,゚Д゚)つ < AA貼るなゴルァ
   し― ∪     \____________________________

667 :デフォルトの名無しさん:01/10/17 09:47
>>665
この手の処理はMMX使うと早いんだよね。
Del5じゃ使えなかった記憶があるんだけど、
Del6Perとかじゃどうなのかな…


>>666
  ∧_∧  / ̄ ̄ ̄ ̄ ̄
 ( ´∀`)< オマエモナー
 (    )  \_____
 | | |
 (__)_)

668 :デフォルトの名無しさん:01/10/17 09:58
>>667
D5迄だって DB に置換すれば使えたけど
D6からは
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=1002267809&st=237&to=237&nofirst=true
と直接書ける

669 :デフォルトの名無しさん:01/10/17 10:38
>>665
AAより「〜にゃ」口調の方がたたかれると思われ…

670 :Delあめ猫にゃ:01/10/17 11:20
>>669 了解・・・でも時々は使わせて

ところで フォルダオプション->ファイルタイプで出来る関連付けをDelphiのコード
からやりたんだけど 手軽な方法は?

やりたいのは VC++,BCB4,Delphi5,Delphi6 とインストールしてるもんだから
マウス右クリックに open以外に openVC とかを増やしてるんだけど
これインストールの都度やるのメンドクサイ(入れてるフォルダも違うし)から

671 :デフォルトの名無しさん:01/10/17 17:10
VBからだと
Memo1.Lines.LoadFromFile('C:\autoexec.bat');
だけでも便利!と思ったんだがどうよ?
ListBox1.Items.LoadFromFile('C:\\autoexec.bat');
とかも。

672 :Delモナ:01/10/17 17:45
          凵@  ∧_∧  / ̄ ̄ ̄ ̄ ̄
        刧 \(´∀` )< 久しぶりだモナー
      刧刧凵@⊂\⊂ )   \_____
    刧刧刧  | |\|
_刧刧刧刧凵Q(_(__)\______
\  モナー号 一世      ̄          /
  \_______________/

>667
MMXはインラインアセンブラ使うとき。
いくらなんでもアセンブラで書くのは大変でしょ。

俺は、Scanlineを使ってる。
でも、ボカシの処理はどうしても重くなるからアセンブラでやったほうが
良いと思うがやり方が分からないのでやっぱりScanLineでやってる。

重みなんていう考え方があったんだ。はじめて知った。
早速、試してみる。

673 :Delあめ猫にゃ:01/10/17 19:31
>>670 はやっぱりレジストリでやるしかないみたい。
 で、以下のようにして関連付けに追加は出来た
 あと、Delphiのパスを自動的に取得出来ないかな


uses Registry;
function GetExtTypeName(ext:string):string;
begin
Result:='';
with TRegistry.create do try
   RootKey:= HKEY_CLASSES_ROOT;
       if OpenKey(ext, false) then begin
       Result:=ReadString('');
       CloseKey;
       end;
finally Free;End;
end;

procedure AddExtAction(ext,actionName,exePath:string);
var typeName:string;
begin
typeName:=GetExtTypeName(ext);
if typeName='' then raise Exception.Create(ext+'が未登録');
with TRegistry.create do try
   RootKey:= HKEY_CLASSES_ROOT;
 if not OpenKey(typeName, false) then
  raise Exception.Create(ext+'に'+typeName+'が未登録');
   OpenKey('shell\'+actionName+'\command', true);
   WriteString('', exePath+ ' "%1"');
   CloseKey;
 finally Free;End;
end;

使用例
 AddExtAction('.dpr','openDelphi4','C:\Borland\Delphi4\BIN\Delphi32.exe');

674 :Delフサギコ:01/10/17 19:42

      ∧∧____   / ̄ ̄ ̄ ̄ ̄
    /ミ,,゚Д゚ミ ./\< Delphiパスはレジストリ決めうちかも。
  /| ̄∪∪ ̄|\/  \_____
    |____|/ トコトコ
     ,,,,∪∪,,, ,,

HKEY_CURRENT_USER\Software\Borland\Delphi\6.0\App
の値がこれでした
C:\Program Files\Borland\Delphi6\Bin\Delphi32.exe

675 :Delあめ猫にゃ:01/10/17 20:00
>>674
 だめだった D5 にゃ  App なかった

 Delphi32.exe のファイルを検索してパス名で処理しようかな

676 :( ´∀`)さん:01/10/18 03:35
>>675
昼に>>670へのレス書き込もうとしたら書き込めなかった鬱。

>>672
>MMXはインラインアセンブラ使うとき。
>いくらなんでもアセンブラで書くのは大変でしょ。
確かに、漏れみたいにアセンブラ書くスキルがないと大変だけど、
ネットを探せばだいたいサンプルコードとかあるでしょ(w
雑誌でもいいし。

>>673
>Delphiのパスを自動的に取得出来ないかな
Del5Pro Update1。
HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Delphi\5.0
の名前
App
にDelphi32.exeのフルパス発見。

677 :Delあめ猫にゃ:01/10/18 08:01
>>676 おっは〜

そうそうゲームスレで
 http://www.microsoft.com/japan/developer/library/jpgdipf/_win32_alphablend.htm
 こんなの見かけた。 これを1ドットづらしながら実行したら モワモワは出来そう


で、後半の話、やっぱりDel6にはApp あったけど Del5には無かったよ
 なんか>>679関数のテストしてる間に全部登録出来ちゃったからもういいかって


ところで、このスレ なんか常連専用スレになってない?

678 :( ´∀`)さん:01/10/18 08:27
>>677
>やっぱりDel6にはApp あったけど Del5には無かったよ

>>676では Win2k SP2 + Del5 Pro Update1 で確認。
今、Win98 + Del5Pro(Update無) でも確認したけど、やっぱりあったよ。
間違えて消したか、何かの拍子に消されたか、
もしくはインストールに失敗して作成されてなかったか。

同じキーの RootDir って名前の値をとって、しっぽに '\bin\delphi32.exe'
の文字列を足す、いうのは?
漏れはやはり両方で存在を確認したけど。

もしくは実は HKEY_CURRENT_USER と HKEY_LOCAL_MACHINE の間違いだったとか?

とりあえず解決したならそれでヨシ、か。


>ところで、このスレ なんか常連専用スレになってない?
漏れは、Del猫引退(?)の後遺症かしらないが、
ここのところDelスレ全体が活気が少ない気がする。

679 :Delあめ猫にゃ:01/10/18 13:36
確かに後遺症あるよね
 なんか話広げるようなレスは躊躇してしまうというか
 答えだけしか書けないというか

680 :Del初めて物語:01/10/18 13:39
>>663
は?

681 :デフォルトの名無しさん:01/10/18 15:35
>>677
>ところで、このスレ なんか常連専用スレになってない?
そんないことないですよ。
結構頻繁に利用させてもらってます。

そろそろ新しいアプリに挑戦してみたいので
そしたらまたお世話になりたいと思います。

682 :デフォルトの名無しさん:01/10/18 22:08
たまにバジョージョン情報ダイアログで
http://www.〜 とか作者のサイトが書かれてて
それがwebへのリンクになっているラベルとかありますけど、
ああいうコンポーネントってDelphiではあるのでしょうか?

683 :デフォルトの名無しさん:01/10/18 22:10
>>682
Del6だとTBrowseURLアクション

684 :Delモナ:01/10/18 22:21
 ┏━━━━━━━━━━━┓
 ┃100モナ / ̄\ ∧冂∧ .┃
 ┃     |    |( ´∀` )o ┃
 ┃     \_/ (∪   φ) ┃
 ┗━━━━━━━━━━━┛
Del6updateしたモナー。アップデートする前のDelでコンパイルしたEXEは
1301KBだったのに、update後では1200KBまで下がったモナー。
ふざけんじゃないモナー。Debugコードなんか入れて出荷するなモナー。

>682
俺は、TLabelで、カーソル変えさせて色を変えてアンダーバーをつけて、
クリック時に
ExecuteFile('ttp://www.yahoo.co.jp/','', '', SW_SHOW);
みたいにやってるが。似たようなことでmailto:oreore@ore.co.jpみたいなことも
出来る。
ただし、対象マシンで、ブラウザとメーラーがちゃんと設定されてないと出来ないが・・・。

685 :デフォルトの名無しさん:01/10/18 22:22
>>683
残念。TLabel には Action プロパティないんだ。

686 :デフォルトの名無しさん:01/10/18 22:40
>>685
Actionプロパティになくても
ActionListにBrowseURL標準アクションを追加して(BrowseURL1とする)
LabelのOnClickで
BrowseURL1.URL := Label1.Caption;
BrowseURL1.Execute;
するだけっしょ。
フォントとかカーソルとかもそれっぽくプロパティいじれば完了。

687 :682:01/10/18 22:57
なるほど、いくつかやり方があるのですね。
勉強になります。

688 :デフォルトの名無しさん:01/10/19 01:05
>>Delはじめて物語
汎用関数ってどういう関数のこと言ってる?

689 :デフォルトの名無しさん:01/10/19 02:43
グローバルな関数・手続きの事だったりして。

690 :デフォルトの名無しさん:01/10/19 03:02
C++のSTLみたいなのではなく?

691 :del若葉3日目:01/10/19 23:02
プログラムとは違うのですが、
同じ某ランドのc++Builderとdelphiは言語の記述以外に、
何が違うのでしょうか?

delphiを必死に勉強しているのですが、
周りからは「何でc++builderじゃないの?」って聞かれました。

あまり詳しくないので、delphiの評判だけで選んだのですが、
皆さんは、どうしてdelphiを選ばれたのですか?

692 :デフォルトの名無しさん:01/10/19 23:05
質問です。
stringgridで特定のセルの背景色を変えるにはどうしたら良いのでしょうか?
brushというのを使っても変わってくれないのですが・・・

693 :デフォルトの名無しさん:01/10/19 23:44
>>691

某ランドは、Turbo Pascalの昔から Pascalコンパイラの
コンパイル速度が速かった。
今でも、DelphiはC++Bより断然速い。

でもって、新技術の投入は通常まずDelphiで行われ、
それから数ヶ月たってからC++Builderのバージョンに反映される。

そもそも、C++Builderは歴史が浅い。
USではDelphiをVer.1から使っているような連中のコミュニティが活発で、
そこからサードパーティ製のコンポーネントなどが出ているが、
彼らの共通語はObject Pascal であってC++ではない。

C++の方が馴染みがあるというだけでは、
C++Builderのデメリットに勝てない。

かく言う自分は、元C++プログラマで、
GNU C++ => UNIX C / VB / VC++ => Delphi と移ってきたけど
Delphiが一番プログラミングが楽。
なれれば文法は気にならない。


694 :デフォルトの名無しさん:01/10/19 23:54
新技術ってほどでも無い。
ただのマイナーチェンジ・・

695 :_:01/10/20 00:00
>>692
OnDrawCellイベントでCanvasを使って塗る

696 :デフォルトの名無しさん:01/10/20 00:15
質問です。

画面に画像のみを表示するプログラムを作りたいのですが、
新規作成→フォームを削除→project1.dprを編集
で、Image1:=TImage1.Create(?);
のときの「?」の部分にオーナーコンポーネントが必要ということなので、
それも生成しようと考えたのですが、そこでもオーナーコンポーネントが必要ということなので、
もう、どうしたらよいのやら・・・

697 :通りすがり:01/10/20 00:21
>>691
Borlandの好きなように拡張できるからだろ。拡張に変な制約がない。
C++は標準ゆえに言語仕様に手を加えることができない。
C++がCのしがらみもあって、現代的には複雑&低機能な言語仕様のままになってしまっている。

それに比べるとJava,C#,ObjectPascalなんかは「現代的な」機能を備えている。
グローバル関数があったり、GCがなかったりの違いはあるけどね。

698 :デフォルトの名無しさん:01/10/20 00:26
ダイアログのコンポーネントが豊富だけど、なしてフォルダ選択は
標準で付けないの?
何か理由があるのだろうか?
いろんなページでサンプル見たけど、「プラットフォームに依存しまっそ!」って
注意される「なんか古くさい形」のヤツ以外はけっこう複雑(オレには)な
ことしないとダメなのねぇ。不思議。

699 :通りすがり:01/10/20 00:27
SelectDirectory()じゃないのか?

700 :デフォルトの名無しさん:01/10/20 09:23
旧版 SelectDirectory は、デスクトップなどの論理構造を再現できない。
新版 SelectDirectory は、デフォルトで開いているフォルダが指定できない。

701 :デフォルトの名無しさん:01/10/20 09:28
>>696
TImage.Create(nil);

702 :デフォルトの名無しさん:01/10/20 09:38
>>700
sFolder:='C:\なんたらかんたら';
FOptions:=[sdAllowCreate, sdPerformCreate, sdPrompt];
SelectDirectory(sFolder, FOptions, SELDIRHELP);
では?

703 :デフォルトの名無しさん:01/10/20 09:41
ハヤオキスレ

704 :Delあめ猫にゃ:01/10/20 09:57
フォームに、
Win 3.1タブにある
DirectoryListBox
DriveComboBox の2つを貼り付けて
DriveComboBox1.DirList を DirectoryListBox1 に

・・・・ていうのじゃダメですか?>>698

705 :デフォルトの名無しさん:01/10/20 14:58
Object Pascalの言語仕様的にいけてない所、改良・拡張してほしい点などは何かありませんか?

706 :デフォルトの名無しさん:01/10/20 15:09
>>705
begin〜end を {〜} に変更して欲しい。

707 :デフォルトの名無しさん:01/10/20 15:19
>>705

★クライアントサイド最強の Delphi に物申す★
http://piza2.2ch.net/test/read.cgi/tech/1001442200/

 こっちのスレが適当と思います

708 :705:01/10/20 15:25
>>707
THANX

709 :デフォルトの名無しさん:01/10/20 19:09
無料になったBorland Delphi 6 Personal

初めて使った方々、 使い勝手とかどうですか?

710 :デフォルトの名無しさん:01/10/20 20:59
>>706
なんかそれやられたらPascalらしくないなあ。
C#にいっちゃうかも俺。(W

711 :デフォルトの名無しさん:01/10/20 21:00
括弧はいやだ。なぜって?

try

finally

end;

が、

try{

} finally {

}
になってしまうではないか。

try{

finally

}
だと変だろ。
finally が finally begin の意味もかねているから、
begin が存在せず end だけがあっても違和感がないのだ。

括弧なんぞ利用すると、try , finally .. end に複数
命令を書くときはいつでも括弧でくくらなきゃいかん。

712 :デフォルトの名無しさん:01/10/20 21:07
物事には始めと終わりがあるのです。

713 :デフォルトの名無しさん:01/10/20 21:21
Delphi系スレッドだれかロギングしてる人いる?

714 :>713:01/10/20 21:36
google

715 :名無しヘタぐらまさん:01/10/20 22:45
>>691
Delphiを選んだ理由.当時はまだC++Builderはなかった(笑)から.
私は元々仕事でもBASICを使っていたので
Cにこだわる理由はなかったのです.
「C++以外はなじめない」
とか
「C++でないといやだー」
「多重継承マンセー」

というのでなければ
Delphiのほうが良いのではないかと.
VBの実行とほぼ同じ感覚でコンパイルが終わってしまうのは驚異的.

>>698
全く同感.コンポーネントにして標準装備してくれればいいのにね.
結局自分でフォルダ選択コンポを作りました.
(まだバグ有りですが)
ちなみにフリーのフォルダ選択コンポがあったとおもいましたが
あれはフォルダの初期指定,出来たかなぁ..

716 :デフォルトの名無しさん:01/10/20 23:06
>701
とりあえず、実行できました。

ParentにCanvasを持った何か指定しないと表示できないようです?

717 :698:01/10/20 23:21
いろいろ意見レスどうもです。
やっぱり、そー思ってる人はいるんだ。
自分だけかと思った(^^;。
まだ始めたばかりなんで。つーか、無料にしたってのはやはり
大きいなぁ。スゲーぜ>ボー
無料じゃなかったら絶対関心持たなかったもんな。
>>715
コンポーネント自作っスか!スゴイっスね!
なかなか難しいこってす。ハイ。

718 :通りすがり:01/10/21 00:07
>ちなみにフリーのフォルダ選択コンポがあったとおもいましたが
>あれはフォルダの初期指定,出来たかなぁ..

できたよ。

719 :_:01/10/21 01:04
SHBrowseForFolderでいいじゃん

720 :デフォルトの名無しさん:01/10/21 03:25
>>698
これの拡張子をpasに変えてusesすればよろしい。
http://www.geocities.com/Milano/1121/dat/browsefolder.txt

721 :デフォルトの名無しさん:01/10/21 03:28
アドレス間違えた。
http://www.geocities.co.jp/Milano/1121/dat/browsefolder.txt

722 :デフォルトの名無しさん:01/10/21 07:46
>716
bitbltでハンドル使えば転送できるよ

723 :( ´∀`)さん:01/10/21 19:12
>フォルダ選択コンポ
m&i氏のサイトにたしかそんなコンポがあった記憶が…

724 :デフォルトの名無しさん:01/10/21 21:34
だめ、もうわからん。
目的に似たことができるコンポーネント拾って使います。

725 :Delフサギコ:01/10/21 23:07
         _________
  ∧,,∧   /
 ミ,,゚Д゚彡<  これ、フサも使っています
  ミつ つ  \
〜ミ  ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  U U

FolderDialog
http://member.nifty.ne.jp/m-and-i/tips/tipspage.htm

726 :698:01/10/21 23:39
結局、既存のコンポーネントを組み合わせて作っちゃいました<フォルダ選択
やり方のtipsの分かりやすいページがあったんで。
感謝感謝だなぁ<解説ページ
まだまだ分からんこと多いけど(^^;。

>>724
何が分からんのか、どのスレの人か書かんと分からんよ(笑

727 :698:01/10/21 23:39
訂正。「レス」だ…。

728 :デフォルトの名無しさん:01/10/22 17:37
FormのBorderStyleをbsNoneにしたときのフォームの移動でなんかいい方法ありませんか?

729 :デフォルトの名無しさん:01/10/22 17:42
ボーダーが無いウィンドウをマウスで移動したいのなら、どこを
つかんだら移動状態にしたいのかを考えてみなされ。

730 :デフォルトの名無しさん:01/10/22 22:10
フォームをつかんだらってことで、OnMouseDown、Upで
UpのときにTopとLeft変えて移動させてみたんですけど
ボーダーをつかんで移動させるようにはいかないのかな?と・・・

731 :デフォルトの名無しさん:01/10/22 22:13
「タイトルバー ない ウィンドウ 移動」 by google

これ?
http://nt.sakura.ne.jp/~miwaki/progtips/dialog/movedlgbymouse.shtml

732 :デフォルトの名無しさん:01/10/22 23:04
ニフより
if ssLeft in Shift then
begin
ReleaseCapture;
SendMessage(Handle, WM_SYSCOMMAND, SC_MOVE or 2, MakeLong(X, Y));
end;
をOnDownへ (ただし、上にはみ出さない?)

733 :デフォルトの名無しさん:01/10/22 23:21
ニフチってまだ人いるの?

734 :デフォルトの名無しさん:01/10/22 23:53
ニフ、まだまだいるよ。
FDELPHIもまだ結構書き込みあるよ。
あそこは優しい人が多いね。

735 :デフォルトの名無しさん:01/10/22 23:58
>>728
「D6が無料になったんで勉強しだした者」なんですけど(^^;、
不定形リージョンについて解説してるページで解決できそーだと思うんですが、
どーでしょう?

※ここのスレって、どういう時にsage進行にしてるの?

736 :Delフサギコ:01/10/23 02:15
|   |  |     |  | |
|  |゜⌒/..| \ | ゜|
゜ ⌒// ..| ゜ \  ゜  |
| / / | | |ヽ゜ \⌒゜ |
| . ̄ ̄ ̄ ̄|| ̄ ̄ ̄ ̄
 |  ∧ ∧||   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|   ミ,,゚Д゚彡 < ずぶぬれた。寒い!
゜ | ミ∪ Φ  \______________
 | | .ミ ,, ミ   |   |
___.U..U____     ゜


http://www.borland.co.jp/qanda/delphi/d0002348.html

だけどこれだとForm上にコントロールがあるとダメなので

例えばPanel1を押して動かしたいのなら

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
 var Handled: Boolean);
begin
 if (Msg.hwnd = Panel1.Handle)
  and (Msg.message = WM_LBUTTONDOWN) then
 begin
  SendMessage(Self.Handle, WM_SYSCOMMAND, SC_MOVE or 2, 0);
  Handled := True;
 end;
end;

このようにしてもいいかも。
でも>>732さんの方法の方がもっともよさそう。

SendMessageをPanel1.Handleとしても面白い。

>>735
気ままにsage進行

737 :Delフサギコ:01/10/23 02:23
 ∩ ∩
 ミ ゙''゙〜
 ミ∧,,∧  /
 ミ,,゚Д゚彡 < >>730、Formのボーダー?
 U U   \そりは難しい・・・・・・

738 :デフォルトの名無しさん:01/10/23 02:33
WM_NCLBUTTONDOWNひっかければいいと思われ

739 :デフォルトの名無しさん:01/10/23 02:45
>※ここのスレって、どういう時にsage進行にしてるの?
会話が成立している間はsage
話し相手が欲しければage

740 :デフォルトの名無しさん:01/10/23 21:33
基本的な質問ですみません。
宣言した関数を別のオブジェクトで呼び出すにはどうすればいいですか?

741 :デフォルトの名無しさん:01/10/23 21:37
>>740
??
議論対象になりうる具体例きぼん

742 :デフォルトの名無しさん:01/10/23 21:41
>>740
interface 〜 implementation の間で定義した関数類は
その xx.pas のファイル名を uses すると 使う事が出来ます

743 :デフォルトの名無しさん:01/10/23 21:43
procedure TForm1.Button1Click(Sender: TObject);
var
moji:string;
begin
moji:='aiueo';
label1.Caption:= moji;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
moji :string;
begin
label1.Caption:= moji;
button1をクリックした後に同じ関数のmojiを使っているButton2を
クリックしても結果が表示されないのですが・・

744 :デフォルトの名無しさん:01/10/23 21:46
>>743
ネタですか?

745 :デフォルトの名無しさん:01/10/23 21:46
>>743 名前が同じでも メソッド内部に書かれた変数同士は独立です
メソッドの外に書くか、こういう場合は
クラスに書きましょう

付属のサンプルコードを良く見てみましょう

746 :デフォルトの名無しさん:01/10/23 21:49
疑問1

>>743 のコードを見る限り、moji は関数ではない。
変数の事を、単に「関数」と呼び間違えただけなのか、それとも
関数を使おうとして、間違ったコードを書いてしまっただけなのか。

743 のコードが正しいならば、moji をグローバル変数にすれば
良いだけの話ではないか?

747 :デフォルトの名無しさん:01/10/23 22:02
>>746
グローバル変数ですか?
N88-BASICしかやったことの無い自分は昨日
Delphiの無償版を入手したばかりで・・
ありがとうございました。

748 :デフォルトの名無しさん:01/10/23 22:06
>>747 いや、だから クラスのメンバーに書きなさいって
  というかまず、Delphi6\demos の下にある DPRを順に開いてみては
色々試してみては?

749 :デフォルトの名無しさん:01/10/23 22:39
コードの一番上の変数宣言で出来ました。
>>748 ありがとうございます(__)

750 :デフォルトの名無しさん:01/10/23 23:22
タブ型のメモ帳やブラウザなんかをつくるには
TTabControlを使ってるのだと思うが
やっぱりページごとの内容を配列で保存してるのかな?

751 :デフォルトの名無しさん:01/10/23 23:24
TMemoのインスタンスをタブ毎に生成して
TTabControl.Tabs.Objectsに対応するメモを代入しておく

752 :デフォルトの名無しさん:01/10/23 23:35
>751
なるほど。
その場合、タブが1,2,3とあって2を閉じた場合うまくいきますか?

753 :デフォルトの名無しさん:01/10/23 23:43
2を閉じる直前に
(TTabControl.Tabs.Objects[1] as TMemo).Freeする
インスタンスの管理はTTabControlが負うってことにしとけばいいよ

754 :デフォルトの名無しさん:01/10/23 23:48
>753
その方法でやってみます
どうもありがとうございました

755 :デフォルトの名無しさん:01/10/24 22:22
ネット対戦のゲームつくりたいんですけどTClientSocketとTServerSocketをつかえばいいんですよね。
ヘルプはリンク切れ、グーグルはヒットせず……。
すいませんがTClientSocket等の基本的な使い方を教えてください。お願いします。
ひょっとして4800円のパッケージ版には説明書いてます?

756 :デフォルトの名無しさん:01/10/24 23:12
>>755
ソケットとか TCP/IP の知識もってるの?

ないんなら DirectX つかえ

757 :デフォルトの名無しさん:01/10/24 23:23
昨日のTTabControlの続きです。

・ TMemoの親にTTabControlを指定して後処理をまかせる
・ タブを増やすときと減らすときにTabIndexに気を付ける(−1にならないように)
・ 同様にタブの数を0にしないように
・ 切り替え時(OnChange)にTabIndex以外のVisibleをFalseに

と、いった感じに作ってみました。


そこで、新しくタブを増やすときに
procedure TForm1.Button1Click(Sender: TObject);
var
Memo1: TMemo;
begin
 :
 : タブ生成(Create)
 :
TabControl1.Tabs.Objects[TabControl1.Tabs.Count-1]:=Memo1;

としたのですが、これで問題ないでしょうか?

758 :デフォルトの名無しさん:01/10/25 00:21
Memo1 := TMemo.Create(TabControl1);
TabControl1.Tabs.AddObject('newtab', Memo1);

759 :デフォルトの名無しさん:01/10/25 00:41
>>755
正直、コンポーネント(のヘルプ)に頼る必要性はないというか、
それ以前にソケットを意識せずにまともなもん作れんから注意ね。

760 :デフォルトの名無しさん:01/10/25 06:06
>>756
>>759
TCP/IPとソケットですね。そっちから勉強してみます。
サンプルとかあればすぐにできるかなぁと、ちょっと甘かったようです。
ゲームならやはりDirectXなんですね。
でもDelphiXがDelphi6に対応してない…と思ったら方法がありました。
http://turbo.gamedev.net/delphixd6.asp

どうもありがとうございました。

761 :デフォルトの名無しさん:01/10/25 21:48
あのぅ・・・、StringGridのスクロールバーがいつも同じ長さで
マックみたいに使いにくいのですが
あの長さをIEとか普通のアプリみたいに動的にするには
どうすればいいんですか?
それともできないのでしか?

762 :デフォルトの名無しさん:01/10/25 23:09
>>761
Mac でも、サムの幅は変更できるぞ?というか今はほとんどそうだが。

763 :デフォルトの名無しさん:01/10/25 23:17
>>761
そういやそれオレも欲しいでし(藁

764 :デフォルトの名無しさん:01/10/25 23:18
>758
なるほど、そういうやり方がありましたか。

765 :Delフサギコ:01/10/26 11:55
         _________
  ∧,,∧   / >>761 普通はできません。
 ミ,,゚Д゚彡<  前から挑戦しているのだけど上手に作れないの。
  ミつ つ  \ 簡単に実現するならStringGridのScrollBarの真上に
〜ミ  ミ.     ̄TScrollBarを配置して値を設定する方法がいい。
  U U

だから、TScrollBar側からStringGridフックしたり
する必要があったり、いろいろなのね。

一応、ソースを置いておきます。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999294620&res=28


いまなら標準スクロールバーの挙動がわかったから
TScrollBarなど使わずに
StringGrid付属のスクロールバーをコントロールできるかもなあ。

Halbow氏のページを見て勉強したら
俺よりうまく作れるかもね。

766 :デフォルトの名無しさん:01/10/26 13:41
Kylix で C の system の代用になるものって
あるのでしょうか?
C++ Builder からの移植でそこでつまってしまって...

Pascalって TurboPascal 6.0 以来..(^^;

767 :デフォルトの名無しさん:01/10/26 13:54
>>766
Libc.System は?

768 :デフォルトの名無しさん:01/10/26 14:52
>>767

おかげさまで通りました。
ありがとうございます。

769 :デルファイの名無しさん:01/10/26 15:49
ところで、クラスで定義した関数群は、Create でインスタンスが生成されると言うことですが、
同じソース内のクラスで定義していない関数や変数はどうなんでしょう。
Create しなくても、インスタンスは存在してるんでしょうか。
また、複数、Create すると複数のインスタンスが出来るものと思っていますが、その場合は、
クラス定義外の関数は一つだけのインスタンスなんでしょうか。

Delphi を使い出してそこそこ長いんですが、そこんところがちょっと分かっていません。

770 :デフォルトの名無しさん:01/10/26 16:07
>ところで、クラスで定義した関数群は、Create でインスタンスが生成されると言うことですが、
「クラスで定義した関数群」をメソッドだと仮定すると、「Create でインスタンスが生成される」
ことはありません。Create以前に存在し、複数のインスタンスを生成してもメソッドは1つしか
存在しません。

>同じソース内のクラスで定義していない関数や変数はどうなんでしょう。
>Create しなくても、インスタンスは存在してるんでしょうか。
意味がわからない。

>クラス定義外の関数は一つだけのインスタンスなんでしょうか。
「クラス定義外の関数」をメソッドではない手続き・関数だと仮定すると、コードは一つしか存在
しません。

コードとデータの違いがわかってないようですね。
通常、コードは実行時に変更されることはないので、複数持つ必要はありません。

自分の言葉でなくObjectPascal言語ガイドに定義されてる用語を使ってもらえると
理解しやすいんだけど。

771 :デルファイの名無しさん:01/10/26 16:32
どうも意味不明なようですんません。。。

そしたら、コンポーネントなどの類も、uses で記述した時点でそのオブジェクトは
実行ファイルの中に組み込まれる、と言うことでいいんでしょうか?

772 :デフォルトの名無しさん:01/10/26 16:50
>>771
D5で「アプリケーションの新規作成」で出来たプロジェクトをコンパイル。
実行ファイルサイズ 292,864 バイト
上のプロジェクトのuses節にmath、contnrs、mmsystemを追加してコンパイル。
実行ファイルサイズ 292,864 バイト

不要なユニット(手続き・関数・クラス等が呼び出されていない)はリンクされない。
769とは別の話だと思う。

773 :デルファイの名無しさん:01/10/26 17:13
すんません。。。説明が足りないですね。。。。

実は、今、コンポーネント作りにはまってるところでして、コンポーネント中の
クラス定義のメソッドの類は、Create する事で使えるようになるけども、
そのソース中のクラス定義外(グローバルな?)の関数は、そのまま使えるじゃないですか。

>不要なユニット(手続き・関数・クラス等が呼び出されていない)はリンクされない。

とのことですが、このクラス定義外の関数はどうなのでしょう。

1.uses に記述した時点でリンク
2.実際に使用した時点でリンク

のどちらなのでしょう。

また、interface 部で定義していない(つまりは他のソースでは利用できない)
クラス定義外の関数はどうなのでしょうか。

774 :デフォルトの名無しさん:01/10/26 17:32
スマートリンク。って用語で調べるとよし。

775 :デフォルトの名無しさん:01/10/26 17:37
>>773
お願いだから用語を ObjectPascal に準拠しておくれ。

「クラス定義のメソッド」と言わないで単に「メソッド」で通じる。
また 「クラス定義外の関数」と言わないで単に「関数」で通じる。

776 :デフォルトの名無しさん:01/10/26 17:45
とても初心者スレの内容じゃないな。

>とのことですが、このクラス定義外の関数はどうなのでしょう。
>1.uses に記述した時点でリンク
>2.実際に使用した時点でリンク
そこまでは知らないんだけど、恐らく関数やクラス単位でなくユニット単位でリンクするか
どうか決めてると思うので2が正解じゃないかな。

>また、interface 部で定義していない(つまりは他のソースでは利用できない)
>クラス定義外の関数はどうなのでしょうか。
これも同じだと思う。例えばinterface部に定義されたクラス等を他ユニットが参照して
いればimplementation部もまるごとリンクされると思う。

interface部にクラスを定義、implementation部に関数を定義、他ユニットからそのクラスを
参照というプロジェクトを作る
(1)クラスから関数を呼び出してコンパイル。
(2)クラスから関数を呼び出さないでコンパイル。
この(1)と(2)で出来た実行ファイルのサイズを比べてみればわかりそうな。

777 :デフォルトの名無しさん:01/10/26 18:56
>>773
IDE 上でコンパイルするとソースコードの左側に行単位でちっちゃな○が
出たりでなかったりするよね。

それはその行がリンクされたかどうかを示しています。

778 :デルファイの名無しさん:01/10/26 19:57
>>各位。ご回答ありがとうございます。

リンクに関してはそうでしたね。使われた時点でリンクされるんですね。
#昔、アセンブラやってたのでそれは分かります・・・

なんかいつのまにやら、質問の方向が変わってしまったようで、改めてお願いいたします。

>>769 の質問に戻りますが・・・・
コンポーネントなどでは、Createでインスタンスが生成されますが、そのクラスに
登録されていない関数のインスタンスはどういうタイミングで生成されるんでしょうか。

1.最初からすでに(恒久的に?)存在している。
2.使用する時点で生成される??

で、ここで、uses された時点で生成されるのか?と思っていたんですが、使用されない
限りはリンクされないので関係ないですね。
#先の質問は無駄ではなかった・・・・

また、そのコンポーネントが複数生成された場合は、インスタンスも複数生成されますが、
そういう登録外の関数のインスタンスは一つだけなんでしょうか。

779 :初級〜中級レベルの通りすがり:01/10/26 20:18
>>778
たとえば、こんなユニットがある。

unit Unit1;
interface
uses windows, classes;
type
TMyClass = class(TObject)
protected
procedure Method1;
public
constructor Create; override;
destructor Destroy; override;
end;
implementation

procedure NoClassMethod1;
begin
//クラスの外の関数の処理
end;
{ TMyClass }
constructor TMyClass.Create;
begin
inherited;
end;
destructor TMyClass.Destroy;
begin
inherited;
end;
procedure TMyClass.Method1;
begin
//処理1
end;
end.

んで、別のユニットからこのUnit1がusesされ、
TMyClassが使われているとする。
で、コンパイルしたとき
procedure NoClassMethod1;
がリンクされているか、という質問だと理解した。

答えは、リンクされない=exeには含まれない。
関数が使われていない以上、コンパイル時には無視される。

だが、だからといって何でもかんでもusesしたままにしておくのはオススメしない。
initializationなどで使われていると、usesしただけでリンクされてしまうからだ。
(もっともわかりやすい好例はformsユニットだと思われ。一気に300Kは増える。)

長文&多分スマソ。漏れの理解が間違ってたら突っ込み歓迎。

780 :初級〜中級レベルの通りすがり:01/10/26 20:20
× >長文&多分スマソ。
         ↓
○ >長文&駄文スマソ。

本当に駄文でウトゥだ(;´Д`)

781 :Delフサギコ:01/10/26 20:23
  ∧∧  / ̄ ̄ ̄ ̄
  ミ゚Д゚ミ< 関数のインスタンスという言葉が変です。
〜ミUUミ  \____
  ∪∪

関数自体は処理がかかれているだけなので
コンパイル時に決まった値を
プログラム実行時、最初に確保されるに決まってるでしょう。

ただ、関数内でオブジェクトを生成するコードなどがあるばあい
または関数内で構造体を設定する場合などは
どうなるのでしょうね。

こういうときは関数内(で生成した)オブジェクトのインスタンスとか
いうような言い方がいいかと思います。

関数内ローカル変数/ローカルオブジェクトなどは呼び出された時に
確保されているのかな...

関数を出た瞬間、破棄されるなら何も気にすることはないと思います。

782 :通りすがり:01/10/26 20:30
>>778
「登録外の関数」とかいう変な言葉を使ってるから分からなく
なるんじゃないの?ただの関数だよ。Cなどと同じく。
クラスに属する「関数」はメソッド。それだけ。

関数もメソッドも静的に存在してるはず、だが、それがいつメモリ上に
ロードされるかはコンパイラしか知らなくていい。

783 :デフォルトの名無しさん:01/10/26 20:46
>>778
>コンポーネントなどでは、Createでインスタンスが生成されますが、そのクラスに
>登録されていない関数のインスタンスはどういうタイミングで生成されるんでしょうか。

関数のインスタンスってのが全然意味が分からないんだが。
「インスタンス」以外の言葉を使って説明してよ。

>>781
>コンパイル時に決まった値を
>プログラム実行時、最初に確保されるに決まってるでしょう。

これも意味が分からない。関数はあくまでもコード(CPU命令列)だよ。

>関数内ローカル変数/ローカルオブジェクトなどは呼び出された時に
>確保されているのかな...

関数内のローカル変数はスタックに取られますので、関数に突入した時点で
確保されます。スタックなので当然退出時に自動的に解放されます。

ローカルオブジェクトとは object 型? class 型の事だったら自分で
Freeメソッドを呼ばない限り解放されない。

784 :デフォルトの名無しさん:01/10/26 20:51
関数を動的に作る事も当然可能です。
しかし Delphi内部で実際にそれをやっているのは
 MakeObjectInstance  だけです

これはしかし関数を作るというより、関数からメソッドを呼び出す為の
非常に小さなコードを作るだけです

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

>>473>>473>>473>>473>>473>>473>>473>>473>>473
>>473>>473>>473>>473>>473>>473>>473>>473★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)