Borland Delphi初心者用お勉強スレ

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
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
5Tips集: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プロシージャを自前のものでのっとる」ってイメージでいいのかなあ?
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の良いところは、コールバック関数やメッセージを綺麗に隠しているところです。
1211:01/09/21 11:50
新しいクラスを作った場合、メソッドやプロパティの実装に以下の方法があります。

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

※そんなの知ってるよっていう突っ込みなしね
1311:01/09/21 11:52
「a)」のサブクラスに処理を委託する場合、
クラスのメソッドやプロパティをコールするだけで良いのです。
Windowsのメッセージを使ったりするのは、
オブジェクト指向のメリットである隠蔽を台無しにするだけです。
ここで言ってるサブクラスというのは どっちかというとフックですね

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

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

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

ただ、イベントだと設計時には反応出来ないけど、サブクラスでフックした場合は設計時に
も色々と出来て便利という事
15Delギコ:01/09/21 12:06
      ∧∧  >>11 ナンカ カンジワルー
      ( ゚Д゚)
      ∪ |
     〜   つ
       ∪"'

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

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

サンクスじゃねーだろ!サブクラス=フックは大間違い。
オブジェクト指向用語では サブクラスは継承して出来たクラスの方の事だけど

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

というか初心者スレにはその程度の理解でいいと思うが・・・
18Delギコ: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のクラスをそれぞれ派生させながら、
それらにフックを持たせるのは間違ったプログラミングなんだ。
読んでる人みんなに害があるぞ。
2019:01/09/21 13:15
メッセージが綺麗に隠蔽されている(処理を変える場合は、
メッセージハンドラオーバーライド)ので、
それ以外のプログラミングに専念出来るのがDelphiなのに、
このスレを見た人が間違って、
フックをコードに取り込んだらどうするんだよ。
また、これらのコード見た初心者はDelphi使わなくなるよ。
21Delギコ:01/09/21 13:20
 ∩ ∩
 | ∪ | ネコ ハ ネコ ナリニ スナオ
 |  〜
 | ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 |( ,,゚Д゚) < >>19-20 おっしゃること、わからずともないです。はい。
 U U   \________

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

 初心者スレっぽくないので、あっちでやらニャーかい?
確かにVCLでの正しいサブクラスの使い方は WndProc を override する事だと思う

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

でも初心者は暫く遠ざかった方が賢明なのは確かだ
23デフォルトの名無しさん:01/09/21 13:25
VBからDelphi6に移行しようと勉強中なのですが、
複数列のリストボックスに値をセットするには、どうすればよいのでしょうか?

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

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

何か区切り記号が必要なのでしょうか?
>>23
AddItemを使うのなら単にバラだ書けばいいだけ
ListBox1.AddItem('あああああ',nil);
ListBox1.AddItem('いいいいい',nil);
ListBox1.AddItem('ううううう',nil);
25デフォルトの名無しさん:01/09/21 13:28
自分も初心者ですが。

>>23 AddItemを何度もやればいいとかそういうことではなく?
2625:01/09/21 13:29
かぶった…。スミマセン。
27デフォルトの名無しさん:01/09/21 13:30
>>23
どうしても一度にやりたいのなら
ListBox1.Items.CommaText := 'あああああ,いいいいい,ううううう';
28@:01/09/21 13:30
29>23:01/09/21 13:31
これもありかも。最初は使わない方がいいけど。
ListBox1.Items.CommaText := 'あああああ,いいいいい,ううううう'

# どうでもいいけどAddItemの第二引数にデフォルト値nilを設定して欲しい。
3023:01/09/21 13:42
>>24-27>>28
ありがとうございました、早速、試してみました。

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

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

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

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

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

ご指摘の通り修正しました。
でも、何が違うのかわからないので、後から調べてみます。
m(__)mペコリ
>30 大きさを変えてみましょう
3223:01/09/21 13:55
>>31
リストボックスを縦横に大きく広げてみましたけど、一緒でした。
大きさって、リストボックスの大きさですよね。
>>32
逆。縦に縮めてみ。
34デフォルトの名無しさん:01/09/21 14:31
おぉ、嬉しいスレができてる!
ほとんどのことはGoogleればわかるけど、本当に細かいテクは
探すのが難しいからねぇ。
3523:01/09/21 14:47
>>33
ありがとうごいます、できました。

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

てっきり、Accessのリストボックスみたいに、
1データを複数項目で表示させるものかと思ってました。
>35 もしかして オブジェクトインスペクタの Itemesをクリックした事がないとか?
>>35
複数列表示するものって、もしかしてListViewのことかな?
3823:01/09/21 14:56
>>36
クリックしたことがありませんでした・・・
ここに書き込めたんですね。
VBでも同じ事はできたので、最初に探すべきでした。
3923:01/09/21 15:03
>>37
VBには、リストボックスの複数行表示という機能がないので、
てっきり、ListViewとリストボックスの複数行表示は、
同じ機能なのかな・・と勘違いしてました。

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

みなさん、親切に答えていただいて、ありがとうございます。
m(__)m
4023:01/09/21 15:17
何度も質問ばかりですいません。

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

VBで開発していた場合は、基本的にはAccessのMDBを選択してましたが、
Delphiユーザーの皆さんはいかがなのでしょうか?
スタンドアロン限定ならParadoxでしょう

必要なら他のも使えるけど
4223:01/09/21 16:15
>>41
Delphiに付属されているからですよね?
Paradoxを基本的に使用するってことで、勉強していきます。

私が使ってる、Delphi Personalには付いてないみたいですけど・・・
43デフォルトの名無しさん:01/09/21 17:23
Paradoxってまだあるの?
コーレルかどっかに売ったんじゃなかったっけ?
44デフォルトの名無しさん:01/09/21 17:58
そもそもPersonalではデータベースできんのじゃないの?
いや、自前なら可能か?
4523: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に話を振ったのでしゃーないだろ。
5023:01/09/21 19:43
>>47
すいません、そうなんですね。

どうやってできるんですか?
調べたのですが、わからなくて
>50
できないっつーの
46のリンク先見てみな
5223:01/09/21 19:49
>>48>>49
ごめんなさい
DataBaseはSQL-Serverやmdbなど色々とVBの頃に使っていたので、
Delphiではどうなのかなと思ったのでした・・・

まだ、Delphiに触れて間もないので、質問を中級とかに
あげにくかったのでした。 m(__)mすいません
>>50
oo4oとかadoは使えると思われ
DOA(だっけ?)とかはTDataSet継承してるから
Personalだと使えないのか?
この際なんで聞いちゃいますが
Delphi Proに標準でついてくるデータベースはいくつかありますが
それぞれ特徴、性能、利点などを比較した表のようなものは無いでしょうか?
55デフォルトの名無しさん:01/09/21 20:02
>>54
いくつかって・・・
IBの他にも何か付いてるの?
>55
TTableで扱えるデータベースの形式(dBase, Paradox, ...)のことです。
57sage:01/09/21 20:50
Delphi 6 エンタープライズ 60日体験版
を下記キージェネを使えば製品版になります
ぜひご利用ください
http://www.crackbest.net/chcrack/crack/delphi6.exe
58sage: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に乗り換えてみてはいかがでしょう?
>>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
これってやばいんじゃない?
削除依頼出したほうがいいぞ
まずageるなyo>>62
64デフォルトの名無しさん:01/09/22 17:54
新スレになったからか盛り上がりませんな。
みんな初心者卒業?
それとも挫折?
だからタイトルにパソナルを入れろっての。
あまりに初心者すぎて聞くのも恥ずかしい状態なんだな。
67デフォルトの名無しさん:01/09/22 20:17
>>66
それでも良いから質問しなよ。
匿名の利点を最大に。
正直何を作ればいいのかわからない
69デフォルトの名無しさん:01/09/22 20:41
>>68
そうでなくて、作りたいものはないのか?
70デフォルトの名無しさん:01/09/22 20:45
それでは勇気を出して書いてみます。
メモ帳を作ってるんですが、テキストファイルを関連付けて
テキストファイルのダブルクリックで立ち上げたり、ドラッグ&
ドロップで立ち上げたりできるようにするやり方がどうしても
わからないんです。
ドラッグ&ドロップのやり方とかいろんなTipsを見るんですけど
それを実際にどうプログラムに反映させていいのかが謎で…。
71デフォルトの名無しさん:01/09/22 20:45
コンポーネントつくってDelphianWorldに載せたい。
でもコンポーネントって難しい。
なんかいい本ないですか?
>>70
過去ログを読みなさい。
731Rubyユーザ: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 を
見ること。
>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
コンポーネントってそんなに難しいかい?
>77
コンポーネント作成するにはOOP理解してないといけないから
単純なアプリ作成とは別次元の難しさがあると思うよ。

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

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

こんなんでDO?
8070:01/09/22 21:07
質問の書き方が悪かったみたいです。
関連づけ自体はwinのフォルダオプションで手動でするのでも
かまわないんです。
テキストファイルをダブルクリックしても、その内容が
書き込まれないで白紙の状態のメモ帳が立ち上がるのを
なんとかしたいんです。なんか本当に基礎のところからわかってなくてすみません。
8170:01/09/22 21:21
みなさんのレスによれば、どうやらParamStrってのの使い方を
まず勉強する必要があることがわかりました。
ありがとうございます、がんばってみます。
82Delギコ:01/09/22 21:21
 ∧ ∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 (,,゚Д゚)  <  >>80それならParamStrでしょ。
 し  |つ  \___________
〜|  |
  ∪∪
83Delギコ: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
8580:01/09/22 21:35
>>84
うわっ、本家のサイトにそのものズバリ書いてあったんですね。
調べ方がまだまだ不十分でした。ありがとうございました。
86天オ:01/09/22 23:29
xorって何よ?
>>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
自分で試しもしないで質問するのはだめな人間です。
少年よ、己から切り開け!
98Delモナ: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
そんなせこい事言うな。
ここは初心者スレ。おまけにアマが殆ど。
基本的にヘルプを使えるレベルではないと心得るべし。
101Delモナ:01/09/23 10:30
      ___________〆
     _|___|_ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ロ  (´∀`ノ) < みんなD6Personalやってるかモナー?
   | |⊂(w:w:w ) │
  ( O )| | |  \__________
  (  )(___(___)

>ぐるぐる99
ttp://register.borland.co.jp/delphi_personal.htm
ここで登録してくれい
10299:01/09/23 11:49
>>マターリ101
サンクソ、登録した世
今日からオイラはdelマスターだ
103INIファイルの使い方: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.
↑↑↑ここまで
104Delモナ:01/09/23 12:47

 ∧_∧〃つ / ̄ ̄ ̄ ̄ ̄
(  ´∀`)/ < 良スレの予感だモナー
( つ   /   \_____
|  ⌒|
|  (__)
(__)
105デフォルトの名無しさん:01/09/23 14:24
94です。
答えてくださった皆さん、お返事ありがとうございます。
初心者スレとうたっておきながら、質問したら、ヘルプを読めというのは筋違いではないでしょうか?
そのような回答をしていると、このスレッドの存在する意味がないと思うのですが・・・
>61
その程度なら固定長配列&力技=コピペで十分
クラスbとbのインスタンス管理クラスを分けてもいいかも
調子にのんな>94
ここは初心者用スレだが厨房用のスレではない事を知れ、屑厨
>>94
   λ
   ( ヽ  / ̄ ̄ ̄ ̄ ̄
  ( ゚Д゚ )< Rubyはクソです。ゴミ箱逝きです。 いじょ
 (____) \_____
   ヽ(´ー`).ノ
     (  へ)
      く



                      - = ≡三  λ
                  _ = ≡三     ( ヽ  / ̄ ̄ ̄ ̄ ̄
       (´ー`)          = ≡三    ( ゚Д゚ )< この発言をコピペしていただければ幸いです。
      ( ヽ ヽ)         - = ≡三   (____) \_____
      /  >             - = ≡三
109デフォルトの名無しさん:01/09/23 15:10
そのような回答をしていると、このスレッドの存在する意味がないと思うのですが・・・
どうせ105は騙りでしょ。
・・・本物だったらどうしよう
111Delモナ:01/09/23 15:35
    ‖
   ∧‖∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( -д-)  < そんなにみんな怒るなモナー
   |''''''''''''')    \____________
(( |∪| ∪ ))
  (_)_)

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

さあ、どんどん逝こう
こんな事でアゲるな。バカ。

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

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

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

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

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

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

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

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

元から初心者スレなんだから、初心者を表明せずとも
適度に質問するとよいでしょう。
Borland Delphi Personal「超」初心者なんでも教えてクレクレスレ
がひつようだな
115Delギコ: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 --

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

ってな感じでどうよ?
説教くさい2ちゃんねらーは氏ねといいたい
ウザかったら無視してりゃいいだろ
118Delモナ:01/09/23 16:26

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

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

>116
DelphianWorldにIniFileのコンポーネントなかった?
119-:01/09/23 16:30
その画像ならココ
http://members.tripod.co.jp/bingo852/
120Delギコ:01/09/23 16:39
         ∩ ∩
        / // /
        |  〜
        | ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ゴォー.    |(,;゚Д゚) < にゃ・・・にゃーー
   ー    U U   \________
   ー    | ̄ ̄/
   ー   @─@
>DelphianWorldにIniFileのコンポーネントなかった?

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

>・このコンポーネントを置いたフォームのデータは自動的に ini ファイルに保存・復元する。
沢山のFormを管理するときは非常に便利そうだね。
121116:01/09/23 16:44
>>118
このくらいのコンポーネントなら特に難しくはないから、
まーどこかにゃあるだろうな。
「クラスの作りからは知っているけど、コンポーネントの作り方は知らない」
ってような人には勉強がてらやってみたらいいんじゃないかい。
122Delモナ:01/09/23 17:15
   四 | ∧_∧  四  / ̄ ̄ ̄ ̄
  /非L+( ´∀`) | < おばんですモナー
  |∞  /  〒 \|つ   \____
   〕〔  U ‖ |  |
  / 〕 /_‖_| |

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

ノートPC欲しい今日この頃
               
     
――――――――――――――――――――――
番組の途中ですが、臨時ニュースです。
「Rubyはクソです。ゴミ箱逝きです。 いじょ 」
この発言をコピペしていただければ幸いです。
___________   __________
             ‖ \|________   
             ‖ | ON AIR.|
             ‖  ̄ ̄ ̄ ̄
        ./ ̄ ̄θ Λ_Λ
      .../   //(´∀` )/|
     ./      ̄/⊂    ||_/
     | ̄ ̄ ̄ ̄ ̄|  (  ━┳┛
     |_____| /ヽ」┘┻
124103: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のときで一行が折り返されて複数行になるときにうまく選択できません
何か良い方法ありますか?
スペースが消えて見にくくなってしまいました
すみません。
129Delモナ:01/09/23 21:56
 みなさんこんばんわんこそばモナー
\________ _____/
      ┏━┓ |/
      ┛━┗
      ( ´Д`)
     (]づ∀´]つ
     / / :ヽ|
     ´(__)_)
盛岡に行ってわんこそば食おうとしたら大渋滞に巻き込まれて
行けなかった過去がアル

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

>126
やっぱり一々、TreeViewのアイテムを見ていくしか方法は無いかも。
速度的に問題が無いのならこのまま行きましょう。
俺としては、このルーチン以外でやる方法は思いつかないが。
130126:01/09/23 22:02
>>129
> 速度的に問題が無いのならこのまま行きましょう。
うーむ、やはりそうですか…
結構悩みどころなんです。

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

ShellTreeView を使うこの方法だと、UIは非常に
分かりやすくなるのですが、パスを指定してから
フォルダが開くまでのタイムラグが…
131Delモナ:01/09/23 22:19
      ○
      |  \
     [二二二]
 γ⌒ヽ(λ´∀`)   、∞
 /   ∩3\,,,,/[]つ□□
 |   Y__:_)
  \_〔__)__)
サンタモナー。ボランティアでサンタやったことあるモナー。泣かれたモナー。

>126
ウィンドウズが用意しているものは結局遅いです。汎用性が高い分だけ速度が犠牲に。
自前で処理を書いちゃったほうが速くて使い勝手も作りこめば良くなります。
まあ、大変ですが、そこまでやる必要性があれば、やったほうがよろしいかと。
TSellTreeView使うとエラーがでるんですけどなぜですか?
133127:01/09/23 23:05
>>129
回答ありがとうございます。
TMemo以外で試してみます。
134デフォルトの名無しさん:01/09/23 23:28
エラーって、どんなメッセージがでるの?
それを書かなきゃ相手にされないYO、YO、YO
チェキラ
未定義の識別子だろ(藁
>>134
ObjctTypes読み込みエラー:プロパティが無いって言われるYO!
137デフォルトの名無しさん:01/09/24 00:16
>>136
Sage る必要を感じないが...

TShellTreeView の間違い。ってつっこみはおいといて。
コンポーネント貼るだけでエラー?実行時?
138デフォルトの名無しさん:01/09/24 00:16
>136
パッケージをインストールしていないって事か?
139Delギコ:01/09/24 00:26
  ∧ ∧    /
  (,,゚Д゚)  < >>126 ごめんね。
  |⊃ ,⊃   \
〜|  |  ワルギハ ナインダヨ
  ∪∪
ヤッテミルカ
今だ!!140ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
141140:01/09/24 00:34
         
Rubyはクソです。ゴミ箱逝きです。 いじょ
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
142140:01/09/24 00:35

この発言をコピペしていただければ幸いです。
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
143デフォルトの名無しさん:01/09/24 01:30
ブラウザ(あるいはダウンローダ)をデルファイで作る時に参考になる
ページ、御存知無いですかね。
144デフォルトの名無しさん:01/09/24 01:38
>>143
実戦あるのみ。
TWebBrowser と、その Navigate メソッドを参照のこと。
145143:01/09/24 01:53
>>144
ダスか…。
146>145:01/09/24 01:57
こことか
http://members.jcom.home.ne.jp/monazilla/

ちょっと効率悪いかもしれないけど
147143: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
151デフォルトの名無しさん:01/09/24 05:23
Delphi入門者にとっては入門書の存在しないDelphi6 Personalよりも
入門書から詳細なリファレンスまで出揃っている
Delphi5 Learningの方が価値が高いのではないかな。
なのでBorland JapanはDelphi5 Learningの無償ダウンロードを検討すべきだね。
>>151
入門レベルなら、5でも6でも大差ないのでは?
それにしても
Listbox1.Items[Listbox1.itemindex];
ってやるのが冗長だと思う。
Listbox1.selectedItem;
とかにならない物だろうか
もう一個のリストと比べるときに

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

こんなコード見ていると頭が・・・
誰か簡略化できるんなら教えてください・・・
154Delモナ: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にはあるのに….
私だったら数行に分けてでも見やすくするほうを選ぶと思います.
15788: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 ];
いやそれより 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があるかどうか検索してくれるようなのが無かったかな?
162Delギコ: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
ページ数が限られてるのが問題なんでしょう。
また、プロ・上級者とアマ・初心者では「役立つ」レベルが違うので
難しいところ。
まだまだ貧弱な俺は「ふ〜ん」という感じで読んでる。
たまに「ほぉー」とか「へぇー」というのもあるけど。
166Delモナ:01/09/24 21:08
  ∧_∧        / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 |\´ー`)/|  < もっとデルファイの良さを知ってもらうモナー
 ○  \/ζ ○   \__________
 |   |旦 |
 | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |
  |              |

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

VBの限界を悟った人が大量に流れ込んでくることを期待age
167デフォルトの名無しさん:01/09/24 21:13
Delphi使ってる人って新しい言語とかコンパイラを作れるの?
168Delモナ:01/09/24 21:26
 ( ̄ ̄) ̄)
 | | |
 (    )    / ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧_∧   < ネタかモナー?
 (υ´A´ )フゥ  \____________
   U U

>167
別にデルファイ使っていなくても、作れる人は作れます。
俺も勉強してコンパイラみたいの作りたいよ。
ネタにマジレスはイヤだなあ。
169167:01/09/24 21:29
いやネタじゃなくて、
Delphiプログラマーって
開発環境に頼りきったGUIプログラミングしか出来ないの?
それじゃVB厨房と同じだね。
VC使っててもgcc使ってても開発環境に頼らざるを得ないと思うけど。
まさかGUIライブラリを一から構築しなきゃいけないとでも?
デルファイってプログラミングというより
オーサリングやビルディングって感じだよな
メモ帳でpasファイルを書いてコマンドラインからコンパイルすればご満足?
苦行みたいだね。
173Delモナ:01/09/24 21:39

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


167は煽り。無視進行で
>>167は機械語が完璧に使えるのか。
すげえな。
175デフォルトの名無しさん:01/09/24 21:56
前からデルファイ使ってる人は少なくともVB房のように
周りに流されないし、選択する目を持っている人です。
なんでVBにしたの?と聞けば
「使ってる人が多いから」とくるからね。
VBと対決してもフレーム合戦になるだけで不毛なので終了。
俺はVB、VC++、Delphiどれも使ってるし。
開発環境に頼り切らない方法も使えるし、非GUIもできるなんて
みんな知ってる。アホがあおっても無駄。
178デフォルトの名無しさん:01/09/24 22:04
Personal使ってみてるんだけど。
これってUDP使うコンポーネントってないの?
179Delモナ:01/09/24 22:10
   ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( ´∀`) <  明日から会社モナー。イヤだモナー
┌∪┐  )つ  \________
└─┘ ヽ
〃(__人__ノ

>178
ttp://www.kobira.co.jp/sakura/d_net_winsock.htm
フリーのコンポーネントを使えば良いんじゃない?
どうしてもコンパイルがとおらね〜。と思って見返したら、

for i = 0 to 10
なんて書いてた。鬱。エラーメッセージわかりにくいよう。
>179,180
おお、サンクス。早速見てみるわ。
183143:01/09/24 23:12
>>150
遅レスですが、ありがとう!
あれ?Personal って Indy 入っていないんだっけ? >>178, 180
185デフォルトの名無しさん:01/09/24 23:54
178,180じゃないけど。
入ってないと思う。
Personalインストールしたての勉強したてのホヤホヤ君だけど。
186デフォルトの名無しさん:01/09/24 23:56
入ってないから言ってるんだろ178と180は。
TClientSockがあったような
188デフォルトの名無しさん:01/09/25 00:00
>>178
Personal 使うということは Delphi ビギナーですね。
WinSock 使いましょう。
おれは Delphi 党だけど WinSock 使ってる。
189Delphi ビギナー:01/09/25 00:04
>>188
Delphiで、WinSock使う場合、詳しい解説があるページ知りませんか?
191Delphi ビギナー :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 のヘッダファイルを元に自分でインポートユニットを作成する必要があります。
探せばネット上のどこかにあるとは思うけど。
193Delphi ビギナー :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の出力先はどこですか?
>>197
表示−デバッグ−イベントログ
199デフォルトの名無しさん:01/09/25 17:56
>>195
一行一行Pos関数使って調べろ、って事では。
>>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にないんですが...
>>200
まさか本当にそうだとは。
ありがとうございました。
>>201
?WindowsAPIだけど・・・
204デフォルトの名無しさん:01/09/25 18:25
n := AnsiPos('moji',Mylist.text );

って得られらた n から
EM_LINEFROMCHAR みたいに行位置が判ったらチョット便利かな?
205>203:01/09/25 18:30
>表示−デバッグ−イベントログ
ないのはこっちです
>>204
Copy(MyList.Text,1,n)してMyList.Countするか
#13を数える
GExpertsのDebugWindowは?
っていうかこっちもPersonalじゃ使えんのか・・・
208初心者マン:01/09/25 23:27
なんで「:」を付けさせるの?「=」の前に。
>>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
インストールしたコンポーネントって削除出来ないの?
[コンポーネント|パッケージのインストール]でパッケージを削除するか、
パッケージ編集で目的のコンポーネントを削除して再構築。
219デフォルトの名無しさん:01/09/26 01:13
>>218
ふーむ…。ありがちょ。
タイマーセットしてカウントダウンさせたいんだけど
その時間を表示させるにはどうしたらええの?
メーリングリストのカコログ見てたら
マッサージや家事をやってくれるプログラムを作ろうとしている人
がいたんですができるんですか?
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
どうもです。
227Delモナ: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キモ-イ
そんなIDEのエディタがなんて最高でなくてもさ、
初心者から上級者まで満遍なく トータルで
大きなストレスなく使える環境だって事が肝心だと思うよ

とりあえず 編集+コンパイル&goがストレスなく出来れば十分さ
>>224
ありがとやんした。
他のソースからぱくっちゃいました。

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

所々っていうか全体的におかしいんだけど
なんとか作れた・・・ラーメンタイマー如きで徹夜しちゃった。てへっ。
copy con でやってた身としては EDLIN は衝撃的な使いやすさだったが何か?
>>231 ネタだろ CP/MならED MS/DOSならEDLINは最初からあったじゃん!
EDITマンセー

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

あそこら辺は改良したほうが良いと思われ
>>確かにコンポーネントの削除は初心者にはわかりづらい場所にあるな。

初心者じゃないが、使い難い。
でるぴってよんじゃった、てへ
>>236
はげしくがいしゅつ
>>228-229
あのエディタを短期間で作るなんて無理
フリーカーソルだから慣れるまで嫌われるだけであって・・・
239Delギコ:01/09/26 15:24
>>234
   ∧∧     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   (,,゚Д゚)  < コンポを右クリックして削除選んでミー
 @/つ且~~  \___________
  (__ _)
  ダレモガ マチガウ UI カイゼンシテ クレ >>某
240デフォルトの名無しさん:01/09/26 17:57
IDEでTABキー入力した後左カーソルで戻ると
TABコードして戻らずに、TAB幅分のスペースとして戻る時があるんですが、
これってどういう条件のときになるの?

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

どうもTABの扱いがおかしいきがします。
>>240
オプティマルフィルONにしても駄目?
242デフォルトの名無しさん:01/09/26 19:00
ラーメンタイマーな人です。

ラーメンが出来たって表示してビープ音ならして
そのまま閉じたいのですが closeさせると即効で消えてしまって
メッセージが見えません。ウェイト?のやり方を教えてくださいませ。
243240:01/09/26 19:03
>>241
オプティマルフィルONにしても ctrl+I では半角スペースが
挿入されてしまいます。

テキストエディタ慣れしているとTABコードの間にカーソルが
入るのにすごく違和感を感じますが、これは慣れの問題なので
いいですが、インデントが半角スペースになってしまうのは
ちょっと困りものです。(TДT)
Timer1.Interval := 1000;
ってやってイベントハンドラ内でclose
>>243
Ctrl+Iの挙動は俺もマイッタ。
結局、Tab文字は使わず全部半角スペースにすることにした。
でも半角スペースだといろいろ面倒なんだよなー。
246デフォルトの名無しさん:01/09/26 20:28
>>244
ん?
Sleepの方がいいのでわ?
>246
フォームが固まるから駄目
248デフォルトの名無しさん:01/09/26 20:42
>>245
ちゃんとヘルプ読もうぜ
オプティマルフィルは並んだ空白をタブに置換してくれるもの。
タブをタブとして使うのは「タブ文字の使用」
インデントをホンとのタブにしたけりゃスマートタブもきらにゃいけないかな?
249デフォルトの名無しさん:01/09/26 20:58
>>244
あいわかりもうした。
ってそっちではもうやったのでした。
なにか一命令で逝けるのかと思った。

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

>>247
ほうほう。
固まるからダメと・・・。
250Delモナ: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;
252Cだけど:01/09/26 23:23
WinMain関数内でSleep使いましたが何か?
>250-251
イベント駆動なアプリケーションではイベントハンドラからすぐに抜けるのが基本。
安易にループまわしてApplication.ProcessMessages呼びまくっちゃ駄目だよ。
while True do Application.ProcessMessages;はCPUを100%使い切ってしまうはず。
# もちろんゲームなら許されるけど。
254241:01/09/26 23:41
>>248
オプティマルフィルは空白のタブ変換でしたか。
あと「タブ間のカーソル移動」をオフにしたら移動がラクになりました。

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

もしかしてヒマなのかな…。いや、感謝感謝。
258253: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はどぉ?
261253:01/09/27 02:15
>260
それだと精度が低くて時間どおりにループを抜けられないような。
つーかなぜに空ループにこだわる?
TTimerそんなにイヤか?
262Del??:01/09/27 02:34
O   ダバダバ
  ノ[]ヽ
   ノ)

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

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

>>252
なにが?

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

もっと長いスパンだったり、閉じる以外の目的で時間見るんであれば
まずはTTimerとかを使うアプローチを考えたほうがいいが。
そーゆーデリカシーのないUIを作る人はVB使ってください。
265263:01/09/27 02:52
>>264
対話目的(Dialog)ではなく、通知目的(Notification)だろ?
どんな実際的な問題があるってんだ?
SleepはCPUを占有するわけでもないしな。
それが分からないようでしたらあなたにはHSPがお似合いです。
>>266
HSPをバカにするな!お前は「ぴゅう太」がお似合いだ!
>267
あんたにはファミリーベーシックがお似合い。
>>268
お前にゃ電子プロックがお似合い。
270デフォルトの名無しさん:01/09/27 03:37
ぜんぜん初心者スレっぽくないぞよ。
271263: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自体が問題を〜
あーならいまのままがいいですね。
確かにその方が親切ですし。

んで今度は時間が来たらウィンドを最前面に出してやりたいのです。
って教えて君ですな・・・調べてきまっす。
273263:01/09/27 04:12
>>272
最前面に出すという行為も、何かユーザーが操作している
最中に出てくるとユーザーを邪魔することになってしまうので
問題があるんだよね。
そのために、Win98以降では従来の方法で最前面に出そうとしても
タスクバーで名前が点滅するだけに終わるように変更されている。

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

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

従来の方法で最前面に出すだけならばFormStyleプロパティを
fsStayOnTopにしておくだけでOK。
274デフォルトの名無しさん:01/09/27 06:13
データベースの質問です。
IBTableのfilterありますよね。
あれ使って日付型の項目からレコードの絞り込みしたいんですけど
どうやったらいいんですか?
275Delモナギコ:01/09/27 07:01
    ∧∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜´ ( ´∀`)< かなり良い感じーモナーギコー
  uu u u   \_______

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

>274
データーベースは分からないので答えられない・・・。
他の人ヨロシク
276274: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 にはパスを入れるだけにするとか。
282279: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さんの言う通り 不親切なのでやめますた。
287279:01/09/27 13:31
>>285
TMemIniFileですか。なるほどっ!
まさに思い通りのコトができました。
ありがとうございますっ!
288デフォルトの名無しさん:01/09/27 21:33
オープンソースのソフトで、オブジェクト指向プログラミングのいいサンプルないですか?
いくつかフリーソフトのソース見てみたんですが、結構手続き指向?を使ったものがほとんどなので。
>>288
Delphiスレでこういう質問をする意図が読めぬが、
これがDelphiのソースとしてそういうものを読みたいという要望なら、
DelphiのComponentのソース公開されてる奴を探して(いっぱい有る)
そのソースを読むとよかろうと思う。
Component作りは、OOPは避けて通れないので。

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

拙作(内緒)は20個もゴミみてーなComponentが入っている。
ゆえに、さぞかしタメになるだろうな。わははははは。。。。。
290Delモナ: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を使いたいんですが、
使いかたはどこで調べればいいんですか?
ヘルプに何も書いてないですよね?
292Delギコ:01/09/28 01:01
  ∧ ∧    />>290 リンク先のアドイン
  (,,゚Д゚)  < モードレスで
  U  ,つ゛  \Formの位置調整が出来るようにしたいです。
〜|  |
  ∪∪ モーダル & ScreenCenterは ツライッス
>>288
ホットゾヌなどは?大きすぎますか?

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

 ガンバルンバ!
ホトゾヌ依存コンポーネント多すぎてコンパイルできぬ・・・かなしい
具体的にはTUIWebBrowserのコンパイルでつまる・・・
295デフォルトの名無しさん:01/09/28 09:24
TUIWebBrowserインストールしようとしたらrequires vclieのところでつまるし…。
パーソナルではインストールできないとか?
296Delギコ: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
300Delギコ:01/09/28 12:29
今だ!300ゲットォォォォ!!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ

 >>298TabVisibleをFalseにしてみたらど・かしら?
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 でもタイプライブラリのインポートはできると思ったが。
では質問。
何故Delphiが最強なの?
>>302
HELPにのってたんですか。探しが足りなかったです。
ありがとうございました。
306Delギコ:01/09/28 14:21
   ∧∧   / ̄ >>303 サンク--スソデシタカ
@_(,,゚Д゚) <  とりあえずD6Proではタイプライブラリトリコミして
⊂,,__つつ.  \_ ソースをちょこっと修正してライプラリパスを通したりしてたら
             TUIWebBrowserのインストは出来たよ。

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

ちがうかな?
307Delギコ:01/09/28 14:23
     _     >>304
    | ∧ ∧   コンパイルが早いから
    | ( ゚Д゚)
    | ⊂ |  とか逝ってみる。
    | ⊂__ノ@
    | |
>>300
あ、TabVisibleでしたか。
ありがとうです。
309デフォルトの名無しさん:01/09/28 17:12
単にDLLファイルだけが与えられている場合、どのようにしてこのDLLで定義されている関数名や型を知り利用するのでしょうか?
310デフォルトの名無しさん:01/09/28 17:18
>>309
名前は知ることができますが、引数や戻り値の型や呼び出し規約は知ることができません。
適当に当てずっぽうで推測したり、逆アセンブルして解析したり、作者に訊いてみたり、あきらめたりするしかありません。
311295:01/09/28 20:23
皆様ありがとう。
タイプライブラリのインポートは出来たみたいなんですがやはりTUIWebBrowserが
インストールできません…。
どこが悪いのかも把握できてないんでもう少し調査してみます。

…他にもIEコンポを使えるようになるコンポーネントってあるんだろうか…。
パソナルってほとんどのコンポがインストできないよね
313Delモナ: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
つい最近はじめて見ました。結構ハマりますね。
質問なのですが、ユーザーがウインドウのサイズ変更、
最大化をできなくするにはどのようにしたら良いでしょうか?
>>314
プロパティ変えるだけ
ウィンドウがアクティブになってない時にキー入力を取得するにはどうすればいいんでしょむか?
317デフォルトの名無しさん:01/09/28 22:18
>>316
アクティブにすれば良いと思われ
>>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はある。
OnCreateならフォームをダブルクリックしたらすむんじゃないかな
325デフォルトの名無しさん:01/09/28 23:15
>>323
ありがとうございます。
言われた通りにやったらできました。
コンボボックスに別のものが入っていたので表示されてなかったようです。
326・∀・:01/09/28 23:15
・∀・
327317: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」は
別物?勘違いしてるかな?オレ。
329316:01/09/28 23:36
見なさムありあとうございました。
なんとか方向性は見えてきましたハイ。
330キティガイ:01/09/29 07:23
マッサージしたり料理を作ってくれるようなトータルライフサポートアプリケーションを作成したいのです。
しかし標準のコンポーネントではマッサージや料理ができません。
Delphiってだめですね〜。
VC++だと簡単にできるんですよね♪
>>330

おもろないぞ! やっぱ養殖もんはダメだねえ
やっぱ天然 もんのキレが全く無い
332チョコボーイ:01/09/29 07:50
関数 手続きが,まだ理解できません

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

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

おしえてください、また なにか参考に出来るもの おしえてください
俺はクラスとオブジェクト指向が理解できてない。
でもアプリつくれるデルファイマンセー。
解ってないからコンポーネントなんかつくれんがな
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;
337Delギコ: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させたいと言ったほうがわかり易いでしょうか。
ご教授お願いします。
340Delモナ: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コントロールってさ、勝手にフリーソフトとかでつかっちゃっても
いいものなの?
そのコントロールのライセンスによるんじゃないの?
配布権とか。
345339:01/09/30 06:20
>>340-341
>>251を見てみましたが、何が書いてあるのかさっぱりわかりませんでした。
なので、とりあえずSleepを使う事にします。
ありがとうございました。
346デフォルトの名無しさん:01/09/30 09:57
すげえDelphi。
ネイティブだよネイティブなんだよ。
おいら感動して眠いよ。
フォームにfsStayOnTopってありますよね?
あれ、ひとつだけフォーム表示してる時は機能してるんですけど、
二つ目のフォームを表示させると後ろにまわっちゃうんですが、
常に前に表示するにはどうしたらいいんでしょうか?
348デフォルトの名無しさん:01/09/30 11:25
間違ってsageてしまった…
349デフォルトの名無しさん:01/09/30 11:31
>>347
ShowModal で表示したときのこと?
それなら呼び出し元フォームが前になっちゃまずいよ。
350347: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って、直接入力できますか?
>>352
もっと具体的に書いてくれ(;´д`)
354デフォルトの名無しさん:01/09/30 12:54
>>352
ObjectInspector で Options の goEditing を True にすればできる。
& goAlwaysShowEditor=Trueで常に入力キャレットが出ている状態にすることもできる。
ちゃんとヘルプ読んでるのかい?
このくらいのことはヘルプ見ればわかることだと思うよ。
355デフォルトの名無しさん:01/09/30 13:43
>>354 まあ、初心者スレだから

>>352 でも、354の言うとおりだよ
必要なコンポーネントについてはヘルプに目を通して
何ができるのか把握することから始めましょう
356352:01/09/30 14:01
>>353-355
ありがとうございました。
これからは、きちんとヘルプ見ます。
357347: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;
359358:01/09/30 15:03
訂正
誤)・Form1.OnShow ハンドラを以下のように実装する
正)・Form1.OnHide ハンドラを以下のように実装する
360347: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(接続している)が返ってきてしまいます。
362Delギコ:01/09/30 21:01
http://members.jcom.home.ne.jp/monazilla/document/wininetdel.html
 これでダメなら折れしらない。
\___  _________
      ∨
♪   ∧ ∧ ♪
    (,,゚Д゚).  ♪
     |つ[|lllll]).
   〜|  |    Indyにはそういうのないの?
    U U
三本柱が一本になってしまった…。
>>363
誤爆?

ボーランド株式会社が Delphi/CBuilder を捨てて JBuilder に
傾いていることをいっているの?
365361:01/09/30 23:32
>>362
やはり接続できない状態にも関わらず「接続できるよ」になってしまいます。
これってなにをもって「接続できるよ」って判定してるんでしょね?

やはりRASが動いているかどうかでチェックしたほうが確実っぽいです。
しかしその方法が見つかりません・・・
↑のほうでPersonalでTUIWebBrowserを使おうとしてた者ですが…。
タイプライブラリの取り込みがよくわからないままいろいろやってたんですが、
何とかTWebBrowserは取り込むことが出来ました。
ただ、Professional版とはクラス名とかが違う?ので、Pro向けに書かれたコンポとかはかなりソースを修正しないと
インストールできないみたいです。これからチャレンジしてみます。

3行しかコードを書いてないのにブラウザもどきができてちょっと感動。
367366:01/10/01 00:30
TUIWebBrowserのインストールにも成功しました。
コンパイル指令を書き換えて、要求するパッケージ名を書き換えたらできました。

これでパソナるでも色々遊べる〜。
368D6マン:01/10/01 01:01
パーソナル(無償DL版)と無償じゃないヤツの違いってのは、
シェアウェアを作っちゃダメ!ってことだけでやんしたか?
詳しい違いを書いてるページは御存知無いでしょーか?
369デフォルトの名無しさん:01/10/01 01:21
>>368
残念ですが,パーソナルは有償版と無償版は全く同一です。
・印刷されたマニュアルがつくかどうか
・IE5.5 が収録されているかどうか
この二つ以外はバイナリも同じ。ライセンスも同じです。

パーソナルは有償版でも,それで利益を得てはいけません。
370D6マン:01/10/01 01:37
>>369
ありがとザマス。
あら、一緒ザマスか…。
なんか、まだまだ入手したてで全然分からんので遊んでるだけなんだけど、
「『Controls.pas』があらへん」って怒られますのんや。
で、無償版はファイルが足らへんのでは?と思いましたドスエ。
371デフォルトの名無しさん:01/10/01 01:53
>370
Controls.pasは付いていませんよ。
Controls.dcuがあるフォルダへのパスを設定していないのでしょう。

普通にインストールすれば、問題無いと思うのですが。
372D6マン :01/10/01 02:02
>>371
はれま!たびたびありがとザマス。
そーですか…。うーむ。やってみまふ。
どーもです。
373デフォルトの名無しさん:01/10/01 03:33
>>366
TWebBrowser
TUIWebBroeser
のインストール方法教えてください。
374デフォルトの名無しさん:01/10/01 03:49
TWebBrowser を用意してから
TUIWebBroeser をインストールします。
375373:01/10/01 04:38
TWebBrowserは

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

からでいいんでしょうか?
376Delモナ:01/10/01 07:03
          ∧ ∧
   ∧ ∧    (´Д`* )
  (*´Д`)  (     )
  ./  |/ ̄ ̄ ̄ ̄∧ ∧
〜(_ ∧ ∧     (´Д`*)
  /_(*´Д`)_/ (UU )〜
  || ̄/  | ̄ ̄||/┌───────―――
  ||, (___ノ   || <  そうだモナー >375
  /         └───────―――
僕は今の時代のアプリケーションはアイコンが全てだと考えます。
どんなに性能の良いアプリケーションでもアイコンが悪いと糞以下の存在になると思います。
また、どんなに性能の悪いアプリケーションでもアイコンがよければすべて良しということになると思います。
そこで、カコ(・∀・)イイ!アイコンはどうやって作ればいいのでしょうか?
>377
カコイイアイコンが出来るまで、アイコンを描く。
379366: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と書き換える。すべて書き換え終わったらコンパイルが通ってインストール終了。


以上だったはずです。よくわかってない初心者の書くことなので鵜呑みにはしないでね。
詳しい人は捕捉してくれるとありがたいです。
380366:01/10/01 09:06
あ、もちろん↑の記述はDelphi6 Personal版にインストールするときのことです。
Pro以上にインストールするときはソースの修正、タイプライブラリの取り込みは要らないはずです。
>>377
・その1
ドット絵を学ぶ。
del付属のイメージエディタは激烈に使いにくいので、
ちゃんとしたドットエディタを使う。

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

オレは、両方併用派
>>379
ありがたい。
pro版ユーザーだけどインストールできなくて困ってた
383Delギコ: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パーソナルへの移行はどんなメリット、(&デメリット)がありますか?
385D6マン:01/10/01 23:12
>>379
そんな面倒なことしなくても、アチキ、D6無償ザンスが、
インストール出来たんですが…?
はて?
それしないとインストール出来ないんじゃ、アチキにゃ入れられないっスよ。
386373:01/10/02 00:31
>Delモナさん、366さん

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

vclieを消せばよかったのね。vclieって何のためのものなのかな?
387D6マン :01/10/02 00:37
アチキの面目丸つぶれ(藁
おかしいなー??
普通に入ったけど。何が普通かよく分からんが。
ま、いっか。
vclieってナニ?そんなこと言われなかったなぁ。
379の書いたとおりにしても「ShellDocVW_TLB.douが見つかりません」って怒られるんだけど…
何でだろう?
C:\Program Files\Borland\Delphi6\ImportsにShellDocVW_TLB.pasとかdcuとかはある?
なかったらタイプライブラリの取り込みが出来てない。
390D6マン:01/10/02 01:27
「SHDocVw_TLB.pas」ってのはありますな。
dcuもありまふ。
不思議だ。
>>390
インストールしたんじゃないのか?
392D6マン :01/10/02 01:38
>>391
書き方が悪かったザマス。スマソでございます。
「vclieが無いわよアハン」とも言われないし、
何か複雑な書き換えもしなかったのに、インストール出来たのが不思議だと…。
つーか、不思議不思議言うてても意味無いので、アチキはこのネタはこれで終わりにしまッソ。
失礼おば。
393デフォルトの名無しさん:01/10/02 02:07
Delphi6パーソナルをインストールしようとしたら
インストーラーがページ違反(モジュールKERNEL32.DLL)してしまった。
インストールは続行出来そうなんだが、俺の環境が腐っているのか?
394デフォルトの名無しさん:01/10/02 02:09
>>393
常駐全部外しても、それが出るんなら腐ってるのかもな。
>>393
どこら辺で落ちたんだ?
多くの製品が使っている Windows Installer なんだから環境の方に
問題があるんだと思う。
>>392
典型的な役に立たない通りすがり。
いや,2ch だし悪いとはいわないよ。
>>396
役立たず発見!
398D6マン:01/10/02 02:18
>>396
すいませんねぇ。役立たない通りすがりで。
アンタのくだらねーレスも同じってことで、ひとつ。
399393: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したヤツで、ファイル壊れてるんなら
今月号のテックウィンに付録で付いてるよ。
俺それでインストールして何事も無かったよ。
TListView の OnSelectItem イベントなんだけど、
これってクリックして選択した後に一回だけ起きる?
何か2回起きてるんだけど。
しかも、右クリックでも起きるし。
行間が空いていないメモ帳のようなものではなく、Outlook Expressの
メール本文のように行間が空いているテキストエディタを作りたいのですが、
どうやればテキストボックスの行間を設定できるのでしょうか
>>403
一回目のは選択解除されたとき(Selected=False)
2回目のは選択されたとき(Selected=True)のイベント
>>494
シェアウエアでよければ
ttp://member.nifty.ne.jp/~katsuhiko/

のTEditorを使えば マージンの設定が出来ますよ
StringGridのセル内文字列の左右中央寄せってどうすれば設定できますか?
現在レコード型を利用してファイルアクセスを行っています。
これをクラスにして見通しを良くしようと思うのですが
(ファイルアクセスを行うのはこのクラスのみにしたい)
どのように記述すればよいのでしょうか?
クラスのprivate部にレコード型の定義を記述するとエラーが出るようなんですが...
409393:01/10/03 00:56
>>400-402
常駐とっぱらって、Borlamdとベクターか数回ダウンするもクリック一発ページ違反へようこそ。

環境腐ってるみたいだ・・・逝ってきます。
アドバイスくれた方サンクス。
410テックウィンから入れた人:01/10/03 01:02
>>409
そっかー。残念。雑誌からインストール試してもダメなら
いよいよ環境がマズいかもね。
メモリ周りとかは?
411404: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で求めるべし
(あとは自分でバンバン)
413412: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のバグでは?
416403:01/10/03 02:31
>>405
おお、謎は全て解けた!ありがとう!
417Delギコ: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;
419407:01/10/03 17:42
>412 ,>418
どうもありがとうございます。まだよく分からないレベルなんですけど、
わかるまでレス保存しておきます。
420フリーカーソル無効化:01/10/04 00:06
421Cマニア(デル初心者: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使いの方々に、どちらがいいのか聞いてみたいです。
427Delギコ: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];

みたいなことができないのはなぜ?
コンパイルは通るけど実行するとエラーになる????
わけわかめ
>>427
レスありがとうございます。
わかりました、まずはDelphi5入門本を買ってやってみることにします。
>>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

ってやるしかないのでしょうか?
>>434
inまで発見できてるのならもう一歩ですな。
if Now in [A,B] then
436デフォルトの名無しさん:01/10/04 16:44
>>433
Jpeg 使えば劇的に小さくなるが。
437Delモナ:01/10/04 16:52
   ∧_∧  / ̄ ̄ ̄ ̄ ̄
  ( ´∀`)< 久しぶりだモナー
  (    )  \_____
  | | |
  (__)_)

>433
DelphianWorldに[圧縮保存機能付イメージコンポ]ってのがあるから
それを使うとPNG並に小さくなるよ。と言うかZLib使ってるからねえ・・・。
>>435
()ではなく[]でしたか!
ありがとうございます。
EXEをUPXで圧縮というのは後ろ向きかな?
リソースのbmpとかは圧縮効かないのかな?
440434: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

のような感じに・・・。
このへんってマニュアル読んでも見つからないので。
441Delギコ: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
442434: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)にキャストするには?
448446:01/10/04 21:17
>>445
CLXアプリのときはないね。
キャストなんて出来ないよ・・・
>>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) )
をやりたいのです・・・
x := floor(r * Cos(2*Pi/(Sec/60) ))でとおると思う人ー
453デフォルトの名無しさん:01/10/04 21:44
ふーん
x := r * Cos(2*Pi/(Sec/60) )
こういうのVBだととおるんだねー
>>453
すんません。Cでも通ります。ほんとすんません。

>>452
Truncというのを使うことにしました。
Floorは未定義とか言われて弾かれました。ごめんなさい。
455Delギコ: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
なるほど、ありがとうございます。
TImageでいろいろ書いたのをアイコンにしたいです。
やり方がわかったらここに書きます。
461434:01/10/04 23:15
>>443

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

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

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

ちなみに VBを使っていたクセで「intInteger、strString、prcProcedure」
みたいに型を頭に付けるようにしてます。
462433:01/10/04 23:16
>>437
圧縮保存コンポ探してみるです。Thx!
463460: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)
467460:01/10/04 23:47
>>465
ありがとうございます。で、さっそく

iconStream : TMemoryStream;

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

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

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

といわれてしまいました。
ライブラリか何かを指定しなければならないのでしょうか?
>>466
定数じゃないんですよね。
その管理とかをしなくても、必要なときに使って問題ないんでしょうか?
469デフォルトの名無しさん:01/10/05 00:14
>>468 全然問題ないです
VCLの中でも実際に使われています
(CreateWindowExとかで)
470デフォルトの名無しさん:01/10/05 00:17
>>467
uses の中に Graphics が入っていないとか?
(Formを使っていれば自動的に書かれているはずですけど)
471467: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の読み込みができないバグがある.要アップデート.
473470:01/10/05 00:24
違った・・・usesにGraphicsが入っていなければそのメッセージはでないものね
誰かHELP!
474470:01/10/05 00:28
>>471
>アイコンイメージが不正ですといわれてしまいました。
Imageコンポーネントへ絵を読み込んだ時
オブジェクトインスペクタのPictureが(TIcon)となってないと駄目みたいですね
>>469
ありがとうございました。
これで気兼ねなく使えます(w
476467:01/10/05 00:42
>>474
どもです。

Imageコンポーネントに絵を読み込んでるのではなく
自分でまるとか三角とかを描いてるんですけど
そういう場合はアイコンに出来ない、ということでしょうか?
477Delモナ:01/10/05 00:45
        / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´∀`) < 最近、気が抜けて駄目だモナー
/)www)   \_______________
'`∨∨´
  ^ ^

>467
ttp://www.users.gr.jp/ml/archive/Delphi/46147.asp
これは、どう?
478470:01/10/05 01:12
>>477 参考になりました
イメージリストを使うとは思いつきませんでした
CreateIcon APIでしこしこやるしかないかと思ってましたけど

いずれにせよ初心者スレのレベルを越えてますね
479467: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);
としてみたところ今度はアイコンイメージが不正、となってしまいました。

う〜ん。あともう少しっぽいなぁ
480467:01/10/05 01:50
>>478
私はまだDel2日目の初心者です。if文も書いたこと無いです。
CやJavaなら少しできるけど・・・
481467:01/10/05 03:03
>>479
アイコンが本当に出来ていないのかどうか SaveToFileメソッドで
外部に保存して確認してみたところ、きちんと生成できていました。

というわけで、Application.Icon にアイコンを設定するところが
まずかったようです。

Personal版だから・・・なんてことは多分関係ないですね。
482467:01/10/05 03:08
ico.SaveToFile('e:\tmp\test.ico');
Application.Icon.LoadFromFile('e:\tmp\test.ico');

のように、外部に一度保存したアイコンを読み込むようにしたら
設定できました。
できれば外部ファイルを使わないで済むいい方法を考えます。
483467:01/10/05 03:21
これで最後の書き込みです。
il := TImageList.CreateSize(32, 32);
il.GetIcon( 0,Application.Icon );
と、直接放り込んだらうまく行きました。ありがとうございました。
>>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のソース風にしてる。
VCLって何?
>>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');

でいける。がんばれ。
489488:01/10/05 20:10
>位置から説明すると大変なので、とりあえずヒントを出しておくと。。。

一からだな。
490487: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って探してるのですが
いまいちこれという回答が見つかりません。
Image1.DoubleBuffered := True;
494492: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がないと怒られる
497Delモナ:01/10/07 07:43
  ≡  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ≡( ´∀`)< JAVA勉強中だモナー
  ≡ ( つ=つ \_________
   ≡| | |\
   ≡(__)_)\
 ≡ ◎ ̄ ̄ ̄ ̄◎

>492
俺は、Form.CanvasにBitbltで直に書き換えている。
バックバッファも自分で管理。面倒だけど自由度あがるしね。

>496
俺もコンポーネント作っているが、エディションに依存するような
コンポーネントは書かない。そもそも使っているのがPersonalだからだけど。
作者に頼んで改良してもらうとかしてもらおう。
それでもダメなら問題個所を修正してしまうのが良いかと。
498496:01/10/07 09:31
personalにないファイルを他人から貰うとやばいの?
ていうかフリーのコンポーネントの中に、personalにないが他のエディションに
入ってるファイルを一緒に入れてるのがあったが。
ゴメン、Delphiは使い出したばかりでもっと勉強してから聞きます
>personalにないファイルを他人から貰うとやばいの?
やばいよ。完全なライセンス違反。
Borlandユーザに犯罪者はいらん。
>>496
vclieってTWebBrowser関連?
それだったら上のほうで回避策が載ってる。
501Delはじめて物語:01/10/07 13:12
「はじめてのDelphi」にかいてある、
「ラベル」っつーのが、Del6personalには無いような気がするんだけど。
どこにあんの?
わかんないんで、StaticTextとか言うやつで代用してる。
ま、それでいまんとこ問題ないけど。
[Standard]のAって書いてあるやつだよ。
503Delはじめて物語:01/10/07 13:20
鬱だ…
こんなもんも見つかんなかったのか…
目の前じゃねーか…
504Delはじめて物語:01/10/07 13:24
ちなみに、
LabelとStaticTextって、どう言う風に使われるべきものなの?
「はじめての〜」やった限りでは、
同じように動いてんだけど。
>>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;
};
みたいなのはどうすればいいのでしょうか?
>>507
言語が違うということは,実装方法そのものを変えなきゃいけない。ということ。
「みたいなもの」を何をするために使うの?
その内容によって答えも変わる
509496: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;

            
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
512507:01/10/07 19:49
propertyという修飾子のところを勉強することができました。
ありがとうございます。>>510
Delphiを触りだして2日目なので勘弁してください。>>508
513Delモナ:01/10/08 21:29
|
|_∧  モナーッ
|´∀`)
|  /
| /
|/
|

みんな、元気にプログラミングやっているかモナー?

質問とか無いけど、無いことはいい事だ。
みんな悩んでいない証拠だからね。
人間悩むことをやめたら,それは堕落の始まりである(かもね).
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
ありません。
比較的その手の規制が厳しい C に比べて

元が教育用言語のpascalなので、
 極端な書き方さえしなければ 可読性を損なう事は少ないですから

あまり気にする必要はありませんよ >>515
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
何か作ろうとする度に、こういうコンポあります?とか言ってるもんな。
>>519
同意
 あっちのスレでまた始まってるよ はやくお戻り >520
525デフォルトの名無しさん:01/10/09 00:43
早く某ランドが潰れないかなぁ
526Del萬年初心者:01/10/09 00:44
>>519
同意。EXEのみで動くという点でDelを使うことにした。
527802:01/10/09 00:44
みなさん数学およびコンピューターサイエンスも忘れずに
528デフォルトの名無しさん:01/10/09 02:39
>>522
車輪の再開発を出来るだけ避けたい、ということだから
むしろそういう姿勢は奨励されるのでは?

もちろん、無い時点であきらめる人はダメダメだと思うけどさ。
カーネルハッカが少ないか、ディストリビューションがないと何もできない
のね、とか、そんな感じ。
530デフォルトの名無しさん:01/10/09 11:50
MyThread.OnTerminate := procedure;
みたいにイベント発生時のプロシジャーを指定しますが、
ここで引数を指定する方法はないのでしょうか。

MyThread.OnTerminate := procedure('A','B');
みたいに。

受け渡したいものは事前にグローバル変数に値を入れておいて、
それを読ませるとか素直にやるしかないのでしょうか。
TMyThreadのフィールドとして持たせればよい。
TMyThread=class(TThread)
public
a, b: Integer;
end;

MyThread.a := 10;
MyThread.Execute;
>>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;
534Delはじめて物語: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 向けじゃないところがあって・・・
536530: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というスレッドのルートで実行
しているからなのでしょうか?
537530:01/10/09 14:25
>>536
「exception」→「except」ですね。
finally と 勘違いしてるように思うよ >>536

エラー処理(except内部)が終ったらその次から実行されるから
その次の隠れたexitを実行して、return するのが正解
>>536
エラー表示処理というのがよくわかんないが勝手に想像して書くと。

procedure TMyThread.Execute;
begin
 try
  proc0;
  proc1;
 finally
  エラー表示処理(同期処理すること)
 end;
end;

procedure proc0;
begin
 try
  〜処理〜
 exception
  ErrCode := 1;
  raise;// 例外再生成
 end;
end;
540539:01/10/09 14:46
「exception」→「except」
間違い。
コピペしたままだった。
541530:01/10/09 15:19
>>539
ありがとうございます。わかりました、「raise」でした。
exceptの中を実行して「例外じゃなくなったよ〜」っていう
状態になってたのですね。
raiseで例外再生成することで思い通りの処理になりました!
542539:01/10/09 15:30
>>541
わかってよかったな。
エラー表示は同期処理しろよ。
543515:01/10/09 16:44
>>516-517
返事が遅れましたが、ありがとうございました。
なんか書き込みがないな・・・
じゃあ書きます。
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では?
549545: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 が未定義なの?
552Delあめ猫にゃ:01/10/11 13:16
>>550
uses Forms; ある?
553550:01/10/11 13:46
>>551
未定義なのはApllicatironです。
情報少なくてすいません。(汗

>>552
あ、ヘルプのユニットのところに Formsって書いてありますね。
uses に Forms 追加で動作しました。
ありがとうございます。
スレッドからアプリケーション終了していいんか?
メインスレッド以外からApplication.Terminate呼ぶのはまずい。
中で呼ばれてるCallTerminateProcsで呼ばれる、登録されていた
終了関数の中に誤動作するものがあるかもしれない。

単にPostQuitMessage(0)するならそういう問題はなさそうだけど
今度はCallTerminateProcs自体が呼ばれない?

メインウィンドウにWM_CLOSEをPostするとかが無難かな?
556550:01/10/11 15:36
>>555
スレッド内で処理するデータの中に「これを読んだら終了しなさい」
というキワードを入れておいて、それを読んだら完全にアプリケーションを
終了させたいと思っています。

この場合は TThread.OnTerminate で指定されてる処理をする必要もないので
直接終了させても問題ないかなと思ったのですが、そうでもないのですか。

>メインウィンドウにWM_CLOSEをPostするとかが無難かな?
とは具体的にどのようにやるのでしょう?
Synchronize でやればそんな気にしなくていいように思うけど? >555

>>556
PostMessage( Handle, WM_CLOSE,0,0);
558555:01/10/11 16:39
>>557
けど? と言われても。
確かにSynchronize使えばVCLのスレッドで実行してくれるので安全だね。
559550:01/10/11 17:42
>>557
synchronize(CloseQuit);

procedure TMyThyread.CloseQuit;
begin
 PostMessage(Application.Handle, WM_CLOSE, 0, 0);
end;

とやって確かに終了はしますが、アプリケーションエラーが
発生してしまいます。

例外を発生させて途中の処理を省きスレッドをで終了させ
メインスレッドで終了させたほうが安全でしょうか?
>>559
PostMessageを使うのならsynchronize使わないで
直接実行できるよ。

あと、スレッドはスレッドで自分で終了しないと…
561Delあめ猫にゃ:01/10/11 18:03
>>559

560さんに追加するにゃ

555 さんが メインウィンドウにって書いてるにゃ

 渡すハンドルは Form1.Handle にゃ
562550:01/10/11 18:37
>>561
Form1.Handle でできました。
ありがとうございます!
563550:01/10/12 00:39
>>557
ひょっとして、
PostMessage( Form1.Handle, WM_CLOSE,0,0);
やった場合って Form1 の OnCloseは実行されないのですか?
最後の状態が保存されないのでひょっとしてと思いまして。
564_:01/10/12 07:12
パーソナルのパッケージ版を4800円で買えば正規登録ユーザになれるの?
将来アップグレードのときにProfessinal版が安く買えるようになるのかな。
だれか買った人いないですか?
565Delあめ猫にゃ:01/10/12 07:43
>>563
  PostMessage(Form1.Handle, WM_CLOSE, 0, 0);
 だけなら OnCloseも OnCloseQuery も呼ばれる

 PostQuitMessage(0); やってると 呼ばれないよ

どっかでやってるとか?
566550:01/10/12 09:36
>>565
そうですか。ありがとうございます。
もうちょっと原因を調べてみます。

「あめ猫」…20年前に流行った「なめ猫」を思い出した。(笑
PostMessageは綺麗じゃないな。

Form1にCloseByThreadメソッドみたいなの作っといて、
そのメソッドで全スレッド終わったか確認して、Form1自身を閉じれば良いじゃない。
568550: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を再表示すると、値をクリアしたいのですが、
どのようにすればよいのでしょうか・・・
570Delあめ猫にゃ:01/10/12 21:55
あめ猫は消極的反対だにゃ ・・・ どっちでもいいけど・・・・
571Delあめ猫にゃ:01/10/12 21:58
間違えた・・・

>>569
showは画面表示だけなんで実際には消えてない

だからOnShowイベント内部で初期化のコードを
572569:01/10/12 22:42
Delあめ猫にゃ さん、ありがとうございます。

OnShowイベントに初期化のコードを書いて解決しました。

VBからDelphiに移ろうとしているのですが、
画面の初期化って面倒なんですね。
VBは画面が完全に消えるので、何にも考えてませんでした。

逆に、画面が残っているDelphiの利点ってあるのでしょうか?
Delphiユーザーの方は、みなさん、初期化のコードを書かれている
のですか?
>>572 正直消えない方が良い。
今日ずっとcloseしたらreleaseされると思いこんでて
どうやって処理しようかと考えていたが・・・ただShowすればいいだけだと今気がついた。

必ず消えるとなったら消えるだけだが、
消えないとなれば必要なときに消せるという選択ができるのでよい。

>FormをCloseで閉じた後、Showで再表示すると
>閉じる前に入力していた値が残ってしまいます。
create と release を使えば次呼んだとき必ず初期化されてない?
初期化コード書くよりは楽だと思うけど・・・どうだろ
>>572
おらの場合はVBの方が扱いにくい。
Unloadしてもメモリに残ってるし。

DelやBCB(つーかVB以外の言語)みたいに
表示のみなら.Show & .Hide
完全に初期化したいなら.Destroy & .Create(delete & new)
って明示的に宣言した方が管理しやすいと思われ
575574:01/10/12 23:16
>>572
追加。

Show & Hideはツールボックスみたいなのを使うとき便利。
AdobeとかMacromediaのUIみたいなやつ。
576初心者:01/10/12 23:32
Delphiって、Rubyみたいにオブジェクト指向プログラミングができますか?
>576
Rubyとはどんな言語なのか、見たことも触ったこともないのですが、
SmallTalkとは、ちょっと違っていて、C++/C#、Javaとはよく似ている
オブジェクト指向言語を搭載しています。
578デフォルトの名無しさん:01/10/13 03:52
SetWindowRgn を使ってリージョンは成功したのですが、
これを戻す方法がわかりません。
そんな方法ってありますか?
>>578
SetWindowRgnのhRgnパラメータをNULLにすればいいんでないの?
>>579
nilはダメだったのでウィンドウサイズのリージョン作って、戻したように
見せかけてみました。

で、また切り替えボタンでリージョン設定するとなんか形がおかしなことに。
リージョンって何回も変更できないのですか?
581デフォルトの名無しさん:01/10/13 06:27
>580
nilはどうして駄目だったの?
>>581
SetWindowRgn(Handle, nil, True);
とやってみたのですが

[エラー] main.pas(574): 'HRGN' と 'Pointer' には互換性がありません

と言われてしまったのです。ううむ。
583Delあめ猫にゃ: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形式のテキストファイル(カンマ、改行区切り)は、
どのように行えばよいのでしょうか?
>>585
CVSファイルに「何を」行うんですか?

分からんので読み書きの方法でも。

読むときは
TStringListのLoadFromFileで読んで、各行をさらに
行用のTStringListのCommaTextで分解、かな。

書くときも同様。SaveToFileで書くだけ
587585:01/10/13 20:08
>>586

すいません、読み書きの方法を聞くつもりでしたが、
書き込みの時に、きちんと書いていませんでした。
m(__)mすいません

でも、つたない文章から読み取って頂いて助かりました。
ありがとうございます。
588デフォルトの名無しさん:01/10/13 23:20
C++かじってからこっちに来ましたが、

var
const a:Integer=100;{←ここだけ定数で}
b:Integer;{←これは変数のつもり}

とかやって10分ほど悩んだのは私だけでしょうか?
>>588
悩むのは勝手。
他人の思い込みを書き込まれても共感しないよ。
どこがおかしいのか2分間気がつかなかったよ
age
節ない。
593578:01/10/14 01:38
>>583
「0」で戻せました。nilでダメだったと思考が止まってました。

ところでリージョンのデータって一度使用されると破棄されてしまうのでしょうか?
中村拓男氏の NkBitToRgn.pas を使って Bitmapから
リージョンデータを作成し、一度目はうまくいくのですが、
再度そのデータを使ってリージョンをきろうと思ったのですが
反映されてくれないのです。

private、public、protected のどこで定義してもダメでした。
>>593
APIマニュアル読めー。
一度設定すると所有権がOS側に移るので勝手に解放されるし、
もう自分で操作してはならない。
595578:01/10/14 02:35
>>594
ありがとうございます。
ううーん、本格的に組むわけではないのですが
APIマニュアルとかやっぱり必要みたいですね・・・。
>>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 していなければこれで十分では?
599597:01/10/14 05:08
>>598 ありがとうございました。
downto なんて忘れてました・・・
stringlist.items.deleteの時は便利ですね。 indexOf に拘りすぎてたかな・・・
>0
だと 0 の時は入らないよ。
>598
その場合も空白は見つけられないよ。
602597:01/10/14 05:23
えっ駄目!?
いまほかのところを修正中だからまだ実験してないのでした・・・うーん・・・
ところで空白行ってどういう行?
そのへんがあいまいな気がします。
604デフォルトの名無しさん:01/10/14 05:46
>603
Length(s)=0であるような文字列s
605597:01/10/14 05:50
やっぱり>>598で出来たようです。
初心者としてはでかいプログラムになってきたので把握が・・・1000行程度なのになぁ
>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);
608607:01/10/14 06:01
>>607
げ、操作ミス失敬。コードコピーしていじろうとしてたら送信してしまった。鬱
while (stringlist.Items.IndexOf('') >= 0 ) do
stringlist.Items.Delete(stringlist.Items.IndexOf(''));
でうまくいかない理由が知りたい。
>>609
">="ならうまくいくっしょ。
">"だから先頭行が見えないだけ。
>>609
いや例えば
_index:=stringlist.Items.IndexOf('');
だと _index には必ず -1 が入ってるみたい
空白行があろうが無かろうが。
無意味に長くしてみた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の行が無いという事です。
ありゃ、じゃあデバッグ用のshowmessage入れるところ間違えたかな・・・
ちょっと実験してくるYO。
StringList.IndexOfはEmptyStrに対応していなかったと思う。

検索文字がEmptyStrならforで頭からEmptyStrを探し
非EmptyStrならIndexOfの値を返すNULL文字対応IndexOf関数を作るとよさそう。
616デフォルトの名無しさん:01/10/14 11:26
TStringGrid で任意の行を削除する方法はないのでしょうか?
617615: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を増やして行を追加すると、
削除した行が出てくるんですね。(^^;;)びっくり

私の技量では解決できそうもないので、
行を削除する前に、全ての項目値を消してから、削除するようにしました。

お陰で、削除ができました。
ありがとうございます。
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で固定行をクリックして、並び替えを行いたいのですが、
固定行をクリックした時に、コマンドボタンのように凹んだような
動作は可能なのでしょうか。
621sage:01/10/14 16:48
OwnerDraw でできます
622620: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のどの機能を使って高い生産性を得られているのでしょうか?
>>626
こないだまでちょろっとVBいじってみましたけど、
何かやるたびにDLLが必要という理由で離れました。

ローカルな環境だけならいいのですが、一般への配布を
考えると DLLのインストールって敷居が高いですから。
バージョン違いの問題とかもあるし。
628626:01/10/14 19:50
>>627
回答ありがとうございます。
VBで受託開発をやってますけど、MS-Officのバージョン、
IEのバージョンで全く動作が異なり、私も何度も泣かされました。

配布する事を考えるとexeだけでの配布ができるというのは、
環境に影響されないので、とても魅力的です。

ただ、生産性について、まだ見えないことが多くて・・・
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
あげ
631629:01/10/14 20:30
 p := @Func;
だとFuncの返却値(boolean)のアドレスになってちまうから仕方ないのか。
>>626 >>627
一度、VB の事をすっかり忘れると良いと思うな。
VB でああやっていたのに.. と考えちゃうとそこから先に行かない。
VB に限らないけど。

あと生産性云々はコンポーネントを書き換えたり新しく作成できるようにならないと
分からないと思う。転がっているコンポをただ使うだけで満足できるのなら VB の方が
良いかも。
633sage:01/10/14 22:55
TMethod
>>626
おお、同士!
俺は取敢えずVB的でも良いから一つ作ってみる事にしたよ。
OOなんかはその次からって事で...
>>626
かなり語弊があるかもしれんが
従来のプログラムだと1から10までコーディングして、
OOの場合(VBも含むが)は既存のコンポの機能追加&改造
のみをコーディングするっていうイメージかな。

この辺の扱いを実践出来るようになると、生産性が大幅に上がるYO!
単純に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 を押すと
ちゃんとヘルプが表示されます。

なんとかなりませんか。
仕様です
642Delphi:01/10/15 09:45
まずはバージョンを言いなさい
643ななしヘタぐらま:01/10/15 10:25
>>640
綴り,間違ってるヨ.
"ExtractFilePath"
"TStrings"
ヘルプを見るときは正しく売っていたのかもしれませんし
原因が別にあるかもしれませんが
とりあえずもう一度挑戦してみては?
644デフォルトの名無しさん:01/10/15 10:43
バージョンは Delphi6 Pro です。
>>644
さてはOSはWindows9x系だな?
646デフォルトの名無しさん:01/10/15 11:25
>>645
ああ、そうそう Kylix ではなくて Delphi です。
どうすればよいのですか。
サポートに電話しろ。
次の書き込みは、電話してからね♥
648デフォルトの名無しさん:01/10/15 11:48
>>626
APIを使うときにいちいち宣言する必要がない。
VBつかってたの2までだから今どうなのか知らないけど。
649Delphi超絶技巧キボンヌ: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では一度もありません.
ココハホントウニショシンシャスレナンデスカ?
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ならば
案外楽しめるかもと思い、挑戦してみます
655626:01/10/15 21:32
>>632>>634>>635>>636>>638>>648>>650
みなさん、レスありがとうございます。

TStringGridやTIniFileは昨日使って試しました。
かなり便利だと思います。

土日でdelphiに必死に触れてみましたが、生産性については、
よくわかりませんでした。
ですが、私と同じように移行された方がいらっしゃる事と、
いつまでもこのままでは、ずっとVBで悩まされ続けるので、
本格的にdelphiを習得しようと思います。

継承など便利な機能があるのは本から知りましたが、
まだ良さを理解できない初心者なので、
みなさんが言われるように、生産性ってのは
後から実感できるものかもしれません。
(開発するアプリによっても異なるでしょうし)

大変参考になりました。
ありがとうございます。
m(__)m

ちょくちょく質問を書き込むかもしれませんが、
よろしくお願いします。
がんばります。
656Delはじめて物語:01/10/15 22:04
汎用関数の作り方が分かりません。
付属ドキュメントにもなんも書いてない。
オーバーロードは書いてあるからあると思うんだが。
どうしたらいいんだろう。
>>656
テンプレート?
無いよ。
658 :01/10/16 05:00
なぜか突然クラスを理解できた。override と overload も。
これでやっとオブジェクト'思考'出来るようになったかもしれない
parsonal にもクラス補完機能が欲しい
659デフォルトの名無しさん:01/10/16 17:49
質問でつ。
当方VBしかやったことないんですが、移行(フリーのやつへ)は簡単ですか?
操作性が全然違かったりするのでせうか?
プロフェッショナルへの逝行は簡単です。コンポーネントが増えますから。
フリーのやつは、データベースコンポーネントがカットされてるので、
難しいのではないでしょうか。
661デフォルトの名無しさん:01/10/16 18:18
>>660
どうもありがとうございました。
662Delはじめて物語:01/10/16 23:04
汎用関数ないんじゃ、
どうやってそれと同じようなことすんの?
やっぱそれなりに必要なもんだと思うけど。
663デフォルトの名無しさん:01/10/16 23:16
そんな事するなよカッコわりーな
664デフォルトの名無しさん:01/10/17 07:11
すれ立てるほどでもないスレから引っ越してきました。
MediaPlayerで音楽を聴くときに出てくるみょわーんとした
画像ありますよね。あの手のを作りたいのですが、
参考サイトとかありますでしょうか? あまり凝らないで良いです。

ソフトの背景に使いたいのです。
665Delあめ猫にゃ:01/10/17 07:32
>>664

 平滑化という処理判るかにゃ?
 Pixels[X, Y] の四方八方の点から 例えば (中央*4+上+下+左+右)/8 みたいにゃ計算の事

オフスクリーンのビットマップTBitmapを2つ用意しといて交互に
 これを繰り返すとモワーとなるにゃ

 動かしたいなら重みを替えてみるにゃ 上の重みを大きくすると上に動くにゃ
 中央にだんだん動くようにしたいなら 重みを中央に向くように変更しておくにゃ
   |
   | ∧
   |⌒∂ にゃ
   | ┃))
   |ー ミ
   |⊂)
   |⌒)   AA貼ると叩かれるかにゃ?
666 :01/10/17 09:34

      ∧∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 @' ― (,,゚Д゚)つ < AA貼るなゴルァ
   し― ∪     \____________________________
>>665
この手の処理はMMX使うと早いんだよね。
Del5じゃ使えなかった記憶があるんだけど、
Del6Perとかじゃどうなのかな…


>>666
  ∧_∧  / ̄ ̄ ̄ ̄ ̄
 ( ´∀`)< オマエモナー
 (    )  \_____
 | | |
 (__)_)
>>667
D5迄だって DB に置換すれば使えたけど
D6からは
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=1002267809&st=237&to=237&nofirst=true
と直接書ける
>>665
AAより「〜にゃ」口調の方がたたかれると思われ…
670Delあめ猫にゃ:01/10/17 11:20
>>669 了解・・・でも時々は使わせて

ところで フォルダオプション->ファイルタイプで出来る関連付けをDelphiのコード
からやりたんだけど 手軽な方法は?

やりたいのは VC++,BCB4,Delphi5,Delphi6 とインストールしてるもんだから
マウス右クリックに open以外に openVC とかを増やしてるんだけど
これインストールの都度やるのメンドクサイ(入れてるフォルダも違うし)から
VBからだと
Memo1.Lines.LoadFromFile('C:\autoexec.bat');
だけでも便利!と思ったんだがどうよ?
ListBox1.Items.LoadFromFile('C:\\autoexec.bat');
とかも。
672Delモナ:01/10/17 17:45
          凵@  ∧_∧  / ̄ ̄ ̄ ̄ ̄
        刧 \(´∀` )< 久しぶりだモナー
      刧刧凵@⊂\⊂ )   \_____
    刧刧刧  | |\|
_刧刧刧刧凵Q(_(__)\______
\  モナー号 一世      ̄          /
  \_______________/

>667
MMXはインラインアセンブラ使うとき。
いくらなんでもアセンブラで書くのは大変でしょ。

俺は、Scanlineを使ってる。
でも、ボカシの処理はどうしても重くなるからアセンブラでやったほうが
良いと思うがやり方が分からないのでやっぱりScanLineでやってる。

重みなんていう考え方があったんだ。はじめて知った。
早速、試してみる。
673Delあめ猫にゃ: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');
674Delフサギコ:01/10/17 19:42

      ∧∧____   / ̄ ̄ ̄ ̄ ̄
    /ミ,,゚Д゚ミ ./\< Delphiパスはレジストリ決めうちかも。
  /| ̄∪∪ ̄|\/  \_____
    |____|/ トコトコ
     ,,,,∪∪,,, ,,

HKEY_CURRENT_USER\Software\Borland\Delphi\6.0\App
の値がこれでした
C:\Program Files\Borland\Delphi6\Bin\Delphi32.exe
675Delあめ猫にゃ: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のフルパス発見。
677Delあめ猫にゃ: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スレ全体が活気が少ない気がする。
679Delあめ猫にゃ:01/10/18 13:36
確かに後遺症あるよね
 なんか話広げるようなレスは躊躇してしまうというか
 答えだけしか書けないというか
680Del初めて物語:01/10/18 13:39
>>663
は?
>>677
>ところで、このスレ なんか常連専用スレになってない?
そんないことないですよ。
結構頻繁に利用させてもらってます。

そろそろ新しいアプリに挑戦してみたいので
そしたらまたお世話になりたいと思います。
682デフォルトの名無しさん:01/10/18 22:08
たまにバジョージョン情報ダイアログで
http://www.〜 とか作者のサイトが書かれてて
それがwebへのリンクになっているラベルとかありますけど、
ああいうコンポーネントってDelphiではあるのでしょうか?
>>682
Del6だとTBrowseURLアクション
684Delモナ: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:[email protected]みたいなことも
出来る。
ただし、対象マシンで、ブラウザとメーラーがちゃんと設定されてないと出来ないが・・・。
>>683
残念。TLabel には Action プロパティないんだ。
>>685
Actionプロパティになくても
ActionListにBrowseURL標準アクションを追加して(BrowseURL1とする)
LabelのOnClickで
BrowseURL1.URL := Label1.Caption;
BrowseURL1.Execute;
するだけっしょ。
フォントとかカーソルとかもそれっぽくプロパティいじれば完了。
687682:01/10/18 22:57
なるほど、いくつかやり方があるのですね。
勉強になります。
688デフォルトの名無しさん:01/10/19 01:05
>>Delはじめて物語
汎用関数ってどういう関数のこと言ってる?
グローバルな関数・手続きの事だったりして。
C++のSTLみたいなのではなく?
691del若葉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が一番プログラミングが楽。
なれれば文法は気にならない。
新技術ってほどでも無い。
ただのマイナーチェンジ・・
695_:01/10/20 00:00
>>692
OnDrawCellイベントでCanvasを使って塗る
質問です。

画面に画像のみを表示するプログラムを作りたいのですが、
新規作成→フォームを削除→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);
では?
ハヤオキスレ
704Delあめ猫にゃ:01/10/20 09:57
フォームに、
Win 3.1タブにある
DirectoryListBox
DriveComboBox の2つを貼り付けて
DriveComboBox1.DirList を DirectoryListBox1 に

・・・・ていうのじゃダメですか?>>698
Object Pascalの言語仕様的にいけてない所、改良・拡張してほしい点などは何かありませんか?
>>705
begin〜end を {〜} に変更して欲しい。
>>705

★クライアントサイド最強の Delphi に物申す★
http://piza2.2ch.net/test/read.cgi/tech/1001442200/

 こっちのスレが適当と思います
708705:01/10/20 15:25
>>707
THANX
709デフォルトの名無しさん:01/10/20 19:09
無料になったBorland Delphi 6 Personal

初めて使った方々、 使い勝手とかどうですか?
>>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 に複数
命令を書くときはいつでも括弧でくくらなきゃいかん。
物事には始めと終わりがあるのです。
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
全く同感.コンポーネントにして標準装備してくれればいいのにね.
結局自分でフォルダ選択コンポを作りました.
(まだバグ有りですが)
ちなみにフリーのフォルダ選択コンポがあったとおもいましたが
あれはフォルダの初期指定,出来たかなぁ..
>701
とりあえず、実行できました。

ParentにCanvasを持った何か指定しないと表示できないようです?
717698: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
>716
bitbltでハンドル使えば転送できるよ
723( ´∀`)さん:01/10/21 19:12
>フォルダ選択コンポ
m&i氏のサイトにたしかそんなコンポがあった記憶が…
だめ、もうわからん。
目的に似たことができるコンポーネント拾って使います。
725Delフサギコ:01/10/21 23:07
         _________
  ∧,,∧   /
 ミ,,゚Д゚彡<  これ、フサも使っています
  ミつ つ  \
〜ミ  ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  U U

FolderDialog
http://member.nifty.ne.jp/m-and-i/tips/tipspage.htm
726698:01/10/21 23:39
結局、既存のコンポーネントを組み合わせて作っちゃいました<フォルダ選択
やり方のtipsの分かりやすいページがあったんで。
感謝感謝だなぁ<解説ページ
まだまだ分からんこと多いけど(^^;。

>>724
何が分からんのか、どのスレの人か書かんと分からんよ(笑
727698:01/10/21 23:39
訂正。「レス」だ…。
728デフォルトの名無しさん:01/10/22 17:37
FormのBorderStyleをbsNoneにしたときのフォームの移動でなんかいい方法ありませんか?
ボーダーが無いウィンドウをマウスで移動したいのなら、どこを
つかんだら移動状態にしたいのかを考えてみなされ。
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
ニフより
if ssLeft in Shift then
begin
ReleaseCapture;
SendMessage(Handle, WM_SYSCOMMAND, SC_MOVE or 2, MakeLong(X, Y));
end;
をOnDownへ (ただし、上にはみ出さない?)
ニフチってまだ人いるの?
ニフ、まだまだいるよ。
FDELPHIもまだ結構書き込みあるよ。
あそこは優しい人が多いね。
735デフォルトの名無しさん:01/10/22 23:58
>>728
「D6が無料になったんで勉強しだした者」なんですけど(^^;、
不定形リージョンについて解説してるページで解決できそーだと思うんですが、
どーでしょう?

※ここのスレって、どういう時にsage進行にしてるの?
736Delフサギコ: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進行
737Delフサギコ:01/10/23 02:23
 ∩ ∩
 ミ ゙''゙〜
 ミ∧,,∧  /
 ミ,,゚Д゚彡 < >>730、Formのボーダー?
 U U   \そりは難しい・・・・・・
WM_NCLBUTTONDOWNひっかければいいと思われ
>※ここのスレって、どういう時にsage進行にしてるの?
会話が成立している間はsage
話し相手が欲しければage
740デフォルトの名無しさん:01/10/23 21:33
基本的な質問ですみません。
宣言した関数を別のオブジェクトで呼び出すにはどうすればいいですか?
>>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
ネタですか?
>>743 名前が同じでも メソッド内部に書かれた変数同士は独立です
メソッドの外に書くか、こういう場合は
クラスに書きましょう

付属のサンプルコードを良く見てみましょう
746デフォルトの名無しさん:01/10/23 21:49
疑問1

>>743 のコードを見る限り、moji は関数ではない。
変数の事を、単に「関数」と呼び間違えただけなのか、それとも
関数を使おうとして、間違ったコードを書いてしまっただけなのか。

743 のコードが正しいならば、moji をグローバル変数にすれば
良いだけの話ではないか?
>>746
グローバル変数ですか?
N88-BASICしかやったことの無い自分は昨日
Delphiの無償版を入手したばかりで・・
ありがとうございました。
>>747 いや、だから クラスのメンバーに書きなさいって
  というかまず、Delphi6\demos の下にある DPRを順に開いてみては
色々試してみては?
コードの一番上の変数宣言で出来ました。
>>748 ありがとうございます(__)
750デフォルトの名無しさん:01/10/23 23:22
タブ型のメモ帳やブラウザなんかをつくるには
TTabControlを使ってるのだと思うが
やっぱりページごとの内容を配列で保存してるのかな?
TMemoのインスタンスをタブ毎に生成して
TTabControl.Tabs.Objectsに対応するメモを代入しておく
>751
なるほど。
その場合、タブが1,2,3とあって2を閉じた場合うまくいきますか?
2を閉じる直前に
(TTabControl.Tabs.Objects[1] as TMemo).Freeする
インスタンスの管理はTTabControlが負うってことにしとけばいいよ
>753
その方法でやってみます
どうもありがとうございました
755デフォルトの名無しさん:01/10/24 22:22
ネット対戦のゲームつくりたいんですけどTClientSocketとTServerSocketをつかえばいいんですよね。
ヘルプはリンク切れ、グーグルはヒットせず……。
すいませんがTClientSocket等の基本的な使い方を教えてください。お願いします。
ひょっとして4800円のパッケージ版には説明書いてます?
>>755
ソケットとか TCP/IP の知識もってるの?

ないんなら DirectX つかえ
昨日の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;

としたのですが、これで問題ないでしょうか?
Memo1 := TMemo.Create(TabControl1);
TabControl1.Tabs.AddObject('newtab', Memo1);
>>755
正直、コンポーネント(のヘルプ)に頼る必要性はないというか、
それ以前にソケットを意識せずにまともなもん作れんから注意ね。
>>756
>>759
TCP/IPとソケットですね。そっちから勉強してみます。
サンプルとかあればすぐにできるかなぁと、ちょっと甘かったようです。
ゲームならやはりDirectXなんですね。
でもDelphiXがDelphi6に対応してない…と思ったら方法がありました。
http://turbo.gamedev.net/delphixd6.asp

どうもありがとうございました。
761デフォルトの名無しさん:01/10/25 21:48
あのぅ・・・、StringGridのスクロールバーがいつも同じ長さで
マックみたいに使いにくいのですが
あの長さをIEとか普通のアプリみたいに動的にするには
どうすればいいんですか?
それともできないのでしか?
>>761
Mac でも、サムの幅は変更できるぞ?というか今はほとんどそうだが。
763デフォルトの名無しさん:01/10/25 23:17
>>761
そういやそれオレも欲しいでし(藁
>758
なるほど、そういうやり方がありましたか。
765Delフサギコ: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 以来..(^^;
>>766
Libc.System は?
768デフォルトの名無しさん:01/10/26 14:52
>>767

おかげさまで通りました。
ありがとうございます。
769デルファイの名無しさん:01/10/26 15:49
ところで、クラスで定義した関数群は、Create でインスタンスが生成されると言うことですが、
同じソース内のクラスで定義していない関数や変数はどうなんでしょう。
Create しなくても、インスタンスは存在してるんでしょうか。
また、複数、Create すると複数のインスタンスが出来るものと思っていますが、その場合は、
クラス定義外の関数は一つだけのインスタンスなんでしょうか。

Delphi を使い出してそこそこ長いんですが、そこんところがちょっと分かっていません。
>ところで、クラスで定義した関数群は、Create でインスタンスが生成されると言うことですが、
「クラスで定義した関数群」をメソッドだと仮定すると、「Create でインスタンスが生成される」
ことはありません。Create以前に存在し、複数のインスタンスを生成してもメソッドは1つしか
存在しません。

>同じソース内のクラスで定義していない関数や変数はどうなんでしょう。
>Create しなくても、インスタンスは存在してるんでしょうか。
意味がわからない。

>クラス定義外の関数は一つだけのインスタンスなんでしょうか。
「クラス定義外の関数」をメソッドではない手続き・関数だと仮定すると、コードは一つしか存在
しません。

コードとデータの違いがわかってないようですね。
通常、コードは実行時に変更されることはないので、複数持つ必要はありません。

自分の言葉でなくObjectPascal言語ガイドに定義されてる用語を使ってもらえると
理解しやすいんだけど。
771デルファイの名無しさん:01/10/26 16:32
どうも意味不明なようですんません。。。

そしたら、コンポーネントなどの類も、uses で記述した時点でそのオブジェクトは
実行ファイルの中に組み込まれる、と言うことでいいんでしょうか?
>>771
D5で「アプリケーションの新規作成」で出来たプロジェクトをコンパイル。
実行ファイルサイズ 292,864 バイト
上のプロジェクトのuses節にmath、contnrs、mmsystemを追加してコンパイル。
実行ファイルサイズ 292,864 バイト

不要なユニット(手続き・関数・クラス等が呼び出されていない)はリンクされない。
769とは別の話だと思う。
773デルファイの名無しさん:01/10/26 17:13
すんません。。。説明が足りないですね。。。。

実は、今、コンポーネント作りにはまってるところでして、コンポーネント中の
クラス定義のメソッドの類は、Create する事で使えるようになるけども、
そのソース中のクラス定義外(グローバルな?)の関数は、そのまま使えるじゃないですか。

>不要なユニット(手続き・関数・クラス等が呼び出されていない)はリンクされない。

とのことですが、このクラス定義外の関数はどうなのでしょう。

1.uses に記述した時点でリンク
2.実際に使用した時点でリンク

のどちらなのでしょう。

また、interface 部で定義していない(つまりは他のソースでは利用できない)
クラス定義外の関数はどうなのでしょうか。
スマートリンク。って用語で調べるとよし。
775デフォルトの名無しさん:01/10/26 17:37
>>773
お願いだから用語を ObjectPascal に準拠しておくれ。

「クラス定義のメソッド」と言わないで単に「メソッド」で通じる。
また 「クラス定義外の関数」と言わないで単に「関数」で通じる。
とても初心者スレの内容じゃないな。

>とのことですが、このクラス定義外の関数はどうなのでしょう。
>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 された時点で生成されるのか?と思っていたんですが、使用されない
限りはリンクされないので関係ないですね。
#先の質問は無駄ではなかった・・・・

また、そのコンポーネントが複数生成された場合は、インスタンスも複数生成されますが、
そういう登録外の関数のインスタンスは一つだけなんでしょうか。
>>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は増える。)

長文&多分スマソ。漏れの理解が間違ってたら突っ込み歓迎。
× >長文&多分スマソ。
         ↓
○ >長文&駄文スマソ。

本当に駄文でウトゥだ(;´Д`)
781Delフサギコ: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メソッドを呼ばない限り解放されない。
関数を動的に作る事も当然可能です。
しかし Delphi内部で実際にそれをやっているのは
 MakeObjectInstance  だけです

これはしかし関数を作るというより、関数からメソッドを呼び出す為の
非常に小さなコードを作るだけです
785デルファイの名無しさん:01/10/26 22:07
リロードしたら、いきなりこのスレ、行方不明になるんだもん・・・・・


>関数のインスタンスってのが全然意味が分からないんだが。

すみません。私自身、あんまし意味が分かっていないようで。

// ソース1
procedure hogeproc1;
procedure hogeproc2;

ThogeUnit = class(TForm)
   ;
   ;
   ;

がある時に、


// ソース2
var hoge1,hoge2:ThogeUnit;
begin
  hoge1:=ThogeUnit.Create(Self);
       //←hoge1 のインスタンス(?)が存在している
   
  hoge2:=ThogeUnit.Create(Self);
       //←hoge1 とhoge2 のインスタンス(?)が存在している
   
  hogeproc1;
   
  hoge2.free;
       //←hoge1 だけ。
  hoge1.free
       //←ない。
end;

あ、インスタンスって、実行時リソースのようなもの?実行オブジェクトはインスタンス
には含まれずに一つだけ?なのかな?
そしたら、非常に納得のいく結果なのだが・・・・

#勝手に納得すいません・・・・
786(゚д゚)ウマー:01/10/26 22:11
(゚д゚)ウマー
787デフォルトの名無しさん:01/10/26 22:30
>>785
なんか中途半端な用語の使い方だなぁ。

あなた自身の理解を確認するためにも
・実行時「リソース」ではない「リソース」とは何?
・実行「オブジェクト」では無い「オブジェクト」とは何?
788デルファイの名無しさん:01/10/26 23:08
すみませんすみません。
私の理解が怪しいというのは、すでに暴露されているように十分に自覚しております・・・

今まで、漠然として、

hoge1:=ThogeUnit.Create(Self);

とすると、hoge1 に、Thogeunit のオブジェクトもリソース(と言うよりメモリだな)
もどこかからか(コレが重要)コピー/確保されるという理解でおりました。
で、それがインスタンスと称されると・・・

そうすっと、クラスに属してない procedure や function はどこから出てくるのかと、
不思議に思ったわけで。。。

すみませんすみません、こんなお馬鹿につきあっていただきまして、
ありがとうございます。。。
789通りすがり:01/10/27 01:12
そんなに卑屈になるなよ
理解できたんなら良かったじゃないか
790デフォルトの名無しさん:01/10/27 12:03
TRichEditにEM_AUTOURLDETECT送ってみたんですが
まったく反応なしです。URLを検出するにゃどうすりゃいいんでしょう?
791ななしヘタぐらま:01/10/27 19:31
>>769
DelphiのPascal言語はクラスの存在しない従来のPascal言語の上位互換になっていて,
クラスとは無関係の単独の関数・手続きや変数を持たせることができます.
これらはプログラムが始まってから終わるまで存在しつづけています.

これらは“クラスではない”ので“クラスの実体(インスタンス)”という形では存在しないのです.
792タダD6の名無しさん:01/10/27 23:59
タダになったから始めた者なんですが、
「パッケージ再構築の、実行時パッケージを使って構築」って
具体的にどーゆー意味なんでしょうか?
これにチェック入れるとexeのサイズが小さくなりますよね。
「使ってないモノはexeに入れないでコンパイルしますよ」って意味かと
思うんですが、違ってますか?どーもヘルプは読みづらい…。
読解力が無いとも思いますが…(^^;。
レスよろしくお願いします。
「実行時パッケージ」のヘルプを読むよろし
794タダD6の名無しさん :01/10/28 00:40
>実際には,vcl と rtl は vcldb の Requires 節で参照されるため
>vcl と rtl は入力する必要がありませんこのため,vcl と rtl が
>[実行時パッケージ]編集ボックスに含まれているかどうかにかかわらず,
>アプリケーションは同じようにコンパイルされます。
サパーリ分がんね(藁
795Delフサギコ:01/10/28 00:47
   ∧,,∧   / ̄
@,,,ミ,,゚Д゚彡 < 自信ないんだけど
⊂,,,,,,,,,つつ.   \_

>これにチェック入れるとexeのサイズが小さくなりますよね。

VBみたいにランタイムが必要なモードになるのじゃないかな。
他のマシンに実行時パッケージ(パッケージ=DLLと考えてよし)
が入ってないと動かないexeかな。

チェック入れたことないからしらにゃい
796タダD6の名無しさん ◆/ao0MelA :01/10/28 00:51
>>795
レスありがとうございます。
あ、「当たらずとも遠からず」ってとこでしょうか?
>>788 一言
>私の理解が怪しいというのは
わからないのならそれは構わない。誰でも通る道だから。それを理解しようと
質問してるわけでしょ?
質問するときは用語を統一してくれ。頭の中で考えている時は自分語でも
いいけど、他人に説明する時には一般的な用語に翻訳してほしい。コンポを
自作するレベルで用語をあわせられないなら先行きは暗い。

宿題:ObjectPascal言語ガイドを10回通し読み
>>796
使ってるモノもexeに入れないこともあるけどな。
>>797
この本が復刊されれば丁度いいのにねえ。
大き目の図書館探せばあるかも。
http://www.fukkan.com/vote.php3?no=4407
>>792-796
Delphiのバージョンアップを考えると、通常はチェックを入れないほうが無難だよ。

以前、ネットワークもMOもない環境へフロッピーで入れていたとき
フロッピー1枚に収めるためにパッケージを別にしたことがあったけど
Delphiのバージョンを上げてコンパイルすると動かなくなった。

新しいバージョンの同等のファイルを入れてやるとちゃんと動くようになったけど
必要なファイルの調べるのが少し面倒だった。

結局、MOが使えるようになったのでチェックは外したよ。
>>800みてふと思ったので押しつけTips。

UPX+(Lzh, Zip, RAR等のアーカイバ)は強力だよ。
単にEXEをLzh, Zip等で縮めただけより縮まる。
漏れ、回線が低速なので、EXEを公開する人はUPXと
他のアーカイバを併用してくれるとうれしい…
802デフォルトの名無しさん:01/10/29 00:23
UPXって推奨なんスかねぇ?どーもうさんくさいんだよなぁ…失礼だけど(^^;。
あのそっけない配布元しか無いのかなぁ?
日本製は?
> 日本製は?

ハァ?
>>802
>和製
昔PC-98用に diet などがあったね。
805デフォルトの名無しさん:01/10/29 00:43
>>803
いや、予想通りのレスでナニだけど(藁
「日本製の、似たようなのが無いかいな?」ってこと。
804さんは分かってんじゃん。
分かってくださいよー。2つで十分ですよー。
UPX、英語でしかもコマンドラインツール。
だが、こんなモノ
http://www.vector.co.jp/soft/win95/util/se139612.html
もある。
808デフォルトの名無しさん:01/10/29 17:43
別に圧縮しなくていいから
ResHacker とかでリソース見られちゃうの防ぐ方法ってないですか?
>>808
別ファイルか暗号化(もしくは両方併用)したものにする。
やはり、そもそもリソース形式にしないのが手っ取り早いかな。
810デフォルトの名無しさん:01/10/30 18:53
'を変数に代入したいんですけどどうすればいいですか?
s := ''';
なんてのはもちろんダメだったし……。
よろしくお願いします。
811デフォルトの名無しさん:01/10/30 18:59
>>810
「'」を書きまくれば分かるよ(w
>>810
おしい。'を出すには、'x2書く。つまり、s := ''''
>>810
文字列がハッキリ分かるようにエディタの色設定をするといいよ
俺は背景に灰色を使ってる
>>813 追加
S:=''';

S:='''';
では ; の色が違うので判別できる
>>811->>814
なるほど、あと一個書けばよかったんですね(^^
これを機にエディタの色設定も凝ってみたいと思います。
ありがとうございました。
816デフォルトの名無しさん:01/10/30 23:11
TListBoxのアイテム選択でマウスの右ボタンでも選択できるようにするには
どうしたらよいでしょうか?
817Delフサギコ:01/10/31 00:12
            ∫    _________
   ∧,,∧     ∬   /
   ミ,,゚Д゚彡っ━~  < これでいい?
_と~,,  ~,,,ノ_.  ∀   \
    ミ,,,,/~), │ ┷┳━   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ .じ'J ̄ ̄| ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄  ┻
procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 if [ssRight] = Shift then
 begin
  ListBox1.Perform(WM_LBUTTONDOWN, MK_LBUTTON , Makelong(X, Y));
  ListBox1.Perform(WM_LBUTTONUP, MK_LBUTTON , Makelong(X, Y));
 end;
end;
シツモソ
TShellListViewで特定の拡張子のファイルだけ表示させるには
どうすればよかですか?
プロパティにフィルターはなかったし・・
>817
左と同じ動きになりました!
あとは、左右区別用フラグでもつけてと・・・
820Delフサギコ:01/11/01 00:57
   ∧∧   />>818
〜''ミ ゚Д゚ミ < どなたかが2chで解決されてましたよ。
"UU'UU"   \

//uses StrUtilsを追加
procedure TForm1.ShellListView1AddFolder(Sender: TObject;
AFolder: TShellFolder; var CanAdd: Boolean);
var
 Ext:string;
begin
 //フォルダは表示する
 if AFolder.IsFolder then Exit;

 Ext := ExtractFileExt( AFolder.PathName );
 CanAdd := AnsiMatchText( Ext, ['.jpg', '.jpeg', '.bmp' ] );
end;
これで、jpg/bmpファイルだけ表示
ありがとうございやす
でも単にその手続きを追加しただけではだめなのですね
追加だけではコンパイル通るのに実行はもとのまんまです
これいかに?
ヘタレですいません
>>821
ShellListViewのAddFolderイベントに割り当ててないとか?
いろいろいじってたらできました
イベントにせていしなきゃならんのね
アリガチョー
824デフォルトの名無しさん:01/11/02 23:40
ActiveXをとりこんだコンポーネント使ってEXEを作ると、
出来たEXEには、そのDLLは入ってるの?それとも入ってないのかな?
どちらでしょーか?
うまく質問出来てるかな…。
一般に、Win標準ではないDLL、OCX等を使ったのなら、
EXEとは別にそのDLLを配布する必要があるかと。
826824:01/11/02 23:55
>>825
ありがとうございます。やっぱり別途入手する必要(先方が)があるんですね。
827デフォルトの名無しさん:01/11/04 00:01
memo(TStrings)にedit(String)を代入するには、
型の変換をどうすれば良いのでしょうか?
↓の場合はエラーが出てしまいます。
memo1.Lines:=StrToTStrings(edit1.text)
memo1.lines.text := edit1.text;
>>828
ありがとうございます。
ただ、この逆をするとエラーがでるのですが・・
edit1.Text.Lines := Memo1.Lines;
830ド素人:01/11/04 00:15
ストリングの変数に入りますね。
var a:string;
begin
a:=edit1.Text;
label1.Caption:=a;
end;
ああ、ド素人の始めたばかりなのにレスしちゃった。てへ★
>829
まずあなたがやるべき事は、
エラーのヘルプを見る。
何というエラーが出ているのか書く。
>829
Edit1.TextはTStrings型じゃない。String。
TStringsには、直接代入するのは超初歩的ミス。

行を指定して代入するしかない。

Edit1.text:=Memo1.Lines[829が代入したい行];

文字列を全て代入したければ、
Edit1.Text:=Memo1.Lines.Text;

変数・クラスの違いを勉強し直したほうがいい。
ちなみに、TStrings同士でコピーするには、Assignを使うのが良いです。
後は、初心者本からもっと上の本を買って勉強しながらやりなさい。

初心者本にも書いてある内容だと思うが、初心者スレなので一応説明したぞ。
VBのではよく掲載してありますが、
Delphiでコモンダイアログから取得したフルパスから
ファイル名だけを抜き出すにはどうすればよいのでしょうか?
834Delフサギコ:01/11/04 17:04
| ExtractFileName
\____   ____
        \/
    ∧,,∧      V/
   ミ,,゚Д゚ミっ8<  ‖
__ (つ旦,,ノ _   ノ"ヽ
    .ミ,,,/~),   |  ミ ゚ー゚彡
 ̄ ̄ ̄ .し'J  ̄ ̄| ━┳━

  ニラ 茶 ノ オテイレ
835ななしヘタぐらま:01/11/04 18:53
>>829
逆になっていませんよ〜.
逆はこうですよね.
edit1.text := memo1.lines.text;

ただし,memo1のテキストが2行以上になっていたり
1行でも最後で改行されていると
”・・”というゴミが入ってしまう.

>>830
始めたばかりであろうとなかろうと他人に教えるのは非常に良いことです.
それによって教える側も色々な意味で勉強になります.
836ゆみ:01/11/05 00:13
Delphaiのバージョンアップを考えているんですけど
今4を使っていて大学と同じ6にしたいんですけど
どのようにすればいいのか教えていただけませんか?
837デフォルトの名無しさん:01/11/05 00:24
learning版ならダウンロード出来る。
雑誌のCDにも載っていた。
>>837 それはPeraon…ゴホッゴホッ
839838:01/11/05 05:04
タイプミスしてた宇津氏。
Personalですな…
840下っ端応援団員:01/11/06 17:49
押忍!失礼します!
DBLookupListBox で、選択されてるレコードがリストの
トップに表示されるようスクロールさせたいのですが、
どうやるでありますか? 押忍!
841デフォルトの名無しさん:01/11/09 01:19
あげ
842デフォルトの名無しさん:01/11/09 01:34
前にコンポーネントの削除の仕方を教わったんですけど、
どーも何か理解出来てないんでもう一度(^^;。
「空じゃないと削除させないよ」って言われるんですけど、
この「空」ってどういう意味ですかね?
自分でインストールしたコンポーネントの話です。
レスよろしくお願いします。
843Delフサギコ:01/11/09 02:06
   ∧,,∧   / ̄ >>842
\,,,,ミ,,゚Д゚彡 < パッケージ開いてプロジェクトから削除?
⊂,,,,,,,,,つつ.   \_

>「空じゃないと削除させないよ」って言われるんですけど、
なんの事でっしゃろ?
844842:01/11/09 02:30
えっと、何か公開されているコンポーネントをインストールしたとして、
それが不要(私の場合は使えなかった)とします。
それを削除しようとすると、「空の場合だけ削除出来る」みたいなことを言われるんですよ。
うまく伝わらないでしょうか(^^;。
うーむ…。
エラーメッセージは正確に書き写しましょう
846842:01/11/09 02:49
>>843
とりあえず、
>パッケージ開いてプロジェクトから削除?
を当たってみます。ありがとうございました。

>>845
そっスね。
847デフォルトの名無しさん:01/11/09 19:11
まん丸のフォームやボタンは作れますか?
>>847
作れます。
849848:01/11/09 19:51
・・・だけにしとこうかと思ったりもしたんだが、
やっぱり不親切かなぁと思わなくもなかったんで、帰ってきました。

CreateEllipticRegion で円形リージョン作って、
SetWindowRgn でフォームにセットすれば、丸いフォームになります。
ボタンも同様でいいけど、丸い枠は描かないといけないな。
850Delフサギコ:01/11/09 19:57
         ________
  ,ヘ ヘ   /タイミングはどこでやるのがいいか知りませんが
  ミ,,゚Д゚ミ<
  ミ,,,,,,,,ミノ \Delフサスレの184をどうぞ
          ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
851デフォルトの名無しさん:01/11/09 20:34
Delphi6のpersonal版を使っています。
OggVorbisエンコーダのフロントエンドを作ろうと思うのですが、
自分のプログラムから他のプログラムを起動する方法を教えてください。
function ExecuteFile(const FileName, Params, DefaultDir: string;
ShowCmd: Integer): THandle;

これ使えばヨシ。
意味が分からんと言われたらアレだから一応例を書くと

ExecuteFIle('c:\windows.notepad.exe','c:\windows','c:\windows\oreore.txt',SW_SHOW);
853Delフサギコ:01/11/09 21:11

  ∧,,∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡 < ExecuteFileって、自作関数かな?
  ,;゙  ミ     \_____________
 ミ.  ミ
/゛゛゛゛

ShellExecuteでこんな感じにどぞ


uses ShellAPIを追加

TargetFileに該当ファイル名をフルパスで入れる
var
FileName, FilePath: String;
begin
FileName := ExtractFileName(TargetFile);
FilePath := ExtractFilePath(TargetFile);
ShellExecute( 0, 'open', PChar(FileName), nil, PChar(FilePath), SW_SHOW);
end;
854Delフサギコ:01/11/09 21:25
   ∧,,∧   / >>853 修正
\,,,,ミ,,゚Д゚彡 < CreateProcessの方がいいのかもしれません
⊂,,,,,,,,,つつ.   \ こんな感じでしょうか?

procedure ExecuteFile(ExeName, TargetFile: String);
var
 si: TStartupInfo;
 pi: TProcessInformation;
begin
 FillChar(si, Sizeof(TStartupInfo), 0);
 si.cb := Sizeof(TStartupInfo);

 CreateProcess(nil,PChar(ExeName +' '+ TargetFile),nil,nil,
        True,0,nil,nil,si,pi);

// 起動したプログラムの終了を待ちたい時はこの行を追加
// WaitForSingleObject(pi.hProcess, INFINITE);
end;
855852:01/11/09 22:45
>854
FMXUtilsっていうライブラリを使ってるんです。
856Delフサギコ:01/11/09 23:06
         _________
  ∧,,∧   / >>855
 ミ;゚Д゚彡<  なな、なんかかっこよいですね
  ミつ つ  \ >>FMXUtils
〜ミ ,, ミ.     ̄
  ∪∪   
begin
end
begin
end
begin
end.......
もうイヤになっちゃう(藁
858デフォルトの名無しさん:01/11/09 23:44
ファイルを比較するという処理を単純に
TFileStreamを2つ使って、2つのファイルを交互に4バイトづつ読みとる
というようにしてみたのですが、やたら時間がかかります。
高速化する方法ないですかね
>>858
10KBつづ読む。
CreateMappedFileを使う。
861858:01/11/09 23:49
>859
即レスありがとうございます。
10kB読み込ませるには配列へのポインタを渡すのですか?
862858:01/11/09 23:51
>860
CreateMappedBmpですか?
CreateFileMappingでしたごめんなさい
864858:01/11/09 23:59
>863
CreateFileMappingでマッピングしてMapViewOfFileで読みとるということで
よいのでしょうか?もう少し調べてみます。
>>861
ごめん冗談。
でも4バイトずつだと読み書きがバッファリングされてるにせよ
ディスクアクセス、関数呼び出し、比較回数が多い分遅くなる。

前の二つは FileMapping で解消できるとして、
比較そのものはアルゴリズムの範疇だね。
テキストだったら比較アルゴリズムが色々あるよ。
(↓は C で書いてあるけど)
http://alfin.mine.utsunomiya-u.ac.jp/~niy/algo/
866858:01/11/10 00:14
FileMappingの使い方を勉強して
アルゴリズムを変えることを検討、実践してみます。

どうもありがとうございました。
>>855
FmxUtilsをDel6でコンパイルできないのは自分だけだろうか・・・
(Constsが変わっているだのCopyFileのoverloadが曖昧と言われるだので)

それと、ExecuteFileの中身はShellExecuteだね
868デフォルトの名無しさん:01/11/10 00:53
stringlistをpablicで使うことはできないのですか?
良く分からないからpablicにstringsの変数を作って、
それにstringlistのデータを一行タブコード一行……の形に変えて入れて、
procedureごとに、stringsからstringlistに戻しているのですが、
もっと良い方法がありそうな気がして。
Delスレで「アルゴリズム」はNGワードです(藁
質問の意味がよくわからないsage
pablicじゃ、コンパイルが通らないだRO!
>>868
pablic -> public。pas ファイル一から手書き100回の刑。
それはいいとして、差し支えない程度にコードを載せてみれ。
873868:01/11/10 01:31
ぐ!googleでpablicが通ったので自信が無いまま書いてみれば・・・
質問の目的は、publicレベルで文字列リストを宣言したいのです。
二つ以上のprocedureでstringlistを使うのですが、
中身のデータは同じなので、stringlistを共有したいのです。
>>868
コンストラクタで
 FStringList := TStringList.Create;
し、デストラクタで
 FStringList.Free;
しないと駄目。
TStringList.Textも見れ。
>>873
クラスを作ってそのフィールドにすればいいのではなく?
その procedure 群は グローバルじゃないとダメなのかな。
877868:01/11/10 01:52
コンストラクタ、デストラクタ始めて知りました。
これで、楽にできると思います。多謝
おせーてください
サンプルのShellListViewで選択したファイル名の取得はどうすればよいですか?
ItemとかSelectedとかDetailsとかいじってみたがだめでした
ソース見たけどどのぷろばてーか関数を使うのかよくわからんかった
ものすごく単純なことだと思いますがよろしくご指導のほどお願い
ヘタレでスマソ
879デフォルトの名無しさん:01/11/10 16:31
ttp://www.torry.net/vcl/filedrv/filedrvbrowsers/ftree.zip
これってDelphi6で使えないのかな?
コンポ登録は出来るけどコンポ貼り付けてコンパイルすると
エラーになるYO
880デフォルトの名無しさん:01/11/10 16:47
delphiて本あまりないよねえ
881847:01/11/10 16:59
訊き方間違えてごめんなさい。
出来るようになりました。
ありがとうご
882デフォルトの名無しさん:01/11/10 17:27
すみません。質問なのですが、
Delphi6でコンパイルしようとすると
「[致命的エラー] ShlObj.pas(8): ファイル 'OLE2.dcu' が見つかりません]
と表示されます。
Delphi6を起動してフォームしかない時にコンパイルしてこのエラーが出ます。
なぜでしょう?
>>880
んだねぇ。
6で無料版出来たんだし、増えてもいいのに。
884 :01/11/10 18:11
>>878
shellListView1.SelectedFolder.PathName

>>882
環境オプションのライブラリで、$(DELPHI)\Lib
が抜けてるのかもよ
885882:01/11/10 18:30
>>884
レスどうもです。
とりあえず環境オプションの方はちゃんと書いてありました。
それでとりあえず、Sourceフォルダの中からOle2.pasをLibにコピーして
コンポーネントのパッケージのインストールの設定の
「実行時パッケージを使って構築」をチェックして何とか使えるようになったのですが
この方法で問題とかないですかね?
886デフォルトの名無しさん:01/11/10 18:32
Delphi 6 で作成したアプリを Windows XP で起動させても、
Luna スタイルが適用されず、一部が古いスタイルのままです。
Luna スタイルにする方法はありますか?
Delphi のバージョンアップ待ちでしょうか。
887デフォルトの名無しさん:01/11/11 00:38
>>886
それは VC で作っても同じだが。
manifest ファイルを作ってリソースに追加。

なお、Delphi6 Update1 は必須。
>>880
最近クソな技術本が多すぎるから一見そう見えるが
実は一つの会社が出してる製品でこれだけ出ているのは
多い方じゃないか?バージョンアップの方が早すぎ。特に海外で
出てる書籍は分量が多いので翻訳作業だけで半年かかりそう。

ところでせっかく雑誌に試用版や無料版つけるならついでに購入券
も付けて書店やコンビニのカウンターで支払い済ませば数日後自宅
に製品が届くとかすればもっと売れそうな気がするのだが・・・・
言語製品じゃ無理か?
889デフォルトの名無しさん:01/11/11 01:27
begin〜endってのやめてほしい(条件分岐で自分で書いててワケワカメ)。
「:」とか「;」も、どーにかしてほしい。
ヘルプも、もすこしどーにかならんもんか。
サンプル、説明無さすぎ。

無料でもらったくせに、要望出すとこんなもんか。
タダだから、文句言えないけど。素人だし。
begin, endなんて表面の問題でしかないし、慣れればいいだけ。
{, }のほうが奇怪だ、ともいえるよな。

しかしmanifest...Del6Up1でもListViewが死ぬ。
comctrls.pas修正技はbpl分離には使えん。Up2はまだか(;´д`)。
>>889
気に入らないなら他の言語やれば?
892デフォルトの名無しさん:01/11/11 01:32
試しに言語の歴史を辿ってみてください。
begin endを使う言語がいかに多いかわかります。

C++ Builderってソフトを選ばないあなたが不思議です。
893デフォルトの名無しさん:01/11/11 01:32
>>890
英語版,日本語版?どっち使ってる?
仕様にどうこういっても仕方ないだろうが
ダウンロードする前によく調べんかい
>>889
Begin, Endは元々が良くも悪くもPascalだからどうしようもないよ。
C++Builder使うのはどう?
俺は>889が「Delphiあればあんなソフトやこんなソフトが作れてウハウハだぜ」と
思いつつダウンロードしたはいいが、まともにプログラムなどしたこともなく
いきなり作れるためしもなく、気に入らない目に付いたところを上げただけだと思われる。
だからたぶん、BorlandC++Compiler使っても同じ文句、いや、それ以上の文句を言う。
文字列変数がないとか。あと、角度とか。
まーた、どこにでもいる、自分の頭が悪いことを認められず、、
使っているツールに責任転嫁している馬鹿がでた。

begin〜end の使い方すら調べられない程度の頭なんだから、
プログラムなんか辞めた方がいいよ。プログラムする前に
勉強しなきゃいけないことがいくらでもあるはずだ。

馬鹿につきあっている方も馬鹿だな。こういうことも
ネットワーク資源の無駄使いだ。ってことに気が付け。

そもそも彼は Delphi に不満があるのではなく、自分の
考えたとおりにおもちゃが動かなかったから泣き叫んでいる
ガキでしかない。ガキに理屈が通るはずもあるまい?

泣いていれば、次の新しいおもちゃが手にはいると
思っているんだよ。
ではどっちもどっちという事でよろしいですね?
899デフォルトの名無しさん:01/11/11 09:46
>>897
Copyright(C) by pcode
900ガキ:01/11/11 10:03
大人の身勝手な論理だ!
>>897
>馬鹿につきあっている方も馬鹿だな。こういうことも
>ネットワーク資源の無駄使いだ。ってことに気が付け。
みんなこう思ってるからあえて書かなかっただけ
902889 :01/11/11 23:51
ありゃ。思わぬ反響。
つーか「無料でもらったくせに、要望出すとこんなもんか。」の一文が
読めねーかな?
アホ?「要望」って分からんのかな?「ここがもっと○○だったら
もっといいかな?」ってことだよ。
理解できた?面白いな。こんなに反響があるとは思わなかったよ。
しかも、アホみたいに「文句あんなら使うなよ」ってヤツが。
「要望」と「文句」の区別(書いてあるにも関わらず)が付かないなんて…。
あ・ほ♥
って、書いてやると、今度は何て返すかな?
>>902
もっと落ち着いた日本語を書きましょう。
昨今の若者の乱れた日本語は嘆かわしいばかりです。
889は数年後自分の恥を知ることでしょう。
905デフォルトの名無しさん:01/11/11 23:58
>>902

あんたそれ、

「Vicual C++で使える言語がC++じゃなきゃいいのに。」

って言ってるのとイコール。
906デフォルトの名無しさん:01/11/12 00:13
私も889さんの意見に賛成です。
907デフォルトの名無しさん:01/11/12 00:15
>>889
>「:」とか「;」も、どーにかしてほしい。
の意味が分からん。
908デフォルトの名無しさん:01/11/12 00:18
>>907

代入演算子(:=)とelseの直前は";"が付かないことかな?

「なんで一行一行行末に";"を付けるんだ!BASICにはいらなかったぞ!」

とかなら最悪。
909デフォルトの名無しさん:01/11/12 00:24
HSPじゃねーの? (ププッ
910ななしヘタぐらま ◆B18Bks.Y :01/11/12 00:29
>>889
あれ,会社でレス入れたつもりが入ってない(泣).

条件分岐の記述のわかりやすさ,間違いにくさの点では
Pascal, C/C++ より QuickBASICやVBのほうが優れていると思う.

Pascal は基本的に複数の文のブロックは
なんでもかんでも begin 〜 end じゃないですか.
このために,わかっているだけでふたつの問題が起きます.

1.end を入れ忘れたときに発見しづらい.
2.case 文で行数が長くなってしまう.

1.

end を1か所入れ忘れるとコンパイラはず〜っと後ろのほうで
『endがないぞゴルァ』エラーを返してきてしまいます.
(しばしば最後の行がエラーだったりする)
begin 〜 end が何重にもなっていたり
さらにそれが何十行にもなっていると
どこに間違いがあるのか結構迷います.

QB/VBなら End If,End Select,End Sub といった具合に
ブロックの終わりの名前が区別されているので
わかりやすいしエラーが起きてもすぐに問題点がわかります.

問題のある行がエラーの起きた行の近くに存在するからです.

2.

case 文で条件ごとにブロックを使うと1か所につき2行多くなります.
例を書いたら改行が多すぎると叱られたので省きますが
10か所使ったら20行の差が出るのです.
911デフォルトの名無しさん:01/11/12 00:32
>>910

} を1か所入れ忘れるとコンパイラはず〜っと後ろのほうで
『}がないぞゴルァ』エラーを返してきてしまいます.
(しばしば最後の行がエラーだったりする)
{ 〜 } が何重にもなっていたり
さらにそれが何十行にもなっていると
どこに間違いがあるのか結構迷います.

それ、ブロックを作る言語すべてにいえることでは?
lispやschemeなんて括弧しかないぞ
913デフォルトの名無しさん:01/11/12 00:34
ごめん。ミス。
914デフォルトの名無しさん:01/11/12 00:41
取りあえず、

「Pascal開発環境で改善してほしいところはPascalです。」

という「言語的田舎者発言」は二度と吐かないように。

どうしても実現したかったらBorlandじゃなくてもっとすごい学会にでも論文を提出しなさいな。
ここでこれだけ笑われたんです。学会に行けば一流のコメディアンになれますよ。
>>914
んーでも、自分の顔が気に入らなくて整形する人もいるんだし。
Borland も ノーマルの Pascal じゃ Delphi に使えないから Object Pascal 作ったんだし。
889 は自分の気に入るような言語を自作するといいんじゃないかな。
916ななしヘタぐらま ◆B18Bks.Y :01/11/12 00:58
>>889
ヘルプがタコでサンプル,説明が無さすぎというのには同意.だと思うんだけど,
Delphi使いに限って賛同の声ってないんだよなぁ.
いつまでたっても改善されない理由はここにあるのかも.

すでにプログラミング経験が豊富な人間なら
すでにやりたいことが明確なので
これはこうすればいいのかな?って自分で進めていけるけど
プログラミング初心者だとサンプルが無いっていう時点で
そこで止まっちゃうんだよな.

>>894
タダなんだからとりあえず落として使ってみるのはアリだと思うんだけどな.
それにボーランドのサイトを見たって言語仕様のことなんてわからないし
情報を探すといってもこれはこれでスキルを要することだと思う.
プログラミング経験がそれなりにあれば
何をどうやって探せばよいかは見当がつくと思いますけど.
917デフォルトの名無しさん:01/11/12 01:01
>>916

なれれば使い安いですよ。
例も十分。
918ななしヘタぐらま ◆B18Bks.Y :01/11/12 01:18
>>911
そのとおりです.C/C++にもいえることです.
だからなかなかわかってもらえないのでしょうけど.
「そんなものだろう」「なんでそんなことに不満を感じるの?」みたいな.

でも“この部分で”もっと優れた言語を知っている人間から言えば
「なんじゃこりゃ!?」「不便」ってなるわけです.
QBは何年も使っていましたがこの手の問題で迷った経験はないのです.

>>915
プログラミング初心者とかだったらどうするのですか?
プログラムを書く人間はみんな技術者だという発想に問題があると思うのですが….
>>918
初心者だったら気に入る文法の言語を使えばいいだけじゃないカナ。

文法的な不具合は慣れで解消されるよ。
Windows も慣れれば使いやすいのと同じで。
それが良いわけではないけども。
初心者そっちのけの雑談はフサスレでやるよろし
そろそろ次スレの季節だね
>>918
あなたが単に最初の方に使ってQBに慣れたからでしょ。

QBは知らないがVBだと
・改行毎に"_"つける言語仕様が嫌でござる。
・callつけないと引数指定に括弧付けられない仕様は不便
 なんとかしてくれ。

って言われてまともに相手できますか?

それにPascalの上位互換なのだから
どうしようもないって事はわかるでしょう?
>>914禿げ同

サンプルが少ないとかHELPが不便というのは
MSに比して開発資金も人員も乏しいBorlandに求めるのは酷だと
みんな知っているから、FDelphiかDelphiMLかDelphi広場に逝ってよし・
>>915
プログラマ初心者なら初心者なりの使い方がある。
我慢して使うか、他の言語に乗り換えるか、だ。
そこまでして、Delphiを使うおうとする気が知れない。
VCL使いたければ、C++Builderもあるし。
そういや、俺もQBからの移行者だったんだが(数年前の話しな)、
GUIアプリ作りやすい、OOやりやすいぜマンセーって感じで、
あまり気にならなかったな。慣れるのは苦労したけどイヤじゃなかった。
924922=923:01/11/12 07:50
ああ、それと、Delphi使うならDelphiだけ読めても駄目だぜ。
なんだかんだいって資料は少ないからさ。
C/C++読めた方(とりあえず書けなくても)が圧倒的に有利だよ。
だって、そこら変からコード拾って来れるし、回りのプログラマにも聞けるし。
初心者だからこそDelphiが向いているんだがなあ。
C++はできることが多すぎて戸惑う。
>>910
>1.end を入れ忘れたときに発見しづらい.
ブロックを先に書いてから中身を書けばそういうミスは殆ど無くなるよ。
C系でも同じ事だけどね。
>QB/VBなら End If,End Select,End Sub といった具合に
Pascalの次にヴィルトが作ったModula-2は必ず制御文はブロック終端
が必要になるんだっけ?
俺は長くなるブロックには次のようなコメント付けるよ。
end; { while }
1、begin〜end であって {} でない事について
  これは、C/JAVAのように {} に比べて1行に深いネストを書くのを防いで
  くれています。 一見 Cスタイルの方が楽そうでも、グループ開発になる
  と、インデントがどうたらこうたらコーデングスタイルが喧しくて、結局手間
  の元。

  それに、深いネストを書いてしまいそうになったら関数内関数にするとか
 構造化するように自然に促してくれるメリットもありますしね


2、End If,End Case,End Procudure でない事について
  これがそんなに便利だと思えば、926さんのようにご自分でルールを作って
  それを検証するツールを作っておけばすむ事でしょう
  もともと深いネストを書かなければそもそも混乱の原因にならないと思います 
928ななしヘタぐらま ◆B18Bks.Y :01/11/12 17:36
>>921
QBは慣れるも何も最初から迷わなかったのです.
DelphiやCは慣れてもQBのレベルにはならなかった.

これは慣れればある程度解決する問題ですし,
Pascalの上位互換のだからというのも理解してるつもりなので,
ボーランドは言語仕様を変えるべきだとは全く思っていません.

Delphiはこの問題点を無視できるほど良いツールだと思いますし,
実際,Delphiを初めて以来,他のツールは一切使っていなかったりします.
929ななしヘタぐらま ◆B18Bks.Y :01/11/12 17:37
>>889
話を脱線させてしまったので改めて建設的なレスを.

●セミコロン(;)について
文の終わりを示す記号.
BASICのように改行をもって文の終わりとすることもできるのですが
この場合はどんなに長い文でもひとつの行に入れなければなりません.
PascalやCでは『;』を文の終わりと解釈するので,
文を複数の行に分けてソースコードを見やすくすることができるのです.

(のちにBASICも行末に『_』を入れることで
 ひとつの文を2行以上にかけるようになったようです.
 VBは統合環境でも使えるのかな?)

● begin 〜 end について
詳しくは知らないのですが恐らくもともと
if (条件) then (文) ;
という文法があって then 以後に2つ以上の文を入れるためのキーワードとして
begin 〜 end が導入されたのではないかと.
case の各条件に続く文も恐らく同じだと思います.

これについては近代のBASICのほうがスッキリしていると思いますが
基本的な文法を変えちゃうとも今まで世界中の人が作ってきた
たくさんのソースコードがむだになってしまいますので
そう簡単には変えられないのです.
(Pascalは日本ではマイナーですが世界ではそうでもない)

●コロン(:)について
英語ではある事柄について,場合分けして説明するときに使うことがあります.
英語圏の方にはわかりやすいけど日本人にはさっぱりなのですが.
でも今の話でコロンを使う意味はわかっていただけたのではないかと.
C系では「;」は文の終わり
Pascalでは「;」は文の区切り
こればっかりはどうしようもないので慣れてください。
いろんな言語があります。慣れりゃどうってことないです。

Delphiに関しては豊富な標準コンポや豊富なオンラインコンポ、
スキルアップしやすい環境など、
初期の違和感を補って余りある利点があります。
もうちょっと頑張ってその段階まで到達しましょう。
931922:01/11/12 20:12
>>929
930も書いてるけど微妙に意味が違うので、詳しくはヘルプの
「Object Pascal 言語ガイド」の「Object Pascal の文法」ってところを
見とけばよいよ。

でもなあ、俺もif then の後に<文>はあまりすぎじゃないね。
perlとかBASICの if then <文リスト>が好きだね。
932デフォルトの名無しさん:01/11/12 21:57
まあ字面が気に入らなきゃC#かRubyでもやるこった
933もういいだろ:01/11/12 22:34
バカに説法したがるやつの集まりかよここは
正直、うんざり
構文を自分で作りたい奴にはlisp/schemeを薦める。
括弧だらけになるがな。
935デフォルトの名無しさん:01/11/12 23:08
if(((((i = 0))))) then

Pascalも負けませんよ♪
936Delフサギコ:01/11/13 00:17
   ∧,,∧   / ̄
\,,,,ミ,,゚Д゚彡 < ここみて参考にしよーう
⊂,,,,,,,,,つつ.   \_

http://member.nifty.ne.jp/h_kova/procomp.htm

Pascal使いがC++/Java/VBを使うときも
いろいろ感じたりしますね。

それぞれいろいろあって、おもしろーいんじゃないですか?

関係ないけど、関数型言語って難しいです。
あと5分でダウソ終わります…
938Delフサギコ:01/11/13 00:48
  ,,,,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,,,,ミ,,゚Д゚彡 < そういえば、俺もJBuilderダウソしなければ。
  UU"""" U U    \_______________
>関係ないけど、関数型言語って難しいです。
なんかいろんなものに手だしてるみたいだけど
全部撃沈してねーか?
DUnitの使い方はマスターしたのか?(藁
>>939
単に新ものずきなだけだったり・・・
「温故知新」って言葉の意味も考えてみようね。
941Delフサギコ:01/11/13 12:48
   ∧,,∧   /ばれたか。>新ものずき。
@,,,ミ,,゚Д゚彡 < いろいろやってたのしいよ。
⊂,,,,,,,,,つつ.   \

 DUnitはザセーツ(ヤバッ
942_:01/11/13 19:18
バイナリファイルの一部(ヘッダ)部分だけを抜き出すにはどうすれば
良いのでしょうか?
>>941
ほんじゃ新しものずきのDelフサ君にここを教えてあげよう。
http://www.atmarkit.co.jp/fwin2k/xp_feature/013commandtool/commandtool.html
944 :01/11/14 00:25
>>942
バイナリファイルのヘッダはバイナリファイルの数だけあります。
945デフォルトの名無しさん:01/11/14 00:26
新規作成のダイアログってフォームだったんだね
946 :01/11/14 00:28
DelphiがDelphiで作られている以上そうだろうね。
947デフォルトの名無しさん:01/11/14 01:20
>>942
TFileStreamじゃな。
948デフォルトの名無しさん:01/11/14 02:31
誰が私をポップアップしたかわかりますか?
ヘルプの TPopupMenu にのってますよ (^^
よく読めやゴルァ!
>>938
>そういえば、俺もJBuilderダウソしなければ。
JBuilderをDelphiで作ってくれれば、pro版買ってもいいかな。
今のJBuilderだと、Athlon 1.4GHz Mem512MB でも遅くてイライラするよ。
スクロールマウス対応してないし。
951Delフサギコ:01/11/14 17:31
  ,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,ミ,,゚Д゚彡 < (男と女は)スレ違い〜♪
  UU""" U U   \_______________

と、思うですが、

>スクロールマウス対応してないし。
JBWheelというアドインがあるかと…
ホイルマウスはピュアジャバが対応していないのちゃうかと、小一時間問い詰め…

あと、ブレットだか、ビュレットだかという
Java開発環境がDelphi製でどこか日本の会社が出していたような。
952デフォルトの名無しさん:01/11/14 20:51
>あと、ブレットだか、ビュレットだかという
>Java開発環境がDelphi製でどこか日本の会社が出していたような。

google で探せども見つからず…
kylix でビルドして Linux 版とかいうのもあればいい鴨
953Delフサギコ:01/11/14 21:09
  ,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,ミ,,゚Д゚彡 < 俺の妄想だったかな。
  UU""" U U   \_______________
全然見つからない…
FireBirdにIBXで接続するISAPIアプリケーションを作っています。
IBDatabaseをひとつのクライアント(WEBブラウザ)
が開いてしまうと、他のクライアントが開けなくなってしまいます。
複数クライアントの同時接続はできないのでしょうか?
Win2000+Delphi6Pro+IIS5.0です。
著作権侵害で訴えられたんじゃなかったけ?
ほれ(紛らわしい社名だ)
http://www.saninc.co.jp/
俺はJBuilderでいいと思うが・・・
>>955
と思われそうなほどDelphiと酷似しているね…
これとBorlandの関係はどうなっているのかな?
958デフォルトの名無しさん:01/11/14 21:51
Bluette

http://www.saninc.co.jp/

会社名は Sun そっくり。
開発環境は Delphi のパクリ
さすが韓国製。
ワラタ
ここまでパクるとなんだかすがすがしい。
ボーランドがうちの真似したニダ!
962ハセヨ!:01/11/15 00:01
飛んでる人は何の意味ニダ?
963リサイクラー:01/11/15 01:45
割り込みでお知らせ

一時期のお祭り騒ぎも収まったのでDelphiスレも統合していきましょう
分散してると下がりがちなので。

とりあえずこのスレは
Delphi相談室その2
http://pc.2ch.net/test/read.cgi/tech/995950803/l50
に移動しましょう。
次のスレ名はどうしましょ?

過去のスレは探して↓にまとめてみました。
http://pc.2ch.net/test/read.cgi/tech/1002469894/951-

Delphi Tech と Kylix相談室が見つからないんで誰か教えてください。
Googleのキャッシュでも避難所でもなんでもいいです。
Delphi Tech
1 名前: D使い 投稿日: 2000/10/04(水) 05:57

http://piza.2ch.net/tech/kako/970/970606624.html
kylix相談室
1 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/03(日) 20:02

http://piza.2ch.net/tech/kako/975/975841367.html

玄タン....
966リサイクラー:01/11/15 02:03
あーGoogleで探せばよかったですねー
自分で言っといて忘れてました。
Thanxです。>>964-965
967リサイクラー:01/11/15 02:34
え〜ちょっと考えていたのと違ったようです。
相談室スレは初心者用でスタートしたと思ったんですが
ほっておくとDelスレは際限なくレベルが上がっていくようで・・・
どう考えても初心者向けじゃないので、

初心者→このスレ(の後継)
初心者以外→相談室スレ
マターリ→フサスレ

な感じでいいですかね?
ん?すると今と変わらないのか・・・
いいんじゃないんかな
統合スレってことで
統合しますか。
970デフォルトの名無しさん:01/11/15 07:44
 ∧ ∧
( ´∀`)( モナーのスレもよろしくモナー )
http://pc.2ch.net/test/read.cgi/tech/1003113413/
971もったいないのでネタ:01/11/18 23:49
pcharを、「ぴーちゃー」って読んだっていいじゃないか。
pcharを、「ぴーちゃー」って読んだっていいじゃないか。
>>971
そう読んでますが何か?
ピーキャラ♪ピーキャラ♪パッパパラパー♪
ピーキャラ♪ピーキャラ♪パッパパラパー♪
キャラ物系スレはランク・分類を乱すので廃止がよいな
Pet "Programming Pronunciation" Peeves
http://www.undu.com/Articles/991021a.html

によると、ピーケァーと読むべきなのか。
9761001:01/11/19 00:26
 
977小室カバーすんな。曲書けバカ!:01/11/19 00:30
つーか結局「初心者」の次スレは
http://pc.2ch.net/test/read.cgi/tech/995950803/
なの?このスレも終わりそう…。
「初心者2」は立てると怒られるワケ?
休日のDelスレの下がりようといったら・・・
>977
立てていいよ。俺様が許可する
>977
現在Delphi関係のスレが3〜5あってその内1〜2スレしかまともに機能してないから
どのみち建てても書き込みがないと思われ
時期的に >>979 はMS厨の煽りのような気がするけどどう?
相談室スレとフサスレの2本立てで行きましょう。
過去スレ一覧のDelスレは書き込みが900超えのが多い。ネタスレは除いて。
(フサ)ギコがDelスレ私物化する前は
きっちり棲み分けできてたのにまったく迷惑なこった
>>983
それよりTechがMLウォッチスレになったのが痛い(藁
MLウォッチスレを別に作れば?
裏 ML として機能するでしょ。

「ギコがDelスレ私物化」とはねぇ。話題を作れないからといってねたむことはないだろう?
ウォッチはネトヲチ板かマ板で。
>>983 あれだけ活動的に動いた&動かしたんだから評価されてしかるべきだな。
>>985
どーみたって私物化だろ、ありゃ。(w
989Delフサギコ:01/11/19 06:02
  ,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,ミ;゚Д゚彡 < ありゃ、叩かれてる?
  UU""" U U   \_______________

いやあ、流星きれいっすね。

すいません、私物化しちゃって、
できれば、どこかの何かで貢献したいものですが…

貢献といえば、マ板off会でも、2chの存続とかで
例の閉鎖騒ぎの話題で結構、いろいろネタが出てまして
P2P2chの進捗などを報告(誰に?)しなけりゃいけないことになってます。
pcharに1足すと二文字目が出てきますか?
>>990
1Byte文字ならね。
2Byte文字なら先頭かケツか考えなきゃダメ。

で、結局初心者スレはこれで終了かな?
一応誘導になりそうな物張っとくか。

ミ,,゚Д゚彡DelフサギコのフサフサDelphi談話室
http://pc.2ch.net/test/read.cgi/tech/1003664165/

モナーの *やさしい* Delphi質問スレ
http://pc.2ch.net/test/read.cgi/tech/1003113413/

techは止めとく(w
992デフォルトの名無しさん:01/11/20 21:50
1000!!
1000
1000!!
さっさと取れよ(ワラ
9971000!!:01/11/20 23:12
1000!!
998千と千尋の!:01/11/20 23:13
千と千尋の!
999千住のオバサン:01/11/20 23:14
千住のオバサン
1000shige:01/11/20 23:14
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。