くだすれDelphi(超初心者用)その44

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を
勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが
お礼はDelphiの布教と初心者の救済をお願いします。

<前スレ>
くだすれDelphi(超初心者用)その43
http://pc11.2ch.net/test/read.cgi/tech/1186111080/

<過去スレ>
DelWiki避難所
http://delwiki.info/?Delphi 関連の過去スレッド
2デフォルトの名無しさん:2007/10/06(土) 17:11:19
Delphiは既にVB.NETによって取って代わられています。
このスレは過去に入手した利用者や、学校での実習に関する質問を目的としたスレです。
新規にプログラミングを始める人はVB.NETの入手をお願いします。
3デフォルトの名無しさん:2007/10/06(土) 17:36:28
というのはガセ
4デフォルトの名無しさん:2007/10/06(土) 18:13:08
VB.NETってただですか?
5デフォルトの名無しさん:2007/10/06(土) 19:40:40
VB.NETって95で動くソフト作れますか?
6デフォルトの名無しさん:2007/10/06(土) 20:24:50
しばらく厨房ホイホイとなります。ご了承ください。
7デフォルトの名無しさん≠1:2007/10/06(土) 21:23:24
<関連スレ>
【Delphi】 Indyコンポーネント 【C++Builder】
http://pc11.2ch.net/test/read.cgi/tech/1093654251/
Delphi初心者のための寺子屋
http://pc11.2ch.net/test/read.cgi/tech/1132756268/
delphiで作った有名ソフトって何があるの?
http://pc11.2ch.net/test/read.cgi/tech/1135654787/
Delphiで無料でプログラミングしてみるお
http://pc11.2ch.net/test/read.cgi/tech/1158233434/
Delphi持ってるならGLSceneを使え
http://pc11.2ch.net/test/read.cgi/tech/1163269079/
delphiで2ch保守プログラムを作ろう
http://pc11.2ch.net/test/read.cgi/tech/1165632604/
【Delphi互換!?】FreePascal【GPL】
http://pc11.2ch.net/test/read.cgi/tech/1137051510/
8デフォルトの名無しさん≠1:2007/10/06(土) 21:24:22
>>7の続き:
【Delphi】 ゲームつくるぞ(゚Д゚)ゴルァ 2【Delphi】
http://pc11.2ch.net/test/read.cgi/gamedev/1097836469/
Delphiでアクションゲームが作りたい!! Part2
http://pc11.2ch.net/test/read.cgi/gamedev/1027482533/
ネットワークゲーム作成のお勉強(Delphi専用スレ)
http://pc11.2ch.net/test/read.cgi/gamedev/1028278884/
delphiでMMO
http://pc11.2ch.net/test/read.cgi/gamedev/1072515100/

>>1乙です。
9デフォルトの名無しさん:2007/10/07(日) 14:28:47
フォーム以外をParentに設定する方法はありますか?
TImageを、TImageやTLabelの親にしようとしているのですが、どうにも方法が分かりません。
親としたTImageを移動させる際、その中にあるイメージやラベルも一緒に動かせたら、ということです。
10デフォルトの名無しさん:2007/10/07(日) 15:13:34
>>9
その親にしたいTImageを他のTImageやTLabelと一緒にTPanelに乗せたら?
11デフォルトの名無しさん:2007/10/07(日) 15:29:31
休日にtelnet使ったソフト作ろうと思ってindy弄ってたが
なんつーか挙動がへんだな、これ。

9と10でSendCmdで例外が飛んだり、飛ばなかったり、
SebdChで長いコマンドを流し込むと途中で接続がタイムアウトしたり(Σ(゚д゚)オイオイ)
Disconnectedのメッセージが2度飛んでくると終了時に100%ハングしたり・・・
なんなんだ、これは?w

あまりにも使えないんでICS使ってみたらあっさり悩み解消。
indyでまともにtelnet使えてる香具師いるのか?
12デフォルトの名無しさん:2007/10/07(日) 15:52:23
で、質問は何ですか?
13デフォルトの名無しさん:2007/10/07(日) 16:01:26
>>11
Indyはたしかにアレだよな。
俺もJaneの時も苦労したもんだ。

まともなの作るならIndyは避けたほうが苦労しなくてすむかもね。
14デフォルトの名無しさん:2007/10/07(日) 16:03:33
Indyでメーラーを作ろうとして途中で投げたのは自分だけでいいorz
15デフォルトの名無しさん:2007/10/07(日) 16:45:00
>>10
その親にしたいTImageというのが作ったり破棄したりで、2つ以上になるときがあるのです。
そうなるとTImageを作る際にTPanelも作って、それに乗せておく、ぐらいしか方法が無いのでしょうか。
とりあえず他の方法を思いつくまではこの方法でやってみたいと思います。
レスありがとうございました。
16デフォルトの名無しさん:2007/10/07(日) 16:55:06
>>15
毎回配置するのが手間なら、TLabeledEditのようにあらかじめコンポーネントとして作っておいて、
実行時にそれを生成すればいいよ
17デフォルトの名無しさん:2007/10/07(日) 16:56:12
プレステ3のソフトをデルフェンで作れますか?
18デフォルトの名無しさん:2007/10/07(日) 16:56:22
TToolbarについて質問です。
エクスプローラのツールバーのように特定のTToolButtonだけCaptionを表示するにはどうすればいいでしょうか?
ToolButton.Caption := ''としても画像の横にスペースが入ってボタンが広くなってしまいます。
19デフォルトの名無しさん:2007/10/07(日) 17:02:02
>>17
デルフェンなら可能かもしれないな
20デフォルトの名無しさん:2007/10/07(日) 17:12:15
>>17
子供を作らないようにする事なら可能かもしれないな
21デフォルトの名無しさん:2007/10/07(日) 19:41:23
>>19
可能なんですね!
さっそくやってみます

とりあえずデルフェンの起動時に開かれるこの右から左に流れるアニメーションだけでも
早く作れるようになりたいです!

わかんない事があったらまたきます
ありがとさんでしたー
22デフォルトの名無しさん:2007/10/07(日) 19:42:32
分からない事があってもデルフェンのことはデルフェンのスレで聞いてください。
23デフォルトの名無しさん:2007/10/08(月) 18:18:02
ToolbarのToolbuttonを動的に作成すると非常に時間がかかるのですが改善策はないでしょうか?
20個ほどのボタンを作成するのに200ms程かかるので起動が遅くなってこまってます。
24デフォルトの名無しさん:2007/10/08(月) 18:58:49
表示をとめてみたら?LockWindowUpdateとかで。
25デフォルトの名無しさん:2007/10/08(月) 22:11:22
|☆TToolButtonの実行時作成&削除
|あまり使うことはないと思うのですが、ファイルにキャプション一覧を登録しておき、それを読み込んでToolButtonに設定する処理です。
|ポイントは、ToolBarのAutoSizeとShowCaptionを一時的に無効にすることです。この処理により、キャプションの入れ替え時に一瞬ちら
|つきますが、この処理を入れないと、ボタンが設定されていく様子が見えるぐらい遅くなります。

どっかのDelphiサイトから
26デフォルトの名無しさん:2007/10/09(火) 09:08:32
Indy は大げさすぎるとういうかごちゃごちゃ感は否めないな。
telnetの送受信だけきっちりやってくれてあとは文字コード
変換系のサブルーチンそろえてくれればそれで十分なような。
27デフォルトの名無しさん:2007/10/09(火) 09:11:22
RFC知らなくてもつくれるようにしようぜ的な考えがそもそも間違いのような希ガス
28デフォルトの名無しさん:2007/10/09(火) 12:30:39
RFC 知らないけど、Indy のおかげで FTPができた!プロキシがいまいち不安ですが。
29デフォルトの名無しさん:2007/10/09(火) 13:11:30
VCL の Windows 知らなくてもつくれるようにしようぜ的な考えがそもそも間違いのような希ガス
30デフォルトの名無しさん:2007/10/09(火) 19:36:33
ライブラリの存在理由も分からない馬鹿はアセンブリでもやってろ
31デフォルトの名無しさん:2007/10/09(火) 20:37:25
アセンブラとアセンブリの違いが分からない厨房がDelphiをつかうんだよね。
32デフォルトの名無しさん:2007/10/09(火) 22:37:07
なぜDELPHIスレにアンチが来るんだろう・・・
33デフォルトの名無しさん:2007/10/09(火) 23:04:19
VBスレで叩かれて泣きべそかいてたんだよ
34デフォルトの名無しさん:2007/10/09(火) 23:51:48
>>31のようなこと言うやつって大抵その「違い」の話しか知らなくて、
肝心のアセンブリ言語については全く分からないにわかだらけだよなw
35ななしへたぐらま ◆XcB18Bks.Y :2007/10/09(火) 23:53:47
>>9,15
遅いレスですがフレームにイメージコンポやラベルを載せるのがよいと思います。

イメージコンポ(TImage)は親になれないので代わりに親になるコンポを用意するわけですが
フレームがパネルと違うのはイメージコンポとラベルの配置を設計時にでき、
実行時にはこのフレームを生成(して親を決めて配置)するだけで良い点です。

>>29
時として巨大になりがちなウィンドウプロシージャを隠しているのは賢い選択ではなかったかと思います。
36デフォルトの名無しさん:2007/10/09(火) 23:57:59
>>35
皮肉もわからずにマジレスしちゃうやつは半年ROMってろ
37デフォルトの名無しさん:2007/10/10(水) 00:27:39
Delphi を DELPHI と書くやつって、あほっぽいな・・・
38デフォルトの名無しさん:2007/10/10(水) 00:32:28
ふたことめには RFC とかいうヤツをからかってるのに、ほんとわかんないヤツ大杉w
39デフォルトの名無しさん:2007/10/10(水) 08:22:43
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を
勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが
お礼はDelphiの布教と初心者の救済をお願いします。
40デフォルトの名無しさん:2007/10/11(木) 15:56:16
参照項目についての質問です。
KeyFieldsに2つのフィールドを指定した参照項目を作ったのですが
DBGridでKey1,Key2を入力すると表示されるのですが、参照項目フィールドを
クリックすると「Query1項目Key1;Key2が見つかりません」というようなエラーメッセージが
延々と出て強制終了するしか無くなります。
複数キーの参照項目はドロップダウンで表示できないのでしょうか。

環境はD7+FB1.5です。
41デフォルトの名無しさん:2007/10/12(金) 14:45:51
Del7を使っています。
秀丸のアウトラインモードとか、Delの新しいやつの
エディタ画面みたいなコンポーネントってありますか?
Delの新しいやつ買えば付いてますか?
42デフォルトの名無しさん:2007/10/12(金) 23:54:07
TurboDelphi使ってるんですが、数十分使うとbdsのメモリ使用量が500M超えとかになってしまいます。
これは何とかならないんでしょうか?
43デフォルトの名無しさん:2007/10/13(土) 02:48:45
メモリを増やせばいいです
44デフォルトの名無しさん:2007/10/13(土) 03:10:51
Del買っても付いてこないな。
>秀丸のアウトラインモードとか、Delの新しいやつの
>エディタ画面みたいなコンポーネントってありますか?
海外製でシェアだけど、秀丸のアウトラインのようなツリーコンポとDel2007みたいに、折り畳みや
同期編集までもできちゃうエディタがセットになったやつがあるな。ほぼ秀丸でできることはできる。選択範囲のみ編集可能にしたり。
強調表示やアウトラインの解析などのルールは正規表現や、BNF?もどきでカスタマイズできる。コード補完やコードテンプレートの
コンポもついてるから、プロパティの設定だけでほぼカスタマイズできる。
Ansi版とUnicode版ついてて、海外製だけど、IMEなどの日本語絡みの問題はほぼなさそうだった。




45デフォルトの名無しさん:2007/10/13(土) 20:59:54
ナッキーのDelphiはじめて奮戦記
ってどんな内容なんでしょうか?
講座本?エッセイみたいなもんでしょうか?
講座系なら購入したいです。
amazonで残り3冊になってるぐらいだから結構人気なんですね。
46デフォルトの名無しさん:2007/10/13(土) 21:28:56
ぐぐれ
47デフォルトの名無しさん:2007/10/13(土) 23:56:31
>>44
カスにぐぐりかたおしえれ
48デフォルトの名無しさん:2007/10/14(日) 07:06:05
>>47
ググり方をヤフれ
49デフォルトの名無しさん:2007/10/14(日) 10:59:34
>>45
ここの詳しい目次見て、作りながら学んでいく初心者向けの講座本だよ。
全くの初心者ならかって損は無い。
ttp://www.cutt.co.jp/book/4-87783-133-2.html
50デフォルトの名無しさん:2007/10/14(日) 13:25:30
うーーーーん、全くの初心者なら C# からの入門をすすめる
51デフォルトの名無しさん:2007/10/14(日) 16:57:16
>>50よ しんでしまうとは なさけない
52デフォルトの名無しさん:2007/10/14(日) 17:10:16
C#は簡単だしオススメはできる
53デフォルトの名無しさん:2007/10/14(日) 18:42:05
人が検索も分らないバカを騙して茨の道に誘い込もうとしてるのに邪魔するな。
54デフォルトの名無しさん:2007/10/14(日) 19:16:50
Delphiは茨か?
55デフォルトの名無しさん:2007/10/14(日) 21:05:29
Delphiと言う開発環境は素晴らしいと思うけど
Delphiと言う言語はC#やJavaと比べると難しい。
本とか情報もJavaと比べると少ないし茨の道だと思うな。
56デフォルトの名無しさん:2007/10/14(日) 21:28:20
サイズは同じで中身だけが違う
レポートAとBを同時に印刷して

A Page1
B Page1
A Page2
B Page2
A Page3
   :

このように出力させる方法教えてください
Delphi6です

57デフォルトの名無しさん:2007/10/14(日) 22:12:54
意味がわからん
58デフォルトの名無しさん:2007/10/14(日) 22:28:48
なぜそのようなことが必要なのか判らん。
別々に印刷して並べ替えれば済むじゃん。
まあ千ページもあるってんなら大変だろうが。

59デフォルトの名無しさん:2007/10/14(日) 22:51:06
>別々に印刷して並べ替えれば済むじゃん。
これを人力でやりたくないからです。
1000ページは無いけど500ページくらい有ります。
60デフォルトの名無しさん:2007/10/14(日) 22:53:57
そういう順番で出力すればいいだけの話
61デフォルトの名無しさん:2007/10/14(日) 22:57:43
だあそれだと印刷ジョブが細切れになる罠
Win95ならたぶん死ぬ
62デフォルトの名無しさん:2007/10/14(日) 23:19:32
95なんて使ってる方がおかしい
63デフォルトの名無しさん:2007/10/14(日) 23:46:28
Del厨は変わったやつが多いな
64デフォルトの名無しさん:2007/10/15(月) 00:44:22
逆。
65デフォルトの名無しさん:2007/10/15(月) 02:44:53
おすすめ本は
Delphi4プログラミング技法
Delphiアルゴリズム

絶版なのが欠点だが・・・
66デフォルトの名無しさん:2007/10/15(月) 08:15:34
>>55
C#やJavaはコボルの地位を継承するドカタ言語だからな。
ポインタとかよく分からない、っていう三流SE?に人気があるよ。
67デフォルトの名無しさん:2007/10/15(月) 08:30:37
そんな馬鹿な
68デフォルトの名無しさん:2007/10/15(月) 09:11:05
DelphiはVBの地位を継承するドカタ言語だよね。
69デフォルトの名無しさん:2007/10/15(月) 11:03:38
TParam.AssignFieldValueで、項目がftFMTBCDの時に、TParamのPrecisionが設定されません。
誰かCodeGearに文句を言って下さい。TParamのNumericScaleで小数点以下の桁数は設定されていますが、
全桁数Precisionが常に0です。
if Field.DataType in [ftFMTBcd] then
Precision := Field.Precision
を追加しといて下さい。TClientDataSet経由でTSQLResolverで更新を適用する時に、
全桁数が分からなくてもごまかせますが、困っています。
70デフォルトの名無しさん:2007/10/15(月) 11:28:14
どかたに言語なんてあるの?
71デフォルトの名無しさん:2007/10/15(月) 20:59:56
OSI参照モデル第0層
72デフォルトの名無しさん:2007/10/15(月) 22:18:52
Delユーザの大半は、中小零細なデジドカですが、なにか?
73デフォルトの名無しさん:2007/10/15(月) 22:55:42
>>48
そうじゃなくてw
74デフォルトの名無しさん:2007/10/15(月) 23:02:29
日本のプログラマなんて大半がIT土方じゃん
言語がどうこう言ってる奴は頭おかしいのか?

75デフォルトの名無しさん:2007/10/16(火) 00:01:51
プロにとって言語、環境なんて所詮道具なんです。頭のおかしい人はそれが分からんとです。
彼らは、宗教のように特定の言語や環境を崇めとるのです。それ自体は否定しませんが、
彼らはそれ以外の言語や環境そしてユーザーを否定し蔑んどるんです。
特に、あるパワフルだが習得の難しい言語のユーザーと思われる人たちは酷いとです。
Java使いを低脳IT土方と蔑み、VBとDelphi徹底的に否定するとです。
彼らは、使いもしないのにDelphiスレに現れ暴言を吐きまくるとです。
76デフォルトの名無しさん:2007/10/16(火) 00:21:23
所詮は道具、とかいってるわりにはかなりこだわってるじゃないかww
77Delフサギコ ◆A6VzDeLphI :2007/10/16(火) 00:25:00
    ∧,,∧  やほーう
   ミ,,゚Д゚∩
    ミ つ旦 ミ
  〜と,,,~),,~) 

質問っす。
EmEditorのプラグインを作ってるので
VCLを使わずに、AppendMenuでメニューを作っています。

そんでもって、
自分でポップアップさせたメニューにマウスオーバーしたときに
ヒントウィンドウを表示させるという

Windowsのスタートメニューのような動作をさせたいのですが

Halbow氏のページみてて、APIでヒントを表示させようとしてますが
http://homepage2.nifty.com/Mr_XRAY/Halbow/Chap27.html#Chap27-5

動作はわかるのですが、自分で作成したメニューに対して
ヒントウィンドウを表示させる方法がわかりません。

ご存じでしたら教えてください。よろしくお願いします。
78デフォルトの名無しさん:2007/10/16(火) 00:26:17
道具に愛着を持つのもまたプロさ
79デフォルトの名無しさん:2007/10/16(火) 00:27:28
>>77
Win32APIスレ行けよ
80デフォルトの名無しさん:2007/10/16(火) 00:30:50
いやむしろ、EmEditorスレにコテハンで。
81デフォルトの名無しさん:2007/10/16(火) 01:02:36
>77
function TToolTip.AddToolじゃねーの?よく見てないけど。
82デフォルトの名無しさん:2007/10/16(火) 01:26:48
ttp://shimizuhouse.net/strage/sirenclock/index.html

これをdelphiで作りたいんですけど、こういう時計の作り方が載っているホームページが見あたりません。
まずどんなふうに作り始めればいいのか、よろしければ教えてください。
83デフォルトの名無しさん:2007/10/16(火) 01:32:17
キーボードでプログラムを書き込めばできるよ
84デフォルトの名無しさん:2007/10/16(火) 01:33:51
>>83 できました。 ありがとうございました。
85デフォルトの名無しさん:2007/10/16(火) 01:46:18
リンク先の数字部分はフラッシュアニメーションで作られているみたいだね。
まず、文字のアニメーションのデータを作成するところから始めればよいかと・・
86デフォルトの名無しさん:2007/10/16(火) 03:57:17
>84
出来たのかよ!!w
87デフォルトの名無しさん:2007/10/16(火) 08:31:26
しかし.NETはMSの壮大な釣りだったな・・・
IDEねぃてぶに戻してもらえないのだろうか・・・
88デフォルトの名無しさん:2007/10/16(火) 08:57:43
>>85
人の温かさを知りました。 ありがとうございました。
89デフォルトの名無しさん:2007/10/16(火) 14:54:23
TChartみたいにグラフを描けて、
かつ、横軸に日付を使えるコンポーネントありますか?
90デフォルトの名無しさん:2007/10/16(火) 15:58:19
自作というコンポーネントがありますよ
91デフォルトの名無しさん:2007/10/16(火) 22:08:10
>>70
 俺は毎日のようにユンボに乗っている真性土方だが、8年くらい前に買った
Delphi 5 Professional で今もプログラミングを楽しんでいる。
92デフォルトの名無しさん:2007/10/16(火) 22:38:28
>>91
これは笑わせてくれる
93デフォルトの名無しさん:2007/10/16(火) 23:00:32
>89
TChartじゃだめ?日付時刻型=Double型なので、X軸の値として日付をそのまま入れていけばOKだと思うけど。
94デフォルトの名無しさん:2007/10/16(火) 23:04:14
TStringGridはXPのLUNAなどのスタイルに対応していないのですか?
95デフォルトの名無しさん:2007/10/17(水) 00:08:31
全く対応していないというわけじゃないけど、事実上対応していない。TMSあたりの有償コンポーネントを
使用すれば幸せになれそう。
96DEKO ◆v8todlW3ks :2007/10/17(水) 00:10:03
>>94
テーマAPIを使って自前で描画する必要があります。

描画部分はこんな感じです(TListViewのヘッダで固定行を描画する場合)。
DrawThemeBackground(FTHEME_HEADER,Canvas.Handle,HP_HEADERITEM,HIS_NORMAL,ARect,nil);

[コントロールをテーマでオーナードロー]
ttp://homepage1.nifty.com/ht_deko/tech011.html#tech035
9789:2007/10/17(水) 08:46:38
>>93
じゃ、TChartしてみます。
やっぱ、それしか無いですか。
98デフォルトの名無しさん:2007/10/17(水) 09:37:58
それしかないというかグラフぐらい自力でやるのがよくね?
どこまでも他力がいいなら表計算に投げるとか。
9989:2007/10/17(水) 09:42:00
>表計算に投げるとか。

それはそれでエラー処理が大変だったり。

なんていうか、VCLワールドなんだから、ハイパーなコンポを入手したいじゃない。
(自分のコンポを人に提供したりもしますし)
100デフォルトの名無しさん:2007/10/17(水) 09:49:18
だから、だれかがハイパーなコンポをつくらなきゃならん
今回のは君の番だということ
101デフォルトの名無しさん:2007/10/17(水) 10:00:43
>>99
コンポにしようとすると結構大変なこと多い。
でも自家用専用と割り切れば以外にあっさりできちゃうもんだぜ?
実際コンポである必要ないんだろ?
TPicture とかに直に書いちゃえばいいやん。
10289:2007/10/17(水) 10:56:03
>>100 >>101

あ、そうだよね。

だから自分、他人のちょっとしたコンポを手に入れて、
自分用に書き直したり、拡張したりする作業が好き。

VCLだと本当にコードが短くて作れるし。
103デフォルトの名無しさん:2007/10/17(水) 14:25:57
すいません。外部DLLの使用で質問です。
SAMPLE.DLL という、Visual C++で作成されたDLLがあります。
で、APIが下記のように公開されています。
BOOL APIENTRY
MyCopyFile(long lType, LPCSTR szBefore, LPCSTR szAfter);
この場合、Delphiで使うには、どのように宣言してやればいいんでしょうか?
一応下のようにしてみたんですが、うまくいかないみたいで…
function MyCopyFile(lType:Integer; szBefore:PChar; szAfter:PChar):Bool; stdcall; external 'SAMPLE.DLL';
104デフォルトの名無しさん:2007/10/17(水) 14:27:51
APIENTRY = stdcall ならそれで合ってるよ
105デフォルトの名無しさん:2007/10/17(水) 17:27:34
Canvas.MoveTo()などをPanel内に書くことは可能ですか?
106デフォルトの名無しさん:2007/10/17(水) 18:31:40
Panel.Canvas.MoveToってやりたいってことだとエスパーすると
Canvasが公開されてないからできないよ。
Handle は公開されてるから工夫次第では描画できそうだけども
それは有識者に任せるよ。
107デフォルトの名無しさん:2007/10/17(水) 18:39:33
TPanelの上位クラスのTCustomControlに
>protected
>property Canvas: TCanvas read FCanvas;
があるけど?

だから、TPanelを派生したコードからは自由にアクセスできるし。

ま、派生が出来ないへタレだったらTPanelExとしてCanvasをpublicすれば良いんじゃね?
(って良くないけど)
108デフォルトの名無しさん:2007/10/17(水) 18:54:31
言いたい事は、コンポーネントの派生でやってねってこと。
protectedはクラスの派生コードからはアクセスできます。

で、画面に貼る時ですが、メンドウだったら、
TFormにPanel1を貼っといて、
TFormのCreateかOnCleateで、

MyPanel := TMyPanel.Creat(self);
MyPanel.Align := alClient;
MyPanel.Parent := Panel1;

とかしとけば、実行時に派生パネルを貼れる。
109デフォルトの名無しさん:2007/10/17(水) 21:03:38
おまえも中途半端なヘタレだな。別に派生パネル貼る必要は無い。
TMyPanel(Panel).Canvasと
アクセスする時だけクラックすればよい。



110デフォルトの名無しさん:2007/10/17(水) 21:32:32
PaintBox 貼るだけ
111デフォルトの名無しさん:2007/10/17(水) 21:51:22
>>110が正攻法だな
112デフォルトの名無しさん:2007/10/18(木) 06:04:04
2Dで点をうっていくグラフィックを描く場合TBitmapのScanLineより速い方法ってありますか?
DirectXのテクスチャに描くと速いんですかね。
113101:2007/10/18(木) 08:30:28
>110 見て気付いたけど TPicture でなく TPaintBox だわ。スマソ
114デフォルトの名無しさん:2007/10/18(木) 17:15:24
>>112
じゃあ計ったら?
115デフォルトの名無しさん:2007/10/18(木) 17:29:53
どなたか教えて下さい。Delphi6です。
目的の項目があるStringGridをクリックして
4列目をファイル名とするJPGファイルを表示したいのです。
ファイルがある時はいいのですが、ファイルがないときに
nophoto.jpgを表示したいのですが、表示されずエラーに
なります。
irow:=stringGrid1.Row;
strng:=Stringgrid1.cells[4,irow];
fname:=dirphoto+strng+'.jpg';
Jpeg :=TJpegImage.Create ;
try
Jpeg.LoadFromFile(fname) ;
Image1.Picture.Assign(Jpeg);
except
fname:=dirphoto+'nophoto.jpg';
Image1.Picture.Assign(Jpeg);
end;
Jpeg.Free;
一回、Jpegを開放してみましたがやはりダメでした。
except
Jpeg.Free;
Jpeg :=TJpegImage.Create ;
fname:=dirphoto+'nophoto.jpg';
Image1.Picture.Assign(Jpeg);
end;
Jpeg.Free;
どうしたらいいのでしょうか???
116デフォルトの名無しさん:2007/10/18(木) 17:35:30
>>115
exceptでJpeg.LoadFromFile(fname) してないように見えるが
117デフォルトの名無しさん:2007/10/18(木) 17:52:34
> 116
ありがとうございました。おっしゃるとおりでした...
1時間、あれやこれやと試したのに、こんな原因とは..
ほんとうにありがとうございました。
118デフォルトの名無しさん:2007/10/19(金) 10:19:35
でもこれってtry..exceptでやるよりもFileExistsで存在確認したほうがいいよね。
119デフォルトの名無しさん:2007/10/19(金) 11:19:56
FileExistsが真だと判断した直後にファイルがなくなる可能性も考えられる、
と、この手の問題でよく言われるので、例外処理は必須。
120デフォルトの名無しさん:2007/10/19(金) 13:47:50
うぉ、勉強になった^^
121デフォルトの名無しさん:2007/10/19(金) 17:39:00
デコードエラーの可能性もあるしな
122デフォルトの名無しさん:2007/10/20(土) 14:48:50
>>96
TabControlをXP風オーナードローするのもTheme使えばできますか?

XPタブで文字色を変えることができませんでした。
123デフォルトの名無しさん:2007/10/20(土) 18:07:27
>>77
いまさらな遅レスだけど、ポップアップメニューは、EmEditor の UI と
統一性が無いんでどうかなーっと思わなくも無いような。
Editor_SetStatus を使ってステータスに表示するのがよろしいかと。
124デフォルトの名無しさん:2007/10/20(土) 20:27:21
↑下の間違い
×ポップアップメニュー
○ヒントウィンドウ
125DEKO ◆v8todlW3ks :2007/10/20(土) 23:21:56
>>122
RAD Studio 2007系のツールをお持ちなら、Helpから
ms-help://borland.bds5/ShellCC/platform/commctls/userex/topics/partsandstates.htm
を調べてみて下さい。

何故かは知らないですが、MSDN(Web)ではテーマ関連の定数一覧が消えています。
ttp://web.archive.org/web/20070608235402/http://msdn2.microsoft.com/en-us/library/ms649791.aspx

1.OpenThemeData()で'TAB'を渡してテーマハンドルを得る。
2.DrawThemeBackground()で上記URLの定数(TABの項目にあるものです)を試してみる。
3.DrawThemeText()/DrawText()で文字列をお好きな色で描画。

こんな感じで目的は達成できると思われます。
資料が少ないので大変だとは思いますが、がんばって試してみて下さい。
126デフォルトの名無しさん:2007/10/21(日) 00:21:31
>>125
どもです。
Del8以降は購入してないのでHelpは見れないです。

OpenThemeData(Handle, 'TAB');
でとりあえずはテーマハンドルを取得できたので色々試してみます。

サードパーティ製のコントロールを使ったほうがいいような気もしますが。
127デフォルトの名無しさん:2007/10/21(日) 23:57:16
超ど素人の質問で申し訳無いが・・・
Delphi2007アカデミックパッケージ買った場合
何か問題ある?
128デフォルトの名無しさん:2007/10/22(月) 01:00:15
購入しただけで問題になるようなパッケージは発売されておりません
129デフォルトの名無しさん:2007/10/22(月) 01:19:23
赤福も比内鶏も、購入だけなら問題ないよね。
130デフォルトの名無しさん:2007/10/22(月) 02:25:13
Del2007とDelphi7を併用しているんだけど、
Del7でDel2007の「リファレンスを検索」と同等の、IDEからクロスリファレンスを引く機能が
使える拡張ってないです? 一番あり得そうなCastaliaにも付いてないっぽい・・・
131デフォルトの名無しさん:2007/10/22(月) 02:41:59
シェアウェア・フリーウェアを配布できるのかを聞いているのだと思う。
132デフォルトの名無しさん:2007/10/22(月) 17:36:18
郵便番号と住所の相互変換をやろうと思っています。

日本郵政のサイトから郵便番号データをもらってきて、
チョット加工して、データベースに取り込みました。

それで、郵便番号を住所に変換するのは、うまく言ったんですが、
住所を郵便番号に変換するのにチョット躓きました。

住所の文字列を後方から、一文字づつ消去しながら、データベースに問い合わせ
見つかったらOKてのを考えましたが、いかんせん非効率です。

皆さんは、どうやって実装してるの?
133デフォルトの名無しさん:2007/10/22(月) 18:00:13
ssVerticalはどのユニットで宣言されているんでしょうか?
134デフォルトの名無しさん:2007/10/22(月) 18:12:39
>>133
help
135デフォルトの名無しさん:2007/10/22(月) 19:05:00
当方プログラミング初心者ですが、
delphiでHTMLとPowerPointのスライドショーを切り替えるプログラムを
作成しようと取り組んでいます。

自分なりにネットで調べ、
ファイルを指定してPowerPointのスライドショーを開くところまでは
なんとかできたのですが、下記の仕様を実現するのに、
手掛かりが無く、手も足も出ない状態です。
どなたかご助力頂けないでしょうか。

・各スライドの自動再生時間を取得したい。
(HTMLとの切替を行うため、スライドショーを終了する時間を得たい。)

これが取得できれば、全スライドの再生時間を積算し、
HTMLとの切替を行えると考えたのですがだめでしょうか。

ちなみに、下記のコードを走らせた場合、
PowerPointを起動していないと正しく実行できず、
PowerPointへのアクセス(?)ができていないのだと思いますが
どうすればよろしいでしょうか?
(ShellExecuteで起動するのも一つの手だと思いますが)

VBAでやるほうが手っ取り早い気もしますが、
今頑張って取り組んでいるDelphiで実現できればと考えています。
136135:2007/10/22(月) 19:05:42

procedure TForm1.Button1Click(Sender:TObject);
var
PowerPointApp:OLEVariant;
begin
try
PowerPointApp:=CreateOleObject('PowerPoint.Application');
PowerPointApp.Presentations.Open('Tmp.ppt',False,False,True);
PowerPointApp.ActivePresentation.SlideShowSettings.Run;
except
Exit;
end;
end;
137デフォルトの名無しさん:2007/10/22(月) 19:39:49
無料の Delphi をインストールしていろいろ実験中です。このような事を実現したいのですが
可能でしょうか。

ネットワーク上のあるファイルを監視してそのファイルを誰か他の人がアクセスしたことを知り
たいのです。何かズバリ使える命令とかないでしょうか。

また初心者向けのコマンド集みたいな本とかホームページがあったら教えてください。
138デフォルトの名無しさん:2007/10/22(月) 19:41:44
>>135
バージョンも書かずに質問とな?
TPowerPointApplication等が使えるなら使え
そうじゃないならタイプライブラリ取り込め
139デフォルトの名無しさん:2007/10/22(月) 19:45:28
生ログを解析した方が早いだろ。

それかサーバーに監視モジュールを組み込むか。
140デフォルトの名無しさん:2007/10/22(月) 20:43:04
ではその生ログをDelphiで解析できますか?
141デフォルトの名無しさん:2007/10/22(月) 20:44:58
>>138
失礼いたしました。
使用しているのはDelphi6.0Proです。
TPowerPointApplicationは無いようです。
タイプライブラリについてヘルプを読んでいますが
難しそうですね・・・自分なりにちょっと読み込んでみます。
142デフォルトの名無しさん:2007/10/22(月) 21:07:08
>>131
ピンホーン
赤福怖いのでバージョンアップ版にしますた(w
9月21日までなら37800円で買えたのを知りちょっとショック・・・
143135:2007/10/22(月) 21:35:17
>>138
PowerPointのタイプライブラリを
Delphiに取り込むところまで辿りつきました!

ソースを眺めてますが
どれが欲しいものか解りません・・・orz
144デフォルトの名無しさん:2007/10/22(月) 23:27:58
>>143
ヒント:コンポーネントパレット
145デフォルトの名無しさん:2007/10/23(火) 01:07:29
こんにちは。

Delphi7以降の record について質問です。

recordのコンストラクタは、パラメータなしだと宣言できないのですが、
あれってどういうことなんでしょうか?

つまり

 Hoge := THoge.Create;

は、できず(宣言できない)、

 Hoge := THoge.Create(1234);

みたいにしか使えないのですが、後者だけしかできないと、
コンストラクタが classのように使える、という意味合いにおいては、意味なくありませんか?

結局、record の場合コンストラクタは使わずに、
 Hoge.Initialize;
 Hoge.Initialize(1234);
みたいに、してしまうのですが・・・

 
146デフォルトの名無しさん:2007/10/23(火) 01:09:16
レコードのコンストラクタ????????????
147デフォルトの名無しさん:2007/10/23(火) 01:24:56
>>146
Delphi 7以降の言語およびコンパイラの新機能
http://dn.codegear.com/article/34409
148デフォルトの名無しさん:2007/10/23(火) 01:36:51
>>140
問題は生ログの取得方法。 もちろん取得できれば解析可能。
149デフォルトの名無しさん:2007/10/23(火) 12:19:39
>>145
ヘルプを読めば馬鹿でも分かるような理由が書いてあったと思うが、記憶違いかな?
150デフォルトの名無しさん:2007/10/23(火) 13:30:34
>>149みないな書き込みってムカつくよねw
151デフォルトの名無しさん:2007/10/23(火) 14:03:51
本人乙
そんな書き込みしてる暇があるなら調べろよ
152デフォルトの名無しさん:2007/10/23(火) 14:33:35
違うしw
153デフォルトの名無しさん:2007/10/23(火) 19:30:12
ListBoxのスムーズスクロールをオフにするにはどうすればいいでしょうか?
あれ重いんで切りたいんです
154デフォルトの名無しさん:2007/10/23(火) 20:48:56
Windows
155デフォルトの名無しさん:2007/10/23(火) 21:26:22
>>154
156デフォルトの名無しさん:2007/10/23(火) 21:35:57
154と155の意味がわかりません
157デフォルトの名無しさん:2007/10/23(火) 21:55:59
重いスムースって、おもしろいな
158デフォルトの名無しさん:2007/10/23(火) 23:30:11
>145
これか。Delphi 2007のヘルプから引用。
| レコードにはデフォルトの引数なしコンストラクタがあるため、ユーザー定義の
| レコード コンストラクタは必ず 1 つ以上のパラメータを持つ必要があります。

>153
XPだとコントロールパネルのシステムの詳細設定のパフォーマンスのリストボックスを
滑らかにスクロールするをチェックオフ。要はWindowsの設定に依存すると>154は
いいたかったと思われ。

>157
確かに。
159デフォルトの名無しさん:2007/10/24(水) 17:43:41
いままでコンソールアプリケーションでプログラミングをしていて、最近イベント駆動型のプログラミングを始めたのですが、
for文を使用しようとするとエラーが出るのですが、原因がわかりません…
[エラー] Unit2.pas(56): 制御変数がくるべき所に構文エラーがあります。( := の代わりに = と書かれている可能性があります)
このようなエラーが出てしまいます・・・・

for ii:=1 to 100 do
begin
tama[ii].y1:=tama[ii].y1+4;
tama[ii].y2:=tama[ii].y2+4;
Canvas.Ellipse(tama[ii].x1,tama[ii].y1,tama[ii].x2,tama[ii].y2);
end;

for文はこのような感じなのですが何か問題があるのでしょうか?ご指導お願いします。また、下記のようなfor文でも同様のエラーが出ました。

for ii:=1 to 100 do
writeln;
160デフォルトの名無しさん:2007/10/24(水) 19:56:35
>>159
問題があるとすればお前の質問の書き方
エラーを再現できる最小限のコードを晒す場合は一部じゃなく全部晒せ
他に問題があるかどうか分からないだろボケ
161デフォルトの名無しさん:2007/10/24(水) 20:37:53
>>160
なんかおまえは趣味と暇つぶしで質問に答えてるというより、職業になってる。NEET?
162デフォルトの名無しさん:2007/10/24(水) 20:41:10
半角の?を使う奴はどうして変な人が多いんだろう
163デフォルトの名無しさん:2007/10/24(水) 21:06:49
雑魚は質問者の質問に答えられなくても誰も咎めたりしないから、>>160みたくがんばって質問に答えなくていい。

以上。
164デフォルトの名無しさん:2007/10/24(水) 21:09:02
フサ〜CGスレに何年も常駐していたらそりゃ心も荒んでしまうってもんだ
165デフォルトの名無しさん:2007/10/24(水) 21:49:00
どう見ても>>159の質問の仕方が悪いんだろ・・・
166デフォルトの名無しさん:2007/10/24(水) 23:28:35
>>159
ループの中身をコメントアウトしてコンパイルGO!
167デフォルトの名無しさん:2007/10/25(木) 20:50:23
>>160の言ってることは正論だろ
中身さえあってれば充分だし、2chで優しく答えてもらえると思ってるやつは頭おかしいだろ
168デフォルトの名無しさん:2007/10/25(木) 21:51:23
だとしたらこのスレはいらないな
169デフォルトの名無しさん:2007/10/25(木) 21:52:40
敷居の低い言語のスレには高確率で池沼が沸くな。
170デフォルトの名無しさん:2007/10/25(木) 22:00:25
>他に問題があるかどうか分からないだろボケ
ワロタw
171デフォルトの名無しさん:2007/10/25(木) 22:02:02
俺がいいたかったのは>>160は正論だけど、煽ってまで、そんなに

誰かの質問に答えたい

のかよってことだけ。
そこまでして心満たされたいならまぁ頑張ってくれ。
172デフォルトの名無しさん:2007/10/25(木) 22:06:56
>>167からどうやってそれを摘み取れとwwwwwww
173デフォルトの名無しさん:2007/10/25(木) 22:42:51
摘み取るんじゃなくて汲み取るんじゃないの?
174デフォルトの名無しさん:2007/10/25(木) 22:48:02
質問に答えられないなら黙っていればいいのさ♪
175デフォルトの名無しさん:2007/10/25(木) 23:30:12
vista非対応の古いdelphiで作ったソフトが
vista上で動いたんだけど・・・
これって、問題無いと思っていいの?
やっぱ、2007で作らないとまずいのかな?
バグ取りを考えるとvista上で2007を使って作った方が楽そうだけど・・・
176デフォルトの名無しさん:2007/10/25(木) 23:33:29
>>172
Delphiの前に日本語を勉強なさった方がよろしいかと存じます
177デフォルトの名無しさん:2007/10/25(木) 23:34:16
>>175
結論出てんじゃん
そういうのはチラ裏に書いとけ
178デフォルトの名無しさん:2007/10/26(金) 08:26:14
>>1で書いてあるとおり、本当に超低レベルな質問ですけど、
RTLって、何の略なんですか?

STLは分かるんですが・・
179デフォルトの名無しさん:2007/10/26(金) 08:56:26
180デフォルトの名無しさん:2007/10/26(金) 22:26:14
>>175
Delphi 1.0 以外ならなんの問題もない
181135:2007/10/26(金) 22:39:05
前述のアプリの作成についてアレコレ悩んだあげく、
PowerPointのスライドショー(0001.pps)をShellExcuteで開くことにしました。

そこで、一定時間経過したあと、0001.ppsのウインドウを閉じたいのですが、
ハンドルが上手く掴めません。

YPT HandleXというツールで調べた結果、以下の事は解りましたが、

ClassName : paneClassDC
ParentText : PowerPoint スライド ショー - [0001.pps]
ParentClass : screenClass

FindWindowをあれこれ試してみましたがどうにもうまくいきません。

どうすればよいかご教授いただけませんでしょうか。

また、ネットで調べていると、
ファイルを開いた後で操作が必要な場合、
ShellExcuteExで開く方が良いという情報を得ましたが、

ShellExcuteExで開こうとするとアプリの関連づけができていないと言われ、
上手く開けませんでした。

当方はDelphi6Proで取り組んでおります。

ご助力のほど、よろしくお願いいたします。
182DEKO ◆v8todlW3ks :2007/10/26(金) 23:14:08
>>175
ManifestとかXPMan使ってなければ大丈夫なハズです。
ttp://homepage1.nifty.com/ht_deko/tech005.html#27
183デフォルトの名無しさん:2007/10/27(土) 11:29:55
同じImageを100個程度使ったゲームを作成したいのですが、自動生成方法がわかりません・・・・・・
わざわざ予めImageを100個Formに配置しておかなければいけないのでしょうか?

変数に画像ファイルなどが格納することが出来る型などがあるのでしょうか?
184デフォルトの名無しさん:2007/10/27(土) 11:41:15
TImage は、画像を保持して表示するためのクラス。
画像を保持するだけなら、TBitmap とか TJpegImage とかのクラスをつかって
それを配列でもつとよい。
185デフォルトの名無しさん:2007/10/27(土) 11:48:41
(1)フォームのprivateにTImage型の配列(100要素)を作成。たとえば
 :(略)
private
  GmImage:array[0.99] of TImage;
public
 :(略)

(2)FormCraeteにこう
procedure TForm1.Form1Create(Sender:TObject)
var
  I:Integer;
begin
  for I:=Low(GmImage) to High(GmImage) do //←Low()とHigh()を使えば要素数を書き換えなくても済む
  begin
    GmImage[I] := TImage.Create(Self); //←これが肝心
    GmImage[I].Parent := Self;
    GmImage[I].LoadFromFile(Format('Image%03d.bmp'));
  end;
end;

(3)FormDestroyにこう
procedure TForm1.Form1Destroy(Sender:TObject)
var
  I:Integer;
begin
  for I:=Low(GmImage) to High(GmImage) do
  begin
    GmImage[I].Free;
  end;
end;

//ちゃんと動くかどうかは試してない
186デフォルトの名無しさん:2007/10/27(土) 14:43:40
>Format('Image%03d.bmp')

Format('Image%03d.bmp',[I]) かな?
187デフォルトの名無しさん:2007/10/27(土) 16:41:29
>>181
閉じたいウィンドウは子ウィンドウなの?
子ウィンドウは FindWindow では検出されないよ。
FindWindowEx を使う。

>>183
同じものなら複製する必要無いと思うのですが。
188デフォルトの名無しさん:2007/10/27(土) 22:56:32
>>180
>>182
サンクス。
これで安心出来ました。

2007届いたんだけど・・・
ユーザー登録出来ない・・・
日本語で書いてくれーーー(ww
189デフォルトの名無しさん:2007/10/28(日) 01:12:18
2007だけど・・・
DSKファイルが無い・・・
代わりに何を消せばいいの?
190デフォルトの名無しさん:2007/10/28(日) 04:33:06
もうすぐユニコードに対応した2008が出るというのに…
191デフォルトの名無しさん:2007/10/28(日) 08:40:07
ユニコード対応なんてイラネ
192デフォルトの名無しさん:2007/10/28(日) 14:25:01
>188
CDNのアカウントを作成するところからスタート。
193デフォルトの名無しさん:2007/10/28(日) 20:22:14
for i:=1 to 50 do
begin
 x:=x+5;
 y:=y+5
 Canvas.Rectangle(x,y,x+10,y-10);
end;

このようなプログラムで実行してみると、残像が残ってしまうのですが、残像を残らないようにする方法ってありますか?
194デフォルトの名無しさん:2007/10/28(日) 20:25:01
背景色で塗りつぶしてから新しく描けばいい

画面がちらつくんですがどうしたらいいんですか?
195デフォルトの名無しさん:2007/10/28(日) 21:03:23
>>191
×イラネ
○俺には扱えね

でしょ?(笑)
196デフォルトの名無しさん:2007/10/28(日) 21:48:33
>>190
VISTAで動かねーなんて今頃言われてビビッて注文してしまった・・・
キャンセル不可の注文した後で旧delphiのソフトでもちゃんと動くのも発見したけど、あとの祭り(ww
でもちゃんと動かないのもあるので、ま、よしとしよう・・・
197デフォルトの名無しさん:2007/10/28(日) 21:49:49
>>192
登録が英語で何を書いていいかわからない(ww
Company:<会社名?
State/Province: ???
Zip/Postal Code: ???
Country: <これが国名か?
Language: <日本語か・・・
取り合えず、住所と名前だけでユーザー登録させて欲しいよな(ww
198デフォルトの名無しさん:2007/10/28(日) 21:52:33
ziipも知らずにプログラムを書いてるのかwwwwwwwwwwwwwww
199デフォルトの名無しさん:2007/10/28(日) 22:00:32
2007は、プロジェクトの上にプロジェクトグループが出来た。
プロジェクト開いていたら、みんな同一のプロジェクトグループに登録されていた。
プロジェクトグループ内のプロジェクトは、一括でコンパイルできてびっくりした。
でも同一のプロジェクトグループに登録する必要はないから分けたけど・・・

あ、ボタンを貼り付けたいんだけど、どこにあるか分からない(ww
リストとか、どこにあるんだろ?
まだ慣れるまで時間がかかりそう・・・
200デフォルトの名無しさん:2007/10/28(日) 22:06:31
>>198
あ、ド素人だもん(ww
BASICの延長ぐらいの使い方しかしていない
不要な機能満載。
簡略版を安値で出してくれると嬉しいのだが・・・

赤福の後だけに、さすがにアカデミーパックは買えなかった(ww
201デフォルトの名無しさん:2007/10/28(日) 22:09:24
>>200
圧縮形式のzipに掛けて釣ったつもりだった
今は反省している
202デフォルトの名無しさん:2007/10/28(日) 22:42:41
>>198
ziipはオレも知らん。教えてくれ。
203202:2007/10/28(日) 22:44:44
204デフォルトの名無しさん:2007/10/28(日) 22:45:58
205デフォルトの名無しさん:2007/10/28(日) 23:11:40
>>196
Vistaのサービスパックが出たら2008に買い替えないと、2007じゃプログラムが暴走するんだぜ?
で、最悪パソコンが壊れる。
206デフォルトの名無しさん:2007/10/28(日) 23:38:00
>197
Company 会社
State/Province 州または郡、県(日本なら都道府県)
Zip/Postal Code 郵便番号(USでは郵便番号をZIP codeという)
Country 国

ってか中学生レベルだろ、このくらい。exciteとかalcとかで訳すという手もあるし。
207デフォルトの名無しさん:2007/10/29(月) 00:15:39
>>201-206
大感謝。
これで、ユーザー登録できる。
訳して頂いたら、超ド級の素人質問だと分かった(ww
うーん、英語嫌い・・・
208デフォルトの名無しさん:2007/10/29(月) 00:19:33
動かないソフトの原因が分かった。
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\
ここの書き込みに失敗していて
エラーをフォローしていなかったので停止しちゃったらしい・・・
VISTAだと、ユーザー権限とかいるのかな?
XPまでは問題無かったのに・・・
209デフォルトの名無しさん:2007/10/29(月) 00:44:14
>>207
お蔭様で、2007のユーザー登録完了しました。
大感謝。
210デフォルトの名無しさん:2007/10/29(月) 04:19:57
TStringListについて質問。 以下のソースを書いてコンパイルしたら
「[警告] Unit1.pas(1234): 変数 'st' は初期化されない場合があります」 と怒られてしまいました。

procedure TForm1.Button1Click(Sender: TObject);
var st:TStrings;
begin
try
st := TStringList.Create;
st.Text := 'あいうえお';
finally
st.Free;
end;
end;

stを初期化すればいいのかと思って st.Clear; を Create の次の行に入れてみたりしたのですが
警告が消えてくれませぬ。 こういう場合どうしたらいいのでしょうか。
211デフォルトの名無しさん:2007/10/29(月) 04:40:21
procedure TForm1.Button1Click(Sender: TObject);
var st:TStrings;
begin
st := TStringList.Create;
try
st.Text := 'あいうえお';
finally
st.Free;
end;
end;
212デフォルトの名無しさん:2007/10/29(月) 04:45:27
var st:TStrings;
213210:2007/10/29(月) 04:50:16
>>211
ありがとうございます、本当にありがとうございます。

いろんなサイトを見ても原因が分からなかったのですが、tryと順序が逆だったことには
まったく気付きませんでした。orz おかげさまで 「初期化されない場合が〜」 地獄から脱出出来ました、多謝。m(_ _)m
214デフォルトの名無しさん:2007/10/29(月) 08:40:14
>>213
try〜finallyはtry内部で例外が起こってもfinallyで確実に処理をするためのもの
TStringList.Create等のコンストラクタで例外が起こった場合自動的に内部でデストラクタが呼ばれるため、
try内に書いて例外が起きた場合にfinallyのstはすでに解放された後となってしまう
なので初期化されない場合が起こり得る
215デフォルトの名無しさん:2007/10/29(月) 08:47:01
インスタンスの開放云々というより
stへの代入前にfinallyに飛ぶ可能性があるってことやね。
216デフォルトの名無しさん:2007/10/29(月) 11:37:36
それはないだろ
>>210読めよ
217デフォルトの名無しさん:2007/10/29(月) 11:50:45
それはないだろ
>>210読めよ
218デフォルトの名無しさん:2007/10/29(月) 15:35:15
>>214の説明だと、
st := nil;
try
 st := TStringList.Create;
でも二重に開放されることになる。
219デフォルトの名無しさん:2007/10/29(月) 16:13:42
一つのImageをいろんな場所で使えるようにする方法ってありますか
220219:2007/10/29(月) 16:27:01
いろんな場所という表現はちょっとわかりづらいですね。
Form内で同じ画像を複数個使用したいということです。
221デフォルトの名無しさん:2007/10/29(月) 16:58:04
複数のImageコンポーネントを使う
ひとつのImageコンポーネントを大きくしてCopyRectする
222デフォルトの名無しさん:2007/10/29(月) 20:19:23
>>219
TPaintBox を貼り付けて OnPaintで Draw すればいいと思うよ
223デフォルトの名無しさん:2007/10/29(月) 22:11:58
Assign のことか?
224223:2007/10/29(月) 22:12:57
>>221 が知りたいのは。(倒置法)
225デフォルトの名無しさん:2007/10/29(月) 22:45:24
TImage と「画像」を混同してるのが原因。
画像は一つ。TImageは複数。なんの問題もない。
226デフォルトの名無しさん:2007/10/29(月) 23:09:06
TBitmapに画像入れて、Form.Canvas.Draw(X, Y, Bitmap)
で描画できるよ。
227デフォルトの名無しさん:2007/10/29(月) 23:16:35
Delphiで作ったDLLからcdeclでPcharを返そうとすると4Kbyteを越えた辺りで
返ってくる文字列の末尾がおかしくなり始め、数十Kとかいくと、呼び出し側のアプリが落ちてしまうんですが何なんでしょう?
値を返した後に呼び出し側が受け取る前にメモリの寿命が尽きてるんでしょうか?
228デフォルトの名無しさん:2007/10/29(月) 23:45:55
>Delphiで作ったDLLからcdeclでPcharを返そうとすると4Kbyteを越えた辺りで
こんな仕様・制限はあるわけがない。
頑張ってデバッグするか最小の再現コード晒すかしろ。
229デフォルトの名無しさん:2007/10/30(火) 00:21:10
library BW_StrLib;
uses
Windows,Forms,SysUtils;
{$R *.RES}
function Test(const strTextIn:Pchar):Pchar;cdecl
var
ls_result : AnsiString;
li_len : integer;
begin
li_len := Length(strTextIn);
SetLength(ls_result,li_len);
ls_result := strTextIn;
Result := Pchar(ls_result);
end;
exports
Test name '?Test';
begin
end.

こんな感じです。
ホントは色々処理があったけどこれでも同じく落ちました。
230デフォルトの名無しさん:2007/10/30(火) 00:29:15
スタックで宣言した文字列を返してないか?
たとえば、
function DLLGetStr: PChar;
var
 S: string;
begin
 S := IntToStr('12345');
 Result := PChar(S);
end;
231230:2007/10/30(火) 00:37:15
あ、ビンゴでしたね。 
Test の end で ls_resultは開放されるよ。
だから、呼び出し元ではすでに無効。 4KBというのはページングの単位だから。
代入は ls_result := strTextIn だけでいいよ。
で、解決方法は、代入用のバッファをアプリ側で用意してDLL側に渡し、
DLL側でコピーする。 WindowsAPIはそうやってやってます。
232デフォルトの名無しさん:2007/10/30(火) 00:43:27
呼び出し側でバッファを用意するのが難しそうですがやってみます。
ありがとうございました。(^^)/
233デフォルトの名無しさん:2007/10/30(火) 00:49:53
うむ・・・・Labelを100個(Label1〜Label100まで)作ってそれぞれtest[1]〜test[100]までの値を代入したいのですが、for文使ってできますか?

Label1.Caption:=test[1];

Label100.Caption:=test[100];

これをどうにかしてfor文でやりたいんですが・・・
234デフォルトの名無しさん:2007/10/30(火) 00:55:19
FindComponent
235デフォルトの名無しさん:2007/10/30(火) 00:59:58
こことか参考になるのでは?
ttp://www.wwlnk.com/boheme/delphi/vbtodel/vbfaq/vbd0130.htm
236デフォルトの名無しさん:2007/10/30(火) 01:00:04
>>234
どもです。。
237デフォルトの名無しさん:2007/10/30(火) 01:01:08
リストの中に入れとく方が楽
238デフォルトの名無しさん:2007/10/30(火) 21:01:18
フォームが不要なので、コンソールアプリケーションを作成しましたが、
コンソールウインドウが一瞬チラッと出てしまいます。

これが出ないようにするにはどうすればよろしいでしょうか?

開発環境はDelphi6.0Proです。
239デフォルトの名無しさん:2007/10/30(火) 21:03:18
ディスプレーの電源を切る
240デフォルトの名無しさん:2007/10/30(火) 21:19:48
{$APPTYPE CONSOLE}
241デフォルトの名無しさん:2007/10/30(火) 21:51:22
>>231
ちょっと気になったのですがメモリが開放されると言っても
ページングサイズ以下の文字列や数値は229のソースでも戻り値を保障されるのでしょうか?
242デフォルトの名無しさん:2007/10/30(火) 22:52:25
>>238
プログラムユニットから240を排除する。
243デフォルトの名無しさん:2007/10/31(水) 00:52:48
プログラムユニットってなんですか?
244デフォルトの名無しさん:2007/10/31(水) 00:56:20
プロジェクトファイル(*.dpr)のことである。
245デフォルトの名無しさん:2007/10/31(水) 01:12:08
>>241
Word型やLongInt型の数値はレジスタで返されるのでメモリ開放とは関係ない。
文字列については保障されないでしょ。

var S: string;
 S := Test(xxx);
のように、すぐにコピーする場合、
DLL側のメモリマネージャが開放されたメモリをOSに返すと問題になるけど、
保持したままだと、AVは出ないんじゃないかな。
ページングサイズは関係ないかも。 サイズが大きくなると、
それだけOSに返しやすくなるのかも。

でも、
P: PChar;
P := Test(xxx);
で受け取って、Pを使いまわしていると、DLLで何かメモリ操作すると
すぐにおかしくなりそう。

あと、4KB以下と決まってるなら配列で返す手がある。
コピーが二回発生するから遅くなるけど、最近のPCなら問題ないでしょう。
でも、そういうコードあまり見ません。
DLL側をグローバル変数の文字列にして、そのアドレスを返す手もありますね。
すぐにコピーしないと危険ですが。
246デフォルトの名無しさん:2007/10/31(水) 01:29:42
ぐだぐだ考えるより、APIと同じように呼び出し側でバッファを用意すべき
247ななしへたぐらま ◆XcB18Bks.Y :2007/10/31(水) 19:37:43
Delphi 2006の無料版でADOでTADOQueryを使ってテーブルを新規作成しようとしているのですが
以下のようなエラーになってうまくいきません。

---------------------------
デバッガ例外通知
---------------------------
プロジェクト xxxxxxxx.exe は例外クラス EOleException (メッセージ 'ファイル '《中略。実行ファイルのあるディレクトリ》\temp_xxxxx.mdb' が見つかりませんでした。')を送出しました。
---------------------------
ブレーク(B) 継続(C) ヘルプ
---------------------------

主なプロパティの値はこんな感じです
・ConnectionString
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=temp_xxxxx.mdb;Persist Security Info=False です
・SQL
CREATE TABLE temp_awkcp (ORIGINAL_NO INT, CODE VARCHAR(40), 《中略》 EXPRESSION VARCHAR(80));

ADOでのテーブル新規作成については根本的なところが全く分からないのですが
検索を掛けても情報が出てこないので質問した次第です。
248デフォルトの名無しさん:2007/11/01(木) 04:19:37
>>247
createdatabase
249デフォルトの名無しさん:2007/11/01(木) 16:40:47
バリアント型の多次元配列をやり取りしたいのですが、
動的配列とバリアント配列(Safe配列)どちらがお勧めでしょうか?
250デフォルトの名無しさん:2007/11/01(木) 23:17:39
自分が扱いやすいと思った方
251ななしへたぐらま ◆XcB18Bks.Y :2007/11/02(金) 00:08:33
>>248
ありがとうございます。
どのデータベースを使うかを書いていなかったので大失敗だったのですが
おかげさまで問題を解く鍵になりました。
252デフォルトの名無しさん:2007/11/02(金) 08:32:51
くだすれ41に出てきたCSVの人と似たような仕様のを作りたいんですが、
数値オンリーのCSV(1000〜2000行、2列)を
二次元配列x:double に放り込んでいくところで挫折しました。
マイナスの値もあるので、難しいです。
コード例等を示してもらえませんか?
253252:2007/11/02(金) 09:01:33
くだすれ41に出てきたコードを使ってみました

1,11
2,12
3,13
4,14
5,15
6,16
7,17
8,18

というcsvデータを入力すると
254252:2007/11/02(金) 09:02:19
1,2
11,12
2,3
12,13
3,4
13,14
4,5
14,15
5,6
15,16

のように解釈されていました。
255252:2007/11/02(金) 09:03:17
例のコードです。

procedure SkipBlank(var p: PChar); //空白ならスキップする
begin
while p^ in [#7, ' '] do inc(p);
end;

function GetDotNum(var ptr: PChar; var retVal: Extended): boolean;
var
s: string;
DotCnt: Integer;
Minus: boolean;
p: PChar;
begin
Result := false;
p := ptr; SkipBlank(p); if p^ = #0 then exit;
DotCnt := 0; Minus := false;

if p^ in ['+', '-'] then
begin minus := p^ = '-'; inc(p); SkipBlank(p); end;
while true do
case p^ of
'0'..'9': begin s := s + p^; inc(p); end;
'.': begin inc(DotCnt); if DotCnt >= 2 then break; s := s + p^; inc(p); end;
else break;
end;
if s <> '' then begin
ptr := p; retVal := StrToFloat(s); Result := True;
if minus then retVal := -retVal;
end;
end;
256252:2007/11/02(金) 09:04:12
procedure TForm1.Open1Click(Sender: TObject);
var
SL: TStringList; i, j, k: integer; nam: string; dt: Extended;
p: PChar;
begin
if opendialog1.Execute then
begin
for k := 0 to High(x) do
begin
x[k][0] := 0 ;
x[k][1] := 0 ;
end;
SL := TStringList.Create;
try
nam := OpenDialog1.FileName;
SL.LoadFromFile(nam);
for i := 0 to SL.count - 1 do
begin
p := PChar(SL.strings[i]);
for j := 0 to 16 do
begin
if p^ = #0 then break;
if not GetDotNum(p, dt) then break;
SkipBlank(p);
x[i][j] := dt;
if p^ = ',' then inc(p) else
if copy(p, 1, 2) = ',' then inc(p, 2) else break;
end;
end;
finally SL.free end;
end;
end;
257デフォルトの名無しさん:2007/11/02(金) 13:00:41
CommaText
258デフォルトの名無しさん:2007/11/02(金) 13:05:38
CSVの入出力はもうFAQの部類だと思うけどな。
var
I, J: Integer;
 Line, Lines: TStrings;
begin
 -- ごにょごにょ --
 Line.QuoteChar := '"'; // 引用文字
 Line.Delimiter := ','; // 区切り文字
 for J := 0 to Lines.Count - 1 do
 begin
  Line.DelimitedText := Lines[J];
  for I := 0 to Line.Count - 1 do
   X[J,I] := StrToInt(Line[I]);
 end;
end;
259デフォルトの名無しさん:2007/11/02(金) 13:30:10
>>258
CommaText プロパティは,区切り文字が ',',引用符が '"' の DelimitedText プロパティと同じです。
260252:2007/11/02(金) 14:22:54
ありがとうございます。
QuoteCharとDelimiterというプロパティの表現が気味悪いというか、
理解に苦しんでいるんですが、
読み込み元のファイルにQuoteCharがあるとどういう動作をするのでしょう?
Line.DelimitedTextにコンマで区切られた一行の文字列をぶち込むと
Lineの内部に配列が生成されて、Line[0]と指定すれば配列の[0]番を取り出せるという解釈で
合ってますか?
261デフォルトの名無しさん:2007/11/02(金) 15:45:30
実際にコードを書いてそういう動作をしたならそういうことでしょう
262デフォルトの名無しさん:2007/11/02(金) 16:02:12
>>259
俺に言うなよ。んなこたぁ知ってる。
>>260
そんな感じ。まぁ、QuoteCharは例えば、カンマ区切りのCSVの場合、要素にカンマ自体
が含まれてると、区切りのカンマか、要素の単なる文字としてのカンマが区別つかない
ことがあるから、引用文字で引用?エスケープする。
まぁ、どんな動作かは、読み込みじゃなくて書き込みでQuoteCharとDelimiterを変えて、
どんな出力になるか見たほうが理解しやすいかも。

263デフォルトの名無しさん:2007/11/02(金) 17:23:51
>>262
変えたらどうなるか説明してください
264デフォルトの名無しさん:2007/11/02(金) 17:27:13
vb.NETの2003から TurboDelphiに移行して数日、色々やっている中、どうしてもわからないので教えてください。

集合型を宣言した変数の中に、特定の識別子が含まれているかどうかをif分を使って判別するコードについてです。
if 識別子 in 変数 then
 begin
 含まれる場合
 end;
else
 begin
 含まれない場合
 end;
というところまでは理解できたのですが、含まれていないことを判別する為にはどうすればよいでしょうか?
inを否定する関係演算子を探したのですが見つからないです。

VBで言うところの
if not 識別子 in 変数 then
 含まれていない場合
end if

ということをやりたいのですが。
かなり初歩的な質問で申し訳ないです。

if 識別子 in 変数 then else
 begin
 含まれない場合
 end;
という形でやんないと、駄目ですかね?

よろしくお願いします。
265デフォルトの名無しさん:2007/11/02(金) 17:35:06
識別子 in 変数 の結果はBoolean型だから
if not (識別子 in 変数) then
266デフォルトの名無しさん:2007/11/02(金) 17:46:40
参考:演算子の優先順位
ttp://wblue.web.infoseek.co.jp/lec/fd/02/0301.htm
267デフォルトの名無しさん:2007/11/02(金) 17:52:13
THX

ここ2時間の苦労が物の数分で解けました。
268デフォルトの名無しさん:2007/11/02(金) 18:19:57
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を
勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが
お礼はDelphiの布教と初心者の救済をお願いします。
269252:2007/11/02(金) 21:10:47
>>262
やっとDelphiいじれる時間になったので
いろいろ変えてやってみます。
270252:2007/11/02(金) 21:51:13
疑問が解決したのでご報告します。
>>254に書いたように配列の並びがおかしくなっていた原因は、
StringGridの行と列の表現が自分の使っていた二次元配列のものと反対になっていたからでした。
271デフォルトの名無しさん:2007/11/02(金) 21:58:54
くだらねぇ・・・

って、スレどおりか
272デフォルトの名無しさん:2007/11/03(土) 02:16:07
やっぱり再現可能な最小コードを出さないと。
273デフォルトの名無しさん:2007/11/03(土) 05:48:13
TFormのPositionを最初からpoScreenCenterにしたくても
アプリ起動時に設計時の位置に一瞬表示されてから画面中心に移動するんですが
これはどうやれば回避できますか?
274デフォルトの名無しさん:2007/11/03(土) 06:56:46
Indy は非同期じゃないから使えねーとかいってるやつって馬鹿?
そもそもWinsockの非同期モードなんてマルチタスクのないWindows3.1用に設計されたものなのに・・・
しかもIndyにはTIdAntiFreezeなんていう便利なものまでついてるのに。
無知も大概にせーよ。
275デフォルトの名無しさん:2007/11/03(土) 07:10:06
そもそもスレッド化すればいいだけの話なのにね。
276デフォルトの名無しさん:2007/11/03(土) 08:32:16
277デフォルトの名無しさん:2007/11/03(土) 08:35:57
同胞のDelphiファンが一人減ったか・・・残念。
天国からDelphiを見守ってください。
278デフォルトの名無しさん:2007/11/03(土) 08:45:29
>>273
したくてもってどういうこと?
少なくてもOnShowより前にセットすればそんなことはないと思うけど。
279デフォルトの名無しさん:2007/11/03(土) 09:24:39
>>278
書いた後に気付きましたが、初期化にちょこっと時間がかかるアプリなんで
起動完了するまでの内部的なゴタゴタのときに一瞬だけ設計時の位置に表示されてる気がします
どっかに設計時のウィンドウ位置が保存されてんですかね
280デフォルトの名無しさん:2007/11/03(土) 09:31:32
>>279
疑わしいとこが分かってるなら
ブレークポイントしかけるなりしてデバッグしなよ。
情報を小出しにするのはイクナイ。
281デフォルトの名無しさん:2007/11/03(土) 09:51:56
>>280
初期化に時間がかかってる云々はこの際関係ないのです
ただ、設計時にpoScreenCenterにしてるのに起動時に一瞬移動するのが見えるのはおかしいだろうと
そこが疑問だったわけです
delphiの仕様でそうなってしまうのかな、とか
282デフォルトの名無しさん:2007/11/03(土) 10:15:01
ならんよ。初めて表示される前に移動は終わってる。(バージョンによって動作が変わってるなら知らないけど)
なんかの処理の副作用とかで、通常表示されるタイミングより前に表示しちゃってるんでないの。
283デフォルトの名無しさん:2007/11/03(土) 11:12:52
>>281
もしそんな仕様だったらお前の前に気付いてる人が何万もいるだろうとは考え付かなかったのか?
284デフォルトの名無しさん:2007/11/03(土) 12:29:49
RadioGroupで選択を終えたあと、エンターキーを押すと、
次のタブ(ボタンやテキストボックス)へ移動させたい場合、どのようにしたらいいですか?。
テキストボックスだと、OnKeyPressのイベントで仮想キーを送ればいいのですが、
RadioGroupだと、それらしきイベントが無くてわかりません。
285デフォルトの名無しさん:2007/11/03(土) 12:36:22
FormのKeyPreviewをTrueにしておいてFormのOnKeyPressで処理、だったかな?
286デフォルトの名無しさん:2007/11/03(土) 12:47:58
>>284
ありがとうございます。
KeyPreviewとOnKeyPressをGoogleで調べてみます
287DEKO ◆v8todlW3ks :2007/11/03(土) 15:00:15
>>281
ttp://homepage1.nifty.com/ht_deko/tech010.html#tech034
この件と関係ありますか?
288デフォルトの名無しさん:2007/11/03(土) 17:31:06
delphi6で作ったprojectをturbod delphidで作りなおそうと思ったら、
エラーだらけで、編集は無理そうなんですが、
変換とか何か良い方法はないでしょうか? 教えてください。
289デフォルトの名無しさん:2007/11/03(土) 17:53:23
>>288
ここはdelphiスレなのでturbod delphidスレでお聞きください
290デフォルトの名無しさん:2007/11/03(土) 17:59:24
俺がdelphi6で作ったプロジェクトは何の問題もないみたいだ
291デフォルトの名無しさん:2007/11/03(土) 18:30:37
>>288
エラーはなに?
292デフォルトの名無しさん:2007/11/04(日) 03:52:19
コンポを登録してないんじゃないの
293デフォルトの名無しさん:2007/11/04(日) 13:42:20
うんこもりもり
294デフォルトの名無しさん:2007/11/04(日) 17:49:42
えー、瑠瓏さんって、亡くなっちゃったのか…

まだ若いはずだろ?ショックだ。
295288:2007/11/04(日) 21:36:07
>>288です
>>291
TShellTreeViewでエラーが出ます。
何か名前が変わったのか、変わりになるものがありますでしょうか?
296デフォルトの名無しさん:2007/11/04(日) 21:56:49
ない
297DEKO ◆v8todlW3ks :2007/11/04(日) 22:42:00
>>295-296
Shell系コンポーネントはiPentecさんとこに解説があります。
ttp://www.ipentec.com/delphi/delphi2007/shell/index.html
参考にしてみて下さい。
298DEKO ◆v8todlW3ks :2007/11/04(日) 22:51:00
>>297
失礼しました、D2007ではなくTurboの話なのですね。
Turboは未確認ですm(_ _)m
299デフォルトの名無しさん:2007/11/04(日) 23:06:04
>295
どういう局面でどういうエラーが出るの?
300DEKO ◆v8todlW3ks :2007/11/04(日) 23:22:46
>>295
BDS2006だと
%ProgramFiles%\Borland\BDS\4.0\Demos\DelphiWin32\VCLWin32\ShellControls
にShell系コンポーネントがありますので
>>297と同じ手順でインストール可能なのですが...。

# Turboはどうなのでしょう?
301デフォルトの名無しさん:2007/11/05(月) 00:53:23
Turboも同じ
但し、無料版はコンポのインスコは出来ない(事になっている)というのがあるけど
302288:2007/11/05(月) 06:43:37
>>297>>298>>300
ありがとうございました。
無料版のためインスコできませんでした… orz
303デフォルトの名無しさん:2007/11/05(月) 07:53:32
116 名前:デフォルトの名無しさん[sage] 投稿日:2006/11/04(土) 17:25:13
ttp://beeography.wordpress.com/2006/09/12/just-wanna-let-you-know/
ここに書いてある方法でTurbo Exprorerでも合法にコンポ入れれるよ

117 名前:デフォルトの名無しさん[sage] 投稿日:2006/11/04(土) 18:02:21
あとこれ。
dclusr経由のコンポーネントインストールが、ライセンス違反かどうかの話。
ttp://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200609/06090014.txt
304デフォルトの名無しさん:2007/11/05(月) 15:24:13
動的
305デフォルトの名無しさん:2007/11/05(月) 20:58:24
こんばんわ。Delphi7なのですが、WideStringの文字列の中に半角の英数字が
含まれているか、というチェックと、全角の英数字が含まれているかという
チェックしたいのですが、どのような方法があるでしょうか。
306デフォルトの名無しさん:2007/11/05(月) 21:52:17
AnsiString に代入して長さ比べる
307デフォルトの名無しさん:2007/11/05(月) 22:10:06
sscanfの代わり有りませんか?
308デフォルトの名無しさん:2007/11/06(火) 00:18:47
>>302
> 無料版のためインスコできませんでした… orz
「無料厨は有料版を買え」と、暗に言いたいんでしょうなあ。

>>303
Updateかけると無効だから、それ。
309デフォルトの名無しさん:2007/11/06(火) 00:41:47
>>308みたいな書き込みする人って偉そうでムカつくよね♪
310デフォルトの名無しさん:2007/11/06(火) 01:13:01
>>305
一文字ずつ調べたらいい。
311デフォルトの名無しさん:2007/11/06(火) 08:05:40
>>308
うちではUpdateかけてもできてるけど。
よくよむとよいよ。
312デフォルトの名無しさん:2007/11/06(火) 14:35:50
>>311
Updateかけると無効だから、それ。
313デフォルトの名無しさん:2007/11/06(火) 17:22:50
コマンドライン引数で指定されたCOMオブジェクトを
動的にインスタンス作成・操作するツールを作っています。
CreateOleObjectを使うことでプロパティの取得・設定とメソッドの呼出はできたのですが、
COMオブジェクトから発行されるイベントを捕まえる方法が分かりません。

VB6ではwitheventsを使うことで、
C++ではATLを使ったサンプルを↓で見つける事ができたのですが
 ttp://www.s34.co.jp/cpptechdoc/misc/comevent/index.html
Delphiではどのように実装すればいいのでしょうか?

分かる方がいたら教えてください。
環境はWinXP+Delphi2005です。
314デフォルトの名無しさん:2007/11/06(火) 22:08:32
>>312
当局が必死で否定したい気持ちは分かるが、できてんだから仕方ない。
315デフォルトの名無しさん:2007/11/07(水) 09:05:55
>>313
つまり、スクリプトのようなのを作っていて、
コンパイル時にはどんなプロパティがあるか判らない状態って事だよね?
GetTypeInfo・GetVarDescで舐めてゆくか EnumDispatchPropertiesでイベント型を調べてゆくしかないんじゃないの?
316313:2007/11/07(水) 11:33:49
>>315
すいません、説明が不十分でした。
呼び出される可能性のあるCOMオブジェクトは全て同じ名前のプロパティ・メソッド・イベントを持っています。

具体的に書くと
・プロパティ:DataType
・メソッド:DataConvert
・イベント:DataChenged
と実装されているCOMオブジェクトが複数あり、その中の1つを選んで使用しようと思っています。

var
 object: Variant;
begin
 CoInitialize(nil);

 object := CreateOleObject(ParamStr(1));

 object.DataType := 1;
 object.DataConvert();

 object := unassigned;

 CoUninitialize();
end;

上記のコードで特定のCOMオブジェクトをインスタンス化し
DataTypeプロパティの設定とDataConvertメソッドの呼出はできたのですが、
DataChangedイベントを受け取る方法が分からなかったため質問させて貰いました。

改めてよろしくお願いします。
317デフォルトの名無しさん:2007/11/07(水) 12:25:36
>>316 インターフェースが同じなら   xxTLB.pas を作成させたらどう?
D7までならメニューのプロジェクトから[タイプライブラリの取り込み]
最近のはTLIBIMP(タイプライブラリインポート)ツールってのがついてるそうだ
318デフォルトの名無しさん:2007/11/07(水) 12:31:18
よろしくお願いします。
WebBrowser内で、クリックやダブルクリックされたかどうかを知りたいのですが、
OnClickやOnDblClickに相当するイベントが無いようです。
何か方法はあるでしょうか?
319313:2007/11/07(水) 15:03:07
>>317
レスありがとうございます。

タイプライブラリの取り込みを試してみましたが
GUID等が固定になっているため、COMオブジェクトの数だけ取り込みを行う必要があり、
また、将来的に使用するCOMオブジェクトの数が増えたり、
内部プロパティやメソッドが増えてdispidが変わる可能性があるため
このままでは使えそうにありませんでした。

IUnkownへ参照とイベント名、用意したイベントハンドラ関数へのポインタを渡せば
イベント発生時にイベントハンドラ関数が呼び出されるような仕組みがあればいいのですが・・・

とりあえず取り込んでみたTLBファイルを眺めて調べてみます。ありがとうございました。
320デフォルトの名無しさん:2007/11/07(水) 16:10:27
>>318
メッセージを見れ
321デフォルトの名無しさん:2007/11/07(水) 16:50:20
>>316
こんな事なのかな?
http://dn.codegear.com/jp/article/27126
322318:2007/11/07(水) 16:53:09
>>320
ありがとうございます。
もう少し詳しく書いていただけると凄く助かります……。どうもすみません。
323313:2007/11/07(水) 17:58:41
>>321
教えていただいたサイトのサンプルと取り込んだTLBファイルを参考にすればなんとかなりそうです。

ありがとうございました。
324デフォルトの名無しさん:2007/11/07(水) 18:55:23
初歩過ぎてすいません。

配列の宣言数の取得ってどうすればよいのでしょう?
325デフォルトの名無しさん:2007/11/07(水) 19:32:10
宣言数って何?要素数ならLengthじゃないかね。
326デフォルトの名無しさん:2007/11/07(水) 21:15:05
要素数の間違いでした。

配列.Length

でいいんですかね?
327デフォルトの名無しさん:2007/11/07(水) 21:23:57
いや、help見た?配列はJavaとちがってクラス型のオブジェクトではない。
Lengthは関数だ。Length(配列)
328デフォルトの名無しさん:2007/11/07(水) 21:37:15
普通はHigh(配列)
329デフォルトの名無しさん:2007/11/07(水) 22:05:40
>>328
何と勘違いしたのか分からないが、Delphiの場合それは要素数にならない
330デフォルトの名無しさん:2007/11/07(水) 22:06:01
要素数にHighはないだろ・・・
331デフォルトの名無しさん:2007/11/07(水) 22:09:59
普通はHigh(笑)
332デフォルトの名無しさん:2007/11/07(水) 22:13:39
うわ。SetLengthの前に書いてある。
すいません、めちゃくちゃ見落としてました。
333デフォルトの名無しさん:2007/11/07(水) 23:00:05
てすと
334デフォルトの名無しさん:2007/11/07(水) 23:00:43


/ ┌────┐
└─┤ │
│ ┃ ┃ │
│ │
│ ┃ │
└────┘
335デフォルトの名無しさん:2007/11/07(水) 23:09:58
Length(配列)
336デフォルトの名無しさん:2007/11/08(木) 00:01:48
High(配列)-Low(配列) + 1
337デフォルトの名無しさん:2007/11/08(木) 00:13:04
>>336
Highが返す値は必ずしも整数とは限りません
338デフォルトの名無しさん:2007/11/08(木) 00:33:44
はい。
339デフォルトの名無しさん:2007/11/08(木) 00:42:41
Ord(High(配列))-Ord(Low(配列)) + 1
340デフォルトの名無しさん:2007/11/08(木) 01:22:15
>>298,300
お前知っててわざとやってるだろ?>Turboにコンポインスコ不可

>>334
バーヤバーヤ
341デフォルトの名無しさん:2007/11/08(木) 01:28:01
普通のTurboにはコンポインストールできるよ。できないのは無償のやつだけ。
342デフォルトの名無しさん:2007/11/08(木) 02:46:45
delphi4のdcc32.exeで実行時パッケージを使わないでビルドできないのですが、
どうしたらよいのでしょう?
ヘルプにはIDEのオプションが適用されるようなことが書かれていましたが、
そうなりませんでした。 
343デフォルトの名無しさん:2007/11/08(木) 02:46:53
>>337
別にHighが-1返したって、要素数という意味では
High(配列) - Low(配列) + 1

0になるから問題ないじぇねぇかよ。
344DEKO ◆v8todlW3ks :2007/11/08(木) 03:01:44
>>340
"Turbo"としか書いてないのに製品版と無償版が判断できる訳ないでしょうが。
だから>>301のヒトもあんな書き方してるんじゃないか。

# アナタの中では"Turbo"と言ったら"Explorer"しかない訳?
345デフォルトの名無しさん:2007/11/08(木) 03:03:10
いや、というより、
A: array [-5..3] of Integer;
High(A) - Low(A) + 1
3 - (-5) + 1 := 8
のことか。High(A) - Low(A) + 1 でなんか問題ある?
346デフォルトの名無しさん:2007/11/08(木) 03:04:25
3 - (-5) + 1 := 9
ね。
347デフォルトの名無しさん:2007/11/08(木) 03:15:04
>>344
> "Turbo"としか書いてないのに製品版と無償版が判断できる訳ないでしょうが。
じゃ、質問に答える前に、なんで相手の環境を聞かないんだ?
「あなたの使っている"Turbo"は、製品版ですか?それとも無償版ですか?」と。

まあどっちにしろ、DEKO が釣りやすいというのは本当のようだ。
348デフォルトの名無しさん:2007/11/08(木) 03:32:43
-1 だって整数というんだよww
349デフォルトの名無しさん:2007/11/08(木) 03:34:05
可読性に問題がある
350デフォルトの名無しさん:2007/11/08(木) 03:36:09
普通にLength()使えばいいだけ。あほらし
351デフォルトの名無しさん:2007/11/08(木) 03:37:35
>"Turbo"としか書いてないのに製品版と無償版が判断できる訳ないでしょうが。

無償でも製品ですが?
352デフォルトの名無しさん:2007/11/08(木) 07:37:03
>>345
 A: array [(-5,3)] of Integer;
とか
 A:array[(hoge,hage)] of integer;
のような場合はどう?
353デフォルトの名無しさん:2007/11/08(木) 07:46:26
>>352 上のは数値の列挙型というのは無いから文法エラーだろ
354デフォルトの名無しさん:2007/11/08(木) 07:47:13
355328:2007/11/08(木) 08:19:08
Lengthなんて普通使う場面ないよといいたかったのですが言葉足らずでしたね。
エスパーしすぎた?
356デフォルトの名無しさん:2007/11/08(木) 13:41:39
PRec=^TRec;
TRec=record
 val:Integer;
end;
var ARec:TRec;
としたときに、関数の引数で
procedure AProc(R:PRec);
とやったら、呼び出し側は
AProc(@ARec);
じゃダメなのでしょうか。
357デフォルトの名無しさん:2007/11/08(木) 13:56:22
>>356
それで問題ないと思うけど、心配なら

procedure AProc(var R:TRec);

とすればいいんじゃないの。
358356:2007/11/08(木) 14:17:07
>>357
ああ、そうか。なんでわざわざアドレス型にしたんだろ...
イミナシorz
359デフォルトの名無しさん:2007/11/08(木) 14:59:13
普通はHigh君が顔真っ赤にして自演しまくりですね
360デフォルトの名無しさん:2007/11/08(木) 15:03:41
>>355
Q. 要素数の取得ってどうやるの?
A. Lengthなんて使う場面ない

ってエスパー以前に会話が全く噛みあってないだろ
日本語からやり直せ
361デフォルトの名無しさん:2007/11/08(木) 16:37:16
【クリトリスカーソル】精子でクリック おっぱいポインタや月、金玉壁紙、股間等
ttp://mogumond.ninpou.jp/e_sozai/
362デフォルトの名無しさん:2007/11/08(木) 17:31:03
設定ダイアログを作りきれないような細かい挙動を弄る為に
INIファイルに
Form1.Button1.Color=$12345
Form1.Label1.Captionr=hello
Form1.PublishedIntVar=3
みたいに設定して初期化時に値をセットするようなサンプルコードがあったら教えてください。
363デフォルトの名無しさん:2007/11/08(木) 19:04:50
GikoBasicというのがあって、フォームのpublishedなメンバーならアクセス出来たように思う
http://delwiki.info/?%A5%B3%A1%BC%A5%C9%C1%D2%B8%CB%2FGikoBasic
364ななしへたぐらま ◆XcB18Bks.Y :2007/11/08(木) 22:13:54
>>343
Pascalでは配列の添え字としてあらゆる順序型の値が使えます。
(各種の整数型、文字型、論理型を含むあらゆる列挙型をまとめて列挙型といいます)
たとえばこんな宣言もできます。

 var Counts: array ['A'..'C'] of integer;

この場合、High(Counts)は'C'を返します。
一方でPascalはCと違い、整数値と整数以外の順序型の値は厳格に区別されますので上の配列に対して

 High(Counts) - Low(Counts) + 1

とすることができません。
そのため>>339のようにOrd関数を使って整数値に変換する必要がありますが
配列の要素数を得るならLength関数がありますのでこれを使うことになります。
365デフォルトの名無しさん:2007/11/08(木) 23:26:58
そんなこともできたのね。
366デフォルトの名無しさん:2007/11/09(金) 01:11:39
>>343はそもそも-1が整数じゃないと思ってるところに問題がある
367デフォルトの名無しさん:2007/11/09(金) 08:58:45
Highでうまくいきました。ありがとうございました、
368デフォルトの名無しさん:2007/11/09(金) 14:25:51
delphi7のTMemoのOnMouseDownイベントで、SelStartとSelLengthを使って
マウスポインタのある行全てを選択するようにしました。
マウスボタンを押してすぐに離すとうまく選択できているのですが、
ボタンを押し続けていると選択状態が無くなってしまいます。
これを回避する方法がありましたら教えてください。
369デフォルトの名無しさん:2007/11/09(金) 15:07:41
>>367
普通はHigh君、自演お疲れ様です!
370デフォルトの名無しさん:2007/11/09(金) 18:00:17
ステルススイッチを押してビデオキャプチャをしようと思っています。
画面キャプチャは、DSPackのdemoのPlayVideoCapのSnapShot
ボタンを押した時のProcedure(SnapShotClick)を使おうと思って
います。
ステルススイッチは、汎用USBドライバuusb.sysを使おうと思って
いるのですが、データがステルススイッチから送られたのを
検出してSnapShotclick precedureの中身が動くようにするのを
どうやって検出したらいいのかが検討もつきません。
uusb.dllはUSBからの信号をあたかもファイルの読み書きのように
してくれるとの事ですが、どのようにしたら信号をキャッチして
procedureを動かせるようにできますか?
無限ループでずーと信号のありなしをチェックして、信号が
あったらループをでてというのは考えましたが、それだと
他の処理ができないですし...
371デフォルトの名無しさん:2007/11/09(金) 18:17:35
スレッドも使えないのかよカス
372デフォルトの名無しさん:2007/11/09(金) 18:33:38
>>371
てめぇは黙ってろ童貞
何でその歳で女と付き合えないか、少しは真剣に考えろ!
373デフォルトの名無しさん:2007/11/09(金) 20:35:29
> 371,372
TThreadを調べればいいんですね。分からなかったらまたお尋ねさせてください。
ありがとうございました。
374デフォルトの名無しさん:2007/11/09(金) 20:55:33
>>372
ぶざまですね(笑)
375デフォルトの名無しさん:2007/11/09(金) 21:53:57
普通にホットキーじゃだめなのか?
376デフォルトの名無しさん:2007/11/10(土) 00:32:24
いいです
377デフォルトの名無しさん:2007/11/10(土) 01:02:28
>>362
TINIFILE型
リストボックスでも代用できる。
378デフォルトの名無しさん:2007/11/10(土) 01:07:32
>>377
あたまわるすぎてわろた
379デフォルトの名無しさん:2007/11/10(土) 13:16:18
>>362
気に入ったデザインに変えてから右クリック〜エディタで表示
380デフォルトの名無しさん:2007/11/10(土) 13:24:34
Iniファイルの使い方をきいてるんだろ・・・
381デフォルトの名無しさん:2007/11/10(土) 13:25:06
RTTIの使い方じゃね
382デフォルトの名無しさん:2007/11/10(土) 21:36:47
ボタンを押すとreadmeをメモ帳で表示できるようにさせたいんですが、どうすれば出来ますか?
383デフォルトの名無しさん:2007/11/10(土) 21:38:04
>>382
ShellExecute
384デフォルトの名無しさん:2007/11/11(日) 07:54:45
VCで造ってあるdllをDelphiで使用したいのですが、
ヘッダーファイル(*.h)をユニットファイル(*.pas)に変換する
ソフトは見つけましたが、pasにしたあと、includeの代わりになる
命令が分かりません。それとも、つくった中身を
FormCreate Procefureに書き込んでやるのですか?
385デフォルトの名無しさん:2007/11/11(日) 09:48:49
Windows.pas みたいに unit にして uses 文で指定するのをすすめる。
386デフォルトの名無しさん:2007/11/11(日) 10:40:33
> 385
なるほど。ありがとうございました。
387デフォルトの名無しさん:2007/11/11(日) 16:43:00
ちょっとわけあって、TEdit コンポーネントに
TStrings型のプロパティを追加したい。

TCostomEdit を継承した新しいコンポーネントで、
private に FItems: TStrings を追加し、
constructor/destructor で作成/廃棄し、
property Items... を published で宣言するだけじゃダメなの?

オブジェクトインスペクタで、該当する Items を選択して
編集しようとすると、abstract エラーとかが出るんですけど・・・

ちなみにコンポーネントの開発経験はほぼ皆無です。
388387:2007/11/11(日) 16:51:33
>>387
ごめんなさい。
問題なくできました。
389デフォルトの名無しさん:2007/11/11(日) 18:41:31
TStringListじゃなくてTStringsのインスタンスをつくってた、とか?
390デフォルトの名無しさん:2007/11/11(日) 19:37:44
そんな気がする。
TStringsはabstractメソッドを持つ抽象クラスだから
インスタンスを生成しちゃダメ。
宣言はFItems: TStrings;のままで
コンストラクタにはFItems := TStringList.Create;と書くとうまくいくはず。
391デフォルトの名無しさん:2007/11/12(月) 17:43:30
教えてください。
delphiで作成したソフトに認証機能を追加したいのですが、
WindowsXPなどのアクティベーションで使用している
ハードウェアハッシュを取得する方法がありましたら
ご教授願えますでしょうか。
392デフォルトの名無しさん:2007/11/12(月) 18:40:42
スレ違いだと思いますよ
393デフォルトの名無しさん:2007/11/12(月) 19:32:42
TRect型の定数をつくりたい。
たとえば、

const
 RECTFOO = Rect(10,10,200,150);

みたいにしたいのですが、'定数式が必要です'とエラーが出てしまいます。
RectはConstにできないんでしょうか?
394デフォルトの名無しさん:2007/11/12(月) 19:33:37
つ 型付き定数
395デフォルトの名無しさん:2007/11/12(月) 19:55:20
Helpみて試しました
const
RECTFOO: TRect = Rect(10,10,200,150);  がダメ…
RECTFOO: TRect = (Left:10, Top:10, Right:200, Bottom150);もダメ…

いったいどうやるというの?
396デフォルトの名無しさん:2007/11/12(月) 20:05:07
× ,
○ ;
397デフォルトの名無しさん:2007/11/12(月) 20:06:36
つーか本当にヘルプ見たならサンプル出てるはずなのに…
398デフォルトの名無しさん:2007/11/12(月) 20:10:49
>× ,
>○ ;


かいけつしました、どうもありがとう。 うっうっ…
399デフォルトの名無しさん:2007/11/13(火) 09:18:22
エクスプローラのお気に入りメニューみたいに
サブメニューをダブルクリックしたらフォルダを開けるようにしたいのですが
TMenuItemでダブルクリックイベントを取得するにはどうすればいいでしょうか?
400デフォルトの名無しさん:2007/11/13(火) 09:57:49
ちなみにクリックしたらどういう動作をするの?
401デフォルトの名無しさん:2007/11/13(火) 11:24:38
Vista? XPではダブルクリックなんて出来ないけど。
402デフォルトの名無しさん:2007/11/13(火) 14:56:49
XPだけど出来た。
Spyで見るとWM_LBUTTONDBLCLKは来てるから、それに反応すればよさそうだけど、
メニューループ中だから、ローカルフックしないと取れないかも?
403デフォルトの名無しさん:2007/11/13(火) 16:21:24
【Borland Delphi 6 Personal日本語版 入手先】
http://www.vector.co.jp/soft/dl/win95/prog/se205882.html
【Delphi 6 導入手順 】
http://www.wikihouse.com/DelphiVIP/index.php?%C6%B3%C6%FE%BC%EA%BD%E7
【インターネットダイレクト(Indy)コンポーネント導入手順 】
http://homepage3.nifty.com/KENCH/open/indy/delphi_indy.htm

動作確認は、メモとIdHttpコンポーネントを貼り付けて以下のコードを書いて実行してみる。
うまくいくとこのスレがメモにダウンロードされる。
Memo1.Lines.Text := IdHttp1.Get('http://live19.2ch.net/test/read.cgi/stock/1144395454/l50');

【デルファイの質問所】
http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi
http://leed.t.u-tokyo.ac.jp/~takeuchi/delphi/search.cgi
http://groups.google.com/groups/search?hl=ja&q=delphi+
404デフォルトの名無しさん:2007/11/13(火) 19:34:58
TMenuにはシングル・ダブルクリックの検出とと動的な項目生成に対応して欲しいもんだな
405デフォルトの名無しさん:2007/11/13(火) 21:13:35
Windows のメニューなんだよ。そんなもん対応してられるかよ。
406デフォルトの名無しさん:2007/11/13(火) 21:52:11
でもサブメニュー開いた時にはOnClick発生とか、妙な事してるよ。
407デフォルトの名無しさん:2007/11/13(火) 22:02:22
もっと妙にしろってかww
408デフォルトの名無しさん:2007/11/14(水) 00:45:10
>動的な項目生成
できるじゃん
ヘルプ読みなさいよ
409デフォルトの名無しさん:2007/11/14(水) 11:59:00
サブメニューのOnClickは表示されたときに発生するでしょ。
ダブルクリックの前のクリックで発動するから、
ダブルクリックは検出できないんじゃないの?
410デフォルトの名無しさん:2007/11/14(水) 15:28:22
→マーク付きの項目の事だろ?クリックしても普通は何も起きない項目。
「サブメニューを〜」ではなく、「サブメニューを持つ項目を〜」だろうな。
411デフォルトの名無しさん:2007/11/14(水) 15:34:07
JVCLを使いたいのですが、どうも今、私が使用している
Delphi6Personal(update#2すみ)にはinstallができないようです。
対応は、Delphi 6、Delphi 7、Delphi 2005 (Win32 only)
Borland Developer Studio 2006 (Delphi Win 32 and C++ Builder)
が対応らしいので、Delphi7が売っていればそれを購入したいので
すがどこも販売終了なので困っています。
Delphi6とDelphi 2005はかなり文法から何から違うのですか?

(.NET Frameworkが嫌でvisual BASIC.NETからDelphiにきたのに...)

412デフォルトの名無しさん:2007/11/14(水) 16:05:04
413デフォルトの名無しさん:2007/11/14(水) 16:14:12
まぁ、でも正直言うと、今更Delphi7買うのはもったいない。
そんな、JVCL対応してないからって、Delphi2007じゃなくてその前のバージョン
買うのももったいないような。
414デフォルトの名無しさん:2007/11/14(水) 20:17:23
> 412
あれー  ???本当ですね...
まぁ、よかったです。嬉しい!!
415デフォルトの名無しさん:2007/11/14(水) 20:21:56
スイーツのにおいがぷんぷんするぜ
416デフォルトの名無しさん:2007/11/15(木) 00:20:48
>>411
D6perに入れてたよ
インストーラが入っててそれで入れた記憶がある
D6perのパッケージも入ってるし対応してないって事は無いと思うよ

今はインスコしないでソースだけ指定して使ってるけど
417デフォルトの名無しさん:2007/11/15(木) 02:03:57
>>411
同じくD6perで入れています。
d6のインストーラはperだと止まるので、
インストーラ改造(数行コメントアウト)して入れた記憶が・・・。
418デフォルトの名無しさん:2007/11/15(木) 10:58:51
> インストーラ改造(数行コメントアウト)して入れた記憶が・・・。
うっ、も、もう少し、詳細を教えてください..

install.bat を読んで流れを見ていますが、jvcll\archive\batichifile\
で、MakeD6.batとMakeD6Per.batでくらいしか違わないような気がしてい
るのですが..

それとも.pasをいじったのですか??
419デフォルトの名無しさん:2007/11/15(木) 13:16:27
領域からはみ出た文字列の末尾を省略文字(...)に
変換するにはどうすればいいでしょうか?
420デフォルトの名無しさん:2007/11/15(木) 13:31:17
>>419
どうしたいのかは判ったが、「何を」が判らない。
エスパーの召還に挑戦中?
421デフォルトの名無しさん:2007/11/15(木) 14:05:42
言葉足らずですいません。
TListBoxのテキストがはみ出たとき省略文字(...)に置き換えたいのですが
どのようにすればいいでしょうか?
422デフォルトの名無しさん:2007/11/15(木) 14:38:24
TListBoxにはオーナドローの機能があるので
OnDrawItem でヘルプを参考にして その省略文字に置き換えたのを描画すればいい
423デフォルトの名無しさん:2007/11/15(木) 14:41:36
>>422のOnDrawItemイベントでDrawTextのdwFormatにDT_END_ELLIPSISを付けて実行すればおk
424デフォルトの名無しさん:2007/11/15(木) 16:10:29
TWebBrowserで、一時ファイルを使わず

OLEVariant(Browser1.Document as IHTMLDocument2).Write(hoge);

で表示させるようにしたのですが、次に読み込ませると、先に読ませたhogeの情報に継ぎ足して(前に読ませた情報が消えない)表示されてしまうという症状に悩まされています。
読ませる前にNavigate('about:blank');をいれて見たのですが、これで読ませると先にクリアしたにもかかわらず真っ白になってしまいます。
エクスプローラーのバグ?

解決を見つけた方、ご教授ください。
ちなみにhogeの内容を表示させてみたけれど、こちらには余分な情報はついていませんでした。
425DEKO ◆v8todlW3ks :2007/11/15(木) 16:15:04
>>424
NavigateComplete2イベントやNavigateErrorイベントを監視して
「完全に読み込まれた」のを確認してから次の処理を行うようにすればいいと思います。
426デフォルトの名無しさん:2007/11/15(木) 16:45:58
>>425
レスありがとうございます。

>NavigateComplete2イベントやNavigateErrorイベントを監視して
これらを監視してもダメでした。OnDownloadCompleteでもダメなようです…
どんなに時間を置いて読み込むたびに「必ず」上記の症状になるので原因は他にあるかもしれません。

エクスプローラ6なのですが正常に終了しないことがあるので、おかしくなってるのかもしれません。困った。
427デフォルトの名無しさん:2007/11/15(木) 17:43:38
>>422-423
ありがとうございます。
下記のコードでできました。

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
DrawText(ListBox1.Canvas.Handle, PChar(ListBox1.Items[Index]), -1, Rect, DT_END_ELLIPSIS);
end;

428デフォルトの名無しさん:2007/11/15(木) 21:22:16
>>426
writeする前後にちゃんとopen/closeしてる?
429426:2007/11/15(木) 22:55:17
>writeする前後にちゃんとopen/closeしてる?

どういうことですか?
よかったら詳しく教えてください!
430デフォルトの名無しさん:2007/11/16(金) 01:28:33
>>418
記憶があやふやだけど、personalだとインストーラを走らせた際に、
「install」みたいなボタンのEnabledがFalseでクリック出来ず、先に進めない。
(ライセンスを読む場面だか、インストール内容の選択だか、そんな感じのところ)
で、該当部分の.pasをいじってボタンのEnabledにTrueを入れる。あとはインストーラ任せ。
外国のサイトでperにjcl/jvcl入れる方法、みたいなQ&Aがあってそのままやったんだけれど、
今ちょっと検索して探してみたけれど見つからなかったのでわからん。

ttp://www.macherie.org/index.php?MaCherie%2F%A5%B3%A5%F3%A5%D1%A5%A4%A5%EB
MaCherieのwiki見た感じでは、perでも普通に入れられているような感じ。
431デフォルトの名無しさん:2007/11/16(金) 01:32:06
>>429

OLEVariant(Browser1.Document as IHTMLDocument2).open();
OLEVariant(Browser1.Document as IHTMLDocument2).write(hoge);
OLEVariant(Browser1.Document as IHTMLDocument2).write(piyo);
OLEVariant(Browser1.Document as IHTMLDocument2).close()

writeし始める前にopen。
一連のwriteが全て終わったらclose。
432デフォルトの名無しさん:2007/11/16(金) 03:00:50
>>431
EOleExceptionクラスの例外を生成しました。'種類が一致しません'

と、OLEVariant(Browser1.Document as IHTMLDocument2).open();のところでエラーが出てしまいます。
この行をコメントアウトするとうまく通り、思ったと通りの結果が得られました。

削っちゃっても問題なかったでしょうか?
433デフォルトの名無しさん:2007/11/16(金) 10:11:47
動画のエンコードでフロントエンドがエンコード状況をプログレスバーなどで
表示していますが、ああいうのはどうやって情報を受け取っているんでしょうか?
434デフォルトの名無しさん:2007/11/16(金) 13:58:44
TWebBworser内でクリックイベントを拾いたいのですがどうすればよいでしょうか?
OnClickのようなものは見当たらないです
435デフォルトの名無しさん:2007/11/16(金) 14:07:26
>>434
TUIWebbrowser入れとけ。
436デフォルトの名無しさん:2007/11/16(金) 15:26:31
パスワード入れて入るニコニコなどはどうやって認証したら良いですか
437デフォルトの名無しさん:2007/11/16(金) 16:21:54
> 430
お返事ありがとうございました。
installerでのinstallは結局、できなかったのですが、よく見ると
manualでのinstall法が載っていて、manualで8割くらいは
入れられました。

installerのチェックにはmsgfmt.exeがpathが通っている
ところにある必要があり、msgfmt.exeなんて何???
って感じで敷居が高いと感じました。

jvclを使う皆さんは、msgfmt.exeなんてinstallしてて
当たり前なんでしょうか??ちょっと、ひいてしまいました..
438デフォルトの名無しさん:2007/11/16(金) 18:49:31
Delphi6ですが、DLL内で画像(EMF形式)を作って、それを返すということは
できるのでしょうか。そのDLLはDelphiだけではなくCなどでも使いたいのですが。
439M氏:2007/11/16(金) 20:08:34
皆さん、はじめまして。
Delphi7を使用しているのですが、TStaticTextで表示されている内容を
マウスでドラッグしてコピーしたいのですが出来ません。
オブジェクトインスペクタのプロパティ等のどのような設定でドラッグ出来る様に
なるのでしょうか?
ご教授の程、宜しくお願いいたします。

440デフォルトの名無しさん:2007/11/16(金) 20:50:46
>438
一応出来る。
DLL関数の呼び出し規約をstdcallで作っておけば殆どの言語から呼び出せる。

>439
どこにドラッグするんだ?
自分のアプリ内のコンポーネントなら、
StaticTextのDragMode=dmAutomaticに設定して、
受け入れ先コントロールのOnDragOver(ドロップを受け入れるか設定)
OnDragDrop(ドロップされた時の動作)を書けば出来る。

他のアプリとかエクスプローラだとものすごく難しいよ。
441デフォルトの名無しさん:2007/11/16(金) 21:20:44
>>437
dxgettext使わなければmsgfmtは必要無い気がする
442M氏:2007/11/16(金) 21:26:56
440>
ご返答ありがとうございます。
ただ、単純に、StaticTextに表示されている内容をドラッグしてCtrl+Cで
コピーして他のファイルに貼り付けたいのですが、出来ないんです。
説明足らずで申し訳ございません。
443デフォルトの名無しさん:2007/11/16(金) 21:30:54
…すまんが俺はESP能力が足りない。
444デフォルトの名無しさん:2007/11/16(金) 21:36:06
TMemo使えばできる
445デフォルトの名無しさん:2007/11/16(金) 21:47:53
>>442
TEdit を ReadOnly := True で Color = cl何かにすれば出来る
446デフォルトの名無しさん:2007/11/16(金) 22:08:45
>ドラッグしてCtrl+Cで

・・・
447デフォルトの名無しさん:2007/11/16(金) 22:11:43
マウスカーソルで選択する動作のことをドラッグと言ってるらしい
448デフォルトの名無しさん:2007/11/16(金) 22:38:45
違法ドラッグだな
449デフォルトの名無しさん:2007/11/16(金) 23:52:22
プログラミング初心者で初投稿失礼します。


TButtonで色をつけたいと思っているんですが、colorのプロパティがないので、
変えることができなくて困っています。
プロパティーを追加する方法やその他の方法があれば、
ご指導の方宜しくお願いできないでしょうかm_ _m
450デフォルトの名無しさん:2007/11/16(金) 23:59:43
>>449
Windowsのボタンクラスは色を変更できないようになっているらしいです。
その時点で僕は諦めたのですが、TPanelを代用したりオーナードローを実装したボタンを
自前で書いたりすれば良いみたいです。

検索したらいくつもの方法がヒットしたので、ご自分に合ったものを探してみてください。
http://www.google.co.jp/search?hl=ja&q=TButton+%E8%89%B2&btnG=%E6%A4%9C%E7%B4%A2&lr=
451デフォルトの名無しさん:2007/11/17(土) 00:28:20
>>450
ご丁寧な回答ありがとうございますm_ _m
私はとりあえず、http://rakasaka.fc2web.com/delphi/odbtn.htmlのソースコードで作成してみようと思っているんですが
作成する際、
ファイル→新規作成→その他→Deiphiファイル、コンポーネント→
TBottun→完了→ソース貼り付け→コンパイル
すると、コンパイルは上手くいったのですが、そのあとどうしていいか分からないです・・・
重ね重ねすみませんm_ _m

ちなみに使っているDelphiのバージョンはTurbo Delphiです。
452デフォルトの名無しさん:2007/11/17(土) 00:56:08
インストールできないから動的に作成する。
Q&A でも回答されてたでしょ。
453デフォルトの名無しさん:2007/11/17(土) 01:05:44
すみません。動的に作成するというのがようわからないので・・・
454デフォルトの名無しさん:2007/11/17(土) 01:33:41
Delphi 動的 生成 でググレカス
455デフォルトの名無しさん:2007/11/17(土) 01:47:33
超初心者だから、ググってもわからないです。
456ななしへたぐらま ◆XcB18Bks.Y :2007/11/17(土) 03:35:27
>>453
たとえばフォームForm1上のパネルPanel1の上に標準のボタンを貼り付ける場合…

◆『アクション』を1個作る(これは下準備)

・フォームForm1にアクションリストコンポを置け
・このアクションリストコンポをダブルクリック(アクション一覧のウィンドウが出るぜ)
・左上のアクション追加ボタンをクリックするか[Insert]キーを押せ(空っぽのアクションが追加されるぜ)
・『オブジェクト インスペクタ』でNameとCaptionを目的にあわせて適当に変えろ
 (ここではメッセージボックスを出すテストということで,Nameを"ShowMessageAction",Captionを"テスト"にするぜ)
・『オブジェクト インスペクタ』を『イベント』ページに切り替えて"OnExecuteの右側をダブルクリックしろ
 (ソースコードに空っぽのイベントハンドラ TForm1.ShowMessageActionExecute が出来るぜ.
 もしNameを違う名前にしたら名前もそれにあわせて変わる)
・ここにコードを書き込め(ためしにこんなコードにしたぜ)

procedure TForm1.ShowMessageActionExecute(Sender: TObject);
begin
 ShowMessage('ボタンが押されたぜ!'); // ←これが追加した行
end;

(つづく)
457 ◆XcB18Bks.Y :2007/11/17(土) 03:36:40
>>456
(つづき)

◆『ボタン』を追加するコードを書く(ここがボタンを動的に作成する部分)

・ソースコードの上の方にあるinterfaceのすぐ下のusesにそのボタンコンポを定義しているユニット名を追加しろ
 (標準のボタンなら StdCtrls だ.もしすでにある場合は追加しなくて良い)
・TForm1の宣言のうち,private節にボタンの変数宣言を追加しろ

 private
   { Private 宣言 }
   FTestButton: TButton; // ←ここが追加した行.目的にあわせて変数名を決めてくれ!

・Form1(のコンポが載っかっていないところ)をダブルクリックしろ( TForm1.FormCreate という空っぽのイベントハンドラが追加されるぜ)
・ここにボタンを作るコードを書け

procedure TForm1.FormCreate(Sender: TObject);
begin
 // ここから追加部分
 FTestButton := TButton.Create(self); // ボタンを生成します.selfはこのフォーム自身のことです
 FTestButton.Parent := Panel1; // このボタンがPanel1の上に載っかるように指定.フォームの上に直に置くならselfを指定
 FTestButton.Action := ShowMessageAction; // ボタンを押したときに用意した『アクション』を実行する.見出しもこの『アクション』の見出しになる
 // ここまで
end;

あとは実行してみてくれい!
ボタンの見出しが『アクション』のCaptionと同じになっていてボタンをクリックするとメッセージボックスが出てくるはず!
ここまで出来たら一段落です.
458デフォルトの名無しさん:2007/11/17(土) 03:37:10
じゃあヤフれ
459デフォルトの名無しさん:2007/11/17(土) 06:33:10
456-457読んでも分からんなら市ね
460デフォルトの名無しさん:2007/11/17(土) 08:43:30
要素数可変なリストを保持するためTListを使ってますが、試しに動的配列で要素1個増えるたびに
SetLengthで再割り当てを行うコードをFastMMと一緒に使うと以前のDelphiのメモリマネージャを使う場合に
比べて、20秒かかっていたのが、僅か0.2ミリ秒くらいになりました。
これからは、積極的に動的配列の要素数の再割り当てを行うプログラムを書こうと
思うのですが、そんな私はプログラマ失格でしょうか?
461デフォルトの名無しさん:2007/11/17(土) 11:46:05
>>460
それを手続きなりクラスなりにするがよい
462デフォルトの名無しさん:2007/11/17(土) 12:07:27
リストと配列は用途が違うだろ。並び替え、挿入、削除とか、配列よりリストクラスの
方が断然有利な場合もある。ただ保持だけが目的なら、配列の方がいいけど。
463デフォルトの名無しさん:2007/11/17(土) 12:09:55
了解しました。今回は保持だけが目的なので、配列で行こうと思います。
464デフォルトの名無しさん:2007/11/17(土) 13:12:06
きっとちょっとした工夫で0.20秒を0.15秒とかにはできるんだろうけれど、
確かにFastMMにするとその辺りに手間をかける甲斐が無くなるな。
465デフォルトの名無しさん:2007/11/17(土) 13:17:32
で、メモリマネージャが進化したから、
「積極的に動的配列の要素数の再割り当てを行うプログラムを書こうと」
とするのは、「プログラマ失格でしょう」よ。

配列の要素数をきちんと管理して、再確保の効率を高める努力は怠らないほうがいいよ。
466デフォルトの名無しさん:2007/11/17(土) 14:00:47
Capacityを設定すれば良かったんじゃないのか?
467デフォルトの名無しさん:2007/11/17(土) 18:31:47
Delphi6 PersonalとTurbo Delphiは互換性ないんですかね?
OpenJaneの改造で必要なんですが、Delphi6 Personalは配布終了しているようなので、
代わりにTurbo Delphiを使おうと思ってるんですが。
468デフォルトの名無しさん:2007/11/17(土) 18:36:18
Turbo買うの?
無料の奴だと無理だと思うよ
469デフォルトの名無しさん:2007/11/17(土) 18:43:15
やっぱりDelphi6でないとできませんか……。
470デフォルトの名無しさん:2007/11/17(土) 18:44:10
>>465
その辺は古い人間の考え方だろ
そういう部分を隠蔽して生産効率を高めようというのが時代の流れなわけだから、
メモリの管理だとかを言語仕様やライブラリ等で補えるならそれで構わないと思うが
DelphiだってCみたいなのやってた人間からすればメモリ管理ほとんど不要に等しいし
471デフォルトの名無しさん:2007/11/17(土) 19:27:20
D6Pのインストーラー残してある俺勝ち組
472デフォルトの名無しさん:2007/11/17(土) 20:50:12
インストーラーもアップデートパッチも全て残してある俺勝ち組すぐるw
473デフォルトの名無しさん:2007/11/17(土) 20:55:11
インストーラーもアップデートパッチも全て残してあるけど認証コード残ってなくて
定期的にレジストリ弄らされる俺負け組みw
474デフォルトの名無しさん:2007/11/17(土) 20:55:43
×認証
○許諾
475デフォルトの名無しさん:2007/11/17(土) 22:30:40
TurboがあるからDelphi6はいりましぇーん
476デフォルトの名無しさん:2007/11/17(土) 22:32:25
コンポインストールできないTurboExpユーザのおれは負け組
477デフォルトの名無しさん:2007/11/17(土) 22:32:50
D6のIDEでTurboのコンパイラが使いたい
478デフォルトの名無しさん:2007/11/17(土) 22:50:49
TurboExplorerだけどゲームしか作らないからコンポいらない俺、引き分け?
479デフォルトの名無しさん:2007/11/17(土) 23:20:24
ゲームしか作らない負け組
480デフォルトの名無しさん:2007/11/18(日) 00:16:20
勝ち組じゃね?
481デフォルトの名無しさん:2007/11/18(日) 00:45:42
Delやってる時点で負け組。
482デフォルトの名無しさん:2007/11/18(日) 00:48:22
勝ち負けに拘ってる奴は負け組。
483デフォルトの名無しさん:2007/11/18(日) 00:50:03
そんなこというやつも負け組。
484デフォルトの名無しさん:2007/11/18(日) 00:51:44
標準化もPascalとも無関係で、一社だけサポートで、いまにも消えそうだし、
負け組かもね。>Delユーザ
485デフォルトの名無しさん:2007/11/18(日) 01:12:04
C++に比べれば大勝だがな
486デフォルトの名無しさん:2007/11/18(日) 09:28:31
テキストベースのdfmファイルをresファイル化する時に
dfmファイル内で外部ファイルを参照して
resファイルにする方法がわかりません

test.rc----
IFORM RCData "form.txt"
----
form.txt---
(前略)
Picture.Data = {
SaveType = 1
ResType = TJPEGImage
File = 'Image5.jpg'
}
(後略)
---
として
brcc32 test.rc
といった感じにしたいです
487デフォルトの名無しさん:2007/11/18(日) 13:12:37
cpuがアイドルの時にコッソリ動く常駐アプリを作りたいのでヒントプリーズ
488デフォルトの名無しさん:2007/11/18(日) 13:33:00
E6600(2コア)、XP SP2でTurbo Delphiを使用しています。

マルチスレッドアプリケーションをTDの統合環境でブレークポイントなどを使いデバッグしていると、
ブレークから抜けようとステップ実行やトレース実行やら、ともかくブレークから実行で抜けたあと、
急にハングしたかのごとき重さが頻繁にかかります。システム(OS)全体も半ハングアップ状態に。
一応処理は続いているようで、まっているとエディタのブレークポイントで実行一時中断しますが、
その状態でもハングのような重さで、プログラムを終了させるのもままならぬほどです。

とにかくすべての動作にsleep(500)がかかっているのではないかというトロイ動きになります。
こうなると、もうとにかく終了させるしかなく、Ctrl+2が効く時は30秒(適当)ほどラグがあったあと
終了してくれるときもあれば、1分近く待った挙句あきらめ、制御が戻るのを期待してCtrl+Del+Altを
押してから復帰、を何度も繰り返してTDのタイトルバーに(反応なし)が表示さるまでトライしてそれを
右クリックで終了するか、それでも駄目ならばハードウェアリセットをしています。

ブレークポイント使用時のハングと、ブレークポイント使用を躊躇するのとの相乗効果で、生産性が
非常に落ちています。なんとかしたいです。

CPU使用率やメモリ使用量の異常、HDDに対する過度なアクセスなどはありません。
マルチスレッドでやり取りしているデータは、プログラム内で完結しています。
どのスレッドでも、メッセージのフックなどはしていません。

どのような原因が考えられますでしょうか。
スレッド内部処理の問題でしょうか(CPU使用率からみると考えにくいですが)。
たまたまデバッガと当方環境の相性?でしょうか。
経験者の方などが居ればご助言を賜りたく存じます。よろしくお願いします。
489488:2007/11/18(日) 13:53:05
すいません、おそらくブレークを抜けるときでなく、入るときに遅くなっているようです。
いま、使用するプロセッサの制限したうえでテストしたところ、スレッドのループ一週目で
最初のブレークに入るときにすでに重くなってしまいました(再現率は不定です)。

もしうまくCtrl+F2などが効いた場合、デバッガが終了後はけろりと何の問題もなかった
かのように、TDやシステムは動きます。

ブレークポイントを使わない限りはトラブルはありません。
490デフォルトの名無しさん:2007/11/18(日) 21:07:44
>>488-489
強いて言えば文章を短くまとめる能力が足りないようです
491デフォルトの名無しさん:2007/11/19(月) 13:06:54
>>486
そんな事できるの?

>>487
CPU使用率を調べる。

>>488
マルチスレッドやめる。
492デフォルトの名無しさん:2007/11/19(月) 13:33:24
IDEでフォーム上に配置したコンポーネントのプロパティを
FormのOnCreateからいじくろうとするとEAccessViolationが出るんですが
OnCreateの段階ではまだ生成されてないんでしょうか?
493デフォルトの名無しさん:2007/11/19(月) 14:56:06
>>486
リソースファイルは {$R filename.RES filename.RC} の書式で 埋め込めばコンパイル時にリンクしてしまうので
リソースコンパイラは付属していない。

そのファイルの場合は
{$R test.RES test.RC}

リソースファイルで取り込んだ jpg ファイルなどは、
TResourceStream + TJPEGImage .LoadFromStream で扱う
494デフォルトの名無しさん:2007/11/19(月) 14:57:35
>>492 OnCreate で、そのフォームに所属するコンポーネントは作成されている筈
別のフォームをアクセスしようとしていない?
495M氏:2007/11/19(月) 14:58:15
返答遅くなり申し訳ございません。
443さん、446さん、超初心者な者でして、分かりづらく知識不足で申し訳ないです。
447さん、フォローありがとうございます。

444さん、445さん、ご教授ありがとうございます。447さんが書かれていたとおり、
マウスカーソルで選択してコピーしたいのですが、選択することすら出来ません。
ご教授していただいた方法で、TStaticTextに表示されている内容を選択出来る様になるのでしょうか?
もう少し詳しく教えていただけると、幸いです。
宜しくお願いいたします。

496492:2007/11/19(月) 15:27:45
>>494
たしかに新規にアプリケーション作って、フォーム上に配置したコンポーネントを
OnCreate中でいじってみたら、普通に動作しました。
おっしゃるとおり、ちゃんとOnCreateの段階では生成されているようです。
でも問題のプログラムではどのコンポーネントをいじろうとしてもEAccessViolationが。
何かほかの原因って考えられるでしょうか?
長文スマソ
497デフォルトの名無しさん:2007/11/19(月) 15:47:33
>>496
そのコンポーネントの変数が、nil かどうか確認してみては?
念のために Self.をつけるとか。
498デフォルトの名無しさん:2007/11/20(火) 06:56:52
皆様はじめまして & 教えてください。

複数行(#13#10を含む)の文字列のリストを処理したいのですが、
TStringListでできるのでしょうか?
それともTListから派生したクラスを自分で作るしかないのでしょうか?

よろしくご教授をお願い致します。
499デフォルトの名無しさん:2007/11/20(火) 07:18:07
出来るって言うかまさにそのためのクラスだよ。
sl := TStringList.Create;
sl.LoadFromFile('text.txt'); または sl.Text := 'hello'#13#10'world'#13#10;
for i := 0 to sl.Count-1 do ShowMessage(sl[i]);
500デフォルトの名無しさん:2007/11/20(火) 16:47:05
TMetaFileCanvas に描画して、SaveToFile でファイルに保存しています。
このとき、デバイスにプリンタを指定するとプリンタの解像度で、
スクリーンを指定すると画面の解像度で保存されます。これを、任意の
解像度で保存したいのですが、どうすればいいでしょうか。
501デフォルトの名無しさん:2007/11/20(火) 22:41:37
Delphi 6 personal と Turb Delphi Explorer の違いを教えてください。
502デフォルトの名無しさん:2007/11/20(火) 22:43:50
名前が違う
503498:2007/11/21(水) 08:16:17
499様
言葉が足りず誤解を与えてしまいました。
すみません。

文字列のリストを扱いたいのですが、リストの1つの
要素が#13#10を含む複数行なのです。
(TStringListでは無理ですよね・・・)

こんな場合、TListから派生したクラスを自作するしか
ないのでしょうか?
有用なコンポやサンプルコードなどあればご紹介いた
だけないでしょうか?

よろしくお願い致します。
504デフォルトの名無しさん:2007/11/21(水) 10:30:41
>>503
改行を別の文字に置換して管理すればいい。
505デフォルトの名無しさん:2007/11/21(水) 10:31:53
>>503

str:array of string;
506デフォルトの名無しさん:2007/11/21(水) 11:27:42
別にTStringListに普通に突っ込めばいいじゃん。
S.Add('うんこ' + #13#10 + 'ちんこ');
T := S.DelimitedText;
S.DelimitedText := T;
何がしたいのかようわからんぜ。



507デフォルトの名無しさん:2007/11/21(水) 12:33:19
>>498
混乱の一つが用語。

Delphiのリストクラスは リスト構造じゃなくてアレイの一種。
TStringListもリスト構造ではなくアレイなんだ。
だから array of string とデータ構造的には同じもの。

Delphiはリスト構造を扱うライブラリは標準では持っていない。
もっとも古式ゆかしい言語だから扱うのに苦労するわけじゃないけどね。

というわけでアレイでいいのかリストが欲しいのか、どっちなの?
508デフォルトの名無しさん:2007/11/21(水) 12:35:08
おいおい
普通にに突っ込むのなら、
S.Add('まんこ' + #13#10 + 'ちんこ'); だろ。

おまんは、うんこに、ちんこ突っ込むのかよ
509デフォルトの名無しさん:2007/11/21(水) 14:12:10
>>506,507,508
当方、大きな誤解をしていました。

S.Add('うんこ' + #13#10 + 'ちんこ');
とすると、
 S[0] は、'うんこ'
 S[1] は、'ちんこ'
になってしまうと思っていました。
実際には、
 S[0] は、'うんこ'#13#10'ちんこ'
なんですね!!!

自己レス気味になってしまいましたが、気づかせていただき、
ありがとうございました。
510509:2007/11/21(水) 14:29:42
ついでに、TStringList.Valuesについても誤解をしていました。

S.Values[’x'] := 'A=B';

というように、右辺には「=」を含めてはいけないと勝手に
解釈していましたが、OKなんですね!

いやぁ〜しらなかった!
511デフォルトの名無しさん:2007/11/21(水) 14:43:23
>>508
要するに相手が男か女かということだな

>>509
もしS.LoadFromFile(...)やS.Text := 'あなる'#13#10'ちんこ';みたい書き方で同じ処理したいなら、
TListを継承して一から作らなくても、TStringsを継承してSetTextStr辺りを自作すればおk
512508:2007/11/21(水) 18:45:04
>>511
SetTextStr ですね。了解です。
勉強になりました。
ありがと〜!
513デフォルトの名無しさん:2007/11/22(木) 11:53:25
DBEditで日付型の値を入力する際、10/23と入力すると2007/10/23になりますが、
入力した月/日が本日より前の日付の場合に来年の日付にしたいのですが
どのようにすればいいのでしょうか?具体的には以下のようにしたいのです。

12/10と入力した場合は2007/12/10
9/20と入力した場合は2008/09/20
514デフォルトの名無しさん:2007/11/22(木) 13:43:47
DecodeDate だったかな? それと EncodeDate。
515デフォルトの名無しさん:2007/11/22(木) 19:34:22
MainMenuオブジェクトの中の複数の項目のOnClickイベントで、
同じprocedureを呼び出すように設定しました。

そこで、そのprocedure側で
「MainMenuオブジェクトのどの項目がクリックされたのか」
を知りたいのですが、どうすればよいでしょうか?

具体的には、クリックされた項目の
"caption"の内容を得たいと思っています。


現状では、MainMenuオブジェクトの"名前"すら取得できない状況です。
procedure TForm1.OnMenuClick(Sender: TObject);
begin
 ShowMessage(TMainMenu(Sender).name); // 空で表示されてしまう
end;

よろしくお願いします。
516デフォルトの名無しさん:2007/11/22(木) 20:00:46
TMenuItem(Sender).Caption

かな。
517デフォルトの名無しさん:2007/11/22(木) 20:11:07
>>516の書いてるとおり「TMenuItem」でキャストするべきだが、実際にやってみると

>>515
>  ShowMessage(TMainMenu(Sender).name);
これでもいける。なぜ515の環境では「 空で表示されてしまう」のか、
そこんとこ、ちょっち怪しい

また、出来れば「is」「as」使って欲しい
あとでメニュー以外から使ってしまってエラーが出たとかならないように

オレならTAction使うが
518515:2007/11/22(木) 21:14:07
>>516
できました!!これだけで5日くらい格闘してたので、
感動しました。ありがとうございます!

>>517
ありがとうございます!
「is」「as」そして「TAction」ですね…。
いい機会なので勉強しておきます。
519デフォルトの名無しさん:2007/11/22(木) 21:20:19
>>513
日付型に変換して今日より小さかったら2008付ければいいんでない?
520501:2007/11/23(金) 03:49:29
言葉足らずでした。すみません。
今まで perl , ruby , vba をさわってきたのですが、
そろそろネイティブコードをはける言語を覚えたくなりました。
そこで、Delphiを今更ながら勉強しようと思っています。

しかし検索してみると Delphi 6 と Turbo Delphi がありました。
Turbo Delphi の方が新しいようですが、2ch的には Delphi 6 の話が多いみたいで、
どちらの方がいいのか迷っています。

名前とブランド名が違うだけなのか、機能的に違いがあるのか、
あるとしたら代表的にどう違うのかなど、
アドバイスをください。
521デフォルトの名無しさん:2007/11/23(金) 04:02:00
522デフォルトの名無しさん:2007/11/23(金) 04:13:12
Delphi 6
523デフォルトの名無しさん:2007/11/23(金) 06:05:05
コード補完やリファクタリング等の機能、割と便利な言語拡張を考えるとTurboDelphiかな。
524デフォルトの名無しさん:2007/11/23(金) 12:50:45
足ふみスイッチで画像をキャプチャーしたいのですが、足ふみスイッチが高いので
俗に言う親が来たスイッチ(ステルススイッチ)で代用したいと思っています。
正式には、quickbottunと言って、このようなUSB規格です。

VID=$1398 PID=$FF03
Input Report Size=40
Output Report Size=40
Feature Report Size=40

Value Input
===========

0)
UsagePage: FF00 ($FF00) ReportID: 0
IsAlias: False     BitField: 2
LinkCollection: 0 LinkUsage: 1 ($0001)


Value Output
============

0)
UsagePage: FF00 ($FF00) ReportID: 0
IsAlias: False BitField: 2
LinkCollection: 0 LinkUsage: 1 ($0001)
LinkUsagePage: FF00 ($FF00) IsRange: True

525デフォルトの名無しさん:2007/11/23(金) 12:51:30
Value Feature
=============

0)
UsagePage: FF00 ($FF00) ReportID: 0
IsAlias: False BitField: 2
LinkCollection: 0
LinkUsage: 1 ($0001) LinkUsagePage: FF00 ($FF00)
BitSize: 8 ReportCount: 1
UnitsExp: 0 Units: 0
LogicalMin: 0 LogicalMax: 255
PhysicalMin: 0 PhysicalMax: 0
UsageMin: 1 UsageMax: 8
StringMin: 0 StringMax: 0
DesignatorMin: 0 DesignatorMax: 0
DataIndexMin: 0 DataIndexMax: 7

です。

uusb.sysで動かそうとしたのでうが、WindowsからHIDがこのdeviceには一番いいから
変えるのはダメと拒否されました。そこで、HIDで動かすためにいろいろ調べて
いますが、そのままでは、いくらスイッチを押してもずーと以下の信号しかでていません。

インタラプト転送(UP) pipehandle 0x82bc4c4c(endpointaddress 0x81)
受信 0x0 byte(デバイスから)

526デフォルトの名無しさん:2007/11/23(金) 12:52:55
が、ソフト(ゲーム画面から仕事をしている画面に切り返すソフト)
を起動して、スイッチを押すと

class request(Down) destination:Interface,Index 0
予約bit:34 request:0x9 値:0x300 送信:0x28 byte(デバイスへ)

がPCからでて

コントロール転送(UP) pipehandle:0x82bf8d10
00 00 00 00 00 00 00 00 .... A8
00 00 00 98 25 18 00 ..

という信号が送られます。

一番、簡単にスイッチが押されているか調べる方法はどんなのがありますでしょうか??
何かこの辺を調べたらどうかというのはありませんでしょうか??
そもそも、何でスイッチが押されたら、まずPC→deviceの信号が送られるのが不思議で
しょうがないのですが...
527デフォルトの名無しさん:2007/11/23(金) 14:00:48
>>524-526
逆に何故そんな質問をDelphi用の、しかもこんな超初心者用のスレで聞こうと思ったか伺おうか
不思議でしょうがないのですが...
528デフォルトの名無しさん:2007/11/23(金) 14:12:25
529デフォルトの名無しさん:2007/11/23(金) 14:15:46
> 527
あのー、もちろん、Delphiの初心者だからなのですが...
HIDを扱うにはCのほうがいいのでしょうが、Cは知らないし
DelphiのJvCLをみてJvHIDclasscontrollerを見ても
このスイッチとどう対応させればいいのか分からないので..
なんか、こんな簡単な方法があるよと教えていただけたらと..
530デフォルトの名無しさん:2007/11/23(金) 14:21:16
> 528
ありがとうございます。私のDelphi 6perと7だとこれを動かそうとすると
PHIDPPreparsedDATAが定義してないと動いてくれません..

JvCLの中のJvHidControllerClassはなんとかファイル読み込みエラーが
でつつもなんとか動くのですが..
531デフォルトの名無しさん:2007/11/23(金) 14:38:18
悪いこと言わないからドライバはCで書いて、
それをDelphiから呼ぶようにした方が良い。
ていうかC位覚えれ。
532デフォルトの名無しさん:2007/11/23(金) 14:49:30
>>529
質問の核はDelphiとなんら関係ないと思わなかったのか?w
さっさと該当スレ行った方がお前のためだ
533デフォルトの名無しさん:2007/11/23(金) 18:58:30
質問です。

Delphi5Pro で簡易辞書ソフトを作っています。
バージョンアップで本文の表示部分を TMemo から TRichEdit に変更したところ韓国のユーザから文字化けすると指摘されました。
韓国のユーザも日本語が読める人で、辞書は日本語で記述してあります。
本来なら日本語が表示されるはずなのに意味不明のハングルに化けてしまうとのことです。

そこで、Charset の問題だろうと思い、わざと HANGEUL_CHARSET を指定してみました。
すると TEdit は日本語がハングルに化けたのに TRichEdit は日本語のままでした。
おそらく TRichEdit は Windows の標準の言語に自動的に従うのだと思います。
しかし敢えて TRichEdit の文字セットを任意に変更させたいのですが、何か方法がないかお教えください。
534デフォルトの名無しさん:2007/11/23(金) 19:43:56
535533:2007/11/23(金) 20:56:23
>>534
すみません、TRichEdit の Attributes を変更することはわかるのですが……。

「TRichEdit の Charset を変えてワザと文字化けを起こす方法」はありませんか?
536デフォルトの名無しさん:2007/11/24(土) 01:21:45
>>524
Delphiかんけねえw
537デフォルトの名無しさん:2007/11/24(土) 12:17:08
D7 だけど、最近いつの間にかコンパイルにやたら時間が掛かるように
なったんですけど、何が考えられますか?数秒ほどでコンパイルできてた
プロジェクトが今じゃ1分近く掛かるんです。
(その後更にマウスカーソル乗っけたときのヒント表示まで1分近く・・・)
コンポーネントを追加とかもしてないんですが。
538デフォルトの名無しさん:2007/11/24(土) 12:37:47
考えられる事
1、ウイルスにやられてる
2、アンチウイルスソフトが一生懸命頑張ってる
3、メモリが壊れていてパソコンのRAMサイズが異常に小さくなってる
4、導入してるコンポーネントが異常に重い
5、IDEに何か便利ツールを組み込んでいてそいつが重い


判定方法
 タスクマネージャのプロセスタブでCPU順に並べてみて何が重いか、まず見る
 他に重いプロセスがあればそいつが90%とか消費してるだろう
最近、ブルートースの tosなんとか入れてるとだんだん重くなる現象がでたぞ。

 IDE自身が重いならメモリが足りてないかどうか見てみる。
 さらに新規作成でコンポーネントを貼らない状態で重いかどうか見る
539デフォルトの名無しさん:2007/11/24(土) 12:44:40
>>537
プロジェクトのコンパイラメッセージに余計な設定してないか?
安全でない云々は不要。
540デフォルトの名無しさん:2007/11/24(土) 13:13:45
537です。回答ありがとうございます。
>>539
見てみました。「安全でない〜」のチェックは外れていました。
>>538
タスクマネージャで見ると、コンパイル中はSystem Idle Procが常に70%くらいで
delphi32.exe が10〜20%でした。新規作成したプロジェクトは初回こそ遅かった
ですが、2回目以降はほぼ一瞬でコンパイルが終わりました。
コンポーネントが重いのかなあ・・その辺、調べてみたいと思います。
541デフォルトの名無しさん:2007/11/24(土) 13:25:36
メモリが足りないんだろ
542デフォルトの名無しさん:2007/11/24(土) 14:22:25
コンパイル中に空き時間があってなおかつ
遅いという事はハードディスクの応答が異常に遅くなってるのでは?
543デフォルトの名無しさん:2007/11/24(土) 14:24:48
空き容量が足りない予感
544デフォルトの名無しさん:2007/11/24(土) 14:53:47
だからマルウェアをウイルスっていうのいい加減やめて欲しい。
545デフォルトの名無しさん:2007/11/24(土) 15:05:45
自分に害をなすソフトウェア一般をウイルスと呼ぶのはありふれた事だよ
546544:2007/11/24(土) 15:06:48
そうなんだよね〜。このスレの住人だけに言ってる訳じゃないんです。
547デフォルトの名無しさん:2007/11/24(土) 15:48:46
コンパイル速度の件、アドバイスありがとうございます。
結局 LMDFill と言うコンポーネントをTLabelに変更して LMD関連は
Uses からも全部削除したら、元の速度に戻りました。
以前から入れてあるのに何で?な感じですが・・・

# 中身が無いので見ため勝負のソフトでしたが、見ためも普通に
なってしまい残念です。
548デフォルトの名無しさん:2007/11/25(日) 00:04:06
CreateProcessで実行したプログラムの標準出力を取得するにはどうすればよいでしょうか?
549デフォルトの名無しさん:2007/11/25(日) 00:06:27
550デフォルトの名無しさん:2007/11/25(日) 00:08:48
>>549
とても長いソースになるんですね
印刷してがんばって読んでみます
ありがとうございました
551デフォルトの名無しさん:2007/11/25(日) 00:21:40
>>550
ttp://www.autch.net/page/tips/delphi_anonymous_pipe.html
次からググればすぐに分かる程度のことは自分で調べろよ
552デフォルトの名無しさん:2007/11/25(日) 00:22:23
>548
CreateProcessののSTARTUPINFO構造体にGetStdHandleで取得した値をセットして実行すれば
以後親プロセスから標準入出力の読み書きが可能になる。
553デフォルトの名無しさん:2007/11/26(月) 16:11:25
BDS2006のIdSMTPでPortを指定してQuickSendしても、ポート番号が反映されず、25で送信されてしまいます。
何か打つ手はないでしょうか。
554デフォルトの名無しさん:2007/11/27(火) 06:58:15
1つのクラスに何種類かのコンストラクタを定義したいのですが、
例えばファイル名を指定して生成するコンストラクタと、規定のファイル名で
生成するコンストラクタを作りたい場合、次のような定義で良いのでしょうか?

TMyClass = Class
public
 constructor CreateFile(Filename:string);
 constructor CreateFileDefault;
end;

constructor CreateFile(Filename:string);
begin
 ....
end;

constructor CreateFileDefault;
begin
 CreateFile('Default.txt');
end;

こうすると、CreateFileDefault内で新しいクラスが生成されるだけで、
このメソッドを呼び出した側にCreateFileの結果が戻りませんよね?
こういう場合、CreateFile内の処理を別途関数として用意すべきなのでしょうか。
555554:2007/11/27(火) 07:03:00
ええと、すみません。

↑ですが、CreateFileコンストラクタ内で、条件分岐により何通りかのinherited Createを選択するため、
この処理をprocedureで別途定義すると、inherited部分をどうしていいかわかりません。

constructor CreateFileDefault 定義は、function CreateFileDefault:TMyClass; と同義なのでしょうか。(生成したクラスを返すという意味で)

function CreateFileDefault:TMyClass;
begin

end;


556554:2007/11/27(火) 07:13:41
間違って送信してしまいました、すみません・・。

constructor CreateFileDefault 定義は、function CreateFileDefault:TMyClass; と同義なのでしょうか。(生成したクラスを返すという意味で)

function CreateFileDefault:TMyClass;
begin
 result:=CreateFile('Default.txt');
end;

みたいに定義して生成することも可能なのでしょうか。
557デフォルトの名無しさん:2007/11/27(火) 07:17:45
>>554 コンストラクターというのは
クラス名+ドットで呼んだ場合だけメモリ確保とかしてくれる。

インスタンス+ドット で呼んだ場合とかメソッド内部で呼んだ場合は
単なるprocedure になる。
だからその書き方でいい筈。

ただ、C++から共用したかったりすると Create以外のコンストラクタ使うと面倒になるから
あんまり使われない。
558554:2007/11/27(火) 07:41:05
なるほど、ありがとうございます!

すみません、もう一つ・・。

FormStyle=fsNormal と定義されているフォームTForm2をTForm1から動的に生成する時に、
TForm1.FormStyle=fsMDIFormとして、TForm2.FormStyle=fsMDIChildとして生成したいのですが上手くいきません。

procedure TForm1.FormCreate(Sender:TObject);
begin
 Form2:=TForm2.Create(self);
 Form2.FormStyle:=fsMDIChild; //例外:フォームが作成できません。有効なMDIフォームがありません。
end;

Form2は汎用のライブラリで、できればソースやプロパティをいじりたくないのですが、
何か方法はないものでしょうか。
559558:2007/11/27(火) 08:13:34
自己レスです、解決しました、すみません。
Createイベント内では駄目で、Showイベント内で実行できました。
560デフォルトの名無しさん:2007/11/27(火) 08:53:14
タイトルバーの右側にある「最大化/元のサイズに戻す」ボタン
と同じ機能のボタンを作りたいのですが、
どうすればいいでしょうか?

タイトルバーを消した状態(Form1.BorderStyle := bsNone)
で使用したいと思っています。
よろしくお願いします。
561デフォルトの名無しさん:2007/11/27(火) 09:11:52
WindowState変えれ
562561:2007/11/27(火) 09:13:13
補足します。
「元のサイズに戻す」は実装できたのですが、
「最大化」が分かりません。

windowState := wsMaximized;

とすると、ウィンドウが画面いっぱいに表示され、
タスクバーまで消えてしまいます。

「タスクバー以外の領域で最大化」をするには、
どうすればよいでしょうか?
563デフォルトの名無しさん:2007/11/27(火) 10:27:25
タスクバーのプロパティーで、「タスクバーを自動的に隠す」のチェックを外す。
やさしいな俺。
564デフォルトの名無しさん:2007/11/27(火) 10:50:51
Tメモに選択状態のテキストがあるかどうか知る方法は?
565デフォルトの名無しさん:2007/11/27(火) 10:57:05
SelLength
566デフォルトの名無しさん:2007/11/27(火) 21:27:30
>>565
出来ました。
サンクス。
567ななしへたぐらま ◆XcB18Bks.Y :2007/11/28(水) 01:50:19
>>513
亀なのでもうご覧になっていないと思いますが…今更シリーズ(汗)

このご質問のポイントはひとつは文字列から日付型への独自の変換という点ですが
もう一つ大事なのがDBEditコンポで編集した文字列を独自の方法で変換する処理をどこに組み込むかという点です。

後者が分からずレスできなかったのですがどうやらフィールドオブジェクトのOnSetDataイベントで対応できるようです。
このイベントはDBEditコンポなどで編集した文字列をフィールドの型に変換する処理を好きなようにできるものです。
つまり、このイベントハンドラで入力された文字列をチェックして、
もし月/日の形式で本日以前なら来年にするようにします。

◆まず文字列の判定と文字列から月日への変換関数を作ります。
(ここではくだすれではおなじみの正規表現ユニットを使いました。DLして使える状態にした上でusesにRegExprを追加)

{★文字列が"月/日"形式かどうかを調べる関数.そうならTrue、違うならFalseを返す}
function IsMonthAndDayStr(const s: string): boolean;
var
 IsYMDFormat, IsMDFormat: boolean;
begin
 IsYMDFormat := ExecRegExpr('[0-9]+/[0-9]+/[0-9]+', s );
 IsMDFormat := ExecRegExpr('[0-9]+/[0-9]+', s );
 Result := (not IsYMDFormat) and (IsMDFormat);
end;
(つづく)
568ななしへたぐらま ◆XcB18Bks.Y :2007/11/28(水) 01:51:07
>>567のつづき)
{★文字列を日付型に変換する.文字列に年が含まれていない場合,
 本日の前なら来年の同日に,本日以後なら今年の日付にする.}
function MyStrToDate(const s: string): TDate;
var
 aDate: TDate;
begin
 // 月/日だけ入力されている場合は
 if IsMonthAndDayStr(s) then
 begin
  // StrToDateで変換してみる(今年の日付になる)
  aDate := StrToDate(s);
  // この日付が今日より前なら丸1年先にする(※今年の1年先なので来年になる)
  if aDate < Date then
   aDate := IncMonth(aDate, 12);
  // 日付をフィールドオブジェクトに書き込む
  Result := aDate;
 end
 // さもなくば普通に変換した値を返す
 else
  Result := StrToDate(s);
end;

◆次にイベントハンドラを作ります。
ここでは実行時、データセットを開いたときにイベントハンドラを割り当てるようにします。
データセットを開いたときに日付型フィールドを探してOnDataSetイベントにイベントハンドラを割り当てます。
以下のコードはデータセットがTable1でデータモジュールDataModule1に載っかっている場合の例です。
(つづく)
569ななしへたぐらま ◆XcB18Bks.Y :2007/11/28(水) 01:52:24
>>568のつづき)
(宣言…TDataModule1のprivate節に)

  procedure DateField_SetData(Sender: TField; const Text: String);

(実装)

{☆日付フィールドのOnDataSetイベントハンドラ:
 入力された文字列を独自のルールで日付型の値に変換します。}
procedure TDataModule1.DateField_SetData(Sender: TField;
 const Text: String);
begin
 Sender.AsDateTime := MyStrToDate(Text);
end;

{☆Table1のAfterOpenイベントハンドラ(データセットが開かれたときに呼び出される):
 すべての日付型フィールドのOnDataSetイベントにイベントハンドラを割り当てます}
procedure TDataModule1.Table1AfterOpen(DataSet: TDataSet);
var
 i: integer;
begin
 for i := 0 to pred(DataSet.FieldCount) do
  if DataSet.Fields[i].DataType = ftDate then
   DataSet.Fields[i].OnSetText := DateField_SetData;
end;

※DateField_SetDataは全部手書きで入れてください。
 Table1AfterOpenのほうはオブジェクトインスペクタでAfterOpenをダブルクリックすると
 カラのイベントハンドラができますのでここに書き込んでください。

570ななしへたぐらま ◆XcB18Bks.Y :2007/11/28(水) 01:55:07
補足:
 くだすれPart 6の586氏の書き込みがヒントになりました。感謝いたします。
571デフォルトの名無しさん:2007/11/28(水) 02:14:07
いつもご苦労だが、もうちょっとタイミング良く出てきてやってくれよw
572ななしへたぐらま ◆XcB18Bks.Y :2007/11/28(水) 06:19:00
どうしてもいい方法が見つからなくてお蔵入りしていたのですが急に見つかったもので…w
でも日付の変換処理だけは先にできていたので一度カキコすれば良かったかもしれません。
573デフォルトの名無しさん:2007/11/28(水) 14:01:31
procedure, function の一覧を表示するObject Treeviewのようなものはないんでしょうか?
574デフォルトの名無しさん:2007/11/28(水) 14:59:30
プログラム自身が実行されているPATHは
どうすれば取得できますか?
575デフォルトの名無しさん:2007/11/28(水) 15:30:38
ExtractFilePath(ParamStr(0))
576デフォルトの名無しさん:2007/11/28(水) 17:19:44
ParamStr(0)は絶対パスを返すとは限らない。
Application.ExeNameがベター
577デフォルトの名無しさん:2007/11/28(水) 17:35:42
TApplication.GetExeNameがParamStr(0)を帰しているという現実に立ち向かう
コードファイター576先生の次回作にご期待ください。
578デフォルトの名無しさん:2007/11/28(水) 17:41:44
Delphi6 Personal無料版を使用しているユーザーです。
http://www.wakhok.ac.jp/~tetsuo/programing/Delphi/text/chap01/pb0105.html
上記のページの、スピンエディットの値が0以下に変更できなくする方法が分かりません。
色々検索してみて、たどり着いた結果が以下なのですが、普通に0以下に変更できてしまいます。

procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
if(SpinEdit1.Value <1) then abort;
end;
579575:2007/11/28(水) 17:45:05
>>576
そういう事実は俺も初めて知った...
ApplicationはDLLで使うときに正しく返さないからこう覚えていたんだよね。
580デフォルトの名無しさん:2007/11/28(水) 20:20:00
うははは、DLL で Application を参照する時点で(r
581デフォルトの名無しさん:2007/11/28(水) 23:06:29
GetModuleFileName( HInstance, Path, SizeOf( Path ) );
582デフォルトの名無しさん:2007/11/29(木) 02:07:27
>>576先生はDelphi4のParamStr問題と未だに戦ってるんだよ
Delphi5以降を使ってるみんなはParamStr推奨でおk
583デフォルトの名無しさん:2007/11/29(木) 05:31:27
>>575-576
ありがとうございます。
よくわからないのですがParamStr(0)を使う事にしました
584デフォルトの名無しさん:2007/11/29(木) 16:17:12
ParamStr(0) じゃ意味わからんだろ?素人に限って妙な小技にこだわってわざわざプログラムをわかりにくく書こうとする。
Application.ExeName をつかうのがベター
585デフォルトの名無しさん:2007/11/29(木) 16:39:58
function TApplication.GetExeName: string;
begin
Result := ParamStr(0);
end;
586デフォルトの名無しさん:2007/11/29(木) 18:25:29
クォート自体を文字として使いたいのですが
\' が使えませんでした。 どうやって入力するもんなんですか?
587デフォルトの名無しさん:2007/11/29(木) 18:32:28
S := #39'AAA'#39;
588デフォルトの名無しさん:2007/11/29(木) 18:46:13
s:='''AAA'''
589デフォルトの名無しさん:2007/11/29(木) 18:59:29
procedure UseCommaText(DataStr:string);
begin
stringlist1.commmaText := DataStr;



のように、CommaTextにString型の変数を与えて処理をする手続きをつくったのですが、
このDataStrに'123,99,99,200,150'のように''でくくった文字列を与えるとちゃんと所定の処理をしてくれるのですが、例えばstring1 :='123,99,99,200,150' のようにして、
string1を引数にすると処理をしてくれません…
'123,99,99,200,150'とこれを入れたstring1ではどう違うというのでしょうか?
また、この現象を回避するにはどうすればいいんでしょうか?お願いします。
590デフォルトの名無しさん:2007/11/29(木) 19:10:16
function UseCommaText(s: String): String;
var
sl: TStringList;
begin
sl := TStringList.Create;
sl.CommaText := s;

Result := sl.Text;
sl.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
s: String;
begin
ShowMessage(UseCommaText('123,99,99,200,150'));

s := '123,99,99,200,150';
ShowMessage(UseCommaText(s));
end;

全く問題ないけど?
591デフォルトの名無しさん:2007/11/29(木) 19:12:44
>>585
w

Forms.pasではそうなってるなw
592デフォルトの名無しさん:2007/11/29(木) 19:52:38
わろた
593デフォルトの名無しさん:2007/11/29(木) 20:01:46
Vistaの標準メニューにアイコンを表示させるにはどうすればいいでしょうか?
TMenuにTImageListを設定してメニュー表示するとオーナードローになって
標準のメニューとは違って違和感があります
594デフォルトの名無しさん:2007/11/29(木) 21:03:05
>>587-588
ありがとうございました!
595デフォルトの名無しさん:2007/11/30(金) 01:45:52
>>584-585
他の言語でもargv[0]が自分のパスだったりしますし、小技ではなく一般的な話です
玄人ぶってる人に限って内部の動作を全く知らないといういい例ですね
違った意味で勉強になりました
596デフォルトの名無しさん:2007/11/30(金) 01:51:04
うーん、ParamStr(0) より Application.ExeName の方が可読性に優れてると思うんだけどな
597デフォルトの名無しさん:2007/11/30(金) 02:08:04
>>596に1票
好みの問題かもしれんが
598デフォルトの名無しさん:2007/11/30(金) 02:16:21
>>590
異なるunitにこの関数を書いているのですが、なぜかうまくいきません。
空文字を入れたのと同じ結果になってしまうのです。

もうちょっと悩んでみますね。
599デフォルトの名無しさん:2007/11/30(金) 02:17:10
まあ可読性はApplication.ExeNameの方が上だろうけど、
>>576ときて>>584だから恥ずかしい奴なんだよね。
600デフォルトの名無しさん:2007/11/30(金) 02:18:14
Forms.pas必須なのが痛い
601デフォルトの名無しさん:2007/11/30(金) 02:22:39
可読性と汎用性のどっちを取るかという問題だと思うが、
この程度に可読性も糞もないと思うのでParamStr(0)でいいと思う
コンソールやDLLで使うときなんかサイズ膨れるだけでいいことないし
602デフォルトの名無しさん:2007/11/30(金) 03:30:34
>>598
ShowMessage(DataStr);
stringlist1.commmaText := DataStr;
603デフォルトの名無しさん:2007/11/30(金) 08:08:48
普通はParamStr(0)
604デフォルトの名無しさん:2007/11/30(金) 09:02:16
どっちでもいいよ。
結果同じなんだから。
好みの違い。
605デフォルトの名無しさん:2007/11/30(金) 09:25:10
どーでもいいけど、ParamStr(0)を知っていればParamStr(1)も使えるね
606デフォルトの名無しさん:2007/11/30(金) 14:35:47
576 :デフォルトの名無しさん:2007/11/28(水) 17:19:44
ParamStr(0)は絶対パスを返すとは限らない。
Application.ExeNameがベター

584 :デフォルトの名無しさん:2007/11/29(木) 16:17:12
ParamStr(0) じゃ意味わからんだろ?素人に限って妙な小技にこだわってわざわざプログラムをわかりにくく書こうとする。
Application.ExeName をつかうのがベター

604 :デフォルトの名無しさん:2007/11/30(金) 09:02:16
どっちでもいいよ。
結果同じなんだから。
好みの違い。


なんという変わり身
607デフォルトの名無しさん:2007/11/30(金) 14:56:02
ParamStrなんて基本中の基本じゃねーか
これで可読性下がるなんて言ってるやつはほとんどのソース読めないだろw
608デフォルトの名無しさん:2007/11/30(金) 16:25:09
おまえらもしつこいね。
609デフォルトの名無しさん:2007/11/30(金) 16:33:56
こだわってるのは約2名なんじゃないか?w
610デフォルトの名無しさん:2007/11/30(金) 16:56:26
「Leeyes」のようなサムネイル表示するファイラをDrawGridを使って作ってるんですが、
ListViewをvsIcon表示にしたときのマウス・キーボード操作(例えばControlキーを押しながら
アイテムをクリックすると複数選択ができるとか)をDrawGridで実現しようとすると
OnMouseDownやOnKeyDownイベントなどで自前で実装するしかないですか?
今のところそれで一通り作ったんですが、もっと他に良い方法はありますか?
611デフォルトの名無しさん:2007/11/30(金) 17:35:44
>>608-609
今日も自演お疲れ様です
612575:2007/11/30(金) 17:52:39
おまいらいい加減に汁。
方法がいくつかあるって分かっただけでも
>>574 は幸せじゃないのか。
613デフォルトの名無しさん:2007/11/30(金) 18:07:58
汁 じゃ意味わからんだろ?素人に限って妙な隠語にこだわってわざわざレスをわかりにくく書こうとする。
しろ と書くのがベター
614575:2007/11/30(金) 18:28:15
結局最後は俺ですかorz
615デフォルトの名無しさん:2007/11/30(金) 19:52:13
もうどうにでもなぁ〜れ

   *``・*。
   |   `*。
  ,。∩    *
 + (・ω・`)*+゚
 `*。 ヽ つ*゚*
  `・+。*・`゚⊃ +゚
  ☆ ∪~ 。*゚
  `・+。*・ ゚
616デフォルトの名無しさん:2007/11/30(金) 21:27:30
オレも>>596に1票
どうにもマジックナンバー臭くて嫌い>Zero
617デフォルトの名無しさん:2007/11/30(金) 21:28:49
しろ と書くように汁 だったら面白かったのに
618デフォルトの名無しさん:2007/11/30(金) 22:31:22
グローバルの定数ってどうやって宣言するんですか?
var節じゃなくてconst節に書くって読んだんですが,,,

var
Form1: TForm1; の下に書いてみましたが動きませんでした.
619デフォルトの名無しさん:2007/11/30(金) 23:00:55
>>617
時代に乗り遅れてんな
これからはベターの時代なんだよ
>>606をよく読むのがベター
620デフォルトの名無しさん:2007/11/30(金) 23:07:59
>>618
書き方がおかしいんだろ。
書いた所見せてみろ。
621デフォルトの名無しさん:2007/11/30(金) 23:11:52
>>618
もっと上のほうに書くといいよ
622デフォルトの名無しさん:2007/12/01(土) 00:06:23
さて、そこで本題にもどるが
ParamStr(0)でいいとかいってるバカはたぶん
いちいち定数をラベルや const にせず数値で打ち込んでるんだろうなw
なにしろ結果が同じだからなww
そもそも何の意味もない引数の 0 がコマンドライン引数の最初をあらわすインデクスである
という事実自体、特定のコマンドラインインターフェイスの実装に結びついたものであり
ポータビリティを損なう一因であるということがわからないようじゃ、プログラマ失格だな。
623デフォルトの名無しさん:2007/12/01(土) 00:06:54
おっと、ベターを書き忘れた。
Application.ExeName をつかうのがベター
624デフォルトの名無しさん:2007/12/01(土) 00:09:39
コンソールやDLLを作るときにわざわざFormsをusesする奴は間抜けって話だろ。

そもそもParamStrは引数の取得に必須だし。
625デフォルトの名無しさん:2007/12/01(土) 01:32:39
>>622-623
そのApplication.ExeNameがParamStr(0)を返すだけという実装になっていることについてどうお考えですか?
ついでに言えばKylixが死亡確定しDelphi自体がもはやWindows専用となっていてポータビリティも糞もない件についてもお願いします。
626デフォルトの名無しさん:2007/12/01(土) 01:34:57
もうどっちでもいいよ
627デフォルトの名無しさん:2007/12/01(土) 01:35:44
ウインドウアプリでもコマンドライン引数は必要だろ
628デフォルトの名無しさん:2007/12/01(土) 01:41:17
>>622
もう楽になれよ・・・・お前が馬鹿なのはみんな気付いてるんだからさ・・・・・
629デフォルトの名無しさん:2007/12/01(土) 01:56:57
いまさらDelphiで移植性を語ってるアホは貴重だな
みんな丁重に扱ってやれ。絶滅危惧種だぞ
630デフォルトの名無しさん:2007/12/01(土) 02:40:56
その前にDelphiユーザー自体絶滅危惧種だぜ。
631デフォルトの名無しさん:2007/12/01(土) 03:09:21
こだわってるのは2名なんだろうけど、たぶん片方が以前のグローバルフック君だと
思われる。他のスレと違って、Delphi板なんてユーザー少ないんだし、ほとんど同じ奴しか
見ていない。毎回面倒、起すのは決まって同じ奴。
632553:2007/12/01(土) 03:44:06
えっとー・・・、>>553 なんですが、やっぱムズいっすかね。
633ななしへたぐらま ◆XcB18Bks.Y :2007/12/01(土) 06:12:34
>>610
グリッドを使う場合は全部自前でしょうね。
アイテムの複数選択も自前。

しかし標準のリストビューにないような表示をさせようとするとドツボにはまることも多いわけで
グリッドをよく使っています。

634デフォルトの名無しさん:2007/12/01(土) 08:11:17
576 :デフォルトの名無しさん:2007/11/28(水) 17:19:44
ParamStr(0)は絶対パスを返すとは限らない。
Application.ExeNameがベター

584 :デフォルトの名無しさん:2007/11/29(木) 16:17:12
ParamStr(0) じゃ意味わからんだろ?素人に限って妙な小技にこだわってわざわざプログラムをわかりにくく書こうとする。
Application.ExeName をつかうのがベター

604 :デフォルトの名無しさん:2007/11/30(金) 09:02:16
どっちでもいいよ。
結果同じなんだから。
好みの違い。

608 名前:デフォルトの名無しさん[sage] 投稿日:2007/11/30(金) 16:25:09
おまえらもしつこいね。

しかし、ParamStr(0)の0がマジックナンバーだっていうやつは
Cのmainでパラメータ使うときはどうすんのかな・・・わざわざ定義すんのかね。あほくさ。
635デフォルトの名無しさん:2007/12/01(土) 09:20:17
俺の前作ったGUIアプリは、ファイル名の取得には、ExeName使って、コマンドライン引数の
取得ではParamStr(0)以外のParamStrとParamCount使ってるな。まぁ、意識はしてなかったが、
>>622の言うつくりには自然となっていた。
636デフォルトの名無しさん:2007/12/01(土) 09:27:58
//チラシの裏
#define APP_DIRECTORY ExtractFilePath(Application->ExeName)
637610:2007/12/01(土) 10:48:07
>>633
レスありがとうございます><
では今の方法で行くことにします。
638デフォルトの名無しさん:2007/12/01(土) 13:52:04
>>634
> Cのmainでパラメータ使うときはどうすんのかな・・・わざわざ定義すんのかね。あほくさ。
Cはもともと美しくない
639デフォルトの名無しさん:2007/12/01(土) 15:36:27
マジックナンバーってのは 他人が見たり将来の自分が見て意味が判らないと困るぞっていう事。

アプリに渡されるパラメータの0番目は実行ファイル名って常識があるなら別に 0 って数字は意味不明な数字じゃない。

奇数と偶数の判定をするのに ( x and 1) と書くようなもので、
この1をラベルにしたら余計に判らない。

と、落ち着いてきたので燃料を少し足してもる
640 ◆XcB18Bks.Y :2007/12/01(土) 17:22:06
>>637
>>633を読み返してみたら我ながら意味不明でしたスイマセン。

> しかし標準のリストビューにないような表示をさせようとするとドツボにはまることも多いわけで
 
はリストビューを使う場合の話です。
641デフォルトの名無しさん:2007/12/01(土) 22:32:39
>>639
PascalならOdd(x)の方が可読性が高いけど。
642デフォルトの名無しさん:2007/12/01(土) 22:39:04
足してもる
643デフォルトの名無しさん:2007/12/02(日) 00:12:34
何時何分になったら処理を実行のようにしたいのですが
どのコンポーネントをつかったらいいかわかりません
ご存知の方いらっしゃったら教えてください
644デフォルトの名無しさん:2007/12/02(日) 00:22:55
TimerのIntervalを1000にしてOnTimerで時刻をチェックして時間になったら処理を行う。

あるいは指定時刻-現在時刻をミリ秒数で算出してIntervalに突っ込む。
645デフォルトの名無しさん:2007/12/02(日) 00:30:58
俺は肉だぞ!
646643:2007/12/02(日) 01:06:47
>>644
ありがとうございます
なるほど
指定-現在は知りませんでしたし思いつきもしませんでした
後者でやってみます
647デフォルトの名無しさん:2007/12/02(日) 02:23:23
時間指定で直近の一回だけ稼動するアラームを作ってみました
間違ってるところがあるかもしれませんが貼ってみます


procedure armtime(time:string);
var
d :TDateTime;
begin
d:=StrToTime(time+':00')+Trunc(now)-now;
if d<0 then d:=d+1;
form1.Armtimer.Interval:=Trunc(d*24*60*60*1000);
form1.Armtimer.Enabled:=true;
end;

procedure TForm1.N14Click(Sender: TObject);
begin
armtime('02:16');
end;

procedure TForm1.ArmtimerTimer(Sender: TObject);
begin
form1.Armtimer.Enabled:=false;
showmessage('armtimer');
end;
648デフォルトの名無しさん:2007/12/02(日) 02:28:31
ExtractFilePath(Application.ExeName)//+FILE_NAME
3か4の時に教わったこれしか知らんから何年もこれだけ使ってるオレはド素人。
649デフォルトの名無しさん:2007/12/02(日) 02:32:19
いつまでそんな話続けるつもりだよ低脳
650デフォルトの名無しさん:2007/12/02(日) 03:36:39
ParamStr(0)の実装が関数経由でAPI叩いてるのに対して、
Application.ExeNameの実装がParamStr(0)呼ぶだけってとこで
某としてどっちがメインかはどんな池沼でも分かるだろ
651デフォルトの名無しさん:2007/12/02(日) 03:40:43
↑WindowsAPI 直叩きこそが唯一正しいプログラムで、ラッパーは邪道という天才が現れました。
こういうキチガイはなぜわざわざ遠まわしに呼び出すだけの関数を用意してるのか、その意味すらわからんのだろうな。
さすが天才は頭の作りが違う。
652デフォルトの名無しさん:2007/12/02(日) 03:41:46
Application.ExeName はなんであるんでしょうねー?
いったい何のためにそんなムダな関数があるんでしょうねえー??ふしぎですねええーーー??
653デフォルトの名無しさん:2007/12/02(日) 03:59:48
>こういうキチガイはなぜわざわざ遠まわしに呼び出すだけの関数を用意してるのか
君みたいな馬鹿のためでしょ?(笑)
あ、もちろん馬鹿だからって自分を責めることはないですよ。
生まれつきですから仕方ないと思います^^
654デフォルトの名無しさん:2007/12/02(日) 04:09:39
もういい加減やめようぜw
655デフォルトの名無しさん:2007/12/02(日) 04:13:54
こんな事しか話す事がないのが今のDelphi
656デフォルトの名無しさん:2007/12/02(日) 07:48:50
まぁ、でも柔軟な発想ができない奴がいるよな。考え方が古くて、知識だけの。
経験も重要だけど、知識なんて本読めば書いてあるんだから、それをいかにいかすかだろ。
こいつとか
>>653
こいつとか
>>653
こいつかとか
>>653
657デフォルトの名無しさん:2007/12/02(日) 10:36:13
↑柔軟な発想ができない奴
658デフォルトの名無しさん:2007/12/02(日) 11:31:27
今時、色々知ってる奴なんてごろごろいるし、流行らんのは確かだな。
659デフォルトの名無しさん:2007/12/02(日) 14:55:03
>>650って要するにApplication.ExeNameがメインって事じゃないの?
651が的外れに思えて仕方ないんだが。
660デフォルトの名無しさん:2007/12/02(日) 15:19:43
>>651>>656がキチガイなのは痛いほど分かったなw
661デフォルトの名無しさん:2007/12/02(日) 16:40:27
結局、ParamStr(0)がExeNameと同じであることをしってながら知識を
活かしきれていない典型的な例ってことか。ナムナム。
662デフォルトの名無しさん:2007/12/03(月) 00:51:59
>576 名前:デフォルトの名無しさん[sage] 投稿日:2007/11/28(水) 17:19:44
>ParamStr(0)は絶対パスを返すとは限らない。
>Application.ExeNameがベター

これが明らかに間違ってたから、今更引っ込みが付かないんだろうよw
663デフォルトの名無しさん:2007/12/03(月) 00:56:25
Application.ExeName厨って1人なのか?
何人もいるように見える
664デフォルトの名無しさん:2007/12/03(月) 01:30:36
彼しつこいから、俺がExeName房に参戦してる。
665デフォルトの名無しさん:2007/12/03(月) 02:06:46
>>576を書いていた時点ではExeNameが絶対だと信じてたのに、
実はその内容が忌み嫌ってたParamStr(0)そのままという事実が受け入れられないわけだ

>まぁ、でも柔軟な発想ができない奴がいるよな。考え方が古くて、知識だけの。
>経験も重要だけど、知識なんて本読めば書いてあるんだから、それをいかにいかすかだろ。

これはきっと自分に言い聞かせてるんだろうな
がんばって欲しいものだ
666デフォルトの名無しさん:2007/12/03(月) 03:01:21
プログラム内に大きなバイナリーデータを持ちたいのですが
なにかいい、コンテナみたいな実装方法はないでしょうか?
667デフォルトの名無しさん:2007/12/03(月) 03:34:35
>>665
>>事実が受け入れられないわけだ
事実だってよ。ワロス。事実を受け入れられないのおまえじゃねぇか。必死に、ExeName房が一人であると
>>スレ番号=>>スレ番号とか事ある事に必死に書いてるところが。ははは。哀れだな。


668デフォルトの名無しさん:2007/12/03(月) 04:20:23
誰も">>スレ番号=>>スレ番号"なんて書いてないと思うんだが、
>>667は頭がおかしくなりすぎて幻が見えてるんだろうか…?
ちょっとかわいそうを通り越して怖くなってきたからこれ以上触るのやめとく
お前らもリアルキチガイいじめるのはマジやめろ
669デフォルトの名無しさん:2007/12/03(月) 04:22:29
>>666
コンテナって何だろ?
よく分からないけどリソースとかじゃだめなの?
670デフォルトの名無しさん:2007/12/03(月) 04:26:10
>>669
ありがとうございます
コンテナといったのは、感覚的な表現です
リソースなんですが、どうやって組み入れたらよいか、よくわかっていません。
671デフォルトの名無しさん:2007/12/03(月) 04:29:14
>>667
>>>>スレ番号=>>スレ番号とか
スレ番号だってよ。ワロス。スレ番号なんて言ってるのおまえだけじゃねぇか。必死に、レス番号ではなく
>>スレ番号=>>スレ番号とか事ある事に勘違いしたこと書いてるところが。ははは。哀れだな。
672デフォルトの名無しさん:2007/12/03(月) 04:37:24
>>667
さすがに引いたわ。。。
673デフォルトの名無しさん:2007/12/03(月) 04:44:32
>>670
ヘルプや検索エンジンですぐに解決します。
674デフォルトの名無しさん:2007/12/03(月) 04:53:40
>>670
>>リソースなんですが、どうやって組み入れたらよいか、よくわかっていません。
リソースだってよ。ワロス。リソースを読み取るクラスはTResourceStreamじゃねぇか。必死に、このクラスの名前を
グーグルで検索すれば事ある事に誰か解説書いてるところが。ははは。楽勝だな。

>>667を改変するのは大変だなw
もう少しまともな日本語で書いてくれればよかったのに
675デフォルトの名無しさん:2007/12/03(月) 05:25:20
お前ら暇だな
676670:2007/12/03(月) 05:43:30
>>673
解決しました。ありがとうございました。
677670:2007/12/03(月) 05:44:14
>>674
あ、丁寧にありがとうございます。
678デフォルトの名無しさん:2007/12/03(月) 09:24:30
バイナリデータだったら TMemoryStream 使うかな
679デフォルトの名無しさん:2007/12/03(月) 10:03:41
>>668のこんな時間帯に書き込んで、やっぱニートの類だったか。
まぁ、ExeName房に対する彼のしつこさから何となくニートだろうなって
思ってたけど、環境が性格を形成する典型的な見本だね>>668の彼は。
彼がニートになったから性格悪くなったのか、それとも性格悪かったからニートに
なったのかは知らんけどさ。
しかもニート歴長いせいで世間一般の感覚忘れたのかしらんがこんな過疎スレ
でそんな時間帯に書き込む奴いねぇってのに
別人のフリしちゃって>>671,>>672は。(オツカレサマです)

生活が昼と夜逆転して大変そうですね(頑張ってください)。

680デフォルトの名無しさん:2007/12/03(月) 10:07:34
これはひどい
681デフォルトの名無しさん:2007/12/03(月) 10:40:12
TMyClass = class
public
 constructor Create(const Hoge: String); overload;
 constructor Create(const Foo: Integer; const Bar: String); overload;
end;

上記のように2種類の引数付きコンストラクタをオーバーロードして宣言したのですが、
引数なしのコンストラクタも呼ぶことができてしまっています。

おそらく自動的に継承されるTObjectのコンストラクタが
呼び出せてしまっているのが原因だと思いますが、
引数無しのコンストラクタを呼び出せないようにするにはどうすればいいのでしょうか?
682デフォルトの名無しさん:2007/12/03(月) 10:50:15
どうにもならない。
デフォルト引数を指定して破綻なく動くようにするか

constructor TMyClass.Create(const Hoge: String);
begin
 raise Exception.Create('呼ぶなゴルァ');
end;

みたいなのを定義して実行時に検出するか
気にしないのいずれか。
683681:2007/12/03(月) 11:46:22
>>682
うーむ無理なのか・・・
素直に引数無しのコンストラクタを実装することにします。ありがとうございました。
684デフォルトの名無しさん:2007/12/03(月) 15:05:19
679 名前:デフォルトの名無しさん[sage] 投稿日:2007/12/03(月) 10:03:41
>>668のこんな時間帯に書き込んで、やっぱニートの類だったか。
まぁ、ExeName房に対する彼のしつこさから何となくニートだろうなって
思ってたけど、環境が性格を形成する典型的な見本だね>>668の彼は。
彼がニートになったから性格悪くなったのか、それとも性格悪かったからニートに
なったのかは知らんけどさ。
しかもニート歴長いせいで世間一般の感覚忘れたのかしらんがこんな過疎スレ
でそんな時間帯に書き込む奴いねぇってのに
別人のフリしちゃって>>671,>>672は。(オツカレサマです)

生活が昼と夜逆転して大変そうですね(頑張ってください)。
685デフォルトの名無しさん:2007/12/03(月) 17:07:16
フォーム内にある全コントロールのフォントサイズを
デザイン時のx倍にする関数を作りたいのですが上手くできません。

最初はフォームのComponentsをTControlにキャストして
Fontプロパティを操作すればいいと考えていましたが、
VCLのソースを見るとTEditなどの最下位のクラスでしか
Fontプロパティが公開されていないためできませんでした。

何かスマートなやり方があれば教えてください。
686デフォルトの名無しさん:2007/12/03(月) 17:09:52
TForm.ChangeScale
687デフォルトの名無しさん:2007/12/03(月) 17:24:32
>>686
こんな関数があったとは・・・俺もまだまだ勉強が足りないなぁ

ChangeScaleで期待通りの動作をしてくれました。ありがとう!
688デフォルトの名無しさん:2007/12/03(月) 17:25:37
>>679
もはやExeNameの優位性を説くことは諦めて、人格攻撃に出たか
本筋から外れて攻撃するということは負けを認めたってことですね
お疲れ様でした^^
689デフォルトの名無しさん:2007/12/03(月) 17:32:46
>>687
みんな、同じように苦労してたまたま知って覚えてるだけw
690デフォルトの名無しさん:2007/12/03(月) 17:33:45
>>>スレ番号=>>スレ番号とか事ある事に必死に書いてるところが。ははは。哀れだな。

>別人のフリしちゃって>>671,>>672は。(オツカレサマです)

やっぱり自分に言い聞かせてたんだな(笑)
691デフォルトの名無しさん:2007/12/03(月) 23:33:11
>>682
private の引数なしコンストラクタを宣言するのではだめか?
692デフォルトの名無しさん:2007/12/03(月) 23:39:27
>>679
この板にいながらデスマ中の人間の存在を忘れる方がどうかしてるだろ
693デフォルトの名無しさん:2007/12/03(月) 23:48:50
すぐにニートを思い浮かべたり、ニートの生態をよく知ってるところから推測すると、
きっと彼自身もニートなんだよ。だからあまり仕事の話は触れてやるな。かわいそうだろ?
694デフォルトの名無しさん:2007/12/04(火) 00:38:49
すいません、Application.ExeName という関数をみつけたんですが
これはどういうときに使うんでしょうか?
まったく使わない関数が定義されてるとは思えないので。ぜひ教えてください。
695デフォルトの名無しさん:2007/12/04(火) 00:50:38
delphiのハイブリット化ってどうすんの?
意味がさっぱりわかりません
696デフォルトの名無しさん:2007/12/04(火) 01:25:55
それより、ParamCount = 1 で ParamStr(1) が使えるのって変じゃないか?
0,1 が使えるなら、ParamCount = 2 であるべき。
697デフォルトの名無しさん:2007/12/04(火) 02:52:53
じゃあLength(string)=1でstring[0]が使えるのも変なの?(shortstringの場合で)

ま、歴史的経緯ってだけでしょ
そっちの方が分かりやすくても互換性のためにそのままにしなければならないし
698デフォルトの名無しさん:2007/12/04(火) 02:56:24
じゃあLength(string)=1でstring[0]が使えるのも変なの?(性的な意味で)
699デフォルトの名無しさん:2007/12/04(火) 02:57:11
間違えた、string[1]だった
文字列もshortstringという歴史があったせいで添字が1からだけど、
今のstringは構造上0からでも問題ないんだよな
そういう思い切った互換性切捨てでもやってくれればいいんだけど、企業体力的に無理だろうなぁ…
700デフォルトの名無しさん:2007/12/04(火) 06:45:44
デスマですか?会社から書き込んだんですかね?それとも家から?
最近情報漏洩にうるさいので、会社から2chなんて
間違っても私は見ないですよ。情報収集目的のために
インターネット検索が許されている現場でも2chだけは
私は見ませんでしたよ。家からですか?デスマ中に1時間も
書けて2chで家から粘着するなんてすごい元気ですね。
君がデスマ中で大変な時に2chでそんな事しますか(私はとっとと寝ます)???
それとも、情報漏洩にあまりうるさくない10人くらいの小さな会社ですか??
そんな小さな規模のプロジェクトでデスマ起こすのですか???
そんな小さな規模の見積もりもできない会社を見つけるなんて大変そうだな。

本当にデスマなんですか?????
701デフォルトの名無しさん:2007/12/04(火) 08:12:38
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を
勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが
お礼はDelphiの布教と初心者の救済をお願いします。
702デフォルトの名無しさん:2007/12/04(火) 09:14:15
>>696
Items の Count 何かと違って、ParamCount はパラメタの数だからでしょ。
ん?てことは ParamStr(0) が第一パラメタになるのが本当なのかな?
703デフォルトの名無しさん:2007/12/04(火) 10:20:53
>>700
漏れは上で書き込んでるやつとは違うが・・・。
何カリカリしてるんだ、たがが2chだろw まあオチケツ。

そんな漏れも普通に就業中に2chで息抜き。 ほかの奴らはMIXIやったりもしているww
漏れは今は海外にいるのでデスマもないしでマターリだけど、本社でもやっぱ2chやってる人
間はいたなw
704デフォルトの名無しさん:2007/12/04(火) 15:13:36
>>703
もう触るな
そうやって触るからまた来るんだろ
705デフォルトの名無しさん:2007/12/04(火) 15:50:51
>>700
なあ、ひとつ聞きたいんだが、もし仮にお前の言うとおりニートが書き込んでたとしても、
それはお前がニートですら知ってるExeNameの実装方法を知らなかったってことになるんだぞ?
お前の知識はニート以下っていう烙印を自ら押すことになると思うんだが、それでいいのか?w
706デフォルトの名無しさん:2007/12/04(火) 22:01:52
オレも聞きたいんだが、真剣に。
会社から2ch見たら情報漏洩すんのか?
707デフォルトの名無しさん:2007/12/04(火) 22:05:52
会社が2chをアクセス禁止にしたら、激しく生産性が落ちたって話は聞いたことある。

ム板は便利ってことだわ。
708デフォルトの名無しさん:2007/12/04(火) 23:33:55
他の企業奴隷はともかく、マは逆らう元気すらないからな
目の前の仕事を何とか片付けるのに必死すぎて
>>700はいかにもネットで書かれてるようなネタを並べただけで現実が分かってない気が
709デフォルトの名無しさん:2007/12/05(水) 01:10:40
>>705
そんなさ、たかが1つの事柄知ってないか、知ってないかで、それでその人のランクが決まっちゃうの??
すげぇーなぁ。俺、そんな考え方理解不能です。知識偏重って奴ですか?
今時のIT技術者はやるべきことたくさんあって、すべてを頭に詰め込むのははっきり言って無理だから、今回の例でいう、
ExeNameの細かな実装方法を覚えるより、調べ方の方が大事だと思うけどな。
クラサバしかやってないとか?クラサバ・ウェブアプリ・データベースなどいちいちすべての事の詳細を覚えてたら頭パンクします。
>>706
ごめん、情報漏洩じゃねぇな。私用でインターネット利用するなってやつだ。
俺の行くところでは大体見たサイトのログ取ってて、全くインターネット禁止の
ところもあれば、仕事で必要な情報検索ならOKのところが大半だが、インターネット利用
OKのところでも、先輩とかに聞くと2chはどういう目的で利用したか聞かれた時、説明する
が面倒だから、2chはやめろって言われるけどね。
>>707
俺も、生産性落ちると思うけど、大・中規模の企業みたいな組織はそうはいかないんだよね。
現実的にはね。
>>708
マは逆らうって??どういう意味?
710デフォルトの名無しさん:2007/12/05(水) 01:18:39
ieのログイン方法教えて下さい
711デフォルトの名無しさん:2007/12/05(水) 01:18:54
まぁ、俺がいいたかったのは、ただでさえプログラム人口少ないのに、さらに
その中でもすげぇー過疎ってるDelphiスレで偶然にもあの日の朝明け方近くに
偶然にもデスマ中かなんかのやつが>>668,>>671,>>672と3人もいた。
普通に考えてこう考える方が説得力ねぇよ。そんな偶然の偶然が重なりあった日に
俺が書き込んでいたとしたら、うれしさと興奮のあまり、

ちんこたっちゃいます。
712デフォルトの名無しさん:2007/12/05(水) 03:40:07
_________________________
   ||
   || 2chの鉄則 【 荒らしは無視・放置 】 しましょう。
   || 
   || ★ 荒らしは放置されるのが一番苦手です。
   ||   → ウザイと思ったらそのまま放置!
   || ▲ 放置された荒らしは煽りや自作自演であなたのレスを誘います。
   ||   → 釣られてレスしたらその時点であなたの負け!
   || ■ 反撃は荒らしの滋養にして栄養であり最も喜ぶことです。
   ||   → 荒らしにはエサを与えないで下さい!
   || ☆枯死するまで孤独に暴れさせておくのが一番です。
   ||             ∧ ∧   。
   ||          ( ,,゚Д゚)/ ジュウヨウ!!      E[]ヨ  
    ̄ ̄ ̄ ̄ ̄ ̄ ̄ノ  つ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
                /  ̄ ̄ ̄ ./| _____________
                | ̄ ̄ ̄ ̄| | |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|____|/|
                        ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      \    は〜〜〜〜い      /
    ∧ ∧    ∧,,∧   ∧ ∧
    (・,, ∧▲  ミ  ∧ ∧ (  ∧ ∧
  〜(_(  ∧ ∧_( ∧ ∧_ミ・д・∧ ∧
    @(_(,,・∀・)@ (   *)〜ミ_ (   ,,)
      @(___ノ 〜(___ノ    〜(___ノ
713デフォルトの名無しさん:2007/12/05(水) 03:53:35
IHTMLDocument2 とはどんな変数ですか
エラーが出ます どうしたらいいですか
714デフォルトの名無しさん:2007/12/05(水) 04:02:35
IHTMLDocument2は変数ではなくインターフェース
どうしたらいいかは「エラーが出ます」だけじゃエスパーじゃないので分からない
715デフォルトの名無しさん:2007/12/05(水) 04:08:50
>>712
俺が荒らしか、笑っちゃうね。自称デスマ中のやつは荒らしじゃないわけ??
その鉄則とやらでいえば釣られてレスした時点で負けなんだろ?

それとも君が自称デスマ君なのかな???
716デフォルトの名無しさん:2007/12/05(水) 04:20:27
>>715
>>712には誰が荒らしかっていうことは書いてないと思うんけど、
それに反応しちゃうってことは自分が荒らしという自覚はあったわけだ
717デフォルトの名無しさん:2007/12/05(水) 05:03:17
それは俺が書いたレスじゃないよ。
勝手に誰かが俺を装ってるだけでしょ??迷惑な話だ。もちろん自分が荒らしと思っていません。
自演するのは勝手だと思うけど、こっちまで巻きこまないで欲しいね。
718デフォルトの名無しさん:2007/12/05(水) 05:40:31
誰かって…ものすごく口調に見覚えあるんだけどw
そもそもなんで今回に限ってわざわざ自分が書いてないって言い訳するの?
ExeName房は複数いるって前に書いてたじゃん
だから今回もその複数のうちの誰かが反応しただけでしょ?
あれ?ひょっとして今までのも実は全部自演だったの?
719デフォルトの名無しさん:2007/12/05(水) 10:03:40
ParamStr(0)は絶対パスを返すとは限らない。
Application.ExeNameがベター
720デフォルトの名無しさん:2007/12/05(水) 10:19:48
そこまで変に拘るなら、DLLでも使えるように自作しろよ。

function MyExeName:string;
 var siz:DWORD;
begin
 SetLength(Result,2000);
 siz := GetModuleFileName( 0 , Result , length( Result ) );
 SetLength( Result,siz);
end;
721デフォルトの名無しさん:2007/12/05(水) 11:37:14
> ParamStr(0)は絶対パスを返すとは限らない
はDOSのTurboPascalじゃないの? あの頃は、コマンドラインをそのまま
取得してたらから、カレントディレクトリだと、パスが無い(のかなぁ・・)
722デフォルトの名無しさん:2007/12/05(水) 15:02:03
試したことないんだが、たとえば今のDelphiでコマンドラインアプリ、つーかコマンドラインアプリじゃなくてもいいけど
今のDelphiで作ったEXEをコマンドラインで実行した場合、ParamStr(0)ってパスはフルパスになるんだっけ?
723デフォルトの名無しさん:2007/12/05(水) 15:05:49
ソースを読めば判るが ParamStr(0)は GetModuleFileNameってAPIを呼び出している
つまり、このAPIの結果しだい。 もちろん今のWindowsならフルパスの長いファイル名を返す。
724デフォルトの名無しさん:2007/12/05(水) 15:40:02
議論するにあたり、真っ当な意見と見せかけ、実は詭弁で論点をはぐらかす輩が多々おります。
皆様も以下の「詭弁の特徴15条」を覚え、そういう輩を排除しましょう。

1.事実に対して仮定を持ち出す
「ParamStr(0)は絶対パスを返すとは限らない」

2.ごくまれな反例をとりあげる
「ParamStr(0) じゃ意味わからんだろ?」

3.自分に有利な将来像を予想する
「素人に限って妙な小技にこだわってわざわざプログラムをわかりにくく書こうとする」

4.主観で決め付ける
「Application.ExeName をつかうのがベター」

5.資料を示さず自論が支持されていると思わせる
「今時のIT技術者はやるべきことたくさんあって」

6.一見関係ありそうで関係ない話を始める
「ParamStr(0)でいいとかいってるバカはたぶんいちいち定数をラベルや const にせず数値で打ち込んでるんだろうなw 」

7.陰謀であると力説する
「>>スレ番号=>>スレ番号とか事ある事に必死に書いてる」

8.知能障害を起こす
「Application.ExeName はなんであるんでしょうねー?
いったい何のためにそんなムダな関数があるんでしょうねえー??ふしぎですねええーーー??」
725デフォルトの名無しさん:2007/12/05(水) 15:40:58
9.自分の見解を述べずに人格批判をする
「何となくニートだろうなって思ってたけど、環境が性格を形成する典型的な見本だね>>668の彼は」

10.ありえない解決策を図る
「ExeNameの細かな実装方法を覚えるより、調べ方の方が大事だと思うけどな」

11.レッテル貼りをする
「こういうキチガイはなぜわざわざ遠まわしに呼び出すだけの関数を用意してるのか、その意味すらわからんのだろうな」   

12.決着した話を経緯を無視して蒸し返す
「さて、そこで本題にもどるが」

13.勝利宣言をする
「うれしさと興奮のあまり、ちんこたっちゃいます」

14.細かい部分のミスを指摘し相手を無知と認識させる
「デスマ中に1時間も書けて2chで家から粘着するなんてすごい元気ですね」

15.新しい概念が全て正しいのだとミスリードする
「そもそも何の意味もない引数の 0 がコマンドライン引数の最初をあらわすインデクスである
という事実自体、特定のコマンドラインインターフェイスの実装に結びついたものであり
ポータビリティを損なう一因であるということがわからないようじゃ、プログラマ失格だな」


このコピペがここまで当てはまる人間も珍しい
あとは釣り宣言でもしてくれたら完璧だ
726デフォルトの名無しさん:2007/12/05(水) 16:36:14
詭弁の見本市乙でしたw
727デフォルトの名無しさん:2007/12/05(水) 17:11:26
なんという詭弁・・・
たった15の例を見ただけで人間性が分かってしまった
この馬鹿は間違いなくまた食いつく
       
   / ̄\
  | ^o^ |  
   \_/
728デフォルトの名無しさん:2007/12/05(水) 18:06:39
Del廚はキモイな
729デフォルトの名無しさん:2007/12/05(水) 19:44:28
>>728
職業プログラマならまだしも、プログラム好きな奴って、
内向的な奴多いし、世間一般の印象通りキモイやつ多いだろ。性格も外見もさ。
他人と接することも得意じゃないの多いし、だから、自分が普通の人とズレてることなん
てきづかねぇんだよ。>>724みたいな感じにね。
だから、キモイの仕方ないと言えば仕方ない。それぐらい許してやろうぜ。
730デフォルトの名無しさん:2007/12/05(水) 19:53:48
世間一般から見てもマは気持ち悪い人の代名詞ですがw

起業して作ったプログラムを当てて初めてモテるようになりますw
731デフォルトの名無しさん:2007/12/05(水) 19:57:00
自分の意見が間違ってるのを棚に上げて人をキチガイやニート呼ばわりするくらいだ
キモイ程度ならまだ許せるけど、あれは人間としてカスだろ
732デフォルトの名無しさん:2007/12/05(水) 20:06:52
>>世間一般から見てもマは気持ち悪い人の代名詞ですが
てか、マってなんだよ。
>>自分の意見が間違ってる
誰のどの意見が間違ってるの?
733デフォルトの名無しさん:2007/12/05(水) 20:10:49
まあ普通は>>577を見た時点で自嘲して笑い話で済むところを、
>>584を書いちゃう時点で空気読めない子なんだよw
734デフォルトの名無しさん:2007/12/05(水) 20:26:13
>>733
俺も彼はExeNameはParamStr(0)と同じことを流れから知らなかったと思うけど、
いいじゃねぇかよ。事実だけ話ししてもつまらんし、他の人の考え方知ったほうが
俺的にはそっちの方がためになる。
彼が空気読めない子ならそれに対して粘着してる奴は器の狭い子だな。
735デフォルトの名無しさん:2007/12/05(水) 20:39:08
734の続き。
このスレ的にはよくなかったかもな。結果として、それに対してきちがいみたいに粘着する奴がいたからな。
まぁ、いいやどうでも。
736デフォルトの名無しさん:2007/12/05(水) 20:41:00
キチガイコードファイター576先生の次回作にご期待ください。
737デフォルトの名無しさん:2007/12/05(水) 20:41:21
いや、どう考えてもアホが一人暴走してるだけだろ
あのアホが突っかかって来るまではみんなスルーしてたんだし
738デフォルトの名無しさん:2007/12/05(水) 20:44:00
彼は(笑)
都合が悪くなると自分は関係ないって、どこかの半島の人と同じ考えだな。
あ、もしかしたら本物かな。
ファビョるところとかそっくりだし。。
739デフォルトの名無しさん:2007/12/05(水) 20:51:04
>>737
一人じゃなく、最低二人必要だろ。
740デフォルトの名無しさん:2007/12/05(水) 20:54:35
やっぱ、この話すると、ファビョる二人のうちの片割れ>>736が出てきたな。
741デフォルトの名無しさん:2007/12/05(水) 21:05:38
確かに、突っかかる方と突っ返す方の二人必要だな。
742デフォルトの名無しさん:2007/12/05(水) 22:05:36
ID出ないんだから一人でじゅうぶんだろ
全部576先生の自演でした
743デフォルトの名無しさん:2007/12/06(木) 04:57:01
現在、任意のキー入力を指定したジョイパッドのボタンを割り当てるプログラムを製作しています。
そこで質問です。
ジョイパッドの入力の状態はJoyGetPosEx等やQuadruple Dで取得できるのですが
ジョイパッドを出力(入力させる?)API又はコンポーネントはないものでしょうか?

おわかりの方、どうぞ宜しくお願いします。
744デフォルトの名無しさん:2007/12/06(木) 08:47:33
745デフォルトの名無しさん:2007/12/06(木) 08:55:25
ジョイパッドボタンの信号をだしたい
746デフォルトの名無しさん:2007/12/06(木) 13:32:05
ドライバ書くしかないんじゃね?
747デフォルトの名無しさん:2007/12/06(木) 15:49:08
>>744
どうやらそのメソッドを使用すれば出来る気がします。
そこでサンプルは無いものかとあれこれ検索しているのですが全く出てこないですね…。

ジョイパッドのボタン1を押すにはこうするというサンプルさえあれば
あとはMSDNをみながら何とかできる気がするのですが…。

何にせよこういうメソッドがあるという事実だけでも大収穫でした。
本当にありがとうございます。
748デフォルトの名無しさん:2007/12/06(木) 15:55:14
749デフォルトの名無しさん:2007/12/06(木) 19:40:16
TStringGrid の Row を設定すると、その行にスクロールしますが、
これをやめる(スクロールしないようにする)方法はありますか。
750デフォルトの名無しさん:2007/12/07(金) 10:06:30
おまえらプログラムばっかやってないで、もっと、他の事して遊べよ。他人と接しないから、自分の
異常さに気づかないんだよ。コードファイター??まぁ、これはまぁ、キャッチフレーズっぽくしたかったと思うから
許せる?けど、ひどいのはCodeGearスレの673の発言「逆神の殿堂入り」。なんで、そんな、使ってる奴見た事ない
用語でさらりと出てくるんだよ。どんな世界に住んでたら、そんな言葉飛び交うんだよ。
同じタイプの人間と接しててもダメだよ。鏡見てるようで、気づかんから。別のタイプの人間ともっと接しろよ。





751番組の途中ですが名無しです:2007/12/07(金) 12:06:09
総合アーカイバコンポーネントでフォルダをzip形式で圧縮する方法を教えてください
ファイルは圧縮できましたが、フォルダの方法がわかりません
752デフォルトの名無しさん:2007/12/07(金) 13:47:14
>>750
???
753デフォルトの名無しさん:2007/12/07(金) 14:49:44
CodeGear RAD Studio 2007に含まれるDelphiは
Delphi 2007 for Win32と内容は全く一緒ですか?
754デフォルトの名無しさん:2007/12/07(金) 15:10:26
Delphi2007 R2だっけか?R2でないたたのDelphi2007であれば、差はUpdatePackがあったってるかないか
ぐらいしか違わんと思うが。推測だけど。R2なら同じだと思う。R2でもBlackfishのDBExpressドライバ
はついてないかもしれんけど。
755デフォルトの名無しさん:2007/12/07(金) 15:33:03
>>754
ありがとうございます。
アカデミックなので、値段も然程変わらないRADのほうを買ってきます。
実際使うのはDelphiだけですが。
756番組の途中ですが名無しです:2007/12/07(金) 15:48:12
誰か>>751お願い
757デフォルトの名無しさん:2007/12/07(金) 21:05:13
ARCHIVES.PAS 読んだら
>ディレクトリ名の格納−廃止
ってなってるね
758デフォルトの名無しさん:2007/12/07(金) 23:21:58
>>755
某のアカデミックはライセンスがとんでもない条件だった気がするが大丈夫か?
759デフォルトの名無しさん:2007/12/07(金) 23:29:28
>>757
なるほど、じゃあ出来なくて当然なのかd

じゃあ、zipを作る別のコンポがあったら紹介してほしいです
760デフォルトの名無しさん:2007/12/07(金) 23:35:30
直接DLLいじれ
761デフォルトの名無しさん:2007/12/07(金) 23:39:06
>>760
面倒くさそうじゃんかよ
あるものは有効に使わないと損だろ
762デフォルトの名無しさん:2007/12/08(土) 02:12:38
ComboBoxの動的配列をCreateしてから、OnChangeハンドラを設定したいんです。
具体的には別に指定したprocedureをその動的配列全てのComboBoxのOnChangeイベントに指定したいです

どうすればいいでしょうか?
763デフォルトの名無しさん:2007/12/08(土) 02:15:25
ComboBoxのOnChangeイベントにイベントハンドラを代入してください。
764デフォルトの名無しさん:2007/12/08(土) 02:18:22
>>763
hogehoge[i].OnChage := TForm1.hoge;
という事でしょうか?
procedure TForm1.hogeを作成したのですが、「このメソッドの呼び方はクラスメソッドだけ」とダメ出しされました。
765デフォルトの名無しさん:2007/12/08(土) 03:20:00
インスタンスのメソッドを代入してください。
766デフォルトの名無しさん:2007/12/08(土) 03:26:28
hogeがTNotifyEventと同じ形じゃないと駄目だと思う。
ヘルプで「of Object」で検索。
767766:2007/12/08(土) 03:28:24
あ、本当だ。頭のTがいらなかったんだな。スマン俺のは無視してくれ。
768デフォルトの名無しさん:2007/12/08(土) 04:24:02
>>749
君には無い。
769デフォルトの名無しさん:2007/12/08(土) 08:15:17
>>758
とんでもない条件って?
2年ほど使う予定なんですけど、アカデミック辞めたほうが無難ってことです?
770デフォルトの名無しさん:2007/12/08(土) 09:36:26
業務、シェアウェアの開発どころか
フリーウェア作って公開もNGとかだったような。
771デフォルトの名無しさん:2007/12/08(土) 10:18:21
インターネットの「お気に入り」の並び順を得たいのですが、
レジストリというかバイナリ構造に関する知識が必要で、
行き詰っています。

そこで、もしサンプルや参考になるソースがあれば
教えていただけないでしょうか。
よろしくお願いします。
772デフォルトの名無しさん:2007/12/08(土) 13:04:17
474 名前:デフォルトの名無しさん :02/07/08 19:21
お気に入りの順番を保存してる
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Favorites
の構造って既に調べた方います?

ちーともわからなかった。


475 名前:デフォルトの名無しさん :02/07/08 19:25
つか、donutのソース嫁よ……
mtlweb.hあたりにあるから。
773デフォルトの名無しさん:2007/12/08(土) 13:15:51
>>770
いま一通り規約に目を通してみたんだが、何処にもそんなとんでもない内容の記述が見当たらないんですが…。
ただ私が見落としてるだけの可能性もあるので参考までに訊いてみますけど、何処で見ました?
774771:2007/12/08(土) 17:39:53
>>772
ありがとうございます。
やはりdonutですか……
C++はサッパリなのですが、挑戦することにします……
775デフォルトの名無しさん:2007/12/08(土) 20:21:27
サブスレッドでexceptした例外をメインスレッドに転送って無理?

最悪
except
 on E: Except do
 begin
  LastExcept := e;
  OnSynchronize := OnError;
  Synchronize;
 end
みたいにすれば出来るんだろうけど
できればEのクローンを保持して後から通知できるといいんだけど
776デフォルトの名無しさん:2007/12/08(土) 21:11:12
>>775
なんかきたない気がする
スレッド間、プロセス間の通信は、それなりの方法でするべきかと。
777デフォルトの名無しさん:2007/12/08(土) 22:29:07
>>773
http://www.codegear.com/jp/products/delphi/win32 の製品価格の欄
>* アカデミック版は、学生・学校法人が教育・学習目的にのみご利用いただるライセンスです。

BCB6のLicense.txtにも同じ意味の文章が入ってる
778デフォルトの名無しさん:2007/12/09(日) 05:39:26
3層CS構造のDBアプリを作りたいです。
フロントエンドはDelphi、バックエンドはHTTP通信経由でApache
としたいです。
ミドルウェアとして使えるコンポーネントがあれば、教えてください。

よろしくお願い致します。
779デフォルトの名無しさん:2007/12/09(日) 09:07:32
>>775
例外の原理はスタックポインタを保存しておいて、そこに撒き戻すというものです。
一方スレッドの原理はスタックポインタを切り替えるというものです。
ですからスレッド間の通信は原理的に不可能です。

GUIアプリなら窓ハンドルを持ってるでしょうからメッセージを投げるのが簡単でしょう
ただし、そのコードで Eの寿命は end までですから SendMessage 系でなければいけません。
PostMessage で遅延通知したいなら
Eのコピーを作らなければいけません。
780デフォルトの名無しさん:2007/12/09(日) 10:35:26
アカデミックは罠
781デフォルトの名無しさん:2007/12/09(日) 10:38:50
>>777
学習目的にフリーでソフトウェアを配布して
使用者からフィードバックされた内容を基に
ソフトウェア開発の学習に精進するのは可と
解釈するがな、普通は。
たぶん君だけじゃないかな?
間違った解釈してんのは。
782デフォルトの名無しさん:2007/12/09(日) 10:42:26
普通なんて曖昧な言葉でライセンスを解釈するのは禁止。
CGに問い合わせろが正解。
783デフォルトの名無しさん:2007/12/09(日) 10:44:01
日本語が駄目なやつがいるなw
784デフォルトの名無しさん:2007/12/09(日) 10:54:11
D2006 Oracle10gで
DirectOracleAccess使ってDBアクセスしてるんだけど
前回のクエリーの結果が返ってきていない状態で次のクエリーを流すと
エラって落ちちゃいます。(当然か。。)
前回の結果が返ってくるまで次のクエリー発行を待機させるとして
どんな方法が良いでしょうか。稚拙な質問ですが宜しくお願いします。
785デフォルトの名無しさん:2007/12/09(日) 10:56:24
問い合わせを同期にする
786デフォルトの名無しさん:2007/12/09(日) 11:46:44
セッションを分ける
787デフォルトの名無しさん:2007/12/09(日) 14:26:58
>>778
http通信はIndyかMSXMLをCOMで使う。
MSXMLはAJAXを解説したコードが参考になると思う。
788762:2007/12/09(日) 18:19:00
返事が遅くなってしまいましたが、書き忘れがありました。
procedure hogeではなく、procedure hoge(x,y : Integer)でした。
この場合、TComboBox.OnChangeとはイベントの形式が違うことになり、代入できないのでしょうか?
正直、自分も勉強している最中なのでいまいち理解できていません。
789デフォルトの名無しさん:2007/12/09(日) 18:24:10
悪いけど何言ってんのかさっぱりわからない
790デフォルトの名無しさん:2007/12/09(日) 18:40:54
>>788
代入できません。型は合わせてください。
そもそもOnChangeなのにxyって何?
791デフォルトの名無しさん:2007/12/09(日) 20:35:26
>>782
すまんかったorz
確かに曖昧な解釈は良くないです。
ということでライセンスについて問い合わせてみたところ、
あくまでも商業的じゃなく無償で配布を行うぶんには
問題ないという回答でした。
792デフォルトの名無しさん:2007/12/10(月) 00:24:00
exeファイルを実行して、そのアプリのウィンドウハンドルを取得したいのですが、
何か方法を教えてください...
793デフォルトの名無しさん:2007/12/10(月) 01:02:02
Form1.Handle
794デフォルトの名無しさん:2007/12/10(月) 01:16:11
>>792
別プロセスから?
795792:2007/12/10(月) 02:09:00
自分のプログラムからメモ帳とかを起動して、そのメモ帳のハンドルを取得する、
みたいな事をやろうと思ってました。
書き込みしてからまた検索したら↓に見つかりました。
http://homepage2.nifty.com/Mr_XRAY/Halbow/Notes/N002.html

ご心配おかけしてすみませんでした。793さん794さんありがとうございます。
796デフォルトの名無しさん:2007/12/10(月) 02:31:11
>>788
まあそういう時はアダプタパターン。代入可能なメソッドで呼び出すかたちじゃね?
797デフォルトの名無しさん:2007/12/10(月) 16:37:00
文字列を二進数に、また二進数を文字列に変換したいのですがどうやればいいんですか?
798デフォルトの名無しさん:2007/12/10(月) 16:39:38
>>797
自分で変換するしかない。
799デフォルトの名無しさん:2007/12/10(月) 17:59:08
DelWiki避難所のTRegExprの説明を読んで,色々実験してますが、
その中で、MBCSの対応のコードを追加してみましたが、これは一体どういう効果が
あるのでしょうか?もちろん、追加しても例えば、"."は2バイト文字にマッチしないこと
は想像つくのですが。見識の深い方よろしくお願いします。
800デフォルトの名無しさん:2007/12/10(月) 23:47:15
学生版だとソフト配布しちゃあかんの?
金払わせといて妙な制限すんなよな
そりゃ衰退するわ
801デフォルトの名無しさん:2007/12/10(月) 23:55:56
802799:2007/12/11(火) 07:30:29
>>801
thanks
見逃してました
誰かWikiかテンプレに追加しておいたほうがいいんじゃないですかね
803 ◆XcB18Bks.Y :2007/12/11(火) 08:07:03
>>797
Delphi 二進数 変換 で検索したら良さそうなページが出てきました
http://homepage2.nifty.com/Mr_XRAY/Halbow/Notes/N016.html
804デフォルトの名無しさん:2007/12/11(火) 13:20:29
あっ!
805797:2007/12/11(火) 14:50:35
>>803
ありがとうございます。さらっと見てみました。

>>797の質問とはあまり関係ないのですが
function NibbleToBinaryStr(value:Byte):string;
begin
SetLength(result,4);
if (value and 8) = 0 then result[1] := '0' else result[1] := '1';
if (value and 4) = 0 then result[2] := '0' else result[2] := '1';
if (value and 2) = 0 then result[3] := '0' else result[3] := '1';
if (value and 1) = 0 then result[4] := '0' else result[4] := '1';
end;
この条件部分(andの使い方)の考え方がよくわかりません。
10進数から2進数への変換は2で割り続ける方法しか知らないのですがなぜこれで正しい答えが出るのでしょうか?
806デフォルトの名無しさん:2007/12/11(火) 14:55:05
演算子としてのANDだろ。
っていうか2進数が何なのか知らないで使おうとしてるの。

807797:2007/12/11(火) 14:59:57
ごめんなさいヘルプ見たらなんとなくわかりました。
こんな事ができるなら関数用意してくれててもいいようなもんだけど。
808デフォルトの名無しさん:2007/12/11(火) 22:45:01
くだらない質問で申し訳ないんですが

type
TObject1 = class(TObject)
Object2: TObject2;
end;
TObject2 = class(TObject)
Object1: TObject1;
end;
と循環参照させたい場合にはどう宣言すればいいのでしょうか?
809デフォルトの名無しさん:2007/12/11(火) 22:54:39
forward 宣言を行います。

type

TObject1 = class;//これが
TObject2 = class;//forward宣言

TObject1 = class(TObject)
Object2: TObject2;
end;
TObject2 = class(TObject)
Object1: TObject1;
end;

詳しくはヘルプをご覧ください。
810デフォルトの名無しさん:2007/12/11(火) 23:06:21
>>809
TObject1のforward宣言は不要じゃない? あっても問題はないけど。
811デフォルトの名無しさん:2007/12/11(火) 23:12:42
>>809
解決しました!

実はforward宣言は何度も試みていたのですが、コピペの繰り返しで
type
TObject1 = class;
TObject2 = class;
end
type
TObject1 = class(TObject)
Object2: TObject2;
end;
TObject2 = class(TObject)
Object1: TObject1;
end;
とtype宣言が分かれていたのが原因でした
ありがとうございました
812デフォルトの名無しさん:2007/12/12(水) 13:10:04
vistaがこけそうにありません
turboやd6perでは対応できないので
borland野郎はここを見ておりましたら
さっさと無料版2007出しやがってください
お願いします
813デフォルトの名無しさん:2007/12/12(水) 15:48:34
あれ?2008のDM、まだ来てないの?
814デフォルトの名無しさん:2007/12/12(水) 23:04:44
可変レコードの使い方教えてください
例えば↓のレコードを実際使う時はどうするんでしょうか?
type
 TRect = record
  case Integer of
   0: (Left, Top, Right, Bottom: Integer);
   1: (TopLeft, BottomRight: TPoint);
 end;
815デフォルトの名無しさん:2007/12/12(水) 23:18:42
var R: TRect;
begin
R.Left := 10;
R.Top := 10;
R.TopLeft := Point(10,10);
816デフォルトの名無しさん:2007/12/12(水) 23:19:27
オープンゲットボタンを押す
三人同時にだ!
817デフォルトの名無しさん:2007/12/12(水) 23:27:26
>>815
ありがとうございます
case文のInteger型と0,1は特に使う必要はないものなんですか?
818814:2007/12/13(木) 00:06:32
あれ・・質問がまずかったかな
例えば
case Integer of
1: (Left, Top, Right, Bottom: Integer);
2: (TopLeft, BottomRight: TPoint);

に変更しても何ら影響はないんでしょうか
819デフォルトの名無しさん:2007/12/13(木) 00:08:06
爆発する
820デフォルトの名無しさん:2007/12/13(木) 00:45:38
序数を指定しろってだけだから値に意味はない。
821814:2007/12/13(木) 00:55:13
>>820
ありがとうございます!
安心しましたです
822デフォルトの名無しさん:2007/12/13(木) 11:11:19
Delphi7 professionalにDSpackを導入したいのですが、
エラーがでます。

コンポーネント ⇒ コンポーネントのインストール
⇒既存のパッケージへ追加のtabを選択

検索パスに;H:\DSpack\src\DSPack;H:\DSpack\src\DirectX9を追加
パッケージファイル名にH:\DSpack\packages\DirectX9_D7.dpkを選択
OKを押す..と、

"は適切な識別子ではありません

というエラーがでます。
検索パスの中やDirectX9_D7.dpkの中に、ファイルの先頭が英数字
と _ 以外であるのはないのですが、他にどの辺に異常があるとこの
エラーがでますでしょうか?

823デフォルトの名無しさん:2007/12/13(木) 17:19:42
文字列リテラルちゃんと閉じられてる?Shift-JIS以外のほかのコードページのソース
読むとたまにリテラルが閉じられなくなって、そういうエラーを誘発したような記憶が。
824デフォルトの名無しさん:2007/12/13(木) 18:40:52
Delphiで作成したDLLにダイアログを表示させる機能を付けようと思っているのですが、
DLLに組み込んだフォームをShowModalで表示させると
呼出側アプリケーションとDLLのダイアログの両方がタスクバーに表示されてしまいます。

その状態でタスクバーの呼び出し側アプリケーションをクリックすると
呼出側アプリケーションがアクティブになってしまいます。
(キーやマウスの入力は無視されます)

DLLを使わず、ダイアログのユニットをusesしてShowModalすれば
ダイアログがタスクバーに表示されないことは確認しています。

DLLからダイアログを表示させる場合に何か特別な記述等が必要なのでしょうか?
825デフォルトの名無しさん:2007/12/13(木) 22:15:33
アプリ側にウィンドウハンドルを渡してもらって、自前でDisableWindowとか
826825:2007/12/13(木) 22:17:42
しまったDisableWindowって何だw
EnableWindowsにFalse渡すんだ
827デフォルトの名無しさん:2007/12/14(金) 06:57:01
はじめまして。
最近Delphi 2006を使い始めましたが質問があります。

AssignFileでファイルR/Wをコーディングしようと思い、AssignFileの関数を
ヘルプで調べながら、次の事を感じました。

 ・ひとつの関数から関連する関数を知ることができない。
  (AssignFileをヘルプで引いたら、ファイル入出力関連の関数を一覧で
   見たい)

 ・関数の使い方をサンプルコードで知りたい。
  (AssignFileのヘルプだけでは使い方が理解できない。Rewrite関数やRead関数を
   導いて欲しい)

Delphiスペシャリストの方々、上記の疑問にお答えください。
よろしくお願い致します。
(ヘルプの使い方をよく知らないだけなのかな・・・)
828デフォルトの名無しさん:2007/12/14(金) 07:09:26
ここからDelphi 6か7 の ドキュメントアップデートを落として、こっちのヘルプを使うと少しだけ楽だよ
ttp://homepage1.nifty.com/ht_deko/tech008.html
829デフォルトの名無しさん:2007/12/14(金) 10:07:58
最近のDelphiのヘルプは使い物にならない、っていうのは常識として知っておく良いよ。
830824:2007/12/14(金) 10:24:48
>>826
コールバック関数などでDLL側ダイアログのハンドルを呼出元に渡して
EnableWindowを実行するという意味でしょうか?
試してみましたが両方の画面が操作できなくなり、
強制終了させなければ終了できなくなりました。


http://www-2ch.net:8080/up/download/1197595269986161.jo0WyU
現象が再現できる最小のソースを上げてみました
831デフォルトの名無しさん:2007/12/14(金) 11:00:44
Google, Grep, GExpertを駆使してヘルプの代わりにするしかない
832デフォルトの名無しさん:2007/12/14(金) 11:24:26
>>824
ダイアログの親窓ハンドルをどうしてるの?
DLLを呼び出す方も自作なら Application 変数をどうしてるの?
833デフォルトの名無しさん:2007/12/14(金) 12:22:28
>>827
TFileStreamでやるのがいい
834デフォルトの名無しさん:2007/12/14(金) 13:15:08
>>832
そんなこと聞き返して答えられるようなら自己解決できるだろ。

>>824
ということで、EXEのApplicaiton.HandleをDLLのそれに代入する。
835デフォルトの名無しさん:2007/12/14(金) 13:15:38
日本語(2バイト文字)の扱い関して質問があります。

レジストリから文字列(ファイル名)を取得したいのですが、
日本語のファイル名が文字化けしてしまいます。

次のように記述しています。
var
 buffer  : array[0..999] of char;
 fileName : array[0..99 ] of char;
 i, namePos: Integer;
begin
 {bufferには「レジストリの値」、
  namePosには「ファイル名の文字の開始位置」が入る}

 i := 0;
 while (buffer[i + namePos] != #0) do// ファイル名の終端は0のため
 begin
  fileName[i] := buffer[i + namePos];
  i := i + 1;
 end;

 Label1.text := fileName;//日本語のファイル名の場合、文字化けする

end;

このようにすると、英語のファイル名なら上手くいくのですが、
日本語のファイル名の場合は、2バイト文字にはならず、
半角記号が並ぶ状態(いわゆる文字化け)となってしまいます。

どのようにすればよいでしょうか?
836824:2007/12/14(金) 14:11:45
>>832,834
DLLのApplication.Handleを設定することで期待通りの動作ができました。

ありがとうございました!
837デフォルトの名無しさん:2007/12/14(金) 14:37:31
>>835
namePosを間違えてるとか。
あとwhile抜けたあとに
fileName[i]:=#0;
必要なんじゃない。
838デフォルトの名無しさん:2007/12/14(金) 15:48:30
レジストリの文字コードがSJISじゃないと文字化けしそうだな。
839デフォルトの名無しさん:2007/12/14(金) 19:42:19
> 823
ご教授ありがとうございます。今のところ、教えていただいたのでチェックしていますが
未だ成功していません。また、何か思い出されましたら、教えてください。
840デフォルトの名無しさん:2007/12/14(金) 20:35:23
>>828
情報ありがとうございます。
ヘルプをダウンロードして学習します。

ところで、Delphiの言語仕様が体系的に書かれている書籍は
ないでしょうか?
超初心者から中級レベルまで使えるリファレンス的な本がある
と、うれしいのですが・・・
841デフォルトの名無しさん:2007/12/14(金) 22:13:25
猫本ってまだ売ってるのかな?
842デフォルトの名無しさん:2007/12/14(金) 23:09:57
このままDelphi2007の無料版も出さずに行くつもりなら
新規ユーザーが増えずに衰退してくだろうなぁ。
あのMSでさえ2005以降はずっと無料版出してきてるのに。
長年いい開発ツールだっただけに、現状の迷走っぷりには
落胆してしまってる人が多いんじゃないだろうか。
843デフォルトの名無しさん:2007/12/15(土) 00:05:06
5行もいらないだろ。「無料版欲しいなぁ」の1行でいいだろ。
844デフォルトの名無しさん:2007/12/15(土) 01:48:07
>>842
マイクロソフトは、無料版増やす意味がある
良い開発言語(他のアプリも)があればOSの数が出る
そして儲かる
しかしデルファイは微妙
試供品を配っても客がつくかは微妙
試供品によろこんで金出さない可能性あり
845デフォルトの名無しさん:2007/12/15(土) 01:51:43
もう魅力がないんだよな。
.NET に比べると、VCL は貧弱すぎるし。
846デフォルトの名無しさん:2007/12/15(土) 02:00:13
下のようにC言語で定義されている構造体をDelphi6Perで使いたいのですが、どのように書けばいいですか?
typedef struct _TBBUTTON {
  int iBitmap;
  int idCommand;
  BYTE fsState;
  BYTE fsStyle;
  DWORD dwData;
  int iString;
} TBBUTTON, NEAR* PTBBUTTON, FAR* LPTBBUTTON;
847デフォルトの名無しさん:2007/12/15(土) 02:09:00
CommCtrl.pas には

type
PTBButton = ^TTBButton;
{$EXTERNALSYM _TBBUTTON}
_TBBUTTON = packed record
iBitmap: Integer;
idCommand: Integer;
fsState: Byte;
fsStyle: Byte;
bReserved: array[1..2] of Byte;
dwData: Longint;
iString: Integer;
end;
TTBButton = _TBBUTTON;

があるよ
848846:2007/12/15(土) 02:16:59
>847さん
CommCtrlを知りませんでした。おかげさまでまた一歩進めましたありがとうございます。
849デフォルトの名無しさん:2007/12/15(土) 02:20:11
Del6Personalにソースついてたっけ?
850846:2007/12/15(土) 02:20:56
>849さん
usesに書いたらコンパイラ通ったんで目的が果たせました。
851Delフサギコ ◆A6VzDeLphI :2007/12/15(土) 02:23:58
          _________
   ∧,,∧   / 
  ミ,,゚Д゚彡<  つかないよ。
   ミ つ旦)~~ \ 
 〜ミ  ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ∪''∪ Turboにはついてるけど。
852デフォルトの名無しさん:2007/12/15(土) 02:27:44
宣言部はあるんじゃないの? *.int とかで。
853デフォルトの名無しさん:2007/12/15(土) 05:42:17
*.pasが無くても*.dcuが有ればusesできるよ。
854デフォルトの名無しさん:2007/12/15(土) 06:30:06
>>845
開発ツールを純粋に比較すれば、Delphiは VisualStudio.NET より
格段に優れたツールだと思う。
MSのVS.NET担当者だって本心はそう思っているんじゃないか?

ボランティア精神が旺盛なプログラマが、PDFかCHM形式で
初心者向けの情報を執筆するだけで、多くのユーザーを獲得
できると思う。
855デフォルトの名無しさん:2007/12/15(土) 12:23:46
つ スレタイ
856デフォルトの名無しさん:2007/12/15(土) 17:24:32
>>854
そう思う人がごく少数なんだな、これが。ま、よく周りを見てみることをすすめる。
857デフォルトの名無しさん:2007/12/15(土) 17:46:09
最盛期のD6やD5の頃だって、入門本も含めて20冊くらい本はあったけど
一度として、DelphiがVSやVBユーザの半数を超えたことはない。
ましてや、いま時代遅れになったものが復活するはずないだろう。
ボランティア精神が旺盛なプログラマもいなくなったし。
858デフォルトの名無しさん:2007/12/15(土) 18:03:16
ボランティア精神が旺盛なプログラマがいなくなったというより
その取り巻きがいなくなったことのほうが問題じゃないかな
今じゃFAQ整理してTips公開しても不毛な(代案無き)叩きばかり
859デフォルトの名無しさん:2007/12/15(土) 20:21:12
>>856
俺の職場はDelphiできるやつおおいぞ。
860Delフサギコ ◆A6VzDeLphI :2007/12/15(土) 23:43:47

      ∧,,∧    貴重やね
    ./ミ,,゚Д゚彡   
   //\ ̄ ̄旦~   
  // ※.\___\
 \\※ ※ ※ ※ ※ヽ
   \`ー──────ヽ
    ────────
まあ、ぼちぼちやろうぜ。

Delphiをもっと詳しく
http://www.codegear.com/jp/products/delphi/win32/learn-more

C++Builderをもっと詳しく
http://www.codegear.com/jp/products/cppbuilder/learn-more

動画とか開発事例とか
CodeGearのみなさん、がんばっているようです
861デフォルトの名無しさん:2007/12/15(土) 23:59:50
というか、多くのプログラマは、複数の言語を習得するのを嫌がるよね
なんでかな?、楽しいのになぁ
862デフォルトの名無しさん:2007/12/16(日) 00:04:35
リモートDB接続って何?
863デフォルトの名無しさん:2007/12/16(日) 00:33:16
先行単体版はベータテスト用だし、R2版は余計なものくっつけて値上げするし、
無償版は出さないことにしたし、ほんとにユーザ増やしたいんだろうか?
初心者に優しくするにはヘルプがひど過ぎるし。なんやかやイベントやるより
総力を挙げてヘルプ直した方がいいんじゃないか。あとリベート払って本だすとか。
864デフォルトの名無しさん:2007/12/16(日) 12:50:16
>>861
本質的にプログラマではなくてサラリーマンなんだろうな。
865ななしへたぐらま ◆XcB18Bks.Y :2007/12/16(日) 13:36:14
>>835
レジストリに書き込んでいるのは自作のプログラムではないようですが
自作ではない別のプログラムで正しく読み出せているのでしたら
内部での記録形式がShift-JISではなくてUTF-8で書き込まれているかもしれません。
(この場合はUTF8ToAnsi関数で変換してみたら上手くいくかも)

別な可能性としてはそもそもレジストリに日本語ファイル名が正しく書き込まれていないことも考えられます。
この場合は読み出し側からはどうしようもありません。
866デフォルトの名無しさん:2007/12/16(日) 18:36:05
>>860
CodeGearもがんばってますね・・・

WEBでDelphiのTipsあるいは学習用サイト、言語リファレンスなどの
情報をまとめた良質サイトを一般から募集し、そのコンテンツを買い取り、
製本・販売をしたらどうでしょうか>CodeGear様
VSと比較し、圧倒的に情報量は少ないですが、VSより良質のサイトが多
いように思いますので、ユーザーとメーカーが一体となった商売ができそうな
気がします。
867デフォルトの名無しさん:2007/12/16(日) 18:45:59
ボクの考えてボク以外の誰かが実行するCodeGear再建計画はもういいですから。
せめて隔離スレでやってね。
868デフォルトの名無しさん:2007/12/16(日) 18:47:09
まったくだ。
869デフォルトの名無しさん:2007/12/16(日) 22:32:20
でも、零細企業じゃないんだからユーザが実行する再建計画っていうのもお笑いだよな
870デフォルトの名無しさん:2007/12/17(月) 00:09:06
だってユーザーが求めてるDelphi像とCodeGearが求めてるDelphi像が一致してないんだもん
871デフォルトの名無しさん:2007/12/17(月) 00:28:53
ユーザの求めてるものを作らない企業は終わりってことでしょ。それだけ。
872デフォルトの名無しさん:2007/12/17(月) 00:57:49
質問です
MediaPlayer などのコンポーネントで、
ファイルではなくストリームで渡せるもの、あるいは方法がありますでしょうか?
教えてください
873デフォルトの名無しさん:2007/12/17(月) 03:07:28
MediaPlayerはダメ。
midiStreamOut等のマルチメディアAPIを使う。
874872:2007/12/17(月) 03:11:18
>>873
ありがとうございます。
調べてみます。
875デフォルトの名無しさん:2007/12/19(水) 14:52:57
なんでWindowProcプロパティがpublicメンバなのにWndProcメソッドがprotectedメンバなん?/ ,' 3  `ヽーっ
876デフォルトの名無しさん:2007/12/19(水) 15:20:17
WindowProcプロパティはアプリケーションからプロシージャを簡単にオーバーライドする為のモノなので publicで無ければならない。
WndProcメソッドはクラス内のメッセージ処理機構から呼び出されるモノで、クラス外から触られる事は無いので protected にする。
877デフォルトの名無しさん:2007/12/19(水) 15:30:01
ああそうか、WindowProcの元の値を取っておいてユーザー定義関数内で呼び出せば元のメッセージ処理部分も呼び出されるのか。
トンクス
878デフォルトの名無しさん:2007/12/20(木) 10:12:16
DelphiにIndyなんかのヘルプをインストールする方法を教えて下さい。
Del6perです。
879デフォルトの名無しさん:2007/12/20(木) 11:55:58
パーソナルってオープンヘルプツールは付いてないのかな
ヘルプ→カスタマイズが無い?
.OHC や .OHI をエディタで編集してみたら?
880デフォルトの名無しさん:2007/12/20(木) 12:13:29
Personalはヘルプ統合ツールないね
881デフォルトの名無しさん:2007/12/20(木) 13:22:54
MDIでアプリを作ってるのですが、
メニューバーの左端と右端に、子フォームの大きさなどを制御するための
アイコンやボタンが表示されてしまいます。

これらを非表示にするには、どうすればよいでしょうか?
882デフォルトの名無しさん:2007/12/20(木) 16:29:44
フォームの uses に Graphics やら Variants やらがありますが、
不要なものを見つけるにはどうすればいいでしょうか。

また複数のフォームを使っていて、あるフォームでは Grids が必要だけど
別のフォームでは必要ない場合、両方に uses するとメモリ使用量に
影響してくるでしょうか。
883デフォルトの名無しさん:2007/12/20(木) 16:58:31
>>882
消してもコンパイルが通るユニットは不要
884デフォルトの名無しさん:2007/12/20(木) 17:17:34
データベースで機種依存文字の入力を弾きたいのですが
どうやって判定したらいいですか?
885デフォルトの名無しさん:2007/12/20(木) 17:53:03
>>882
自動的に不要なユニットを探す機能はないので>>883のやり方しかない。

基本的に空フォームのユニットに宣言済みのものは消しても無意味。
Forms.pasとか内部で使ってるからメモリ使用量が減る事はない。

ただパレットからコンポーネントを貼り付けると自動的にそのコンポーネントのユニットがusesされ、
その後コンポーネントを削除してもusesには残ってしまって結果的にメモリの浪費になる可能性はある。
886882:2007/12/20(木) 18:22:41
ありがとうございます。消してコンパイルで試してみたいと思います。
ただやたら大きくてコンパイルが遅いプロジェクトがあったりして
面倒ですが…

2番目の質問は、考えてみるとユニットの定義だけでは影響しないかなと
思いました。
887デフォルトの名無しさん:2007/12/20(木) 19:20:42
TWebBrowserで、フレームのDocumentオブジェクトを取得したいのですが、どうしたらいいかわかりませんか。

(WebBrowser1.Document as IHTMLDocument2).frame.item(0);

これで今開いてるページ内の最初のフレームが取得できるようなのですが、その最初のフレームのDocumentオブジェクトを
取得する方法がわかりません。

VBだと WebBrowser1.Document.frame(0).Document でいけるようなのですが・・。
888デフォルトの名無しさん:2007/12/20(木) 23:23:32

以下のプログラムにて、プレビューを表示させ、印刷しようとしているのですが、プレビューウィンドウは開くのですが、肝心のプレビューが表示されないのです。

procedure TMainForm.PreviewClick(Sender: TObject);
begin
Report:=QrForm.QuickRep;
CopyDataToRep;
CopyStdToRep;
Report.Preview;
end;
//印刷初期化?
procedure TMainForm.SetReport(Value : TQuickRep); //印刷
begin
FReport:=Value;
end;


QuickRepコンポーネント上でマウスの右ボタンをクリックして、ポップアップメニューの「プレビュー」を左クリックしプレビューを表示させようとしても、プレビューが表示されません。

プリンタードライバー等の本プログラム以外が原因かと思い、ドライバーを入れ替えたり、違うPCにてプログラムを実行させたりしましたが、それでもダメでした。
試しにと思い、デルファイ5をインストールしなおしもしましたが、ダメでした。
以前は、問題なく動いていたのですが・・・

この場合、考えられる原因には何が挙がりますでしょうか?
889デフォルトの名無しさん:2007/12/20(木) 23:35:34
以前の環境も書かない、現在の環境も書かない、バージョンも不明。
エスパーを召還するしかない。
890デフォルトの名無しさん:2007/12/21(金) 00:30:10
>>887
SDK見る限りVBと同じじゃない?
891Delフサギコ ◆A6VzDeLphI :2007/12/21(金) 00:35:17
    ∧,,∧  しつもんっす。
   ミ,,゚Д゚∩
    ミ つ旦 ミ
  〜と,,,~),,~) 

Vistaに乗り換えてみまいた。

んで、Delphi2007UP3適応のMainMenu表示が
ファイル(&F) 編集(&E) ...
とかではなく
アクセラレータキーが消えていて
ファイル 編集 ...
と、なります。

ちょっと見た目がかっこわるいので、

これは、どうしてこうなるのか、
そして回避策はあるのかどうか、
ご存じでしたら教えてくださいませ。ヨロ。
892デフォルトの名無しさん:2007/12/21(金) 04:00:06
同じくMainMenuの質問なんですが
Altキーを押したときMainMenuにフォーカス(みたいなもの)が移ると思うのですが
この状態を調べるにはどうすればいいでしょうか?
MainMenu.Focusedで調べてみたけどうまくいきませんでした。
893デフォルトの名無しさん:2007/12/21(金) 04:01:26
それはdel7からの仕様です
894892:2007/12/21(金) 04:09:12
すいません、解決しました
Mouse.Capture=MainMenu.Handle
で調べることが出来ました
895デフォルトの名無しさん:2007/12/21(金) 10:47:59
Microsoft patterns & practices Patterns - C# でのシングルトンの実装
http://www.microsoft.com/japan/msdn/practices/type/Patterns/enterprise/ImpSingletonInCsharp.aspx

これみると、VCL の function Printer: TPrinter; とか、
function Clipboard: TClipboard; って、
スレッドセーフじゃないんだな。

要注意ですね。
896デフォルトの名無しさん:2007/12/21(金) 10:59:31
そもそもVCLはスレッドセーフじゃないので、複数のスレッドから相互に利用しまくるというような使い方は出来ません。
というか、そういう設計は普通の人間じゃ無理でしょ。
897デフォルトの名無しさん:2007/12/21(金) 11:11:07
で、
function Clipboard: TClipboard;
begin
  if FClipboard = nil then
  FClipboard := TClipboard.Create;
  Result := FClipboard;
end;
はマルチスレッドを考慮していない。  だからif の直後に他のスレッドが同じ関数を実行したら
両方のスレッドで Createが実行される事になる。

実際にマルチスレッド対応にするなら セマファを用意してセマファを立てると同時に読む命令を使うか
INC命令を実行してから結果が1かどうか見るというような手法を使うか
APIで排他処理をさせるかという事になる。

898デフォルトの名無しさん:2007/12/21(金) 11:35:55
Delphi6PersonalでTShellTreeView使ってる人に聞きたいんですが
AutoRefresh:=true;でShellTreeViewが表示してるアイテムを消したりすると落ちるんだけどこれはどうすればいいのでしょうか?

つーかこのコンポーネント意味がわからない不具合が多すぎる気がする。
代替コンポがあれば合わせて教えてくださるとありがたいです。
899デフォルトの名無しさん:2007/12/21(金) 13:15:33
実際のとこマルチスレッドでクリップボード扱う場面が思いつかない
900デフォルトの名無しさん:2007/12/21(金) 19:55:30
Printer なら普通に思いつくけど。
ま、VCL はスレッドセーフじゃない、ってことをくどくど言ってるだけだな >>897
901デフォルトの名無しさん:2007/12/21(金) 20:14:57
Delphi 6 Personal で以下のエラーがでてしまいます
"Incompatible types: 'TStringList' and 'TStrings'"

TStringsをTStringListに変換するにはどうすれば良いのでしょうか?
902デフォルトの名無しさん:2007/12/21(金) 20:28:48
TStrings は抽象クラスだからインスタンスはつくてはいけない。
TStringList は、TStrings は下位クラスの具体クラスだから、通常はこっちの
インスタンスはつくる。 上位クラスに下位クラスは代入可。逆は不可。
だから、「TStringsをTStringListに変換する」ことはあり得ない。
903デフォルトの名無しさん:2007/12/21(金) 20:30:18
>だから、「TStringsをTStringListに変換する」ことはあり得ない。

しかし、場面によってはあり得るか。その場合は単に型キャストするだけ。

904デフォルトの名無しさん:2007/12/21(金) 22:42:41
もし失礼な聞き方をしていたらごめんなさい。

TRadioButtonをコード上から出したくて、
privateに
FRB1: TRadioButton;

Createに
FRB1 := TRadioButton.Create(Panel1)//Panel1のうえに作りたい
FRB1.Top:=20; FRB1.Left:=20

としたけど、画面上に出てくれません。
FRB1.VisibleをTrueにしたりPanel1をForm1にしても出てくれません。
どこが悪いのでしょうか?Delphi7 + WinXP Homeです。
905デフォルトの名無しさん:2007/12/21(金) 22:49:37
>>904
FRB1.Parent := Panel1;
906デフォルトの名無しさん:2007/12/21(金) 23:00:07
あっ、出た! ほんとだ。嬉しいです!
どうもありがとうございます。

でもこのときCreateの引数でいれてるPanel1は何の意味もないものなんですか?
907デフォルトの名無しさん:2007/12/21(金) 23:04:13
オブジェクトの所有関係とウィンドウの親子関係は別の物。
オーナーを指定すれば、オーナーが破棄されるときに自動的に破棄される。
908デフォルトの名無しさん:2007/12/21(金) 23:13:12
>オブジェクトの所有関係とウィンドウの親子関係は別の物。
>オーナーを指定すれば、オーナーが破棄されるときに自動的に破棄される。

よくわかりました! どうもありがとうございます。 [解決]
909デフォルトの名無しさん:2007/12/21(金) 23:36:46
910デフォルトの名無しさん:2007/12/22(土) 00:20:34
プログラミングの質問じゃないんですが・・
「Delphiオブジェクト指向プログラミング」 著者: 塚越 一雄
Delphiの本を探してると、この本が目に付いたんですが
オクとか古本屋では5000円〜の値段が付いてるんですけど、
そんなに良い本なんですか?
911デフォルトの名無しさん:2007/12/22(土) 00:29:17
需要と供給
912デフォルトの名無しさん:2007/12/22(土) 00:42:46
えぇ?マジ?

Delphiの塚越本は古いの含めて全部持ってるが、売れるかな?
DelphiXの本とかもあるぞ。
913デフォルトの名無しさん:2007/12/22(土) 02:48:01
>オーナーを指定すれば、オーナーが破棄されるときに自動的に破棄される。

じゃぁFreeしなくていいの?いままでしてたけど…
914デフォルトの名無しさん:2007/12/22(土) 04:19:56
>>913
オーナーが破棄されるときに破棄されればよいのなら必要はない。
しても特に問題はないが。
915デフォルトの名無しさん:2007/12/22(土) 06:31:13
>>914
ありがと、FreeはDestroyと違ってやっても大丈夫なんだよね。
安心した。
916デフォルトの名無しさん:2007/12/22(土) 07:13:24
>>915
たぶんコンポーネントの動作についてもFreeの意味についても誤解してる。
TComponent継承クラスのオブジェクトは、破棄されるときに自動でOwnerに自分が破棄されたことを知らせて
OwnerのComponentsリストから自分を外させるので、次のようにしても問題は起こらない。
X := TComponent.Create(Form1);
Y := TComponent.Create(X);
Y.Free;
X.Free;

Freeの話はこれとは全く関係ない。
x.freeとx.destroyの関係は、freeはxがnilでないことを確認してからdestroyを呼び出すことの一点。
例えばこれは意味がないけど問題もないコード。
x := Thoge.create;
x.free;
x := nil;
x.free;

しかしオブジェクトが解放されてもxは自動でnilになることはなく、破棄したデータのポインタを保持したままになる。
だから、
x := Thoge.create;
x.free;
x.free;
これは二重解放になり、メモリ上のデータを壊す可能性がある。まったく同じ理由で、
X := TComponent.Create(Form1);
Y := TComponent.Create(X);
X.Free;
Y.Free;
これもやってはいけない。
917デフォルトの名無しさん:2007/12/22(土) 11:49:52
定数パラメータについて質問です。

function TForm1.AAA(const S2: string):Boolean;
という関数がありまして、Form1のprivate変数でS1をstringで定義して
S1 := 'abc';
if AAA(S1) then
とします。関数 AAA の中でそれぞれを表示してみますと、S1は空白が、
S2はabcとなります。なぜS1は空白なのでしょうか。
918デフォルトの名無しさん:2007/12/22(土) 11:56:50
>>917
再現する最小のコードを書いてほしい。
919デフォルトの名無しさん:2007/12/22(土) 12:08:57
>>917 俺の想像では 
1 var s1 : string; というローカル変数を定義している 可能性70%
2 const s1 ='abc';とやってる 可能性30%
920デフォルトの名無しさん:2007/12/22(土) 12:11:38
>>917 パーソナルでないなら、S1 の上でマウスの右ボタン、一番上の「定義の検索」
でどこに飛ぶか見てごらん。
921デフォルトの名無しさん:2007/12/22(土) 12:20:52
ううっ…回答くれたのにゴメンなさい。S1をクリアしているところが
ありました。恥ずかしい…
922デフォルトの名無しさん:2007/12/22(土) 14:02:42
可能性0%でくるとは
923デフォルトの名無しさん:2007/12/22(土) 22:44:09
GJ
924デフォルトの名無しさん:2007/12/23(日) 01:51:29
>>916
ありがとうございます。
よくわかりました。
925デフォルトの名無しさん:2007/12/23(日) 14:45:56
>>902-903
ええと、一行目のTStringsはTStringListですよね?
あとは良くわかりました。解説ありがとうございます。

ファイルの読み書きでTStringListを使えば簡単にできると
TStringListのインスタンスを使って説明してるサイトがあったのでそこを参考にしてました。
これからはTStringsを使うことにします
926デフォルトの名無しさん:2007/12/23(日) 15:43:18
荒らしてるつもりなの? >>925
927デフォルトの名無しさん:2007/12/23(日) 15:53:30
え?なぜ??
928デフォルトの名無しさん:2007/12/23(日) 16:33:04
正しい理解には至っていないように見える。
まあ思った通りにやってみて躓いたらコード晒した方がいいかもな。
929デフォルトの名無しさん:2007/12/23(日) 16:38:53
>>925
TStringList を今のままつかえばいいです。

TStringsは、インスタンス化できないので、そのまま使っちゃダメ
930デフォルトの名無しさん:2007/12/23(日) 16:52:07
ああ、もうごめんなさい。こんがらがってました。
TStrings "の"下位クラスがTStringListなんですね。
931デフォルトの名無しさん:2007/12/23(日) 23:30:57
ど素人質問で失礼します。
例えば↓のような場合
private
 FChanged: Boolean;
public
 property Changed: Boolean read FChanged write FChanged;

この場合、クラスメソッド内でFChangedを使うのとChangedを使うのに違いはありますか?
まずプロパティの意味もよく理解してなかったりで・・・
932デフォルトの名無しさん:2007/12/23(日) 23:37:52
>>931
同じ。
ただしChangedの実装が変わる場合もあるから(書き込み時に特定の処理をしたくなってwriteをSetChange関数経由で処理するようにした等)
そのあたりは留意。
933デフォルトの名無しさん:2007/12/23(日) 23:42:43
>>931
プロパティは、アクセサとも呼ばれていて、
変数を直接公開せず、カプセル化するために使われる。

クラスのメソッド(クラスメソッドだと、別の意味になるので注意)内では、
その場合、違いはない。

ただ、プロパティにしておくと、FChangedがなくなって関数化されたりした場合、
そのまま使える。
つまり、変更に強い。

また、Delphiの場合、プロパティに変数を使用した場合は、
最適化されるため、変数と比べ、速度的な問題はない。

どちらを使うかは自由だし、場合にもよりけり。

ただ、俺は、クラス内では、そのプロパティがどう振舞うか、当然わかっているため、
自クラスのプロパティが特殊なふるまいをする場合以外は、
直接変数を使ってしまう場合が多いな(この場合、FChanged)

他の人の意見も聞いてみたい。
934デフォルトの名無しさん:2007/12/23(日) 23:54:30
副作用を回避したいならFProp直書き
副作用を利用したいならPropに代入(SetPropを呼ぶことはまずない)
そんだけ

上記に当てはまらない大半のどっちでもいいケースなら経験的にいってどーでもいい。
もしwrite FPropをwrite SetPropに書き換えたら
FPropにアクセスしている部分をついでにちゃんと動くようにすりゃいいだけの話。
アホみたいにでかいクラスでもなければバグ撒き散らす事もないだろう。
UnitTestをちゃんとしてればの話だが。
935デフォルトの名無しさん:2007/12/23(日) 23:58:55
>>932-933
おお・・・まさに求めていた答え。お2方ありがとう
最適化されるのなら、一応どちらでもOKという感じですね
あとは変更した場合に気をつけると。
936デフォルトの名無しさん:2007/12/24(月) 00:00:43
>>934もありがとう
とにかくプロパティの実装を変更したときに気をつけます
937デフォルトの名無しさん:2007/12/24(月) 00:03:04
あ、クラスメソッドは別物でしたね・・・
938デフォルトの名無しさん:2007/12/24(月) 01:38:06
クラスのフィールドであることを明示的に示したいから、僕はFChangedを使う。
939デフォルトの名無しさん:2007/12/24(月) 05:28:35
16進数の文字コードを、文字へ変換したいと思っています。

1バイト文字の場合は、Chr(StrToInt('$33'))のようにして変換できたのですが、
2バイト文字の時の方法が分かりません。

例えば16進数で"82 A0"は「あ」を指すらしいのですが、
どうすれば"82 A0"を「あ」に変換することができるのでしょうか?
よろしくお願いいたします。
940デフォルトの名無しさん:2007/12/24(月) 06:12:56
procedure TForm1.Button1Click(Sender: TObject);
begin
 Label1.Caption:= Chr(StrToInt('$82'))+Chr(StrToInt('$A0'));
end;
941デフォルトの名無しさん:2007/12/24(月) 08:45:31
他のアプリを終了してもなおロックされたままのファイルを
アンロックして削除する方法ってありますか?
942デフォルトの名無しさん:2007/12/24(月) 10:06:35
>>940
便乗するんですが、このコードや、
Result := Result + '%' + IntToHex(Byte(src[i]), 2);
をベースに
D5でUniCodeファイル名をTStringListやTGraphic等に読み込ますことは出来ないでしょうか?
943デフォルトの名無しさん:2007/12/24(月) 10:16:49
>>941
プログラミング関係ないが
どのプロセスがロックしてるかを表示するツールならあったような。
そいつを殺してやれば削除できるんじゃねーの。
944941:2007/12/24(月) 13:18:01
>>943
そういうソフトは実際にあるんですけど、もっと使いやすいのが欲しかったので
自作で出来ないかなと思ったんですw
945デフォルトの名無しさん:2007/12/24(月) 13:41:26
>>944
Unlockerじゃだめなん?
946デフォルトの名無しさん:2007/12/24(月) 13:46:39
Win32APIスレで聞いたほうが。
947941:2007/12/24(月) 18:13:04
>>945>>946
なんか難しそうなんで、黙ってUnlocker使うことにします。
ありがとうございましたw
948 ◆XcB18Bks.Y :2007/12/24(月) 21:21:46
そろそろ次スレの季節ですがテンプレは現行スレの>>1準拠で大丈夫でしょうか?

>>942
おそらくURLの%xxの形式でエンコードされた文字列を通常の文字列に変換して、
さらにその名前のファイルを読み込もうということでしょうか。

前者に関してはHTTAppユニットのHTTPDecode関数というのがありますので使えるかも知れません。
(Lerning版だとHTTPAppユニットがないかも知れません)
ただし%xx形式の文字列をデコードするだけでShift-JISコードに変換するわけではありません。
UTF-8や日本語EUCの文字列がURLエンコードされている場合はさらに変換する必要があります。
(たとえばWikipediaのURLはUTF-8です)
D5にはそういう関数がないので自力で変換する必要があります。
(UTF-8ならWindows APIのMultiByteToWideCharでワイド文字列に変換できそうですが…)

後者に関しては
もし文字列にShift-JISコードで使えない文字が1文字も含まれていなければ
文字列リストやグラフィックオブジェクトのLoadFromFileメソッドが使えます。
1文字でも含まれていると文字列リストやグラフィックオブジェクトのLoadFromFileメソッドは使えません。
(AnsiStringに変換される時点で別な文字に変換されてしまうため)
この場合はワイド文字列版のAPIを使ってファイルをメモリストリームオブジェクトに読み込み
文字列リストやグラフィックオブジェクトのLoadFromStreamメソッドでこのストリームから読み込みます。
(これについてはTurbo Delphi Explorerの方ですが確認しました)
949デフォルトの名無しさん:2007/12/25(火) 00:01:41
TurboDelphiでは、Delphi4等の古いバイナリ形式のDFMファイルは
使えないのでしょうか?
950 ◆XcB18Bks.Y :2007/12/25(火) 03:26:36
>>949
Delphi 5で日本語の見出しを付けたラベルを貼り付けただけのフォームを作って
(もちろんバイナリ形式に変更して)試したみたところ、
Turbo Delphiで読み込む分には大丈夫みたいでした。
951デフォルトの名無しさん:2007/12/25(火) 04:35:04
>>948
エスパー乙
952デフォルトの名無しさん:2007/12/25(火) 16:34:16
D7+FB1.5で質問です。
TDBEditでTimeFieldまたはDateTimeFieldを編集するときに
hh:mm形式で秒を抜かして時分だけ編集するにはどうしたらよいでしょうか。
フィールドにEditMaskに!99:99;1;_ DisplayFormatにhh:mmとしてみたところ
編集や表示は出来るのですが例えば'12:34'と入力して次のフィールドに移り
また戻ってくると'12:00'と表示されてしまいます。
そのまま何もせずまた他のフィールドにフォーカスを移すと'12:34'に戻ります。
953デフォルトの名無しさん:2007/12/25(火) 22:51:38
D7です。
動的配列を明示的に開放しなくてもいいらしいですが、本当ですか?
また、構造体70項目*n個の動的配列を使っていたらエラーが頻出します。
原因は動的配列によるものですか?70項目*1ならエラーはでなくなりますか?
954953:2007/12/25(火) 22:56:03
なんとなく自己解決。
やっぱりバカデカイ動的配列を使うのはまずいみたいですね。
あと、SetLengthであらかじめ大きいサイズを確保した方がいいのかな。
955デフォルトの名無しさん:2007/12/25(火) 23:09:20
setlengthは何度も何度も呼び出すんじゃなくて、最初に余分に割り当てておくほうがいいらしい。
956デフォルトの名無しさん:2007/12/25(火) 23:36:16
>>948
まさに後者です。これが知りたかった。
> この場合はワイド文字列版のAPIを使ってファイルをメモリストリームオブジェクトに読み込み
> 文字列リストやグラフィックオブジェクトのLoadFromStreamメソッドでこのストリームから読み込みます。
> (これについてはTurbo Delphi Explorerの方ですが確認しました)


私の脳内質問にウルトラスーパーデラックスな回答をありがとうございました(-人-)合掌
957949:2007/12/26(水) 00:42:17
>>950
ありがとうございます。 ん〜、じゃ何が原因かなぁ・・・。
958デフォルトの名無しさん:2007/12/26(水) 00:44:54
>>953
何のエラーが出たのか言ってくれないと。
巨大配列でエラーなら、メモリ不足?
959デフォルトの名無しさん:2007/12/26(水) 04:13:35
>>953
動的配列は、自動で解放してくれると思っていい。
手動で解放するなら、nil 代入しても開放される。

また、参照カウンタ方式で、どこからも参照されなくなったら、勝手に開放が基本で、
ただの代入では、コピーされない。

注意点は、string と違って、CopyOnWriteがない。
stringは、代入は、ただ参照先を入れているだけで、コピーされず、
hoge[1] := 'h"などど、各要素にアクセスしたときに、初めてコピーされる。
動的配列、hoge[1] := moge; などと各要素に書き込んでも、複製されない性質がある。


動的配列は、ふつうは、SetLengthであらかじめ確保しておく。
というか、素の配列のように、SetLength なしで、つかってたらアフォ(それはないと思うけど)

要素の追加が頻繁なら、TListなりリスト系のクラスを使う
960デフォルトの名無しさん:2007/12/26(水) 05:12:18
ttp://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200309/200309_03090055.html

↑stdDialogsユニットのTopMost関数を使って ”他のアプリがアクティブになっても常にアプリを最前面表示したい” のですが、
うまくいかんニダ。

uses ・・・, stdDialogs;

procedure TForm1.FormDeactivate(Sender: TObject);
begin
TopMost(Form1.Handle);
end;

としても他のアプリ(ブラウザ等)をクリッコするとアプリが最小化してしまいます。
アプリはForm1があるだけでその他のフォームやダイアログなどは出ないシンプルなアプリです。
どこがいけないのか教えられてあげます。 よろしくお願いされたまえ馬鹿やろう。
961デフォルトの名無しさん:2007/12/26(水) 05:18:31
>>960
OnShowに書いて下さい。

>>961
ありがとうございました。
962 ◆XcB18Bks.Y :2007/12/26(水) 10:25:07
>>957
もしかして標準以外のコンポを使っています?
Turbo Delphi Explorerでは標準以外のコンポは設計時に配置できません。
963デフォルトの名無しさん:2007/12/27(木) 00:04:01
>>962
使ってません。
ソースとexeがここにありますけど。
gamdev.org/up/img/10666.lzh
964デフォルトの名無しさん:2007/12/27(木) 10:17:30
Delphi7とFireBird1.5で質問です。
IntegerフィールドをDBGridでチェックボックスで表示してオフならば0オンならば1をセットしたいのですが
可能でしょうか。
965デフォルトの名無しさん:2007/12/27(木) 11:14:00
>>955
そうなんだ、間違ってたんだな俺。
結局実務で使わなかったから不具合出たかは解かんないけど。
966 ◆XcB18Bks.Y :2007/12/27(木) 12:03:19
>>963
試してみたところ、読み込み時に下のようなエラーダイアログが出て
アプリケーションアイコンがTurbo Delphi Explorer標準のものになってしまいますが
読み込みは上手くいっているようですし実行も出来ました。

---------------------------
エラー
---------------------------
リソースファイル C:\Documents and Settings\ (略) \デスクトップ\10666\Project1.res が見つからないので再作成しました。
---------------------------
OK
---------------------------
967デフォルトの名無しさん:2007/12/27(木) 16:26:22
Delphi7だけど
アクセスで作ったリスト(文字列とか数値のデータ型設定済み)を
インポートかなんかで読み込んだら
そのまま即配列として使えますか?
それとも各列のデータ型に合うように一個一個型宣言しないと使えませんか?
教えてください。
使い道は単なる配列の用途です。100列×1000行、というか100項目のクラスが1000個、というか
まぁその辺まだ理解出来てないレベルです。
968デフォルトの名無しさん:2007/12/27(木) 16:38:58
>>966
(略)さん今後とも宜しくお願いします
969デフォルトの名無しさん:2007/12/27(木) 16:52:31
>>964
OnDrawColumnCellイベントに自分で描けばいい。
970デフォルトの名無しさん:2007/12/27(木) 22:41:19
>967
その前に聞こうか。TField型について調べたか?
971デフォルトの名無しさん:2007/12/27(木) 22:58:48
a, b, c: integer;
c := a div b;
aが負数でもcはマイナスにならないのはなじぇ
972デフォルトの名無しさん:2007/12/27(木) 23:04:06
b が負数だから。

>>966
ありがとうございます。 
操作ミスか何かと考えます。
973デフォルトの名無しさん:2007/12/27(木) 23:06:22
なぞなぞだったのかよ
974デフォルトの名無しさん:2007/12/27(木) 23:07:19
turboの複数言語インスコって
turboマネージャー亡き今はもう無理なんだっけ?
975967:2007/12/27(木) 23:22:38
>>970
personalだからHelpもリンクされてない
だめか
976デフォルトの名無しさん:2007/12/27(木) 23:28:23
ごめn
おれがいいたいのは
たとえば a = -1 かつ b > 1 のとき c = 0 になるんだよ
これってコンピュータ内部事情?
977デフォルトの名無しさん:2007/12/27(木) 23:35:52
-0 になってほしいのか? 
978デフォルトの名無しさん:2007/12/27(木) 23:36:35
整数除算か
979デフォルトの名無しさん:2007/12/27(木) 23:37:29
>>977
いやこれにたよったコード書いていいのか思って
もちろん整数についてだけど
980デフォルトの名無しさん:2007/12/27(木) 23:40:58
>>976
実数が欲しいなら、
a, b, c: Double;
として、
c := a / b;
ってやってくれ。
981デフォルトの名無しさん:2007/12/27(木) 23:47:07
負数を正数で割ると問答無用で0になるの?
982デフォルトの名無しさん:2007/12/27(木) 23:47:35
>>980
いや>>979が知りたかったが
どうやら整数除算というやつは環境依存だそうだから
頼ったコードは書けないんだね
983デフォルトの名無しさん:2007/12/28(金) 00:04:55
>>981
-4 div 2 とかならならちゃんと-2になるよ
実数が欲しいなら>>980
984デフォルトの名無しさん:2007/12/28(金) 00:05:06
>>981
いやいや、 小数点は切り捨てられるって事。
つまり、-0.5→0 になる。
Delphiのdivは常に切捨てじゃないの?

-0.5を-1にしたいのなら、
Trunc, Floor, Ceil のどれかを使うと思う。
985デフォルトの名無しさん:2007/12/28(金) 00:12:30
>>984
>Delphiのdivは常に切捨てじゃないの?

おお、じゃあそれに頼ったコード書いていいんだね
それを教えて
986デフォルトの名無しさん:2007/12/28(金) 00:18:09
ヘルプに載ってるでしょ。
987デフォルトの名無しさん:2007/12/28(金) 00:22:56
浮動小数点型のデータをdivで割ろうとすると「型が違う」とコンパイルエラーになる。
988デフォルトの名無しさん:2007/12/28(金) 00:23:14
>>986
すまん・・・・

>x div y の値は,x/y の値を 0 の方向に向かってもっとも近い整数に丸めた値

載ってた・・・・ありがとう
989デフォルトの名無しさん:2007/12/28(金) 00:24:41
頭悪すぎ・・
990デフォルトの名無しさん:2007/12/28(金) 00:49:33
性格が悪いよりいいさ
991デフォルトの名無しさん:2007/12/28(金) 01:05:18
けだし名言
992デフォルトの名無しさん:2007/12/28(金) 01:07:05
でも環境依存のコードってあまりな
993デフォルトの名無しさん:2007/12/28(金) 01:14:29
コンパイラオプション依存のコードは結構あった。
994ななしへたぐらま ◆XcB18Bks.Y :2007/12/28(金) 04:37:29
もうスレ終了間際なのですが当方、今夜はスレ建てられませんのでテンプレだけ作っておきます。

>>1のテンプレはDelWikiの過去ログに飛べなかったのでURIをいじってみました。
>>2のテンプレはdat落ちしたスレを省きました(次スレが見つからなかったのでただの削除です)。

スレタイ:くだすれDelphi(超初心者用)その45

-->>1用--------
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を
勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが
お礼はDelphiの布教と初心者の救済をお願いします。

<前スレ>
くだすれDelphi(超初心者用)その44
http://pc11.2ch.net/test/read.cgi/tech/1191657968/

<過去スレ>
DelWiki避難所(Delphi 関連の過去スレッド)
http://delwiki.info/?Delphi%20%B4%D8%CF%A2%A4%CE%B2%E1%B5%EE%A5%B9%A5%EC%A5%C3%A5%C9
----------
(つづく)
995ななしへたぐらま ◆XcB18Bks.Y :2007/12/28(金) 04:38:20
-->>2用--------
<関連スレ>
【Delphi】 Indyコンポーネント 【C++Builder】
http://pc11.2ch.net/test/read.cgi/tech/1093654251/
Delphi初心者のための寺子屋
http://pc11.2ch.net/test/read.cgi/tech/1132756268/
delphiで作った有名ソフトって何があるの?
http://pc11.2ch.net/test/read.cgi/tech/1135654787/
Delphi持ってるならGLSceneを使え
http://pc11.2ch.net/test/read.cgi/tech/1163269079/
【Delphi互換!?】FreePascal【GPL】
http://pc11.2ch.net/test/read.cgi/tech/1137051510/

【Delphi】 ゲームつくるぞ(゚Д゚)ゴルァ 2【Delphi】
http://pc11.2ch.net/test/read.cgi/gamedev/1097836469/
Delphiでアクションゲームが作りたい!! Part2
http://pc11.2ch.net/test/read.cgi/gamedev/1027482533/
ネットワークゲーム作成のお勉強(Delphi専用スレ)
http://pc11.2ch.net/test/read.cgi/gamedev/1028278884/
delphiでMMO
http://pc11.2ch.net/test/read.cgi/gamedev/1072515100/
----------
(以上)
996デフォルトの名無しさん:2007/12/28(金) 09:49:18
立ててきた

くだすれDelphi(超初心者用)その45
http://pc11.2ch.net/test/read.cgi/tech/1198802907/
997ななしへたぐらま ◆XcB18Bks.Y :2007/12/28(金) 10:50:15
>>996
朝からお疲れさまでした!
998ななしへたぐらま ◆XcB18Bks.Y :2007/12/28(金) 11:52:37
>>967
アクセスでカンマ区切りテキストでエクスポートして文字列リストに読み込む。
1行ごとに別の文字列リストのCommaTextに代入すれば各行にフィールドの文字列が入ります。
カンマ区切りテキストにした時点で全部文字列になっているので
必要に応じて整数型や実数型に再変換。

#しかし列が100もあるテーブルってどんなテーブルなんだろう…
999デフォルトの名無しさん:2007/12/28(金) 11:55:41
糞スレ埋め
1000デフォルトの名無しさん:2007/12/28(金) 11:56:12
1000げと
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。