フサギコの *やさしい* Delphi質問スレ Ver.12

このエントリーをはてなブックマークに追加
1フサギコ
           __________________________
   ∧,,∧    /Delフサギコがどんな厨房疑問でもやさしく答えます。
  ミ,,゚Д゚彡 < Delフサギコは時に私であり、時には別の人。
   U  つ∀ \他のスレに書き込んで罵倒される前に、まずここで質問しよう。
 〜ミ  ミ ┴    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ∪''∪ 
前スレ モナーの *やさしい* Delphi質問スレ Ver.11
http://pc2.2ch.net/test/read.cgi/tech/1042421592/l50
2フサギコ:03/02/17 19:16
■過去スレ

モナーの *やさしい* Delphi質問スレ Ver.10
http://pc3.2ch.net/tech/kako/1038/10388/1038880567.html

モナーの *やさしい* Delphi質問スレ Ver.9
http://pc3.2ch.net/tech/kako/1033/10336/1033668645.html

モナーの *やさしい* Delphi質問スレ Ver.8
http://pc3.2ch.net/tech/kako/1027/10278/1027873869.html

モナーの *やさしい* Delphi質問スレ Ver.7
http://pc.2ch.net/tech/kako/1021/10212/1021262086.html

モナーの *やさしい* Delphi質問スレ Ver.6
http://pc.2ch.net/tech/kako/1019/10191/1019134412.html

モナーの *やさしい* Delphi質問スレ Ver.5
http://pc.2ch.net/tech/kako/1017/10178/1017803412.html

モナーの *やさしい* Delphi質問スレ Ver4
http://pc.2ch.net/tech/kako/1016/10164/1016467137.html

モナーの *やさしい* Delphi質問スレ Ver3
http://pc.2ch.net/tech/kako/1014/10144/1014474727.html

モナーの *やさしい* Delphi質問スレ Ver2
http://pc.2ch.net/tech/kako/1011/10116/1011649179.html

モナーの *やさしい* Delphi質問スレ
http://pc.2ch.net/tech/kako/1003/10031/1003113413.html
3一応貼っとく:03/02/17 19:30
そうきたか。お疲れ。
>>1
Delフサギコの中の人も大変だな
まぁ、がんがってくれ
>Delモナー殉職

ワラタ
本当の初心者で何からやればいいか解らない。って人は、
とりあえず>>3を見てください。
リンクに初心者向けのサイトがあります。
げ、フサギコかよ。最悪。
>>9
あれじゃわかりづらいだろ。もうちょっと整理してくれよ。
12ネタ:03/02/17 23:31
>>9
フロントページで作ってるHPかよ!と思ったのはオレだけ?
Webbrowserに表示されているHTMLソースを得るにはどうすればいいのですか?
>>13
右クリック>ソースの表示
Delphiってwebとデータのやりとりってできるの?
>>15
proなら少し、Entなら沢山できそうです
トリップがないので偽物
1815:03/02/18 15:22
パーソナルじゃ駄目なのかぁ。・゚つД`)゚・。
パーソナルでもダメって事はないけど、パーソナルで苦労するより .NET かな
CGイラネ
F9で実行してからdelphiを終了すると
「delphi32が原因でKERNEL32.DLLにエラーが発生しました」
と必ず出ます。
ただdelphiを起動して終了した場合は出ないのですが、
最近delphiをはじめたばっかりなので
まったく理由がわかりません。
何故でしょう?
モジュール'USER32.DLL'のアドレス BFF45BA6でアドレス04345EC8に対する読み込み違反がおきました。
モジュール'CORERDE60.BPL.DLL'のアドレス005259AFでアドレス043F27ACに対する読み込み違反がおきました。
こういうのもでてました。
23Delフサギコ:03/02/18 17:29
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ;:・・.∴○;・.:∴       *     ☆
|      ゚     ⊂⊃   。
|         ☆,, ∧∧      *
|   ゚      ヽ(´∀`)ヘ
|      *    (□ノ)ノノ ゚.・∴..*.☆+
|     ⌒⌒⌒∪∪⌒⌒⌒⌒
|     ⌒  ⌒     ⌒ ⌒
|
| Delモナーさんはお空の上で幸せに暮らしているだろうか

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

質問はageでお願いします。
24デフォルトの名無しさん :03/02/18 20:10
Webbrowser上にあるボタンをクリックさせるようにしたいんですけど、

<input type=submit name="submit">

このようにnameが「submit」になっているので、
なぜかsubmit()とかclick()を使うとエラーが出ます。
何か他に方法はありませんでしょうか?
よろしくお願いします。
インターフェイスから直接叩くとかどう?
>>21
Borlandのページに置いてあるパッチを当てて、ちゃんとアップデートした?
あと、DelphiのバージョンとOSは?

>>26
personal 6 パッチ済み
です。
コンポーネントをインストールしてからなったと思うのですが
よくわかりませんでした。
たぶんどこかで操作を間違えたんだと思います。

とりあえず再インストールして解決しました。
28デフォルトの名無しさん:03/02/18 23:34
        ∫
   ∧,,∧ ∬       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ミ,,゚Д゚ノ,っ━~  <  >>27 とりあえず解決してよかったな
_と~,,,  ~,,,ノ_. ∀  \_よし、次!どんどん質問してよし!
    .ミ,,,/~),  .| ┷┳━
 ̄ ̄ ̄ .し'J ̄ ̄|... ┃   
 ̄ ̄ ̄ ̄ ̄ ̄ ̄   .┻
2915:03/02/18 23:44
>>16
できるじゃん!Indyコンポネート入れたよ!
まだ試してないけどできるっぽいよ!
        ∫
   ∧,,∧ ∬       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ミ,,゚Д゚ノ,っ━~  <  >>29 >16>19はC#厨.NET厨だから、相手にするな
_と~,,,  ~,,,ノ_. ∀  \_質問募集中〜!質問はないのか?
    .ミ,,,/~),  .| ┷┳━
 ̄ ̄ ̄ .し'J ̄ ̄|... ┃   
 ̄ ̄ ̄ ̄ ̄ ̄ ̄   .┻
31 :03/02/19 00:11
赤ちゃんはどこから来るの?
>>30
君には厨房を引き寄せる不思議な力があるようだ。
マ板かHSPスレに逝きなさい。
>>32
はぁ?hspを愚弄する気か?
住所とメアド教えろ!
遊びに行くから。
34デフォルトの名無しさん:03/02/19 00:52
海の水はどうしてですか?
津波だからです。
   ∧,,∧ ∬       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ミ-Д-ノ,っ━~  < 誰か質問してくんねーかなー
_と~,,,  ~,,,ノ_. ∀  \_誰も居ない…眠い…
    .ミ,,,/~),  .| ┷┳━
 ̄ ̄ ̄ .し'J ̄ ̄|... ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄   .┻
>>36
あんた誰?
38デフォルトの名無しさん :03/02/19 01:37
>>36
じゃあ>>24に答えてください。お願いします。
>>33
遊びに行くのにメアドが必要な理由は何故ですか?
山は死にますか?
>>39
今は友達になると携帯メアド交換がセットだからでしょう。
42デフォルトの名無しさん:03/02/19 03:54
ListViewでListView.Selected.EditCaptionの様な感じで
SubItemを編集可能状態にしたいのですが
EditCaptionが使えないようで参ってます

今はダイアログを出して変更させてるのですが
できれば一列目のCaption編集と同様にやりたいので…

いい方法ありませんでしょうか?
>>42
TEdit を SubItem の位置にそれらしく表示させて入力させる。
Delphi7について教えてください。

D5で作ったプロジェクトそのまま移行できますか?
下位互換性ってどんなもんなんでしょ?
乗換えを考えているんですが…
宜しくお願いします。
>>44
変なことしていなければ。
.DCU に互換性が無いから、ソースが無い 3rd party コンポーネントを
使っているとちょっと苦労するかも。
標準コンポーネントと自分のコードでできているのなら、楽勝。
Delphi6で
他人のプロジェクトを開きフォームをドラッグだけして保存した後
メモ帳でフォームファイル(dfm)の中身を新旧で比較すると
微妙におかしな所が変更されていて困ってます。
objectの
Text='あああ'
の部分が
Text='#0123'
という感じに置き換わってしまいます。

解決法方をご存知でしたらよろしくお願いします。
47組込もしまっせ:03/02/19 09:17
>>47
ありがとうございます。
文字化け解決しました。

が実はフォームの継承がうまくいかないのが悩みの種なのです。
ドラッグし保存しただけで継承がおかしくなるので
フォームファイル(dfm)関係かと思っていたのですが
的外れだったようです。
引き続き心当たりのある方情報よろしくお願いします。
4944:03/02/19 12:56
>>45
有難う御座います。
なるほど…そんなら私は問題無い!
最終Verになりそうだから買っておこう。
        ∫
   ∧,,∧ ∬       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ミ,,゚Д゚ノ,っ━~  <  他人のプロジェクトを使う時は、.cfg, .dof, .dsk
_と~,,,  ~,,,ノ_. ∀  \_ファイル内のパスを置換したほうがいいかもな
    .ミ,,,/~),  .| ┷┳━
 ̄ ̄ ̄ .し'J ̄ ̄|... ┃   
 ̄ ̄ ̄ ̄ ̄ ̄ ̄   .┻
.cfg, .dof, .dsk
それぞれどういう役目なんだ?

52デフォルトの名無しさん:03/02/19 14:39
Webページの内容をテキストで欲しい場合に
全て選択>コピー>貼り付けの作業で実現しようと思ったのですが

WebBrowser1.Navigate(Edit1.Text);
WebBrowser1.ExecWB(OLECMDID_SELECTALL, 0);
WebBrowser1.ExecWB(OLECMDID_COPY, 0);
Memo1.PasteFromClipboard;

を実行していった時に、
WebBrowser1.ExecWB(OLECMDID_COPY, 0);
'登録されていないドロップ先の登録を解除しています'
というエラーが出てしまい止まってしまいます。

この場合の解決方法と他によい方法あればヒントでも頂けないでしょうか
宜しくお願いします
IEコンポーネントを使い倒すスレ
http://pc2.2ch.net/test/read.cgi/tech/982930049/l50
>>52
別のやり方だけどこんなんでどう?

Usesに MSHTML_TLBを追加

procedure TForm1.Button1Click(Sender: TObject);
var
Doc: IHTMLDocument2;
begin
Doc := WebBrowser1.Document as IHTMLDocument2;
Memo1.Text := Doc.body.InnerText;
end;
5552:03/02/19 18:10
>>54
>Usesに MSHTML_TLBを追加
をするとMSHTML_TLB.dcuが見つかりませんのエラーでした。
もう少しがんばります レスありがとうでした
5654:03/02/19 18:37
ActiveXコントロールのインストールで
Microsoft HTML object Libraryを取り込むべし。
タイプライブラリの取り込みでもいいかもしれない。

Textの取得タイミングはNavigateしたあとOnDocumentCompleteがきてから。
OnDocumentCompleteに取り込みコード置くのがいいかも
57デフォルトの名無しさん:03/02/19 19:50
initialization時に生成したコンポーネントのComponentStateと
実行した時のComponentStateが空になってしまったんですけど
コンポーネント側でなにか区別する方法ありますか?
5857:03/02/19 20:01
>>57
えと単純に今、実行中なのかそれ以外なのか区別したいので・・・
ちなみにcsDesigning in ComponentStateではできない感じでした。
>>51
cfgプロジェクト環境設定ファイル
dofDelphi オプションファイル
dskデスクトップ設定
60デフォルトの名無しさん:03/02/19 21:50
Delphi7付属のInstall Shieldのことで質問させてください。
OSは開発環境、動作環境ともにwinXPです。

Delphi7で作成したプログラムのインストーラを付属のInstall Shieldを使って作成しました。
このときBDEの設定の際に、インストール先のBDEのPATHパラメータを以下のように設定しました。

エリアス名:Delphi
PATH=C:\Delphi\

作成したインストーラをDelphi7がインストールされていない端末にインストールし、このときインストールされたBDEAdministratorで
確認したところ、インストーラ作成時に設定したPATHがしっかり設定されていました。
しかし、このインストールしたプログラムを一度アンインストール(windowsの「アプリケーションの追加と削除」を実行)し、
もう一度同じ端末にインストールしてBDEAdministratorで確認すると、
インストーラ作成時に設定したPATHではなく、開発環境のBDEで設定されている同エリアス名(config)のPATHが設定されていました。

BDEのPATHの設定の仕方が悪いのでしょうか?それともレジストリをいじらないといけないのでしょうか?

TMemoはメモ帳互換のはずなのにユニコードを入力できません。
Font.Charsetにもユニコードがつかえません。
何とかなりませんか?
6246:03/02/19 22:47
>>48
でフォームファイル(dfm)の継承が〜
の件ですが
Delphiの再インストールしたら症状が出なくなりました。
結局原因は謎のままです。
ありがとうございました。
63デフォルトの名無しさん:03/02/19 23:23
indyについてなんですが、

http://www.google.com/search?hl=ja&inlang=ja&ie=Shift_JIS&q=indy&btnG=Google+%8C%9F%8D%F5&lr=
↑みたいに、cgiの後ろにパラメーター?がついたurlを送って、
返ってくるページを読むにはどうすればいいのでしょうか?
indey.get()じゃ読めないです・・・。
64デフォルトの名無しさん :03/02/20 01:57
>>63
素直にwebbrowserを使いなさい
        ∫
   ∧,,∧ ∬       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ミ,,゚Д゚ノ,っ━~  <  TNMHTTPでも、普通にGetできるぞ。
_と~,,,  ~,,,ノ_. ∀  \_Indyって、そんなに使えないモノなのか?
    .ミ,,,/~),  .| ┷┳━
 ̄ ̄ ̄ .し'J ̄ ̄|... ┃   
 ̄ ̄ ̄ ̄ ̄ ̄ ̄   .┻
>>63
Googleは、Indyデフォルト設定のUserAgentだと弾かれます。
なんで、インスペタで別の名前に設定してあげてください。
67デフォルトの名無しさん:03/02/20 12:35
        ∫
   ∧,,∧ ∬       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ミ,,゚Д゚ノ,っ━~  <  …ageてみるか…
_と~,,,  ~,,,ノ_. ∀  \_________
    .ミ,,,/~),  .| ┷┳━
 ̄ ̄ ̄ .し'J ̄ ̄|... ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄   .┻
6852:03/02/20 13:16
>>56
ありがとうございました
無事に取得できました。
69デフォルトの名無しさん:03/02/20 14:06
60日間トライアル版を使って作成したプログラムって、60日間経つと
Delphi自体はともかく、作ったアプリケーションも実行できなくなるのっ
て本当ですか?
>>69
『M$から「Windows .NET Server 2003 RC2 360日間限定評価版」
 というのが送られて来たけど
 360日を過ぎるとハードディスクをフォーマットしてしまうっ
 て本当ですか?』
というのと同じような気が・・・
作ったアプリは使えなくなるよ。
そのせいで、ちょっぴりズルしようとしたらえらいめにあった。
72デフォルトの名無しさん:03/02/20 16:23
>>69
60日の期限が切れたらDelphiはともかく、そのDelphi
で作成したアプリケーションも使えなくなります。
73デフォルトの名無しさん:03/02/20 16:37
なんでDELPHI7のアップデートはいつまでたっても出ないの?
すでにDel8が出荷準備中だからです。多分間違いないと思う。
いやガラガラ蛇の開発に手を取られているんじゃないかな・・・ って フサギコの名前付いてると雑談スレ化し易くなって
いやD7アプデート期間延長のDMが来たのでD8の開発は相当遅れています。
77デフォルトの名無しさん:03/02/20 17:32
テスト
78ねこま:03/02/20 17:37
期間延長!期間延長!!って毎度 DM 送りつけられてもねぇ
しらけるよ.
いまのところ欲しいのは dbExpress だけ
79デフォルトの名無しさん:03/02/20 18:52
デルフアイでォープンソウスな大作ソフトって何かありますか?
delphiで作られた有名ソフトって何がある?
http://pc2.2ch.net/test/read.cgi/tech/990056026/l50
    ∧,,∧  コロコロ
    ミ゚Д゚,,彡 
  σ⊂  ∪ミ   仕事忙しすぎで
┳┳ (~,,(~,,,ミ@   激しく遅くなりますた


.bpg プロジェクトグループファイル
.dpr プロジェクトファイル
.dpk パッケージファイル
.pas パスカルソースファイル
.dfm Form定義ファイル(Kylix/CLXでは.xfm)
.res リソースファイル
.dcu コンパイル済みユニット(Kylix/CLXでは.dpu)
.bpl 実行時パッケージライブラリファイル(Kylix/CLXではbpl….so)
.dcp パッケージバイナリイメージ
.cfg プロジェクト環境設定ファイル
.dof プロジェクトオプションファイル(Kylix/CLXでは.kof)
.dsk デスクトップ設定ファイル(もしくは.desk)
.dcr ダイナミックコンポーネントリソース、コンポーネント用のリソースファイル
.ddp ダイアグラム情報ファイル
.tds 外部デバッグシンボルテーブルファイル
.todo TODO設定ファイル
.dci 支援機能設定ファイル
.dct コンポーネントテンプレート設定ファイル
.dmt メニューテンプレート設定ファイル
.dro リポジトリ設定ファイル
.dsm ???
レ+ファ#+ラ+ド
もちろん俺はレ+ファ#+シだぜ!
フォームにEditのみ3個乗っているアプリがあったとして、
FindWindowExでEditのハンドルを取得しようとすると、
いつも同じEditが1つだけしか取得できないのですが
Edit3個のそれぞれのハンドルを取得するにはどうすれば良いのですか?
>>84 自分で作ったアプリ? それとも人のというか既製の?

既製のなら、 EnumWindows で順に探すか、 FindWindowEx でも探せるはずだけど?

もしかして、Editが3個乗ってるように見えて、必要なEditBoxを1個しか使ってないかもしれないよ
昔はリソース減らす為に、そんな事もやってたから
86デフォルトの名無しさん:03/02/21 08:37
>>79

OpenJaneDoe
gikonavi ?

8860:03/02/21 10:40
>>60の補足として、
Delphi5のInstallShieldで作成したインストーラだとうまくいっていました。

この事象に関して解決策を知っている方がいましたら
教えていただけないでしょうか。
89デフォルトの名無しさん:03/02/21 10:55
リストボックスを使用してまして、リストのある項目のみ色を変更したいのですがうまくいきません。
ListBox1.Items[0].Font.Color := clRed;
とやるとレコード、オブジェクトまたはクラスのいずれかが必要です
のエラー

そもそも色が変更できないのか、対処法あるのかどうかどうか教えてください。
オーナードローしか無いです。
Style = lbOwnerDrawFixedにして自前で描画。
91デフォルトの名無しさん:03/02/21 13:24
InstallShieldのBDEの設定で、
PATHパラメータに[INSTALLDIR]といったディレクトリ識別子は使えるんでしょうか?
2ちゃんねるブラウザの6割はDel製ですな。
Visio + Delphiはいつのバージョンで実現するのかな?
94デフォルトの名無しさん:03/02/21 16:20
タイマーコンポーネントがツールバーにないんですけど
どうやったら追加できますか?

それかタイマコントロール以外でなにかありますか?
95デフォルトの名無しさん:03/02/21 16:23
>>92

>2ちゃんねるブラウザの6割はDel製ですな。 =DQNばかりってこと?

君がそう思うのならそうなんでしょう。
97デフォルトの名無しさん:03/02/21 16:31
プログラムを終了させるコマンドはENDですか?
98デフォルトの名無しさん:03/02/21 16:37
システム時計の時間と分と秒をしる関数はありませんか?
>>94
>>98
探せばある
100デフォルトの名無しさん:03/02/21 17:21
どうもあまり言語になれてないみたいです
タイマーコントロールは見つかった^^;
プログラム終了コマンドも見つかったhalt

システム時計GETの関数が見つかりません><
そんでもって、線をひきたいのですが
MoveToメソッドが定義されてませんだっておこられました
TFormにメソッドがないんです
どうやってフォームに線を引いたらいいでしょか?
うにゃー
お茶をこぼしてしまったよ。
>>100
TForm::Canvasは知ってるかい?

WindowsのUIで使われる線ならGroupBoxで簡単。
なんで2chブラウザってDelphi製が多いわけ?
ひねくれ者が多い、Delphiは癖がある、2ch者は癖がある。
これ以上何がある?
>>104
タダでIDE配ってるからだろ。

と、普通に返してみる。
106デフォルトの名無しさん:03/02/21 17:58
>>102
ちょっと知りません
手元の参考書で
イベント処理のところに
いきなりこう書きました
with canvas do この書き方しりません
begin
moveto(100,100);lineto(20,20);
end;
そしたら引けました
VC++をしたことあるのですが、オブジェクトパスカルは
ややこしいです
>>103
暇な学生プログラマが多いから

と、適当に予想してみる。
>>106
Form1.Canvas.MoveToで指定位置に移動
LineToで指定位置まで線を引く
>>106  ? MFC だって CDC::LineTo で同じじゃないかと思うのだが?
        ∫
   ∧,,∧ ∬       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ミ,,゚Д゚ノ,っ━~  <  isnot演算子がないのは何か特別の理由でもあるんかいナ?
_と~,,,  ~,,,ノ_. ∀  \ while not (item is TAClass) do ...
    .ミ,,,/~),  .| ┷┳━ while item isnot TAClass do ...
 ̄ ̄ ̄ .し'J ̄ ̄|... ┃  下のほうがsimple&smartのような気が。。。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄   .┻
>>110
どうせなら演算子を自由に定義出来ればいいのにね
Adaにはありますね。A not in B だったかな?
単にPascalではサポートして無いってだけでしょ。でも欲しいのは同意。
ついでにcase文で

case AObj of
TheClass: …;
AnyClass: …;

なんて書きたかったり…
113デフォルトの名無しさん:03/02/21 20:33
>>112
isnot はいらないけど
その下のは激しく欲しい

みんなどうやってる?
>>113
AObj.Hoge;
>>111
Adaでさえできたのにねえ。
もう「でるぽい」はだめぽ。
>>113
多態
117デフォルトの名無しさん:03/02/21 22:22
少々お尋ねします。
MSアクセスで開発済みの顧客管理とか販売管理とかのシステムがあります。
これをパッケージのような形にして、代理店に配布する計画があります。
将来的には自社サーバーをたてて、B2Bのようなこともしたいです。
そこで開発ツールを何にするか、現在社内でもめております。
いろいろ見聞きして、開発しやすさ、メンテナンスのしやすさで
DELPHIかなと思っておりますが、本屋さん行っても
C#とかVB.NETとかが圧倒的に多く、迷っております。
あとあとのことを考えると、どれがよいでしょうか?
ご意見をお聞かせ願えれば幸いです
118デフォルトの名無しさん:03/02/21 22:26
フサギコって誰?アフォ?
>>118
アフォはフサギコじゃない。
フサギコなのはおまえのほうだ。
>>117
5年くらい担当が変わらないなら、がんばればどれでも良い。
1年くらいなら、パッケージソフトに業務をあわせる。
かな?
121113:03/02/21 23:04
すんません意味がわかりません・・・
case AObj of
TheClass: …;
AnyClass: …;

これが欲しいという発言にどうして
>AObj.Hoge;
>多態
なのでしょうか??

ヘテロなオブジェクトツリーをよく作るので、何かいい方法が無いかなと思い発言しました。
よろしくお願いします。
case Sender.Tag of
1:
begin
end;
2:
begin
end;

とかよくやるけど
if obj.ClassName = "MyClass" then ... else ...;
とか is でやればいいのでわ?
case文使うような箇所にはvirtual関数使えってことでしょうね。
自分もふつーそうしますが、対象クラスを書き換えられなかったり書き換えたくなかったりして、
時々if Obj is XXX then … else if Obj is YYY then … なんて書かざるを得ないので
112で書いたような機能が欲しいなーと思うこともしばし。
実際except節ではそういうことができるので、普通の分岐文として書けてもいいじゃないですか、ねえ?

//実はDel.NETでclass helperが使えるようになれば解決だったり
>>124
対象クラス「自身」でやる必要ないだろ。
クラス参照と処理用のメソッドのペアを登録して検索。
まあ本来のcaseのセレクタは順序型だし、
それを拡張するとpascalではなくなるし。
まあ、delphi言語とすればいいのだろうが。
クラス型、文字列、整数、実数、オブジェクトの内容、参照を個別に対応するのは無理だし
かといってどれか一つだけ対応するのもばかげている。
なので===演算子のオーバーロードのない言語では無理。
   ===

  -===-

 -==・==-
129NOT 116:03/02/22 00:33
>>121
多態が分かっていれば誰でも多態と答えると思うぞ。
分からないなら多態がさっぱり分かってないということだ。
130NOT 121:03/02/22 00:47
ヘテロなオブジェクトに対し、多態とはこれいかに。
USBオナホールを動かすにはどうすれば?
132NOT 116:03/02/22 01:28
>>130
ヘテロは 121 で追加された条件。
ヘテロが追加される以前の返答ならそんな特殊条件を考えないから当然多態という返答になるだろ。
そして、そんな条件を持たない連中が多態と答えるのが理解できないのなら多態が分かってないということだ。

最後に私は多態でヘテロができるかどうかには答えた気はない。
勘違いされてもしかたない書き方をしたというのは認める。
        ∫
   ∧,,∧ ∬       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ミ,,゚Д゚ノ,っ━~  <  たまに見るclass helper・・・って、ナニ?
_と~,,,  ~,,,ノ_. ∀  \ ↓これと何か関係があるとでも?
    .ミ,,,/~),  .| ┷┳━ ttp://staff.aist.go.jp/y-ichisugi/mj/papers/mj-20020830.pdf
 ̄ ̄ ̄ .し'J ̄ ̄|... ┃  
 ̄ ̄ ̄ ̄ ̄ ̄ ̄   .┻
134121:03/02/22 04:24
わたしの脳味噌でのデフォルトがヘテロだったため盲目的になっていました
指摘されて気づきました。どうもてす
確かに可能なら多態かinterfaceですね。

ヘテロだと、わざわざcase文にするためにTClassList.IndexOfを使ったりします。
        ∫
   ∧,,∧ ∬       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ミ,,゚Д゚ノ,っ━~  <  無料版使わないで買えよおめーら。
_と~,,,  ~,,,ノ_. ∀  \
    .ミ,,,/~),  .| ┷┳━ 
 ̄ ̄ ̄ .し'J ̄ ̄|... ┃  
 ̄ ̄ ̄ ̄ ̄ ̄ ̄   .┻
「ヘテロ」ってどういう意味?
13784:03/02/22 08:06
>85

ちょっと遅くなりましたが、レスありがとうございます。

既成のアプリで、上から順に3個Editがあるのですが

var
Hnd1,Hnd2:HWND;
begin
Hnd1:=FindWindow('クラス名', nil);
SetForegroundWindow(Hnd1);
Hnd2:=FindWindowEx(Hnd1,0,'Edit',nil);
end;

こんな感じでやると、常にHnd2には、1番上のEditのハンドルが入るのですが
2番目、3番目のEditのハンドルを取得するにはどうすればいいのですか?  
>class helper
Delphi.NETでCLRの型をPascalの型に見せかけるために用意された構文。
既存の型に後付けでメソッドを追加できるが、悪用すればMixJuiceモドキが可能となる。
139組込もしまっせ:03/02/22 10:56
>>137
Hnd2が1番目だから2番目3番目は Hnd2:=FindWindowEx(Hnd1,Hnd2,'Edit',nil); とループすればいいはず

でも、

function EnumChildProc(hw:HWND; param:TFtest):BOOL;stdcall;
var s,t:string;
begin
s:='';
SetLength(s,1000);
GetClassName(hw,PChar(s),Length(s));
t:=PChar(s);
GetWindowText(hw,PChar(s),Length(s));
s:=PChar(s);
param. Memo1.Lines.Add('CLASS='+t+' txt='+s);
Result:=True;
end;

function EnumProc(hw:HWND; param:TFtest):BOOL;stdcall;
var s:string;
begin
s:='';
SetLength(s,1000);
GetWindowText(hw,PChar(s),Length(s));
s:=PChar(s);
if s='Form1' then EnumChildWindows(hw,@EnumChildProc,Integer(param) );
Result:=True;
end;

みたいな感じにして
EnumWindows(@EnumProc,Integer(Self) );
で検索開始をかけた方が、自分は楽だな
>>103
使いやすいから

と、マジレスしてみるテスト
141デフォルトの名無しさん:03/02/22 17:39
TTreeViewで[Del]キーと[BkSp]キを押したときノードを削除する処理を
以下のように書いたのですが[Del]キーだけ受け付けてくれません。
試しに他のフォームでテストプログラムを作って試すと[Del][BkSp]と
もうまくいくのですが…
うまくいく方とうまくいかない方のTreeViewのプロパティを比較して
いろいろいじくってみたのですがうまくいきません。。
考えられる原因として何か分かる方おられたらアドバイス頂けないでしょうか?

procedure TForm1.TreeView1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
Node: TTreeNode;
begin
Node := TreeView1.Selected;
if Node = nil then Exit;
case Key of
VK_BACK, VK_DELETE: Node.Delete;
end;
end;
>>141
メニューのショートカットにdelを割り当ててるんじゃないの?
143141:03/02/22 19:31
>>142
あ、もろビンゴです。お恥ずかしい…
けどかなり悩んでいたので助かりました。
ありがとうございます!
マウスをクリックしながらキーを押したときにアクションを起こさせたいのですが、
OnKeyDownやOnKeyUpイベントに

if ssLeft in Shift then ShowMessage('Test');

のようなコードをいろいろと試してみましたが全く反応がありません。
OnKeyDownのTShiftStateに対してssLeftやらssMiddleのような
マウスの状態を指定することは出来ないのでしょうか?
>>144
マウスをクリックしながらキーを押す動作が想像できないんだけど、
GetAsyncKeyState じゃだめかな?
146デフォルトの名無しさん:03/02/24 08:21
クラスAでクラスBを使い、クラスBでクラスAを使うのって
どうtype節に書けばいいの?
>>146
type
 TB = class;
 TA = class
 private
  FB: TB;
 end;
 TB = class
 private
  FA: TA;
 end;
148デフォルトの名無しさん:03/02/24 09:15
アナログ時計作ってるんですが算数に悩んでいます
中心点からたとえば、2時を指す場合最終点はどうやって
計算すればいいでしょうか

サインとかコサインならったようなきがするんですが、、、
ttp://www.nifty.ne.jp/forum/fdelphi/samples/00078.html

そういえばDelにはVBみたいなCircleメソッドが存在しないなぁ
使い道がないから?WinAPIに存在しないから?

ソフトをインターネットエクスプローラーからのアイテムのドラドロ
(例えばブラウザからのドラドロでスクラップできる「紙」とかみたいに)
に対応させるにはどうすればいいんでしょうか?
ブラウザからリンクをドラドロしたらそのURLを受け取るようにしたいのですが…
151デフォルトの名無しさん:03/02/24 10:01
>>149
うーんサンプルの貼り付け方がわかりません^^;;
タイマーコントロールにOnTimerイベントがオブジェクト
インスペクタに出てこないんです><
タイマーコントロールのイベントにはFormCreateが出てます
おかしいです
>>151
再起動汁。そしてTimerコンポーネントをダブルクリック汁。
153デフォルトの名無しさん:03/02/24 10:21
>>152
Timerコンポーネントはできました

あとは関数でエラーがでます
GetXとGetYです
関数の宣言と実装をしかるべきところに貼り付けたつもりなのですが
エラーになってしまします。
宣言は、パブリックにはりつけました
実装は、Inprimentetion直下にはりつけました。

うーんどうすればよいのか、おかしいです
154153:03/02/24 10:32
GetXとGetYの宣言はなんだろう?
TFormのメソッドでもなし、TTimerのメソッドでもなし
そういえば普通の関数ってどうやって宣言するのだろう、、
155デフォルトの名無しさん:03/02/24 10:36
ListBoxを使っておりまして、項目をダブルクリックすると
その項目のTextを取得するにはどうすればよいのでしょうか?
156153:03/02/24 10:38
関数の宣言は宣言部のtypeに書いたらあかんね、、
宣言部のvar以下に書いたらいけますた

すまそ
>>149
VBみたいな と言うのがどういうことかわからんけど Arc とか Ellipse とかじゃ駄目な理由があったら教えて
158153:03/02/24 11:06
フォームを円形にしたのですが
フォームのタイトルバーがあるので時計の中心が変になります
タイトルバーをけすにはどうすればいいですか?

そうするとアプリの移動とかできなくなるけど時計らしいので、、
理想としてはクライアント領域でドラッグできたらいいのですが
>>158
BorderStyle と WM_NCHITTEST あたりかな?
160153:03/02/24 12:43
>>159
クリックイベントの際にlParamがないのですが
どうやってメッセージを判断すればよいですか?
161159:03/02/24 13:14
>>160
ん? オレへの質問か?
いまいち趣旨がよくわからん
162153:03/02/24 13:25
>>161
すまそ
メッセージ処理はどうやったらいいかわかりません
>>162
キーワードを教えてもらったら
http://www.google.co.jp/search?q=WM_NCHITTEST+delphi

こうやって、自分で調べる事。

自分だって、そういう 「どうやったらいいか」なんて聞かれても、困ってしまうだろ?
164153:03/02/24 13:54
>>163
サンプルをそのまま使ってもあれなので自分なりに解釈してみました
サンプルが難しいです、、、
ttp://www.borland.co.jp/qanda/delphi/d0002348.html
##サンプル##
{このメソッドはいつ呼び出されるのか?}
{Mの型はTFormにはないはず、、入れ子?}
procedure TForm1.WMNCHITTEST(var M: TWMNCHITTEST);
begin
 inherited;{ 継承されたメッセージハンドラの呼び出し}
 {TFormのメソッドを使うと思う。でもどのメソッドを継承したかわからない} 
if M.Result = htClient then { クライアント領域がクリックされたか? }
 M.Result := htCaption; { もしそうであれば,タイトルバーが }
{ クリックされたと Windows に思わせる }
end;
165159:03/02/24 14:22
>>164
{このメソッドはいつ呼び出されるのか?}
WindowsからWM_NCHITTESTメッセージが送られたとき。


{Mの型はTFormにはないはず、、入れ子?}
Message.Pas で定義されている (右クリック→定義の検索 でみれるかも)


{TFormのメソッドを使うと思う。でもどのメソッドを継承したかわからない}
TFormの標準の動作を使う。メソッドになっているとは限らない。
TFormはWindowsのウインドウの動作を継承している。


{ クライアント領域がクリックされたか? }
クリックに限らずすべてのマウスイベントで発生していることに注意。


わからない単語はどんどん検索しよう。
protected
procedure WMNCHITTEST(var M: TWMNCHITTEST); message WM_NCHITTEST;

この定義で使ってる message をヘルプで調べてみたら?
ディスパッチを勝手に自動的にやってくれるとても便利な機構だよ
167153:03/02/24 15:44
>>165
###{このメソッドはいつ呼び出されるのか?}
###WindowsからWM_NCHITTESTメッセージが送られたとき。
procedureの宣言をみるとprocedureがWM_NCHITTESTを返しているように見えるんです、、
CALLBACK関数みたいな感じでしょうか?

###{TFormのメソッドを使うと思う。でもどのメソッドを継承したかわからない}
###TFormの標準の動作を使う。メソッドになっているとは限らない。
メソッドや関数やAPIでないとすると、、理解が非常に苦しいです
Delphiで、エクスプローラーからファイルコピー & 移動 & 削除などを
管理できるようなソフトって作れるんですか?
これはディレクトリの指定とか無しで。
サンプルプログラムかソースがあったら嬉しいっす。
169153:03/02/24 15:53
>>166
message指令がヘルプにあったので参考にしました
感想::どこでも実装できる機能だとわかった
  ::でもなぜに、継承するのか?謎
procedure WMNCHITTEST(var M: TWMNCHITTEST); message WM_NCHITTEST;
の宣言でWMNCHITTEST型はヘルプでありませんでした、システムで定義されている
ものなのでしょうか?
メソッド名称もWMNCHITTESTである必要はないのでしょうか?
メソッド名称は変更してもとおりました。
Mの型名は変更すると怒られました。

171153:03/02/24 16:27
>>170
ちょっとわかりやすいです。原始的な感じでOK
172159:03/02/24 16:31
>>167
まあ、落ち着いてお茶でも飲め。

WM_NCHITTESTを返しているように見える? : と ; に注意。
[ウインドウメッセージ]とか[メッセージハンドラ]あたりがキーワード。


メソッドや関数やAPIでないけどWindowsの内部処理。
あえて言うならDefWindowProc APIの動作。

SDKでプログラムを書くとわかりやすいけど基本的な動作のかなりの部分はWindowsが面倒をみてくれる。
ウインドウを作れば基本的なウインドウの動作を、ボタンを作れば基本的なボタンの動作をWindowsが処理してくれるわけ。
で、プログラマは拡張した動作を記述すればすむ と。

基本的な動作
 キャプションでウインドウを移動できる
 ウインドウの枠でサイズ変更ができる
 ボタン上でマウス押下するとボタンがくぼむ
 
拡張した動作
 キャプション以外でもウインドウを移動させる
 ウインドウの枠でサイズ変更されたら中身の再配置
 ボタンがクリックされたら何かの処理を開始する

まとまりない文章でごめん
173Move 手続きの引数:03/02/24 21:20
procedure Move(const Source; var Dest; Count: Integer);
 Move 手続きの第1、第2引数の型はいったい何なのでしょう? ヘルプファイルの例
var
 A: array[1..4] of Char;
 B: Integer;
begin
 Move(A, B, SizeOf(B)); { 安全のため,SizeOf 関数を使う }
end;
を見ると第1引数はポインタ、第2引数はIntegerと思いますが文字列をコピーするような使用例を見ると
var
 S: string;
 n,Count: Integer;
 p: PChar;
begin
 Move(S[1], n, Count);
 または
 p := PChar(S);
 Move(p^, n, Count);
end;
というような例があり、そうなると第1引数はChar型なのかと、第2引数はどうやらInteger型らしいと思いたくなりますが
var
 B, L: Byte;
 Buffer: array [0..1023] of Byte;
 P: PChar;
begin
 P := @Buffer;
 Move(L, P^, SizeOf(L));   // length of keyword
end;
というような例では第2引数はいったい何の型なのか(逆参照が示す型はChar型だと思いますが……)ますます訳がわからなくなってしまいます。
const Sourceは変更不可能な型無しパラメータ
var Destは変更可能な型無しパラメータ
Cのvoid*みたいなもんだ
175デフォルトの名無しさん:03/02/24 22:14
Keybd_event(VK_SNAPSHOT, 0, 0, 0);

↑これでキーを押すのができるらしいですが、
Windowsのマークのキーを押すにはどういう文字を入れればいいんですか?
VK_WINDOWS
>>150さん
  ∧,,∧  どっかの有名などらどろコンポーネントを
 ミ,,゚Д゚彡 インスコ汁。
 ミつ日(ミ
海外製だけど英語全く出来なくても
インスコ&使用に問題なしでつ。

>>158さん
タイトルバはBorderStyle bsNoneだったっけ?
フォームを円形にできるオマイさんでしたら
[暗い餡と領域][ドラドロ]をキーにして
検索しると、答えはニフでもエムエルでも
見つけられると思われ。
ありがとうございます
<xml attr="hoge"> hogehoge </xml>


上のXML文書で、xml要素のattr属性の内容( この文書ではhoge )や、
要素の中身( この文書ではhogehoge )を調べるにはどうすればいいんですか
>>179
お金があるなら Entを買う。 
お金が無いならパーサを自分で作る

それもやりたくないならMSXML か Xerces を使う



C#なら只で簡単にできるよ。
VB.NETでも只で簡単にできるよ。君たちは認めたくないだろうけど。(大爆笑
まあdelでもmsxmlを使えばいいだけの話。
OpenXMLで検索してみ。それ以外でもフリーのXMLパーサなんて沢山あるから。
ちなみにEntじゃなくてPro以上。
どんな手使おうが、次のバージョンでVB.NETと同じAPIを後追いするわけだがな。( ゚,_・・゚)ブブブッ
ええと、真面目に答えておくと、TXMLDocumentというのを使う。
ヘルプは何故かEntにしか無いみたいだけど、実はPro版以上に搭載されてる。
単純なのでXMLDoc.pasに書かれた宣言見ればすぐわかると思いますよ。

…金が無い場合は、>>180-185に習って
>181, 182, 185
いちいちこういう発言が出るまで見張ってるのか?
気持ちわる……
188デフォルトの名無しさん:03/02/25 04:47
ExitWindowsEx(EWX_REBOOT,0);
これを使っても再起動しないんですが何故ですか?エラーも出ない
>>188
仕様です。再起動用BIOSが搭載されてないマシンでそうなります。
スレ毎にNGワード設定できる2ちゃんねるブラウザって無いのか?
191お約束:03/02/25 09:16
>>190
PGなら作れ!
192153:03/02/25 09:34
>>172
###WM_NCHITTESTを返しているように見える? : と ; に注意。
あーほんとだ。
メッセージ処理の構文だと覚えて、、、

###DefWindowProc
ウィンドウプロシージャにはすべてのメッセージが届くを思っていましたが
そうではないのですね、、、

###拡張した動作
なるほど。基本動作と拡張動作で切り分ければわかりやすいです
ということは、message処理等を行うということは
OSの提供する機能をカスタマイズして使う
そして、VCLは基本的にOSの提供する基本機能をAPIを
ラップしているということと、、、思いました
193153:03/02/25 09:36
>>177
### 暗い餡と領域][ドラドロ]をキーにして
ドラドロはひっかかりました
194bloom:03/02/25 09:37
196デフォルトの名無しさん:03/02/25 10:46
TTabControl のタブの文字を縦書きにするにはどうしたら宜しいのでしょか?
>>196
TabPosition := tpRight で
Font に縦書きフォントを指定

tpLeft だと逆さになるのね ^^;
>>197
うわ、ほんとだ。縦書きフォントなんてあるんすね・・・
縦書き=#13を一個一個入れる になってました。
ありがとうございました。(tpLeftは使えないという事っすね)
199153:03/02/25 12:52
演算子がわかりません

C言語みたいに
A += A;をしたいんですけど
A +:= A;だと怒られました

探してみましたが、こういうのはないみたいですね

>>199
どうせネタだろうけど・・・。

A := A + 1;
201153:03/02/25 12:57
ある場所に文字を表示したいのですが
Canvas.TextOut(CX - int(let/2) ,CY - 20,str);
[エラー] Unit1.pas(134): 'Integer' と 'Extended' には互換性がありません
と怒られました
CXもletもintegerなのになぜでしょうか?
202153:03/02/25 13:17
マジ質です、すいません、、、
>>200
それは違うだろ

A:=A+A;
A:=2*A;
inc(A,A);

じゃないのか?

>>201

実数の割算してるからだよ / じゃなく DIV にしなさいな

>>202
Delphiヘルプから
| x/y の値は,x と y の型に関係なく,常に Extended 型になる。

Canvas.TextOut(CX - (let div 2) ,CY - 20,str);

とかは?
>>201

function Int(X: Extended): Extended;


代わりにTrunc関数、もしくは"/"演算子ではなく、"div"演算子(整数除算)を使うのがよい

Trunc(X: Extended): Int64;

しかし、このケースではRound関数の方が良いかもしれない。

203-205 ジュウコーン
207153:03/02/25 13:47
DivもRoundもいけました。
inc(A,A);がスマートで好きです
ありがとうございます
208デフォルトの名無しさん:03/02/25 13:57
HTMLのソースの中から絶対パスのURLのみを抜き出す方法ってありますでしょうか?
209デフォルトの名無しさん:03/02/25 14:01
ビット操作ってどうやるの?
>>209
どんな操作がしたいの?
212153:03/02/25 15:06
設定のダイアログ機能をつけたいのですが
コントロールはOpenDiarolを使うのがふつうですか?

ポップアップメニュの項目を選択→設定ダイアログボックスがでる
モーダレスででてOKボタンを押したら反映して消える、、、
213デフォルトの名無しさん:03/02/25 15:07
>>210
なんとなくできました♪
どうもありがとうございました
214元VBプログラマ:03/02/25 16:26
昨日から見よう見まねでDelphi(Personal6)をはじめたのですが、
配列をfunctionの引数にするところで躓いています。

procedure TForm1.ButtonClick(Sender: TObject);
var
 wBuf: array of Byte;
 i: Integer;
begin
 SetLength(wBuf, 6);
 wBuf[0] := 1;
 FillArray(wBuf);
 wBuf[5] := 100;
end;

procedure TForm1.FillArray(Buf: array of Byte);
var
 i: Integer;
begin
 for i := 1 to 4 do
  Buf[i] := i * 5;
end;

を実行したときに、wBufの値は(1, 1, 10, 15, 20, 100)になってほしいのですが、
結果は wBuf(1, 0, 0, 0, 0, 100)となってしまいます。
ブレイクポイントで確認したところ、FillArray内では 1, 10, 15, 20を割り当てているようなのですが、
FillArrayから抜けた瞬間に 0が割り当てられているみたいです。

配列を引数にして、その配列に値を割り当てるのはこの方法は間違っているのでしょうか?
VB6で通っていたコードがそのままで通らない(厳密になっている?)のですが、めげずに何とかしたいです。
ご存知の方、わたし厨房で申し訳ないのですがお願いします。

215デフォルトの名無しさん:03/02/25 16:33
ソースの中で ’ を使いたいのですがエラーが出てしまいます。
例えば、if t = ''' then のような
tが'と等しかったらというような事をしたいのですが
何がよい方法ないでしょうか?
>214
procedure TForm1.FillArray(Buf: array of Byte);
じゃなくて
procedure TForm1.FillArray(var Buf: array of Byte);
だよ。
ちゃんとvarつけないと代入できんです。

>215
アスキーコードで指定すればいいんじゃない?
'''' でもいけます。
''''''''''''''''
219元VBプログラマ:03/02/25 17:11
>>216

ありがとございます。
ご教授いただいた方法でうまくいきました。
感謝しております。
オフィスXPで使われているような、
透明ぽいポップアップメニューのコンポーネントはありますか?
FormatSettings : TFormatSettings;
のようなのはDelphi7からしか使えないんですか?
TClientSocketを使って、
送信した時のエラーはどうやって取得すればよいのでしょうか?
一生懸命 レスしてたけど・・・・最近疲れちゃった・・・・タッチしてくれ
>>220
ペルソナルにはありません。
なんでモナーじゃなくなったの?
フサギコなんて嫌だ
モナーの中の人がフサギコだったのさ。
227153:03/02/26 09:25
TForm1(Unit1)の記述の中でTForm2(Unit2)をShowModalさせたいのですがうまくいきません

Unit1
TForm2.ShowModal ソースコードの補完の段階で失敗します

Unit1とUnit2を関連づける方法はどうするのですか?
ゆーず汁!!
>>215

#$27
230223:03/02/26 09:45
ふう、もう少しがんばってみるか

>>221 Yes
>>222 OnError イベントで ( もし取れないエラーがあるなら WSAGetLastError )
>>227 TForm2 は型名 Form2 が変数名だから Form2を使えば IDEが uses しますか?って聞いてくれる・・・かも
'''' { ' }

' でヘルプひけば出てくるはず
232228&229:03/02/26 09:59
>>223

otukaresamadesu. sukoshiyasundekudasai.
233デフォルトの名無しさん:03/02/26 10:23
>>216>>217>>218>>229>>231
こんなにも沢山のレスありがとうございます。
無事にできました♪

また質問なのですが、HTMLソースをCGIを使っているページから取得しよとするとエラーがでます
Memo1.Lines.Add(IdHTTP1.Get(Edit1.Text));
これは元々不可能なことなのでしょうか?
234デフォルトの名無しさん:03/02/26 10:35
整数の桁数を得たい場合、(1000 = 4, 9999999 = 7 等)
わたしには if の連発か、文字列にしてしまうぐらいしか思いつきません
ほかに良い方法があったら教えてください。
よろしくおねがいします。
trunc(log10(n))+1
素朴なギモン。
変数定義って、ローカル変数よりグローバル変数のほうが全然便利に思えるんだけど
ローカル変数を使うメリットって何?
同じ変数名が使える(違う関数部で)とかメモリ領域とかに関係あんの?
>>236
全ての変数をグローバルにして10000行程度のプログラムを書いてみると分かると思うよ
もっともDelphiの場合、ループ変数をグローバルにすることは許されないけど
(仮にループ変数をグローバルにできたとして
 同じループ変数を使っている別の手続き・関数をループ内で呼び出したら
 どうなるか考えてみるといいよ)
238234:03/02/26 11:02
>235
ありがとうございました。
勉強になりました。
239223:03/02/26 11:08
>>236
人間は一度に そんなに大きなものを緻密に設計したり考えたり出来るように作られていません。

そこで、小さな単位に分割して、その機能や概念に名前を付けて ものを考えたり設計したりするわけです

その小さな機能に分割したものはその単位内で十分簡単でシンプルで独立していた方がいいでしょう?

グローバル変数を使うと、その単位は独立ではなくなります。
たとえば、複数のスレッドで同じ関数を使ったり出来ない訳です。

>>232
よし、任せたよ。
あなたが、とてつもない記憶力と管理能力の持ち主で、数百行のソースコードの
どこを読んでいるときでも、すべてのグローバル変数の用途を把握しており、
かつ、複数のスレッドが動いているときや複雑なイベント/メッセージのやり取りの
最中でも、すべてを自分で制御する自信があり、
かつ、そのソースを別の仕事/作業を終えた後、一月くらいしてから読み直しても
すらすらと理解できるほどの理解力とコメント記録能力があるのなら

すべてグローバル変数/関数でプログラムしても良いのではないか?
241240:03/02/26 11:12
うわ。みんな親切..
質問でゲス。

Delphi7で作ったコンポーネントがDelphi6で読み込めないのは気のせい??
初めてコンポーネントを作ってみようとしているのでワケがわかんないです。
もう少し調べてなんかわかったらまた書きます。

よろしくお願いします
>>242
Del6で使いたければソースをDel6でコンパイルしてインストールしる
244236:03/02/26 12:45
>>237-241
なるほど、設計者の、設計のためなのね。親切なみなさんありがとう。
>>243
それが、Delphi7にしかないコンポーネントを親コンポーネント(?:上位クラス?)にしたものを
インストールできるようにしたいんです。

と、確認してみようとしたら…あれ?
弄り回したせいかDelphi7から目的のコンポーネントが消えた!?
と、思ったらいじったときに作ったTemplatesにあった。
動作している模様。
一安心です…

コンポーネントの上位クラス(ここら辺もよくわかってませんが)の指定を変えればいくのでしょうかね?
調べていろいろ試してみます。

(初心者ですみません)
>それが、Delphi7にしかないコンポーネントを親コンポーネント(?:上位クラス?)にしたものを

…そりゃ無理っしょ。
Del6にも似たようなのがあるなら{$IFDEF}で切り分けるとかさあ
247デフォルトの名無しさん:03/02/26 13:34
ttp://home1.infonia.ne.jp/~delphian/delphi/
ここ以外でコンポーネントが豊富にあるオススメ日本語HPを教えてください。
>>246さん
やはりそうですか。
じゃああきらめます。

(☆∀☆)!(アイデアひらめきぃ)
Delphiにはじめからついているコンポーネントのソースって手に入らないのでしょうか?
手に入れば移植もできなくは…ないと思うのですが…
どうなのでしょうかねぇ?
その前にソース字体手に入るものなのか......?
>>248 お金出せば手に入るよ
>>248
Pro版買ってね。
>>249
まさか、あなたに…

>>250
Pro版だとどうやればいいのでしょうか?
>>251
Pro版以上だとSourceというフォルダにほとんどのソースが入っていて(一部例外あり)
とても勉強になるのでし

メッセージループなどが実は昔ながらのスタイルでちゃんと実装されていて
Delphiが紛れもなくTurbo Pascalだということも教えてくれるのでし
返事したのにかかれてないみたいですね。

>>249
だれにですか?

>>250
一応Pro版だったらどうしたらみれるのでしょうか?
ミスです…
>>252
回答は、ありがとうございました。
256227:03/02/26 15:03
uses句に使うことを宣言するのですね

Unit2でTFormをTForm2として継承してForm2でインスタンスしています
それでUnit1でForm2を参照しようとするには
Unit1のuses句でUnit2と書けばいいのでしょうか?
257デフォルトの名無しさん:03/02/26 17:06
10進数を2進数にするにはどうすればいいのですか?
        ∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       ∩゚Д゚彡 < もしもし、回答者の増員をおねがいすます。
□………ミつ  彡  \_________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
. .          |
.             |
259デフォルトの名無しさん:03/02/26 17:26
>>257
小学校の算数で習った気がするが・・・
開平は中学校の数学だったかな。
ともかくその手順をアルゴリズムにすればいいわけで。
まず自力でやってみろ。話はそれからだ。
>>259
わかった
>>256
相互参照する時は少なくとも一方は
interface部ではなくimplementation部へ書く必要があるよ

参照するユニットの宣言を宣言部で使用しているのでなければ
通常はimplementation部のuses節へ書く

どうしてもinterface部での相互参照になってしまうようなら
同じユニットに書かなければならない
262デフォルトの名無しさん:03/02/26 17:40
>>260
>10進数を2進数
これができないとアタタタ符号化の真似ができないもんな(w
分かりにくかったかな
×参照するユニットの宣言を宣言部で使用しているのでなければ
×interface部で相手のユニットを参照しているのでなければ
うぐっ・・・2行目が○だ・・・
>>263
余計分かりにくい
mod 2 mod 2 mod 2 mod 2でいいのだよな?
  ∧,,∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡  < >>257 IntToBin関数で変換
  ミ  つ    \_________
〜ミ,,_U
268デフォルトの名無しさん:03/02/26 18:19
>IntToBin
>ユニット IdGlobal
>IntToBin 関数は,Integer 値のバイナリ文字列表現を返します。
>
>function IntToBin(Value: cardinal): string;
>パラメータ
>Value: cardinal
>変換する Cardinal 値
>
>戻り値
>String - Integer 値のバイナリ文字列表現
>
>説明
>IntToBin は,32 ビット Integer 値のバイナリ表現を構築する String 関数です。IntToBin の戻り値は,整数 Value のビットごとに「0」または「1」を格納します。
269デフォルトの名無しさん:03/02/26 18:20
しまった、ひとあし遅くてカブったか。
スマソ、打つ
270デフォルトの名無しさん:03/02/26 18:24
そのIndyコンポーネントはDelphyパーソナルにも入っているのか?
BCB6Pro.には入っていたが。
いや、DLしてきてインストールすればいいだけだが。
271デフォルトの名無しさん:03/02/26 18:26
>>270
「DLLしてきてインストロールすれば」と書け
272デフォルトの名無しさん:03/02/26 18:30
基本的なことで申し訳ないのですが…。
ReWriteを使ってファイルに一行書き込むには、
Writelnを使えばいいのですが、
既存のファイルの終端に書き込む場合にはどうすればいいのでしょうか?
ファイルの終端をキャッチできればいいのですが…。
>>267
>>268
だんくす
>>272
Append
>>272
TFileStream使ったら?
持ってる本をレビュってみた
中級者以上向けの本を持っている人感想を聞かせてくだちい

http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5BDelphi%B4%D8%CF%A2%BD%F1%C0%D2%5D%5D
>ところでパーツ単位の描画でCustomImageListを動的に生成して使おうと
>してるんですが、ちょっと困ったことが。
>128*128pixelサイズのBitmap(←TBitmap)に、マップチップ画像が存在しているとして
>MapTip := TCustomImageList.CreateSize(8,8);
>MapTip.AddMasked(Bitmap, clBlack);
>みたいなことしたら、なぜかMapTip.Countが16に。256になってホスィのにー
>ちなみに、Bitmapには画像が正常に読みこまれていることを確認しますた。

コピペにて失礼します。別の板で話題に出したのですが、解決に至りませんでした。
結局、自作の関数で代用したのですが、この事が気にかかっています。
どこかで使い方を間違えているのでしょうか?まずい点がありましたらご指摘下さい。
278デフォルトの名無しさん:03/02/26 21:33
DBGridでマルチセレクト指定しているのですが
Ctrlキーで1つ1つ選択を増やす事はできるのですが
Shiftキーで範囲指定ができません
ほかに何か設定が必要なのでしょうか?
>>277
単に縦方向は読み込まないという仕様ではないかと。
280デフォルトの名無しさん:03/02/26 22:28
var x, y, z: Byte;
x shr y and z = (x shr y) and z
↑あってますよね?
281デフォルトの名無しさん:03/02/27 00:33
age
>>280
演算子の優先順位のことを言っているのなら
shrとandは同じなのでその通りだけど
乗除と加減のようにどの言語でもほぼ共通というのでなければ
括弧を付けておく方が無難だと思うよ
(ちなみにその文自体はコンパイラを通らないけど
 そういうことじゃないと解釈)
283デフォルトの名無しさん :03/02/27 01:36
MediaPlayerを使ってMP3ファイルを再生したんですけど、

with Mediaplayer1 do begin
FileName:='C:\test.mp3';
Open;
Play;
end;

なぜかこれだとウィンドウが勝手に閉じてしまいます。
どうすればちゃんと再生できるんですか?
よろしくお願いします。
>>283
んで、このコードをどこに書いたのよ。
>>284
紙の上
範囲型の全集合を返す演算子や関数は用意されていないですか?

type THoge = 0..10;

if (a in [Low(THoge)..High(THoge)] then
 HogeMoge;

と書くのが単調だと感じています。

type THoge = 0..10;

if (a in UniversalSet(THoge)] then
 HogeMoge;

みたいなものって用意されていないですか?
const Hage = [0..10];

と定数を定義したらいいんじゃないの?
288272:03/02/27 10:26
遅レスですが…教えてくださった方々、ありがとうございます。
289227:03/02/27 10:36
>>261-263
Inplimentation節の直下にuses節がつかえるなんて驚きです
Interface節のuses節は型宣言で使用するときに使うのですね

@節についてのまとめ@
Unit節 一番上で必ず必要で外部からの参照名称を決めることができる
Interface節 必ず2番目に書き、クラス宣言や変数宣言ができる
 type句 を必要なときに必要な数だけ書くことができる
uses句 を必要なときに必要な数だけ書くことができる
 var句 を必要なときに必要な数だけ書くことができる
     宣言と同時に値の代入もできる
    あとconstとか
Inplementation節 必ず三番目に書き、Interface節での実装を記述できる
 uses句 を必要なときに必要なだけ記述できる
 interface節とInplementation節のuses句はInterface節に統一したほうが
 わかりやすいようなきがします
C言語のインクルードくらい単純であれば、、、
290227:03/02/27 10:50
ちょっと不思議に思ったのですが
type節でTFormの継承やそれにのっかるTButtonなどのオブジェクト
変数とメソッドを宣言していますが、普通のIntergerなどの変数が
宣言できないのはなぜでしょうか?せっかくprivateとかあるので
変数が宣言できてもいいように思えます。
 type節の直下のvarでクラス設計の変数を宣言すると考えるのでしょうか
しかし、varでtype節で宣言したTFormをインスタンス化しているし
どうも不思議なobjectパスカルです
>>289
少し複雑なコード群を記述すると、interface と implementation の両方に
uses を書ける理由がわかるよ。

C/C++ のインクルードは単なるファイルの参照でしかないので uses のメカニズムとは
ちょっと違う。単純だから応用も利くけどなんでもできるから始末が悪い。
>>290
>普通のIntergerなどの変数が宣言できないのはなぜでしょうか?
>せっかくprivateとかあるので変数が宣言できてもいいように思えます。
できますけど・・・普通に宣言してますけど・・・
ただし、privateより上の部分は直接編集しないのが普通(ここはDelphiが使うpublish部)
イベントハンドラを消さないでコンポーネントを削除してしまった場合に触ることがある程度
published
294227:03/02/27 11:04
>>291
なるほど、
ありがとうございます
295227:03/02/27 11:14
>>292-293
できますた

private
var test:integer; ← ×
private
test:integer; ← ○

勘違いしたました
type
X = 0..10;

で0 - 1 = 10 にはならないのですか?
297デフォルトの名無しさん:03/02/27 11:56
Delphiを勉強したいと思うのですが
3000円以内くらいのおすすめの本があったら教えてください。
プログラムの経験はvisual basic4.0のころに少ししたことのある程度の超初心者です。

スレ違いだったらスマソ
スレ違いではないがあまりのFAQで・・・
296 の質問の意図がわからないよぉ...
mod 11 もどきを期待している。っていみかなぁ?
>>289

> C言語のインクルードくらい単純であれば、、、

非OO言語との比較は無意味では?
301227:03/02/27 15:01
>>300
   ∧,,∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡  <すいませんよくわかりません;汗
>>299
Byte型だと255を超えると0にもどるのを
10とかでやりたいと
>>302
列挙型でも部分範囲型でも言語レベルではそうなっていない模様
そういう動作をさせたいならプロパティにして実装するのが吉
>>303
やっぱりそうですか。
ありがとうございました。
305デフォルトの名無しさん:03/02/27 18:01
Idhttp1.Get(URL);
を行ったときに「日付に変換できない値が渡されました」というエラーがでました。
どのURLかは不明なのですが、このエラーの原因と対応ってありますか?
情報が少ないですが、ヒントだけでも構いませんので宜しくお願い致します
306デフォルトの名無しさん:03/02/27 18:04
ローカルの動的配列変数を文字列変数のようにnilで初期化しない理由は何でしょうか?
307デフォルトの名無しさん:03/02/27 18:23
delphiでwebブラウザを作るにはどうすればよいのですか?
308デフォルトの名無しさん:03/02/27 18:24
>>307
Delphiでコンパイルする。
>>308
うっせ。クソ。氏ね。ネタしかかけないなら出てくんな。
>>309
マジレスですが・・・
>>310
あほか。delphiでwebブラウザ作るって聞いてんだから
webブラウザのソース出せ。
>>311
2ちゃんねる用ブラウザ「OpenJane」Part59
http://pc2.2ch.net/test/read.cgi/software/1045985106/
>>312
それでいいんだよ。ったく最初っから出せよな。
314307:03/02/27 18:39
あ、なんか自己解決しました。
すいません
>>310
>>312
自己解決したってよ。お疲れさん。
>>311
パクリ厨氏ね
>>316
はぁ〜ん。誰がパクリ厨だって〜?
自己解決したって言ってんだからレスすんなよ。
放置しろって(w
超マジレス
http://www.mozilla.org/
319デフォルトの名無しさん:03/02/27 18:47
>>318
超ネタだろ。delphiで作ったブラウザのソースだせよ。放置できないしと。
>>320
begin
webbrowser.home;
end;
>>321
そうそう。それでいいんだよ。もう自己解決したみたいだがな(w
323デフォルトの名無しさん:03/02/27 19:04
DelphiでUNIXライクなOSをつくるにはどうしたらよいのでしょうか。
超マジレス
http://www.linux.org/
>307-324
他人が見て面白いことを書こう
大勢の読者がいることを意識しましょう。
http://www.2ch.net/before.html
>>325
全員が面白いと思うことを書くのは不可能ですよ。
俺が面白けりゃそれでいいのです。
ここは2ちゃんねるですよ。
でるふぁいを学ぶのに最適なサイトをおせーて。
>327
MLの過去ログ
>>327
ヘルプとマニュアル
サイトと書いてあるので、マニュアルは適切な答えでは無い

http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5B%A5%EA%A5%F3%A5%AF%5D%5D#content_1_3

この辺へ逝くといいかも
何が最適かはその人による
>279
遅レスですが有難うございました。
少し分からない所があるので失礼します。
すごく初歩的な質問だとおもうのですが、
フォルダ内のテキストファイルをデータとして取り込んで
行単位で削除したり追加したり読み込んだりと編集しながら扱いたいのですが、
いちどTmemoオブジェクトなどに読み込んで
Linesプロパティで作業すればいいのかと思ったのですが、
これでいいのでしょうか?
writelnやreadlnを使うのかとも思ったのですが、それよりは上に書いたような方法の方が
扱いやすいような気がしたりして、そのあたりが良く分かりません。
よろしくお願いします。
333332:03/02/28 00:40
データとして扱うというのは内部のデータとしてという意味です。
なのでmemoはvisible:=falseです。
334 :03/02/28 00:41
>>332
TStringlist.Create;
>>332
正解です

その機能は元々TStringsから派生しているものだから
TStringListでも同じことができるけど
インスタンスの生成と破棄をちゃんとできるようになるまでは
TMemoを使うのが無難ですね
336335:03/02/28 00:45
>>334
ちょとかぶた
337332:03/02/28 00:53
>>334-336
返答ありがとうございます。
Tstringlistというものも知らなかったので
これから勉強してみようと思います。
どうもありがとうございました。
338デフォルトの名無しさん:03/02/28 06:05
private
 FTest: string;
end;



private
 FTest: string;
published
 property Test: string read FTest write FTest;
end;
こんな風に、プロパティを一気に作ってくれる機能がDelphiのエディタにあったような記憶があるのですが、ショートカットが思い出せません。
いまヘルプを見ているのですが、それらしい記述がみあたりません・・・
知っているかたどうか教えてください。それともぼくの思い違いでしょうか?
>>338
Ctrl押しながらF8
すばやいレスありがとうございます
でも何もおきないのですが・・・
>>340
property Test; Integer;
の段階でCtrl+Shift+Cだったかな?
342338:03/02/28 07:19
おおっ出来ました!
ありがとうございます>>341さん
これ Set メソッドができてしまうんですねー
343338:03/02/28 07:24
「クラス補完」機能だったんですね。
「各種の編集コマンド」ばかり見ていました。
>これ Set メソッドができてしまうんですねー
これも当たり前か
344227:03/02/28 14:53
タスクトレイのアイコンをシステムでないものに変更したいのですが
変更の仕方がわかりません。
FIconData : TNotifyIconData;
FIconData.hIcon := Application.Icon.Handle; {アイコン指定}
これで、Delphiのアイコンになるのですが
Delphiアイコンエディタで作成さいたアイコンを指定するには
どうすたらいいですか?
>>344
TIconを知らないわけでもあるまい。
346227:03/02/28 15:28
>>345
サンクス
フォームのアイコンを指定してみました
347227:03/02/28 15:41
アナログ時計作ってまして、なんとかリージョンで
フォームを円形にしました。

そこで、時計の針と数字だけを表示してその他は透かしたいと思い
TFormのアルファブレンドを20位にしたら全部透けてしまい
ました^^;
針と数字だけをアルファブレンドの対象外にするにはどうすればいいですか?
348デフォルトの名無しさん:03/02/28 15:52
>>347
別のフォームを重ねればいい
時針のフォーム、分針のフォーム、秒針のフォーム
透過できる環境ならTransparentColorで透過してみれ。
350349:03/02/28 15:54
>>348だった
351227:03/02/28 16:13
>>348
時針のフォーム
 位置を計算して棒状にリージョン
分針のフォーム
 位置を計算して棒状にリージョン
秒針のフォーム
 位置を計算して棒状にリージョン
そして重ねる
うーん、アプリをドラッグするときが難しそうです
>>349
試しましたが反応しません、カードが対応してないということですか?
ttp://www.dotnetmagic.com/features.html
こういう感じのメニューとかタブとかをDelphiでできますか?
>>352
フラットスタイル?
354352:03/02/28 17:12
なにスタイルだか知りませんが、VS.NETのIDEスタイルです。
以前、このC#用コントロールをDLしましたが、
C#だとこれ用のDLLをいっしょに配布しないといけないんです。
DelphiならEXE単体にできますよね?

主に、タブを切り替えたり閉じたりするボタンと、
アクティブページの色を指定したいです。
副に、メニューの外観を変えたいです。
355349:03/02/28 17:27
>>351
そうかもしれないですね。

確認
・TransparentColorがTrueで、TransparentColorValueがきちんと設定されているか
これでだめだったら別の方法を。
356ねこま:03/02/28 17:28
ドッキングウインドウのキャプションなら同じの作った
もろに面倒くさいけどできるよ
タブもメニューもできる
タブの×ボタン付けるのどうやるんだろ?

昔は結構、こういった外観を変えたコンポーネントを作ったものだけど
流行がコロコロ変わるから追いかけるのが面倒くさいし、
もしかしてこういうのって標準のコントロール使っておいて、
各ユーザーが使う外観を変えるソフトとかXPのビジュアルスタイルとかに
まかせる方がユーザーにとっても親切なのではないか?
という考えになってめっきりやらなくなった
357デフォルトの名無しさん:03/02/28 18:40
Windowsで動くGUIアプリを趣味で無料で作るなら、C#とDelphi、どちらがオススメですか?
説得力ある理由をキボン。
趣味で無料でだったら、自分の好きな方という他ないが…
>>357
マルチすんなよ。C#スレにも投下してたろ。
>>357
Delphi。軽いから。
Delphiスレだから。
>>357
他に欲目が無くて(自分のスキルがどうとか)
純粋に今の時点で優劣を言うならGUIアプリについてはDelphiだろうね。
使おうかどうか迷ってるんですけど、
Quadruple Dで3Dのオブジェクトのアニメーション(例えば歩行など)は
できるのでしょうか?
363デフォルトの名無しさん:03/02/28 22:55
ちょっと質問したいことがあります。
私は最近Delphiを始めたばかりの超初心者です。
以前、MS-DOS時代には一応BASICをかじっていたことがあるのでDelphiをはじめてまずやろうとしたのがBASIC言語で記述するのなら
PRINT "メッセージの表示"
(フォーム上に無条件に表示する)
と同じことなのですが、どうやってよいのやらさっぱりわかりません。
皆さんアドバイスお願いします。
最終的な目標として、私はシュミレーションゲームを作ってみたいと考えています。
皆さんが参考にしている書籍などがあれば同時にその書籍名と出版社を併記していただければ幸いです。
>>363
  with TLabel.Create(Self) do
  begin
    Parent:=Self;
    Top:=0;
    Left:=0;
    Caption:='メッセージの表示';
  end;
>>364
解放どうすんの?
with TLabel.Create(Self) do

ってことは 
たぶんTform1のイベントハンドラに書いてあるだろう
なので self は Tfrom1を指す つまりオーナーがTform1なので
解放はTform1の解放時に同時に解放されるかと。
>>363
新規作成でコンソールアプリケーションを選んで、WriteLn("メッセージの表示");から入ってみれば?
フォームへの道は遠くなってしまうけど、DOSの頃と同じセンスでいけるので、とりあえずDelphiに慣れることはできる。
>>366
いや、parentをTFormにしただけじゃTFormがLabelを自分の子だと知る術はない。

ブラジルで「俺はあんたの子供だ!」と名乗ってる奴なんぞ認知できないわけで。
基本かもしれないけどOwnerが解放されたとき一緒に解放されるんですか?
今までむだにdestructorに解放コード書いてたのかしら。
>>368
>>366が言ってるのは、ParentじゃなくてOwnerの話だし、
Ownerはちゃんと所有コンポーネントを解放してくれる。

>>369
される。
>368
釣り?本気?
本気なら、とりあえずヘルプ読め
TComponent.Create
>>368
366の通り、Create(Self)でオーナーが示されているからちゃんと破棄はされる
(Parentはインスタンスの破棄には関係しない
 364の例ではオーナーがそのままParentになっているというだけ)

でも364の書き方はあまりDelphiらしくはないよね

>>363
素直にフォームにラベルを貼り付けるのが普通
373372:03/03/01 02:21
あらら、のんびりしてたらかぶっちゃった
374372:03/03/01 02:26
>>369
いいんでねーすか?
自分でCreateしたものは自分でFree(またはRelease)する習慣にしておけば
間違いはないでしょ

失うものもこれといってないのだし
>>372
>でも364の書き方はあまりDelphiらしくはないよね
生成する数や位置が設計時に決められない場合
実行時に生成するのはよくあることでは。

>>374
>自分でCreateしたものは自分でFree(またはRelease)する習慣にしておけば
>間違いはないでしょ
そうともいえない。
TComponentはOwnerに破棄を任せる。
TObjectは自分でFree/FreeAndNilする。
Interface継承すると参照カウンタを考慮しつつ(半)自動的に破棄される。

いずれにしても長い人生一度はConstructor/Destructorに
ShowMessage('Create')なんかのメッセージ表示を仕込んでおいて
上の三種類のオブジェクトがどんなタイミングで破棄されるかを実験しといたほうがいいよ。
>生成する数や位置が設計時に決められない場合
>実行時に生成するのはよくあることでは。
動的にコンポーネントを生成するのはもちろん普通なんだけど
「変数宣言なしで」というところが「らしくない」ということでし
with文の濫用がよい習慣とも思えないので
377デフォルトの名無しさん:03/03/02 02:36
メインフォームだけのアプリケーションで、メインフォームを見えなくするにはどうすればいいんですか?
VisibleをFalseにしても表示されてしまいます

Application.ShowMainForm := False;
をプロジェクトファイルのApplication.Run;の前に追加。
ドモ
380デフォルトの名無しさん:03/03/02 11:34
Delphiによるオブジェクト指向プログラミングの方法を教えて☆
「オブジェクト指向プログラミングの方法」って
なんじゃそりゃ・・・
VB厨?
382デフォルトの名無しさん:03/03/02 11:49
>>381
ばれちゃった?(T_T)
ごめんなさいね(T_T)
>>380
Delphiを起動する→フォームが表示されている→オブジェクト指向プログラミングのはじまりはじまり〜
384デフォルトの名無しさん:03/03/02 18:02
Delphiを起動し、フォーム上にLabelコンポーネントを配置したら、
オブジェクトインスペクタ→プロパティ→Captionからではなく、
プログラム上からこのCaptionが変更できるのならその方法を教えてください。
>>384
Label1.Caption := 'ちょっとは頭使えや。';
386デフォルトの名無しさん:03/03/02 18:27
>>385
Label1.Caption := '産休べりーまっち';
387デフォルトの名無しさん:03/03/02 18:31
>>383
ということはなんとなく使っていればオブジェクト指向になるんですか?
実はオブジェクト指向という言葉の意味自体、よく分かっていないんです(T_T) なんか流行っているらしくて(T_T)
>>387
オブジェクト指向って言う概念自体、多岐にわたりあやふやになってるところがあるね。
>>387
Delphiを使っていれば、自然とオブジェクト指向、コンポーネント指向が分かってきます。
↓見て、とにかくDelphiを使ってみましょう。
http://www.borland.co.jp/delphi/papers/vbtodel/index.html
>>389
結局クラスライブラリを覚えられるかどうかだよ。

最低限そこに到達しないとオブジェクト指向の利点はわかりにくい。
391デフォルトの名無しさん:03/03/02 23:20
ポインタの初歩的なことはわかったんだけど、どんなことに使えばいいの?
教えてください
>>391
どこかのDelphiスレで同じような質問があったよ。

結論は参照があるからポインタは滅亡。とか言う頭悪いとしか思えない物だったけど。
393391:03/03/02 23:41
何か初心者でもできるようなのを教えてください
394 ◆qVtare/k3c :03/03/02 23:42
>>391
そりゃ使うときがやってきたら使う(しかない)、としか胃炎だろ。
例えば引数が「T○○型」じゃなくて「P○○型」で宣言されてる関数使ったり、
TListにデータ入れたり、TTreeView/TListView.Item.Dataにデータ入れたり、
WindowsAPI直接使ったり、などなど。
395 :03/03/02 23:46
オレも長いこと利用価値が分からんかった…。
要するに、
○入れ物ごと、ごっそり渡す
○入れ物の場所「だけ」を教える
どちらが良いか?ってことなんだ…よね?(^^;
>>393
文字列の長さをLength関数ではなく、ポインタで求めてみよう。
>>394
比較的問題外。

>>395
まぁ、そうなんだけど。

>>396
楽しいか?それ。
ポインタと参照の定義にもよるけど…
仮にポインタとは参照にアドレス演算の機能を追加したものと考えると

関数などにデータの位置だけを渡す…どちらでも可
リンクリストや木構造を作る…どちらでも可
DIBなどに書き込む…ポインタ
バイナリデータを使う…ポインタ
(interfaceの_AddRef他、様々な言語orIDEの支援を受ける…参照)

な感じかなあ。
399398:03/03/03 00:26
で、比較的楽しいのは、TBitmap.ScanLineに直接書き込んでみるとかどうだろう。
DirectXでテクスチャをロックして…でもいいけど
400396:03/03/03 00:43
文字列のメモリブロックのレイアウトはヘルプのメモリ管理に載ってるよ。
初心者のポインタの練習としてはこの程度でいいのでは?
401 ◆qVtare/k3c :03/03/03 01:11
比較的問題外っていわれても…
だってDelphiはポインタ「も」使えるってだけで、
ポインタ推奨じゃないし。むしろ使わない方向で設計されてるんだし。

>>391は初心者を免罪符にしてるか単なる釣りにしか思えない。
そんなにポインタ使いたけりゃC言語使えばいいじゃん。
>>401
GetMem
NULLで終わる文字列
TList

どこがだよ。
403 ◆qVtare/k3c :03/03/03 01:17
>>402
そんなの初心者が使わないだろ。
中・上級者だったら目的に応じてポインタ使うか使わないか選択できるだろ。
初心者だけど使ってます…
初心者だから使ってますの間違いだろ
406227:03/03/03 11:09
ヘルプ機能をつけたいのですが、いわゆるヘルプデザイナーが
みあたりません。どうやってヘルプ機能を実装するのが一般的
ですか?
408デフォルトの名無しさん:03/03/03 20:02
Delphi初心者の場合は、ポインタ使う前に覚えることが山ほどあるわけで。
Cからの移行組はいったんポインタのことは忘れることだ。
えっとぉ、ポインタを介しての配列へのアクセスは(ry
Delphiで配列使うことなんてあまりないだろ
・・・ココはバカになるスレですか?

Delphiで配列使うことなんてあまりないだろDelphiで配列使うことなんてあまりないだろ
Delphiで配列使うことなんてあまりないだろDelphiで配列使うことなんてあまりないだろ
Delphiで配列使うことなんてあまりないだろDelphiで配列使うことなんてあまりないだろ
Delphiで配列使うことなんてあまりないだろDelphiで配列使うことなんてあまりないだろ
Delphiで配列使うことなんてあまりないだろDelphiで配列使うことなんてあまりないだろ
Delphiで配列使うことなんてあまりないだろDelphiで配列使うことなんてあまりないだろ
Delphiで配列使うことなんてあまりないだろDelphiで配列使うことなんてあまりないだろ
Delphiで配列使うことなんてあまりないだろDelphiで配列使うことなんてあまりないだろ
Delphiで配列使うことなんてあまりないだろDelphiで配列使うことなんてあまりないだろ
Delphiで配列使うことなんてあまりないだろDelphiで配列使うことなんてあまりないだろ
Delphiで配列使うことなんてあまりないだろDelphiで配列使うことなんてあまりないだろ
Delphiで配列使うことなんてあまりないだろDelphiで配列使うことなんてあまりないだろ
Delphiで配列使うことなんてあまりないだろDelphiで配列使うことなんてあまりないだろ
Delphiで配列使うことなんてあまりないだろDelphiで配列使うことなんてあまりないだろ
Delphiで配列使うことなんてあまりないだろDelphiで配列使うことなんてあまりないだろ
Delphiで配列使うことなんてあまりないだろDelphiで配列使うことなんてあまりないだろ
Delphiで配列使うことなんてあまりないだろDelphiで配列使うことなんてあまりないだろ
Delphiで配列使うことなんてあまりないだろDelphiで配列使うことなんてあまりないだろ
Delphiで配列使うことなんてあまりないだろDelphiで配列使うことなんてあまりないだろ
412スレ違い:03/03/03 23:58
普通はstd::vectorだろ。
>>412
std::vector vec = new std::vector();

vec = malloc(120);

vec[32] = \x0;

俺はそんな怖い使い方は出来ん・・・。
つかバッファ確保にvector<byte>使うのやめれ
>>411
へ?動的配列がなかった時代はどうしてたの?
>>415
Cで可変長文字列が扱えないってのと一緒だな。
配列定数ならよく使いますがな。
418デフォルトの名無しさん:03/03/04 15:47
任意のMDIChildeウィンドウを1番手前に持ってくるにはどうしたらいいのですか?
SetFocusでも無理だし、SetForegroundWindowでも無理でした。
419デフォルトの名無しさん:03/03/04 16:03
過去ログです。
1: http://page.freett.com/dat2ch00/030107-1041260616.html
マタカ[]乱交サークル個人情報漏洩[]アホ
2: http://page.freett.com/dat2ch00/030107-1041268516.html
マタカ[]乱交サークル個人情報漏洩[]アホ 【part2】
3: http://page.freett.com/dat2ch00/030107-1041274177.html
マタカ[]乱交サークル個人情報漏洩[]アホ 【part3】
4: http://page.freett.com/dat2ch00/030107-1041288143.html
マタカ[]乱交サークル個人情報漏洩[]アホ 【part4】
5: http://page.freett.com/dat2ch00/030107-1041311110.html
【岡ちゃん】乱交サークル個人情報漏洩【最高!】Part5
6: http://page.freett.com/dat2ch00/030107-1041321139.html
【岡ちゃん】乱交サークル個人情報漏洩【最高!】Part6
7: http://page.freett.com/dat2ch00/030107-1041353460.html
【岡ちゃん】乱交サークル個人情報漏洩【最高!】Part7
8: http://page.freett.com/dat2ch00/030107-1041609085.html
【岡ちゃん】乱交サークル個人情報漏洩【最高!】Part8
9: http://2chlog.homeftp.org/20030203/1041773755.html
【議員の息子】乱交サークル個人情報漏洩!【会社役員】Part9
10:http://2chlog.homeftp.org/20030203/1042853091.html
【議員の息子】乱交サークル個人情報漏洩【PWC大ちゃん】Part10
>>418
BringToFrontは?
>>418
変なことしてなければShowメソッドでOKだけど。
>>420,421

ありがとうございます。Showでできました。
423デフォルトの名無しさん:03/03/04 21:12
Delphi 6 Personal のレジストができません。
(登録メールアドレスにメールが送られてこない)

6 Personal はもう登録受付を終了してしまったのでしょうか?
>>423
終わったよ。
425 :03/03/04 23:19
>>424
本当?423じゃないけど。

「フリーのパソナルをDLしてプログラムを学ぼう!」みたいな本が出てたのに…。
あの本、立ち読みしてたら、
>作者はまだdelphi3なので、6の環境はよく分からないのですが…
みたいなこと書いてあった…。
それでいいのだろうか…。
そんなんで本書いていいのだろうか…?
「delphi3で学ぼう!」に変えた方がいいのではないだろうか…。
Win2kPro+SP3でDelphi6Pro使ってますが、
ATOK16で半角固定入力すると、
コードエディタでキャレットが表示されなくなります。
これは不具合でしょうか?
ちょっと打ちづらいですね。
Delphi7ではどうでしょう?
>>426
同じ環境ですがそんなことは起こっていません。
428426:03/03/05 01:24
>>427
ネタですか?
429デフォルトの名無しさん:03/03/05 04:04
ぬるぽって何ですか
>>425
ネタだろ
どうせいつもの通り認証サーバが落ちてるだけ

単純な煽りカキコに騙されんように
自演だったら氏ね
ソフトウェアのアイコンをクリックしてから一番初めに動くprocedureはなんですか?
procedure の前に全ユニットのinitialization部
その後 program 宣言で始まるユニットの実行ブロック
>>431
イベントドリブンプログラミングの書き方から勉強すべき。
どこから始まるかは意識せずに、操作に対応したコードを書いていくのです。

といいつつ一応答えておく。
*.dpr 内の begin end. 内。
(initialization がある場合は別だが
thanks
>>429 ガツ
Delphiの将来性ってどうなのですか?
>>436
そろそろ次の身を寄せる場所を探した方が良いと思う。
>>437
どこ行ってもダメさ。 人余り。

 仕事ないよ。

期待の.NETも、最初からVB並だもんなあ・・・・
439デフォルトの名無しさん:03/03/05 16:44
VBと同じものを作ったら、Delphiの方がファイルサイズが大きくなりました
何故ですか?
>>439
同じものを作れているなら同じになっている筈です。
それは同じものが作れていないわけでは?
>>439
>同じ物
眉唾だけど。

Delphiはランタイムを実行ファイルに埋め込むからファイルサイズが大きくなる傾向がある。
>>439
大きいのは .DSM ファイルでしょ? それはいつ消してもかまわない。

フォームファイルや .pas ファイルのサイズは気にならないと思うし、
exeファイルも今時のパソコンなら気にしなくていい。 FDに入れたいならUPXで検索してそれで小さくするといい。

逆にVBだと FD に入れて他のパソコンで動かすなんて時に色々困る
443デフォルトの名無しさん:03/03/05 17:06
>>442を晒しage
444デフォルトの名無しさん:03/03/05 17:09
>>443を晒しage
>>439
プロジェクトオプション>パッケージタブ>実行時パッケージを使って構築にチェック。
ただし別途.bplを配布しなければならない。
CVSでソース管理してる人いる?
Delphiから直接使えたらなぁ。。。
447デフォルトの名無しさん:03/03/05 19:24
Indyのコンポーネントの使い方が詳しく載っている日本語の解説サイト、どなたかご存知ありませんか?
>>447
もなぢら
前から疑問だったんだが、Indyって何?
コンポ集のことっぽい<Indy
っていうかOpenJaneのソース使うのに漏れもインストウルした
451デフォルトの名無しさん:03/03/05 20:29
ランタイム不要で少しくらい大きくてもさ、
他人がダウソして実行しても動かなくてゴミ箱直行されるのとどっちがいい?

俺の場合、要VBランタイムとか書いてあるアプリはゴミ箱逝き。
だって、そういう厨な事書いてあるソフトって、
ランタイムファイルのどのファイルが実際に必要なのか、
という肝心な事が書いてない。
だからVectorからランタイムパックをダウソしようにも、
どのパッケージなら足りてるかわかんねーよ。
つーか最初からアプリにランタイム同梱版を用意しておくのがマナーだろ。

とまあこんな感じで。
>>439
Win32APIを駆使してVCLに依存しないコードを書けば、コンパクトなサイズの実行ファイルを
作ることは可能。
ただし、難度は高く、イバラの道。職業プログラマなら生産性の面で到底お奨めできない。

どしろうとはVBでも使ってなさいってこった(w





・・・と釣られてみるテスト。
453デフォルトの名無しさん:03/03/05 22:22
Editコンポーネントで、特定の文字(たとえば数字)だけを入力可能にする方法はある?
454デフォルトの名無しさん:03/03/05 22:23
>>435追伸
たとえば数字(=半角数字)
>>453 MaskEditはどうしてナシなの?

    ∧,,∧
   ミ,,゚Д゚彡旦~~
   (   / ̄ ̄ ̄ ̄ヽ
彡(三三/   MaskEditもいいですが

http://www2.big.or.jp/~osamu/Delphi/browse.cgi?index=41612
http://www2.big.or.jp/~osamu/Delphi/browse.cgi?index=50209
こんなのはいかがでしょうか?

ES_NUMBERで検索してみますた。
457デフォルトの名無しさん:03/03/05 23:22
>>449
Indyってのは、インターネット通信ソフトが楽に作れるコンポーネント集です。
フリーで使えます。
Professional版にはデフォルトでインストール済み。Personal版は自分でインストールする。

例えば、

var
 Source: string;
begin
 Source := IdHTTP1.Get('http://pc2.2ch.net/tech/');
 Memo1.Text := Source;
end;

これだけで指定したアドレスのソースがMemoに表示できる。
>>446
>CVSでソース管理してる人いる?
俺は ModelMaker 付属のアドインで CVSWin を呼び出している。特に問題は無い。
メニュー/ショートカットでカレントウィンドウを保存し、リポジトリにコミットする
だけだけど、それで十分だよね?

MM に限らず、探せばいろんなソース管理アドインツールが存在するんだけど、日本語
でない。って理由だけで使わない/知られていないんだよね。

ツールが豊富にあるから誰も困っていないので、製品に取り込まないんでは?
VBランタイム=ポップアップ広告
460449:03/03/06 11:26
>>457
thx!
それだけでソース取得できるとはすごいね。
CVSは言語というか、ファイルの種類を選ばないはずだが
(いまいち勝手は悪いが)
CVS を IDE から簡単に使う。って話ではなかったかな?
>>452
ヴァカは死ね。
464デフォルトの名無しさん:03/03/06 12:43
音系はWAVしか実行ファイルに埋め込めないのでしょうか?
>>464
midならmidiメッセージをリソースにしといて
リソースからAPIに命令を出すことで埋め込めるよ。
>>464
大抵のものは埋め込めますよ。

やりかた
http://pc2.2ch.net/test/read.cgi/tech/1009080085/21

あとは再生する直前にファイルを作って再生するのが簡単。
 リソースのまま再生する方法もあるけど、
いいじゃん実行ファイルなんかに埋め込まなくて。
一つでも分かれてても同じ事。
ランタイム恐怖症の次はデータファイル恐怖症か?(w
アイコンも埋め込むな
アプリケーションのアイコンは埋め込んだ方がいいね。
その他のアイコンは埋め込む必要ないけど。
理論上あらゆる種類のファイルが入るよ。
いざ使うときはめんどくさいけど
プログラマーも埋め込めよ。
中の人も大変だ、を地で行く。
472デフォルトの名無しさん:03/03/06 18:57
>>456
「Delフサギコ ◆A6VzDeLphI 」さん
産休です。
473デフォルトの名無しさん:03/03/06 18:59
>>472追伸

>>453 >>454より
474デフォルトの名無しさん:03/03/06 19:00
Windows2000でDelphi6.0を使っています。
.dprのショートカットを作ってダブルクリックして立ち上げたら、
エラーがたくさん出てDelphiが動かなくなり、それ以降は.dprを
ダブルクリックしても起動できなくなりました。

Delphiを先に起動した後に.dprを読み込めば問題なく動きます。
どうしたら直りますか?
475ねこま:03/03/06 19:07
Delphiを先に起動した後に.dprを読み込んでください

@NIFTY-FDELPHI / Delphi-ML でもそういう意見です.
476474:03/03/06 19:59
直らないんですね…。ありがとうございました。
Del6Personalでは物足りなくなったのでDel7Proを買います。
>>458
できたらDel6Per.でも使える方法きぼん

Proを買えという話ですな。
Del8が出たら買うと思うけど。。。
そもそも、ModelMakerってProについてるのか?

とりあえず、CVSはWinCVSで使ってる。一人で使ってても昔のを取り出せて便利だ。
ガイシュツのような気もするけど、マルチバイト文字を含むフォルダ名の直下に
*.DPRを保存すると、起動時にエラーがでまくり、大変なことになります。

エラーになるなら、保存時に警告してほすい・・・。(-_-;

ちなみに上位の階層に全角文字を含むフォルダ名が混在していても、直下
でなければセーフのようです。
>>479
WinCVSって使いにくくない?
eclipseみたいに使えたらなぁ。。。とないものねだりしてみる。
>>481
書けばいいじゃん。あんたはプログラマ、開発環境はある。これ以上ない環境だぞ。
低機能なDelphi&フリーウェアの拾い食いなんてやってないで
素直にVisual C#+Visual SourceSafe使いなよ。
>>483
>低機能な
そうでもないよ。
485デフォルトの名無しさん:03/03/07 04:41
スタートアップに登録されているかどうかを調べる方法ありますか?
>>485
スタートアップフォルダ漁れば良かろう。
>>486
レジストリモナー
ショートカットをスタートアップに入れられたら意味無さそう
C#がでてからいっそうDelphiが活気づいた気がする。
>>489

C#の設計者 = Delphiの設計者って聞いたけど、ホント??
(MSが暴乱度から引き抜いたとか・・・)
>>490
C#のライブラリ見てみれば何となくわかると思う。
VCL + Javaと言った感じ。
>>490
ホント。ヘジルスバーグ。
C#完成後は某に帰っていった。
メニューやツールバー用にイメージリストに取り込むビットマップを山ほどください。
494デフォルトの名無しさん:03/03/07 13:05
Del6の無料版でつくったものは、ソースだけならくばっていいんですか?
>>494
バイナリ配っちゃダメだったっけ?
496490:03/03/07 13:09
>>491-492
ありがと。
しかし、MSってほんとに引き抜きの好きな会社だね(w
(各球団の4番打者をえげつなく引き抜く長島巨人みたいだw)
良い人材を引き抜くのはビジネスの常識。
それを禁止されたら良い人材に正当な評価が出来なくなる。
何が正当なんですか? :-P
>>498
お前は一生その会社でただ働きだな。:3−)
>>498
ヘジルスバーグが某の文句言ってただろ。何が正当かは人次第だよ。:-P
ところでいつ某に戻ったんだ? 戻ってきてほしいの間違いだろ。
>>496
長島→長嶋
>>501
ご指摘ありがと。
でも、まあ堅いこと言うなや(w
>>502
せっかく指摘してあげたのに文句言うなや(w
当方OSはXP-Homeで、Delphi6Perを使っています。
以前OSがWin98SEだったときに作ったソフトがありまして、
ボタンを押すとMemo中の選択文字列を指定したタグで挟むようにしていたんです。

例えばこのような感じです。
Memo1.SelText:= "<A>" + Memo1.SelText + "</A>";
で、これまでは特に問題なかったのですが、
XPにしてから置換後のタグに挟まれた元の文字列が化けるようになったんです。

たとえば"リンク"という文字列を上のように挟むと<A>B</A>になります。
おかしいと思ってSelLengthを調べると3が返ってきました。
"リンク"のように全角3文字なら6が返ってこないとおかしいと思うのですが…。
自分以外にもXPで同様に化けたという人もいて非常に困っています。
何か対策や、OS以外の原因はあるのでしょうか?
よろしくお願いします。
>>503
ごめんね(w

m(_ _)m
506504:03/03/07 15:21
もちろん"じゃなくて'です…すいません。
>>デルふぁi6パーsonaru

シェアウェアにしたら駄目なだけだよ
アフォみたいな質問でつが、hoge.exeの内容を文字列として
function hogehoge(S: string): string;
に渡すにはどうすりゃいいんでつか。
>>505
誤ってすむなら警察いらねーんだよ。
>>508
アフォみたいな質問ですね(w
>>507
だよね。どきどきしたよ。
>>508
BASE64とかMD5とかの関数ですか?
513508:03/03/07 16:05
>>512
MD5でつ。
>>513
MD5だと大変だぞ
515508:03/03/07 16:10
>>514
どう大変?
    _, ._
  ( ゜ Д゜)
517508:03/03/07 16:40
ttp://homepage2.nifty.com/kht0000/
ここで拾ったDLL使ってんだけどそれでも大変でつか?
「拾った」って表現を使うな
function StringFromFile(const FileName: TFileName):string;
var
 Stream: TStream;
 Size: Integer;
begin
 Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
 try
  Size := Stream.Size - Stream.Position;
  SetString(Result, nil, Size);
  Stream.Read(Pointer(Result)^, Size);
 finally
  Stream.Free;
 end;
end;
とやればいいのだが、途中にNull文字が含まれることになる。
利用したい関数が、途中にあるNull文字を終端と見なすようなら、
お好みの1バイトに置換してやればいい。
Stringは普通にバイナリを扱えますが
PCharにするとnull文字を終端とみなされてしまいます。
バイナリがパイズリに見えた


自分でもワラタ
523508:03/03/07 18:55
>>519
519殿は漏れにとって神でつ。
ありがとうございますた。

524デフォルトの名無しさん:03/03/07 18:57
TEditなどにフォーカスがあたった時に
IMEのソフトキーボードを自動で表示するにはどうしたらいいですか?
>>523
それで正しい結果が得られているの?
526524:03/03/07 19:35
>>524
Imm をUseして
Imm32SetConversionStatus(hImc, IME_CMODE_SOFTKBD, IME_SMODE_NONE);
でできました。
527523:03/03/07 19:40
>>525
Sample0 窓の手(winhandxp.exe)

漏れアプリ
File .. winhandxp.exe
MD5 .. d1474071f86f497ca4084e5feece8daa
CRC32 .. 2D6962C9

WinMD5Sum
d1474071f86f497ca4084e5feece8daa


Sample1 リソースハッカー(ResHacker.exe)

漏れアプリ
File .. ResHacker.exe
MD5 .. c6eebc7eb6d50dcb32c5539346f8692b
CRC32 .. BB5F151F

WinMD5Sum
c6eebc7eb6d50dcb32c5539346f8692b

//サンプルは適当に選びますた。
unit md5;

interface

uses Windows;

type

TByteArray = array[0..65535000] of Byte;
TDWORDArray = array[0..65535000] of DWORD;

PByteArray = ^TByteArray;
PDWORDArray = ^TDWORDArray;

TMD5_CTX = record
state :array[0..3] of DWORD;
count :array[0..1] of DWORD;

buffer :array[0..63] of Byte;
end;

PMD5_CTX = ^TMD5_CTX;

TRoundFunc = function (x :DWORD;y :DWORD;z :DWORD) :DWORD;

function GetMD5(data :PByteArray;len :Cardinal) :string;
implementation

function f(x :DWORD;y :DWORD;z :DWORD) :DWORD;
begin
Result := ((x and y) or ((not x) and z));
end;


function g(x :DWORD;y :DWORD;z :DWORD) :DWORD;
begin
Result := ((x and z) or (y and (not z)));
end;
function h(x :DWORD;y :DWORD;z :DWORD) :DWORD;
begin
Result := x xor y xor z;
end;


function i(x :DWORD;y :DWORD;z :DWORD) :DWORD;
begin
Result := y xor (x or (not z));
end;

function rotate_left(x :DWORD;n :DWORD) :DWORD;
begin
Result := (x shl n) or (x shr (32 - n));
end;

procedure roundx(num :Byte;var a :DWORD;b :DWORD;c :DWORD;d :DWORD;x :DWORD;s :Byte;ac :DWORD);
const
roundfunc :array[0..3] of TRoundFunc = (f,g,h,i);
begin
Inc(a,roundfunc[num](b,c,d) + x + DWORD(ac));
a := rotate_left(a,s);

Inc(a,b);
end;
procedure MD5transform(state :PDWORDArray;block :PByteArray);
const
const_init :array[0..3] of Byte = (0,1,5,0);
const_inc :array[0..3] of Byte = (1,5,3,7);
const_s :array[0..15] of Byte = (7,12,17,22,5,9,14,20,4,11,16,23,6,10,15,21);
const_c :array[0..63] of DWORD =
($d76aa478,$e8c7b756,$242070db,$c1bdceee,$f57c0faf,$4787c62a,$a8304613,$fd469501
,$698098d8,$8b44f7af,$ffff5bb1,$895cd7be,$6b901122,$fd987193,$a679438e,$49b40821

,$f61e2562,$c040b340,$265e5a51,$e9b6c7aa,$d62f105d,$2441453,$d8a1e681,$e7d3fbc8
,$21e1cde6,$c33707d6,$f4d50d87,$455a14ed,$a9e3e905,$fcefa3f8,$676f02d9,$8d2a4c8a

,$fffa3942,$8771f681,$6d9d6122,$fde5380c,$a4beea44,$4bdecfa9,$f6bb4b60,$bebfbc70
,$289b7ec6,$eaa127fa,$d4ef3085,$4881d05,$d9d4d039,$e6db99e5,$1fa27cf8,$c4ac5665

,$f4292244,$432aff97,$ab9423a7,$fc93a039,$655b59c3,$8f0ccc92,$ffeff47d,$85845dd1
,$6fa87e4f,$fe2ce6e0,$a3014314,$4e0811a1,$f7537e82,$bd3af235,$2ad7d2bb,$eb86d391);
var
a :DWORD;
b :DWORD;
c :DWORD;
d :DWORD;
x :array[0..15] of DWORD;
i,j,k :Byte;
cou :Byte;
p :array [0..15] of PDWORD;
begin
a := state[0];
b := state[1];
c := state[2];
d := state[3];

p[0] := @a;
p[1] := @b;
p[2] := @c;
p[3] := @d;
p[4] := @d;
p[5] := @a;
p[6] := @b;
p[7] := @c;

p[8] := @c;
p[9] := @d;
p[10] := @a;
p[11] := @b;

p[12] := @b;
p[13] := @c;
p[14] := @d;
p[15] := @a;

CopyMemory(@x,block,64);
534 ◆MuQLEaWKLg :03/03/07 21:50
厨房質問でお茶を濁すぜ。

Del6personal@winXP。
Indyってのはプログラムからの通信を全部管理するんですか?
たとえばHTMLの表示にTMozillaBrowser.Navigateを使ったらIndy HTTP Clientに設定されているプロキシ設定とかが反映されるんですか?
ってことです。
>>534
馬鹿言うな
536 ◆MuQLEaWKLg :03/03/07 22:21
馬鹿を言ってみたかったんだ(=゚ω゚)ノょぅ・・・

ってかIndy HTTP Clientと(゚д゚)ウマーな関係を作れるパーサはないかなぁ....
>>536
なんで?
538 ◆deTS7/W6y2 :03/03/07 23:04
質問です。

自作クラスを配列で宣言したとします。
 hoges:Array[0..100] of THoge;
でも、Createしたのは、5つでした(たとえばの話)。
で、その5つを解放するのは当たり前ですが、
他の「宣言しただけ状態」のクラスは、どうなるのでしょうか?
宣言しただけの場合、メモリ的にはどうなってる状態なんでしょう?
教えてください。よろしくお願いします。
>>538
>他の「宣言しただけ状態」のクラスは、どうなるのでしょうか?

極端に言えばただのポインタ変数なのでどうもしなくて良いです。
540 ◆deTS7/W6y2 :03/03/07 23:14
>>539
レス、ありがとうございます。
そうですか。何もしないでいいんですか…。
私の挙げた例は別に変じゃないですか?
integerとかstringとかの「宣言しただけ」は、今までもほっておいたんですが(^^;。
クラスの宣言は勝手が違うのかと…。
>>540
まぁ、ポインタみたいにどこでも持って行けるのが便利って事で。
542 ◆deTS7/W6y2 :03/03/07 23:29
>>541
そうですか。ありがとうございました!
※解決※
 縦書きビューワーコンポ(エディタコンポならまだいいけど)ってないですか?
>>543
RichEditに然るべきメッセージ。
>>543の日本語が難しい
>>545
それに関しては激しく同意。
>>540
stringも実態は参照カウンタ付きポインタだよ。
ただ、スコープが外れた時に勝手に開放されたりして、
「プログラマは何もしないでいい」だけで。
# クラスも無理やりinterface使えば、参照カウンタで管理することも出来るが・・・
>>544
RichEdit の縦書きサポートは W2K か XP でなくなりました。マジで。
Win9x系のriched32.dllを持ってくれば解決するがオススメしない。
スタートアップフォルダにあるやつを起動させてるやつは何者なんだYOOOOOOOOOOO
スタートアップフォルダ自体は単なるフォルダなんでしょ?
>>550
Windowsだろ。
ただのフォルダじゃなく選ばれたフォルダなんだよ
キングオブフォルダ
>>554
またライブラリ厨か・・・
>>554
なんか使えそうですね
ありがd
次はショートカットってどうなってんだYOOOOOですか?
CSIDL_PROGRAMSはProgram Filesフォルダではなくスタートメニューのプログラムフォルダです。
Program Filesの取得にはconst CSIDL_PROGRAM_FILES = $0026を使います。
ショートカットの件は克服できそうデス
560デフォルトの名無しさん:03/03/09 06:24
エンターキーでパソコンの電源を入れられる伝説のコードを探せ
もうそうなってるし。スペースでも入るぞ。
562デフォルトの名無しさん:03/03/09 09:15
「if A or B = C then」
これって、
A = CとB = Cが両方成り立ったときっていうことなの?
それとも、どっちかだけ?
っていうか、こういう書きカタってあるの?
>>562
いや、

AがtrueかつB=Cがtrueのとき。
>>563
わるい、かつじゃなくてもしくはだ。

まだ寝てるな・・・
>>562
or演算子の優先順位が高いから
AかBがTrueかつ、CがTrueの時じゃないのかなぁ。

>A = CとB = Cが両方成り立ったとき
「if (A=C) and (B=C) then」
とするのが(・∀・)イイ!
ってことは、
if A = C or B = C then
とすれば、どっちかが成り立った時になるわけかdd
>>565
やっぱりか。いつもはまるからor andするときは何があろうがかっこを付けることにしてるよ。
>>566
A = (C orB) = Cじゃないの?
>>566
(・∀・)カコツケYO!
if (A = C) or (B = C) then
{A = (C or B)} = C
括弧に入れれば間違いない無さそうだね
みんなどうも
なるほどなるほど
わかりますた()
573デフォルトの名無しさん :03/03/09 16:39
NMHTTPを使いたいんですけど、通信してる途中重くて仕方がありません。
たとえばIEでページをロードしても別に重さを感じることはありませんよね?
でもNMHTTPを使ってるとボタンが押せないくらい重くなります。
これを防ぐ方法はありませんか?よろしくお願いします。
>>573
スレッド
重いならスレッド。
粉うかた無き混じれ酢だがIndy使え
577デフォルトの名無しさん:03/03/09 17:29
>>573
ttp://damedame.ddo.jp/delphi/wininet.html
こんなのダメですか・・?

全然違う質問なんですけど、コードエディタで複数行にわたってインデントを調節したいときってどうすればいいんですか?
いつも使っているエディタだと、複数行選択してTabを何回か押すと、そのブロックごとインデントするんですけど、
Delphiのエディタだとざっくりと消えてしまうんです。
今は面倒だけど、一行ずつTab入れて調節しています。
^ki ^ku
>>577
行選択orブロック選択して
Ctrl + Shift + U
Ctrl + Shift + I
>>579
ありがとうございました。m(__)m
標準のTTimerをつかって一定間隔でイベントを起動させたいのですが、
たとえば、10分おきに更新するような場合に、手動でも更新できるようにしたいのです。
そのときは最後に更新したときからまたカウントをしなおしたいのです。

標準のVCLでは無理そうなのですが、そんなことができるコンポありますでしょうか?
>>581
自分で作るって選択肢は無いの?
いい機会だから継承とかいろいろ勉強したら?
>>581
Timer.Interval=1000にしてWindows.GetTickCountと変数一つ組み合わせれば実現できるよ。
test
>>581
timerのenableをオフにしてまたオンにするとカウントリセットされる。
>>582-585
皆様たいへんありがとうございました。
なにせ3からいきなり7に飛んでいますし、ここ数年GUIは手をつけていなかったので・・・
今作っているのはまったくの趣味ですが、人様が作ってくれたいろんな有用なコードを切り貼りしていると言っても過言ではないです。
自分でコンポまで作れればいいのですが、そこまで技術がなかなか伸びないままいつも途中で放り投げて・・・

今度は完成できるといいなぁ
あきらめずに続ければ、いつのまにか上達するものだよ。ガンガレ。
Indy HTTP Client でGetしたHTMLをTMozillaBrowserに表示する方法をご教授ください....

方々探し回りましたがやっぱりいったんファイルに出力しなきゃだめでしょうか?
>>573に便乗みたいなものですが、スレッドがうまく使えません。
ヘルプなどをみて、一通りスレッドの使い方は勉強しましたが、
実用的には使えません。

処理中のダイアログがでて、そのダイアログにキャンセルボタンがあって、
スレッドでやらせる仕事を途中でキャンセルできるコードのやり方を教えてください。

つまずいている点は、たとえばモード付きダイアログを出すと帰ってこないし、
モードなしだとユーザー操作で例外を出してしまう点とか、
一度開始したスレッドに、メインからどうやって連絡するかです。
>>589
モーダレスにしてみるとか。そもそもダイアログボックスをフォームで作ればいいのでは?その上でスレッド作って処理させる。
>>589
昨日考えたのは


while(WaitForSingleObject(stopflag,nowait) <> 0 do
begin
処理
end;

って感じ。
>>589
単純に考えるといい
1、グローバル変数 Hoge:boolean; を用意
2、Hoge:=false;
3、スレッドを作って走らせてから ダイアログを表示
   ->スレッドでは処理 if Hoge then 中断処理
4、ダイアログでボタンが押されたらHoge:=false;
593デフォルトの名無しさん:03/03/10 19:14
質問なのですが、ヘルプに
if OpenDialog1.Excute then
Memo1.Lines.SaveToFile(OpenDialog1.FileName);
とか見るのですが、if と then が無くてもそれっぽく動くのですが
どうしてifとかthenとか必要なんですか?
>>593
ダイアログでファイル選択しないでキャンセルしたらどーなる?
595Delpher:03/03/10 19:30
何方か教えていただけないでしょうか
Delphi6付属のServerSocketを使ってファイル送受信を実装しようとしているのですが
TFileStreamとTMemoryStreamを使い、TFileStreamでファイルを開いてそれで
TMemoryStreamにコピーしたあとヘッダーを追加し
TCustomWinSocketでSocket.SendStream( S )として送信をするのですが
小さいファイルをやり取りするには問題は無いのですが
16MBなどといったちょっと大きなファイルを送ろうとすると一定時間Formが応答
しなくなってしまいます(Formが固まってします)待てばよいのですが、これだと
ちょっと問題ありのような気がしまして..他の接続しているクライアントが応答
を受け取れなくなります

メーリングリストを読むと
>TWinSocketStreamを使うとFormは固まるものの、比較的わ
>かりやすく安全に処理できるような気がします。
とか書いてあるのですが、これは絶対に固まってしまうものなのでしょうか?
ServerSocketの特性なのでしょうか?

なんとかFormの固まりを回避したいのですがどなたかアドバイスいただけないでしょうか...
Indy使え
>>595
スレッド。

はい、次の方。
598Delpher:03/03/10 19:37
うぅ
>>596
やっぱりそうですか....

>>596
スレッド!?
これはヒントなのですか?

厨房質問ですみません
>>598
そうだよ。2ちゃんねるにも沢山スレッドあるだろ。
構造体が動的配列で宣言されているとして、その構造体のメンバにも
動的配列を含める・・・ってのは出来ないようになっているんでしょうか?
シンプルなソースで試そうとしたのですが上手くいかないっぽいので
白か黒か気になってます。
>>600
出来ないでしょう。可変長の構造体なんて認められないんで。
任意次元の動的配列の確保の応用では駄目?

type
 a = record v : array of integer; end;
 b = array of a;

var
 BB : b;

 SetLength(BB, 10);
 SetLength(BB[2].s, 100);
 SetLength(BB[8].s, 200);
601さん602さん、有難うございます。
特に困るわけではないのでメンバを静的配列にすることにします。
白黒ついてスッキリです。
604デフォルトの名無しさん:03/03/10 22:54
Indyを使っておりまして、IdHTTP.GetにてHTMLを取得しているのですが
存在しないページ等をGetしようとすると、エラーが出て処理が中断します。
エラーを出さない方法
あるか無いかの判断をする方法
以上二つお願いいたします。
>>604
エラーと例外の区別を付ければあんたは伸びる。
しかし、エラーが出ると良いながらエラーメッセージを書かないところを見ると、才能がないようにも見える。
606604:03/03/10 23:01
>>605
httpget.exeアプリケーションエラー
"0x61031957"の命令が"0x00000004"のメモリを参照しました。メモリが"written"
になることはできませんでした。
>>606
死んでるじゃん・・・
608604:03/03/10 23:35
>>607
だから困っているのですが...
try
except
>>609
いや、それで回避しちゃダメな例外(と言うか出来るのか?)
>>604
んなこたないと思うけど。最小のサンプル作って再現できたらうpしてみなよ。
612デフォルトの名無しさん:03/03/11 00:22
>>604
例外処理してみそ。

try
IdHTTP1.Get('aaa');
except
end;
613604:03/03/11 01:19
606、608は私ではないのですが、
エラーは存在しないページだと302NotFoundです
今回はエラー内容よりも、エラーに対する処理ということでしたので
書きませんでしたが説明不足ですみません。

以前どこかで見つけたソースを使ってみたのですが
そのコードは応答コードを利用するものでした。WinInetを使う?
通常は200で302や404でたらGetしないという処理でしたが
最近自動で転送なのか、無いファイルを指定したときに自動的に
違うページを表示するような場合でも200を返してしまうので困っておりました。

exceptを使うとエラーは表示されなくなりました。
ありがとうございます。
URLの存在確認の決め手となる方法あらば教えて頂けませんでしょうか?

614608:03/03/11 01:43
>>606
騙るなよ...
595氏のついでに便乗質問
Socket通信中ってApplication.ProcessMessagesってマズイの?
>>613
Except部でどんな例外が出たか調べるんだよ多分。
617デフォルトの名無しさん:03/03/11 05:24
デルフアイにはエラーをスルーするコマンコありますか?
>>587
ありがとうございました。

けっこう出来るようになるもので、制作はじめに予定していた機能はほとんど完成に近付きました。

いま困っているのは、
電光掲示板みたいなコンポを載せたフォーム(タイトルバーなし)がマウスでD&Dできないことと、
プログレスバーを載せたステータスバー上のパネルに、文字列を表示するとプログレスバーの
表示が止まるまで表示されないということ
の2つです。

もうひとつ、通信系の問題で、サーバからcontent-lengthが返ってこない場合に、取得するファイル
サイズを事前に知る方法ってありませんか?

あとはトレイアイコンにしたり、そこから右クリックで電光掲示板出したり・・・いろいろ構想はありますけど

このスレでよく、
PerだったらPro買え、みたいなレスをよく見るけど、
ただ単にVCLが豊富ってだけなの?
Perでも自力で実装すれば、出来ない事は無いの?
Per Per いう奴が Per
Per には何も出来ません
621デフォルトの名無しさん:03/03/11 07:54
ひとつ質問です。

1つのプロシージャ内でStatusBarのPanelにテキスト表示しているのですが
全部で24回同じ位置に表示するうちの最後のものしか表示されません。
このプロシージャは一瞬で終わるわけではなく、途中で関数を呼びながら
10秒くらい掛かるのですが、10秒間ほどの間23回の表示はまったく見えません。

念のためにBeginUpdate, EndUpdateで囲ってもみましたがダメでした。

何か手立ては無いでしょうか?
(直前にMemoコンポに同じ内容を表示してて、こちらはまがりなりにもスクロール
などしてあとから見ると全部表示されています。最中も一部は見えます)




>>619
某に儲けさせたいから
>>621
Application.ProcessMessages
を所々に入れてみるとか。
そうだな、4年タダみたいに使って6年廉くこき使って26で放出か、26なら再就職先あるだろ。
625デフォルトの名無しさん:03/03/11 11:21
InternetCombineUrlを使った簡単なコードを教えて下さい
>>623

ありがとうございました。うまくいきました。m(__)m
627デフォルトの名無しさん:03/03/11 16:54
ソフトからだした、ShowMessageをソフトから消すことって出来ますか?
628デフォルトの名無しさん:03/03/11 16:55
ソフトにだした、ShowMessageをソフトに消すことって出来ますか?
>>628
sendmessage
630627:03/03/11 17:41
>>629
出来ましたありがとうございます。
631デフォルトの名無しさん:03/03/11 21:00
メニューアイテムのヒントを表示するには、どこをどう設定すればよいのでしょうか?
メニューアイテムには他のコントロールのようにShowHintプロパティが無いんです。
ヒントプロパティに設定した文字列を表示したいんです。
>>631
DelphiヘルプのTMenuItem.Hintを参照
633A:03/03/11 23:07
>>619
ProにはVCLのソースがついてくるのが一番の違いだと思われ。
634デフォルトの名無しさん:03/03/12 13:39
Delphiのツールメニューにhtmlファイルを追加するには、どうすればできるのかな?
>>634
タイトル:HTML
プログラム:ブラウザ.exe
作業フォルダ:
実行時引数:HTMLファイル.html
636デフォルトの名無しさん:03/03/12 14:08
文字列から、最後の一字を省くにはどうすればいいんですか?

たとえば「あかさたな」から「な」だけ削除して表示するみたいなやつ。
この「あかさたな」はランダムで生成される文字列です
function DeleteLastChar( w : widestring ) : widestring;
begin
 if w = '' then Result := ''
 else Result := copy(w, 1, length(w) - 1);
end;
638nanasi:03/03/12 16:19
Indyを使ったちょっとした通信ソフトみたいなサンプルソースありませんか?
chatでもファイル転送でも
某の web でも ML でも明示されていないけど、アップデート出てます。

Delphi 6 RTL アップデート #2
http://www.borland.co.jp/delphi/del6up.html

最新情報ページくらい更新しろよ > 某日
>>639
>某の web でも ML でも明示されていないけど

あれ?3日前Borland日本のサイトでそれダウンロードしたけど。
>>639
Delphi起動したときの案内画面に出てたが。
642デフォルトの名無しさん:03/03/12 18:21
ソース付きのソフトウェアキーボードのコンポーネント(アプリでも可)を
置いてあるサイト知ってる人いたら教えてください
>>642
アクティブなウインドウにKEYDOWNメッセージでも送れば良いんじゃないの?
644デフォルトの名無しさん :03/03/12 20:13
DELPHIで作ったWEBサーバーアプリケーションは、
CGIが使えるWEBスペースサービス(niftyとか)でなら実行できますか?
>>643
たとえばMicrosoftのスクリーンキーボードはボタンをマウスで押してもウィンドウがアクティブにならないですよね?
ああいうのはどうすれば出来るのか知りたいのです。
>>644
CGIの使えるUnix/Linuxサーバじゃ動かないだろ。
Windowsであることが必須。たしかGeoとかそうだったようなそうで無かったような。
GeoがWindowsなんか使うわけないだろう。
あそこはSolarisやFreeBSD
そもそもGeoはサーバサイドでプログラムを動かせない。
そもそもサーバーサイドはプログラムじゃない。
そもそもサーバーに中の人などいない。
しょうもない質問ですが、ラベルコンポでワードラップ可能にしたとき
強制的に折り返しの位置を指定する特殊文字ってありますか?
それとも1行目の末尾にスペースを入れて調整しないとダメですか?
#13#10 とか。
>>651
sLineBreak
654651:03/03/13 01:45
>>652-653
あのぅ、お答えいただいて大変恐縮なのですが・・・
それはコードで動的に書く場合ですよね?
GUI設計時にプロパティ欄に入れる方法はないですか?

たとえば、エクセルだとCtrl+Enterで改行が入りますよね?
それと同じような感じでないですか?
>>654
D6以降ならテキスト形式のDFMファイルに直接
Caption := 'Label1'#13#10'改行テスト';
みたいに書き込んだら?
>>654
655さんに先に書かれてもうたけど・・・
フォームを「エディタで表示」にしておいて
Caption = 'First'#10'Second'
ならOK
まず、プロパティの型を string から TStringList に切り替える。
そうすればプロパティエディタ側は複数行編集可能になる。

TMemo では、コントロールが保持している文字列の代わりに Memo コントロールが
返してくる文字列をプロパティの値としている。
ここを書き換えて、常にコントロール側で保持している文字列を返すようにすれば
良いかと。
658651:03/03/13 12:45
>>655-657
なるほど!こういう方法があったんですね。
ありがとうございました。

「エディタで開く」のやり方が良く分からなかったのですが、該当コンポ上を右クリックで
下から2番目にそのメニューが出てきました。(D7です)
Delモナーは?
>>659
日本法人の方針変更、規模縮小に伴いリストラされますた。
ゲームとかで、足元のY座標を調べて、小さいほうから作画すれば
ちゃんと奥行きが反映できますよね?
でも、その方法が思いつきません。
誰か(・∀・)イイ!!方法教えてください。
>>661 Zオーダーの事?

グラフィックコンポーネントは親の Components 順に描画されたと思うけど
TEditにTUpDownボタンをつけて数字を入力し、その数字をTIniFileを使って保存・読み込むという
仕組みを作りました。
TEditのOnChangeメソッドにIniFileへ数字を保存するコードを書きました。
TEditの貼り付いているFormのOnShowメソッドにIniFileから数字を読み込んでTEditに設定する
コードを書きました。

このようにしたら、OnShow時に(設計時と異なる)数字を書き換えることでOnChangeメソッドが
呼ばれてしまい、なぜか設計時の数値に置き換わってしまいます。

IniFileへUpDownで指定した数値が保存されたことは確認しましたし、トレースしてOnShowのあとに
OnChangeが呼ばれて、なぜかそのときにすでにTEdit.textの値が設計時の値になっていることも
確認しました。

なぜなのでしょう?
>>663
変更するごとにファイルに書き込むって言う仕様から変えた方が良いと思うけれど。
>>663
自己レスです。

はぁ、厨厨な質問でした。なさけねぇー。
UpDown.Positionの値にせっとすべきなのですた。はぁ〜
>>664

あ、すみません、レス付けていただいてましたね。

・・・というと、どうすればいいんでしょう?
いちおう設定のダイアログはあるんですけど、そのボックスだけは頻繁に変更する
たぐいの情報なので、いきなりメインフォームに張り付いているんです。
だから、変更したタイミングで・・・あ、そうか、UpDownボタンから離れたタイミングで
変更とかそういう仕様ですか?

でも、そうすると、Editで直接編集したときに変更するタイミングがなくなるような・・・

どうしたらいいんでしょう?
>>662
いや、グラフィックコンポーネントっていうかBitmap間のCopyRectの場合。
思いついたのはY座標でソートして、その順番で作画という方法。
ただ、恐ろしく重くなりそうでコードにする気力も起きない。
なんか、ビシッとすごい方法ないですかね。
>>667
だから ソートするのは Y座標じゃなくて Zオーダなんだろ?
 TreeView で指定したノード(下の階層にノードを持つ)だけをソートするには
どうしたらよいのでしょう。
>>668
Zオーダって何だYO!!!と思ったんで調べてみたけど、
確かにこれをソートすればできそうだね。
でも、これってコンポーネントの場合しかなくない?
それとも探し方が悪かったかな。
どうすれば、キャラのZオーダをソートできんの?
>>670
>キャラの
君への罵倒用の文句が20程思いついた。
>>671
凄いね。天才だね。
で、その20の文句を言ってみろよ。
本当に20もあるのならな(ハゲ
673A:03/03/13 23:59
>>670
そのキャラってのが、どういう状態なんだか、ぜんぜん分からないけど
それらを管理するオブジェクトを作って、Zオーダー持たせればよいかと。
ソートが必要なのは、Y座標から計算、でも、Zオーダーでも同じだけど。
たびたびすみません

Form1からForm3Createを呼び出すときに、引数Sender: TObjectが必要なのですが
どのように書けばいいのですか?とくに呼び出し元の情報は必要無いので
nilと書いたり、省略したら怒られてしまいます。
>>674
Applicationでも渡しとけば?
>>674
>constructor Create(AOwner: TComponent); override;

なぁ?Senderじゃないんだけど。
あれ?こうなっていますよ。

procedure TForm3.FormCreate(Sender: TObject);

おかしいなぁ・・。

>>675
applicationを渡したら通るようになりましたが、Form3のCreateプロシージャ内で
Form3の内容がnilになってて、諸プロパティを設定させようとするとエラーが出ます。

showの前にcreateだけしてそのコンポに値をセットして送って出来ないんでしょうか?
というか、一般に設定ダイアログの生成ってどうやるんですか?

今作っている流れでは
メインフォームの作成・表示→設定ダイアログの生成→要求があれば設定ダイアログを表示
→INIファイルに設定保存→アプリケーション終了→再起動→INIファイルから設定読み込み→(繰り返し)

という流れなんですけど。

678デフォルトの名無しさん:03/03/14 00:49
>>677
釣りじゃないと仮定して…
全然全くもって勘違いしてます。
「もしかして?」と思って書き込まなかったけど。
”それ”と”それ”は別物ですよ。
あ、それとも発想を変えて

設定は全てINIファイルで管理することにして、設定ダイアログはINIファイルを
いじるためだけの道具と考えればいいのかな?

そうすれば、Form1からはForm3ではなくINIファイルへアクセスすれば
いいことになりますよね。

つうかそれがふつうですか?
>>677
var
Form2:TForm2;
begin

Form2 := TForm2.Create(Self);
Form2.ShowModal();



Form2.Free();
>>677
プロジェクトのオプションでSetupFormを自動作成させないという前提で
例えばこんな方法もあるよ
// 設定ダイアログ側
TSetupForm
 (中略)
 public
  procedure Execute;
end;
(中略)
procedure TSetupForm.Execute;
begin
 // INIファイル読み込み
 ShowModal;
 if ModalResult=mrOk then
  ApplyIniFile; // INIファイル書込み
end;

// メインフォーム側
TForm1.OpenSetupForm;
begin
 SetupForm:=TSetupForm.Create(Self);
 SetupForm.Execute;
 SetupForm.Release;
end;
>>680-681
見ず知らずの者にこんなにコード書いてくださってありがとうございます。
今読もうと思っているところですが、たぶん今の自分のレベルではなかなか
理解できないかなーなんて。
一つ一つステップ踏んでいくしかないと思ってますので、どうか温かく見守っていてください。n(__)n
>>673
ありがd
なんかぼんやりと思いついてきたような。
これからソートのいいやり方探してきます。
>>683
簡単にやるなら、グラフィックコントロール継承にして、ビットマップとか枠とか持たせて
そのコントロールにZオーダのメンバーを持たせておいて
例えばパネルに描くなら、パネルCompomentsをZオーダでソートする
685デフォルトの名無しさん:03/03/14 13:39
ある特定のファイルの名前を変更出来なくすることって可能なんでしょうか?
具体的にはコンテキストメニューやプロパティで名前を変更しようとしたときに「このファイルは名前の変更が禁止されています」と表示して、
ファイル名の変更を禁止したいのです
686デフォルトの名無しさん:03/03/14 13:55
>>685
ReadOnlyにしとけばいいやん
自作コンポのアイコンってかビットマップかえるのって、
ttp://www.borland.co.jp/qanda/delphi/d0005108.html
これでいいんすよね?Delphi5.0なんですがうまくいかないっ!あう。
設計時パッケージのプロジェクトに.dcrを追加してみる。
それでも駄目なら{$R で無理やり埋めこむ。
>>688
おおでけたw さんくす!
でもフォームに配置すると・・・・・うはw かわんねえw
継承元のやつが出てくるなあ・・。
>>686
それでも変えられるやん
>>690
ずっと開いとけばええやん
>>691
屁理屈やん
693デフォルトの名無しさん:03/03/14 17:21
レコード型の定数済定数を定義したいのですが

type
 Taaa = record
  a: Integer;
 end;

 Tbbb = record
  b1: Integer;
  b2: Integer;
  aa: array[0..1] of Taaa;
 end;

const
 bbb: Tbbb = (
  b1: 100; b2: 200;
  ここはどういう風に書けばいいのでしょうか?
 );

aa[0].a: 1 とかやってみたのですがだめでした。
よろしくおねがいします。
694693:03/03/14 17:31
分けて考えたらできました
aa:((a:1), (a:2))
Delphi言語とPascal言語の違いを教えてください小一時間
Delphi言語=
 古代ギリシアで行われた、神託の儀式で使われる言語、
 Delphi神殿では、床から常時火山性ガスが吹き出している。
 巫女にそのガスを吸い込ませ、一種のトランス状態にさせる。
 そのときのお告げに使われる言語がDelphi言語という。

Pascal言語=
 真女神転生1というゲームで、主人公の飼い犬が話す言語。
697デフォルトの名無しさん:03/03/14 20:22
CのHファイルを変換して、Delphiで使いたいのですが、
いいツールなどはありませんか?
h2pas
>>697
http://www.google.co.jp/search?q=H2PAS&lr=lang_ja

これを手がかりに検索していってみたら?
h2pasって、フリーパスカルのやつですよね。
あれのh2pasで変換したやつを使ったら、
ライセンスはGPLにしないといけないんでしょうかねぇ?
>>700 そういうネタはこっちで・・・・GCCでコンパイルしたらGPLになるってのより酷いネタだね

【殺しの】ライセンス【道で拾った】
http://pc2.2ch.net/test/read.cgi/tech/1045006087/
702デフォルトの名無しさん:03/03/14 21:02
ファイルの保存にTSaveDialogを使っているのですが、
プログラム内では何も指定していないのに、前回保存した
フォルダが開いてくれます。
これはどこに情報が保存されているのでしょうか?
プログラム終了したら元に戻らないか?
704702:03/03/14 21:08
>>703
終了して再起動しても覚えててくれてるのです。
これはこれで使う側には便利なのですが、謎です。
ムスカキタ━━━━━(゚∀゚)━━━━━!!!!
>>704
レジストリをフォルダのパスで検索して調べてみては?
707702:03/03/14 21:45
>>706
やっぱレジストリですよね。いくつかそれらしき箇所が見つかりました。
使う側が意図しなくても暗黙に使われることがあるという事がわかりました。
708デフォルトの名無しさん:03/03/14 22:51
何かDelphiの裏技はありませんか?
>>708
バージョン情報でAlt+T E A M
って昔も書いたな。
>>704
その「TSaveDialog」は何もしてなくても、他のもんでファイルオープンとかしてない?
そーすっと、勝手にそのフォルダになったりするよーな気が。
711710:03/03/15 00:14
なんか頓珍漢なレスしたよーな気がしてきたので>>710は忘れて♥
>>709
Alt+ S A S A D U K A
713デフォルトの名無しさん:03/03/15 08:57
レコード型という便利なものがあることを知りました。

レコード型の配列変数を作ったのですが、

たとえば
type Delphi: record
Object: integer;
Pascal: string;
end;

として
var Borland: array [0..100] of Delphi;
みたいなことをやったのですが、

この配列のBorland[0].Pascal から Borland[50].Pascal に同一の値を入れたい場合に
一気に入れるやり方ってありますか?
それともfor文でループさせるしかないですか?

>>713
ない。たいした手間じゃあるまい?

どんな構文を期待しているの?
>>713
それは 別の配列と51レコード文同じ配列を作りたいという事?
 そのやり方は、absolute で 別名を与える。 つまり、
 var Borland: array [0..50] of Delphi51 absolute Delphi50 ; //51レコード文の配列
 してこっちに代入すればいいという方法

あるいは1レコード目と残り50レコードを一致させたいという事?
 これならあったとしても、for文でループさせるのと効率は同じだし判り易いからそうすべきだと思う

>>712
もういいか。

Alt + サ サ ツ ゙ カ

NEC-98 のカナロック、または IME で半角カタカナ直接入力モードで。
717デフォルトの名無しさん:03/03/15 09:29
>>714
ずらずらと書き連ねるのは面倒なので・・・コピーすれば良いんですけど、添え字の部分はて入力になってしまうし。
やっぱりfor文ですかね。

>>715
後者の意味です。
Borland[0].Pascalから始まって、Borland[1].Pascal,Borland[2].Pascal,...,.Borland[50].Pascalに至るまで
全部同じ値を入れたいんです。

「から・・・に・・・」って紛らわしい表現でした。お詫びします。
718まだまだ:03/03/15 10:16
Alt + DEVELOPERS
Alt + ANDY
Delphi1のみ
>>716
「焼肉食いてー」
だっけ?
Alt + MANKO

残念ながらモザイク有り
722デフォルトの名無しさん:03/03/15 13:03
ALT+TEAMでスターウォーズみたいなオープニングがでてきましたが
これってどうやって描画しているのですか?
Delphiって3Dサポートしてましたっけ?
VBはWith文使うと明らかに実行速度が変わってきますが、
DelphiだとWith文使っても実行速度が変わらないって本当?
オーバーヘッドの大きいメソッドの呼び出し回数を減らすような
使い方をすれば速くなるしそうでなければ速くならない。
>>723
って言うかそんなもん最適化の時点でどっちも同じになると思われ。所詮はレジスタなりメモリなりのアドレスな訳で。
>>725
そうとも限らない。こんなケースではwithを使うと高速化されるよ。
with HeavyMethod.SlowMethod.HttpDownloadMethod('http://www.borland.com/') do
begin
 Memo1.Lines.Assigned(Strings);
 Memo2.Lines.Assigned(Strings);
end;
>>722
Open-GL.
>>726
あ、そのテクニックおいしすぎ。
値欲しいだけなのに変数宣言するの面倒だったりするもんな。
>>716 が気になる。
何が出るの?
>値欲しいだけなのに変数宣言するの面倒だったりするもんな。
C#ではこれが理由でwith廃止されてしまったんだよな。
any s = HeavyMethod.SlowMethod.HttpDownloadMethod('http://www.borland.com/');
みたいに型明示しないんならそれでもいいんだけど、そうでないからやっぱり面倒。

>>729
ネタ
//もっと強引なやり方

with TStringList.Create do
try
    Text := WatchString;
    SaveToFile('DEBUG.TXT');
finally
    Free;
end;
>>731
感動した。

c := x.Create('hoge').hogehoge();

とかしたい局面って結構あるからね。
733イースターエッグ:03/03/15 15:24
Alt + TEAM
Alt + DEVELOPERS
Alt + SASADUKA
With文は便利なんだが、
デバック時に変数のヲチがめんどくさいのが最大の欠点。
Japanese Staff
Masahiro Aoki
Takeshi Arisawa
Kayo Chigira
Noriko Kanda
Ken Masuyama
Ken'ichi Nakano
Tetsuo Nishimura
Hiroshi Shimizu
Motohisa Ohono
Miyoko Nishimura
Keiko Kitao
# Service Pack1 #
Masahiro Aoki
Takeshi Arisawa
Ken Masuyama
Mina Matsuchika
Takashi Matsumaru
Ken'ichi Nakano
Tetsuo Nishimura
Hiroshi Shimizu
Motohisa Ohono
Miyoko Nishimura
Keiko Kitao
>>734
そりゃデバッガの問題のような。といったところで解決するわけでもないけど。
全体的にデバッガ機能が弱いよね。関数の戻り値すら教えてくれないのにはびっくり。
737ビギナー:03/03/15 19:47
デルフォイってバージョン6で作ったやつを、
そのままで7でも続きを作ることが出来るんですか?
>>737
2→3→4→5→6
と引き継いできたアプリがあるよん
俺は7に上げてないけど→7も当然できると思うよん
>>736

ctrl+F7で普通にできるような
740A:03/03/15 22:28
メインのHDDが壊れたのでDelphiを入れなおし…

Indy9.0をサイトから落としてきて、
指示どうりに、Fulld4.bat を実行。D4フォルダができて中にファイルが並ぶ。
コンポーネント-パッケージの追加 で、D4フォルダの dclIndy40.bpl を登録。
パレットにIndyコンポが並ぶ。

試しに、何も無いFormに適当にIndyコンポ(TIdTCPClient)を1つ乗せて
実行してみると、usesのところで、

[致命的エラー] Unit1.pas(7): ファイルが見つかりません : 'SyncObjs'

と出る…検索するとたしかに、そんなファイルは無いらしい。
これって、何?

バージョンは、Delphi4 Standard up3
環境オプションのライブラリパスはD4フォルダを通ってる。
>>740
Indy 9.0 は Delphi4 std をサポートしてない。
ダウンロードページにも書いてあるだろ。
ちゃんと読め。
http://www.indyproject.org/AnOpenLetterToD4StdUsers.html
742A:03/03/16 00:13
>>741
うお。ほんとだ…
D4ができるからすっかり対応してるものだとばかり…
stdだけだめなのね。
8.0落としてくる…
743デフォルトの名無しさん:03/03/16 01:28
TTimerコンポについて質問させてください(D7)。

エディットボックスの数値と連動させて、一定間隔であるプロシージャを呼ぶようにしたいのです。
問題は、アプリを起動して、カウントが始まるわけですが、
たとえば、12:00スタートで15分間隔、12:15が次回イベント発生時だったとして
この間、12:10くらいになって、エディットボックスをプラス5した場合、
新たに15+5=20をIntervalにセットしなおすと、12:20ではなくて、12:30にイベント発生が延びてしまう
のではないでしょうか?

次回イベント発生までの残り時間をセットできるプロパティは無いようなのですが・・・どうすれば良いでしょう?
あるいは前回起動時からの経過時間がわかれば、次回までは差分をセットしておいて、その後は新たな値を
フルでセットする・・・という方法も考えたのですが・・・。

>>743
タイマを2つ使う

いじょ
>>744
それはもしかして・・・ダイハードで公園の泉の脇にあった2つのボトルを使うパズルみたいな・・・頭を使う仕掛けですか?
漏れでも簡単に思いつきますか?
とりあえず一晩考えてみます。

http://piza2.2ch.net/tech/kako/1001/10010/1001035627.html
の224見つけたんですけど、リンク切れ・・・うぅ
>>745
元のタイマを一旦眠らせて
もうひとつのタイマに
「次回イベント発生までの残り時間をセット」
しておいて
そのタイマでイベントを発生させつつ
元のタイマを起こしてやるわけでし
これならどんな風にでも使えまし
>>746
えーーと・・・・うーーん・・・「次回イベント発生までの残り時間」って取得できるんでしたっけ?

タイマーイベントが発生するまでの経過時間を指定するにはInterval プロパティを使う
時間を指定したイベントを停止するにはタイマーコンポーネントのEnabled プロパティをfalse に設定する

使えそうなプロパティはIntervalしか見当たらないんですけど・・・
もしかして起動時から現在時まで差分を求めて、以後毎回イベント発生時にその時刻を変数に入れて
現在時と差分を取る・・・みたいなことをするんですか?

>>747
何とでもできるでしょ
1分刻みのタイマで時刻を指定するのもよし差分を使うのもよし

要するにエディットボックスの数値が変更されたときにだけ
普段は寝かしてあるもうひとつのタイマを起こして調整するということでし

がんばりませう
>>748
2つ使うという大ヒントを貰ったので、なんとか今晩がんばってみます。
どうもありがとうございました。m(__)m
>>743 >>449
エディットボックスの値とIntervalを一緒にしない方法も。
Intervalは1秒(1000)に固定。
変数n:Integerを用意して
タイマーがスタートしたときはn:=0にセット。
でOnTimer()のたびに、nを1増加。
このnが900(15×60)を超えれば15分経過したことになる。
nの値とエディットボックスの値を比較してやればよい。
751デフォルトの名無しさん:03/03/16 15:22
タイマー使わないで、プログラムの処理を5秒間止めることって出来ますか?
手を使わずオナニーすることって出来ますか?
753デフォルトの名無しさん:03/03/16 15:48
Sleep(5000)
>>752
口でも足でも色々方法はありますが、何か?
>>754
レスありがとうございます。
さっそく試してみます。
>>753
ありがとうございます
>>753

行末のセミコロン(;)が抜けてます。
758デフォルトの名無しさん :03/03/16 21:17
HTMLの特殊文字を文字に直したりできるコンポーネントはありませんか?
begin
Sleep(5000)
end;

Compile ok
>>754
肛門にはどの程度まで指を突っ込めばいいのでしょうか?
>>758
自分で作ったら?
そんなにむずかしいとは思えないんだけど。
762デフォルトの名無しさん:03/03/16 23:02
もしわかる方がいましたら、よろしくお願いします。
環境は Win2000、Delphi 6 Personal です。

メインフォームから開いたサブフォームを、メインフォームのパネルに埋め込んだ状態と
別ウィンドウの状態とで切り替えたかったので、下のような命令を書いてみました。

サブフォーム、埋め込みボタンクリック時
  self.Parent := MainForm.PanelSubForm;
  self.BorderStyle := bsNone;
  self.Align := alClient;

サブフォーム、解除ボタンクリック時
  self.Align := alNone;
  self.BorderStyle := bsSizeable;
  self.Parent := nil;

ところが上手く動く場合と、デスクトップの左上に張り付く場合と、
「コントロール 'SubForm' は親ウィンドウを持っていません.」
のようなエラーが発生する場合とがあって原因がつかめませんでした。
根本的なやり方が間違ってるのでしょうか?
  ∧,,∧  >>758さん
 ミ,,゚Д゚彡 HTMLの特殊文字って
 ミつ日(ミ  どんなものがあるですか?

&hearts;とか?
  ∧,,∧  >>762さん
 ミ,,゚Д゚彡 うちではうまく動いてますよ・
 ミつ日(ミ  D6Up2、WinXPPro
procedure TForm1.FormShow(Sender: TObject);
begin
 Form2.Show;
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
 self.Parent := Form1.Panel1;
 self.BorderStyle := bsNone;
 self.Align := alClient;
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
 self.Align := alNone;
 self.BorderStyle := bsSizeable;
 self.Parent := nil;
end;
(´-`)。o ○ (特殊文字ってマジで何のことを言ってるんだろう?
まさか「改行」とか?微妙に気になる…)
766762:03/03/17 00:12
>764
レス有り難うございます。
うーん、確かに上手く行く時は上手く行くんですが、既存のプログラムに追加すると
ダメだったり、新規にテストプログラムを作ってみても動いたりダメだったり……。
あと、エラーは出ないんですが状態が変わらないという現象も出ました。
「コントロール 'SubForm' は親ウィンドウを持っていません.」の場合、self.Parentに
セットする部分でそのエラーが起きてました。self.Parentを見たら"nil"だったんですが、
上手く動いてる方も同じく"nil"でした。

やり方としてはこの方法で間違ってなかったのでしょうか?
もしこのまま原因がつかめないようでしたら、代替手段を探してみます。
どうも有り難うございました。
767デフォルトの名無しさん :03/03/17 00:44
768765:03/03/17 00:54
>>767
ああ、そーゆー意味か。
サンクス。
769デフォルトの名無しさん:03/03/17 02:09
こんな深夜、しかも週明けに申し訳ありません。

別スレッドの中で新しくフォームを作成して・・ということをやっているのですが、
実行しても設定したプロパティ通りに表示されません。

自動で作成されたユニットとフォームを見ると、フォームファイル.DFMがあって
そこにプロパティは格納されているようですが、手動でフォームを動的に作成する場合
.DFMファイルの果たす役割はどう処理すればいいのでしょう?
TForm.CreateNewで作ると.DFMは読まない。
TForm.Createで作れば.DFM(の内容が入ったリソース)を読む。
自分が分かるのはここまでッス。

咳が酷くて眠れない…
>>770
ありがとうございます!
それがわかっただけでも大きな進歩です。

目の周りがだんだん引きつってきました・・・
喉が痛いお仲間レス。
確かVCLは複数のスレッドからGUIを出せなかった気がします。
GUIスレッドは一本で、そこへ他スレッドがTThread.Synchronizeで同期を取る…みたいな。
あれ?他のスレッドで作成しても、メッセージループをGUIスレッド(メイン)に任せてしまうなら問題無いのかな?
…と、なにかずれたことを言ってる気がする。
774デフォルトの名無しさん:03/03/17 06:40
フォームのボーダースタイルをノーンにしたら立体感が損なわれますが、立体感を損なわずにノーンの状態にするにはどうするのが良いのでしょうか
>>774
立体感を損なわなかったら、ノーンの状態じゃないじゃん。

タイトルバー非表示で、ボーダー付きとかそういう意味なら、
NIFTY SERVE Delphi Users' Forumに載ってるよ。
776デフォルトの名無しさん:03/03/17 09:54
>>773
自分が作っているのは、本体を最小化したときに電光掲示板みたいなウインドウで
情報を流すものなのです。ねじまき企画さんのコンポを使っているのですが、
なぜかフォーカスが当たってないとスクロールがぎこちないんですよ。
自分の実装の仕方がまずいのかも知れませんが、フォーカス当てれば滑らかなので
それならスレッド分ければフォーカス当ててるのと同じ効果出るのかなぁと思って。。。

それか、スレッドって通信系みたいなGUIとは関係無いパートにしか使えないのですか?
シンクロメソッドを使った操作は別フォームに対してもできるようですが、それをやると
スレッドにした意味があまり無いと、MLの過去ログに書いてありました。
>>776
 ぎこちないのは、CPU負荷下げるためにわざとやってるんじゃないの?

そういう動作の為にスレッド別ける設計はあまりよくない
タイマーでそこの部分にInvalidate を発行して
Paint メソッドで再描画させる方がいい。

 まあタイマー内で描画させてもいいけど・・・・
>>777
そうだったのですか・・・。
教えていただいた方法のほうが私みたいな未熟者でも簡単にコードかけますので
そうしてみます。やはり菊は一時の恥ですね。どうもありがとうございます。m(__)m
教えて君は死んでも教えて君。
780デフォルトの名無しさん:03/03/17 11:51
TClientSocketを使うプログラムを作成しているのですが、
接続が確立できないIPを指定した場合に、
タイムアウトまでの時間が長く、ハングアップしたような感じになってしまいます。
なにか改善方法はありますでしょうか?
781デフォルトの名無しさん:03/03/17 12:16
>>780
CreateThread
>>775
見つかりました。ありがとうございます
783デフォルトの名無しさん:03/03/17 14:58
「nil」って無しってことですか?
あと、「nil」と「null」は同じ意味なんですか?
んだ
1009
ノーンってNONE?
フサギコの中の人は大変でつか?
馬鹿っ!NONEはノネだろ!
  ∧_∧
 ( ´∀`)<にるぽ
>>789
それ前やったけど全然流行らなかったよ・・・頑張れ!
IndyのidTCPServerって非ブロッキングソケットにできないの?
やり方教えてください
お願いします
792デフォルトの名無しさん:03/03/17 17:54
最大化で起動するようにしたらタスクバーをも隠してしまうのはバグですか?
>>792
お前のな。
794デフォルトの名無しさん:03/03/17 17:59
仕様です(ksw
795bloom:03/03/17 18:04
796デフォルトの名無しさん :03/03/17 18:28
変数からn行目の文字を取り出すにはどうすればいいんですか?
>>796
1. どういう変数のことを言いたいのか分からない
2. n行目というからには文字ではなくて文字列ではないのか
以上のように質問に問題があるのだけど

TStrings型の変数aStringsのn行目の文字列ならaStrings[n-1]
>>797
TStringsではなくて、Stringの行を指定して文字列を取り出すことはできませんか?
799デフォルトの名無しさん:03/03/17 19:00
>>798
Stringの行って・・・ナニ?
TStringListやTStringsでなく?
>>798
function GetLine(s:string;n:integer):string;
begin
 with TStringList.Create do try
  Text:=s;
  Result:=Strings[n];
 finally free;end;
end;
>>799
改行コードが含まれるString型の変数のことではなかろうか。
>>801
俺は素直にTStringListのTextに放り込むけどなぁ。
>>801
そうですそれです。
>>800
ありがとうございます!
805デフォルトの名無しさん:03/03/17 19:14
彼(彼女)はTstringsの使用を潔しとしないのか
それとも使用できないのか
>>805
後者の方です
使用できないのに>800の方法はOKなのか?
よくわからん
PopupMenuをフォームの真ん中にポップアップさせるにはどうすればいいですか?
>>807
functionは分かるんで>>800さんのでも大丈夫ですよ。
810800:03/03/17 21:10
>>800 は 行数が多いときは重い処理だから、軽くするなら
http://www.geocities.co.jp/SiliconValley-Oakland/8522/data/uSpliter.txt
を使って

function GetLine(s:string;n:integer):string;
var i:Integer;
begin
  with TStringSpliter.Create(s) do try
   for i:=0 to n-1 do GetSplitStr(#13#10);
   Result:= GetSplitStr(#13#10);
  finally free;end;
end;

とするといい。
811デフォルトの名無しさん:03/03/17 21:11
Imagingを使ったビューアを作成しています
画像サイズのことで教えて欲しいのですが、
例えば、解像度200dpi×200dpi・幅1664 高さ2338の画像を
ウインドウに合わせて表示したときの
拡大率が60%のときに、300%まで拡大率を上げて
ウインドウの大きさは全く変えてないとすると
表示されている部分の幅、高さは何ピクセルになるでしょうか?
すれ違いだとは思いますが、質問するところがわからず
delphi使用版なのでここで質問させてもらいます
>>810
ありがとうございます。ほんと助かりました。
>811
こんな感じじゃない?適当だけど
//ウインドウサイズ変更
Zoom := 60/100;
ImageWidth := 1664;
WindowWidth := ImageWidth*Zoom;

//ウインドウサイズ固定で画像をズーム
Zoom := 300/100;
PixelPerPixel := 1/Zoom;
VisibleImageWidth := PixelPerPixel*WindowWidth;
//VisibleImageWidthがImageの表示されている部分の実際の幅
>>813
レス有難うー
いまいちよく解らないけど、サンプル見ながらがんばってみますね^
>Tstrings

そもそも抽象クラスです。
816813:03/03/18 00:49
>814
あ、いちおう言っておくと、>813の変数は何かのプロパティとかじゃなくて、
全部、適当に用意したやつね。
整数なら/じゃなくてdivじゃない?
>>815
このあたりのレスで使われている機能はTStringsから継承してるものだから
TStringsでいいんでないの?
実装とはまた別の話
>817
この場合、整数でdivでやるんじゃなくて、実数型で計算して、
最後にTruncってやらないと、欲しいのと全然違う値になっちゃうと思う。
もっと工夫すれば、整数でも計算できるのかもしれないけど。
60%にするなら普通にImageWidth * 60 div 100でいいとおもった。
四捨五入したいなら (ImageWidth * 60 + 50) div 100 かな
ディヴって何?
夫人だろ。
パスカルでもdivを使えるとは知らなかった
逝ってきます
826デフォルトの名無しさん:03/03/18 11:41
Edit1に入力した名前をデータベースから検索するのに
“DataSource1.DataSet.Locate('名前',Edit1.Text,[loPartialKey])”
と書いてるのですが、最初の一件しか検索できません。

次の候補を検索させるにはどうすればいいですか?
827デフォルトの名無しさん:03/03/18 12:11
          Peal
うーん・・  +Perl
   +Pascal
эlforth
>>826
最初の一件を見つけるために使うのが Locate だから。
見つかったレコードに移動するだけ。

Filter かけるか Query 出すか。
829デフォルトの名無しさん:03/03/18 13:04
マウスジェスチャーのポンコーネントください
830826:03/03/18 14:40
>>828
そうですか。(´・ω・`)ショボーン
>> 830
なんで ショボーン するんだよぉ

Filter セットして FindNext をよびましょ
832826:03/03/18 15:58
>>831
Filterって、完全一致でないと駄目なんじゃないですか?
例えば、“名前”に“加藤”を含む加藤一郎、加藤二郎、加藤三郎を
表示させるのは、Filterで出来ます?
部分一致で、検索するかフィルタするかしたいんです。
833デフォルトの名無しさん:03/03/18 18:18
TEditで文字列を真ん中や右に揃えられないの?
>>833
TMemo(だったっけ?)を使うが吉。
835検索くらい(略):03/03/18 23:06
>>833
検(略)
836デフォルトの名無しさん:03/03/18 23:27
ポート番号がわかりません。
どうやって知ることができますか?
>>836
どうもこうも。
>>836
ライブラリは何使ってるの?
839デフォルトの名無しさん:03/03/19 00:49
>>836
ポートスキャンしてください。
タイ━━━━||Φ|(|´|Д|`|)|Φ||━━━━ホ!!
>>832
最近はSQLばっかでフィルター使ってないんだけど・・・
OnFilterRecordの中で
Accept:=(AnsiPos('加藤', フィールド名.Value)>0);
みたいにすればいいんでないのけ
スレッドってfunctionとして定義できますか?
例を見てみるとprocedureとして書いてあるのだけなんですけど・・
843デフォルトの名無しさん:03/03/19 06:36
MicrosoftとBorland、共同でDelphi.NET開発中だそうだ。
>>842
と、言うか素直にTThread使った方がよく無くないですtか?
845826:03/03/19 08:53
>>841
ありがdございます、できますた!
よかったら、後学のためにSQLでの書き方も教えてもらえないですか?
ヒントだけでも。
>>842
 スレッドって API で直接実行する方法の場合は
   int型の帰り値を持たせてる方法と
  ExitThreadで終らせる方法があるから

前者の方法を使うなら function でなくちゃ
>>845
DBによってまちまちで
 SQL-Server:CONTAINS、FREETEXT(CONTAINSTABLE、FREETEXTTABLE)
 Oracle:INSTR、INSTRB
 Firebird(InterBase):CONTAINING
をそれぞれWHERE句で使うんでないかい(SQL-Serverの括弧内はFROM句)
・・・Firebird以外は自信なし

お使いのDBで調べてくさい
848826:03/03/19 10:56
>>847
分かりました。ありがdございますた。
>>843
ソースは?
850オシエテちゃん:03/03/19 13:21
HyperCardのwin版ってないのでしょうか?
お願い!詳しい人教えてくださいな!
>>849
ワロタw
>>850
ばーか
853842:03/03/19 20:29
日本語になってませんでした。すみません。
やろうとしていたことは、WinAPI使ってURIデータを送受信する部分のスレッド化だったのですが
実装してみたら使えませんでした。もうお分かりかと思いますが、データが返ってくる前にそのデータを
待ち受けているべきメインスレッドが先に進行してしまって・・・(笑
>>844
TThreadは使っていたのです。それのexecuteをprocedureではなくfunctionとして書きました。
(それ自体は成功しました)

>>846
APIを使う方法は試してません。そこまで力無いです。

ありがとうございました。

StringGridで列単位に入力を制限する方法って
ありますか?
>853
TThread.OnTerminateイベント使ったら?
856デフォルトの名無しさん:03/03/19 22:37
jconvertってもう落とせないのでせうか…
>>856
ワラタ
858デフォルトの名無しさん:03/03/19 22:46
859842:03/03/19 23:11
>>855
それも実装してみたのですが・・・
とにかくスレッド化してしまうと、スレッドを分けた分岐点から処理が先に進行してしまう・・・
あ、そうか、OnTerminateの部分にメインスレッドの先を書けばいいのか・・・あぁ、どうしてそれに
気付かなかったのだらう・・・あのユニットもう消しちゃったよ・・・うぅ
>>854
特定の列だけ入力できないようにしたいって話なら、
OnSelectCellでOptionsにgoEditingを付けたり外したり。
EditorModeも変える必要があったかもしれん。
861デフォルトの名無しさん:03/03/20 10:51
>>860
それやったんだけど
goAlwaysShowEditorをTrueにしてる場合だと
たまに入力できる状態になったりする。
マウスをドラッグした時とか・・・

862854:03/03/20 11:58
>>861
MouseUpとKeyUpでgoAlwaysShowEditorを変更するようにしたら
できました。
863デフォルトの名無しさん:03/03/20 14:49
procedure TFormMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if MessageDlg('終了しても良いですか?', mtConfirmation,[mbOK, mbCancel], 0) = mrOK then begin
Exit;
end;
end;

こんな感じでやってみましたが、キャンセル押しても終了されてしまいました。
キャンセル押したときに、終了を無効化できることはできないんですか?
864863:03/03/20 14:59
解決しました
FindFirst関数で使うfaArchiveとはどういうファイルのことなんですか?
ツールバーコンポのように設計時にボタンを追加したくてTComponentEditorをいじってるんですが、
ExecuteVerbでTButton.Create(Component).parent := TPanel(Component)
としても追加はできてもプロパティの変更等ができません。
どうしたらよいでしょうか?
868ねこま:03/03/20 21:50
>>867
IFormDesigner.Edit
戦争反対!!戦争反対!!戦争反対!!戦争反対!!戦争反対!!
戦争反対!!戦争反対!!戦争反対!!戦争反対!!戦争反対!!
戦争反対!!戦争反対!!戦争反対!!戦争反対!!戦争反対!!
戦争反対!!戦争反対!!戦争反対!!戦争反対!!戦争反対!!
戦争反対!!戦争反対!!戦争反対!!戦争反対!!戦争反対!!
870A:03/03/21 01:54
TTreeViewについて質問

ツリーを作ることはできるのですが、特定のノードへアクセスできません。

例えばルート(レベル1?)の3番目の5段目ノード(レベル5?)にアクセスするとか
複雑に枝分かれしたある場所のノードへアクセスするのがさっぱり。
871デフォルトの名無しさん:03/03/21 02:05
teditor でハイフンと半角英字の混ざった単語を色分けするにはどうすればいいでしょう。
a-b、みたいなやつを別色にしたいのですが…
>870
TTreeNode.Itemプロパティとか、これらのメソッドとかを使えば、きっとなんとかなる。
getFirstChild GetLastChild GetNext GetNextChild
getNextSibling GetNextVisible GetPrev GetPrevChild
getPrevSibling GetPrevVisible
とりあえずヘルプをよく読むことをお奨めする。
873A:03/03/21 10:52
aaa
>>872
つうかDOMじゃん。
ZAKUじゃん
MIDIキーボードからの入力を受け取るにはどうすればいいんですかね?
878デフォルトの名無しさん:03/03/21 16:16
アイコン変えたら、元に戻せなくなりました。
あの新規プロジェクトの時に付いてるアイコンは一体どこにあるのですか?
Delphi32.exe
880デフォルトの名無しさん:03/03/21 17:11
メモリの解放っていつやればいいんですか?
要らなくなった時
>>880
OSにまかせちゃえ
>>882
GC搭載してるOSってなんかあったっけか?
プロセス終了時に開放するって意味だろう。

TCharFormat、TCharRange ってどのunitにはいっていますか?
>>885
プッチモニ。


……すまん。
>>886
ミニモニ。に謝れ。
>>886-887
モーヲタキショイ

>>885
メロン記念日
889デフォルトの名無しさん:03/03/22 01:58
教授!メニューバーの項目を右寄せする方法教えてください
教授て誰?
天才柳沢?
チャールズ・エグゼビア?
891デフォルトの名無しさん:03/03/22 02:29
>>889
しなくていいです。そんなことしてるソフトは絶滅危惧種です。
892889:03/03/22 03:22
やっぱDelphiじゃ出来るわけ無いか
・・・・・んぁ?
勘違いされてるようなんで一応書いておくと、
インターネットエクスプローラのようにメニューバーの右端にマークを付けたいだけです
895Delphi初心者:03/03/22 11:21
Delphiでは主に何が作れるのですか?ほかの言語に比べて、作りやすいですか?
Windowsのプログラムが作れます。慣れれば作りやすいです。
897Delphi初心者:03/03/22 11:31
.exeファイルも作れますか?
Q1 Delphiでは主に何が作れるのですか
 いわゆるWindows アプリ全般
 無料のものでも外部コンポーネントを使えばクライアントアプリも作れる
 お金を出せば
 ActiveXもつくれるし
 イントラサーバ側や、データベースを利用したアプリも簡単に作れる

Q2 ほかの言語に比べて、作りやすいですか?
 作りやすいかどうかは他人には判らない
 文法はシンプルで厳格かつ柔軟
 応用力のある人には覚える事が少なく楽だろう。
 キー打鍵数は比較的多い方だろう
 コンポーネントを使ったVBに似たお手軽プログラミングも可能。
 ただ、VBと違って、学ぶ姿勢があれば、
 構造化スタイルからオブジェクト指向まで容易に習得出来る。
>>897
 32bitWindows用の Exe 又は DLLが作れます
 お金を出せば NTサービスも作れるそうです
900Delphi初心者:03/03/22 11:35
レス有り難うございました。ところで、みなさんはDelphiを使っているのですか?
Delphi自体には不満が無いが、ボーランドジャパンの弱体化ぶりが
気になる昨今。(開発者は英語力鍛えとけよ・・・って事で。)
>>899
タダのやつを使ってもAPI使えばNTサービスも作れるよ。
NTサービスは、それほど難しくない。
>>894
CoolBarじゃねえかドルァ
ただし情報が少なすぎてプログラミング自体初心者は他言語より苦労します
905デフォルトの名無しさん:03/03/22 13:53
>>904
インターネットが普通に検索できる人間なら別に問題なし。
教えて君にならずに自分で何でもやってみることだな。
後、Cも平行して覚えればAPIに関しては何の心配もいらないと思われ。
>>904
むしろ自分で情報探さなきゃいけない分、
ほかの言語より厨房度は低いような・・・
>>906
Cも平行して覚えられるのなら、厨とかその程度のレベルには居ない資質の人間かと思われ。
>>908
お褒めにあずかり光栄ですw
最後に触った言語はQuickBasicでその前がファミリーベーシックだ…。
>>910
VBにいかずにDelphiにしようと思ったのは如何に?
DelphiはBASICじゃないぜ?
>>911
QuickBASICのBASICではないが。それ以前にVBもBASICじゃないだろ。もはや。
913デフォルトの名無しさん:03/03/22 15:22
Delphiのtryとexceptで例外を処理するときに、
どのメソッドがどんな例外を発生するかどうやって調べれば良いんでしょうか?
Javaのようにコンパイラが教えてくれたり、リファレンスに書いてないので分からないんです。
>>913
ヘルプに載ってますけど。
915913:03/03/22 15:32
>>914
ヘルプってVCLリファレンスのことですか?
それとも別の物?
たとえばTStringsのSaveToFileメソッドを使ったときに、
起こり得る例外などリファレンスのどこを見ればいいんですか?
>>915
書いてない->投げない

>>916
アフォ

>>915
書いていない例外は経験と勘と後付のエラー対応とVCLソース解析で対処。
>>917
あふぉと言われたので荒らすことにします。























 




                                               
             



                                






                                   procedure
920tantei:03/03/22 15:46
★あなたのお悩み解決致します!!
●浮気素行調査
彼氏、彼女、妻、夫の浮気を調査致します!!
●盗聴器盗撮機発見
あなたの部屋に誰かが仕掛けているかも!!
●行方調査
行方不明になっている家族の消息を調査致します!!
●電話番号から住所割り出し
一般電話、携帯から住所を割り出し致します!!
●ストーカー対策
社会問題ともなっているストーカーを撃退致します!!
その他人生相談からどんなお悩みでも解決いたします!!
 直通  090−8505−3086
URL  http://www.h5.dion.ne.jp/~grobal/
メール  [email protected]
   グローバル探偵事務局 

921910:03/03/22 16:27
>>911
なんとなくカコイイから…じゃ駄目ですか?
もうDelphi7Pro買ってきちゃったよう・゚・(ノД`)・゚・。
922デフォルトの名無しさん:03/03/22 16:45
Delphiの説明がされているお勧めのHPってありますか?
924デフォルトの名無しさん:03/03/22 16:50
>>923
ありがとうございます
>>925
おぉーありがとうございます。
某日だけinpriseのドメインが通らないのは某日のやる気の無さと考えてよろしいですか?
>>927
.co.jp を持てるのはは1企業1ドメインのみ
929デフォルトの名無しさん:03/03/22 23:39
D6Perでまともに使えるウェブブラウザコンポありませんか?
>929
TEmbeddedWB
931パソナラー:03/03/23 00:57
始めた理由:タダだったから。

>>930
外人さんのコンポって、たとえフリーでもちょっと敬遠しちゃうな…。
embeddedwbって素晴らしいコンポーネントだと思うけど、
「タダ!利用して配布してもタダ!文句言わないよ!勝手に使ってね♥」
ってでっかく書いといてくんないかなぁ(^^;。
利用規約がどのあたりに書いてあるのかよく分からない…。
アリガd
日本産のUIWebBrowserより便利だコレ
DelphiでP2Pアプリを組みたいんですが、どこかにサンプルみたいなのありませんか?
タダ版のServerSocketを使うやつでいいんだろうか…
Indy使え
936デフォルトの名無しさん:03/03/23 06:41
テキストで計算結果を文字列の最後に追加したいです

商品 個数 合計
100  5
200  3
150  3
これを元に以下のように

商品 個数 合計
100  5  500 
200  3  600
150  3  450

という風に出来ますか


バイナリデータをファイルに書き出したいのですが、どのようにすればいいのでしょうか?

HEX表示で 01 23 45 67 89 AB CD EF みたいなデータがあるとして

BinDate := IntToHex( $0123456789ABCDEF )
AssignFile(BIN, 'bindata.bin');
ReWrite(BIN);
Write(BIN, BinData);
CloseFile(BIN);

みたいなことをしたのですが、HEX文字列がそのままテキスト形式で出てきただけでした。
>>936
出来ます
>>936
出来ます
940デフォルトの名無しさん:03/03/23 07:08
どういう風にすればよいのでしょうか

TStringList[0]に商品 個数 合計として
TStringList[1]に100 5 
配列に入れて合計を出します。これは出来るのですが

その後TStringList[1]に追加する方法が分かりません


941????:03/03/23 08:29
IntToStr(合計値)
942デフォルトの名無しさん:03/03/23 08:55
DataLirt:TStringList
として

DataList.String[1]:=DataList.String[1]+','+IntToStr(合計値)
はできるのですが、合計値をループまわして皆に入れようとすると
エラーがでます
>>942
for i := 0 to list.count - 1 do
944デフォルトの名無しさん:03/03/23 15:51
for i:=0 to 0 do
と1回まわす分にはいけるのですが

for i:=0 to 1 do
とするとだめです
>>944
絶対インスタンス作ってないに一票。
関係するソースを全部さらせ。
>>946
VCLのソースが転載されるに8スレッド
948デル:03/03/23 17:20
テキストデータやCSVデータをエクセルの様に色々計算させたいのですが
TStringGridを使えば出来るのはわかるのですが、これはフォーム上に
STringGridを置いて使うものなのでしょうか?

データを配列に入れて、計算した結果を列を追加していきたいのですが、
掲示板でサンプルを探しているのですがなかなかありません。

STringGridの良いサンプルがあれば教えてほしいのですが
デルファイ歴 1週間です
>デルファイ歴 1週間です
まだ質問するにも早すぎるな。
950デル:03/03/23 21:11
まあそういわずに
951デフォルトの名無しさん:03/03/23 21:30
>>948
Excelのように使うのは無理だが(計算機能がないから)、
CellsプロパティにIntToStrで値を入れてやるってのが普通かなぁ。
Delphi中毒(末期)の漏れが言うのもなんだけど、何事も適材適所。
セルの計算がしたいだけならExcelで組むのがいいとおもうよ。

新人さんにこそよくよく聞いて欲しいんだけど、どの設計方針で組むのが
一番コストがかからないのか、組み始める前にじっくり考える癖をつけて欲しい。

それでもDelphiにしたいならまた来てよ。そのときは歓迎するよ。
953デル:03/03/23 22:06
Excelは遅いからDelphiにするんですけど

Excelで1つのファイルのデータを貼り付けて計算して結果出すのに
30秒から1分かかります。4000ものファイルを計算させるととんでもない
ことになります。

最初に作ったのは1つのファイルのデータを4000のファイルに振り分けるものです
Excelでは40分から50分かかります。
delphiでは25秒でした。

Excelはファイルオープン、クローズに時間がかかります。
だからDelphiにするのですが、いけませんか?
>>953
だからと言ってプログラミング歴1週間ではいかんともしがたいぞ。
955デル:03/03/23 22:53
そうですね。
一応サンプル探してCSVのデータの4列めと5列めをたして、6列めに
書くコードを作って見ましたが、エラーが出ます

procedure TForm1.Button1Click(Sender: TObject);
var
d: array[0..14] of string;
o: array[0..14] of string;
h: array[0..14] of string;
l: array[0..14] of string;
c: array[0..14] of string;
k: Integer;
StringList1:TStringList;
string_a_line:WideString;
// 2バイト文字を正確に扱うために、WideString とした
i,j:Integer;
begin
// テキストファイルからデータを読み取る作業
StringList1:=TStringList.Create;
try
StringList1.LoadFromFile('C:\test\test.csv');
for i:=1 to StringList1.Count-1 do
begin
string_a_line:=StringList1.Strings[i];
// 1行分を取り出します。
j:=Pos(',',string_a_line);
// カンマの位置を見つけ
d[i]:=Copy(string_a_line,1,j-1);
// カンマの前までの文字列を読み込み、配列に代入
string_a_line:=Copy(string_a_line,j+1,length(string_a_line));
// 最初のカンマの次の文字以降を新たな string_a_line とする
// 以下は同等の処理の繰り返し
956デル:03/03/23 22:54
j:=Pos(',',string_a_line);
o[i]:=Copy(string_a_line,1,j-1);
string_a_line:=Copy(string_a_line,j+1,length(string_a_line));
j:=Pos(',',string_a_line);
h[i]:=Copy(string_a_line,1,j-1);
string_a_line:=Copy(string_a_line,j+1,length(string_a_line));
j:=Pos(',',string_a_line);
l[i]:=string_a_line;
string_a_line:=Copy(string_a_line,j+1,length(string_a_line));
c[i]:=string_a_line;
if i=14 then // 配列変数のすべてにデータが入ったら
break;
end;
finally
StringList1.Free;
end;
try
for i :=1 to StringList1.Count-1 do
begin
k:=StrToInt(l[i])+StrToInt(c[i]);
StringList1.Strings[i]:=StringList1.Strings[i]+','+IntToStr(k);
end;
StringList1.SaveToFile('C:\test\test.csv');
finally
StringList1.Free;
end;
ShowMessage('終了しました');
end;
end.
どのようなエラーが出たのかを書けないと意味ないね
958デフォルトの名無しさん:03/03/24 00:21
Imageコンポーネントにあるpictureを消す場合って、単純に
> Image.picture := nil
で良いのでしょうか?

試しに、Image1.picture:=nil;
if (Image1.picture=nil) then showmessage('ほげ'); ってやってみても何も出てこなかったのが
非常に気になっているのですが・・・。
>>958
きっとメモリリーク起こしてます。
Image1.picture=nil ←これいくない。
Not Assigned(Image1.picture)←こちらを奨める

理由はヘルプ嫁
try‥finallyの使い方間違ってますし、
数値に変換するのに2バイト文字というのは意味不明。
CommaTextでも使え。
クラスAとクラスBがあって、
クラスAのメンバにクラスBのオブジェクトを宣言して
クラスBのメンバにクラスAのオブジェクトを宣言するにはどうしたらいいのでしょうか?

A = class
private
    bbb:    B;
end;

B = class
private
    aaa:    A;
end;

こんな感じですがクラスAを宣言する時にクラスBが定義されていないので
エラーになってしまうのですが、どうすればよいのでしょうか?
Aを宣言する前に
B = class;
とforward宣言しておく。
>>958
.visible := False;
>>964
ありがとうございました
また1つ勉強になりました。
967デル:03/03/24 06:34
>>957

デバッガ例外が発生
EAccessViolationクラスの例外を生成しました。
アドレス00000000でアドレス00000000に対する読み込み違反がおきました。

です
つーか1週間やっただけでExcel越えようと思うのは妄想が激しすぎると思ふ。
>>968
なんでもやり始めというのは壮大な夢を持つものさ。特にプログラミングは。
プロと同じツールを使うわけだからね。

だからと言って、他人を巻き込むなと言いたいわけで。
970デフォルトの名無しさん:03/03/24 09:13
むか〜しD3Professionalを使って、Paradoxのデータベースのアプリをかじった
のですが、再び始めようと思ってます。

無償配布のD6PersonalはD3proのDataAccessやDataControlsのような機能が
ないようなんですが、やっぱり有料版を使わないと駄目なんでしょうか。
Borlandのサイトではデータベース機能を利用するにはProfessionalでないと
駄目みたいなことが書いてあるんですが、他にやり方とかあるんでしょうか。
>>959-960
ありがとうございます。ポインタが無効な場合が・・・なるほど。

procedure TForm1.FormCreate(Sender: TObject);
begin
 Image1.picture.LoadFromFile('test.bmp');
  if assigned(Image1.picture) then showmessage('hoge1');
 Image1.picture:=nil;
  if assigned(Image1.picture) then showmessage('hoge2');
end;

で、試しにFormにImageをひとつだけ置いてこうやってみたんですが、
何故か、両方のダイアログが出現・・・Form上ではpictureは消えてるんですが・・・。(ノД`)?
972デフォルトの名無しさん:03/03/24 12:31
バイナリファイルにテキストデータを付け加えたいのですが

AssignFile(f, 'test.txt');
Append(f);
Write(f, textdata);

で行なうと、以前書き込んだバイナリデータの上に上書きしてしまいます。
つまり、appendを使ってもファイル末尾に書き込んでくれないのですが
どうすればいいのでしょうか?
ヘルプを読むと、末尾128バイト以内に云々と書いてありますが・・
973デル:03/03/24 12:36
>>969

>だからと言って、他人を巻き込むなと言いたいわけで。
じゃあでてくるなよ

最初は誰でも素人
デルファイが伸びないのは、あなたのような人がいるからかもしれないね

>>971
Picture.FreeとしないとAssignedではFALSEにならんよ

Image1.Picture.Graphic.Assign(nil);
if Image1.Picture.Graphic.Empty then
としてみてはどう?
>>972
Append は ctrl+Z の後に追加するのでそうなります。

TFileStream を使って、書き込みポインタを最後にもってきてから書くといい
>>975
はい、チャレンジしてみます。ありがとうございました。
977デフォルトの名無しさん:03/03/24 13:30
>>975
・・ってバイナリデータの書き込みの際にTFileStreamは使っているので
それをそのまま使ってみます。

WriteBufferでバイナリデータは書いていますが、
テキストデータの場合、どうすれば書き込めますか?
var
TextData: string;
FileStream: TFileStream;
である場合、どうなるのですか?

FileStream.WriteBuffer(TextData, length(TextData));

ではうまき行きませんでした。

>977
FileStream.WriteBuffer(TextData[1], Length(TextData));
次スレどこ〜?
>>978
そんなことだったのですかぁ・・・・あああ
全然理解していなかった私・・・
どうもありがとうございました。m(__)m
>>963-964
後方参照できないところがC言語にちょっとだけ似ていないこともない。
>>981
PascalとCはいとこみたいなもの(Pascalの方がちょっと年上)
983デフォルトの名無しさん:03/03/24 21:48
TActionListって何のために使うんですか?
>>983
メインメニュー、ポップアップメニュー、ボタン
などで共通の動作をさせるときに一元管理できるようにしたもの
(分類して管理できる)

だけどメニューのキャプションとボタンのキャプションは同一ではないので
結局思ったほど便利じゃなかった罠
985デフォルトの名無しさん:03/03/24 22:52
ActionList使ってみたけど、あんまし使いかってよくなかったな。
へんてこなコンポいらんから新しいhファイルの変換して素早く公開するくらいのことしてほしい。
Action/ActionListのメリットが理解できない奴は抽象的な思考に不自由な奴が多い。
TStreamクラスとその派生クラスのWriteメソッドとWriteBufferメソッドはどう違うの?
何か使い分けとかあるの?
>>987
Writeメソッドは抽象オブジェクトなので、
派生オブジェクト上でWriteを使って必ず同じ動作をするとは限らない。
素直にWriteBuffer使っておけ。
ウンコンポは要らない!
>>989をラッピングしてみたんですが・・・いらないですね。
991デフォルトの名無しさん:03/03/25 12:13
DelphiのIDEのように
上のMenuを隠さないような最大化を
実現するにはどうするのでしょう?

大きさはTSizeConstraintsで制御出るようですが
X,Y座標の設定をどうするのか悩んでいます

よろしくお願いします。
>>991
ウインドウメッセージ取るとか、タスクバー領域に指定しちゃうとか。
993デフォルトの名無しさん:03/03/25 13:12
>>992
すみません。
私の技量が足りなくて、言葉だけの説明だけでは
理解できません・・・

現在、上にメニュー。下にワークフォームを用意しています
タスクバー領域に指定とは
上のメニューをOSにタスクバーと認識させると言った解釈で
よろしいのでしょうか?
994デフォルトの名無しさん:03/03/25 13:14
ステップ実行し、変数ウォッチすればわかる。
WM_GETMINMAXINFO メッセージを処理するメソッドを定義して、
ウィンドウの位置を調整する。
D6 以降なら、{Public 宣言} の真下あたりで Ctrl-Space 押して wmgetmin って打つと
"procedure WM_GETMINMAXINFO...." ってのが出てくる。これをリターンで確定すると
WMGetMinMaxInfo メソッドが定義されるから、Shift-Ctrl-C でクラス定義を補完。

実装部分に、たとえば
 Message.MinMaxInfo.ptMaxSize := 600;
って打つと、最大化ボタンを押しても幅 600 どっとになる。
996デフォルトの名無しさん:03/03/25 14:54
>>995
これもわかりやすい説明をしてくれるなんて
涙が出そうです(質問してよかった・・・)
ありがとうございます!!

早速やってみると
MainFormの指定(下記のソースでY座標に当たる部分)では
うまくいきました

しかしその後オブジェクトインスペクタの様なメニューも欲しかったので
左に新しいFormを作成することにしました。
しばらくの作業後、Formもできました(ToolForm)。
WorkFormの最大化制御コードを拡張しようと
教えて頂いた事を元に以下のように書きました

procedure TfrmSDIWork.WMGetMinMaxInfo(var Message: TWMGetMinMaxInfo);
var
 MaxPoint :TPoint;
begin
 //ToolFormのレフトと幅を加えたものをX座標に
 MaxPoint.X := frmSDITool.Left + frmSDITool.Width; //Err...
 //MenuFormのトップと高さを加えたものをY座標に
 MaxPoint.Y := frmSDIMenu.Top + frmSDIMenu.Height; //OK!!
 Message.MinMaxInfo.ptMaxPosition := MaxPoint;
end;
997デフォルトの名無しさん:03/03/25 14:55
続き

このソースでは
MaxPoint.Y := frmSDIMenu.Top + frmSDIMenu.Height;の部分では
うまくいくものの
X座標指定の
MaxPoint.X := frmSDITool.Left + frmSDITool.Width; //Err...
でエラーが出ます

どうやらToolForm = nilの様なのですが(Assignedで調べました)
このWorkFormを作成するときには既にToolFormは存在しています

何か見落としている点がありませすでしょうか?
998987:03/03/25 15:45
>> 988
サンクスです。
999991:03/03/25 15:50
自己解決しました

どうやら原因はfrmSDIToolLeftの変数を使って
インスタンスを作成していませんでした

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