フサギコの *やさしい* Delphi質問スレ Ver.12
そうきたか。お疲れ。
乙
まぁ、がんがってくれ
>Delモナー殉職 ワラタ
本当の初心者で何からやればいいか解らない。って人は、
とりあえず
>>3 を見てください。
リンクに初心者向けのサイトがあります。
げ、フサギコかよ。最悪。
>>9 あれじゃわかりづらいだろ。もうちょっと整理してくれよ。
>>9 フロントページで作ってるHPかよ!と思ったのはオレだけ?
Webbrowserに表示されているHTMLソースを得るにはどうすればいいのですか?
Delphiってwebとデータのやりとりってできるの?
>>15 proなら少し、Entなら沢山できそうです
トリップがないので偽物
パーソナルじゃ駄目なのかぁ。・゚つД`)゚・。
パーソナルでもダメって事はないけど、パーソナルで苦労するより .NET かな
CGイラネ
F9で実行してからdelphiを終了すると 「delphi32が原因でKERNEL32.DLLにエラーが発生しました」 と必ず出ます。 ただdelphiを起動して終了した場合は出ないのですが、 最近delphiをはじめたばっかりなので まったく理由がわかりません。 何故でしょう?
モジュール'USER32.DLL'のアドレス BFF45BA6でアドレス04345EC8に対する読み込み違反がおきました。 モジュール'CORERDE60.BPL.DLL'のアドレス005259AFでアドレス043F27ACに対する読み込み違反がおきました。 こういうのもでてました。
23 :
Delフサギコ :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 ̄ ̄|... ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ .┻
>>16 できるじゃん!Indyコンポネート入れたよ!
まだ試してないけどできるっぽいよ!
∫
∧,,∧ ∬ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ミ,,゚Д゚ノ,っ━~ <
>>29 >16>19はC#厨.NET厨だから、相手にするな
_と~,,, ~,,,ノ_. ∀ \_質問募集中~!質問はないのか?
.ミ,,,/~), .| ┷┳━
 ̄ ̄ ̄ .し'J ̄ ̄|... ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ .┻
赤ちゃんはどこから来るの?
>>30 君には厨房を引き寄せる不思議な力があるようだ。
マ板かHSPスレに逝きなさい。
>>32 はぁ?hspを愚弄する気か?
住所とメアド教えろ!
遊びに行くから。
34 :
デフォルトの名無しさん :03/02/19 00:52
海の水はどうしてですか?
津波だからです。
∧,,∧ ∬ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ-Д-ノ,っ━~ < 誰か質問してくんねーかなー _と~,,, ~,,,ノ_. ∀ \_誰も居ない…眠い… .ミ,,,/~), .| ┷┳━  ̄ ̄ ̄ .し'J ̄ ̄|... ┃  ̄ ̄ ̄ ̄ ̄ ̄ ̄ .┻
38 :
デフォルトの名無しさん :03/02/19 01:37
>>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 ありがとうございます。
文字化け解決しました。
が実はフォームの継承がうまくいかないのが悩みの種なのです。
ドラッグし保存しただけで継承がおかしくなるので
フォームファイル(dfm)関係かと思っていたのですが
的外れだったようです。
引き続き心当たりのある方情報よろしくお願いします。
>>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); '登録されていないドロップ先の登録を解除しています' というエラーが出てしまい止まってしまいます。 この場合の解決方法と他によい方法あればヒントでも頂けないでしょうか 宜しくお願いします
>>52 別のやり方だけどこんなんでどう?
Usesに MSHTML_TLBを追加
procedure TForm1.Button1Click(Sender: TObject);
var
Doc: IHTMLDocument2;
begin
Doc := WebBrowser1.Document as IHTMLDocument2;
Memo1.Text := Doc.body.InnerText;
end;
>>54 >Usesに MSHTML_TLBを追加
をするとMSHTML_TLB.dcuが見つかりませんのエラーでした。
もう少しがんばります レスありがとうでした
ActiveXコントロールのインストールで Microsoft HTML object Libraryを取り込むべし。 タイプライブラリの取り込みでもいいかもしれない。 Textの取得タイミングはNavigateしたあとOnDocumentCompleteがきてから。 OnDocumentCompleteに取り込みコード置くのがいいかも
57 :
デフォルトの名無しさん :03/02/19 19:50
initialization時に生成したコンポーネントのComponentStateと 実行した時のComponentStateが空になってしまったんですけど コンポーネント側でなにか区別する方法ありますか?
>>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にもユニコードがつかえません。 何とかなりませんか?
>>48 でフォームファイル(dfm)の継承が~
の件ですが
Delphiの再インストールしたら症状が出なくなりました。
結局原因は謎のままです。
ありがとうございました。
63 :
デフォルトの名無しさん :03/02/19 23:23
64 :
デフォルトの名無しさん :03/02/20 01:57
∫ ∧,,∧ ∬ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ,,゚Д゚ノ,っ━~ < TNMHTTPでも、普通にGetできるぞ。 _と~,,, ~,,,ノ_. ∀ \_Indyって、そんなに使えないモノなのか? .ミ,,,/~), .| ┷┳━  ̄ ̄ ̄ .し'J ̄ ̄|... ┃  ̄ ̄ ̄ ̄ ̄ ̄ ̄ .┻
>>63 Googleは、Indyデフォルト設定のUserAgentだと弾かれます。
なんで、インスペタで別の名前に設定してあげてください。
67 :
デフォルトの名無しさん :03/02/20 12:35
∫ ∧,,∧ ∬ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ,,゚Д゚ノ,っ━~ < …ageてみるか… _と~,,, ~,,,ノ_. ∀ \_________ .ミ,,,/~), .| ┷┳━  ̄ ̄ ̄ .し'J ̄ ̄|... ┃  ̄ ̄ ̄ ̄ ̄ ̄ ̄ .┻
>>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
テスト
期間延長!期間延長!!って毎度 DM 送りつけられてもねぇ しらけるよ. いまのところ欲しいのは dbExpress だけ
79 :
デフォルトの名無しさん :03/02/20 18:52
デルフアイでォープンソウスな大作ソフトって何かありますか?
∧,,∧ コロコロ ミ゚Д゚,,彡 σ⊂ ∪ミ 仕事忙しすぎで ┳┳ (~,,(~,,,ミ@ 激しく遅くなりますた .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
gikonavi ?
>>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
システム時計の時間と分と秒をしる関数はありませんか?
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 はいらないけど
その下のは激しく欲しい
みんなどうやってる?
>>111 Adaでさえできたのにねえ。
もう「でるぽい」はだめぽ。
117 :
デフォルトの名無しさん :03/02/21 22:22
少々お尋ねします。 MSアクセスで開発済みの顧客管理とか販売管理とかのシステムがあります。 これをパッケージのような形にして、代理店に配布する計画があります。 将来的には自社サーバーをたてて、B2Bのようなこともしたいです。 そこで開発ツールを何にするか、現在社内でもめております。 いろいろ見聞きして、開発しやすさ、メンテナンスのしやすさで DELPHIかなと思っておりますが、本屋さん行っても C#とかVB.NETとかが圧倒的に多く、迷っております。 あとあとのことを考えると、どれがよいでしょうか? ご意見をお聞かせ願えれば幸いです
118 :
デフォルトの名無しさん :03/02/21 22:26
フサギコって誰?アフォ?
>>118 アフォはフサギコじゃない。
フサギコなのはおまえのほうだ。
>>117 5年くらい担当が変わらないなら、がんばればどれでも良い。
1年くらいなら、パッケージソフトに業務をあわせる。
かな?
すんません意味がわかりません・・・ 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言語とすればいいのだろうが。
クラス型、文字列、整数、実数、オブジェクトの内容、参照を個別に対応するのは無理だし かといってどれか一つだけ対応するのもばかげている。 なので===演算子のオーバーロードのない言語では無理。
=== -===- -==・==-
>>121 多態が分かっていれば誰でも多態と答えると思うぞ。
分からないなら多態がさっぱり分かってないということだ。
ヘテロなオブジェクトに対し、多態とはこれいかに。
USBオナホールを動かすにはどうすれば?
>>130 ヘテロは 121 で追加された条件。
ヘテロが追加される以前の返答ならそんな特殊条件を考えないから当然多態という返答になるだろ。
そして、そんな条件を持たない連中が多態と答えるのが理解できないのなら多態が分かってないということだ。
最後に私は多態でヘテロができるかどうかには答えた気はない。
勘違いされてもしかたない書き方をしたというのは認める。
∫
∧,,∧ ∬ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ミ,,゚Д゚ノ,っ━~ < たまに見るclass helper・・・って、ナニ?
_と~,,, ~,,,ノ_. ∀ \ ↓これと何か関係があるとでも?
.ミ,,,/~), .| ┷┳━
ttp://staff.aist.go.jp/y-ichisugi/mj/papers/mj-20020830.pdf  ̄ ̄ ̄ .し'J ̄ ̄|... ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ .┻
わたしの脳味噌でのデフォルトがヘテロだったため盲目的になっていました 指摘されて気づきました。どうもてす 確かに可能なら多態かinterfaceですね。 ヘテロだと、わざわざcase文にするためにTClassList.IndexOfを使ったりします。
∫ ∧,,∧ ∬ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ,,゚Д゚ノ,っ━~ < 無料版使わないで買えよおめーら。 _と~,,, ~,,,ノ_. ∀ \ .ミ,,,/~), .| ┷┳━  ̄ ̄ ̄ .し'J ̄ ̄|... ┃  ̄ ̄ ̄ ̄ ̄ ̄ ̄ .┻
「ヘテロ」ってどういう意味?
>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モドキが可能となる。
>>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を割り当ててるんじゃないの?
>>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時を指す場合最終点はどうやって 計算すればいいでしょうか サインとかコサインならったようなきがするんですが、、、
ソフトをインターネットエクスプローラーからのアイテムのドラドロ (例えばブラウザからのドラドロでスクラップできる「紙」とかみたいに) に対応させるにはどうすればいいんでしょうか? ブラウザからリンクをドラドロしたらそのURLを受け取るようにしたいのですが…
151 :
デフォルトの名無しさん :03/02/24 10:01
>>149 うーんサンプルの貼り付け方がわかりません^^;;
タイマーコントロールにOnTimerイベントがオブジェクト
インスペクタに出てこないんです><
タイマーコントロールのイベントにはFormCreateが出てます
おかしいです
>>151 再起動汁。そしてTimerコンポーネントをダブルクリック汁。
153 :
デフォルトの名無しさん :03/02/24 10:21
>>152 Timerコンポーネントはできました
あとは関数でエラーがでます
GetXとGetYです
関数の宣言と実装をしかるべきところに貼り付けたつもりなのですが
エラーになってしまします。
宣言は、パブリックにはりつけました
実装は、Inprimentetion直下にはりつけました。
うーんどうすればよいのか、おかしいです
GetXとGetYの宣言はなんだろう? TFormのメソッドでもなし、TTimerのメソッドでもなし そういえば普通の関数ってどうやって宣言するのだろう、、
155 :
デフォルトの名無しさん :03/02/24 10:36
ListBoxを使っておりまして、項目をダブルクリックすると その項目のTextを取得するにはどうすればよいのでしょうか?
関数の宣言は宣言部のtypeに書いたらあかんね、、 宣言部のvar以下に書いたらいけますた すまそ
>>149 VBみたいな と言うのがどういうことかわからんけど Arc とか Ellipse とかじゃ駄目な理由があったら教えて
フォームを円形にしたのですが フォームのタイトルバーがあるので時計の中心が変になります タイトルバーをけすにはどうすればいいですか? そうするとアプリの移動とかできなくなるけど時計らしいので、、 理想としてはクライアント領域でドラッグできたらいいのですが
>>158 BorderStyle と WM_NCHITTEST あたりかな?
>>159 クリックイベントの際にlParamがないのですが
どうやってメッセージを判断すればよいですか?
>>160 ん? オレへの質問か?
いまいち趣旨がよくわからん
>>161 すまそ
メッセージ処理はどうやったらいいかわかりません
>>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;
>>164 {このメソッドはいつ呼び出されるのか?}
WindowsからWM_NCHITTESTメッセージが送られたとき。
{Mの型はTFormにはないはず、、入れ子?}
Message.Pas で定義されている (右クリック→定義の検索 でみれるかも)
{TFormのメソッドを使うと思う。でもどのメソッドを継承したかわからない}
TFormの標準の動作を使う。メソッドになっているとは限らない。
TFormはWindowsのウインドウの動作を継承している。
{ クライアント領域がクリックされたか? }
クリックに限らずすべてのマウスイベントで発生していることに注意。
わからない単語はどんどん検索しよう。
protected procedure WMNCHITTEST(var M: TWMNCHITTEST); message WM_NCHITTEST; この定義で使ってる message をヘルプで調べてみたら? ディスパッチを勝手に自動的にやってくれるとても便利な機構だよ
>>165 ###{このメソッドはいつ呼び出されるのか?}
###WindowsからWM_NCHITTESTメッセージが送られたとき。
procedureの宣言をみるとprocedureがWM_NCHITTESTを返しているように見えるんです、、
CALLBACK関数みたいな感じでしょうか?
###{TFormのメソッドを使うと思う。でもどのメソッドを継承したかわからない}
###TFormの標準の動作を使う。メソッドになっているとは限らない。
メソッドや関数やAPIでないとすると、、理解が非常に苦しいです
Delphiで、エクスプローラーからファイルコピー & 移動 & 削除などを 管理できるようなソフトって作れるんですか? これはディレクトリの指定とか無しで。 サンプルプログラムかソースがあったら嬉しいっす。
>>166 message指令がヘルプにあったので参考にしました
感想::どこでも実装できる機能だとわかった
::でもなぜに、継承するのか?謎
procedure WMNCHITTEST(var M: TWMNCHITTEST); message WM_NCHITTEST;
の宣言でWMNCHITTEST型はヘルプでありませんでした、システムで定義されている
ものなのでしょうか?
メソッド名称もWMNCHITTESTである必要はないのでしょうか?
メソッド名称は変更してもとおりました。
Mの型名は変更すると怒られました。
>>170 ちょっとわかりやすいです。原始的な感じでOK
>>167 まあ、落ち着いてお茶でも飲め。
WM_NCHITTESTを返しているように見える? : と ; に注意。
[ウインドウメッセージ]とか[メッセージハンドラ]あたりがキーワード。
メソッドや関数やAPIでないけどWindowsの内部処理。
あえて言うならDefWindowProc APIの動作。
SDKでプログラムを書くとわかりやすいけど基本的な動作のかなりの部分はWindowsが面倒をみてくれる。
ウインドウを作れば基本的なウインドウの動作を、ボタンを作れば基本的なボタンの動作をWindowsが処理してくれるわけ。
で、プログラマは拡張した動作を記述すればすむ と。
基本的な動作
キャプションでウインドウを移動できる
ウインドウの枠でサイズ変更ができる
ボタン上でマウス押下するとボタンがくぼむ
拡張した動作
キャプション以外でもウインドウを移動させる
ウインドウの枠でサイズ変更されたら中身の再配置
ボタンがクリックされたら何かの処理を開始する
まとまりない文章でごめん
173 :
Move 手続きの引数 :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ちゃんねるブラウザって無いのか?
>>172 ###WM_NCHITTESTを返しているように見える? : と ; に注意。
あーほんとだ。
メッセージ処理の構文だと覚えて、、、
###DefWindowProc
ウィンドウプロシージャにはすべてのメッセージが届くを思っていましたが
そうではないのですね、、、
###拡張した動作
なるほど。基本動作と拡張動作で切り分ければわかりやすいです
ということは、message処理等を行うということは
OSの提供する機能をカスタマイズして使う
そして、VCLは基本的にOSの提供する基本機能をAPIを
ラップしているということと、、、思いました
>>177 ### 暗い餡と領域][ドラドロ]をキーにして
ドラドロはひっかかりました
194 :
bloom :03/02/25 09:37
196 :
デフォルトの名無しさん :03/02/25 10:46
TTabControl のタブの文字を縦書きにするにはどうしたら宜しいのでしょか?
>>196 TabPosition := tpRight で
Font に縦書きフォントを指定
tpLeft だと逆さになるのね ^^;
>>197 うわ、ほんとだ。縦書きフォントなんてあるんすね・・・
縦書き=#13を一個一個入れる になってました。
ありがとうございました。(tpLeftは使えないという事っすね)
演算子がわかりません C言語みたいに A += A;をしたいんですけど A +:= A;だと怒られました 探してみましたが、こういうのはないみたいですね
>>199 どうせネタだろうけど・・・。
A := A + 1;
ある場所に文字を表示したいのですが Canvas.TextOut(CX - int(let/2) ,CY - 20,str); [エラー] Unit1.pas(134): 'Integer' と 'Extended' には互換性がありません と怒られました CXもletもintegerなのになぜでしょうか?
マジ質です、すいません、、、
>>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 ジュウコーン
DivもRoundもいけました。 inc(A,A);がスマートで好きです ありがとうございます
208 :
デフォルトの名無しさん :03/02/25 13:57
HTMLのソースの中から絶対パスのURLのみを抜き出す方法ってありますでしょうか?
209 :
デフォルトの名無しさん :03/02/25 14:01
ビット操作ってどうやるの?
設定のダイアログ機能をつけたいのですが コントロールは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を使って、 送信した時のエラーはどうやって取得すればよいのでしょうか?
一生懸命 レスしてたけど・・・・最近疲れちゃった・・・・タッチしてくれ
なんでモナーじゃなくなったの? フサギコなんて嫌だ
モナーの中の人がフサギコだったのさ。
TForm1(Unit1)の記述の中でTForm2(Unit2)をShowModalさせたいのですがうまくいきません Unit1 TForm2.ShowModal ソースコードの補完の段階で失敗します Unit1とUnit2を関連づける方法はどうするのですか?
ゆーず汁!!
ふう、もう少しがんばってみるか
>>221 Yes
>>222 OnError イベントで ( もし取れないエラーがあるなら WSAGetLastError )
>>227 TForm2 は型名 Form2 が変数名だから Form2を使えば IDEが uses しますか?って聞いてくれる・・・かも
'''' { ' } ' でヘルプひけば出てくるはず
>>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の場合、ループ変数をグローバルにすることは許されないけど
(仮にループ変数をグローバルにできたとして
同じループ変数を使っている別の手続き・関数をループ内で呼び出したら
どうなるか考えてみるといいよ)
>235 ありがとうございました。 勉強になりました。
>>236 人間は一度に そんなに大きなものを緻密に設計したり考えたり出来るように作られていません。
そこで、小さな単位に分割して、その機能や概念に名前を付けて ものを考えたり設計したりするわけです
その小さな機能に分割したものはその単位内で十分簡単でシンプルで独立していた方がいいでしょう?
グローバル変数を使うと、その単位は独立ではなくなります。
たとえば、複数のスレッドで同じ関数を使ったり出来ない訳です。
>>232 よし、任せたよ。
あなたが、とてつもない記憶力と管理能力の持ち主で、数百行のソースコードの どこを読んでいるときでも、すべてのグローバル変数の用途を把握しており、 かつ、複数のスレッドが動いているときや複雑なイベント/メッセージのやり取りの 最中でも、すべてを自分で制御する自信があり、 かつ、そのソースを別の仕事/作業を終えた後、一月くらいしてから読み直しても すらすらと理解できるほどの理解力とコメント記録能力があるのなら すべてグローバル変数/関数でプログラムしても良いのではないか?
うわ。みんな親切..
質問でゲス。 Delphi7で作ったコンポーネントがDelphi6で読み込めないのは気のせい?? 初めてコンポーネントを作ってみようとしているのでワケがわかんないです。 もう少し調べてなんかわかったらまた書きます。 よろしくお願いします
>>242 Del6で使いたければソースをDel6でコンパイルしてインストールしる
>>243 それが、Delphi7にしかないコンポーネントを親コンポーネント(?:上位クラス?)にしたものを
インストールできるようにしたいんです。
と、確認してみようとしたら…あれ?
弄り回したせいかDelphi7から目的のコンポーネントが消えた!?
と、思ったらいじったときに作ったTemplatesにあった。
動作している模様。
一安心です…
コンポーネントの上位クラス(ここら辺もよくわかってませんが)の指定を変えればいくのでしょうかね?
調べていろいろ試してみます。
(初心者ですみません)
>それが、Delphi7にしかないコンポーネントを親コンポーネント(?:上位クラス?)にしたものを …そりゃ無理っしょ。 Del6にも似たようなのがあるなら{$IFDEF}で切り分けるとかさあ
247 :
デフォルトの名無しさん :03/02/26 13:34
>>246 さん
やはりそうですか。
じゃああきらめます。
(☆∀☆)!(アイデアひらめきぃ)
Delphiにはじめからついているコンポーネントのソースって手に入らないのでしょうか?
手に入れば移植もできなくは…ないと思うのですが…
どうなのでしょうかねぇ?
その前にソース字体手に入るものなのか......?
>>251 Pro版以上だとSourceというフォルダにほとんどのソースが入っていて(一部例外あり)
とても勉強になるのでし
メッセージループなどが実は昔ながらのスタイルでちゃんと実装されていて
Delphiが紛れもなくTurbo Pascalだということも教えてくれるのでし
返事したのにかかれてないみたいですね。
>>249 だれにですか?
>>250 一応Pro版だったらどうしたらみれるのでしょうか?
ミスです…
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 小学校の算数で習った気がするが・・・
開平は中学校の数学だったかな。
ともかくその手順をアルゴリズムにすればいいわけで。
まず自力でやってみろ。話はそれからだ。
>>256 相互参照する時は少なくとも一方は
interface部ではなくimplementation部へ書く必要があるよ
参照するユニットの宣言を宣言部で使用しているのでなければ
通常はimplementation部のuses節へ書く
どうしてもinterface部での相互参照になってしまうようなら
同じユニットに書かなければならない
262 :
デフォルトの名無しさん :03/02/26 17:40
>>260 >10進数を2進数
これができないとアタタタ符号化の真似ができないもんな(w
分かりにくかったかな ×参照するユニットの宣言を宣言部で使用しているのでなければ ×interface部で相手のユニットを参照しているのでなければ
うぐっ・・・2行目が○だ・・・
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を使えばいいのですが、 既存のファイルの終端に書き込む場合にはどうすればいいのでしょうか? ファイルの終端をキャッチできればいいのですが…。
>ところでパーツ単位の描画で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; なぜかこれだとウィンドウが勝手に閉じてしまいます。 どうすればちゃんと再生できるんですか? よろしくお願いします。
範囲型の全集合を返す演算子や関数は用意されていないですか? 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]; と定数を定義したらいいんじゃないの?
遅レスですが…教えてくださった方々、ありがとうございます。
>>261-263 Inplimentation節の直下にuses節がつかえるなんて驚きです
Interface節のuses節は型宣言で使用するときに使うのですね
@節についてのまとめ@
Unit節 一番上で必ず必要で外部からの参照名称を決めることができる
Interface節 必ず2番目に書き、クラス宣言や変数宣言ができる
type句 を必要なときに必要な数だけ書くことができる
uses句 を必要なときに必要な数だけ書くことができる
var句 を必要なときに必要な数だけ書くことができる
宣言と同時に値の代入もできる
あとconstとか
Inplementation節 必ず三番目に書き、Interface節での実装を記述できる
uses句 を必要なときに必要なだけ記述できる
interface節とInplementation節のuses句はInterface節に統一したほうが
わかりやすいようなきがします
C言語のインクルードくらい単純であれば、、、
ちょっと不思議に思ったのですが 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
>>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言語との比較は無意味では?
>>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
>>308 うっせ。クソ。氏ね。ネタしかかけないなら出てくんな。
>>310 あほか。delphiでwebブラウザ作るって聞いてんだから
webブラウザのソース出せ。
>>312 それでいいんだよ。ったく最初っから出せよな。
あ、なんか自己解決しました。 すいません
>>316 はぁ~ん。誰がパクリ厨だって~?
自己解決したって言ってんだからレスすんなよ。
放置しろって(w
319 :
デフォルトの名無しさん :03/02/27 18:47
>>318 超ネタだろ。delphiで作ったブラウザのソースだせよ。放置できないしと。
>>320 begin
webbrowser.home;
end;
>>321 そうそう。それでいいんだよ。もう自己解決したみたいだがな(w
323 :
デフォルトの名無しさん :03/02/27 19:04
DelphiでUNIXライクなOSをつくるにはどうしたらよいのでしょうか。
>>325 全員が面白いと思うことを書くのは不可能ですよ。
俺が面白けりゃそれでいいのです。
ここは2ちゃんねるですよ。
でるふぁいを学ぶのに最適なサイトをおせーて。
>327 MLの過去ログ
>279 遅レスですが有難うございました。
少し分からない所があるので失礼します。 すごく初歩的な質問だとおもうのですが、 フォルダ内のテキストファイルをデータとして取り込んで 行単位で削除したり追加したり読み込んだりと編集しながら扱いたいのですが、 いちどTmemoオブジェクトなどに読み込んで Linesプロパティで作業すればいいのかと思ったのですが、 これでいいのでしょうか? writelnやreadlnを使うのかとも思ったのですが、それよりは上に書いたような方法の方が 扱いやすいような気がしたりして、そのあたりが良く分かりません。 よろしくお願いします。
データとして扱うというのは内部のデータとしてという意味です。 なのでmemoはvisible:=falseです。
>>332 TStringlist.Create;
>>332 正解です
その機能は元々TStringsから派生しているものだから
TStringListでも同じことができるけど
インスタンスの生成と破棄をちゃんとできるようになるまでは
TMemoを使うのが無難ですね
>>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のエディタにあったような記憶があるのですが、ショートカットが思い出せません。 いまヘルプを見ているのですが、それらしい記述がみあたりません・・・ 知っているかたどうか教えてください。それともぼくの思い違いでしょうか?
すばやいレスありがとうございます でも何もおきないのですが・・・
>>340 property Test; Integer;
の段階でCtrl+Shift+Cだったかな?
おおっ出来ました!
ありがとうございます
>>341 さん
これ Set メソッドができてしまうんですねー
「クラス補完」機能だったんですね。 「各種の編集コマンド」ばかり見ていました。 >これ Set メソッドができてしまうんですねー これも当たり前か
タスクトレイのアイコンをシステムでないものに変更したいのですが 変更の仕方がわかりません。 FIconData : TNotifyIconData; FIconData.hIcon := Application.Icon.Handle; {アイコン指定} これで、Delphiのアイコンになるのですが Delphiアイコンエディタで作成さいたアイコンを指定するには どうすたらいいですか?
>>344 TIconを知らないわけでもあるまい。
>>345 サンクス
フォームのアイコンを指定してみました
アナログ時計作ってまして、なんとかリージョンで フォームを円形にしました。 そこで、時計の針と数字だけを表示してその他は透かしたいと思い TFormのアルファブレンドを20位にしたら全部透けてしまい ました^^; 針と数字だけをアルファブレンドの対象外にするにはどうすればいいですか?
348 :
デフォルトの名無しさん :03/02/28 15:52
>>347 別のフォームを重ねればいい
時針のフォーム、分針のフォーム、秒針のフォーム
透過できる環境ならTransparentColorで透過してみれ。
>>348 時針のフォーム
位置を計算して棒状にリージョン
分針のフォーム
位置を計算して棒状にリージョン
秒針のフォーム
位置を計算して棒状にリージョン
そして重ねる
うーん、アプリをドラッグするときが難しそうです
>>349 試しましたが反応しません、カードが対応してないということですか?
なにスタイルだか知りませんが、VS.NETのIDEスタイルです。 以前、このC#用コントロールをDLしましたが、 C#だとこれ用のDLLをいっしょに配布しないといけないんです。 DelphiならEXE単体にできますよね? 主に、タブを切り替えたり閉じたりするボタンと、 アクティブページの色を指定したいです。 副に、メニューの外観を変えたいです。
>>351 そうかもしれないですね。
確認
・TransparentColorがTrueで、TransparentColorValueがきちんと設定されているか
これでだめだったら別の方法を。
ドッキングウインドウのキャプションなら同じの作った もろに面倒くさいけどできるよ タブもメニューもできる タブの×ボタン付けるのどうやるんだろ? 昔は結構、こういった外観を変えたコンポーネントを作ったものだけど 流行がコロコロ変わるから追いかけるのが面倒くさいし、 もしかしてこういうのって標準のコントロール使っておいて、 各ユーザーが使う外観を変えるソフトとか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;
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 素直にフォームにラベルを貼り付けるのが普通
あらら、のんびりしてたらかぶっちゃった
>>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 オブジェクト指向って言う概念自体、多岐にわたりあやふやになってるところがあるね。
>>389 結局クラスライブラリを覚えられるかどうかだよ。
最低限そこに到達しないとオブジェクト指向の利点はわかりにくい。
391 :
デフォルトの名無しさん :03/03/02 23:20
ポインタの初歩的なことはわかったんだけど、どんなことに使えばいいの? 教えてください
>>391 どこかのDelphiスレで同じような質問があったよ。
結論は参照があるからポインタは滅亡。とか言う頭悪いとしか思えない物だったけど。
何か初心者でもできるようなのを教えてください
394 :
◆qVtare/k3c :03/03/02 23:42
>>391 そりゃ使うときがやってきたら使う(しかない)、としか胃炎だろ。
例えば引数が「T○○型」じゃなくて「P○○型」で宣言されてる関数使ったり、
TListにデータ入れたり、TTreeView/TListView.Item.Dataにデータ入れたり、
WindowsAPI直接使ったり、などなど。
オレも長いこと利用価値が分からんかった…。 要するに、 ○入れ物ごと、ごっそり渡す ○入れ物の場所「だけ」を教える どちらが良いか?ってことなんだ…よね?(^^;
>>393 文字列の長さをLength関数ではなく、ポインタで求めてみよう。
ポインタと参照の定義にもよるけど… 仮にポインタとは参照にアドレス演算の機能を追加したものと考えると 関数などにデータの位置だけを渡す…どちらでも可 リンクリストや木構造を作る…どちらでも可 DIBなどに書き込む…ポインタ バイナリデータを使う…ポインタ (interfaceの_AddRef他、様々な言語orIDEの支援を受ける…参照) な感じかなあ。
で、比較的楽しいのは、TBitmap.ScanLineに直接書き込んでみるとかどうだろう。 DirectXでテクスチャをロックして…でもいいけど
文字列のメモリブロックのレイアウトはヘルプのメモリ管理に載ってるよ。 初心者のポインタの練習としてはこの程度でいいのでは?
401 :
◆qVtare/k3c :03/03/03 01:11
比較的問題外っていわれても…
だってDelphiはポインタ「も」使えるってだけで、
ポインタ推奨じゃないし。むしろ使わない方向で設計されてるんだし。
>>391 は初心者を免罪符にしてるか単なる釣りにしか思えない。
そんなにポインタ使いたけりゃC言語使えばいいじゃん。
>>401 GetMem
NULLで終わる文字列
TList
どこがだよ。
403 :
◆qVtare/k3c :03/03/03 01:17
>>402 そんなの初心者が使わないだろ。
中・上級者だったら目的に応じてポインタ使うか使わないか選択できるだろ。
初心者だけど使ってます…
初心者だから使ってますの間違いだろ
ヘルプ機能をつけたいのですが、いわゆるヘルプデザイナーが みあたりません。どうやってヘルプ機能を実装するのが一般的 ですか?
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で配列使うことなんてあまりないだろ
普通は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
>>418 変なことしてなければShowメソッドでOKだけど。
>>420 ,421
ありがとうございます。Showでできました。
423 :
デフォルトの名無しさん :03/03/04 21:12
Delphi 6 Personal のレジストができません。 (登録メールアドレスにメールが送られてこない) 6 Personal はもう登録受付を終了してしまったのでしょうか?
>>424 本当?423じゃないけど。
「フリーのパソナルをDLしてプログラムを学ぼう!」みたいな本が出てたのに…。
あの本、立ち読みしてたら、
>作者はまだdelphi3なので、6の環境はよく分からないのですが…
みたいなこと書いてあった…。
それでいいのだろうか…。
そんなんで本書いていいのだろうか…?
「delphi3で学ぼう!」に変えた方がいいのではないだろうか…。
Win2kPro+SP3でDelphi6Pro使ってますが、 ATOK16で半角固定入力すると、 コードエディタでキャレットが表示されなくなります。 これは不具合でしょうか? ちょっと打ちづらいですね。 Delphi7ではどうでしょう?
>>426 同じ環境ですがそんなことは起こっていません。
429 :
デフォルトの名無しさん :03/03/05 04:04
ぬるぽって何ですか
>>425 ネタだろ
どうせいつもの通り認証サーバが落ちてるだけ
単純な煽りカキコに騙されんように
自演だったら氏ね
ソフトウェアのアイコンをクリックしてから一番初めに動くprocedureはなんですか?
procedure の前に全ユニットのinitialization部 その後 program 宣言で始まるユニットの実行ブロック
>>431 イベントドリブンプログラミングの書き方から勉強すべき。
どこから始まるかは意識せずに、操作に対応したコードを書いていくのです。
といいつつ一応答えておく。
*.dpr 内の begin end. 内。
(initialization がある場合は別だが
thanks
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
444 :
デフォルトの名無しさん :03/03/05 17:09
>>439 プロジェクトオプション>パッケージタブ>実行時パッケージを使って構築にチェック。
ただし別途.bplを配布しなければならない。
CVSでソース管理してる人いる? Delphiから直接使えたらなぁ。。。
447 :
デフォルトの名無しさん :03/03/05 19:24
Indyのコンポーネントの使い方が詳しく載っている日本語の解説サイト、どなたかご存知ありませんか?
前から疑問だったんだが、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
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ランタイム=ポップアップ広告
>>457 thx!
それだけでソース取得できるとはすごいね。
CVSは言語というか、ファイルの種類を選ばないはずだが (いまいち勝手は悪いが)
CVS を IDE から簡単に使う。って話ではなかったかな?
464 :
デフォルトの名無しさん :03/03/06 12:43
音系はWAVしか実行ファイルに埋め込めないのでしょうか?
>>464 midならmidiメッセージをリソースにしといて
リソースからAPIに命令を出すことで埋め込めるよ。
いいじゃん実行ファイルなんかに埋め込まなくて。 一つでも分かれてても同じ事。 ランタイム恐怖症の次はデータファイル恐怖症か?(w
アイコンも埋め込むな
アプリケーションのアイコンは埋め込んだ方がいいね。 その他のアイコンは埋め込む必要ないけど。
理論上あらゆる種類のファイルが入るよ。 いざ使うときはめんどくさいけど
プログラマーも埋め込めよ。 中の人も大変だ、を地で行く。
472 :
デフォルトの名無しさん :03/03/06 18:57
>>456 「Delフサギコ ◆A6VzDeLphI 」さん
産休です。
473 :
デフォルトの名無しさん :03/03/06 18:59
474 :
デフォルトの名無しさん :03/03/06 19:00
Windows2000でDelphi6.0を使っています。 .dprのショートカットを作ってダブルクリックして立ち上げたら、 エラーがたくさん出てDelphiが動かなくなり、それ以降は.dprを ダブルクリックしても起動できなくなりました。 Delphiを先に起動した後に.dprを読み込めば問題なく動きます。 どうしたら直りますか?
Delphiを先に起動した後に.dprを読み込んでください @NIFTY-FDELPHI / Delphi-ML でもそういう意見です.
直らないんですね…。ありがとうございました。
Del6Personalでは物足りなくなったのでDel7Proを買います。
>>458 できたらDel6Per.でも使える方法きぼん
Proを買えという話ですな。
Del8が出たら買うと思うけど。。。
そもそも、ModelMakerってProについてるのか? とりあえず、CVSはWinCVSで使ってる。一人で使ってても昔のを取り出せて便利だ。
ガイシュツのような気もするけど、マルチバイト文字を含むフォルダ名の直下に *.DPRを保存すると、起動時にエラーがでまくり、大変なことになります。 エラーになるなら、保存時に警告してほすい・・・。(-_-; ちなみに上位の階層に全角文字を含むフォルダ名が混在していても、直下 でなければセーフのようです。
>>479 WinCVSって使いにくくない?
eclipseみたいに使えたらなぁ。。。とないものねだりしてみる。
>>481 書けばいいじゃん。あんたはプログラマ、開発環境はある。これ以上ない環境だぞ。
低機能なDelphi&フリーウェアの拾い食いなんてやってないで 素直にVisual C#+Visual SourceSafe使いなよ。
485 :
デフォルトの名無しさん :03/03/07 04:41
スタートアップに登録されているかどうかを調べる方法ありますか?
>>485 スタートアップフォルダ漁れば良かろう。
ショートカットをスタートアップに入れられたら意味無さそう
C#がでてからいっそうDelphiが活気づいた気がする。
>>489 C#の設計者 = Delphiの設計者って聞いたけど、ホント??
(MSが暴乱度から引き抜いたとか・・・)
>>490 C#のライブラリ見てみれば何となくわかると思う。
VCL + Javaと言った感じ。
>>490 ホント。ヘジルスバーグ。
C#完成後は某に帰っていった。
メニューやツールバー用にイメージリストに取り込むビットマップを山ほどください。
494 :
デフォルトの名無しさん :03/03/07 13:05
Del6の無料版でつくったものは、ソースだけならくばっていいんですか?
>>491-492 ありがと。
しかし、MSってほんとに引き抜きの好きな会社だね(w
(各球団の4番打者をえげつなく引き抜く長島巨人みたいだw)
良い人材を引き抜くのはビジネスの常識。 それを禁止されたら良い人材に正当な評価が出来なくなる。
何が正当なんですか? :-P
>>498 お前は一生その会社でただ働きだな。:3-)
>>498 ヘジルスバーグが某の文句言ってただろ。何が正当かは人次第だよ。:-P
ところでいつ某に戻ったんだ? 戻ってきてほしいの間違いだろ。
>>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以外の原因はあるのでしょうか? よろしくお願いします。
もちろん"じゃなくて'です…すいません。
>>デルふぁi6パーsonaru シェアウェアにしたら駄目なだけだよ
アフォみたいな質問でつが、hoge.exeの内容を文字列として function hogehoge(S: string): string; に渡すにはどうすりゃいいんでつか。
>>508 BASE64とかMD5とかの関数ですか?
_, ._ ( ゜ Д゜)
「拾った」って表現を使うな
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文字を終端とみなされてしまいます。
バイナリがパイズリに見えた 自分でもワラタ
>>519 519殿は漏れにとって神でつ。
ありがとうございますた。
524 :
デフォルトの名無しさん :03/03/07 18:57
TEditなどにフォーカスがあたった時に IMEのソフトキーボードを自動で表示するにはどうしたらいいですか?
>>524 Imm をUseして
Imm32SetConversionStatus(hImc, IME_CMODE_SOFTKBD, IME_SMODE_NONE);
でできました。
>>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);
厨房質問でお茶を濁すぜ。 Del6personal@winXP。 Indyってのはプログラムからの通信を全部管理するんですか? たとえばHTMLの表示にTMozillaBrowser.Navigateを使ったらIndy HTTP Clientに設定されているプロキシ設定とかが反映されるんですか? ってことです。
馬鹿を言ってみたかったんだ(=゚ω゚)ノょぅ・・・ ってかIndy HTTP Clientと(゚д゚)ウマーな関係を作れるパーサはないかなぁ....
質問です。 自作クラスを配列で宣言したとします。 hoges:Array[0..100] of THoge; でも、Createしたのは、5つでした(たとえばの話)。 で、その5つを解放するのは当たり前ですが、 他の「宣言しただけ状態」のクラスは、どうなるのでしょうか? 宣言しただけの場合、メモリ的にはどうなってる状態なんでしょう? 教えてください。よろしくお願いします。
>>538 >他の「宣言しただけ状態」のクラスは、どうなるのでしょうか?
極端に言えばただのポインタ変数なのでどうもしなくて良いです。
>>539 レス、ありがとうございます。
そうですか。何もしないでいいんですか…。
私の挙げた例は別に変じゃないですか?
integerとかstringとかの「宣言しただけ」は、今までもほっておいたんですが(^^;。
クラスの宣言は勝手が違うのかと…。
>>540 まぁ、ポインタみたいにどこでも持って行けるのが便利って事で。
>>541 そうですか。ありがとうございました!
※解決※
縦書きビューワーコンポ(エディタコンポならまだいいけど)ってないですか?
>>543 RichEditに然るべきメッセージ。
>>540 stringも実態は参照カウンタ付きポインタだよ。
ただ、スコープが外れた時に勝手に開放されたりして、
「プログラマは何もしないでいい」だけで。
# クラスも無理やりinterface使えば、参照カウンタで管理することも出来るが・・・
>>544 RichEdit の縦書きサポートは W2K か XP でなくなりました。マジで。
Win9x系のriched32.dllを持ってくれば解決するがオススメしない。
スタートアップフォルダにあるやつを起動させてるやつは何者なんだYOOOOOOOOOOO スタートアップフォルダ自体は単なるフォルダなんでしょ?
ただのフォルダじゃなく選ばれたフォルダなんだよ
キングオブフォルダ
次はショートカットってどうなってんだ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 とすれば、どっちかが成り立った時になるわけか㌧㌧
>>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を使ってるとボタンが押せないくらい重くなります。 これを防ぐ方法はありませんか?よろしくお願いします。
重いならスレッド。
粉うかた無き混じれ酢だがIndy使え
577 :
デフォルトの名無しさん :03/03/09 17:29
^ki ^ku
>>577 行選択orブロック選択して
Ctrl + Shift + U
Ctrl + Shift + I
標準の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 ダイアログでファイル選択しないでキャンセルしたらどーなる?
何方か教えていただけないでしょうか Delphi6付属のServerSocketを使ってファイル送受信を実装しようとしているのですが TFileStreamとTMemoryStreamを使い、TFileStreamでファイルを開いてそれで TMemoryStreamにコピーしたあとヘッダーを追加し TCustomWinSocketでSocket.SendStream( S )として送信をするのですが 小さいファイルをやり取りするには問題は無いのですが 16MBなどといったちょっと大きなファイルを送ろうとすると一定時間Formが応答 しなくなってしまいます(Formが固まってします)待てばよいのですが、これだと ちょっと問題ありのような気がしまして..他の接続しているクライアントが応答 を受け取れなくなります メーリングリストを読むと >TWinSocketStreamを使うとFormは固まるものの、比較的わ >かりやすく安全に処理できるような気がします。 とか書いてあるのですが、これは絶対に固まってしまうものなのでしょうか? ServerSocketの特性なのでしょうか? なんとかFormの固まりを回避したいのですがどなたかアドバイスいただけないでしょうか...
Indy使え
うぅ
>>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 エラーと例外の区別を付ければあんたは伸びる。
しかし、エラーが出ると良いながらエラーメッセージを書かないところを見ると、才能がないようにも見える。
>>605 httpget.exeアプリケーションエラー
"0x61031957"の命令が"0x00000004"のメモリを参照しました。メモリが"written"
になることはできませんでした。
try except
>>609 いや、それで回避しちゃダメな例外(と言うか出来るのか?)
>>604 んなこたないと思うけど。最小のサンプル作って再現できたらうpしてみなよ。
612 :
デフォルトの名無しさん :03/03/11 00:22
>>604 例外処理してみそ。
try
IdHTTP1.Get('aaa');
except
end;
606、608は私ではないのですが、 エラーは存在しないページだと302NotFoundです 今回はエラー内容よりも、エラーに対する処理ということでしたので 書きませんでしたが説明不足ですみません。 以前どこかで見つけたソースを使ってみたのですが そのコードは応答コードを利用するものでした。WinInetを使う? 通常は200で302や404でたらGetしないという処理でしたが 最近自動で転送なのか、無いファイルを指定したときに自動的に 違うページを表示するような場合でも200を返してしまうので困っておりました。 exceptを使うとエラーは表示されなくなりました。 ありがとうございます。 URLの存在確認の決め手となる方法あらば教えて頂けませんでしょうか?
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コンポに同じ内容を表示してて、こちらはまがりなりにもスクロール などしてあとから見ると全部表示されています。最中も一部は見えます)
>>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をソフトに消すことって出来ますか?
631 :
デフォルトの名無しさん :03/03/11 21:00
メニューアイテムのヒントを表示するには、どこをどう設定すればよいのでしょうか? メニューアイテムには他のコントロールのようにShowHintプロパティが無いんです。 ヒントプロパティに設定した文字列を表示したいんです。
>>631 DelphiヘルプのTMenuItem.Hintを参照
>>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;
Indyを使ったちょっとした通信ソフトみたいなサンプルソースありませんか? chatでもファイル転送でも
>>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 とか。
>>652-653 あのぅ、お答えいただいて大変恐縮なのですが・・・
それはコードで動的に書く場合ですよね?
GUI設計時にプロパティ欄に入れる方法はないですか?
たとえば、エクセルだとCtrl+Enterで改行が入りますよね?
それと同じような感じでないですか?
>>654 D6以降ならテキスト形式のDFMファイルに直接
Caption := 'Label1'#13#10'改行テスト';
みたいに書き込んだら?
>>654 655さんに先に書かれてもうたけど・・・
フォームを「エディタで表示」にしておいて
Caption = 'First'#10'Second'
ならOK
まず、プロパティの型を string から TStringList に切り替える。 そうすればプロパティエディタ側は複数行編集可能になる。 TMemo では、コントロールが保持している文字列の代わりに Memo コントロールが 返してくる文字列をプロパティの値としている。 ここを書き換えて、常にコントロール側で保持している文字列を返すようにすれば 良いかと。
>>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もあるのならな(ハゲ
>>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 ありが㌧
なんかぼんやりと思いついてきたような。
これからソートのいいやり方探してきます。
>>683 簡単にやるなら、グラフィックコントロール継承にして、ビットマップとか枠とか持たせて
そのコントロールにZオーダのメンバーを持たせておいて
例えばパネルに描くなら、パネルCompomentsをZオーダでソートする
685 :
デフォルトの名無しさん :03/03/14 13:39
ある特定のファイルの名前を変更出来なくすることって可能なんでしょうか? 具体的にはコンテキストメニューやプロパティで名前を変更しようとしたときに「このファイルは名前の変更が禁止されています」と表示して、 ファイル名の変更を禁止したいのです
686 :
デフォルトの名無しさん :03/03/14 13:55
設計時パッケージのプロジェクトに.dcrを追加してみる。 それでも駄目なら{$R で無理やり埋めこむ。
>>688 おおでけたw さんくす!
でもフォームに配置すると・・・・・うはw かわんねえw
継承元のやつが出てくるなあ・・。
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 とかやってみたのですがだめでした。 よろしくおねがいします。
分けて考えたらできました aa:((a:1), (a:2))
Delphi言語とPascal言語の違いを教えてください小一時間
Delphi言語= 古代ギリシアで行われた、神託の儀式で使われる言語、 Delphi神殿では、床から常時火山性ガスが吹き出している。 巫女にそのガスを吸い込ませ、一種のトランス状態にさせる。 そのときのお告げに使われる言語がDelphi言語という。 Pascal言語= 真女神転生1というゲームで、主人公の飼い犬が話す言語。
697 :
デフォルトの名無しさん :03/03/14 20:22
CのHファイルを変換して、Delphiで使いたいのですが、 いいツールなどはありませんか?
h2pas
h2pasって、フリーパスカルのやつですよね。 あれのh2pasで変換したやつを使ったら、 ライセンスはGPLにしないといけないんでしょうかねぇ?
702 :
デフォルトの名無しさん :03/03/14 21:02
ファイルの保存にTSaveDialogを使っているのですが、 プログラム内では何も指定していないのに、前回保存した フォルダが開いてくれます。 これはどこに情報が保存されているのでしょうか?
プログラム終了したら元に戻らないか?
>>703 終了して再起動しても覚えててくれてるのです。
これはこれで使う側には便利なのですが、謎です。
ムスカキタ━━━━━(゚∀゚)━━━━━!!!!
>>704 レジストリをフォルダのパスで検索して調べてみては?
>>706 やっぱレジストリですよね。いくつかそれらしき箇所が見つかりました。
使う側が意図しなくても暗黙に使われることがあるという事がわかりました。
708 :
デフォルトの名無しさん :03/03/14 22:51
何かDelphiの裏技はありませんか?
>>708 バージョン情報でAlt+T E A M
って昔も書いたな。
>>704 その「TSaveDialog」は何もしてなくても、他のもんでファイルオープンとかしてない?
そーすっと、勝手にそのフォルダになったりするよーな気が。
なんか頓珍漢なレスしたよーな気がしてきたので
>>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に至るまで
全部同じ値を入れたいんです。
「から・・・に・・・」って紛らわしい表現でした。お詫びします。
Alt + DEVELOPERS
Alt + ANDY Delphi1のみ
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;
>>726 あ、そのテクニックおいしすぎ。
値欲しいだけなのに変数宣言するの面倒だったりするもんな。
>値欲しいだけなのに変数宣言するの面倒だったりするもんな。
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();
とかしたい局面って結構あるからね。
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 そりゃデバッガの問題のような。といったところで解決するわけでもないけど。
全体的にデバッガ機能が弱いよね。関数の戻り値すら教えてくれないのにはびっくり。
デルフォイってバージョン6で作ったやつを、 そのままで7でも続きを作ることが出来るんですか?
>>737 2→3→4→5→6
と引き継いできたアプリがあるよん
俺は7に上げてないけど→7も当然できると思うよん
>>736 ?
ctrl+F7で普通にできるような
メインのHDDが壊れたのでDelphiを入れなおし… Indy9.0をサイトから落としてきて、 指示どうりに、Fulld4.bat を実行。D4フォルダができて中にファイルが並ぶ。 コンポーネント-パッケージの追加 で、D4フォルダの dclIndy40.bpl を登録。 パレットにIndyコンポが並ぶ。 試しに、何も無いFormに適当にIndyコンポ(TIdTCPClient)を1つ乗せて 実行してみると、usesのところで、 [致命的エラー] Unit1.pas(7): ファイルが見つかりません : 'SyncObjs' と出る…検索するとたしかに、そんなファイルは無いらしい。 これって、何? バージョンは、Delphi4 Standard up3 環境オプションのライブラリパスはD4フォルダを通ってる。
>>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にイベント発生が延びてしまう のではないでしょうか? 次回イベント発生までの残り時間をセットできるプロパティは無いようなのですが・・・どうすれば良いでしょう? あるいは前回起動時からの経過時間がわかれば、次回までは差分をセットしておいて、その後は新たな値を フルでセットする・・・という方法も考えたのですが・・・。
>>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 レスありがとうございます。
さっそく試してみます。
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 ○ (特殊文字ってマジで何のことを言ってるんだろう? まさか「改行」とか?微妙に気になる…)
>764 レス有り難うございます。 うーん、確かに上手く行く時は上手く行くんですが、既存のプログラムに追加すると ダメだったり、新規にテストプログラムを作ってみても動いたりダメだったり……。 あと、エラーは出ないんですが状態が変わらないという現象も出ました。 「コントロール 'SubForm' は親ウィンドウを持っていません.」の場合、self.Parentに セットする部分でそのエラーが起きてました。self.Parentを見たら"nil"だったんですが、 上手く動いてる方も同じく"nil"でした。 やり方としてはこの方法で間違ってなかったのでしょうか? もしこのまま原因がつかめないようでしたら、代替手段を探してみます。 どうも有り難うございました。
767 :
デフォルトの名無しさん :03/03/17 00:44
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
783 :
デフォルトの名無しさん :03/03/17 14:58
「nil」って無しってことですか? あと、「nil」と「null」は同じ意味なんですか?
んだ
1009
ノーンってNONE?
フサギコの中の人は大変でつか?
馬鹿っ!NONEはノネだろ!
∧_∧ ( ´∀`)<にるぽ
>>789 それ前やったけど全然流行らなかったよ・・・頑張れ!
IndyのidTCPServerって非ブロッキングソケットにできないの? やり方教えてください お願いします
792 :
デフォルトの名無しさん :03/03/17 17:54
最大化で起動するようにしたらタスクバーをも隠してしまうのはバグですか?
794 :
デフォルトの名無しさん :03/03/17 17:59
仕様です(ksw
795 :
bloom :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に放り込むけどなぁ。
805 :
デフォルトの名無しさん :03/03/17 19:14
彼(彼女)はTstringsの使用を潔しとしないのか それとも使用できないのか
使用できないのに>800の方法はOKなのか? よくわからん
PopupMenuをフォームの真ん中にポップアップさせるにはどうすればいいですか?
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 そもそも抽象クラスです。
>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
マウスジェスチャーのポンコーネントください
>>828 そうですか。(´・ω・`)ショボーン
>> 830 なんで ショボーン するんだよぉ Filter セットして FindNext をよびましょ
>>831 Filterって、完全一致でないと駄目なんじゃないですか?
例えば、“名前”に“加藤”を含む加藤一郎、加藤二郎、加藤三郎を
表示させるのは、Filterで出来ます?
部分一致で、検索するかフィルタするかしたいんです。
833 :
デフォルトの名無しさん :03/03/18 18:18
TEditで文字列を真ん中や右に揃えられないの?
>>833 TMemo(だったっけ?)を使うが吉。
836 :
デフォルトの名無しさん :03/03/18 23:27
ポート番号がわかりません。 どうやって知ることができますか?
839 :
デフォルトの名無しさん :03/03/19 00:49
タイ━━━━||Φ|(|´|Д|`|)|Φ||━━━━ホ!!
>>832 最近はSQLばっかでフィルター使ってないんだけど・・・
OnFilterRecordの中で
Accept:=(AnsiPos('加藤', フィールド名.Value)>0);
みたいにすればいいんでないのけ
スレッドってfunctionとして定義できますか? 例を見てみるとprocedureとして書いてあるのだけなんですけど・・
843 :
デフォルトの名無しさん :03/03/19 06:36
MicrosoftとBorland、共同でDelphi.NET開発中だそうだ。
>>842 と、言うか素直にTThread使った方がよく無くないですtか?
>>841 ありが㌧ございます、できますた!
よかったら、後学のために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で調べてくさい
HyperCardのwin版ってないのでしょうか? お願い!詳しい人教えてくださいな!
日本語になってませんでした。すみません。
やろうとしていたことは、WinAPI使ってURIデータを送受信する部分のスレッド化だったのですが
実装してみたら使えませんでした。もうお分かりかと思いますが、データが返ってくる前にそのデータを
待ち受けているべきメインスレッドが先に進行してしまって・・・(笑
>>844 TThreadは使っていたのです。それのexecuteをprocedureではなくfunctionとして書きました。
(それ自体は成功しました)
>>846 APIを使う方法は試してません。そこまで力無いです。
ありがとうございました。
StringGridで列単位に入力を制限する方法って ありますか?
>853 TThread.OnTerminateイベント使ったら?
856 :
デフォルトの名無しさん :03/03/19 22:37
jconvertってもう落とせないのでせうか…
858 :
デフォルトの名無しさん :03/03/19 22:46
>>855 それも実装してみたのですが・・・
とにかくスレッド化してしまうと、スレッドを分けた分岐点から処理が先に進行してしまう・・・
あ、そうか、OnTerminateの部分にメインスレッドの先を書けばいいのか・・・あぁ、どうしてそれに
気付かなかったのだらう・・・あのユニットもう消しちゃったよ・・・うぅ
>>854 特定の列だけ入力できないようにしたいって話なら、
OnSelectCellでOptionsにgoEditingを付けたり外したり。
EditorModeも変える必要があったかもしれん。
861 :
デフォルトの名無しさん :03/03/20 10:51
>>860 それやったんだけど
goAlwaysShowEditorをTrueにしてる場合だと
たまに入力できる状態になったりする。
マウスをドラッグした時とか・・・
>>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; こんな感じでやってみましたが、キャンセル押しても終了されてしまいました。 キャンセル押したときに、終了を無効化できることはできないんですか?
解決しました
FindFirst関数で使うfaArchiveとはどういうファイルのことなんですか?
ツールバーコンポのように設計時にボタンを追加したくてTComponentEditorをいじってるんですが、 ExecuteVerbでTButton.Create(Component).parent := TPanel(Component) としても追加はできてもプロパティの変更等ができません。 どうしたらよいでしょうか?
戦争反対!!戦争反対!!戦争反対!!戦争反対!!戦争反対!! 戦争反対!!戦争反対!!戦争反対!!戦争反対!!戦争反対!! 戦争反対!!戦争反対!!戦争反対!!戦争反対!!戦争反対!! 戦争反対!!戦争反対!!戦争反対!!戦争反対!!戦争反対!! 戦争反対!!戦争反対!!戦争反対!!戦争反対!!戦争反対!!
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 とりあえずヘルプをよく読むことをお奨めする。
aaa
ZAKUじゃん
MIDIキーボードからの入力を受け取るにはどうすればいいんですかね?
878 :
デフォルトの名無しさん :03/03/21 16:16
アイコン変えたら、元に戻せなくなりました。 あの新規プロジェクトの時に付いてるアイコンは一体どこにあるのですか?
Delphi32.exe
880 :
デフォルトの名無しさん :03/03/21 17:11
メモリの解放っていつやればいいんですか?
要らなくなった時
>>882 GC搭載してるOSってなんかあったっけか?
プロセス終了時に開放するって意味だろう。
TCharFormat、TCharRange ってどのunitにはいっていますか?
889 :
デフォルトの名無しさん :03/03/22 01:58
教授!メニューバーの項目を右寄せする方法教えてください
教授て誰? 天才柳沢? チャールズ・エグゼビア?
891 :
デフォルトの名無しさん :03/03/22 02:29
>>889 しなくていいです。そんなことしてるソフトは絶滅危惧種です。
やっぱDelphiじゃ出来るわけ無いか
・・・・・んぁ?
勘違いされてるようなんで一応書いておくと、 インターネットエクスプローラのようにメニューバーの右端にマークを付けたいだけです
895 :
Delphi初心者 :03/03/22 11:21
Delphiでは主に何が作れるのですか?ほかの言語に比べて、作りやすいですか?
Windowsのプログラムが作れます。慣れれば作りやすいです。
897 :
Delphi初心者 :03/03/22 11:31
.exeファイルも作れますか?
Q1 Delphiでは主に何が作れるのですか いわゆるWindows アプリ全般 無料のものでも外部コンポーネントを使えばクライアントアプリも作れる お金を出せば ActiveXもつくれるし イントラサーバ側や、データベースを利用したアプリも簡単に作れる Q2 ほかの言語に比べて、作りやすいですか? 作りやすいかどうかは他人には判らない 文法はシンプルで厳格かつ柔軟 応用力のある人には覚える事が少なく楽だろう。 キー打鍵数は比較的多い方だろう コンポーネントを使ったVBに似たお手軽プログラミングも可能。 ただ、VBと違って、学ぶ姿勢があれば、 構造化スタイルからオブジェクト指向まで容易に習得出来る。
>>897 32bitWindows用の Exe 又は DLLが作れます
お金を出せば NTサービスも作れるそうです
900 :
Delphi初心者 :03/03/22 11:35
レス有り難うございました。ところで、みなさんはDelphiを使っているのですか?
Delphi自体には不満が無いが、ボーランドジャパンの弱体化ぶりが 気になる昨今。(開発者は英語力鍛えとけよ・・・って事で。)
>>899 タダのやつを使ってもAPI使えばNTサービスも作れるよ。
NTサービスは、それほど難しくない。
ただし情報が少なすぎてプログラミング自体初心者は他言語より苦労します
905 :
デフォルトの名無しさん :03/03/22 13:53
>>904 インターネットが普通に検索できる人間なら別に問題なし。
教えて君にならずに自分で何でもやってみることだな。
後、Cも平行して覚えればAPIに関しては何の心配もいらないと思われ。
>>904 むしろ自分で情報探さなきゃいけない分、
ほかの言語より厨房度は低いような・・・
>>906 Cも平行して覚えられるのなら、厨とかその程度のレベルには居ない資質の人間かと思われ。
最後に触った言語はQuickBasicでその前がファミリーベーシックだ…。
>>910 VBにいかずにDelphiにしようと思ったのは如何に?
DelphiはBASICじゃないぜ?
>>911 QuickBASICのBASICではないが。それ以前にVBもBASICじゃないだろ。もはや。
913 :
デフォルトの名無しさん :03/03/22 15:22
Delphiのtryとexceptで例外を処理するときに、 どのメソッドがどんな例外を発生するかどうやって調べれば良いんでしょうか? Javaのようにコンパイラが教えてくれたり、リファレンスに書いてないので分からないんです。
>>914 ヘルプってVCLリファレンスのことですか?
それとも別の物?
たとえばTStringsのSaveToFileメソッドを使ったときに、
起こり得る例外などリファレンスのどこを見ればいいんですか?
>>916 アフォ
>>915 書いていない例外は経験と勘と後付のエラー対応とVCLソース解析で対処。
>>917 あふぉと言われたので荒らすことにします。
procedure
★あなたのお悩み解決致します!!
●浮気素行調査
彼氏、彼女、妻、夫の浮気を調査致します!!
●盗聴器盗撮機発見
あなたの部屋に誰かが仕掛けているかも!!
●行方調査
行方不明になっている家族の消息を調査致します!!
●電話番号から住所割り出し
一般電話、携帯から住所を割り出し致します!!
●ストーカー対策
社会問題ともなっているストーカーを撃退致します!!
その他人生相談からどんなお悩みでも解決いたします!!
直通 090-8505-3086
URL
http://www.h5.dion.ne.jp/~grobal/ メール hentaimtt@k9.dion.ne.jp
グローバル探偵事務局
>>911 なんとなくカコイイから…じゃ駄目ですか?
もうDelphi7Pro買ってきちゃったよう・゚・(ノД`)・゚・。
922 :
デフォルトの名無しさん :03/03/22 16:45
Delphiの説明がされているお勧めのHPってありますか?
924 :
デフォルトの名無しさん :03/03/22 16:50
某日だけinpriseのドメインが通らないのは某日のやる気の無さと考えてよろしいですか?
>>927 .co.jp を持てるのはは1企業1ドメインのみ
929 :
デフォルトの名無しさん :03/03/22 23:39
D6Perでまともに使えるウェブブラウザコンポありませんか?
>929 TEmbeddedWB
始めた理由:タダだったから。
>>930 外人さんのコンポって、たとえフリーでもちょっと敬遠しちゃうな…。
embeddedwbって素晴らしいコンポーネントだと思うけど、
「タダ!利用して配布してもタダ!文句言わないよ!勝手に使ってね♥」
ってでっかく書いといてくんないかなぁ(^^;。
利用規約がどのあたりに書いてあるのかよく分からない…。
アリガ㌧
日本産の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文字列がそのままテキスト形式で出てきただけでした。
940 :
デフォルトの名無しさん :03/03/23 07:08
どういう風にすればよいのでしょうか TStringList[0]に商品 個数 合計として TStringList[1]に100 5 配列に入れて合計を出します。これは出来るのですが その後TStringList[1]に追加する方法が分かりません
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 とするとだめです
関係するソースを全部さらせ。
>>946 VCLのソースが転載されるに8スレッド
テキストデータやCSVデータをエクセルの様に色々計算させたいのですが TStringGridを使えば出来るのはわかるのですが、これはフォーム上に STringGridを置いて使うものなのでしょうか? データを配列に入れて、計算した結果を列を追加していきたいのですが、 掲示板でサンプルを探しているのですがなかなかありません。 STringGridの良いサンプルがあれば教えてほしいのですが デルファイ歴 1週間です
>デルファイ歴 1週間です まだ質問するにも早すぎるな。
まあそういわずに
951 :
デフォルトの名無しさん :03/03/23 21:30
>>948 Excelのように使うのは無理だが(計算機能がないから)、
CellsプロパティにIntToStrで値を入れてやるってのが普通かなぁ。
Delphi中毒(末期)の漏れが言うのもなんだけど、何事も適材適所。 セルの計算がしたいだけならExcelで組むのがいいとおもうよ。 新人さんにこそよくよく聞いて欲しいんだけど、どの設計方針で組むのが 一番コストがかからないのか、組み始める前にじっくり考える癖をつけて欲しい。 それでもDelphiにしたいならまた来てよ。そのときは歓迎するよ。
Excelは遅いからDelphiにするんですけど Excelで1つのファイルのデータを貼り付けて計算して結果出すのに 30秒から1分かかります。4000ものファイルを計算させるととんでもない ことになります。 最初に作ったのは1つのファイルのデータを4000のファイルに振り分けるものです Excelでは40分から50分かかります。 delphiでは25秒でした。 Excelはファイルオープン、クローズに時間がかかります。 だからDelphiにするのですが、いけませんか?
>>953 だからと言ってプログラミング歴1週間ではいかんともしがたいぞ。
そうですね。 一応サンプル探して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 とする // 以下は同等の処理の繰り返し
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('ほげ'); ってやってみても何も出てこなかったのが 非常に気になっているのですが・・・。
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宣言しておく。
>>964 ありがとうございました
また1つ勉強になりました。
>>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バイト以内に云々と書いてありますが・・
>>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
>>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は存在しています 何か見落としている点がありませすでしょうか?
>> 988 サンクスです。
自己解決しました どうやら原因はfrmSDIToolLeftの変数を使って インスタンスを作成していませんでした お騒がせしてすみませんでした
1000!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。