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

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

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

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

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

<その他>
BorlandHomePage
http://www.borland.com/jp/
DelWiki避難所
http://delwiki.info/
BDN(BorlandDeveloperNetwork)
http://bdn.borland.com/jp/delphi

#過去スレは>>2-10のどこかに

2 :デフォルトの名無しさん:2006/09/29(金) 08:17:54
過去スレ
01:http://pc5.2ch.net/tech/kako/1051/10518/1051882835.html
02:http://pc5.2ch.net/tech/kako/1053/10537/1053757982.html
03:http://pc5.2ch.net/tech/kako/1055/10559/1055986736.html
04:http://pc5.2ch.net/tech/kako/1058/10588/1058834815.html
05:http://pc5.2ch.net/tech/kako/1061/10610/1061090908.html
06:http://pc5.2ch.net/tech/kako/1063/10632/1063202727.html
07:http://pc5.2ch.net/tech/kako/1065/10651/1065195699.html
08:http://pc5.2ch.net/tech/kako/1068/10682/1068201045.html
09:http://pc5.2ch.net/test/read.cgi/tech/1071294733/
10:http://pc5.2ch.net/test/read.cgi/tech/1074523803/
11:http://pc5.2ch.net/test/read.cgi/tech/1076609666/
12:http://pc5.2ch.net/test/read.cgi/tech/1076610073/
13:http://pc5.2ch.net/test/read.cgi/tech/1081003641/
14:http://pc5.2ch.net/test/read.cgi/tech/1085239007/
15:http://pc5.2ch.net/test/read.cgi/tech/1087823906/

3 :デフォルトの名無しさん:2006/09/29(金) 08:19:07
16:ttp://pc5.2ch.net/test/read.cgi/tech/1089779142/
17:ttp://pc5.2ch.net/test/read.cgi/tech/1091671391/
18:ttp://pc5.2ch.net/test/read.cgi/tech/1093996761/
19:ttp://pc5.2ch.net/test/read.cgi/tech/1097454588/
20:ttp://pc5.2ch.net/test/read.cgi/tech/1101530485/
21:ttp://pc5.2ch.net/test/read.cgi/tech/1104511938/
22:ttp://pc5.2ch.net/test/read.cgi/tech/1107332482/
23:ttp://pc8.2ch.net/test/read.cgi/tech/1110470895/
24:ttp://pc8.2ch.net/test/read.cgi/tech/1115581376/
25:ttp://pc8.2ch.net/test/read.cgi/tech/1119008091/
27:ttp://pc8.2ch.net/test/read.cgi/tech/1126590039/
28:ttp://pc8.2ch.net/test/read.cgi/tech/1131168199/
29:ttp://pc8.2ch.net/test/read.cgi/tech/1135866929/
30:ttp://pc8.2ch.net/test/read.cgi/tech/1138370150/

4 :デフォルトの名無しさん:2006/09/29(金) 08:20:15
31:ttp://pc8.2ch.net/test/read.cgi/tech/1142594051/
32:ttp://pc8.2ch.net/test/read.cgi/tech/1145267913/
33:ttp://pc8.2ch.net/test/read.cgi/tech/1148378877/
34:ttp://pc8.2ch.net/test/read.cgi/tech/1151143010/

Delphiに関係してる雑談および関係してない雑談については以下で

バカボンのDelphi不買・販促・その他談話室その29
http://pc8.2ch.net/test/read.cgi/tech/1153227982/

5 :デフォルトの名無しさん:2006/09/29(金) 08:27:25
>>1

6 :デフォルトの名無しさん:2006/09/29(金) 08:33:17
> #過去スレは>>2-10のどこかに

つ DelWiki避難所
http://delwiki.info/?Delphi+%B4%D8%CF%A2%A4%CE%B2%E1%B5%EE%A5%B9%A5%EC%A5%C3%A5%C9

7 :デフォルトの名無しさん:2006/09/29(金) 12:14:25
for i:=0 to 9 do
って書いてるのにいきなり i に10が入ったりするんだけどこれはどういう事ですか?

8 :デフォルトの名無しさん:2006/09/29(金) 13:18:09
たぶんおっぱい成分が足りないからだよ

9 :デフォルトの名無しさん:2006/09/29(金) 13:19:59
for文の前後のコード晒してみ

10 :デフォルトの名無しさん:2006/09/29(金) 13:33:35
最適化でそうなる場合がある。

11 :>>7:2006/09/29(金) 14:26:36
最適化つけたりはずしたりしてたら治った
なんだこりゃ

12 :デフォルトの名無しさん:2006/09/29(金) 14:42:04
コード実行的にはそれで無問題。

13 :デフォルトの名無しさん:2006/09/29(金) 16:32:24
VBならiはきちんとするのにね

14 :デフォルトの名無しさん:2006/09/29(金) 16:34:14
VBは最適化も満足に出来んのか。

15 :デフォルトの名無しさん:2006/09/29(金) 16:36:10
最適化でコードを省略したりデバッグ情報吹き飛ばしたりできないどころか、
ブビは、













Exeの中身はインタープリタ。

16 :デフォルトの名無しさん:2006/09/29(金) 16:40:43
それは大昔の話だろ?

17 :デフォルトの名無しさん:2006/09/29(金) 16:41:58
ソースコードがなくて、dcuしかないファイルが中にあるときにビルドする方法を教えてください
ソースコードの中にそのdcuだけしかないファイル内にて宣言されている識別子があって
コンパイル中にそこで停まってしまいます。

18 :デフォルトの名無しさん:2006/09/29(金) 16:43:47
日本語でおk

19 :校正ヌンジャ:2006/09/29(金) 16:48:07
ソースコードが無く、dcuファイルしかないユニットを含むプロジェクトをビルドする方法を教えてください。
そのユニット内で宣言されている識別子を別のユニットで使うとコンパイルエラーになります。

20 :デフォルトの名無しさん:2006/09/29(金) 17:10:12
プロジェクト→オプション→ディレクトリ/条件タブの検索パスにdcuファイルのパスを指定
uses節にdcuファイル名を記述
ビルド

21 :デフォルトの名無しさん:2006/09/29(金) 17:32:26
>>19
校正ありがと

>>20
うまくできました。
ちなみに、プロジェクト登録されているファイル群の中に
dcuしかないファイルのpasファイルが登録されていて、
上記の検索パスの設定に加えて
このpasファイルの登録を削除したらうまくいきました。

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

22 :デフォルトの名無しさん:2006/09/29(金) 19:47:52
>>7
10から減算した方が速度的に速いから、最適化でそうなる。
iが使われている場合(表示など)は、きちんと0から増加する

23 :デフォルトの名無しさん:2006/09/29(金) 20:01:08
>>22
詳しく。たとえばどんなコードでそうなるのか教えてください。

24 :デフォルトの名無しさん:2006/09/29(金) 20:10:31
大昔からの FAQ だよね。検索するといっぱいあるんじゃないの。ML とか

25 :7:2006/09/29(金) 20:14:49
>>22
なるほど。
最適化つけたりはずしたりする事じゃなくてfor文の中を書いたから治ったのか。
ありがとうございました。

26 :デフォルトの名無しさん:2006/09/29(金) 20:17:47
>>23
22じゃないが、なにも見ないでレスすると、
最後に0になるため、CPUのzeroフラグが立ち
zeroフラグジャンプが起こるので10から始めた方が速い。
(0からなら9との比較後に、条件ジャンプなのでちょっと遅い)

27 :デフォルトの名無しさん:2006/09/30(土) 15:49:38
すみません、教えてください。

DelphiやBCBはバージョン6以降、認証方式をとっており、
何回かインストールするとインストール回数が多すぎて認証不可に
なるそうですね。

レジストリに認証のキーがあるそうですが、私はレジストリを弄った
ことがありません。どなたか、簡単にレジストリの関連のキーの退避と
復帰の方法を教えてください。かなりDel6とDel7を何回もインストールを
繰り返したので心配になりました。今後も使い続けたいのでお願いします。
BDS2006は結構アンインストールをしたのに、意図的にレジストリを消さないと
キーが残っているみたいで、認証コードの入力が要求されませんね。

De7を例にお願いします。

28 :デフォルトの名無しさん:2006/09/30(土) 16:05:52
田三キー + R → regedit → Delphiを検索 → 右クリックからキーを保存

29 :デフォルトの名無しさん:2006/09/30(土) 16:31:10
>>27
某に電話すれば、回数が増えて、認証できるようになる。

30 :デフォルトの名無しさん:2006/09/30(土) 16:41:35
>>29
めんどうなので電話は無しということで。
>>28
すみません、田三キーがわかりませんし、Delphiを検索で
右クリックからキーを保存とありますが、どのキーをどの様に保存して
どう復帰するのか、よろしければ、アドバイスください。

だれか、「Delphi認証キー保存復帰プログラム」なんてユーティリティー
つくってVectorでアップしてくれませんか。

31 :デフォルトの名無しさん:2006/09/30(土) 17:09:44
Windowsキー + R → regedit → HKEY_LOCAL_MACHINE\SOFTWARE\Borland → 右クリックからキーを保存

そこに認証情報があるかは、知らんけど

32 :デフォルトの名無しさん:2006/09/30(土) 17:12:30
今後も使い続けたいというような重要な場面に、電話は面倒だと?
ふざけてんのか?

俺は知ってるけど教えるのやめた。

33 :デフォルトの名無しさん:2006/09/30(土) 17:17:23
どうせ>>30は割れ厨。相手にすんな。

34 :デフォルトの名無しさん:2006/09/30(土) 17:28:50
>>33
反論しますが、自前でほとんどのバージョンのDelphiとBCBをもっています。
それも全てプロ板。
>>32
ふざけていませんが、それでは8年後にDel6の認証回数がオーバーしたので
何とかしてくださいと電話をかけるなんてことをしなければならないのですか?
そのときは最新版を使えというのは無しです。マシンはそんなに簡単に買い替え
られません。私はマシンを4台持っていますが、Del1も2も現役です。必要なら
10年だって使います。

>>31
ありがとうございます。Regeditは無印と32がくっついているものと2つWINDOWS
ディレクトリで見つけました。なんだかよくわかりませんが、今あまり使っていない
Del6をインストールしたマシンで実験してみます。

ません。

35 :デフォルトの名無しさん:2006/09/30(土) 17:51:11
>>34
> 8年後に

日某が潰れてなければ、それもOKでしょう。
潰れるなら、何らかの救済措置があるでしょうし。

電話が嫌なら
OS全体をバックアップするという手もあります。

36 :デフォルトの名無しさん:2006/09/30(土) 17:54:11
単なるわがままボウヤのようだな。

37 :デフォルトの名無しさん:2006/09/30(土) 17:57:12
時は金なり。電話しなさい。

38 :デフォルトの名無しさん:2006/09/30(土) 18:03:14
>>35
メーカーにもよるとおもいますし、これは認証の問題ではありませんが、
I*MのVisualAgeシリーズでサポートの電話をかけたとき、とっくに販売停止
した製品についてはお答えできません。また、今頃そんな古いソフトの話を
持ち出すなんて非常識みたいなニュアンスの応対を受けたので、個人的に
電話でどうのこうのと助けを求めるのは個人的に嫌になりました。

OSは現在 PC-DOS2000. OS/2WarpV4、 Win98後期 Win2000、WinXp を
使っています。Del1はWarpで、Del7はWin2000、WinXpで使っています。
どのマシンもすでに複数のソフトをインストールしているので、OS全体をバック
アップするのは大変みたいですね。レジストリを勉強してみます。

39 :デフォルトの名無しさん:2006/09/30(土) 18:09:31
>>36
54歳の中年を捕まえてボウヤ呼ばわりされるとは・・若作りし過ぎたかな(笑)

>>31
「Boland」のトップ(?すみません用語を知らないもので)で保存を選ぶと
それ以下のツリー構造のキーを全て同一ファイルにテキスト形式で保存するみたい
ですね。あとは適当な場所に適当なファイル名で保存して、必要なときにファイルを
ダブルクリックすれば復帰されるでよろしいでしょうか?
気になるのは「HKEY_LOCAL_MACHINE」以外にも「Borland」があるのでそれを全て
保存するかどうかですが、実験してみます。

40 :デフォルトの名無しさん:2006/09/30(土) 18:12:38
認証はレジストリではなくて、どこかにテキストファイルを作っている可能性もある。

41 :デフォルトの名無しさん:2006/09/30(土) 18:13:04
>>39
いいや54才であろうと何歳であろうと、精神年齢がボウヤの事はありうる。
いつまでも大人になれないお子ちゃまだって事さ。

42 :デフォルトの名無しさん:2006/09/30(土) 18:27:43
Staticを複数行にしたいのですがどうすればいいんでしょうか…?

43 :デフォルトの名無しさん:2006/09/30(土) 18:27:47
この流れだとまず教える奴は現れないだろうな

44 :デフォルトの名無しさん:2006/09/30(土) 20:35:51
定数パラメータ(const)は、値パラメータと違い、手続き・関数本体の中で、
1. 代入できない。
2. 別の手続き・関数の、変数パラメータとして使えない。
3. 速度が向上する?
という認識で良いのでしょうか。

45 :42:2006/09/30(土) 20:49:13
>>43
(´・3・`)エェー

46 :デフォルトの名無しさん:2006/09/30(土) 20:54:11
つーか4秒後にレスしてる!すげぇ!それともかぶっただけ?

47 :デフォルトの名無しさん:2006/09/30(土) 22:52:03
Caption:='バーボンハウス'+#13#10+'(´・ω・`)';

48 :デフォルトの名無しさん:2006/09/30(土) 22:58:36
バーボンハウス・(´・ω・`)

49 :デフォルトの名無しさん:2006/09/30(土) 23:00:51
FormがOnShowとかしたときのイベントにCaption:='バーボンハウス'+#13#10+'(´・ω・`)';を使えばおkな希ガス

50 :デフォルトの名無しさん:2006/09/30(土) 23:30:12
>>42
フォームを右クリック→「エディタで表示」を選択。
TStaticTextのCaptionプロパティに'hogehoge'#13#10'foofoo'と書き込んで
再び右クリック→「フォームとして表示」を選択しておしまい。
TLabelでも同じことが可能。

51 :デフォルトの名無しさん:2006/09/30(土) 23:33:31
面倒だな 改行サインとかないの〜? \n とか

52 :デフォルトの名無しさん:2006/09/30(土) 23:37:56
*Delphiには* 有りません

53 :デフォルトの名無しさん:2006/09/30(土) 23:56:57
生きてるのも面倒だろ氏ね

54 :デフォルトの名無しさん:2006/10/01(日) 00:07:35
VBにはあるのにね

55 :デフォルトの名無しさん:2006/10/01(日) 01:28:49
あるフォームからモーダルフォームを表示する時に、
モーダルフォームを表示する前に、重い処理をしていると
モーダルフォームがメインフォームの後ろに隠れて
フリーズしたように見えるとこが時々あるのですが、
みなさんこのような症状を経験した事はないですか?

56 :デフォルトの名無しさん:2006/10/01(日) 03:03:37
ない

57 :デフォルトの名無しさん:2006/10/01(日) 04:08:39
どこかで見た記憶がある。 ニュースグループだったかな。

58 :デフォルトの名無しさん:2006/10/01(日) 05:38:32
StringReplaceは試したのか?

59 :デフォルトの名無しさん:2006/10/01(日) 08:09:26
>>57
ありがとう。ログを探してみます!

60 :デフォルトの名無しさん:2006/10/01(日) 08:17:46
>>55
ある。Del製のソフトに限らずある。

61 :デフォルトの名無しさん:2006/10/01(日) 09:36:04
>>51Caption:='バーボンハウス' + sLineBreak + '(´ω`)';

62 :デフォルトの名無しさん:2006/10/01(日) 10:18:38
> 長年の懸案だったメモリマネージャの問題や、XPでモーダルダイアログが
> 後ろに隠れる問題の対処が盛り込まれています。

N先生によると Delphi のバグらしいぞ。

対処は、Delphi 使わないか、BDS Turbo を使う事。

63 :42:2006/10/01(日) 11:05:25
ありがとうございますた!

>>51
ヽ( ・д・)人(・д・ )<\n使えればいいのにねぇ

64 :デフォルトの名無しさん:2006/10/01(日) 11:33:03
>>63
そうすると\を\\としなきゃいけなくなるしな。慣れの問題だと思う。

65 :デフォルトの名無しさん:2006/10/01(日) 11:35:55
>>62
XPからだからOSのバグだろ

66 :デフォルトの名無しさん:2006/10/01(日) 12:02:41
OS の仕様に対処してない開発環境のバグだろ

67 :デフォルトの名無しさん:2006/10/01(日) 12:10:19
仕様・・・

68 :デフォルトの名無しさん:2006/10/01(日) 14:29:49
XPが出る以前の製品については仕様.
それ以降の製品についてはバグだといいたいな、それは.

69 :デフォルトの名無しさん:2006/10/01(日) 14:30:28
OS の仕様に対処してない開発環境のバグだろ

70 :デフォルトの名無しさん:2006/10/01(日) 14:36:33
>>49
+はいらないよ.

71 :デフォルトの名無しさん:2006/10/01(日) 14:38:46
あってもいいよ

72 :デフォルトの名無しさん:2006/10/01(日) 15:10:36
function で、返り値は Boolean にして、返したい値を引数に持っているものを良く見掛けた気がするのですが、
普通にやると、スコープは独立して駄目なのですが、どうやっているのでしょうか?
……いざ、やってみようと思ったら、参考になるものが見当たらない orz

73 :デフォルトの名無しさん:2006/10/01(日) 15:41:56
IndyのTIdTCPClientを用いてTCPサーバーを管理するプログラムを作っているのですが
スレッドを作ってその中でTIdTCPClientの接続を維持する事はできるのでしょうか?
また、複数のサーバーを管理・制御したい場合どのように設計するのが効率的なんでしょうか?
参考になる資料等があれば教えて下さると有り難いです。

74 :デフォルトの名無しさん:2006/10/01(日) 16:51:58
アクティブなウィンドウ、または任意のウィンドウにキーの入力情報を送るにはどうすればいいのですか?
例えば一定時間ごとにdeleteキーを押したという情報を送る、みたいな・・
ちょっと正確な言い方が分からないので分かりにくいかもしれませんが・・お願いします。

75 :デフォルトの名無しさん:2006/10/01(日) 17:04:27
>>74
FindWindowで任意のウィンドウ見つけてSendMessageでWM_KEYDOWN送る
アクティブのウィンドウならkeybd_eventでいいかもしれない

76 :デフォルトの名無しさん:2006/10/01(日) 17:17:08
>>72
参照とか値渡しとかのことか?

77 :デフォルトの名無しさん:2006/10/01(日) 17:19:04
integerにはStrToIntDefみたいな関数がありますが、Colorみたいなとき文字列からの変換に失敗したときはどうしてますか?

78 :デフォルトの名無しさん:2006/10/01(日) 18:17:19
StrToIntDefのソースを見よ

79 :デフォルトの名無しさん:2006/10/01(日) 18:31:18
>>75
ありがとうございました
おかげでアクティブウィンドウは出来たので今度は非アクティブ状態のウィンドウを非アクティブのまま操作できるよう頑張ってみます

80 :デフォルトの名無しさん:2006/10/01(日) 18:53:03
ColorToStr
があった希ガス

81 :デフォルトの名無しさん:2006/10/01(日) 18:55:47
strtocolor
colortostring

82 :デフォルトの名無しさん:2006/10/01(日) 19:01:38
StrToColorはありますね。Colorへの変換に失敗したときのために
StrToColorDef(str:string, DefColor:TColor):TColor
みたいなのを自作してる人いないかなって思ったんです。

83 :デフォルトの名無しさん:2006/10/01(日) 19:33:23
自分で隅っこのほうにでも書いておけばいいと思うよ

84 :デフォルトの名無しさん:2006/10/01(日) 19:46:41
>>83
おまえの独り言を、な。

85 :デフォルトの名無しさん:2006/10/01(日) 20:05:07
作ったプログラムを実行しようとしてF9を押すと
「プロセスの生成が出来ません:アクセスが拒否されました」
となって実行できません。
Delphiを再起動して何もやっていない状態でやろうとしても同じです
なにか解決法があるでしょうか?

86 :デフォルトの名無しさん:2006/10/01(日) 20:12:40
OS再起動

87 :デフォルトの名無しさん:2006/10/01(日) 21:02:28
>>82
適当にexcept拾う関数作っとけ

88 :デフォルトの名無しさん:2006/10/01(日) 21:21:43
>>87さんへ
function StrToColorDef(str:string, DefColor:TColor):TColor
begin
try
 Result := StringToColor(Str);
except
 on EConvertError do Result := DefColor;
end
end;

と、つくってみますた。
Strに出鱈目な文字列を入れたけど、DefColorは返ってきません。
どこがわるいんでしょう?

89 :デフォルトの名無しさん:2006/10/01(日) 21:27:41
どうでもいいけど宣言
function StrToColorDef(str:string; DefColor:TColor):TColor;
begin #以下略
じゃない?

90 :デフォルトの名無しさん:2006/10/01(日) 21:33:08
function StrToColorDef(str:string; ←
あ、開発環境のエディタでは ; でやってます。

91 :デフォルトの名無しさん:2006/10/01(日) 21:47:02
function tform1.strtocolordef(str:string; def:tcolor):tcolor;
begin
 try result:=stringtocolor(str);
 except result:=clred;
 end;
end;

これでできたよ


92 :デフォルトの名無しさん:2006/10/01(日) 21:48:10
>>90
デバッガオプションで無視する例外の種類にEConvertError を追加。
実行時にはちゃんと例外が処理されてDefColor が返ってくると思う。

93 :デフォルトの名無しさん:2006/10/01(日) 21:48:20
except result:=def;
でした

94 :デフォルトの名無しさん:2006/10/01(日) 21:52:50
>>91-93
どうもあんがと!

>デバッガオプションで無視する例外の種類にEConvertError を追加。

ふーん、こんなのがあるんだ!

95 :デフォルトの名無しさん:2006/10/02(月) 23:03:37
以前にも質問して少し前進したのですが、質問です。
MetafileにDrawし、それをA4縦サイズの別のMetafileにTopだけ変えながら
Drawしています。つまりA4サイズに同じ画像が縦に並ぶ感じです。
このとき、画面(ディスプレー)のサイズを超えた分の画像が正しく表示
されない、という不具合が起こっています。96dpiでA4が少しはみでる縦1024
ピクセルの解像度にすると(下に少し余白があるので)正常に表示されます。
この件で何かご存知の方がいましたらよろしくお願いいたします。

96 :デフォルトの名無しさん:2006/10/02(月) 23:36:44
>>95 ソース

97 :デフォルトの名無しさん:2006/10/02(月) 23:52:15
コンパイル時、バイナリに自動的にビルドした日時とかを埋め込むってできませんか?
できれば標準の環境だと助かります。

Cとかだと__DATE___とかで出来るらしいのですが。。。

98 :デフォルトの名無しさん:2006/10/03(火) 00:33:24
こんばんは。教えてください。

プログラマの人からソースだけもらったのですが、実行すると
「fileaccess.dcuが見つかりません」と7行目を指すエラーが出ます。
7行目を見ると、usesの並びにfileaccessという項目があります。
エラーになったのはソースをくれた人と私のデルファイのバージョンが違うからなのでしょうか?
私はデルファイ6ですが、ソースをくれた人は仕事で使っているので6ではなさそうです。

よろしくお願いします。

99 :デフォルトの名無しさん:2006/10/03(火) 00:41:30
fileaccessは標準ファイルじゃないと思う。
バージョン違いの問題とは違うと思われ。

100 :デフォルトの名無しさん:2006/10/03(火) 00:45:12
そのソースで必要なfileaccess.dcuがないんだから
ソースくれた人に言って貰え


101 :98:2006/10/03(火) 00:54:03
バージョン違いは問題じゃなかったんですね。
今度ソースくれた人に再度ファイル一式もらうようにします。
回答ありがとうございました(・∀・)

102 :デフォルトの名無しさん:2006/10/03(火) 05:23:17
>>97
タイムスタンプが自動的に入るらしいぞ。
だからビルド時間が違えばEXEは同じでは無い。



103 :デフォルトの名無しさん:2006/10/03(火) 10:01:50
WinExec等で外部プログラムを起動させています。
そこで、同一の外部プログラムが既に起動されていたら、
起動を停止、又はそのプログラムをアクティブにしたいのですが
どのような方法があるのでしょうか?

104 :デフォルトの名無しさん:2006/10/03(火) 10:07:25
俺はプロセスの一覧を取得して同名のexeが動いてたら起動させないようにしてる

105 :デフォルトの名無しさん:2006/10/03(火) 10:08:07
外部プログラムが自前のアプリならMutex使う
そうでないならFindwindowでハンドルを取得したのち
CreateProccessもしくはSetForegroundWindow

起動にWinExec使うのはヤメレ
面倒でもCreateProccess使うことをお勧めする

106 :デフォルトの名無しさん:2006/10/03(火) 10:14:36
>>104-105
ありがとうございます。
CreateProccessですね。
承知しました。

重ね重ね申し訳ないのですが
CreateProccessのパラメータ、
PCTSTR pszCurDir,// 起動時カレントディレクトリ
とは、ショートカットをプロパティで開いたときに出る
”作業フォルダ”という項目と同じと考えてもよろしいのでしょうか?

107 :デフォルトの名無しさん:2006/10/03(火) 10:20:41
そう
普通はnilを指定して実行ファイルがある場所とカレントディレクトリにするけど
ワーク用としてファイルを作る必要がある場合など
実行ファイルを同じ場所にゴミを残したくない場合はそこに任意のパスを指定する

108 :103:2006/10/03(火) 10:29:05
>>107
やはりそうでしたか。
おかげさまで確信がもてました。
ありがとうございます。

同一の外部アプリが存在するかどうかは
1.プロセスを列挙させる。
2.同名のプロセスがあれば、同一アプリが存在するとみなす。
列挙にはCreateToolhelp32Snapshot等を使う。

になるのかな?

FindWindowだとクラスが必要みたいだけど、
このクラスはどうやって知るのでしょうか?

109 :デフォルトの名無しさん:2006/10/03(火) 10:43:29
ウィンドウのタイトルが予め分かるのなら
FindWindowの第2引数にタイトル名を取得すればハンドルが得られる
hndl := FindWindow(nil, PChar(タイトル文字列));

タイトル文字列が不定の場合はちょっと厄介
CreateProcessで起動した外部アプリのプロセスIDとEnumWindowsで
ウィンドウを列挙して自前のコールバック関数内で判定させる

110 :デフォルトの名無しさん:2006/10/03(火) 10:47:10
>>109
返信ありがとうざいます。
EnumWindowsという便利なAPIがあったのですね。

やり方をご教示していただいたので、よくわかりました。
早速実装にとりかかろうと思います。

貴重なお時間の中、ありがとうございました。

111 :デフォルトの名無しさん:2006/10/03(火) 10:49:16
ハンカチ王子のようにさわやかな奴だな

112 :デフォルトの名無しさん:2006/10/03(火) 10:52:02
おにーさんはいつでもキミみたいな可愛い男の子の質問待ってるよ

113 :デフォルトの名無しさん:2006/10/03(火) 10:57:57
ごめんなさい54歳ですた

114 :デフォルトの名無しさん:2006/10/03(火) 11:02:52
それはそれでまた別の味がある
還暦間近のおっさんってのもたまにはいいもんだ

115 :デフォルトの名無しさん:2006/10/03(火) 16:12:51
ListviewのvsReportでカラムの幅を変えられなくするにはどうすればいいのか教えて下さい

116 :デフォルトの名無しさん:2006/10/03(火) 16:18:24
カラムのMaxWidth MinWidthを同じにする。

117 :デフォルトの名無しさん:2006/10/03(火) 16:23:50
>>116
ありがとうございます。

118 :デフォルトの名無しさん:2006/10/03(火) 19:50:04
Splitterの使い方がわからず困っています。
上下に配置した2つのコンポーネントの周りを囲むようにSplitterが表示されているのですが
2つのコンポーネントの間をドラッグして動かしてもサイズが変わりません。
どうすればいいのでしょうか

119 :デフォルトの名無しさん:2006/10/03(火) 19:51:14
System.pasを使わないでコンパイルすることは不可能ですか

120 :デフォルトの名無しさん:2006/10/03(火) 19:53:04
不可能。

121 :デフォルトの名無しさん:2006/10/03(火) 19:58:17
>>118
例えば TMemo を 2つと TSplitter を 1つ配置して、
Memo1.Align を alLeft
Memo2.Align を alClient
Splitter.Align を alLeft

122 :デフォルトの名無しさん:2006/10/03(火) 20:02:51
>>121
できました。お世話になりました。

123 :デフォルトの名無しさん:2006/10/03(火) 23:06:49
PageControlでコードの中からページを新規作成するにはどうすればいいのでしょうか?

124 :デフォルトの名無しさん:2006/10/03(火) 23:14:46
実行時に新規ページを追加するには,
新規ページのオブジェクトを作成し,
その PageControl プロパティを設定します。

NewTabSheet = TTabSheet.Create(PageControl1);
NewTabSheet.PageControl := PageControl1;

コードでアクティブページにアクセスするには,ActivePage プロパティを使います。
プログラミングによってアクティブページを変更するには,
ActivePage プロパティか ActivePageIndex プロパティを設定します。

へるぷよめ

125 :123:2006/10/03(火) 23:48:41
ヘルプ見てみたのですが理解できなかったです。
NewTabSheetの宣言の仕方と以下の2行の意味もよくわかりません。
NewTabSheet = TTabSheet.Create(PageControl1);
NewTabSheet.PageControl := PageControl1;
簡単なサンプルを書いて頂ければ助かります。

126 :デフォルトの名無しさん:2006/10/04(水) 00:03:42
procedure TForm1.ButtonClick(Sender: TObject);
var
NewTabSheet: TTabSheet;
begin
NewTabSheet := TTabSheet.Create(PageControl);
NewTabSheet.PageControl := PageControl;
end;

127 :デフォルトの名無しさん:2006/10/04(水) 00:04:26
procedure TForm1.Button1Click(Sender: TObject);
var
 NewTabSheet: TTabSheet;
begin
 NewTabSheet := TTabSheet.Create(PageControl1);
 NewTabSheet.PageControl := PageControl1;
end;

128 :127:2006/10/04(水) 00:05:23
うお、すまん、かぶった
>>126とは別人だ

129 :123:2006/10/04(水) 00:19:15
NewTabSheet.PageControl := PageControl1; は親を教えてあげるみたいな感じなのですね。
あとはNewTabSheetからプロパティが弄れるので助かりました。
有難う御座いました。お手数をおかけしました。

130 :デフォルトの名無しさん:2006/10/04(水) 03:07:35
>>72
function Hoge(var Ret: Boolean): Boolean;
で、
A := Hoge(A); なんて出来るのか? と聞いたいるのかな…

131 :デフォルトの名無しさん:2006/10/04(水) 08:31:18
>>130
なんか違う気がする
変数引数を知らなくて、グローバル変数を引数に渡しても返り値がセットされてなくて
スコープがどうとかって悩んでるんではないだろうか
よくわからんけど

132 :デフォルトの名無しさん:2006/10/04(水) 09:20:50
最近、質問者と回答者とバランスがよくなったな
なんでだろ

133 :デフォルトの名無しさん:2006/10/04(水) 09:25:29
気のせい

134 :デフォルトの名無しさん:2006/10/04(水) 14:12:38
>>131
TryStrToIntのような関数を作りたいと言ってるんじゃなかろうか?

>>72
関数宣言で値を返したいパラメーターの前にoutを付ければOK。

135 :デフォルトの名無しさん:2006/10/04(水) 20:11:10
最近のDelphiは、演算子のオーバーライドができるそうですが、
これを使えば、今まで出来なかった、レコード型の = による比較も可能ですか

136 :デフォルトの名無しさん:2006/10/04(水) 22:12:38
YES

137 :デフォルトの名無しさん:2006/10/05(木) 05:22:55
mrOKなんかの値にどんな数値が設定されているのかを知りたいときはどこを見ればいいんですか?

138 :デフォルトの名無しさん:2006/10/05(木) 07:47:08
>>137
Ord(mrOK)

139 :デフォルトの名無しさん:2006/10/05(木) 10:01:12
>>138
ありがd

ソースとやらの場所を探したんだけどわからなくて…

140 :デフォルトの名無しさん:2006/10/05(木) 10:21:00
mrOKをAlt押しながらマウスでクリック

141 :デフォルトの名無しさん:2006/10/05(木) 10:40:26
アクションマネージャーにカテゴリを追加するのはどうやるの?

142 :デフォルトの名無しさん:2006/10/05(木) 10:43:41
TActionManagerを配置して右クリック→カスタマイズ

143 :デフォルトの名無しさん:2006/10/05(木) 10:51:15
新規アクションはあるけど新規カテゴリがみあたらないんだけど・・・

144 :デフォルトの名無しさん:2006/10/05(木) 11:01:53
>>143
アクションのプロパティのカテゴリ欄に新しい名前を入れると勝手に増える。

145 :デフォルトの名無しさん:2006/10/05(木) 11:06:38
>>144
うわっ分かり肉っ。ありがとう。

146 :デフォルトの名無しさん:2006/10/05(木) 11:45:14
指定したファイルのアイコンをTImageに描画するにはどのようにしたらよいのでしょうか?

147 :デフォルトの名無しさん:2006/10/05(木) 12:10:55
uses
 ShellAPI;

var
 Icon: TIcon;
 SHFileInfo: TSHFileInfo;
begin
 Icon := TIcon.Create;
 try
  SHGetFileInfo(PChar(edit1.Text), 0, SHFileInfo, Sizeof(SHFileInfo), SHGFI_ICON);
  Icon.Handle := SHFileInfo.hIcon;
  Image1.Picture.Icon := Icon;
 finally
  Icon.Free;
 end;
end;

148 :146:2006/10/05(木) 12:11:29
>>147
ありがとうございました。

149 :デフォルトの名無しさん:2006/10/05(木) 12:13:14
早っ!
もう確認したのかよw

150 :デフォルトの名無しさん:2006/10/06(金) 22:50:49
別のアプリケーションにエンターキーを送りたいのですが、アプリケーション側でなにか
対策をしているらしく、keybd_event ではエンターキーだけが認識されません。
(そのアプリ上でエンターキーを直接押せば認識される)

こういった場合、どのようにすればいいのでしょうか?

151 :デフォルトの名無しさん:2006/10/06(金) 22:55:13
フォームが受け取ってんのなら知らないけど
フォーカスが当たってるコントロールに送ればいいんじゃないの?

152 :デフォルトの名無しさん:2006/10/07(土) 03:45:34
keybd_event でフォーカスが当たってるコントロール以外送れないわけだが
>>150 絶対勘違いしてる

153 :デフォルトの名無しさん:2006/10/07(土) 16:44:33
>>150
直接メッセージ送ればどうだろうか?

154 :デフォルトの名無しさん:2006/10/07(土) 19:59:53
エクスプローラの再起動でタスクトレイからアイコンが消え、かつ非表示中のウィンドウを表示させるような方法はあるでしょうか?

155 :校正ヌンジャ:2006/10/07(土) 20:27:48
エクスプローラが不正終了し再起動した際、再起動以前にタスクトレイに登録されていたアイコンが消えてしまい
ウィンドウが非表示状態の常駐アプリケーションを操作できなくなってしまいます。
この状態からウィンドウを表示する方法は存在しますでしょうか?

156 :デフォルトの名無しさん:2006/10/07(土) 22:28:11
すれ違い

157 :154:2006/10/07(土) 22:53:45
>>155
どうもです、まさしくその通りです。
>>156
スレ違いですかね、自分はDelphi使ってますし、いたってプログラム的な事だとは思うんですが・・・。
何かメッセージを対象プログラムに送ると出来るのかなー?とか思って書き込みました。

158 :デフォルトの名無しさん:2006/10/07(土) 22:58:44
>いたってプログラム的

日本語でおk

159 :ミ,,゚Д゚彡 ◆A6VzDeLphI :2006/10/08(日) 00:18:01
そういうソフトを作りたいって質問なら
そう書いた方がいいんじゃないかな。

Q:この状態からウィンドウを表示する方法は存在しますでしょうか?
A:そういうソフトがあるよ。

愛とゆりの部屋
http://www.asahi-net.or.jp/~ee7k-nsd/


160 :154:2006/10/08(日) 01:10:58
>>159
まあ、そういうソフトを作りたいといえばその通りなんですが、キーポイントは非表示ウィンドウの表示な訳で。
教えて頂いた所のようなソフトは常駐が基本ですよね?
トレイアイコンが消えてしまってから起動し、ウィンドウを表示させるという事がしたいのです。

161 :デフォルトの名無しさん:2006/10/08(日) 01:13:46
どのウィンドウなのかどうやって知らせるつもり?

162 :154:2006/10/08(日) 01:27:04
>>161
あらかじめ対象アプリのクラス名とキャプションを調べておき、FindWindowでハンドルをゲットします。
非常に汎用性の低いアプリになる予定です。

んで、ちょっと調べてたらどうやらShowWindowってAPIで表示には成功しました。
が、対象アプリは閉じるボタンでHideされるからかShowWindow(Handle,SW_SHOW)とかやると
閉じるボタンでHideされなくなってしまいます。もうちょっと調べてみます。

163 :デフォルトの名無しさん:2006/10/08(日) 04:47:22
>>159
ノータスクトレイアイコン使ってるけど、これで、復帰したためしがねえw
ちゃんと、アイコン復帰できるソフトキボン

164 :デフォルトの名無しさん:2006/10/08(日) 10:50:51
データファイルを別ファイルではなく、exeファイルの中に埋め込む方法はありますか?

165 :164:2006/10/08(日) 10:51:48
すいません。ageます。

166 :デフォルトの名無しさん:2006/10/08(日) 11:03:28
リソースにするか、
あとは、exeの後ろに無理やりくっつける

167 :164:2006/10/08(日) 11:08:29
ありがとうございます。

リソース。でググってみます。

168 :デフォルトの名無しさん:2006/10/08(日) 11:32:38
ちなみに、リソースコンパイラはDelphiに付属しているから、(brcc)
書き方だけわかればいけるよ

169 :Delフサギコ ◆A6VzDeLphI :2006/10/08(日) 19:44:12

                _____
      ∧,,∧___   /
    /ミ,,゚Д゚ミ/\<  おしえて
  /| ̄∪∪ ̄|\/ \_____
    |____|/
自アプリAAA.exeを
BBB.exeにコピーして(これは出来る)
そのときに、Exeのアイコンを変更したいんだが
出来たりしますか?

....もちろん、やり方を教えて。知ってたら。


170 :デフォルトの名無しさん:2006/10/08(日) 20:09:04
プロジェクトオプションのアプリケーションタブのアイコンとかではなくて?

171 :Delフサギコ ◆A6VzDeLphI :2006/10/08(日) 20:11:57
                _____
      ∧,,∧___   /
    /ミ,,゚Д゚ミ/\<  じゃなくて
  /| ̄∪∪ ̄|\/ \_____
    |____|/

すまん、説明が足りなかった。
AAA.exeの1機能として、別Exeを生成する。

という物を実装したいのです。

もちろん、Control.exeの機能として
AAA.exe→BBB.exe、アイコン変更
ってのでもいい。

この場合、3つのExeは、自作のものと家庭しておきます。
(他作ができれば尚いいけどさ)

172 :デフォルトの名無しさん:2006/10/08(日) 20:18:02
いまいち意味が分からんのだが、ようするにAAA.exeがBBB.exe なりなんなりの
PEバイナリを吐くってことなのか?
そういうことならBBB.exeのバイナリにリソース加えるとかやったらいけると思うけども、
詳しくは調べないと俺もわからねぇ

173 :デフォルトの名無しさん:2006/10/08(日) 20:22:41
UpdateResource

174 :Delフサギコ ◆A6VzDeLphI :2006/10/08(日) 20:27:42
                _____
      ∧,,∧___   /
    /ミ゚Д゚,,ミ/\<  何がわからん?
  /| ̄∪∪ ̄|\/ \_____
    |____|/

>PEバイナリを吐くってことなのか?
PEバイナリって言葉がわからんから、
何を疑問に思っているのかが、さっぱり。

例えば自分が
Editor.exeってソフトを作っていたとして

場合によっては
EditorHTML.exeとか
EditorPerl.exeとか
EditorDelphi.exeとかを

Editor.exeからコピーして作りたくて
(それぞれのexeの機能は全く同じでいい。Editor.HTML.iniで動作変更させるから)
その際に、exeのアイコンをそれぞれで変更したい。

って質問です

リソースハッカーとか?そういうソフトの機能の
実現方法が知りたい、って事になるのだろうね。


175 :デフォルトの名無しさん:2006/10/08(日) 20:33:08
RichEditのスクロールバーをコードの中で動かすにはどうすればいいのでしょうか?

176 :デフォルトの名無しさん:2006/10/08(日) 20:35:41
SetScrollPos

177 :デフォルトの名無しさん:2006/10/08(日) 21:17:35
>>174
アイコンは.rsrcセクション内にあるのは、
逆アセンブルすればわかることだと思います。
後、PEフォーマットの解析ページ
ttp://hp.vector.co.jp/authors/VA015412/colum/pe.htm
更に、PEDUMPとか。

178 :デフォルトの名無しさん:2006/10/08(日) 21:19:25
ini と一緒にアイコンもコピーしておく。自分と同じディレクトリからアイコンを
探してあったらセットする、ってコード書けばいい

179 :デフォルトの名無しさん:2006/10/08(日) 21:20:37
って、実行時じゃだめか・・・

180 :デフォルトの名無しさん:2006/10/08(日) 21:24:07
PageControlで三つのタブを作り、そのなかにそれぞれTEditを配置してます。
クリアボタンを押した際に、アクティブなタブのエディタの中だけをクリアしたいのですが、どうすればいいのでしょうか??

181 :デフォルトの名無しさん:2006/10/08(日) 21:26:51
pagecontrolのactiveindexで拾えるようにeditの名前を付けてfindcomponent

182 :デフォルトの名無しさん:2006/10/08(日) 21:29:18
四つくらいだなら、アプリつくるよりIDEに読み込んでアイコン変更するほうが
速い。5,6分でできる

183 :デフォルトの名無しさん:2006/10/08(日) 21:55:38


procedure ChangeAppIcon(AppPath: String; IconFile: String; ResName: PChar; LangID: SmallInt);
(* 引数
 *  AppPath: アイコンを書き換えたい実行ファイルへのパス
 *  IconFile: 書き換えに使用するアイコンファイルへのパス
 *  ResName: リソース名, PCharにキャストすることで整数値もOK
 *  LangID: 言語識別子。日本は1041
 *)
var
  hUpdate: THandle;
  IconBuf: array of byte;
  fs: TFileStream;
  dwFileSize: Cardinal;
begin
  hUpdate := BeginUpdateResource(PChar(AppPath), false);
  if hUpdate = 0 then
    Exit;
  if not FileExists(IconFile) then
    Exit;
  fs := TFileStream.Create(IconFile, fmOpenRead);
  dwFileSize := fs.Size;
  SetLength(IconBuf, dwFileSize;
  fs.Read(IconBuf[0], dwFileSize);
  fs.Free;
  UpdareResource(hUpdate, RT_GROUP_ICON, ResName, LangID, @IconBuf[0], dwFileSize);
  EndUpdateResource(hUpdate, false);
end;

184 :デフォルトの名無しさん:2006/10/08(日) 21:56:13
テスト中に書き込んでしまったorz
たぶんこれでいけると思う。

185 :デフォルトの名無しさん:2006/10/08(日) 21:57:05
>>181
できました、ありがとうございます! FindComponentの使い方がやっとわかった(;´Д`)

186 :デフォルトの名無しさん:2006/10/08(日) 22:34:47
>>183
未テストでミスって書き込んだから中途半端にアイコンを書き換えるコードだった。
すまん。修正版。実際のアイコンデータを0からの連番で書き込むから、
自作アプリ以外では使わないほうがいいと思う。

procedurenbsp;ChangeAppIcon(AppPath:nbsp;String;nbsp;IconFile:nbsp;String;nbsp;ResName:nbsp;PChar;nbsp;LangID:nbsp;word);
(*nbsp;引数
nbsp;*nbsp;nbsp;AppPath:nbsp;アイコンを書き換えたい実行ファイルへのパス
nbsp;*nbsp;nbsp;IconFile:nbsp;書き換えに使用するアイコンファイルへのパス
nbsp;*nbsp;nbsp;ResName:nbsp;リソース名,nbsp;PCharにキャストすることで整数値もOK。DelphiアプリならMAINICON
nbsp;*nbsp;nbsp;LangID:nbsp;言語識別子。日本は1041
nbsp;*)
type
nbsp;nbsp;tagICONDIRnbsp;=nbsp;record
nbsp;nbsp;nbsp;nbsp;wReserve:nbsp;word;
nbsp;nbsp;nbsp;nbsp;wRcType:nbsp;word;
nbsp;nbsp;nbsp;nbsp;wRcCount:nbsp;word;
nbsp;nbsp;end;
nbsp;nbsp;PICONDIRnbsp;=nbsp;^tagICONDIR;
nbsp;nbsp;tagICONDIRENTRYnbsp;=nbsp;record
nbsp;nbsp;nbsp;nbsp;bWidth:nbsp;Byte;
nbsp;nbsp;nbsp;nbsp;bHeight:nbsp;Byte;
nbsp;nbsp;nbsp;nbsp;bColorCount:nbsp;Byte;
nbsp;nbsp;nbsp;nbsp;bReserve:nbsp;byte;
nbsp;nbsp;nbsp;nbsp;wPlanes:nbsp;word;
nbsp;nbsp;nbsp;nbsp;wBitCount:nbsp;word;
nbsp;nbsp;nbsp;nbsp;dwBytesInRes:nbsp;cardinal;
nbsp;nbsp;nbsp;nbsp;dwImageOffset:nbsp;Cardinal;

187 :デフォルトの名無しさん:2006/10/08(日) 22:37:43
酷いミスだ・・・orz
長いから分けるつもりだったけど同じところ2回とか無駄に消費するからろだにあげた。
ttp://aploda.org/dl.php?mode=pass&file_id=0000006382.txt


188 :Delフサギコ ◆A6VzDeLphI :2006/10/08(日) 22:44:16
           _____________
   ∧,,∧    />>178-179さん
  ミ,,゚Д゚彡 < そそそ。設定ごとのExeアイコンが作りたいので....
   U  つ   \>>177さん
 @ミ  ミ      すいません、私には
   ∪''∪     ものすごくわからない事だと思いました。

>>182さん、だから「四つくらいだなら」ではなく例として出しただけで
実際のねらい所は
設定変更毎にユーザーに任意個数のexeを生成してもらったりだなあ、、、、ぶつぶつ

まあ、一太郎メイクみたいなもんですよ。
一太郎もってるけど、メイク機能は使った事ないけどね。

やっぱり難しいのかなあ、出来ないのかなぁ、、、


>>183>>186-187さん
           _____________
 ∩∧,,∧∩  /
  ゙ミ;゚Д゚ミノ < まぢか!
  ミ  ミ   \____________
  ミ ,, ミ
 ノ∪ ∪  すごいニャ



189 :Delフサギコ ◆A6VzDeLphI :2006/10/08(日) 22:48:46

    ∧,,∧ ハーハー   
   ,,ミ;゚Д゚ミ=3
  .とミ,,,,,U,,U  

ちょっと昂奮してきた。

そう、そして興奮気味に質問。
> 引数
> ResName: リソース名, PCharにキャストすることで整数値もOK
何を指定すればよろしいのでしょう....?

っっと、、ともかくも、ありがとうございます。
まさかこんなのサラっと書ける人が
おったとは。ドキワクです。



190 :デフォルトの名無しさん:2006/10/09(月) 01:14:23
http://codezine.jp/a/article.aspx?aid=419
PEはこのシリーズ読んだらわかるんじゃね?俺読んでないけど。

191 :デフォルトの名無しさん:2006/10/09(月) 01:47:33
視覚効果の「デスクトップのアイコン名に影をつける」みたいなのを
ListViewでもやりたいのですが、できますでしょうか。
なにもかも全て自前で描画するしかないのでしょうか。(泣)

DelphiQ&Aに同様の質問をしたけどレスが付かないまま3ヶ月過ぎました。

192 :デフォルトの名無しさん:2006/10/09(月) 01:51:36
で、あちらには、こっちに書き込んだ旨は書かずと。
マルチポスト乙

193 :デフォルトの名無しさん:2006/10/09(月) 01:54:46
>>97
>>177にタイムスタンプの場所があるから、いろいろやってみて。

194 :デフォルトの名無しさん:2006/10/09(月) 01:58:33
>>189
DelアプリならMAINICONじゃねぇの

195 :デフォルトの名無しさん:2006/10/09(月) 01:58:34
TTableにフィルタをかけた場合、フィルタに該当する個数ってのはデータソースのDataSet.RecordCountで知ることができます。
ここで、フィルタに該当する内部での順番号を取得する方法ってないんでしょうか?

DataSet.RecNoでは、総レコードでの位置が出てしまいます。

196 :デフォルトの名無しさん:2006/10/09(月) 02:50:13
Action Toolbarの使い方がサッパリ分からん!!

197 :デフォルトの名無しさん:2006/10/09(月) 04:28:53
ソース読め。 (ツンデルだから)

198 :デフォルトの名無しさん:2006/10/09(月) 05:54:00
>>187
見えないよ。
コード張ってくれ

199 :デフォルトの名無しさん:2006/10/09(月) 08:41:31
ロダがメンテ中のようだ。
procedure ChangeAppIcon(AppPath: String; IconFile: String; ResName: PChar; LangID: word);
(* 引数
 *  AppPath: アイコンを書き換えたい実行ファイルへのパス
 *  IconFile: 書き換えに使用するアイコンファイルへのパス
 *  ResName: リソース名, PCharにキャストすることで整数値もOK
 *  LangID: 言語識別子。日本は1041
 *)
type
  tagICONDIR = record
    wReserve: word;
    wRcType: word;
    wRcCount: word;
  end;
  PICONDIR = ^tagICONDIR;
  tagICONDIRENTRY = record
    bWidth: Byte;
    bHeight: Byte;
    bColorCount: Byte;
    bReserve: byte;
    wPlanes: word;
    wBitCount: word;
    dwBytesInRes: cardinal;
    dwImageOffset: Cardinal;
  end;
  PICONDIRENTRY = ^tagICONDIRENTRY;
var


200 :デフォルトの名無しさん:2006/10/09(月) 08:43:10
  hUpdate: THandle;
  IconBuf: array of byte;
  fs: TFileStream;
  dwFileSize: Cardinal;
  ret: Boolean;
  lpicdr: PICONDIR;
  lpicde: PICONDIRENTRY;
  i: Integer;
begin
  hUpdate := BeginUpdateResource(PChar(AppPath), false);
  if hUpdate = 0 then
    Exit;
  if not FileExists(IconFile) then
    Exit;
  fs := TFileStream.Create(IconFile, fmOpenRead);
  dwFileSize := fs.Size;
  SetLength(IconBuf, dwFileSize);
  fs.Read(IconBuf[0], dwFileSize);
  fs.Free;
  lpicdr := @IconBuf[0];
  for i := 0 to lpicdr.wRcCount - 1 do
  begin
    lpicde := @IconBuf[i*16 + 6];
    UpdateResource(hUpdate, RT_ICON, PChar(i), LangID,
                   @IconBuf[lpicde.dwImageOffset], lpicde.dwBytesInRes);
    lpicde.dwImageOffset := i;
  end;
  ret := UpdateResource(hUpdate, RT_GROUP_ICON, ResName, LangID,


201 :デフォルトの名無しさん:2006/10/09(月) 08:45:08
                        @IconBuf[0], lpicdr.wRcCount*16+6);
  if ret = false then
    ShowMessage('failed UpdateResource');
  ret := EndUpdateResource(hUpdate, false);
  if ret = false then
    ShowMessage('failed EndUpdateResource');
end;

ResNameは>>194も言うようにDelphiアプリならMAINICONを渡せばおk

202 :デフォルトの名無しさん:2006/10/09(月) 12:07:12
MessageDlg で mbYes,mbYesToAll,mbNo,mbCancel を指定しているのですが、
実行すると、「はい」「いいえ」「キャンセル」「すべてはい」と
なります。これを指定した順番通りに表示させることはできますでしょうか。

203 :デフォルトの名無しさん:2006/10/09(月) 12:38:27
>>199
うぉうサンスク。
これ色々応用利きそうだね。

>>202
ないんじゃないかなー。
自前でダイアログ作る?

204 :183:2006/10/09(月) 13:29:50
もうちょっとまじめに書き換えるなら
LoadLibraryEx で対象ファイルをロードして、RT_GROUP_ICON を読み出して
得られたデータを tagICONDIRと tagICONDIRENTRY にマップして
tagICONDIRENTRY.dwImageOffset にリソース上のアイコン単体の番号入ってるから
これをもとに一回削除してから新しくついかするほうがいいかも。

このコードだと、9種類の色深度と解像度をもつアイコンで書き換えた後
1種類のみ色深度と解像度をもつアイコンで再度書き換えすると前回のアイコンが8個のこってしまうし。

205 :デフォルトの名無しさん:2006/10/09(月) 14:08:18
Form2がShowModal中で、Form1が操作不可能のとき、
Form1がClickされたらForm2を閉じるなどの処理を行うことは出来ますか

206 :デフォルトの名無しさん:2006/10/09(月) 16:23:34
仮定により「Form1が操作不可能」なんだから出来ない。出来たら、質問がおかしい。

207 :デフォルトの名無しさん:2006/10/09(月) 17:37:05
操縦不能な飛行機を操縦するにはどうすればよいですか?

208 :デフォルトの名無しさん:2006/10/09(月) 17:46:12
操縦可能にする

209 :デフォルトの名無しさん:2006/10/09(月) 18:08:05
>205
Windowsの仕様によりモーダルフォームが閉じられない限りユーザーは親フォームを操作できない。
どうしてもやりたければ、ダイアログ開いている間はクリックしたら閉じるようにするとか、
自前でコード組むしかない。

210 :デフォルトの名無しさん:2006/10/09(月) 18:33:17
>>205
モーダルフォームやめればおk

211 :デフォルトの名無しさん:2006/10/09(月) 20:35:54
メインフォームからモーダルなフォーム(Hoge)を開いて、Hoge上のボタンを押すと更にもう1つ別のモーダルなフォームHogeHogeを表示させる事は許されますか?

212 :183:2006/10/09(月) 21:01:36
>>211
やってみればいいじゃん

213 :デフォルトの名無しさん:2006/10/09(月) 21:16:28
許されます

214 :211:2006/10/09(月) 21:19:01
サンクス
これからコード書いてきます

>>212
不可能な事を実現しようとして何時間もドツボにはまるのが怖かったのです

215 :デフォルトの名無しさん:2006/10/09(月) 21:24:21
ドツボにはまって、必死こいて何時間も、
時には何日もググッたり資料探したりするのも良いことだぞ
調べる過程で沢山の知識を得られる

216 :デフォルトの名無しさん:2006/10/09(月) 21:33:35
>>202
CreateMessageDlg(Message = Msg,Dlg = Dialog かも)
を使えば、ボタンのキャプションは自由に変えられる。


217 :デフォルトの名無しさん:2006/10/09(月) 21:39:05
>>205
自前でややこしいことやるしかないね。
Modal をやめる。

子画面を表示するときに、親フォームのコントロールをすべてDisableにして
親クリックされたらもどす。

こんなんしかないんちゃう?


218 :191:2006/10/09(月) 22:04:53
>>192
さすがに3ヶ月経ってレスる人はいないだろ。マルチ言われるとは思わなかったよ。
だが気に入らなかったのならスマン。
まぁ、自分で悩んでみることにするヨ。

219 :案山子:2006/10/09(月) 23:15:51
すごく初心者的質問なんですが、
TMemoに書かれた文字をSaveToFileで保存できますよね。
でもこれだと毎回上書きされてしまいますよね。
前回保存してあったデータに追加するかたちで保存するにはどうしたらいいんですか?
Addなんかを使えばいいの?

220 :デフォルトの名無しさん:2006/10/09(月) 23:17:02
ファイル開いてケツに追加する。

221 :デフォルトの名無しさん:2006/10/10(火) 00:09:18
教えてください。ソースに
type
TcellData = Array of Array of string
とあるのですが、どういう状態なのか分かりません。
TcellData = Array of stringなら文字型の配列と分かるのですが、
なぜ2つArrayが繰り返されているのでしょうか?
よろしくお願いします。

222 :デフォルトの名無しさん:2006/10/10(火) 00:11:33
>>221
二次元の配列

223 :デフォルトの名無しさん:2006/10/10(火) 00:19:19
>>219
TextFile型てのがあるからそれ使え
ググリャ多分わかる

224 :ミ,,゚Д゚ミノ ◆A6VzDeLphI :2006/10/10(火) 00:19:48
ありがとう。>>183さん。

今日は肉体的に立ちくらみするくらいの運動をしてきたので
ちょと無理なんですが
近いうちに動作確認させてください。

感謝っす

225 :ミ,,゚Д゚ミノ ◆A6VzDeLphI :2006/10/10(火) 00:22:14
>>218>>191

気にスンナ。
漏れはマルチだとは思わん。

むしろ、マルチポストする事に狭量にならんでも。
心を広くもった方がいい。


226 :デフォルトの名無しさん:2006/10/10(火) 00:23:53
>>225
218の文章をあちらに書き込んでみたら?
出入り禁止か、誰も相手にしてくれなくなると思うが。

227 :デフォルトの名無しさん:2006/10/10(火) 00:24:23
多次元配列ですか。どうもありがとうございます。

次々と分からない事が出てくるー(´・ω・)勉強しなきゃ…。

228 :ミ,,゚Д゚ミノ ◆A6VzDeLphI :2006/10/10(火) 00:30:28
>>219>>220
http://delfusa.main.jp/delfusalibrary/20060527212010/SystemUnit/SystemUnit.pas
ここの、outputlogtext
あたりで実装したのだが、

ファイル追加は面倒だったので
全部テキスト読み込んで追加して書き込む
という、やや遅そうな実装を漏れはしている。

賢い人は、きっと、普通にファイル追加するコードを書いて実装するでしょう。

ファイル追記の実装方法は知っているんだが、
自分のライブラリに久美子む所まではやっていないし、やや自分で動作確認はしていない。

procedure FileAddText(const S, FileName: String);
var
 F : TextFile;
begin
 try
  AssignFile(F, FileName); // 既存のファイル
  if not FileExists(FileName) then
   Rewrite(F) {ファイル新規作成}
  else
   Append(F); {ファイル追加モード}

  Writeln(F, S);
 finally
  CloseFile(F);
 end;
end;


229 :ミ,,゚Д゚ミノ ◆A6VzDeLphI :2006/10/10(火) 00:30:59

try,finallyの付け方に自信ない。
こっちが正しいのかも。

 AssignFile(F, FileName); // 既存のファイル
 if not FileExists(FileName) then
  Rewrite(F) {ファイル新規作成}
 else
  Append(F); {ファイル追加モード}

 try
  Writeln(F, S);
 finally
  CloseFile(F);
 end;



230 :ミ,,゚Д゚彡 ◆A6VzDeLphI :2006/10/10(火) 00:34:55
>>226
じゃあ、まず一人目として、君が漏れのことを相手にしてくれなくてもいいよ。

そうすることで、誰も漏れのことを相手にしてくれなくなる人が増えるんじゃない?

どーせ、某界隈は閑散してるんだし、
新規質問同時カキコでもなく
3ヶ月も回答ない質問、再質問くらいいいだろ。

231 :デフォルトの名無しさん:2006/10/10(火) 00:38:02
>>230
広げるつもりは無かったんだが。

よく分からん。
「3ヶ月経てばOK」ってルールも分からん。
「検索してたまたまあちらの書き込み見て書き込んんじゃう人」は絶対
現れないってこと?

まぁ、あなたはマルチポスト肯定派だってことで。

232 :ミ,,゚Д゚ミノ ◆A6VzDeLphI :2006/10/10(火) 00:44:54
すまん、ちょっとあおってしまいました。
いや、まあ、マルチポスト絶対反対ではない派。ってことで。

だって、漏れ、自分でも回答が得られない場所に投げた質問、
やっぱり、別の所で質問したくなるもの。人情だものフサヲ

質問する場所を選んで、やっぱり回答がなくて
ああ、この場所で質問するんじゃなかった。とかしょんぼりして
永遠にその質問を他の場所で出来ないとしたらつまんねーし。

>「3ヶ月経てばOK」ってルールも分からん。
フィーリング(死語?)で...

>「検索してたまたまあちらの書き込み見て書き込んんじゃう人」は絶対
>現れないってこと?
まず、そんな奴いない。

過去の質問をたどるほど、Delphi好きで
スキルの高い人間で、数ヶ月も前の発言に対して元質問者が見ているわけもないのに
コミュニケーションを発しようという人を、日常的に見たことはない。


233 :デフォルトの名無しさん:2006/10/10(火) 02:04:02
ビミョーだわな。
マルチか、どこで質問してもわからんかったのか。

234 :デフォルトの名無しさん:2006/10/10(火) 03:03:03
1週間待っても回答が付かなかった余所に投げてもいーと思うけど.
それで付かなかったらまず付かないから仕方ねーやん.
それをマルチっていうようなやつは、そもそも回答返してやれよ、とっとと.
自分が回答を返せない無能なくせにけちだけはつけるんだな.

235 :デフォルトの名無しさん:2006/10/10(火) 03:30:31
1週間は長いな。
3日くらいかな。

236 :デフォルトの名無しさん:2006/10/10(火) 06:34:42
マルチって言うやつは、本当にアホが多い。
揚げ足取りたいだけ。
問題は、そこじゃないだろうと。
回答を返せないなら、「私は、無能なので、わかりません」と一言つけくわえるべきだと。
質問と関係ないレスつけんなよ、と思うわけですよ。

237 :デフォルトの名無しさん:2006/10/10(火) 08:18:19
>>220
アッー!

238 :デフォルトの名無しさん:2006/10/10(火) 08:20:23
マルチする方もサポートに聞いても解らなかったんでってつけるべき。

239 :デフォルトの名無しさん:2006/10/10(火) 08:33:09
三ヶ月待ったら絶対にマルチじゃないよ。
でも、一生懸命調べて回答したのに反応ないなと思ったら、
他スレで回答をもらった後でしたって時は、がっかりしちゃうよな。
まぁ、素早く回答できない自分が無能なんだろうけど。

240 :デフォルトの名無しさん:2006/10/10(火) 10:09:45
何日か待って回答がなかったら素直に質問を取り下げる旨を書いておけばいいだけなんじゃないか
例えば
「質問をしたものですが、どなたもご存じない様子でしたので申し訳有りませんが余所に質問させていただきます
また別の質問に来るかもしれませんが、その時はよろしくお願いします」
とかなんとか。これがあおりに見える人もいるかもしれんが一番適切だと思う

241 :デフォルトの名無しさん:2006/10/10(火) 10:22:27
マルチだろうがシングルだろうが何でもいいよ。バカばっか。

242 :デフォルトの名無しさん:2006/10/10(火) 10:25:30
MultiSelect := true;

243 :デフォルトの名無しさん:2006/10/10(火) 11:02:37
Delphiスレって超初心者用のココしかねーのか!

244 :デフォルトの名無しさん:2006/10/10(火) 11:03:56
サービスで他PCのデータベースにアクセスできません
同じサービスで自身のデータベースにはアクセスできます。
データベースはMSDEです
データベースにアクセスするツールはBDEです
何が問題で接続できないのかまったくわかりません
解る方教えてください。

245 :デフォルトの名無しさん:2006/10/10(火) 11:17:19
まさか、vi$taじゃないだろうね?

246 :デフォルトの名無しさん:2006/10/10(火) 11:20:28
VISTAじゃありません


247 :デフォルトの名無しさん:2006/10/10(火) 11:21:23
MSDEって、ローカル専用じゃね。

248 :デフォルトの名無しさん:2006/10/10(火) 11:28:49
接続ユーザー数制限があったような。

249 :デフォルトの名無しさん:2006/10/10(火) 11:35:21
あ、ユーザー数の制限だったか。

250 :デフォルトの名無しさん:2006/10/10(火) 11:37:45
XP SP2 でも影響が出ることが。
http://www.microsoft.com/japan/sql/prodinfo/previousversions/techinfo/administration/2000/security/winxpsp2faq.mspx

SQL Server 板で聞いた方が早そう。

251 :デフォルトの名無しさん:2006/10/10(火) 11:51:05
ご親切にありがとうございました
SQL Server板で聞いてみます

252 :デフォルトの名無しさん:2006/10/10(火) 22:17:49
Turbo Delphi をインストールできたのですが、起動時に表示されるホームページを
操作することが出来ません。IE6はちゃんと入ってますし原因が思いつかないのですが
どうすればいいでしょうか。

253 :デフォルトの名無しさん:2006/10/10(火) 22:45:50
TPageControlにPopupMenuを付けているのですが
どのタブの上でPopupMenuが出たか知ることができず困っています。
どうすればわかるのでしょうか?

254 :デフォルトの名無しさん:2006/10/10(火) 23:22:14
TPopupMenu.PopupComponent
TPageControl.ActivePage

255 :デフォルトの名無しさん:2006/10/10(火) 23:49:02
アクティブになっていないタブ上でPopupMenu出した時はどうすればわかるのでしょう?

256 :デフォルトの名無しさん:2006/10/11(水) 00:14:48
どうやってアクティブになっていないタブシート上でPopupMenuを出すの?
それができるんなら、どのタブの上でPopupMenuが出たかわかってるはずでしょ?

257 :デフォルトの名無しさん:2006/10/11(水) 00:19:01
タブシートじゃなくてタブの上でメニューだしたいのでは?
自前でPopupさせればすぐできそうなもんだが。

258 :256:2006/10/11(水) 00:21:10
なるほど、PageControlにPopupMenuを付けてるわけね
よく読んで無かった
すまん

259 :デフォルトの名無しさん:2006/10/11(水) 00:30:54
で、どうやったらできるんですか?

260 :256:2006/10/11(水) 00:38:51
知らん

マウスの座標からマウスがどのタブ上にあるか自分で判断して、自分でPopupさせるというクソ面倒な手段しか思い浮かばん
もっと詳しい人頼む

261 :デフォルトの名無しさん:2006/10/11(水) 00:54:51
OnContextPopupとGetHitTestInfoAtを使う。
自分でPopupさせるのと大差ないけど。

262 :デフォルトの名無しさん:2006/10/11(水) 00:58:11
RichEdit 内にある「Hoge Fuga Hogehoge」とあるテキストから、Fuga だけ強調表示にしたいと考えています。

前後の Hoge 部分は毎回共通ではないので、BregExp を使った正規表現で Fuga を取り出しているのですが、
Fuga が何文字目から始まるのかを調べる方法が分かりません... ご教授いただけないでしょうか。




263 :デフォルトの名無しさん:2006/10/11(水) 01:08:35
copy(pos( 'Fuga' , richedit.lines[ ]) , length( 'Fuga' ));

264 :デフォルトの名無しさん:2006/10/11(水) 01:40:06
部分抽出用のものがあったんですね、勉強不足でした。

Fuga も中身が変わったりするので、マッチした結果をいったん保存して、
Pos と Length で開始場所から、文字数を調べることが出来ました。ありがとうございます。

265 :デフォルトの名無しさん:2006/10/11(水) 04:30:45
横やりですまんが、仮にFugaが何箇所かあっても、一箇所だけでいいのか?

266 :デフォルトの名無しさん:2006/10/11(水) 11:15:16
リッチテキストに×を追加したいんですが『Richeditでの行の挿入エラー』になってしまいます。
これを回避する方法はありますでしょうか?

267 :デフォルトの名無しさん:2006/10/11(水) 12:03:30
×の後に全角スペースを付加する

268 :デフォルトの名無しさん:2006/10/11(水) 12:24:02
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=085993

269 :デフォルトの名無しさん:2006/10/11(水) 13:23:36
>>195ですが、なんとか解決できないかとググッたりしてたんですが、同じ悩みを持つ人たちの意見をいくつか見つけて、
(例えば)

http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=047587
とか、
http://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200408_04080008.html
など。

手だれの人達もみてるはずですが、一つも回答があげられていないところとみると「不可能」ってことなんでしょうか?
ギコ猫さんとかでもわからないのかなぁ・・・

270 :デフォルトの名無しさん:2006/10/11(水) 13:34:47
どうやら解決方法はないみたいだね。
使いそうなプロパティだと思うが、用意しなかったのかねぇ。

271 :デフォルトの名無しさん:2006/10/11(水) 14:12:18
BorlandのDelphiのQ&Aに
TDBGrid コンポーネントの現在選択中のレコードの位置を知るには,どうすればよいでしょうか?
てのがあるけどそれと違うのか?

272 :デフォルトの名無しさん:2006/10/11(水) 15:08:53
>>269
普通にダミーフィールドつけて、フィルタ前とフィルタ後で連番いれたら?

273 :デフォルトの名無しさん:2006/10/11(水) 19:33:35
>>269
個々の仕様によりどうにでもなるよ。
272の方法とか作業ファイル作るとかメモリ上で操作するとか100までは数えるとか。
工夫することこそがプログラミングの醍醐味ではないか?

274 :デフォルトの名無しさん:2006/10/11(水) 19:35:22
つまり最大2G(だっけ?)にユニークな番号振ってたらとてもまともなもんにはならないから
こういう仕様になっていると思われる。

275 :269:2006/10/11(水) 21:49:36
たぶん、>>274さんの言うとおりなんでしょうね。
スピードとか優先させたんでしょう。

>>271さんの教えてくれたものは「Gridに表示されている(見えている)」行のうちの何行目か、ってことだと思います。
実は試したんです。

一旦、全部のレコードに0でも代入
 ↓
Filter後に、FindNextなどで1から順に連番をつける

って流れになるんでしょうか。

276 :269:2006/10/11(水) 21:51:33
ダミーフィールドにですね、

重いですね。

277 :デフォルトの名無しさん:2006/10/11(水) 22:51:50
DBGridで、レコード(行)レベルで入力可、不可を制御するにはどうしたらいいですか。
DBGridのイベントで制御できればすごく幸せです。

278 :デフォルトの名無しさん:2006/10/11(水) 23:28:09
>>265
やっぱり駄目でした。

出来たと思っていたのはRichEdit の一行目のみに対してで、色々と試してみたのですが、
RichEdit 上の指定した行で、指定した文字列のみ書式を変更する方法が分かりませんでした。
行指定ではできないもんなのでしょうか。

279 :デフォルトの名無しさん:2006/10/11(水) 23:28:38
>>269
ぶっちゃけ、何件DBGridに表示させてんの?

>>277
あふたーすくろーるとかでかんし。
あとはてきとおにどおぞ。

280 :269:2006/10/11(水) 23:35:13
>>279
4000件くらいです。

GridのRowの数とインジケータの位置がわかってるんだから取得できそうな気もするんですがね。
ちょっとあきらめかかってます。

281 :デフォルトの名無しさん:2006/10/11(水) 23:36:38
>>280
なんつーか、なんでSQL投げて処理しないの?
TTableにこだわりすぎとおもうが。
普通にTClientDataSet経由でいろいろやったほうが、
あとあとよくねぇか?

282 :デフォルトの名無しさん:2006/10/11(水) 23:40:55
Del厨、できないこと大杉wwww

283 :デフォルトの名無しさん:2006/10/11(水) 23:49:34
>>282
ワロタ

ところで、どうしてVIPでやらずに
わざわざム板でやるのか
簡潔でいいので説明していただけませんか?

284 :デフォルトの名無しさん:2006/10/11(水) 23:51:27
BVってデータベース使えるの?

285 :デフォルトの名無しさん:2006/10/11(水) 23:52:33
>>275
ちげーよ。
TTable使うんなら、Indexの設定をして、
tbl.First;
while not tbl.Eof do
begin
あーたたたたたたた、ほあたぁ!!!!!
tbl.Next;
end;
ってやるほうがいい。

286 :デフォルトの名無しさん:2006/10/11(水) 23:59:30
>>267
>>268
ありがとうございます。>>267のやり方ではできなかったのですが、
>>268のリンク先見てでできました。

287 :デフォルトの名無しさん:2006/10/12(木) 00:12:10
RichEditってハイパーリンク機能つけられんの?

288 :デフォルトの名無しさん:2006/10/12(木) 02:15:29
変数の型を調べるにはどうすればいいのでしょうか??

289 :デフォルトの名無しさん:2006/10/12(木) 02:18:22
自分で書いたソースを穴が空くほど見つめる

290 :デフォルトの名無しさん:2006/10/12(木) 03:39:30
穴が開く

291 :デフォルトの名無しさん:2006/10/12(木) 05:01:40
C#から戻ろうと思うんだけどDelphi6からIDEは成長した?
フリー版とDelphi6を比べた方の感想希望

292 :デフォルトの名無しさん:2006/10/12(木) 05:13:32
beginを作って改行したら勝手にendを入れてくれるとか
慣れないうちは、余計なことを勝手にしてくれる感がつきまとう

もっともオプション次第だろうけどさ。

293 :デフォルトの名無しさん:2006/10/12(木) 05:17:58
for って書いたら

for i := 0 to List.Count - 1 do って勝手になって

しかも var i: Integer が勝手に追加される

294 :デフォルトの名無しさん:2006/10/12(木) 05:49:27
>>287
無理。 自前で実装した方が良いぞ。

295 :デフォルトの名無しさん:2006/10/12(木) 06:15:23
>>292-293
dクス

Class、Interfaseの新規生成とかは?
あとuses追加とか?


296 :デフォルトの名無しさん:2006/10/12(木) 07:20:37
>>279
ありがとうございます。

試してみます。

297 :デフォルトの名無しさん:2006/10/12(木) 07:47:13
>>293
しかも i じゃなくて I だしなw

298 :デフォルトの名無しさん:2006/10/12(木) 08:10:44
visual C++ 5.0ではビルドできたソリューションやソースがVisual Studio 2005 Express ではビルドできないってことあるんでしょうか?

visual C++ 5.0でかかれたオープンソースがマニュアルに従ってビルドしようと思ってもどうしてもできなくて困ってます.
ヘッダファイルがないとかじゃなくて「';'が'&'の前にありません」とか,そういうソースの書き方に問題があるらしくエラーが出てしまうんです.

299 :デフォルトの名無しさん:2006/10/12(木) 08:19:10
なんでここ?

300 :デフォルトの名無しさん:2006/10/12(木) 08:25:04
ああ.うっかりしてました.

どうもありがとうございます.

301 :デフォルトの名無しさん:2006/10/12(木) 09:04:21
>>295
それって、Delphi6からでもできるぞ

302 :デフォルトの名無しさん:2006/10/12(木) 09:29:53
>>291
6から比べると細かい部分でかなり変わってる

303 :ミ,,゚Д゚ミノ ◆A6VzDeLphI :2006/10/12(木) 09:30:21
>>301
D6Proならできるけど、D6Perはむりよ。確か。

304 :デフォルトの名無しさん:2006/10/12(木) 09:32:36
まず、エディタがユニコードになったせいか糞重い

305 :デフォルトの名無しさん:2006/10/12(木) 09:46:15
あ、uses追加は今でもできんけど、

306 :デフォルトの名無しさん:2006/10/12(木) 11:25:52
PrivateにF〜って変数うったら、セッターとゲッターも作ってくれて、かつプロパティにしてくれる補完はないのか?

307 :デフォルトの名無しさん:2006/10/12(木) 11:28:25
>>306
プロパティから書けば勝手に保管される。

308 :295:2006/10/12(木) 15:27:36
皆さんとんクス

>>301-302
新規作成はテンプレートが出来たか聞きたかった
空Unitから書き始めるんじゃなくて

>>305
ここは相変わらず手書きなんだ。

C#, D6Pro, DFree 趣味でやるならどれ使う?

309 :デフォルトの名無しさん:2006/10/12(木) 15:34:24
c# d6 dfree

310 :デフォルトの名無しさん:2006/10/12(木) 15:36:14
趣味とか自作開発ツールにドトネトは使わない。


311 :295:2006/10/12(木) 15:44:43
>>309
そうですな、おかしいですな。

VSExpress(C#), D6Pro, DFree でお願いします

312 :デフォルトの名無しさん:2006/10/12(木) 16:09:04
DFreeって何さ

313 :デフォルトの名無しさん:2006/10/12(木) 16:12:07
>>308
> ここは相変わらず手書きなんだ。

昔からユニットの追加があったと思うが
Alt + F11

314 :295:2006/10/12(木) 16:24:37
>>313
ずっとD6使ってたけどしらなんだ・・・orz
ありがと

315 :デフォルトの名無しさん:2006/10/12(木) 16:28:03
タブブラウザでTabControl使ってるんだがタブ切り替え時のイベントってどういう事書けばいいんですか?
ブラウザがパネル上にある時に、

Panel1.Controls[TabControl1.TabIndex].BringToFront;

だとブラウザがずれるんだが(´・ω・`)

316 :デフォルトの名無しさん:2006/10/12(木) 16:40:43
TabControl1.Parent := Panel1;
上の1文を頭にを記述してみるとどうだろう
質問が意味不明なのでこれぐらいしか言えん

317 :デフォルトの名無しさん:2006/10/12(木) 19:55:40
http://delphi.sakura.vg/index2.html

318 :デフォルトの名無しさん:2006/10/12(木) 22:31:52
TListViewに入っているデータすべてを一括削除するにはどうすればいいんでしょうか?
Items.delete でループさせるしかないのでしょうか??

319 :デフォルトの名無しさん:2006/10/12(木) 22:38:40
普通に考えたらclearじゃない

320 :デフォルトの名無しさん:2006/10/13(金) 11:34:57
>>315
Visible 切り替えがいいんじゃね?

321 :デフォルトの名無しさん:2006/10/13(金) 20:30:58
現在起動中のプロセスのファイルパスを取得するにはどうすればよいのでしょうか?

322 :デフォルトの名無しさん:2006/10/13(金) 21:03:37
>>321
CreateToolhelp32Snapshot

323 :デフォルトの名無しさん:2006/10/13(金) 21:38:07
どうやったらMainMenuをCoolbarに乗せられるのでしょうか?

324 :デフォルトの名無しさん:2006/10/13(金) 22:09:45
>>322
出来れば、もう少し詳しく・・・。
ごめんなさい・・・。

325 :デフォルトの名無しさん:2006/10/13(金) 22:32:21
>>322
http://homepage2.nifty.com/Mr_XRAY/Delphi/plSamples/T_AppProcessList.htm
この辺が参考になるんじゃね

326 :ミ,,゚Д゚ミノ ◆A6VzDeLphI :2006/10/13(金) 22:45:55
http://delfusa.main.jp/delfusalibrary/20060527212010/SystemUnit/SystemUnit.pas

// 起動プロセスのフルパス一覧を得る関数
GetProcExeNameList


327 :デフォルトの名無しさん:2006/10/13(金) 22:59:18
>>323
CoolBar に ToolBar のせて
ToolBar のMenu プロパティに メインメニューを設定

328 :デフォルトの名無しさん:2006/10/13(金) 23:03:33
>>323
http://www2.big.or.jp/~osamu/Delphi/Tips/key.cgi?key=17#0198.txt

329 :デフォルトの名無しさん:2006/10/14(土) 00:16:00
>>325-326
ほんとうにありがとうございました。
ばっちりです。
あぁ、よかった・・・。


330 :デフォルトの名無しさん:2006/10/14(土) 01:26:11
角度が変化するレールから落ちるボールの毎秒ごとの高さを測定してそこから角度を割り出そうと思っています。
このような微分などのライブラリか関数は何か無いでしょうか。

今後も数学系の処理を多くやりそうなので、もし便利なもの、あるいはサイトがありましたらご教示願いいます。

331 :デフォルトの名無しさん:2006/10/14(土) 01:39:28
ゲーム作るときにそういう場面はたくさん出てくるけど、基本は自分で計算。
数学の勉強にもなるからいいよ。

まあ、Quadruple Dのs_mathpack.pasとか見ると楽しいかも知れない。

332 :デフォルトの名無しさん:2006/10/14(土) 01:45:40
Delphiで数値計算といったらこの辺
ttp://www.unilim.fr/pages_perso/jean.debord/tpmath/tpmath.htm
ttp://garbo.uwasa.fi/pc/turbopas.html
精度保証付きでみたいな話ならC++のほうがライブラリが充実しているよ。

333 :デフォルトの名無しさん:2006/10/14(土) 03:57:38
333げっと。

> 微分などのライブラリ
一つ前のデータから引き算して、それを時間差で割るだけでいいんでないの?

334 :デフォルトの名無しさん:2006/10/14(土) 10:10:38
>>331-333
ありがとうございました。勉強してきます。

335 :デフォルトの名無しさん:2006/10/15(日) 14:53:50
配列変数の数を動的に変える方法は無いでしょうか。
Array hoge[0..MaxDataNo] of integer;
と出来ればソースをいじる数が少なくて済むので楽なのですが出来ないので。

また、最大値をMaxValueで抜いてるのですが、何番目のデータが最大だったのかが
簡単に分かる方法がありましたら教えてください。
今はこれが出来ないため、総当りをしています。

336 :デフォルトの名無しさん:2006/10/15(日) 15:02:30
SetLength

非ソートのデータ群からは総当たりしかない。
最大値を求める関数も内部ではこれをやるしかない。

337 :デフォルトの名無しさん:2006/10/15(日) 15:27:19
>>336
ありがとう。

それにしても1年ぶりに来たら閑古鳥が鳴いてるね。
質問しまくって活性化してもいいですか( ;´・ω・`)

338 :デフォルトの名無しさん:2006/10/15(日) 16:05:46
PNG画像を重ね合わせて表示し、上の画像の一部を綺麗に透過させる方法はありますか?

Delphi6にGLDPNGを入れ、TimageにLoadFromFileでPNG画像を読み込んでいます。
読み込むPNGの形式を変えることによって透過の具合が変化しまして、PNG8でインデックスカラー透明、マットも透明にすれば
Delphi上での透過自体は綺麗にできるのですが、PNGそのものの画質が落ちてしまいまして・・・
PNG32など、PNGがどんな形式であっても綺麗に透過させる方法があれば、どなたか教えて下さらないでしょうか。

339 :デフォルトの名無しさん:2006/10/15(日) 16:16:09
試して無いけど
http://pngdelphi.sourceforge.net/
http://pngdelphi.sourceforge.net/methodshopsearch.php?Category=1

procedure OverlayPNG
みたいなのとか

340 :デフォルトの名無しさん:2006/10/15(日) 16:42:17
>>339
pngcomponents・・・そ、そんな便利なものがこの世にあったんですね・・・
凄く助かりました、ありがとうございました。

341 :デフォルトの名無しさん:2006/10/15(日) 17:38:39
GLDPNGは、GPL禁止ライセンスからBSDライセンスに変更した上で開発中止したのはともかく、
zlibの脆弱性問題に全く対応していないので不安といえば不安。

342 :デフォルトの名無しさん:2006/10/15(日) 18:12:41
>>341
.objを1.1.4のに変えれば大丈夫なんじゃない?

343 :デフォルトの名無しさん:2006/10/15(日) 19:10:06
1.1.4って、安全だっけ?

1.1系と1.2系って全然違うとか言う話もあったっけ

344 :デフォルトの名無しさん:2006/10/15(日) 22:23:58
WebBrowserでローカルのファイル(html)等を読み込んで表示するという事は出来ますでしょうか?


345 :デフォルトの名無しさん:2006/10/15(日) 22:27:19
file:// じゃなくて?

346 :デフォルトの名無しさん:2006/10/15(日) 22:35:02
つまりNavigate()に
'file://C:\hoge.htm'
みたいな感じで投げれば良いという事ですね

ありがとうございました


347 :デフォルトの名無しさん:2006/10/16(月) 02:36:18
完全な蛇足だけど「file://」は、必要無いと思う。

348 :デフォルトの名無しさん:2006/10/16(月) 13:37:31
QuickReportって、印刷するんじゃなくて指定したCanvasに出力することって出来ましたっけ?

349 :デフォルトの名無しさん:2006/10/17(火) 02:04:44
Delphiのバージョンいくつになったら、
forでstepを指定できるようになりますか

350 :デフォルトの名無しさん:2006/10/17(火) 04:09:53
ヘルプよくよめ

351 :デフォルトの名無しさん:2006/10/17(火) 10:42:25
>>349
それは Delphiと言うよりPascalの話じゃね

352 :デフォルトの名無しさん:2006/10/18(水) 01:23:35
RichEditの中に入っている、
2006/08/03 10:00 ...
2006/08/03 10:02 ...
2006/08/03 10:01 ...
2006/08/02 09:00 ...
という具合のデータを日時順でソートしたいのですが、どうすればいいのでしょうか?

353 :295:2006/10/18(水) 01:31:32
>>352

lines:TStringList;

lines := TStringList.Create();
lines.AddStrings(RichEdit1.Lines);
Lines.Sort;
RichEdit1.Lines := lines;
適当だけど、これじゃ駄目なん?

354 :デフォルトの名無しさん:2006/10/18(水) 01:32:02
名前消し忘れスマン

355 :デフォルトの名無しさん:2006/10/18(水) 01:43:56
>>353
希望通りに動作しました、ありがとうございます!

356 :デフォルトの名無しさん:2006/10/18(水) 19:41:14
訳あって、delphiで作ったexeのファイルサイズを20MBを超えるサイズにしたいです。

プログラム自体は 「hellow world」 を出力するだけのもので、 このexeはサイズが500KB程度しかないので
100MBに増量したいです。 ファイルサイズを簡単に増量出来る方法があればご教授を。m(_ _)m

357 :デフォルトの名無しさん:2006/10/18(水) 19:42:06
>>356
リソースつかえ。
あーっというまに、どでかいファイルの出来上がり。

358 :356:2006/10/18(水) 19:44:25
↑20MBでも100MBでもどちらでも良いです。

359 :356:2006/10/18(水) 19:45:07
>>357
リソースですか、ありがとうございます。 早速調べてみます。m(_ _)m

360 :356:2006/10/18(水) 20:12:34
>>357
.rc ファイルを生成すればいいんですね、解決しました! 感謝!m(^^)m

361 :デフォルトの名無しさん:2006/10/18(水) 21:05:39
delphiユーザってあやしい人が多いの?

362 :デフォルトの名無しさん:2006/10/18(水) 22:40:56
なんの意図があってやるんだ?

363 :デフォルトの名無しさん:2006/10/18(水) 23:06:40
何の意図もない。イカレてるだけ。きっと。それともなにかのテストかな
あ〜あ はふ ためになる質問解答、あんま無いね〜

364 :デフォルトの名無しさん:2006/10/19(木) 01:48:31
別アプリケーション内に四つあるComboBoxのなかに、それぞれ別のテキストを
いれたいのですがどうすればいいのでしょうか??

365 :デフォルトの名無しさん:2006/10/19(木) 02:37:29
TimerのTabプロパティを0〜240くらいまで振ってるんですが、
連番で振っていくときに楽な操作方法はありませんでしょうか?

366 :デフォルトの名無しさん:2006/10/19(木) 07:21:26
>>365
dfmとpasファイルを直接編集、連番ふるようにマクロコピペ。

367 :デフォルトの名無しさん:2006/10/19(木) 08:56:41
動的に生成しろよ

368 :デフォルトの名無しさん:2006/10/19(木) 09:15:24
>>365
こういう事でなくて?

i,n:integer;
cmp: TComponent;

n := 0;
for i := 0 to Form1.ComponentCount -1 do
begin
cmp :=TComponent(Form1.Components[i]);
if (cmp.ClassType = TTimer) then
begin
cmp.Tag := n;
inc(n);
end;
end;


369 :デフォルトの名無しさん:2006/10/19(木) 11:47:59
for i := 0 to 10 do
begin

if Pos('ここから',RichEdit1.Lines[i]) > 0 then
i := i+2;

end;

のようなエディタを使った時に、2つ下にスキップしたいのですが、
i に +2 すると i は制御変数に代入できないエラーがでます。 
スキップさせる、何か良い方法はありませんか?

370 :デフォルトの名無しさん:2006/10/19(木) 11:49:01
>>369
コンテニュー

371 :デフォルトの名無しさん:2006/10/19(木) 12:05:44
>>369
こんなんで
冗長かな?

var
 i: Integer;
begin
 i := 0;
 while (i < 10) do
 begin
  if Pos('ここから',RichEdit1.Lines[i]) > 0 then
  begin
   //ループ内でやりたい処理
   i := i + 2;
   continue;
  end
  else
  begin
   //ループ内でやりたい処理
   Inc(i);
  end;
 end;
end;

372 :デフォルトの名無しさん:2006/10/19(木) 12:26:43
>>371 できました! ありがとうございました。

373 :デフォルトの名無しさん:2006/10/19(木) 14:55:36
何つくってるのかわからん。

374 :デフォルトの名無しさん:2006/10/19(木) 17:46:24
Turbo Delphi で作成したWin32の
プログラムってビスタで動作するのですかね?

375 :デフォルトの名無しさん:2006/10/19(木) 17:59:02
動く

376 :デフォルトの名無しさん:2006/10/19(木) 18:05:30
動くみたいですね。
今度買いに行きます。

377 :デフォルトの名無しさん:2006/10/19(木) 19:41:25
TBitmapのビットレートを落とすコードを教えて下さい。

あと、ビットレートってenumになっていますか?

378 :デフォルトの名無しさん:2006/10/19(木) 19:58:07
言っていることがちょっとヘンテコだぞそれ。
ビットデプスとかビットカウントのこといってんのか?

俺はツンデレだから教えてやるが、pixelformatをいじれ。

379 :デフォルトの名無しさん:2006/10/19(木) 20:03:14
なんかこのごろ変なの多し

380 :デフォルトの名無しさん:2006/10/20(金) 01:36:11
いまいち文字処理がよく分からないのですが、Memoの中に入っている文字列が
「空白行だったら行ごと削除する」や「特定の文字が含まれている行は削除する」にはどうすればいいのでしょうか?

381 :デフォルトの名無しさん:2006/10/20(金) 01:50:18
procedure TForm1.Button1Click(Sender: TObject);
var
 i:integer;
 memo:tstringlist;
begin
 memo:=tstringlist.Create;
 memo.Assign(memo1.Lines);
 memo1.Clear;
 for i:=0 to memo.Count-1 do
  if (pos('hoge',memo[i])=0)and(memo[i]<>'') then memo1.lines.add(memo[i]);
end;

382 :デフォルトの名無しさん:2006/10/20(金) 01:51:14
あ memo.free; するの忘れてた

383 :デフォルトの名無しさん:2006/10/20(金) 02:15:54
それだと hoge があったら追加だろ

> 「空白行だったら行ごと削除する」や「特定の文字が含まれている行は削除する」

ぜんぜんちがうがな

384 :デフォルトの名無しさん:2006/10/20(金) 02:18:07
いや、そうでもないか、失礼しました。それでいい。



385 :デフォルトの名無しさん:2006/10/20(金) 02:20:56
×それだと hoge があったら追加だろ
○ hoge がなく、かつ、空白行でもないときは追加

だから正しいね。すまん。

386 :デフォルトの名無しさん:2006/10/20(金) 02:28:29
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
sl:TStringlist;
begin
sl:=TStringlist.Create;
try
sl.Text:=memo.Text;

for i:=sl.Count-1 downto 0 do
 begin
  if (ansipos('何か文字',sl.Strings[i])<>0)or(sl.Strings[i]='') then sl.Delete(i);
 end;

 memo.Text:=sl.Text;

finally
sl.Free;
end;
end;

とか

387 :デフォルトの名無しさん:2006/10/20(金) 03:01:53
>>381 >>386 さん
一度別の配列を作ってから、条件に合うだけのものを入れ直せばいいだけのものみたいですね。
とても勉強になりました、ありがとうございます!

388 :デフォルトの名無しさん:2006/10/20(金) 08:23:16
PrinterSetupDialogで変更したプリンタ名を取得するんにはどうすればいいんですか?
PrinterNameみたいなプロパティが無いっス。

389 :デフォルトの名無しさん:2006/10/20(金) 08:43:50
memoの最後から2行分を削除したいのですが、どうすればいいですか?

390 :デフォルトの名無しさん:2006/10/20(金) 08:50:54
>>388
ttp://forum.nifty.com/fdelphi/samples/00035.html


391 :デフォルトの名無しさん:2006/10/20(金) 08:52:19
>>389
Memo1.Lines.Delete(Memo1.Lines.Count-1);
Memo1.Lines.Delete(Memo1.Lines.Count-1);


392 :デフォルトの名無しさん:2006/10/20(金) 09:27:19
>>389

tempList := TStringList.Create;

for i := 0 to Memo1.Lines.Count - 3 do begin
 tempList.Add(Memo1.Lines[i]);
end;

Memo1.Lines.Clear;

for i := 0 to tempList.Count - 1 do begin
 Memo1.Lines.Add(tempList[i]);
end;

tempList.Free;


393 :デフォルトの名無しさん:2006/10/20(金) 09:37:12
>>389こいつコピペだけで何とかしようとしてねぇか?


394 :デフォルトの名無しさん:2006/10/20(金) 09:48:48
32bitの数値の操作について質問です
i の上位8ビットを$00にしたいのですが、各Byteが$FFではないので
単純にandでマスクできません
これ↓より高速にする方法はあるでしょうか?
var
  i: LongInt;
begin
  i := $A05C9940; //適当
  i := i shl 8;  //$5C994000
  i := i shr 8;  //$005C9940
end;


395 :デフォルトの名無しさん:2006/10/20(金) 10:04:12
>各Byteが$FFではないので単純にandでマスクできません
ここの意味がよく分かんないけど
$00FFFFFFとandじゃだめなの?


396 :デフォルトの名無しさん:2006/10/20(金) 10:06:00
>>394
> i の上位8ビットを$00にしたいのですが、各Byteが$FFではないので
> 単純にandでマスクできません

意味不明。
俺はツンデレだから、解法は教えるけど。

例1: i := i and $00FFFFFF;
例2: 共用体を使う

397 :デフォルトの名無しさん:2006/10/20(金) 10:08:06
例3:ポインタを使う

という方法もあるな。
(pByteArray(@i))[3]:=0;

398 :388:2006/10/20(金) 10:11:40
>>390
どうもありがとう!
Printer. 使うしかないのか…

399 :デフォルトの名無しさん:2006/10/20(金) 10:11:45
StrToInt('$' + Copy(IntToHex(i, 8), 3, 8))

400 :394:2006/10/20(金) 10:12:17
うわー
orと勘違いしてたorz
まだ頭が寝てるのか俺は・・・
駄質問スマソ

401 :デフォルトの名無しさん:2006/10/20(金) 10:14:57
>>391 >>392 できました。 ありがとうございました。




402 :デフォルトの名無しさん:2006/10/20(金) 10:17:11
いや>>392はネタだから
効率がいいやり方でやってくれ

403 :デフォルトの名無しさん:2006/10/20(金) 10:23:16
>>402
ありがとうございます。

どうすれば動くのか悩んだんですが、これで動きました。

procedure TForm1.Button5Click(Sender: TObject);
var
tempList :TStringList;
i :Integer;
begin

tempList := TStringList.Create;

for i := 0 to Memo1.Lines.Count - 3 do begin
tempList.Add(Memo1.Lines[i]);
end;

Memo1.Lines.Clear;

for i := 0 to tempList.Count - 1 do begin
Memo1.Lines.Add(tempList[i]);
end;

tempList.Free;
end;

これは難易度が高いので、Deleteで削る方法にしました。
ありがとうございました。


404 :デフォルトの名無しさん:2006/10/20(金) 10:34:31
>>403
大丈夫だと思うけど、Deleteするとき
インデックスエラーにならないようにな

405 :デフォルトの名無しさん:2006/10/20(金) 10:38:51
配列の要素の平均を求めたいんだがほかにいい方法あるかな
hairetu: array[0..3] of byte;
inc(goukei, hairetu[0]);
inc(goukei, hairetu[1]);
inc(goukei, hairetu[2]);
inc(goukei, hairetu[3]);
heikin := goukei div 4;

406 :デフォルトの名無しさん:2006/10/20(金) 10:42:24
ヘルプで、mean関数について調べてみ

407 :デフォルトの名無しさん:2006/10/20(金) 11:01:33
>>406
thx
ヘルプと、あとソースも調べてみたよ
結局やってることはいっしょか・・
手続きを呼び出す手間だけ実行速度は遅くなるのかな

408 :デフォルトの名無しさん:2006/10/20(金) 11:04:17
>>407
考えられる実装方法を全部実装してみて、
コンパイルして実行してCPUウィンドウ眺めて、
アセンブラの命令数が少ない奴を選べばいい


409 :デフォルトの名無しさん:2006/10/21(土) 00:43:17
普通にループで足していっても十分な速さが出るとおもうけど、
いったい何をしているの?

410 :デフォルトの名無しさん:2006/10/21(土) 01:24:27
>>409
実効速度に無頓着な方はみなさんそうおっしゃいます

411 :デフォルトの名無しさん:2006/10/21(土) 02:17:26
>>410
独りよがりなスピード追求は邪魔なだけだお

412 :デフォルトの名無しさん:2006/10/21(土) 02:33:08
つか、速度にこだわるならそもそもDelphiで書かないと思うが。

413 :デフォルトの名無しさん:2006/10/21(土) 04:04:57
Concat関数の存在理由を教えてください

414 :デフォルトの名無しさん:2006/10/21(土) 04:54:27
ループで遅いなら、別スレッドでちょっとずつ計算しておくとか。

415 :デフォルトの名無しさん:2006/10/21(土) 06:10:19
>>413
後方互換性

416 :デフォルトの名無しさん:2006/10/21(土) 08:18:49
超初心者な質問です。
乱数の結果をメモ欄に出したいのですが、どうすればよいのでしょうか?

417 :デフォルトの名無しさん:2006/10/21(土) 08:40:00
>>416
// 0 <= X < 100 の乱数を Memo1 に出力
Memo1.Lines.Add(IntToStr(Random(100)));

418 :デフォルトの名無しさん:2006/10/21(土) 08:55:29
ありがとうございました。
早速試してみます。

419 :デフォルトの名無しさん:2006/10/21(土) 10:17:09
StringGrid に TPopupmenu を割り当てているのですが、これを実行時に
無効(というかポップアップしないように)したいのですが、どうすれば
できるでしょうか。Del7です。

420 :デフォルトの名無しさん:2006/10/21(土) 10:34:35
StringGrid.PouupMenu := nil;

421 :デフォルトの名無しさん:2006/10/21(土) 11:59:08
>>420
ありがとうございます。やってみました。419で書きもれていたのですが、
TabControl 内に StringGrid がありまして、両方に別の PopupMenu を
割り当てています。で、StringGrid に割り当てている PopupMenu1 := nil;
としたら、TabControl に割り当てている Popupmenu2 がポップアップされて
しまいました。いったいなぜなんでしょう。

422 :デフォルトの名無しさん:2006/10/21(土) 12:09:17
空のメニューを割り当てる

423 :デフォルトの名無しさん:2006/10/21(土) 12:17:12
早々の解答ありがとうございます。空のメニューを割り当てたところ、
ポップアップはされなくなりました。
ただ、セルを編集時(インプレースエディタ)のデフォルトのポップアップは
させたいのですが、それもされなくなりました。で、
StringGrid1.PopupMenu := nil; TabControl1.PopupMenu := nil;
としたらうまくいきました。ありがとうございました。

424 :デフォルトの名無しさん:2006/10/21(土) 13:34:21
ちっぽけなことなんですけどね、

for i:=0 to 20 do memo1.Lines.Add('文字列足します!');

とやったとします。
で、memo1に出た文字列を眺めてると、キャレットが最後の行の「文字列足します!」の下にきてるわけですよ。
これって、memo1が勝手に改行文字を入れたってことですよね?

もし、改行文字を入れたくない場合とかはどうするんですか?
最後の行をDelete?

425 :424:2006/10/21(土) 13:40:07
要は、最後の「文字列足します!」のすぐ後ろにキャレットをつけたい、ということです。

426 :デフォルトの名無しさん:2006/10/21(土) 13:46:59
>>424-425
memo1.Lines.Text := 文字列;

427 :デフォルトの名無しさん:2006/10/21(土) 13:49:14
SelStartとSelLengthプロパティを使ってキャレット位置を移動させればいいかも

428 :424:2006/10/21(土) 13:57:54
>>426
いやいや、それじゃ、1行だけしか入らんでしょ? しかもシングルクォートないし…

>>427
キャレットの位置を移動させるんじゃなくて、memo1の裏にあるデータの最後の改行を抹殺したいのでつ。

429 :デフォルトの名無しさん:2006/10/21(土) 14:05:00
>>428
なあ、少しは自分でも考えてみないか?
426の「文字列」と'文字列足します!'の違いの意味を。

430 :デフォルトの名無しさん:2006/10/21(土) 14:05:18
>>428
>1行だけしか入らんでしょ? しかもシングルクォートないし
ちょっとは自分で考えようよ。
21行分(i=0〜20)の文字列を別の変数で組み立てておいて、
その変数をLines.Textプロパティに代入したら末尾に改行は入らない

431 :424:2006/10/21(土) 14:07:10
>>229
あぁ、そういうことか。
だけど、Addで付足していく、って方法を取りたいわけですよ。
文字列 が一気に出ないケースなので。

432 :デフォルトの名無しさん:2006/10/21(土) 14:09:57
>>431
じゃあ、Add(文字列)の代わりに
memo1.Lines.Text := memo1.Lines.Text + 改行 + 文字列


433 :デフォルトの名無しさん:2006/10/21(土) 14:11:57
Addじゃなきゃいやでつ。


434 :デフォルトの名無しさん:2006/10/21(土) 14:15:07
じゃあそろそろ自分で考えような

ヒント
・Addを使うと必ず末尾に改行が入る
・Lines.Textプロパティを使ってMemo内の文字列を編集できる

435 :424:2006/10/21(土) 14:15:36
>>432
それはしんどい。なぜならAddする項目が多いから(笑

説明不足だけど、何がしたいかっていうと、memo1上に現れたデータを目で確認してから、その文字列を暗号化して保存しようとしたかったわけですよ。
ところが、一番最後に改行が付け加えられてるもんだから、この改行も暗号化されちゃって保存されてしまうと。
暗号化されたファイルをデコードしたときに残滓みたいに変なデータがくっついていたから何だ?こりゃって感じで。

436 :424:2006/10/21(土) 14:18:29
>>434
ちなみに433は俺じゃないです。

最後の改行だけ取るってのはあっさりできるんじゃないかなって目論見だったんですけどね。

437 :デフォルトの名無しさん:2006/10/21(土) 14:18:33
「しんどい」の意味がわからん
長いプログラムを打つのが面倒ってことか?

438 :デフォルトの名無しさん:2006/10/21(土) 14:19:34
VBなら最後に改行つかないのにね

439 :デフォルトの名無しさん:2006/10/21(土) 14:20:58
>>436
>>432であっさりできてるじゃん
Addしてから末尾の2バイトをDeleteしてもいいけど、それはしんどいでしょ?

440 :デフォルトの名無しさん:2006/10/21(土) 14:21:08
>435
> 暗号化されたファイルをデコードしたときに残滓みたいに変なデータがくっついていたから何だ?こりゃって感じで。
エンコード、デコードがバグってるのになぜ関係ない部分を直そうとする?
こういうやつはマには向かん(キッパリ)。

441 :デフォルトの名無しさん:2006/10/21(土) 14:22:26
>>436
あっさりできるとだけいっておこう


442 :デフォルトの名無しさん:2006/10/21(土) 14:23:20
Delには親切な人が多いなぁ

443 :424:2006/10/21(土) 14:26:22
あ、今ググッて#13#10をReplaceする方法でなんとかいけそうなんですけど、何かユニコードとか文字コード上、問題ないですかね?

444 :デフォルトの名無しさん:2006/10/21(土) 14:28:41
それって全部の#13#10が消えちゃうような・・・・

445 :デフォルトの名無しさん:2006/10/21(土) 14:29:08
>>443
439をスルーして
それが自分で考えた結果か。それならそれでよいぞ。うんうん。

446 :424:2006/10/21(土) 14:30:11
>エンコード、デコードがバグってるのになぜ関係ない部分を直そうとする?
>こういうやつはマには向かん(キッパリ)。

? だからAddによって付け加えられた改行文字も一緒にエンコードされちゃったってことじゃないんですか?
そう認識してるんですが。


447 :424:2006/10/21(土) 14:33:26
>>445
>Addしてから末尾の2バイトをDeleteしてもいいけど、それはしんどいでしょ?

末尾の2バイトをDeleteするっていうのは、Copy関数で0からオリジナル.Length-2までをコピーするって方法しか思いつかないんですけど、後ろから2バイトだけ削除する方法ってあるんですか?

448 :デフォルトの名無しさん:2006/10/21(土) 14:34:51
>>447
何でそこだけ英語で書いてくれたか考えてみると良いよ

449 :デフォルトの名無しさん:2006/10/21(土) 14:39:16
ところで、したいことはMemoの全部の行の改行を消したいのか?
それとも最後の行の改行だけ消したいのか?
全部を消したいなら>>443のreplaceでもいいかもしれん

450 :デフォルトの名無しさん:2006/10/21(土) 14:40:41
>>447
"Delete"でヘルプを検索しろ。アホか。

451 :424:2006/10/21(土) 14:41:13
なるほど、メソッドか!
Delete(Length(Memo1.Text)-1);
Delete(Length(Memo1.Text)-2);

で最後から2バイト消えますね。

452 :デフォルトの名無しさん:2006/10/21(土) 14:42:27
うんうん。成長したな。おぬし。鍛錬を怠るでないぞ。

453 :デフォルトの名無しさん:2006/10/21(土) 14:42:33
もちつけ、どこのDeleteを見てるんだ?

454 :424:2006/10/21(土) 14:42:53
>>449
消したかったのは最後の行だけです。

455 :424:2006/10/21(土) 14:44:09
>>453
Memo1.Lines.Deleteでいいですよね?

456 :デフォルトの名無しさん:2006/10/21(土) 14:46:45
>>455
志村〜、2行!2行!

457 :デフォルトの名無しさん:2006/10/21(土) 14:46:59
>>445>>452で、>>441>>450だと思うなw
>>441>>450って、ボトムズのカン・ユーみたいな奴だ。

458 :デフォルトの名無しさん:2006/10/21(土) 14:48:35
>>455
TStrings.Deleteは指定された行を丸ごと削除するメソッド。
ヘルプをよく読め、アホアホ野郎。

459 :424:2006/10/21(土) 14:49:04
>>456
あー、そうか。
行ごと削除されてしまうのか。

460 :デフォルトの名無しさん:2006/10/21(土) 14:49:22
>>457
はずれです。全部僕の自作自演です。自己解決しました。

461 :デフォルトの名無しさん:2006/10/21(土) 14:49:59
>>432が駄目な理由を教えてくれたらもっといい案が出るかもしれん
ってか>>432でいいじゃんよー

462 :424:2006/10/21(土) 14:50:32
Delphiをアンインストールしたら全ての問題が解決しました。
今日はぐっすり眠れそうです。

463 :デフォルトの名無しさん:2006/10/21(土) 14:50:40
>>458
試しにお前が最善の答え書いてみ?

464 :458:2006/10/21(土) 14:51:43
いやです。

465 :424:2006/10/21(土) 14:54:11
>memo1.Lines.Text := memo1.Lines.Text + 改行 + 文字列

@Addによってくっつけられた最後の行の改行だけを削除したい。
Aのに、さらに改行をつけ、さらに文字列をつけるの? って認識してます。

最後の行だけを取っておいて、改行+最後の行とやるんですか?
ちなみに>>462は俺じゃないです。

466 :458:2006/10/21(土) 14:55:08
本当はVB使いです。
今から回線切って氏にます。

467 :デフォルトの名無しさん:2006/10/21(土) 14:56:50
463=424とみた。

468 :424:2006/10/21(土) 15:00:08
いまちょっと書物で調べました。

memo1.text := Delete(Memo1.Text, Length(Memo1.Text)-3,2);
でいけそうです。


469 :458:2006/10/21(土) 15:00:12
要するに最後の改行を外せばいいんだろ?
var
 Text: string;
 Len: Integer;
begin
 Text := Memo1.Lines.Text;
 Len := Length(Text);
 if (Text[Len - 1] = #13) and (Text[Len] = #10) then
  Delete(Text, Len - 1, 2);
後はTextをお好きなように。

470 :デフォルトの名無しさん:2006/10/21(土) 15:00:25
>>465
Add(1行の文字列)ってのは、
Lines.Text := Lines.Text + 1行の文字列 + 改行;
と等価なわけ。だからAddすると行末に必ず改行がつく。

この順番をかえて>>432のようにすると、各行の間は改行で
区切られかつ末尾に改行はつかない。
ただし最初の1行目を代入するときは改行は不要なので注意が必要

471 :デフォルトの名無しさん:2006/10/21(土) 15:02:43
>>468
もちつけ、始点はそこでいいのか?

472 :デフォルトの名無しさん:2006/10/21(土) 15:03:21
>>468
書物とな

473 :424:2006/10/21(土) 15:03:38
>>469
親切にありがとうございます。
#13#10のチェックを入れたほうがいいですね。

あんまり高坊をいじらないでください。質問しにくいです。

>>467
ハズレです。

474 :デフォルトの名無しさん:2006/10/21(土) 15:07:55
>>468
どんな書物にそれが載ってたのかが気になるのだが・・・

475 :424:2006/10/21(土) 15:08:04
>>470
ありがとうございます。
なるほど、次の文字列を下の行に足すために改行が入っちゃうんですね。

>>471
Delete(Memo1.Text, Length(Memo1.Text)-1,2); でいいですか?


476 :デフォルトの名無しさん:2006/10/21(土) 15:10:13
>>468
つっこみどころ満載だね。
Deleteはprocedureなので値は返しません。
プロパティはDeleteの第一引数には使えません。
stringの添え字は1から始まります。

Delphiが根本的に理解できてないと思いますよ。

477 :424:2006/10/21(土) 15:11:39
>根本的に理解できてないと思いますよ。

そうかもしれません。
動くようにいろいろいじってみたいと思います。

478 :デフォルトの名無しさん:2006/10/21(土) 15:12:30
>>476
Delphiの本かどうかもわかんないんだから良いんじゃね?
ここは超がつく初心者板なんだし
>>477
気にスンナー

479 :424:2006/10/21(土) 15:13:09
s:='';
for i:=1 to 20 do begin
 s:= s + '追加したい文字';
if i <> 20 then s:= s + #$0d#$0a;
end;
Memo1.Text:=s;
でうまくいきました。ありがとうございました。

480 :デフォルトの名無しさん:2006/10/21(土) 15:15:19
今まで出た案完全無視な結論に絶望した!!

481 :デフォルトの名無しさん:2006/10/21(土) 15:18:43
しかし、答えをズバッと書けばすぐ済むのに、なんでこんなにレス消費したんだ?
上司にこういう答え方してると「もういい!」って怒られそうだ。

482 :デフォルトの名無しさん:2006/10/21(土) 15:19:48
そうゆうときは、だいたい上司の聞き方が要領を得ないんだよ

483 :デフォルトの名無しさん:2006/10/21(土) 15:24:51
うちの上司も「簡潔に!」とかいいそう

484 :デフォルトの名無しさん:2006/10/21(土) 15:31:58
>>481-483
真面目に答えてた奴は簡潔だったと思うぞ

485 :デフォルトの名無しさん:2006/10/21(土) 15:33:42
簡潔なだけで何の役にも立たなかったけどな。

486 :デフォルトの名無しさん:2006/10/21(土) 15:40:25
VBは簡潔で役に立つのにね

487 :デフォルトの名無しさん:2006/10/21(土) 16:38:30
TBitmapの一面を真っ黒に塗りつぶすのに、最も高速な方法ってなんですか?

488 :デフォルトの名無しさん:2006/10/21(土) 16:43:37 ?PLT(11151)
テキスト入力用の右クリックメニューに、
自分で作ったアプリを呼び出すメニューを追加したいんだけど
やり方わかる?

489 :デフォルトの名無しさん:2006/10/21(土) 16:51:23
わかる

490 :デフォルトの名無しさん:2006/10/21(土) 16:55:48
>>487 低速な方法なら知ってるのか?

491 :デフォルトの名無しさん:2006/10/21(土) 16:57:15
>>487
Canvas.FillRect
速いかどうかは知らん

492 :488:2006/10/21(土) 17:21:46 ?PLT(11151)
教えて

493 :デフォルトの名無しさん:2006/10/21(土) 17:48:40
>>490
487だが、とにかくスピードがほしいんだけど、本命で速いのは予め真っ黒なBitmap1でもつくっといて:=で渡すのかなって思ってる。
クラスはポインタだからね。それかAssignするか。
でもこれだと余計なBitmapつくるんでメモリが無駄になる。

CanvasのメソッドのFillRect使う手があるけど、速度的に速い手続きってどうなのかなって。
工学部出身じゃないから、裏でどうなってるのかまでわからん。
低速なのはCanvas.FillRectなんじゃない?
でも、こんなこと聞いて何になるの?

494 :デフォルトの名無しさん:2006/10/21(土) 17:51:29
TBitmap 同士なら Copy On Write なので Assign が一番早い。

495 :デフォルトの名無しさん:2006/10/21(土) 17:52:45
>>494
サンクス!
やっぱ余計にBitmap作るか。
速度最優先だからね。

496 :>>490の上司ですが:2006/10/21(土) 17:54:34
わたくしめの部下がおろかな質問をして申し訳ありません。
今後、簡潔迅速に回答するよう厳に指導してまいります。

497 :デフォルトの名無しさん:2006/10/21(土) 18:14:57
同じサイズなら多分FillRectやCopyRectよりAssignのほうが早い。
でも、たいして変わらんので小さいサイズでBitMap作って、
cmBlacknessでCopyRectが合理的。

498 :デフォルトの名無しさん:2006/10/21(土) 18:22:36
>>489
オレも知りたい。TEdit を貼り付けただけで、実行して TEdit を右クリック
すると表示されるメニューに、独自のアイテムを追加したいってことでしょ?

499 :488:2006/10/21(土) 18:32:58 ?PLT(11151)
>>498
ちょっと違う
TEditに限らず、メモ帳とかIEのアドレス欄とかの右クリックメニューに
自作アプリを呼び出すメニューを付けたい

500 :デフォルトの名無しさん:2006/10/21(土) 18:43:00
それは難しそうだなぁ
マウスの右ボタンダウンをフックして、本来のポップアップが表示されないようにして
自前で用意したTPopupMenuを出すのはできるけど・・・
もっと簡単な方法ありそうなきがする。レジストリいじるとか。

501 :デフォルトの名無しさん:2006/10/21(土) 18:43:11
コンテキストメニューに項目を追加したいってことだろ?
だとしたらShellAPIなんじゃないの。初心者には難しすぎるかもね

502 :デフォルトの名無しさん:2006/10/21(土) 18:43:34
それはDelphiと関係ないような・・・

503 :デフォルトの名無しさん:2006/10/21(土) 18:44:18
EDITコントロールをシェルが管理してるとは知らなかった。

504 :デフォルトの名無しさん:2006/10/21(土) 18:45:03
>>503
先生、もったいぶらずにヒントだけでも教えてください!

505 :503:2006/10/21(土) 18:46:01
>>501の間違いを皮肉ってるんだよwww

506 :デフォルトの名無しさん:2006/10/21(土) 18:47:06
>>504
ヒント:Inno installer

507 :デフォルトの名無しさん:2006/10/21(土) 18:47:21
>>503
サーセンwwwwそれはオレも知らなかったわ

508 :506:2006/10/21(土) 18:49:13
あっ正確にはInno Setupだったっけ?

509 :デフォルトの名無しさん:2006/10/21(土) 18:50:59
>>508
これってポップアップメニュー改造できんの?

510 :488:2006/10/21(土) 18:51:40 ?PLT(11151)
先生、これのことですか?
http://www.syam.net/library/innosetupj/index.html

511 :デフォルトの名無しさん:2006/10/21(土) 18:53:51
改造というか・・・・・

512 :デフォルトの名無しさん:2006/10/21(土) 18:56:47
>>510
まあつまりはDelphiとは関係ないということだ。
InnoがDelphi製だから引き続きお兄さんたちがやさしくアドバイスしてくれるかも知んないけどな


513 :デフォルトの名無しさん:2006/10/21(土) 18:56:56
先生あんたもじらすねえ

514 :512:2006/10/21(土) 19:06:49
ああごめんごめん勘違いしてたわ。
無理無理。そんな機能無理。
常駐させてホットキーで起動ってやった方が速いぜ?
わざわざ作らなくてもそんなソフト五万とありそうだけど

515 :デフォルトの名無しさん:2006/10/21(土) 19:10:39
ホントに無理なの?
IEの右クリックメニューにアイテム追加するソフトとかあるけど
あれは違う仕組みなんかな

516 :デフォルトの名無しさん:2006/10/21(土) 19:12:59
>>515
そういう機能追加を想定してあるとこではできるよ。
それ以外では絶望的。
できるんだったらとっくにどんなアプリのメニューにも忍び込むランチャとかありそうな気がする。

517 :デフォルトの名無しさん:2006/10/21(土) 19:13:08
どっから Inno の話になっちゃったんだろ?
ポップアップメニューの取得は GetMenu API とかでできないものかな?
で AppendMenu かなんかで追加とか。適当に書いてるんでよろしく

518 :デフォルトの名無しさん:2006/10/21(土) 19:13:41
IEで可能なのはIEがそのような機能を持っていて、その仕様が公開されているから。

519 :515:2006/10/21(土) 19:15:57
>>516,518
なるほど納得です
でも無理といわれると余計にフックしたくなるな

520 :512:2006/10/21(土) 19:16:27
>>517
Explorerのメニューと勘違いしてたスマソ

521 :デフォルトの名無しさん:2006/10/21(土) 19:17:30
>>519
実現できたら結構使う人いるかもね。
どんなアプリにも忍び込めるランチャ

522 :517:2006/10/21(土) 19:19:08
あ、フック… ワタシも勘違いしてました。

523 :488:2006/10/21(土) 19:19:14 ?PLT(11151)
ダメなのか
エクセルの右メニューとかも無理?

524 :デフォルトの名無しさん:2006/10/21(土) 19:22:16
>>522
いや別にフックじゃなくてもいいでしょ
GetMenu APIってポップアップメニューも取得できるんだろうか

525 :デフォルトの名無しさん:2006/10/21(土) 19:24:05
ポップアップメニューはウィンドウに関連付けられてないから_

526 :デフォルトの名無しさん:2006/10/21(土) 19:24:39
>>523
個々のアプリのことはよう知らんがホットキーで起動じゃだめなんか?
なぜメニューにこだわる?ホットキーでメニュ-出した後起動でもだめか?

527 :デフォルトの名無しさん:2006/10/21(土) 19:26:15
他のアプリケーション内のPageControlを取得したのはいいのですが
タブを選択させるのがどうすればいいのか分かりません
知ってる方いらっしゃったら教えてくださいまし

528 :デフォルトの名無しさん:2006/10/21(土) 19:28:15
タブを選択って?
そこんとこ詳しく

529 :デフォルトの名無しさん:2006/10/21(土) 19:29:32
>>525
EnumWindowとかでも無理なんだよな・・・
ハンドルさえ捕まえられたら・・・

530 :デフォルトの名無しさん:2006/10/21(土) 19:29:43
>>528
日本語からやり直せ。

531 :488:2006/10/21(土) 19:30:05 ?PLT(11151)
>>526
そのほうがスマートかと思ったんだけど無理ならしょうがない
ホットキーって常駐するのがアレだなと思った

532 :デフォルトの名無しさん:2006/10/21(土) 19:31:16
>>531
軽そうなランチャソフト常駐させとけば?探せばいくらでもあんだろ

533 :デフォルトの名無しさん:2006/10/21(土) 19:32:17
VBならできないことなんてないのにね

534 :527:2006/10/21(土) 19:33:04
例えばコントロールパネルのシステムで言うと
「全般」「コンピューター名」「ハードウェア」「詳細設定」・・・等のタブが並んでいる部分です
自分のプログラムからこれのうち一つをを選択させたいのです

535 :デフォルトの名無しさん:2006/10/21(土) 19:35:32
>>534
目的のタブがアクティブになるまでCtrl+Tabのキーイベントを送信する

536 :デフォルトの名無しさん:2006/10/21(土) 19:39:20
>>534
普通のタブコントロールなら
TCM_SETCURSELメッセージを送ればなんとかなるかも

537 :デフォルトの名無しさん:2006/10/21(土) 19:41:49
みんな優しくて勉強になるなあ

538 :デフォルトの名無しさん:2006/10/21(土) 19:42:42
VBならもっと勉強できるよ

539 :デフォルトの名無しさん:2006/10/21(土) 19:44:15
VBはもうマスターしたので聞くことも勉強することもありませぬ

540 :デフォルトの名無しさん:2006/10/21(土) 19:44:25
>>535
あ、すいません、コントロールパネルのシステムだとそれでできますね・・・
Delphi内で言う上のほうの「Standard」「Additional」「Win32」「Svstem」・・・と一緒っぽいです(´・ω・`)

>>536
それはだめだったのでしたorz

541 :デフォルトの名無しさん:2006/10/21(土) 19:47:55
最後の手段
mouse_eventでマウスポインタをタブのところに持っていって
マウスボタンダウンのイベントを起こす

542 :527:2006/10/21(土) 19:50:35
>>541
とりあえずそうします(´・ω・`)
答えてくれた皆さん有難うございました

543 :541:2006/10/21(土) 19:52:45
あわてんな、もっといい答えがあるはずだって。

544 :デフォルトの名無しさん:2006/10/21(土) 19:59:04
つか全然初心者レベルな悩みじゃないよな

545 :527:2006/10/21(土) 19:59:54
あ・・・なんか間違ってたかもです
>>536さんの言うTCM_SETCURSELはPostMessageは使わないですか・・・?

546 :デフォルトの名無しさん:2006/10/21(土) 20:04:30
>>545
http://homepage2.nifty.com/Mr_XRAY/Halbow/Chap29.html
ここのタブを選択してる部分を参考にしてみて、それでもダメだったら
メッセージ使う方式はダメなのかもしれない

547 :デフォルトの名無しさん:2006/10/21(土) 21:00:11
今TObjectからの派生クラスを作っています。
ですがFree とDestroyの違いが分かりません。
どうか教えてください。
それと変数のFindConponentみたいなのも探しています。
ぜひ教えてください。お願いします。


548 :デフォルトの名無しさん:2006/10/21(土) 21:28:28
TObject(nil).Free; -> おk
TObject(nil).Destroy; -> あぼ〜ん

>変数のFindConponent
日本語でおk

549 :デフォルトの名無しさん:2006/10/21(土) 21:31:26
コピーするアクションのShortCutに Ctrl+C を指定しています。
これは機能しています。で、SecondaryShortCutに Shift+Ctrl を
指定したのですが、機能しません。どうしてなのでしょうか。

550 :デフォルトの名無しさん:2006/10/21(土) 21:34:26
>>549
最小限のプロジェクト組んで試してもダメ?

551 :デフォルトの名無しさん:2006/10/21(土) 21:34:52
>>547
>変数のFindConponent
変数を、変数名の文字列で探したいってことなら無理。
変数が全部同じ型なら配列で管理してインデックスで
アクセスするのはできるだろうけど

552 :488:2006/10/21(土) 21:48:25 ?PLT(11151)
ちょっと聞いてくれ
右クリメニュー出すときpopupメソッドの引数にx,yを送るけど
ホットキーでメニュー出す場合のx,yはカーソル位置だとまずいから
なんとかしたいのだけど、どーすれば右下のアイコンの位置のx,yを取得するんだろ?

553 :デフォルトの名無しさん:2006/10/21(土) 21:49:37
VBなら変数のFindConponentできるのにね

554 :デフォルトの名無しさん:2006/10/21(土) 21:50:27
>>552
ScreenToClientまたはClientToScreenを使う

555 :デフォルトの名無しさん:2006/10/21(土) 21:50:29
>>548
そこまでは分かるのですが次の場合DestroyとFreeをどのように実装すればいいのか分かりません。
TTest = Class(TObject)
private
FID:Integer;
FName:String;
public
Constructor Create;
Destructor Destroy;override;
Procedure Free;
published
Property ID:Integer read FID wirte FID;
Property Name:String read FName write FName;
end;

この場合のFreeとDestroyの実装の違いが良く分かりません。

>>551が書いたみたいに変数名で変数を探したかったのです。
うまく表現できなくてすみません。

>>551
無理なんですね。教えてくださいまして有難うございます。

556 :デフォルトの名無しさん:2006/10/21(土) 21:50:35
VBなら右下のアイコンの位置のx,yも一発で取得できるのに

557 :デフォルトの名無しさん:2006/10/21(土) 21:52:01 ?PLT(11151)
VBとかいーから
邪魔寸菜よ

558 :デフォルトの名無しさん:2006/10/21(土) 21:53:02
>>555
Freeは実装しなくていいよ
親クラスのTObjectに実装されてるからTTestに書かなくていい。
Destroyだけoverrideすればいい。
で、外からTTestを破棄するときはFreeを使う。Destroyを使ってはダメ

559 :デフォルトの名無しさん:2006/10/21(土) 21:53:30 ?PLT(11151)
>>554
よし、ありがと
ちょっとやってみる

560 :デフォルトの名無しさん:2006/10/21(土) 21:56:34
>>558
有難うございました。

561 :デフォルトの名無しさん:2006/10/21(土) 21:58:45
VBならFreeいらないのにね

562 :デフォルトの名無しさん:2006/10/21(土) 21:59:53
VBいらないのにね

563 :デフォルトの名無しさん:2006/10/21(土) 22:10:11
VBならコードを書かないでもテレパシーでコードが自動で生成できるのにね

564 :デフォルトの名無しさん:2006/10/21(土) 22:30:11
>>563
はちょっと笑えたのにね

565 :デフォルトの名無しさん:2006/10/21(土) 22:38:40 ?PLT(11151)
>>554
難しいかも
もう少し詳しくお願いします

566 :デフォルトの名無しさん:2006/10/21(土) 22:46:36
>>565
>>554 は間違ってる。

トレイアイコンの位置取得は無理ぽ。
何でカーソル位置だとまずいのか知らんが、それがダメならアクティブウィンドウの (0, 0) とか、画面の中央とかそんな感じで。

567 :デフォルトの名無しさん:2006/10/21(土) 22:48:34
>>565-566
すまん勘違いしてたみたい
Popup(Screen.Width, Screen.Height)
ってしたら画面の右下にでると思う

568 :デフォルトの名無しさん:2006/10/21(土) 22:48:37
ここのところ、やたら変な空白入れた書き込みするやつがいるが、
これは何かのネタ?

569 :デフォルトの名無しさん:2006/10/21(土) 22:49:39
>>568
例えばどのレス?

570 :デフォルトの名無しさん:2006/10/21(土) 22:54:36 ?PLT(11151)
>>566
キー操作してるときにホットキー使う

マウスが予想してないところにある

変な場所にメニューが出る

(゚д゚)マズー

>>567
やってみたけど微妙な位置…

571 :デフォルトの名無しさん:2006/10/21(土) 22:55:40
>マウスが予想してないところにある


572 :デフォルトの名無しさん:2006/10/21(土) 22:56:47
>>570
てかポップアップメニュー必要なのか?
ホットキー押下で直接アプリ起動じゃダメなんだろうか

573 :デフォルトの名無しさん:2006/10/21(土) 23:01:00 ?PLT(11151)
>>571
ほら、マウス使ってないときってマウスの位置は気にしてないでしょ?
そんで、そのままホットキーで呼び出したときに
GetCursorPosすると変な位置を取得しちゃうじゃん

>>572
アプリに送るコマンドラインがあるからメニューは必須なのよ

574 :デフォルトの名無しさん:2006/10/21(土) 23:03:04
>>573
別にマウスの位置を意識していようといまいとマウスの位置でいいじゃん。
tu-ka,マウスの近くにポップアップしてくれたほうが使いやすいよ。

575 :デフォルトの名無しさん:2006/10/21(土) 23:04:36
>>573
ごちゃごちゃやったら実現できそうだけど…。
簡単にやるなら、ホットキー押したらマウスポインタを
画面中央に移動させて、その位置にポップアップを表示させるのが楽そう

576 :デフォルトの名無しさん:2006/10/21(土) 23:13:52 ?PLT(11151)
>>574の言うことも一理あるな
メニューはキーで選択するってイメージがあったから

>>575
ポインタが勝手に動くのも気持ち悪いな

ここは>>574の案を採用してみることにするよ

577 :デフォルトの名無しさん:2006/10/21(土) 23:29:31
VBならお好みの位置にポップアップできるのにね

578 :デフォルトの名無しさん:2006/10/21(土) 23:30:50
Delphiだってお好みの位置にポップアップできるぞ!!!

579 :デフォルトの名無しさん:2006/10/21(土) 23:32:39
ttp://homepage1.nifty.com/kazubon/progdoc/tclock/taskbarhistory.html
位置はここみりゃわかるだろう

580 :デフォルトの名無しさん:2006/10/21(土) 23:34:50
>>579
SysPagerの中の何番目なのかがわからない

581 :デフォルトの名無しさん:2006/10/21(土) 23:48:46
VBなら何番目かわかるのにね

582 :デフォルトの名無しさん:2006/10/21(土) 23:54:51
VBならSysPagerなんて不要なのにね

583 :デフォルトの名無しさん:2006/10/22(日) 00:33:09
>>580
調べるのはSysPagerじゃなくてその中のToolbarWindow32。
自分のアイコンがツールバーの何番目のボタンなのか探す方法は
TrayExpandのソース転がってるからそれ見たらわかる。

まぁでもいろいろめんどいといえばめんどいからマウスの位置でいーじゃねーかと思う。

584 :デフォルトの名無しさん:2006/10/22(日) 03:24:38
>>494
遅レスだけど、AssignよりもBitBltの方が速くないですか?

585 :デフォルトの名無しさん:2006/10/22(日) 04:43:00
いや、VBのが速いよ。

586 :デフォルトの名無しさん:2006/10/22(日) 04:44:35
は?HSPの方が何倍も速いし

587 :デフォルトの名無しさん:2006/10/22(日) 07:09:34
bitmapをエンコードする関数を説明しているサイトがあったんだけど、
RandSeed := キーとなる数;
としておいて、
そのあと、一つ一つのピクセルにRandom(256)をXorしてエンコードしてあるんですよ。

ところが、Randomって、ヘルプに
>Random 関数は,各言語やバージョンにより実装方法が異なることがあります。
>ある RandSeed が将来に渡って同一の乱数列を生成する保証はありません。
>暗号化などの目的のために Random 関数を使うことはお勧めできません。

って書いてあるわけですよ。
これって、どういうことですかね?一度コンパイルが済んでさえしまえば、OSや環境なんかが変わってもちゃんとデコードできるんですかね?


588 :デフォルトの名無しさん:2006/10/22(日) 07:37:38
現在のRTLの実装なら期待通りに動作するはず。
大した手間じゃないから乱数生成部分も自前で組んだ方が確実だけど。

589 :デフォルトの名無しさん:2006/10/22(日) 08:53:08
>乱数生成部分も自前で

うーん…
テーブルにしようかなって思ってたんだけど(速いから)、テーブル以外に方法あります?

590 :デフォルトの名無しさん:2006/10/22(日) 09:56:32
暗号化コンポならちゃんと探せばあるだろ
ttp://www.geocities.jp/norg1964/delphianworld/data/mi/blowfish003.lzh

591 :デフォルトの名無しさん:2006/10/22(日) 11:45:05
>>590
うんにゃ、自分で作りたい。試行錯誤も楽しいじゃまいか。
テーブルにしたけど、1個ずつRandomでxorするようにバラけない。
なんでだろうかと、研究中さ。

592 :デフォルトの名無しさん:2006/10/22(日) 14:14:07
研究 → 思っていたより面倒 → その辺のフリーのコンポで間に合わせる
ふ、オレ様のいつものパターンさ。

593 :デフォルトの名無しさん:2006/10/22(日) 14:15:55
研究 → 思っていたより面倒 → その辺のフリーのコンポが見つからない → Cのコードをマンドクセ言いながら移植する
ふ、オレ様のいつものパターンさ。

594 :デフォルトの名無しさん:2006/10/22(日) 14:51:21
ピタッとくるフリーのコンポってないこと多いね…
シェアだといいのがあるけど、いろいろ機能ついて重かったり。
暗号化で思い出したけど、Waveを暗号化してファイルに保存する方法知ってる人いる?
文字列やBitmapなんかはよく落ちてるけど、以前「バイナリ」でどうにかならないか研究してて頓挫したままだったの思い出した。
(´・ω・`)

595 :デフォルトの名無しさん:2006/10/22(日) 15:14:51
既存の暗号化アルゴリズムを使うのならデータの内容は関係ないと思うが

596 :デフォルトの名無しさん:2006/10/22(日) 15:46:17
俺もバイナリ苦手だ(´・ω・`)
普通の文字列を加工するならTrimなんかの関数つかっていろいろ出来るようになったけど、
バイナリって聞いただけで尻ごみしてしまう。
だからこの前の方のレスで「上位?ビット」とか「マスク」とかいってた人はすごいと思うよ。

597 :デフォルトの名無しさん:2006/10/22(日) 16:01:17
>>584
BitBlt はビットマップ自体への読み書きが発生するじゃん。

598 :デフォルトの名無しさん:2006/10/22(日) 16:07:36
おれもバイナリ苦手だポ(´・ω・`)

599 :594:2006/10/22(日) 16:12:56
いや、バイナリっていうか、Waveを暗号化できれば別にバイナリに拘るわけじゃないけど。

でも、バイナリなんだろうねぇ(´・ω・`)
memStreamかなんだかをいじろうとした記憶がうら覚えである。

600 :デフォルトの名無しさん:2006/10/22(日) 16:26:32
暗号化って言ったらバイナリっていうかビット単位でやるもんだとばかり
思っていたんだが。なので、当然 BMP だろうが txt だろうが wav
だろうが exe だろうが関係ないハズなんだけど…

601 :デフォルトの名無しさん:2006/10/22(日) 16:30:18
>>600
それは漏れもオモタ
?が二つ位ついた

602 :デフォルトの名無しさん:2006/10/22(日) 16:41:23
wavファイルを暗号化してzipファイルのように見せかけるプログラム

RenameFile(wavファイルパス, ChangeFileExt(wavファイルパス, '.zip'));

これでいいんじゃね?

603 :デフォルトの名無しさん:2006/10/22(日) 16:47:43
>>602
んなもん偽装鶴でいくね?

604 :デフォルトの名無しさん:2006/10/22(日) 16:53:27
つか暗号化しないといけないwavってなんなんだ!?
と逆ギレ

605 :デフォルトの名無しさん:2006/10/22(日) 17:06:13
そのへんの正体もわかってないのが素人

606 :デフォルトの名無しさん:2006/10/22(日) 17:09:33
3へぇ

607 :596だけど:2006/10/22(日) 17:30:02
文字列の暗号化が落ちてるってんでググッたらこんなのがあった。
http://lupin.client.jp/delphi/index.html#11

で、この関数をコピペして、Memoに
for i:=0 to 20 do memo1.Lines.Add('セーブする文字列' + IntToStr(i));
と文字列をAddし、>>469にかいてあるやりかたで最後の改行をはずす。

この文字列でEncodeを実行→ Memo1.Lines.SaveToFile('Test.dat'); としてセーブ。

で、このTest.datを読み込んで、デコードすると>>435のいうとおり、

セーブする文字列20

みたいに20のあとに残滓みたに変な情報がくっついてる。
このよけいな情報の正体はなんなの?
エンコードしたものをSaveToFileで保存するのがまちがってるのか!?
バイナリか!?

608 :596だけど:2006/10/22(日) 17:32:36
>セーブする文字列20

セーブする文字列20・・ ね。

この「・・」 が何モンだろう?


609 :デフォルトの名無しさん:2006/10/22(日) 17:39:24
日帝残滓です

610 :デフォルトの名無しさん:2006/10/22(日) 17:40:20
黙ってtwofishかAES使っとけ。悪いことはいわん。

611 :デフォルトの名無しさん:2006/10/22(日) 17:40:39
急にスレが伸びてるかと思って覗いてみればやたらとレベル低下してないか?
ここ数日で一体何があったんだ。

612 :デフォルトの名無しさん:2006/10/22(日) 17:41:49
でました選民思考

613 :デフォルトの名無しさん:2006/10/22(日) 17:42:19
このスレッドはBorland(ボーランド)のDelphi(デルファイ)について、
他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphi(の布教と初心者の救済をお願いします。


614 :デフォルトの名無しさん:2006/10/22(日) 17:42:50
このスレッドはBorland(ボーランド)のDelphi(デルファイ)について、
他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphi(の布教と初心者の救済をお願いします。


615 :デフォルトの名無しさん:2006/10/22(日) 17:45:51
このスレッドはBorland(ボーランド)のDelphi(デルファイ)について、
他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphi(の布教と初心者の救済をお願いします。

616 :デフォルトの名無しさん:2006/10/22(日) 17:46:52
>やたらとレベル低下してないか?

へぇ?

617 :デフォルトの名無しさん:2006/10/22(日) 17:49:11
VBなら高レベルな質問と解答ばかりなのにね

618 :デフォルトの名無しさん:2006/10/22(日) 17:49:30
このスレッドはBorland(ボーランド)のDelphi(デルファイ)について、
他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphi(の布教と初心者の救済をお願いします。

619 :デフォルトの名無しさん:2006/10/22(日) 17:49:41
>>611
自称できる人登場!!!

620 :デフォルトの名無しさん:2006/10/22(日) 17:50:19
>>611
氏ね、屑!!!!

621 :デフォルトの名無しさん:2006/10/22(日) 17:50:18
みんな安心しろ
>>611が光臨した

どんな答えもサクッと書いてくれるぞ

622 :デフォルトの名無しさん:2006/10/22(日) 17:51:02
このスレッドはBorland(ボーランド)のDelphi(デルファイ)について、
他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphi(の布教と初心者の救済をお願いします。

623 :デフォルトの名無しさん:2006/10/22(日) 17:51:53
UNICODE サポートはいつできるんですかね?
人名漢字くらいサポートしたいんですが,Delphi ではできないからこの時点で使えません。


624 :デフォルトの名無しさん:2006/10/22(日) 17:52:16
できますが何か?

625 :デフォルトの名無しさん:2006/10/22(日) 17:52:59
>>607
>このTest.datを読み込んで
どうやって読み込んでるの?
読み込んだときに末尾に何か付いてんじゃない?

626 :デフォルトの名無しさん:2006/10/22(日) 17:55:02
黙ってtwofishかAES使っとけ。悪いことはいわん。


627 :デフォルトの名無しさん:2006/10/22(日) 17:56:33
>>611
週末だからかな… 明日から元に戻るよきっと。ってオレも参加してたけどナ

628 :デフォルトの名無しさん:2006/10/22(日) 17:58:05
>>627

629 :デフォルトの名無しさん:2006/10/22(日) 17:59:35
>>627
オマイも天才の仲間か?それならさっさと解決してやれよw

630 :デフォルトの名無しさん:2006/10/22(日) 18:01:14
わざわざ初心者版にきて初心者を見下す方って香ばしいですね

631 :デフォルトの名無しさん:2006/10/22(日) 18:08:08
VBなら週末でもさわやかなのにね

632 :デフォルトの名無しさん:2006/10/22(日) 18:09:34
>>630
ですよねー

633 :デフォルトの名無しさん:2006/10/22(日) 18:11:31
>>631
の人(達?)って、なぜかいつもちょうどいいタイミングで書いてる
みたいなのですが、常に監視しているのでしょうか?

634 :デフォルトの名無しさん:2006/10/22(日) 18:12:14
VBなら監視なんてされないのにね

635 :デフォルトの名無しさん:2006/10/22(日) 18:19:21
>>624
2004年に人名漢字が拡張されて,SJIS に無い文字が利用できるようになりました。
これらの文字を扱うためには UNICODE をサポートしなければいけません。
まずこの点で標準の VCL は,官公庁やその周辺の案件では使えなくなります。

元々,住所等を表記する場合に第二水準では足りないことを解決する
ことが JIS の改訂の目標でした。その結果,住基ネットデータを扱うには,UNICODE が
必須です。

業務アプリでは Delphi/VCL は使えないのです。



636 :デフォルトの名無しさん:2006/10/22(日) 18:20:37
>>223
>Delphi ではできない
これが間違ってる。
正しくは
 VCL は使えない。
VCL使わなけりゃおk。

637 :デフォルトの名無しさん:2006/10/22(日) 18:22:10
TNTでも使ってろよ。

638 :デフォルトの名無しさん:2006/10/22(日) 18:24:13
VBなら業務アプリでも使えるのね

639 :デフォルトの名無しさん:2006/10/22(日) 18:25:19
VCL.NETでいいじゃん。

640 :596だけど:2006/10/22(日) 18:36:08
>>625
Memo.Lines.LoadFromFile('Test.dat');
とやったんだけど…

荒れてるね、今日

641 :デフォルトの名無しさん:2006/10/22(日) 18:47:47
>>640
デバッグの仕方知ってる?ステップ実行しながら
文字データを監視して、最後にごみが付く瞬間を
探したほうが早いよ

642 :デフォルトの名無しさん:2006/10/22(日) 19:21:58
>>638
書いてて恥ずかしくないのか?


643 :デフォルトの名無しさん:2006/10/22(日) 19:22:17
>>640
暗号化した文字列をMemo.Lines.Textに代入すると暗号化されていない
改行が末尾につく。それで復号化すると暗号化されていない#13#10と
xorを取るから変なデータが2バイト付くことになる。
何でもTStringListで済まそうとするな。頭を使えよ。
暗号化した文字列をそのままTFileStreamでも使って書き出せばOKなのにね。

644 :ななしへたぐらま ◆XcB18Bks.Y :2006/10/22(日) 19:23:52
>>424
別の解 Memo1.Text := TrimRight(Memo1.Text)
>>475
×です.Delete手続きの1番目のパラメータは変数そのものでなければなりません.


645 :ななしへたぐらま ◆XcB18Bks.Y :2006/10/22(日) 19:29:42
>>584
>>494の『Copy on write』がキーワードです.
複製した時点では見た目上複製したことにしているが内部的には同じものを使いつづけて,
どちらかの中身が変わるときに本当に複製する仕組みのことです.

ここではわかりやすいように文字列を例にします.
たとえばこんなコンソールプログラムがあったとします.
var
 s1, s2: string;
begin
 s1 := 'Delphi';
 s2 := s1;
 PChar(s1)^ := 'H'; //※1
 writeln(s1);
 writeln(s2);
 readln;
end.

※1はs1が指している文字列の1バイト目を直接書き換えていますが
実行すると両方とも"Helphi"になったはずです.
これはs1, s2の両方が内部で同じデータを指しているということを意味しています.

次に※1を以下のコードに差し替えたらどうなるでしょうか.
 s1 := s1 + ' 6';

今度はs1が"Delphi 6",s2が"Delphi"になりました.
s1 := s2の時点でs1とs2は同じデータを指していたはずなのに今度は片方しか変わりませんでした.
s1の内容が変わるにあたって内部で複製が行われたというわけです.

以上,文字列の例を出しましたがTBitmapでもやっていることは基本的に同じです.


646 :デフォルトの名無しさん:2006/10/22(日) 19:38:14
>>645
なにか偉そうな説明だが、そのサンプルちゃんと動くか自分で確かめてからにしろよ。

647 :デフォルトの名無しさん:2006/10/22(日) 19:47:17
>>596=>>424=昨日の工房だろ。

648 :デフォルトの名無しさん:2006/10/22(日) 19:49:08
>>646
なんか、動かねーぞボケっていってるようなレスだが、動いたぞ。

649 :デフォルトの名無しさん:2006/10/22(日) 19:54:49
>>645
これ、コンソールプログラムじゃないと、
Hを代入するところでぬるぽなんだけど、なぜなんかね。

650 :デフォルトの名無しさん:2006/10/22(日) 19:58:02
VBならコンソールプログラムじゃなくてもぬるぽじゃないのにね。

651 :デフォルトの名無しさん:2006/10/22(日) 20:02:03
>>649
'Delphi'が定数として扱われて書き換え不可能な領域に配置されるからでは?。
ふつうの操作だとCopy on writeでうまくいくがポインタを取り出して
書き換えだとあぼーん。

652 :デフォルトの名無しさん:2006/10/22(日) 20:03:00
>>651
コンソールアプリだと平気なのは何故?

653 :デフォルトの名無しさん:2006/10/22(日) 20:08:02
あれ、もしかして。

ヒープに文字列変数取った場合は、メモリ直接書き換え可能とかそんなことなんか。
で、スタックだとダメだとか。

結構興味深いなこれ。

654 :デフォルトの名無しさん:2006/10/22(日) 20:12:21
文字列変数がひとつの場合はいけるな

655 :654:2006/10/22(日) 20:14:30
ごめんやっぱだめだた

656 :デフォルトの名無しさん:2006/10/22(日) 20:16:44
>>649
 s1 := 'Delphi';
 s2 := s1;
 pChar(@s1[1])^ := 'H'; //※2
// Char(PChar(s1)^) := 'H'; //※1
 MessageBox(Handle, pChar(s1), 'てすと1', MB_OK);
 MessageBox(Handle, pChar(s2), 'てすと2', MB_OK);

にしたら、とりあえず動いたよ。
ただ、s1は"Helphi"で、s2は"Delphi"と出てくるっぽ。

657 :デフォルトの名無しさん:2006/10/22(日) 20:24:12
s1 := 〜 を
SetLength(s1, 3);
s1[1] := 'A';
s1[2] := 'B';
s1[3] := 'C';
とかにすると動く。

つまり、
s1 := 'Delphi'; とすると、
ローカル変数の場合は関数内で文字列の書き換えを行っていないので、読み込み専用の定数領域に配置された文字列を直接参照しているので書き換え不可能。
グローバル変数の場合は文字列の書き換えを行わない保証が無いのでちゃんとコピーされるってことかね?

658 :デフォルトの名無しさん:2006/10/22(日) 20:34:38
なんか、最初の話題とは全然関係なくなっている上に
全然、超初心者用のネタじゃないけど
面白いな

659 :デフォルトの名無しさん:2006/10/22(日) 20:41:19
>>643
別にそんなツンデレ口調で教えなくても・・・

660 :ななしへたぐらま ◆XcB18Bks.Y :2006/10/22(日) 21:04:02
意外な方向に話が展開してしまいましたね.
もちろんコンソールでの動作チェックは一応したのですが.

"Copy on write"の意味は理解したぜ!っていうレスがないところを見ると
失敗だったかなぁ,すいません(´・ω・`)


661 :デフォルトの名無しさん:2006/10/22(日) 21:07:56
"Copy on write"の意味は理解したぜ!

662 :596だけど:2006/10/22(日) 21:11:51
すんません、メシ買いにいかされてて、、

>複製した時点では見た目上複製したことにしているが内部的には同じものを使いつづけて,
>どちらかの中身が変わるときに本当に複製する仕組みのことです.

へぇ〜


663 :デフォルトの名無しさん:2006/10/22(日) 21:12:01
Copy and Paste は理解しているぜ!!

664 :昨日の高房:2006/10/22(日) 21:17:53
>>647
違うけど、なんで?

>暗号化した文字列をそのままTFileStreamでも使って書き出せばOKなのにね。

これをヒントに考えようと思ってます。
ふぅ〜しんど。(部活で)
ちょっと難しいや。

665 :デフォルトの名無しさん:2006/10/22(日) 21:25:46
>>664
なんで596宛のレスなのにお前が考えるんだよw

666 :デフォルトの名無しさん:2006/10/22(日) 21:28:18
最初の質問に戻るけど、なぜ bitmap を黒で塗りつぶしたいかが問題。
次に、なにかを書き込むための初期化だとしたら、Assign() なんか無意味。
すなおに FillRect() したほうがいい。

667 :デフォルトの名無しさん:2006/10/22(日) 21:31:50
scanlineで黒に埋めるだけじゃだめなん?

668 :デフォルトの名無しさん:2006/10/22(日) 21:48:02
これは実用的かどうかはともかく幾分に興味深い検証だ。興味深い。

669 :デフォルトの名無しさん:2006/10/22(日) 21:54:16
「幾分に」の使い方が変

670 :488:2006/10/22(日) 22:59:19 ?PLT(11151)
昨日いろいろ教えてくれた先生ありがとう
思っていたようなものが一応完成したよ…フヒ

671 :デフォルトの名無しさん:2006/10/22(日) 23:01:34
おめで10

672 :デフォルトの名無しさん:2006/10/22(日) 23:06:49
>>670
ようし次はお前先生役な

673 :488:2006/10/22(日) 23:17:46 ?PLT(11151)
今更だが起動したいアプリを常駐するように直した方がはやかったかも…テヘ

674 :デフォルトの名無しさん:2006/10/23(月) 03:43:42
調べてもわからなかったので、教えてください。

TListViewでViewStyleをvsReportにして
エクスプローラーの詳細表示を再現しようとしてるのですが
デフォルトではドラッグで列移動ができないようになっております。
これをエクスプローラーのようにドラッグで列移動できるようにしたり
右クリックから列の表示非表示を選択できるようにしたいのですが
これを実現するのは簡単でしょうか?難しいでしょうか?


675 :デフォルトの名無しさん:2006/10/23(月) 04:00:54
>>674
列移動するにはFullDragプロパティをTrueにする。
右クリックから列の表示非表示は他の人頼んだ。

676 :デフォルトの名無しさん:2006/10/23(月) 09:19:17
>>674
フォームにポップアップメニューを予め用意しておく
ListViewのonColumnRightClick内でListviewのポップアップメニューをマージ
列のカラム分だけ動的にサブメニューを作成する
表示しているメニューにチェックを付ける
アイテムが選択されたらカラム再表示処理を行い
チェックが付いているアイテムだけを表示する

677 :デフォルトの名無しさん:2006/10/23(月) 10:11:43
ウチにDelphi4があるんですけど、これで作ったものはWindowsVistaでも問題なくうごきますか?

678 :デフォルトの名無しさん:2006/10/23(月) 10:13:53
1でも2でも3でも4でも5でも6でも7でも動きます

679 :デフォルトの名無しさん:2006/10/23(月) 10:29:52
問題なくうごく保証はありません。

680 :デフォルトの名無しさん:2006/10/23(月) 10:48:45
>>678->>679
どっちが本当ですか?

681 :デフォルトの名無しさん:2006/10/23(月) 10:49:52
Vistaは今までで一番糞なOSだと言われている。

682 :デフォルトの名無しさん:2006/10/23(月) 10:54:13
>>662
>すんません、メシ買いにいかされてて、、

そのくらい先輩をぶん殴って「てめえの飯くらいてめえで作れ。ヴォケがっ!」とぶち切れるくらいの
ド迫力を見せて、即座にレスするくらいの気力を見せ(ry

683 :デフォルトの名無しさん:2006/10/23(月) 10:55:42
>>680
APIを.netFrameworkに変更するのはお流れになったので
WinAPI32がそのまま残ってる以上、動くとは思うが
Vistaはまだリリースされてないので本当のことは誰にも分からない
ついでに言えばこの問題はDelphiに限らずVCでもVBでも有り得る

684 :デフォルトの名無しさん:2006/10/23(月) 11:00:10
>Vistaはまだリリースされてないので本当のことは誰にも分からない

出ても無いのにわかりませんよね。
じゃ、TurboDelphi買うとしても様子見にしといたほうがいいですかね?

685 :デフォルトの名無しさん:2006/10/23(月) 11:03:44
基本的にはVistaでも問題なく動くから本格的に始めても大丈夫じゃないのかな

686 :デフォルトの名無しさん:2006/10/23(月) 11:07:02
そもそもDel4のVCLは自前で手直ししないとXpですらまともに動かんが

687 :デフォルトの名無しさん:2006/10/23(月) 11:10:35
http://www.installationexcellence.com/articles/VistaWithDelphi/Index.html
によると99%大丈夫みたいなことが書いてある。
もちろん新しい機能を使うためにはその記事にあるような改造が必要。

688 :デフォルトの名無しさん:2006/10/23(月) 11:17:03
>本格的に始めても大丈夫じゃないのかな

早いめにやったほうがいいかなーって思ってるんですよ。
新機能とかあるだろうし、やっぱ買うべきかなと。
でも製造元が怪しくなってるって噂も…

だから無料でできるなら家の使おうかとも思ったわけです。

689 :デフォルトの名無しさん:2006/10/23(月) 11:17:54
>>686
おはよう標準厨。まだいたのかよw

690 :デフォルトの名無しさん:2006/10/23(月) 11:22:47
>自前で手直ししないとXpですらまともに動かんが

ちょっとコワイ気もしますが、はじめてみますよ。

691 :デフォルトの名無しさん:2006/10/23(月) 11:25:26
>>690
超初心者スレで知ったかぶりするような奴は相手にしないのが吉だよ

692 :デフォルトの名無しさん:2006/10/23(月) 11:39:33
Delphi5で作ったアプリを試しにVista RC1上で動かしてみた。
・ADOでSQL Server2000に接続
・DevExpressとかTMSなど使いまくり

そんなにさわりまくってないけど、結果は、
・通常動作はほとんど問題なし。
・Application.MessageBoxの引数ICON_EXCLAMATION系が効かず、アイコンのないメッセージボックスが
表示される。メッセージボックス自体の動作には問題はない。これは>>687のリンクで説明されているように、
TaskDialogを使えばOK。
・TPopupMenuのMenuItemのDefaultプロパティをTrueにしてそのメニューを太字で表示しようとすると、
そのメニューが見えなくなる。Defaultプロパティを使用しないことで回避するしかない。

あまり凝ったことをしなければ、かつ、動作検証をきちんとすれば大きな問題にはならないでしょう。

693 :デフォルトの名無しさん:2006/10/23(月) 12:44:14
674で質問した者です。

>>675
>列移動するにはFullDragプロパティをTrueにする。
素早いレスを頂き、ありがとうございます。
こんなに簡単にできるとは驚きです。
あやうく車輪の再発明をするところでした・・・。

>>676
詳しい解説ありがとうございます。
私はDelphi初心者なので、すぐに実装というわけにはいきませんが
大体どうすればいいかという方向性は見えてきました。

また、わからない事があったらよろしくお願いします。

694 :デフォルトの名無しさん:2006/10/23(月) 19:13:02
VCL 特有の見えないApplicationトップレベルウィンドウのせいで Vista 対応も大変そうだな・・

695 :デフォルトの名無しさん:2006/10/23(月) 19:22:00
Delphi製のエディタ(TeraPadとか)で挿入、上書とか判定してありますが、あれはどこで調べてるんですか?

696 :デフォルトの名無しさん:2006/10/23(月) 19:31:22
>>695
Insert キーのトグル状態

697 :デフォルトの名無しさん:2006/10/23(月) 19:47:52
>>696
bool型でフラグでもつくって、キーで判別か…
TMemoとかにプロパティはないんですね。あんがと。

698 :デフォルトの名無しさん:2006/10/23(月) 20:15:50
フリーのTurboDelphiを使っています。

入力した文字列をMySQLにインサートしていくデータベースアプリケーションを作ってみたいのですが、何をどうすればいいのか、取っ掛かりすら分かりません。

参考になるソース、サイトを教えていただけないでしょうか。

699 :デフォルトの名無しさん:2006/10/23(月) 21:38:12

Bounds Checker for Delphi って最新(最終?)バージョンって
何番でしょう?

700 :699:2006/10/23(月) 21:39:08
ちなみに、所有しているDelphiは7です。

701 :デフォルトの名無しさん:2006/10/24(火) 02:55:46
>>698
MySQL のバージョンは何ですか?

702 :デフォルトの名無しさん:2006/10/24(火) 03:04:59
>>699
よく知らんが、7.0 以降はVS 専用になっているような気が。
バージョン6(たぶん6.5)じゃね。

703 :デフォルトの名無しさん:2006/10/24(火) 07:35:20
>>698
Delphi でMySQL 5.0 を試す (1)
http://bousyo.blog45.fc2.com/blog-entry-89.html
Delphi でMySQL 5.0 を試す (2)
http://bousyo.blog45.fc2.com/blog-entry-90.html

(3)は工事中。以下を使う予定。

ADOConnection コンポーネント
ADOQuery コンポーネント
DataSource コンポーネント
DBNavigator コンポーネント
DBEdit コンポーネント

704 :デフォルトの名無しさん:2006/10/24(火) 08:22:42
>>698
TurboDelphiにはDemos\Adoってディレクトリないん?
Demos以下にはサンプルがいっぱいある

705 :デフォルトの名無しさん:2006/10/24(火) 08:48:05
Turbo は知らんがProfessional には無いな。

706 :デフォルトの名無しさん:2006/10/24(火) 08:58:20
釣りでしょ。
Delphi MySQL でぐぐっただけで 9,150,000もヒットするし。

707 :デフォルトの名無しさん:2006/10/24(火) 09:03:07
>>705
漏れEnterpriseだ。
でもインスコする時選択したような気がする

>>706
初心者スレだしいいんじゃね?
>>704はサンプルいっぱいあるから参考にしてみたらって意味だった。

708 :デフォルトの名無しさん:2006/10/24(火) 09:14:46
TTrackBarとかにフォーカス移されたくないので、
OnEnterにFocusControl(nil);とするのはアリ?

709 :デフォルトの名無しさん:2006/10/24(火) 09:24:24
TabStopプロパティをFalseにするだけでいいのでは

710 :デフォルトの名無しさん:2006/10/24(火) 09:26:25
見せるだけならenabled := falseでいいんじゃない?

711 :デフォルトの名無しさん:2006/10/24(火) 09:29:39
それだとマウスでクリックしたときにフォーカスが移ってしまうので。。。

MPCやfoobar2000のシークバーのように、キーボードからは受け付けず、マウスで操作するだけにしたいのです
マウスが押された・離された時に特定のイベントを発生させるのは難しそうですが

712 :デフォルトの名無しさん:2006/10/24(火) 09:33:34
それと、
TrackBarが ------------ロ----- という感じとして、
 - のところをクリックしたら、PageSize分そっちの方向に ロ を動かすのではなく、
クリックした場所に ロ を移動するというのも実現させたいんですが、TTrackBarクラスをうまく改造するしかないですかね・・・

713 :デフォルトの名無しさん:2006/10/24(火) 09:36:14
OpenJaneからだがこれは?

//メインウィンドウからフォーカスを奪わないように設定
procedure TPopUpTextView.CreateWnd;
begin
inherited CreateWnd;
Windows.SetParent(Handle, 0);
CallWindowProc(DefWndProc, Handle, WM_SETFOCUS, 0, 0);
end;


714 :デフォルトの名無しさん:2006/10/24(火) 09:49:04
>マウスが押された・離された時に特定のイベントを発生させるのは難しそうですが

蝶簡単
TTrackBarはonMouseUp、onMouseDownイベントを持つ
TControlからの継承なのでTTrackBarExとかって名前で独自コンポーネント作って
その中でonMouseDownとonMouseUpイベントを定義して上げればよい


715 :デフォルトの名無しさん:2006/10/24(火) 09:49:27
>>712
漏れならコンポーネント作っちゃうなぁ

716 :698:2006/10/24(火) 10:14:54
MySQLは5.0を使用してます。

TTableを使って、ODBC経由で接続しようとしていたのですが、
ODBCに入力しているユーザー名が認識されずに困っていました。

SQLconnectionとQueeryだとうまくいくようなので、これでやってみます。
ありがとうございました。

717 :デフォルトの名無しさん:2006/10/24(火) 12:00:21
ある文字列のなかに0〜9以外の数字がある場合の判定方法ですが、
Pos関数で0があるか? ってかんじで0から9までやる方法しか思いつきません。

スマートなやりかたおしえてください!

718 :デフォルトの名無しさん:2006/10/24(火) 12:08:57
0〜9以外の数字ってあんのかよw
16進数か?

719 :デフォルトの名無しさん:2006/10/24(火) 12:12:06
>ある文字列のなかに0〜9以外の数字が

ある文字列のなかに0〜9以外の文字が

訂正します。すんません。

720 :デフォルトの名無しさん:2006/10/24(火) 12:19:58
>>717
自分でスキャン。
半角数字以外ならLeadBytes, TrailBytesの判定もいらないのでこれだけ。

Result := False;
for i := 1 to Length(S) do
begin
 Result := not (S[i] in [0..9]);
 if Result then
  Break;
end;

721 :デフォルトの名無しさん:2006/10/24(火) 12:20:14
for i:=1 to Length(s) do begin
if not(s[i] in ['0'..'9']) then
・・・・


722 :デフォルトの名無しさん:2006/10/24(火) 12:20:45
被った

723 :デフォルトの名無しさん:2006/10/24(火) 12:21:13
var
 I: Integer;
begin
 for I := 1 to Length(S) do
  if not (S[I] in ['0'..'9']) then
  begin
   Result := False;
   Exit;
  end;
 Result := True;

724 :デフォルトの名無しさん:2006/10/24(火) 12:25:25
ExitとBreak、どっちがいいですかね?関数をぬけるExitのほうが速いですか?

725 :デフォルトの名無しさん:2006/10/24(火) 12:25:26
被ったお詫びに

p: PChar;

while p^ <> #0 do begin
 if not(p^ in ['0'..'9']) then
・・・・・・・・・
 Inc(p);
end;

726 :デフォルトの名無しさん:2006/10/24(火) 12:26:55
>>724
ループをbreakした後に何も処理がないならどっちでも同じ

727 :724:2006/10/24(火) 12:27:54
みなさん、ありがと…

728 :デフォルトの名無しさん:2006/10/24(火) 12:35:05
http://www.codeproject.com/cs/media/Motion_Detection.asp
これのDelphi版ってないですかね?

729 :デフォルトの名無しさん:2006/10/24(火) 12:39:38
>>728
ソース付いてるんだから自分でDelphiに移植するか、
VCとかでDLLにして呼べばいいんじゃない?

730 :デフォルトの名無しさん:2006/10/24(火) 12:53:22
StrToIntで例外キャッチするとか

731 :デフォルトの名無しさん:2006/10/24(火) 13:14:58
TryStrToInt

732 :デフォルトの名無しさん:2006/10/24(火) 13:27:32
桁がめちゃくちゃあったらこまらね?

733 :デフォルトの名無しさん:2006/10/24(火) 13:31:31
それもあるし、+とか-とかついててもエラーにならないから、717の条件には合わないな。

734 :デフォルトの名無しさん:2006/10/24(火) 13:47:10
例外キャッチでもいいし、TryStrToIntでもいいし、正規表現でもいい。
用途にあったのをどうぞ。

735 :デフォルトの名無しさん:2006/10/24(火) 15:01:05
Delphi6のHotkeyコンポにOnChangeイベントある?
5にはない。7にはある。6がどうなのかしりたい。

736 :デフォルトの名無しさん:2006/10/24(火) 15:08:29
5でTHotKeyの継承クラス調べてみろ
TCustomHotKeyからの派生でなければない
そうでないから隠蔽してるだけ

737 :デフォルトの名無しさん:2006/10/24(火) 15:14:13
>>735
D6
THotKey イベント
TWinControl からの継承
OnEnter
OnExit

TControl からの継承
OnMouseDown
OnMouseMove
OnMouseUp

738 :デフォルトの名無しさん:2006/10/24(火) 15:18:39
TWinControlからの継承ってことは6もonChangeイベントはないんだな

739 :デフォルトの名無しさん:2006/10/24(火) 15:28:20
>>737
6にも無いみたいですね。ありがと。

>>736
5について調べると6のことがわかるんですか?


740 :デフォルトの名無しさん:2006/10/24(火) 21:33:09
THotKey ってウィンドウズのコモンコントロールのラッパですね。
OnChange って、何が変化したら起こってほしいの? そんなメッセージはないけど。

741 :デフォルトの名無しさん:2006/10/24(火) 22:11:22
EN_CHANGEがとんでくるよ

742 :デフォルトの名無しさん:2006/10/24(火) 22:19:21
>>719 これが多分最もスマート
function f(s:string):boolean;
var
E,I:integer;
begin
val(S,I,E);
result:=E=0;
end;

743 :デフォルトの名無しさん:2006/10/24(火) 23:14:23
スマートとか以前に要求を満たしてないじゃん

744 :デフォルトの名無しさん:2006/10/25(水) 00:22:23
質問です。超初心者です。
プロシージャのスコープ?についてよく分からないのですが、
『implementation以下にのみ宣言したシンプルな関数(以下、A)から、
VCLの機能を使用している関数(以下、B)を呼び出し、その機能を使用すること』
(例えば単純計算用のAから、チェックボックスをオンにするBを呼び出す等)は可能ですか?

AからBを呼ぼうとすると、VCL関連の命令の箇所で「未定義の識別子」と言われてしまいます。
一応、Aもinterface部に宣言すれば問題はないのですが、
単純に、
「VCLを使う関数にアクセスする関数を作った場合は、
その都度interface部にも宣言しなければいけないのか」が知りたいです。

的外れな質問でしたらすみません。よろしくお願いします。


745 :デフォルトの名無しさん:2006/10/25(水) 00:29:08
言っていることがめちゃくちゃなので、まずなんかの入門サイトの最初から読みあされ

746 :デフォルトの名無しさん:2006/10/25(水) 00:37:29
>>744
implementationに実装の記述だけしかない関数は使用する関数より上に記述されて
いなければならない。
interfaceに宣言した関数はユニット内のどの位置からも見えるし他のユニットからも
使用できる。
VCLは関数のスコープとは関係ない。

747 :デフォルトの名無しさん:2006/10/25(水) 07:53:49
interface内にも上下はあるけどね、一応

748 :デフォルトの名無しさん:2006/10/25(水) 09:21:18
1. そのシンプルな関数Aを、チェックボックスをオンにするメソッドB
と同じクラスのメソッドにするか、
2. シンプルな関数Aに、チェックボックスをオンにするメソッドB
を呼び出すためのインスタンスを渡してそれ経由でメソッド呼び出しするか、
3. フォームが1つしかないなら、フォームのインスタンスを格納している
変数を使って、メソッド呼び出しをする。

749 :デフォルトの名無しさん:2006/10/25(水) 09:37:12
Bを先に宣言すればいいだけじゃん

750 :デフォルトの名無しさん:2006/10/25(水) 23:29:46
Delphiどころかプログラム自体始めたばかりのもんですが…

自作のクラスをCreateして、Freeするっていうのはわかった、
つぎに「継承」ってのをやってやろうとして行き詰まっています。

TMyClass=Class(TBitmap) ←こうすればTBitmapを継承できるのはわかった、

問題は、継承元(ここではTBitmap)のprocedureのふるまい等です。すっかりハマってしまいました。
で、procedure naniyara; override; ←こうすれば手続を「まったく書き直し」できると考えているのですが、(違います?)

仮に、継承元の手続をやらせた後に、自作クラスの手続を(付け足しで)やらせたいときは、恐らく名前からしてinheritedを使う気がするんですが、
例えばTBitmapのCreateをやらせた後で、自作のCreateを(付け足しで)やらせたいときは

TMyClass=Class(TBitmap)
private
constructor Create;
desutructor Destroy; override; ←(Destructorには無条件でoverrideが必要らしい…)
end;
実装部で
procedure TMyClass.Create;
begin
 inherited
 −自分がやりたい処理−
end;

でいいんでしょうか?Createのうしろにoverrideが必要でしょうか?継承した手続の上書き関係が
まったく曖昧でわかりません。


751 :デフォルトの名無しさん:2006/10/26(木) 00:00:40
ttp://kakinotane.s7.xrea.com/delphi/d2/toc.html
の下の方ひととおり読んだらいいと思う

752 :デフォルトの名無しさん:2006/10/26(木) 00:06:27
コンストラクタのcreateにoverride付けなくても、inheritedを入れてあれば動くには動く。
しかし、コンパイラに「コンストラクタを覆い隠した」と怒られるし、
普通じゃない使い方(たとえば「クラス参照型」)をしようとすると問題が出る。
基底でdynamic宣言されているコンストラクタには素直にoverrrideを付けておくもんだと覚えておいた方がいい。



C++ともJavaとも考え方が結構違うから難しいんだよなぁ…

753 :デフォルトの名無しさん:2006/10/26(木) 00:10:54
>>752
まあ、Delphiじゃ、dynamicはあんまり使うべきじゃない。
大抵virtualでおk

754 :デフォルトの名無しさん:2006/10/26(木) 00:20:54
>>752
怒られるのは継承もとのメソッドが仮想や動的、抽象の場合だろ。
性的なら怒られない。

755 :デフォルトの名無しさん:2006/10/26(木) 00:24:20
TMyClass=Class(TBitmap)
private
constructor Create; override;
desutructor Destroy; override;
end;
実装部で
procedure TMyClass.Create; override;
begin
 inherited
 −自分がやりたい処理−
end;

で、おk?
>>751のサンプルじゃoverrideついてないようですが…

自身持って判断できるようになるには時間かかりそうかなぁ


756 :デフォルトの名無しさん:2006/10/26(木) 00:28:24
いきなり解るもんじゃねぇ

757 :デフォルトの名無しさん:2006/10/26(木) 00:30:17
継承元が仮想や動的ならオーヴァーライド。以上。

758 :デフォルトの名無しさん:2006/10/26(木) 00:38:25
>>757
まあ、継承元がvirtualなのに、overrideを付けないクラスデザインは
するべきじゃないだろうしな

759 :デフォルトの名無しさん:2006/10/26(木) 00:43:02
TBitmapのソースをなんとか探し出したんですが…

public
constructor Create; override;  ←←←
destructor Destroy; override;
procedure Assign(Source: TPersistent); override;
procedure Dormant;
procedure FreeImage;
    ・
    ・

のように、TBitmap自体のConstructorは仮想でも動的でもないみたいなんですが、
TBitmapの継承元のTGraphicのCreateがVirtualのようです。
こういう場合もoverride?

うーん、ますます解らん、、

760 :デフォルトの名無しさん:2006/10/26(木) 00:44:59
一晩でわかろうとするな

761 :デフォルトの名無しさん:2006/10/26(木) 00:54:00
> TBitmapの継承元のTGraphicのCreateがVirtualのようです。
> こういう場合もoverride?

当然。

762 :デフォルトの名無しさん:2006/10/26(木) 01:25:09
>>759
そこらへんを知りたくなったら、
塚越たんの名著、「Delphiオブジェクト指向プログラミング」を買って読むといいぞ。
一度絶版になったが、最近ようやく再販されたんだが、これはナイス。

763 :デフォルトの名無しさん:2006/10/26(木) 01:28:28
>>762
>>759ではないですが、その本を読めばDelphiだけでなく、
C++やJavaのOOPにも参考になりますか?

764 :デフォルトの名無しさん:2006/10/26(木) 01:45:10
>>763
なるね。

C++とJAVAとC#とDelphiの、オブジェクト指向という屋台骨の部分は一緒だから、
どれかの言語でオブジェクト指向を習得(というか体得かな)すると、
他の言語の習得がめちゃくちゃ簡単になる。

あ、でも、今言ったうち、C++だけ、クラス変数が参照じゃなくて値だということに気づかないと泥沼にはまるけどね。

765 :デフォルトの名無しさん:2006/10/26(木) 02:38:08
便乗して質問。
constructor Create; override;
 ↓ ↓
constructor Create(x, y:integer); override;
みたいに引数取っ付けちゃったりしてもいいわけ? 

766 :デフォルトの名無しさん:2006/10/26(木) 03:02:28
それは overload。


767 :デフォルトの名無しさん:2006/10/26(木) 03:20:40
この議論を見ていると、
コンストラクタをオーバーライドする理由をもう少し考える必要があると思うわけだ。
クラス参照についての理解が前提で、普通のメソッドのオーバーライドとはちょっと違う。

768 :デフォルトの名無しさん:2006/10/26(木) 03:26:29
overloadすると、継承元のメソッドは実行されないんでそ?

769 :デフォルトの名無しさん:2006/10/26(木) 03:31:15
コンストラクタはオーバーライドしないことがおおいなぁ。
コンポだったらたいていするけど。

770 :デフォルトの名無しさん:2006/10/26(木) 03:31:49
reintroduce ってのはなんにつかうの?

771 :デフォルトの名無しさん:2006/10/26(木) 03:35:00
メソッドのオーバーライドについて
http://support.borland.com/entry.jspa?externalID=4350

> 静的メソッドを下位クラスで再定義する場合は、再定義によって上位クラスが隠ぺいされるという警告を
> 出さないようにするため、reintroduceという指定を追加します(reintroduceは、Delphi 4以降でサポートされます)。
> reintroduceは、後述する仮想メソッドや動的メソッドでも、上位クラスと関係のないメソッドを再定義する場合
> にも使います。

772 :デフォルトの名無しさん:2006/10/26(木) 05:49:32
文字列が有効なファイルパスであることを確かめるにはどうすればいいんでしょう

773 :デフォルトの名無しさん:2006/10/26(木) 05:50:23
fileexists

774 :デフォルトの名無しさん:2006/10/26(木) 06:09:30
自分でクラス作るときに、
コンストラクタでoverloadつけないといけないのは、
普通は、コンポーネントを作るときだけだよね。

Delphiのコンストラクタは、クラスメソッドだから。

775 :デフォルトの名無しさん:2006/10/26(木) 06:21:10
>>773
どうも

776 :デフォルトの名無しさん:2006/10/26(木) 09:27:50
エクスプローラからファイルがドロップされたらエディットボックスにそのファイルのパスを挿入するにはどうすれば…

ttp://www.geocities.jp/fjtkt/program/2003_0023.html
↑とか見てもちんぷんかんぷんなんですがorz

777 :デフォルトの名無しさん:2006/10/26(木) 09:31:51
>>765
同じ名前のメソッドを引数で判別するのがオーバーロード
継承元のメソッドを継承・追加したりすんのがオーバーライド
だと思ってる。違うやもしれない

778 :デフォルトの名無しさん:2006/10/26(木) 09:52:06
>>776
簡単だよ
WM_DropFilesメッセージを捕まえて処理するだけ
下に例を書く

TForm1 = class(TForm)
  Edit1: TEdit;
  procedure FormCreate(Sender: TObject);
 private
  procedure WMDropFiles(Var Msg: TWMDropFiles); Message WM_DropFiles;
 end;

implementation

uses
 ShellAPI;

procedure TForm1.FormCreate(Sender: TObject);
begin
 DragAcceptFiles(Handle,True); //Form1がD&D出来るように設定
end;

procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
var
 FileName: Array[0..MAX_PATH] of Char;
Begin
 DragQueryFile(Msg.Drop, 0, FileName, SizeOf(FileName)); //D&Dされたファイル名を取得して
 Edit1.Text := String(FileName);                 //Edit1に表示
 DragFinish(Msg.Drop);                      //D&D処理で使用したリソースを解放
end;



779 :デフォルトの名無しさん:2006/10/26(木) 10:44:34
>>778
ご丁寧にありがとうございます
最初の段落はどこに書けばいいのかさっぱりなんですが…
ちっとも簡単に感じないorz

780 :デフォルトの名無しさん:2006/10/26(木) 10:51:40
ソースの上にあるだろ

781 :デフォルトの名無しさん:2006/10/26(木) 14:02:02
>>778みたいな親切な人、久しぶりに見た。
もしかしてキリストさん?

782 :デフォルトの名無しさん:2006/10/26(木) 14:57:54
>>779
最初の段落ってimplementationの前か?
この部分はprocedure WMDropFiles(Var Msg: TWMDropFiles); Message WM_DropFiles以外は
フォームにコンポーネント置いたりイベントを設定するとDelphiが勝手に記述するから自前で書かなくてよい
むしろ書くとDelphiのお怒りを買う



783 :デフォルトの名無しさん:2006/10/26(木) 15:59:42
Windows Vistaの価格はすべてオープンプライスとなっているが、発表された参考価格は以下のとおり。

●通常版
 Ultimate:48,800円
 Vista Business:37,800円
 Home Premium:29,800円
 Home Basic:25,800円

いつからVistaなんだ?
みなさん、Vista対策どうしてます?


784 :デフォルトの名無しさん:2006/10/26(木) 16:16:23
> いつからVistaなんだ?

企業版は11月。
一般消費者向けは1月。

> みなさん、Vista対策どうしてます?

来年の夏以降。

785 :デフォルトの名無しさん:2006/10/26(木) 16:28:27
> みなさん、Vista対策どうしてます?

一番の悩みはアイコンかも。
WPF もそうだけど、格好の良いデザイン無理。

786 :デフォルトの名無しさん:2006/10/26(木) 16:36:44
発売してない以上、対策のしようがない

787 :デフォルトの名無しさん:2006/10/26(木) 17:13:30
質問があります。Delphi6を使っています。

ClientSocketを使って、Webサーバの80ポートに接続し、HTMLを取得するのは出来たんですが、それがUTF-8と言うものみたいなんです。
これはどうすれば読める状態にできますか?

788 :デフォルトの名無しさん:2006/10/26(木) 17:18:47
Utf8ToAnsi

789 :デフォルトの名無しさん:2006/10/26(木) 17:58:28
Form1の中でしか使ってない自作のprocedureなんかもまとめて一箇所に宣言してるんだけど、
(publicでもprivateでもないところ、typeとprivateの間)
コンパイルしたときに他のクラスから使われてないprocedureとかは最適化というやつで自動的にprivate扱いになるんだよね?ね?

790 :デフォルトの名無しさん:2006/10/26(木) 18:03:05
>>787に便乗です。IndyでYouTubeのページ取得をしようと思い、Button1とMemo1を配して

procedure TForm1.Button1Click(Sender: TObject);
var
  HtmlSource : String;
  DecodeSource : String;

begin
  HtmlSource := IdHTTP1.Get('http://www.youtube.com/watch?v=GuRZjwzg3go');
  DecodeSource := UTF8Decode(HtmlSource);
  Memo1.Text := DecodeSource;
end;

こんなふうにやってみたのですが、ソースが表示されませんでした。
>>788のようにUtf8ToAnsiでもできません。何か良い方法はありますでしょうか?

791 :デフォルトの名無しさん:2006/10/26(木) 19:17:36
IdHTTP.Getってhtmlページ以外も取得できんの?

792 :デフォルトの名無しさん:2006/10/26(木) 19:18:32
>>790
Utf8ToUnicodeの中でコケてる
malformed trail byte or out of range charってコメントあるところ
ナンデカナー


793 :デフォルトの名無しさん:2006/10/26(木) 19:36:27
>>791
出来る。
只のHTTP GETメソッドだし。

794 :792:2006/10/26(木) 19:42:42
2文字前   1文字前   コケてる文字
1001 1111  1110 0011  0000 1010

1文字前が3バイトコードの先頭バイトなので本来ならコケてる所は 10XX XXXX にならないと
いけない。それで「この文字列不正です」と判定されてる。

無理矢理変換を進めるとして、どうすりゃええんだろう。

795 :790:2006/10/26(木) 19:57:57
>>791
できます。さきほどの例で言えば、
Memo1.Text := HtmlSource;
とやれば、そのままのソースは表示できます。


>>792 >>794
ダメ文字があるという感じなんでしょうか?
YouTube内でも、他のページだと何事もなく変換できたりもするんです。
例→ http://www.youtube.com/watch?v=7KvHspzdHCM

まったく別の方法を考えないといけないのかな…

796 :デフォルトの名無しさん:2006/10/26(木) 20:18:23
何がやりたいのかさっぱり見えないのだが・・・・


797 :792:2006/10/26(木) 20:32:27
>>795
まぁそんなかんじ。
おかしいところを無視するなりダミーで埋めるとかして強制的に最後まで変換
してしまえばよいとおもう。

798 :デフォルトの名無しさん:2006/10/26(木) 21:24:52
質問者も解答者もこれじゃあ・・・・

799 :デフォルトの名無しさん:2006/10/26(木) 21:33:10
言いたいことは最後までハッキリ言いましょう

800 :デフォルトの名無しさん:2006/10/26(木) 21:51:42
>>789
コンパイルしたdcuのレベルじゃ他のクラスから参照されるかされないか分からないから
privateにはならないんじゃないの?
最適化ってリンクの段階でも効くんだろうか。
詳しい人よろ↓

801 :デフォルトの名無しさん:2006/10/26(木) 22:26:05
>>789
そこpublicだよ

802 :デフォルトの名無しさん:2006/10/26(木) 22:34:22
>>801
いいえpublishedです

803 :デフォルトの名無しさん:2006/10/26(木) 22:40:52
なぜか「ノーマネーでフィニッシュです」が頭に思い浮かんだ

804 :789:2006/10/26(木) 23:50:49
publishedなのは知ってるんだけど、自動的にprivateになったりしないの?
このままだとメモリの無駄使いしちゃう?
30個ぐらい何も考えないで追加しちゃったからprivateのとこに移動させる必要があるか1個ずつ判断して移動させるのが面倒で

805 :デフォルトの名無しさん:2006/10/26(木) 23:58:12
ひどすぎ。published の部分は普通は IDE 専用。自分で入れるところではない。

806 :デフォルトの名無しさん:2006/10/26(木) 23:59:31
コンパイラが勝手にスコープ変えたら大変。だいたい、それメモリの使用量と関係ないし

807 :789:2006/10/27(金) 00:40:14
どうもとんくす

吊って来ますね

808 :デフォルトの名無しさん:2006/10/27(金) 00:44:26
スマートリンカの事か?


809 :デフォルトの名無しさん:2006/10/27(金) 06:46:24
delphi使いはそんなことも知らないのか

810 :デフォルトの名無しさん:2006/10/27(金) 07:29:52
>>805,809
スレタイに注目


811 :デフォルトの名無しさん:2006/10/27(金) 10:18:57
ボタンのonClickでウィンドウサイズを変えるとき、Client付きで指定するのとそうでないのとでは、どっちがベター?

812 :デフォルトの名無しさん:2006/10/27(金) 10:49:03
タイトルの高さ、メニューの高さ、ボーダスタイル等などによって
設計時と実行時でHeigthやWidthは変わることがある
ClientHeight、ClientWidthは環境に関わらず常に一定
そのあたりを考慮し、状況に使い分けるのが良いかと



813 :デフォルトの名無しさん:2006/10/27(金) 14:04:27
なるほど、じゃClient付きにしよ♪

814 :デフォルトの名無しさん:2006/10/27(金) 14:13:12
数値で指定するならPixelsPerInchも考えような

815 :デフォルトの名無しさん:2006/10/27(金) 14:16:47
('A`)マンドクセ

816 :デフォルトの名無しさん:2006/10/27(金) 14:40:37
DelphiでUTF16は使えますか?

817 :デフォルトの名無しさん:2006/10/27(金) 14:55:34
UTF16?Unicodeってことでいいのかな?

Delphiは使えるがVCLは使えない
VCLでUnicodeと使いたい場合は

Borland製じゃないけどUnicode対応のVCLセットがあるから
それを使うとべし

818 :デフォルトの名無しさん:2006/10/27(金) 15:01:39
>>816

ttp://www.tntware.com/delphicontrols/unicode/


819 :デフォルトの名無しさん:2006/10/27(金) 15:03:53
WideStringがUTF16
でもUCS4はサポートしてない

820 :デフォルトの名無しさん:2006/10/27(金) 15:04:40
> UTF16?Unicodeってことでいいのかな?

UTF8は色々あるみたいですが
UTF16はどうなのだろうと思って質問しました。

UTF16でないとUCS4は使えないと聞いたので。
騙されてます?

821 :デフォルトの名無しさん:2006/10/27(金) 15:04:41
WideStringは、UCS2で、
UCS2ってのは、UTF-16のうち、UCS-4でサポートされた文字を表すサロゲートペアが無いものと考えて良いから、
UCS4をサポートしないWindows上では、
WideStringは、UTF-16と考えても大抵問題ない。

822 :デフォルトの名無しさん:2006/10/27(金) 15:09:39
WindowsでUnicodeと言えばUTF-16を指す
UCS4はWindowsじゃ使えない(はず)

823 :816:2006/10/27(金) 15:09:59
投稿が前後してしまいました。

>>819
> WideStringがUTF16

WideString=UTF8だと思ってました。
UTF8はStringですか?

>>821
> UCS4をサポートしないWindows

知りませんでした。
Vistaではどうなるのでしょう。

824 :デフォルトの名無しさん:2006/10/27(金) 15:13:13
>>822
> WindowsでUnicodeと言えばUTF-16を指す

ということは
WindowsではUTF8は使われていないという事ですか?

825 :デフォルトの名無しさん:2006/10/27(金) 15:15:20
>>823
StringはいまのところAnsiString

ただ、UTF-8は、へんなところにへんな文字が来ないので、
AnsiStringにUTF-8を格納させることも可能。
まともに表示できないけど。

http://ja.wikipedia.org/wiki/Unicode
とかで勉強しろな。

826 :デフォルトの名無しさん:2006/10/27(金) 15:19:20
UTF8用の型としてUTF8Stringという型が用意されている
実際はUTF8もAnsiStringも1文字8ビットで扱っているので情報量は同じ
内部的にもtype UTF8String = type stringと定義されている

ただし、1文字を表す情報量は同じでも表現の仕方が異なるので
AnsiString⇔UTF8Stringの変換を行うには
UTF8ToAnsi、AnsiToUTF8といった関数で変換する必要がある
直接代入してもコンパイルエラーは起きないがDelphiの天罰が下る

827 :デフォルトの名無しさん:2006/10/27(金) 15:22:09
>WindowsではUTF8は使われていないという事ですか?
APIで「ユニコード文字列を渡してください」とある場合はUTF16の文字列を渡すということ

828 :816:2006/10/27(金) 15:24:00
頭悪くてすみません。

WideString=UTF16なのでUTF8も扱える。
UTF8=UTF8Stringでも表現できる。
WideStringはUCS2しかサポートしてない。
OSが対応していないので問題ない。

ということですか?

829 :デフォルトの名無しさん:2006/10/27(金) 15:27:09
>>828
おまいさんは、UTF-16とUTF-8の何が違うのかとかまず勉強すること
Delphiと関係ねーところで根本的にわかってない

830 :デフォルトの名無しさん:2006/10/27(金) 15:28:03
>>829
すみません。出直してきます。
またよろしくお願いします。

831 :デフォルトの名無しさん:2006/10/27(金) 15:29:38
お礼を忘れてました。
ありがとうございました。

832 :デフォルトの名無しさん:2006/10/27(金) 15:30:54
UTF8の文字列をWideStringに放り込むとしても、どのみちUTF8をデコードしないと
いけない。だから>>792みたいな問題がでてくるわけだ。


833 :デフォルトの名無しさん:2006/10/27(金) 15:31:31
>>828
間違っちゃいない

「○○が××だからUTF16形式で△△したい」とか
具体例出してくれないと話が堂々巡りになってしまう

てっとり早く問題があるならそれ挙げて回答を貰い
合わせてUnicodeについての理解を深めるべき

834 :デフォルトの名無しさん:2006/10/27(金) 15:34:02
まあ、きつく言い過ぎたが
UTF-16ってのは、UCS-2の範囲内の文字を全て2バイトであらわすんよ
UCS-4の範囲はサロゲートペアってのを使って4バイトであらわすんだけど、
そもそもWindowsでは、UCS-4に対応していないから関係ない。

で、UTF-8は、UCS-2を含めたUCS-4の文字を1〜3バイトの可変バイトで表すわけね。
そんなわけで、WideStringがUTF-16で、UTF-8も扱えるって日本語は根本的におかしい。
Windowsで動くDelphiのWideStringはUCS2なので、Windows上でUTF-8で表せる文字を全て使える、というのが正しい。

835 :デフォルトの名無しさん:2006/10/27(金) 15:34:33
あ、UTF8をWideStringで扱うときは代入する前に
当然デコードしないとダメ

836 :デフォルトの名無しさん:2006/10/27(金) 15:37:13
これ読め
http://bookweb.kinokuniya.co.jp/htm/4798100307.html

837 :816:2006/10/27(金) 15:42:08
皆さんありがとうございます。

(X) WideString=UTF16なのでUTF8も扱える。
(O) WideString=UTF16。 UTF8=UTF8Stringを使うか、デコードしてUTF16に入れて使う。

ということですね。

>>833
> 具体例出してくれないと話が堂々巡りになってしまう

AnsiToUTF8 という関数はあるのに
UTF16は探しても無いという疑問でした。

UTF16はWideStringという単語になっているという事ですね。

838 :デフォルトの名無しさん:2006/10/27(金) 15:51:59
>>836
勉強します。

839 :デフォルトの名無しさん:2006/10/27(金) 15:53:22
>>836
えらく高い本だなおいwww

840 :デフォルトの名無しさん:2006/10/27(金) 17:07:39
ListBoxでStyleをlbOwnerDrawVariableにした時、マウスホイールでスクロールした場合に
描画がヘンテコなことになるのだけど、これを回避するにはどうすればよかですか?


841 :840:2006/10/27(金) 17:37:24
フォームにListBoxを1つ配置。
マウスホイールもしくはスクロールバー右クリック”ここにスクロール”で発生。
アイテム高さ固定(lbOwnerDrawFixed)にすると発生しない。
Windowsの設定でメニューのアニメーションをOFFにすると発生しない。

procedure TForm1.FormCreate(Sender: TObject);
var
 I: Integer;
begin
 ListBox1.Style := lbOwnerDrawVariable;
 for I := 0 to 20 do
  ListBox1.AddItem(IntToStr(I), nil);
end;

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
 Rect: TRect; State: TOwnerDrawState);
begin
 TListBox(Control).Canvas.FillRect(Rect);
 DrawText(TListBox(Control).Canvas.Handle, PChar(ListBox1.Items[Index]), -1, Rect, 0);
 InflateRect(Rect, 0, -3);
 Rect.Left := 20;
 Rect.Right := Rect.Left + (Index * 3);
 TListBox(Control).Canvas.Brush.Color := clRed;
 TListBox(Control).Canvas.FillRect(Rect);
end;

procedure TForm1.ListBox1MeasureItem(Control: TWinControl; Index: Integer;
 var Height: Integer);
begin
 Height := 16;
end;

842 :デフォルトの名無しさん:2006/10/27(金) 19:13:07
>>836
入門なのに455P!

843 :デフォルトの名無しさん:2006/10/28(土) 00:10:46
ToolButtonのStyleをDropDownにするとボタンと右の▼が区切られて表示されるけど、これをひとつのボタンとして表示することはできますか?

844 :デフォルトの名無しさん:2006/10/28(土) 00:47:39
それって、どういう挙動をするの?

845 :デフォルトの名無しさん:2006/10/28(土) 01:14:13
ボタンの▼じゃない部分を押しても、メニューが表示されるようにしたいんですが

846 :デフォルトの名無しさん:2006/10/28(土) 01:28:27
DropDownMenu プロパティにメニューを割り当てる

847 :デフォルトの名無しさん:2006/10/28(土) 01:35:21
いやそうしてるんですけど、ドロップメニューであることを伝えたいのでw
アイコンに書くしかないかなぁ

848 :デフォルトの名無しさん:2006/10/28(土) 08:37:16
初めてデータベースをいじってみますた(TTable)。
これって、2つ以上のTableで1つの.DBに同時につないで操作したら裏で誤作動とか起こったりしないんですか?

849 :デフォルトの名無しさん:2006/10/28(土) 09:22:07
>>837
こうやって無能が増えていくんだね
解答者も無能だからしかたないね

850 :デフォルトの名無しさん:2006/10/28(土) 09:29:42
>>849
こういう所で優越感に浸らないとやってけないもん?

851 :デフォルトの名無しさん:2006/10/28(土) 09:58:54
いるよね、こういう人。

852 :デフォルトの名無しさん:2006/10/28(土) 10:03:05
いつものリストラVB厨だ。

853 :デフォルトの名無しさん:2006/10/28(土) 10:22:33
>>848
2人以上が同時につなぐと誤作動を起こすDBがあるか?

854 :デフォルトの名無しさん:2006/10/28(土) 11:00:22
>2人以上が同時につなぐと誤作動を起こすDBがあるか?

いじり始めたばかりの奴がそこまで使って知ってると思うか?
お前も無能回答者認定な。

855 :デフォルトの名無しさん:2006/10/28(土) 11:08:21
無能だらけ

856 :デフォルトの名無しさん:2006/10/28(土) 14:36:54
VBなら無能でも使えるのにね

857 :デフォルトの名無しさん:2006/10/28(土) 17:42:19
無能でも使える物は、無能だけが使いたがる。

858 :デフォルトの名無しさん:2006/10/28(土) 18:30:13
このスレッドはBorland(ボーランド)のDelphi(デルファイ)について、
他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
無能が優しくコメントを返しますが、
お礼はDelphi(の布教と初心者の救済をお願いします。


859 :デフォルトの名無しさん:2006/10/28(土) 18:39:33
他アプリ上にある UpDown コントロールを操作するには、どうすればいいのでしょうか?

UDM_GETPOS で現在の数字を取ってから、UDM_SETPOS してやればいいのかなとやってみたのですが、
数字は取ってこれるものの、変化がありませんでした。SetPos

(Hoge: HWND)
Hoge := FindWindowEx(hParent, 0, 'msctls_updown32', nil);
ComPos := LOWORD(SendMessage(Hoge, UDM_GETPOS, 0, 0));
Inc(ComPos);
SendMessage(Hoge, UDM_SETPOS, 0, ComPos);

860 :デフォルトの名無しさん:2006/10/28(土) 18:53:26
var
Msg: TMessage;
begin
〜〜〜
SendMessage(Hoge,UDM_SETPOS,0,compos);
Msg.Msg := WM_VSCROLL;
Msg.LParam := Hoge;
Dispatch(Msg);
end;

861 :デフォルトの名無しさん:2006/10/28(土) 19:32:11
>2人以上が同時につなぐと誤作動を起こすDBがあるか?

確かにいじり始めのもんに体験的に知る機会なんかないわなw〜
と、ブレイク中にプリン食べながらカキコ

862 :デフォルトの名無しさん:2006/10/28(土) 20:08:52
質問は無能でも答えられるものに限定します

863 :デフォルトの名無しさん:2006/10/28(土) 20:30:45
>>862
>>850の質問に答えてよ

864 :デフォルトの名無しさん:2006/10/28(土) 21:40:07
>>863
はい。そうです。

865 :デフォルトの名無しさん:2006/10/28(土) 22:36:44
じゃ、何のために DB 使うのかと

866 :848:2006/10/29(日) 00:36:43
別にいまんとこ目的ないす。いじってみただけ。

867 :デフォルトの名無しさん:2006/10/29(日) 03:28:49
お願いします。
実行中に、任意のコンポーネントをアクティブにする(Edit1にキャレットをもっていく、など)
にはどうすればよいですか?

868 :デフォルトの名無しさん:2006/10/29(日) 03:32:50
edit1.setfocus;

869 :867:2006/10/29(日) 03:36:21
>>868さん、素早い回答、どうもありがとうございます。

870 :デフォルトの名無しさん:2006/10/29(日) 12:57:25
ttp://www.eva.hi-ho.ne.jp/taketani/delphi/system.shtml#0002
↑これでプロセスの終了を監視しようと思ったら、「変数実パラメータと変数仮パラメータとは同一の型でなければなりません」ってでるんですけど
どういうこと!?

871 :デフォルトの名無しさん:2006/10/29(日) 15:40:35
前から気になってたんだがなんでStuffStringって使われないんだ?
俺はTabWidthの無いPageControlとかでよく使うんだが、なんか悪い点でもあるのか?

872 :デフォルトの名無しさん:2006/10/29(日) 18:49:41
>>870
どの行で出たのかくらいは書いてくださいお願いします

873 :デフォルトの名無しさん:2006/10/29(日) 19:22:58
>>870
procedure TForm1.Button1Click(Sender: TObject);
var
 ret: Boolean;
// ecode: Integer;
 ECode: DWORD; //integerじゃなくてDWORD
 StartupInfo: TStartupInfo;

にしたら動いたよ。

874 :デフォルトの名無しさん:2006/10/29(日) 19:28:06
Delphi 的には Cardinal だな。

875 :デフォルトの名無しさん:2006/10/29(日) 21:56:38
質問させてください。
ShortString型のクラス名を元にクラスをつくることってできませんか?
たとえば、
s = 'TStringList'だと、
t := TStringList.Create;
になって、
s = 'TList'だと、
t := TList.Create;
みたいにしたいのですが。

876 :デフォルトの名無しさん:2006/10/29(日) 21:59:57
RegisterClass/FindClass
但し、TPersistent を継承したもののみ

877 :デフォルトの名無しさん:2006/10/29(日) 22:00:29
>>875
あと、作るのはクラスじゃなくてオブジェクトな

878 :876:2006/10/29(日) 22:29:27
ありがとうございました。
その二つを使ったらできました。

879 :デフォルトの名無しさん:2006/10/29(日) 23:11:36
TBitmapを継承して、TEffectBMP = class(TBitmap)をつくり、さらにこれ(TEffectBMP)に機能を追加してTExBMP = class(TEffectBMP)をつくりました。
そして仮に、
FEffectBMP := FBitmap;とすると「互換性がありません」とコンパイラにはじかれてしまいます。
ところが、
FEffectBMP.Assign(FBitmap);
とするとコンパイルが通ってしまいます。.Assign(Source: TPersistent)となっているので、自分の考えではTBitmap〜TExBitmapがTPersistentを継承してるから相互にAssign可能なのか?コンパイル通ってしまうのか?
と思ってるんですが、これは誤作動とかの心配はないんでしょうか?

ちなみにC++やJavaの経験はありません。


880 :デフォルトの名無しさん:2006/10/29(日) 23:24:47
時刻を表す文字列hh:mm:ssでhhが24以上になることもある文字列をTDatetime型に変換したいしたいのですが、
どのようにしたらいいでしょうか。
hh, mm, ssは一桁代の時は1文字です。例: 36時間1分2秒なら36:1:2となっています

881 :デフォルトの名無しさん:2006/10/29(日) 23:31:13
その場合、TEffectBMP型変数に代入できるのは TEffectBMP か TExBMPのインスタンス。

Assignは TPersistentのインスタンスならなんでも渡せる。
それをどう解釈するかは 受け取り側の Assign か 渡される側の AssignTo の実装による。
どちらも override 可能。
今回は TEffectBMP.Assign を override して挙動を変えることが可能。

882 :デフォルトの名無しさん:2006/10/29(日) 23:34:54
>>880
hhが24以上なら1日増やしたいわけ?
VarToDateTimeで希望の動作をしないなら、自分で分解する。
TStringList.CommaTextが使えるかも。


883 :デフォルトの名無しさん:2006/10/29(日) 23:43:06
>その場合、TEffectBMP型変数に代入できるのは TEffectBMP か TExBMPのインスタンス。

やってみました。下位なら入るんですね。
Assign便利だな〜

ありがとうございます。

884 :デフォルトの名無しさん:2006/10/29(日) 23:46:23
:=で入らんもんがAssignで素直に入ったらアレッって思うわな。
初心者なら。

885 :デフォルトの名無しさん:2006/10/29(日) 23:50:29
>>882
ありがとうございました。
VartoDateTimeは24時間以上はエラーになってしまいましたが、TStringListで簡単に分解ができました。


886 :デフォルトの名無しさん:2006/10/30(月) 02:10:15
propertyへの代入でAssignが呼び出される場合もあるから厄介。


887 :デフォルトの名無しさん:2006/10/30(月) 05:08:19
GLDPNGは、zlibのバージョンが古く脆弱性に対応していないとのことで、
代わりを探しています。
みなさんは、PNGの読み込みは何をお使いですか?

888 :デフォルトの名無しさん:2006/10/30(月) 05:09:30
>>887
俺はPNGImage
BCBにもそのまま使えるし

889 :デフォルトの名無しさん:2006/10/30(月) 05:43:22
>>887

>>888の言うとおりPNGImageが一番手っ取り早い。
次点でimgctl.dll。

ただ、これらは、確か64bitカラーとかのPNGの書き出しができないから、それが必要な場合は、libpng様のお世話にならなくちゃいけないね。
めんどいけど。

890 :デフォルトの名無しさん:2006/10/30(月) 08:42:20
>>873
おお!動きました、ありがとうございました!!

>>872
すいませんorz

891 :デフォルトの名無しさん:2006/10/30(月) 19:42:24
TMyRec=record
 hoge1: integer;
 hoge2: string;
end;
みたいなのを宣言して、これをクラスの外部からも出し入れしたいからPublic欄に
TMyClass=class
private
 …
pubulic
 FMyRec:TMyRec;
end;
って書いたんだけど、ベテランの人ならこれはプロパティにすると思う。
Publicに書いたら、何か不都合なの?実際どうちがうのか教えてほしい。

892 :デフォルトの名無しさん:2006/10/30(月) 20:09:51
オブジェクト指向がどうのこうのとえろい人達が怒り出す

893 :891:2006/10/30(月) 20:14:55
>がどうのこうのとえろい人達が怒り出す

これだけ?
プロパティってメソッド介して入れたり出したりするんでそ?
ダイレクトにブチ込んだほうが軽くてすむように思えるんだけどな

894 :デフォルトの名無しさん:2006/10/30(月) 20:15:44
TMyClassを継承してゴニョゴニョするつもりが無いならプロパティにしなくてもいいよ。
構造体をプロパティにすると代入するときにちょっと不便だし。

895 :891:2006/10/30(月) 20:19:17
>代入するときにちょっと不便だし。

どう不便なの?

896 :デフォルトの名無しさん:2006/10/30(月) 20:38:41
>>891
実装をむき出しにすると、外部との結合が強くなって改良などの自由度が狭まる事がある。
例えば、何かの事情で管理方法をレコードから単独の変数に変えたくなっても、
アクセッサを介していればそこだけ書き換えて修正できる。

TMyClass=class
private
 Fhoge1: integer; Fhoge2: string;
pubulic
 property MyRec: TMyRec read GetMyRec;
end;

function TMyClass.GetMyrec: TMyRec;
begin Result.hoge1 := FHoge1; Result.hoge2 := FHoge2; end;

TMyClass=class
private
 FMyRec: TMyRec;
pubulic
 property MyRec: TMyRec read GetMyRec write SetMyRec;
end;

function TMyClass.GetMyrec: TMyRec;
begin Result := FMyRec; end;

GetMyRecを書き換えるだけで、データの保持方法を変える事ができる。これが実装の隠蔽。
この例なら後からどうにでもなるけど、ソースの規模が大きいとこういった保守性が馬鹿にならない。

>>895
レコードの要素を一個一個代入すると、要素ごとに毎回アクセッサが呼ばれてうざい。

897 :デフォルトの名無しさん:2006/10/30(月) 21:00:43
>>891
DelphiじゃなくてC++の例だけど、

> メンバ変数をpublicにする
> 深刻度:★★★ - 重い深刻度
> [症状]
> 直接メンバ変数をいじられることでプログラムの挙動がおかしくなったり,
> クラスのバグ取りやバージョンアップがしにくくなります。
> [原因]
> メンバ変数をpublicにすると弊害が起きることをわかっていない。というか
> オブジェクト指向の基本理念をわかっていないのです。
> [対策/予防]
> 勉強しなさい。:-)
> [例外]
> なし。
> [備考]
> 残念ながら,これはオブジェクト指向の「理念」をわかっていないゆえに
> 起きる現象です。というか,わかっていれば,最初からメンバ変数を
> publicにするという愚かな行為はしません。

C MAGAZINE - プログラミングの禁じ手Web版 C++編 - 隠蔽とスコープに関するパターン
http://www.cmagazine.jp/src/kinjite/cpp/scope.html#index6

898 :デフォルトの名無しさん:2006/10/30(月) 21:24:09
>>895
property MyRec: TMyRec;
とした場合
MyClass1.MyRec.hoge1 := 1;
といった代入はできない。

899 :デフォルトの名無しさん:2006/10/30(月) 21:50:06
すんません超初心者なのですが、

通常TEditなどのEditコントロール上でマウス右クリックすると、「元に戻す(U)」「切り取り(T)」「コピー(C)」
などのPopupメニューがデフォルトで表示されますが、そのメニューの一番下に追加する形で「ぬるぽ(G)」など
自分で定義したメニューアイテムを付加することはできるでしょうか?
完全に置き換えることはできたのですが、追加がさっぱり・・・
ダメなら切り取りなども自分で定義してやるしかないんだろうけど。

900 :デフォルトの名無しさん:2006/10/30(月) 21:55:46
切り取りとかコピーなんてのはアクションリスト使えばコードも書かないで実装できる
だがログくらいよめと言いたい

901 :デフォルトの名無しさん:2006/10/30(月) 22:16:46
>>900
その解はまさに正しいのだが微妙に>>899の要求と異なる気がする。
とは言えおれも正しく答えられないが。

ShellExtention使うような

902 :891:2006/10/30(月) 22:17:43
>外部との結合が強くなって

ははぁ、なるほど。
しかし、クラスを使いまわすほどのベテじゃないんだよな(汗

みなさん、ありがと。

903 :891:2006/10/30(月) 22:22:42
しぶといようだけど、、

> 直接メンバ変数をいじられることでプログラムの挙動がおかしくなったり,

自分で使うだけなら問題ないね(^^;

904 :デフォルトの名無しさん:2006/10/30(月) 22:42:31
>>903
後で見る事が無ければ問題なし
後で見て後悔する事間違いなし

905 :デフォルトの名無しさん:2006/10/30(月) 22:44:02
俺様仕様でOKなら、こんなところでグダグダしないでパパッとコーディング汁。

906 :デフォルトの名無しさん:2006/10/30(月) 22:48:50
TBitmapを継承してピクセルにアクセス->変化をさせるっていうのにチャレンジしてるけど、ダブルバッファみたく、
画面の更新停止→ピクセルを変化させる→画面をいっきに更新。
ってのをやりたいんですが、何か手がありませんか??

907 :デフォルトの名無しさん:2006/10/30(月) 23:08:19
>>906
意味ワカラン

908 :デフォルトの名無しさん:2006/10/30(月) 23:12:21
>>899
無理

909 :デフォルトの名無しさん:2006/10/30(月) 23:19:40
説明不足でゴメンね

MonochroBMP=class(TBitmap)
public
procedure CopyMonochroData(var BMP: TBitmap);

この手続のBMPに任意のBitmapを突っ込むとMonoChroBMPがもってる画像が白黒になったものがコピーされて出てくる。
ってのを作ってみてるんだけど、なんだかチラつくから…

procedure CopyMonochroData(var BMP: TBitmap);
begin
BMP.Assign(MonochroBMPが持っている画像)


とやって、AssignされたBMPに手を加えようとしてるけど、
BMPにMonochroBMPのデータを渡す方法もわからないし、計画自体がまちがってるのかな?とも思ってしまう。

下手クソでゴメンよ…

910 :デフォルトの名無しさん:2006/10/30(月) 23:22:14
実行中はタスクトレイにアイコンを表示するアプリを作っています。
が、強制終了させるとタスクトレイにアイコンが残ってしまいます。
これを消す方法はあるでしょうか?(マウスでなぞる以外の方法で)
また、強制終了を検出する方法はあるのでしょうか?

911 :デフォルトの名無しさん:2006/10/30(月) 23:33:07
>>910
強制終了を検出するためにソフトを常駐させ、さらにその強制終了を検出するためにソフトを常駐させ、
さらにその強制終了を検出するためのソフトの強制終了を検出するためのソフトを常駐させ・・・ry

912 :デフォルトの名無しさん:2006/10/30(月) 23:37:19
>>909
フォームの DoubleBuffered を TRUE じゃいかんのか?

913 :デフォルトの名無しさん:2006/10/30(月) 23:45:36
このスレッドはBorland(ボーランド)のDelphi(デルファイ)について、
他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。


914 :デフォルトの名無しさん:2006/10/30(月) 23:57:33
>procedure CopyMonochroData(var BMP: TBitmap);
>begin
>BMP.Assign(MonochroBMPが持っている画像)

で、function CopyMonochroData: TBitmap;
にして、モノクロにし終わったものを受けようかとおもってる(´・ω・`)
BMPにMonochroBMPのデータを渡す方法もわからないし…

わけあって、procedureでやりたかったんだけどね。


915 :910:2006/10/31(火) 00:39:55
>>911
まじですか?w 何個くらい常駐させれば・・・なんて冗談はさておき、

アプリが強制終了される時ってどういう風になってるんですかね。
何か特殊なメッセージでも飛んでくるんでしょうか?
それともいきなりメモリから排除されるんでしょうか?

916 :デフォルトの名無しさん:2006/10/31(火) 01:07:09
クラスをつくって、Freeできるようになったんですが、Freeし忘れるとメモリリークというのが起きるのを知りました。
メモリリークっていうのはどうやって調べるんですか?
今はタスクマネージャの「パフォーマンス」のメモリ使用量のところをじっと見ています。

917 :デフォルトの名無しさん:2006/10/31(火) 01:39:00
>>916
MemCheckやFastMMを使うとメモリリークしている場合警告を出してくれる。
詳しくはボーランドのウェブサイトにあった。ちょっと驚いた。
ttp://bdn.borland.com/article/33696




918 :デフォルトの名無しさん:2006/10/31(火) 01:48:13
>>903
どうせプロパティにするだけでは意味無いしな。

property MyRec:TMyrec read FMyRec write FMyRec;

とか、

procedure TMyClass.SetMyRec(Value: TMyRec);
begin
 FMyRec := Value:
end;

とかw

919 :デフォルトの名無しさん:2006/10/31(火) 03:21:43
ラジオボタンで、アイテム内にチェックの付かない
単なる見出しの行を加えることって可能ですか?
┌───┐
│○東京│
│◎埼玉│
│○千葉│
└───┘
これを、
┌───┐
│[都]  │
│○東京│
│[県]  │
│◎埼玉│
│○千葉│
└───┘
みたいにしたいのですが…。

920 :デフォルトの名無しさん:2006/10/31(火) 04:12:36
>>919
できない
GroupBoxにそれぞれ置いていくしかない

921 :デフォルトの名無しさん:2006/10/31(火) 04:16:50
panel使えよ

922 :919:2006/10/31(火) 05:01:09
>>920-921
なるほど…どうもです。ありがとうございました。


923 :デフォルトの名無しさん:2006/10/31(火) 05:56:23
ショボイけどソフトつくって、InstallShieldExpressでインストーラにしたてました。
で、試しにインストールしてみたけど、アンインストーラがついていません。
市販のソフトなんかにはついてますが、これはどうやってつけるんですか?
Delphi アンインストーラー 作り方なんかでググってみたけど、これといったサイトが見つかりません。
Delphiでは付けられないんでしょうか?

924 :デフォルトの名無しさん:2006/10/31(火) 07:13:00
アンインストーラ、俺も知りたひ(;´Д`)ハァハァ

925 :デフォルトの名無しさん:2006/10/31(火) 08:09:48
>>915
もうこれ以上どうにもならないから強制終了するんであって
まだ何かありようがあるならそもそも強制終了などしないのでは?

926 :デフォルトの名無しさん:2006/10/31(火) 08:11:57
>>923
>>924
最近は使ってないのであれだけど昔使ったときは
何もしなくてもInstallShieldExpressもアンインストールもできたような・・・・
高機能で無料のInno Setupに乗り換えるとかはどう?

927 :デフォルトの名無しさん:2006/10/31(火) 08:31:05
>高機能で無料のInno Setupに乗り換えるとかはどう?

選択肢の一つだと思うけど、データベースとか使ってたらアウトじゃね?

928 :デフォルトの名無しさん:2006/10/31(火) 08:32:23
アンインストーラの資料ってないね。
みんなどうやってたのかな?

929 :デフォルトの名無しさん:2006/10/31(火) 08:33:31
>>927
アウトって何が?

930 :デフォルトの名無しさん:2006/10/31(火) 08:36:20
>>928
みんな普通にできてるから困ってないだけでは?

931 :デフォルトの名無しさん:2006/10/31(火) 08:47:54
>>929
BDEなんぞが入ってない環境にインスコするときはどうすんかってことじゃね?
InstallShieldExpressなら確か一緒にインスコするように設定できなかったけ。

>>930
読む人の助けにもならず、お前の性格の悪さだけが臭うレスだな。
朝から気分悪い。

932 :デフォルトの名無しさん:2006/10/31(火) 09:21:18
>>931
Innoだろうが他のセットアップソフトだろうがBDEインストールできるが・・・・
無知なお前が混乱させといて人のせいにすんなよ。師ね。

933 :デフォルトの名無しさん:2006/10/31(火) 09:58:04
BDE(Borland Database Engine)を配布する方法
http://www.geocities.jp/mystral_kk/iskb13.htm

934 :デフォルトの名無しさん:2006/10/31(火) 10:07:12
事故解決しました。
それにBDEの質問なんてしてません。

935 :デフォルトの名無しさん:2006/10/31(火) 10:09:30
>>860
遅れてすみません。Dispatch を加えてみたのですが、動作しませんでした。
うーん、GetPos やらをしなくてもフォーカスを写して、
キーを押してやるだけでよかったりするのでしょうか。

936 :デフォルトの名無しさん:2006/10/31(火) 10:09:35
ここの連中は関係ないとこでしか盛り上がれないからほっといてやれ
あと解決したならそれを書け

937 :デフォルトの名無しさん:2006/10/31(火) 10:13:41
Inno Setupです

938 :デフォルトの名無しさん:2006/10/31(火) 10:19:09
このスレッドは何がなんだか分からないスレッドです。
お礼は.NETの布教をお願いします。

939 :デフォルトの名無しさん:2006/10/31(火) 11:41:26
あんな糞重いものは布教する気にならん
あれのせいでBDSまで重くなってみんな迷惑してる

940 :デフォルトの名無しさん:2006/10/31(火) 14:00:07
Delphi7インストールしているのですが、最新版の
Turbo Delphi(Win32)をインストールするとDelphi7は消えるのでしょうか?

941 :デフォルトの名無しさん:2006/10/31(火) 14:03:55
消えない

942 :デフォルトの名無しさん:2006/10/31(火) 14:09:59
>>941
わかりました。ありがとう。

943 :デフォルトの名無しさん:2006/10/31(火) 14:14:31
>>940
消えないけど、*.dprとかの関連付けが上書きされてしまうかも。

944 :デフォルトの名無しさん:2006/10/31(火) 14:27:04
>>940>>943
Turboインスコのときに拡張子ごとに関連づけをどうするか聞いてくるので、上書きしたくないものを外してあげればよいです。
インスコウィザードで「はい」を連打すると見逃すかもしれないので、画面をよく見ながら進めませう。


945 :デフォルトの名無しさん:2006/10/31(火) 15:44:58
Del7のコードエディタの文字列検索でコメント以外を対象にしたいの
ですが、方法はありますでしょうか。

946 :デフォルトの名無しさん:2006/10/31(火) 15:49:29
>>943
>>944
そんなことはどうでもいいですが、一応ありがとう。

947 :デフォルトの名無しさん:2006/10/31(火) 16:10:28
batファイルで内容を
*** /install
と記入しているんですが、これをDelphiで書くとどのようになるのでしょうか?
現在は、exeからbatファイルを起動するようにして処理していますが
exeから***を起動したいので・・・
よろしくお願いします。

948 :デフォルトの名無しさん:2006/10/31(火) 16:24:15
>>947
uses に shellapi追加。
ShellExecute(0, nil, '***', '/install', nil, SW_SHOWNORMAL);

949 :デフォルトの名無しさん:2006/10/31(火) 16:26:46
var
 Si: TStartupInfo;
 Pi: TProcessInformation;
begin
 FillChar(Si, Sizeof(TStartupInfo), 0);
 FillChar(Pi, Sizeof(TProcessInformation), 0);
 GetStartupInfo(Si);
 CreateProcess(nil, '***' /install', nil, nil, False, NORMAL_PRIORITY_CLASS, nil, nil, SI, PI);
end;

950 :デフォルトの名無しさん:2006/10/31(火) 17:14:35
>>948
>>949
ありがとう御座いました。
おかげさまで問題が解決しました。

951 :デフォルトの名無しさん:2006/10/31(火) 17:42:08
故意にいらだたせること書いている奴いないか?
ビミョーなこと書いてるが>>946とか。

952 : ̄∨ ̄ ̄ ̄ ̄ ̄ ̄:2006/10/31(火) 18:07:36
     ∧_∧
    ( ´・ω・`)     ∧_∧
    /     \   (    )何言ってんだこいつ 
.__| |    .| |_ /      ヽ
||\  ̄ ̄ ̄ ̄   / .|   | |
||\..∧_∧    (⌒\|__./ ./
||.  (    )     ~\_____ノ|   ∧_∧
  /   ヽ 死ねよ      \|   (    ) 
  |     ヽ           \/     ヽ. 早く病院に逝ってこいよ
  |    |ヽ、二⌒)        / .|   | |
  .|    ヽ \∧_∧    (⌒\|__./ /


953 :デフォルトの名無しさん:2006/10/31(火) 21:05:58
残りカス同士仲良くしなくちゃ・・・・ね!

954 :デフォルトの名無しさん:2006/10/31(火) 22:15:16
Delphi 6 PersonalでのCOMオブジェクトの操作について分かりやすく書かれたサイトってありませんか?
タスクトレイに常駐してiTunesを操作するプログラムでも手始めに作ってみようと思って、、、

955 :デフォルトの名無しさん:2006/10/31(火) 22:21:38
COMオブジェクトなんて結局はクラスオブジェクトと大して変わらん。

956 :デフォルトの名無しさん:2006/10/31(火) 23:47:50
Delphi 5 Enterprizeについてくるコード支援機能はどのコンポーネントを使用していいか分かりません。
TStringListやTComboBoxを使っても出来ませんでした。
どなたかお願いします。

957 :デフォルトの名無しさん:2006/11/01(水) 03:54:50
Enterprize版ならWinSightが付いている。
それでどんなクラスが使われているか調べたらいい。

958 :デフォルトの名無しさん:2006/11/01(水) 09:48:29
>>956
ちょうど今、僕が作成中のソフトにコード支援機能実装してるんでこないだ調べた
TCustomListBox から派生して作ってると思う
Delphiの動き丸々真似るのは面倒くさいんで簡易版て感じになったけど一応出来たよ
留意点としては
Formに貼り付けると画面からはみ出した部分が描画されないので別Windowにする

959 :デフォルトの名無しさん:2006/11/01(水) 11:12:39
SynEditのソースなりを見ればいいのに

960 :デフォルトの名無しさん:2006/11/01(水) 18:23:26
ちなみにLazarusのIDEのソースはもっと参考になるよ

961 :デフォルトの名無しさん:2006/11/01(水) 18:55:35
VBのIDEのソースはもっと参考になるよ

962 :デフォルトの名無しさん:2006/11/01(水) 18:57:59
>>961
さんきゅー

963 :デフォルトの名無しさん:2006/11/01(水) 19:11:06
>>961
有用な情報をいつもありがとう!!!マジで助かります!!

964 :デフォルトの名無しさん:2006/11/01(水) 21:16:29
みんなでVBにいこうぜ!

965 :デフォルトの名無しさん:2006/11/01(水) 21:32:56
そうだそうだ!

966 :ななしへたぐらま ◆XcB18Bks.Y :2006/11/01(水) 21:33:08
空気読まずに流れぶった切りますがそろそろ1000も近いので次スレのためのテンプレを作ってみました.
ためしに勝手に関連スレを追加してみましたがこれをたたき台にでもしてください.(以下,長文連投失礼)
---- >1用 ----------
このスレッドはBorland(ボーランド)のDelphi(デルファイ)について、
他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を
勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが
お礼はDelphiの布教と初心者の救済をお願いします。

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

<過去スレ>
http://delwiki.info/?Delphi+%B4%D8%CF%A2%A4%CE%B2%E1%B5%EE%A5%B9%A5%EC%A5%C3%A5%C9 (上のDelWiki避難所内)
または>>2-10あたりにある過去スレURL

<関連スレ>
※Delphiに関係してる雑談および関係してない雑談については以下でどうぞ
バカボンのDelphi不買・販促・その他談話室その29
http://pc8.2ch.net/test/read.cgi/tech/1153227982/

<その他>
BorlandHomePage
http://www.borland.com/jp/
DelWiki避難所
http://delwiki.info/
BDN(BorlandDeveloperNetwork)
http://bdn.borland.com/jp/delphi
----(続く)----


967 :ななしへたぐらま ◆XcB18Bks.Y :2006/11/01(水) 21:34:23
---- >2用 ----------
<過去スレ>
01:http://pc5.2ch.net/tech/kako/1051/10518/1051882835.html
02:http://pc5.2ch.net/tech/kako/1053/10537/1053757982.html
03:http://pc5.2ch.net/tech/kako/1055/10559/1055986736.html
04:http://pc5.2ch.net/tech/kako/1058/10588/1058834815.html
05:http://pc5.2ch.net/tech/kako/1061/10610/1061090908.html
06:http://pc5.2ch.net/tech/kako/1063/10632/1063202727.html
07:http://pc5.2ch.net/tech/kako/1065/10651/1065195699.html
08:http://pc5.2ch.net/tech/kako/1068/10682/1068201045.html
09:http://pc5.2ch.net/test/read.cgi/tech/1071294733/
10:http://pc5.2ch.net/test/read.cgi/tech/1074523803/
11:http://pc5.2ch.net/test/read.cgi/tech/1076609666/
12:http://pc5.2ch.net/test/read.cgi/tech/1076610073/
13:http://pc5.2ch.net/test/read.cgi/tech/1081003641/
14:http://pc5.2ch.net/test/read.cgi/tech/1085239007/
15:http://pc5.2ch.net/test/read.cgi/tech/1087823906/
----(続く)----


968 :ななしへたぐらま ◆XcB18Bks.Y :2006/11/01(水) 21:37:24
---- >3用 ----------
16:ttp://pc5.2ch.net/test/read.cgi/tech/1089779142/
17:ttp://pc5.2ch.net/test/read.cgi/tech/1091671391/
18:ttp://pc5.2ch.net/test/read.cgi/tech/1093996761/
19:ttp://pc5.2ch.net/test/read.cgi/tech/1097454588/
20:ttp://pc5.2ch.net/test/read.cgi/tech/1101530485/
21:ttp://pc5.2ch.net/test/read.cgi/tech/1104511938/
22:ttp://pc5.2ch.net/test/read.cgi/tech/1107332482/
23:ttp://pc8.2ch.net/test/read.cgi/tech/1110470895/
24:ttp://pc8.2ch.net/test/read.cgi/tech/1115581376/
25:ttp://pc8.2ch.net/test/read.cgi/tech/1119008091/
26:ttp://pc8.2ch.net/test/read.cgi/tech/1121249711/
27:ttp://pc8.2ch.net/test/read.cgi/tech/1126590039/
28:ttp://pc8.2ch.net/test/read.cgi/tech/1131168199/
29:ttp://pc8.2ch.net/test/read.cgi/tech/1135866929/
30:ttp://pc8.2ch.net/test/read.cgi/tech/1138370150/
31:ttp://pc8.2ch.net/test/read.cgi/tech/1142594051/
32:ttp://pc8.2ch.net/test/read.cgi/tech/1145267913/
33:ttp://pc8.2ch.net/test/read.cgi/tech/1148378877/
34:ttp://pc8.2ch.net/test/read.cgi/tech/1151143010/
35:ttp://pc8.2ch.net/test/read.cgi/tech/1155263138/
---- >4用 ----------
<関連?スレ>
Delphi初心者のための寺子屋
http://pc8.2ch.net/test/read.cgi/tech/1132756268/
【Delphi】 Indyコンポーネント 【C++Builder】
http://pc8.2ch.net/test/read.cgi/tech/1093654251/
【Delphi】 ゲームつくるぞ(゚Д゚)ゴルァ 2【Delphi】 (※ゲーム制作技術板)
http://pc8.2ch.net/test/read.cgi/gamedev/1097836469/

※ほかにもスレッドあり.
---- 以上 ----

969 :デフォルトの名無しさん:2006/11/01(水) 21:38:47
VBなら次スレなんて不要なのにね

970 :デフォルトの名無しさん:2006/11/01(水) 22:13:05
過去スレはdelwiki避難所のまとめだけ貼れば、後はいらないよな

971 :デフォルトの名無しさん:2006/11/01(水) 22:39:44
Wiki が突然死したら困るな。
Part 20 以前はWiki に任せるというのは、どうよ?

972 :デフォルトの名無しさん:2006/11/01(水) 22:56:22
テンプレ作成中に失礼します。

BDS2006Proで左右のツールパレットやオブジェクトインスペクタの幅を変更しても
再度起動すると元の位置に戻ってしまいます。
これをきちんと記憶させるにはどうすればいいでしょうか?


973 :デフォルトの名無しさん:2006/11/01(水) 23:10:56
>>972
画面右上にある、現在のデスクトップ設定を保存をクリック。
Default Layout の所に好きな名前を入力しても良い。


974 :デフォルトの名無しさん:2006/11/01(水) 23:15:30
>>972
ツールバーの右端の方の「Default Layout」の隣のアイコン(現在のデスクトップ設定を保存)で
保存しましょう。

975 :デフォルトの名無しさん:2006/11/02(木) 08:20:03
ネット上の更新時刻データを受信してDBに格納するプログラムを作っているのですが、
最初に受信データが空でないことを確認してからDBに入れる処理をしているのに、
1週間に1回ぐらいなぜか空白が渡されるみたいでエラーとなってしまいます。

エラーの原因を見つけるのはもう地道にやろうと思っているのですが、
とりあえずこのエラーが出た場合、5分経ってもエラー画面の
''は時刻ではありません。が表示されっぱなしだった場合、この画面を自動的に
閉じる方法は無いでしょうか。

976 :デフォルトの名無しさん:2006/11/02(木) 08:25:42
そのエラーが出てるウィンドウを探せばいいFindWindowでもEnumWindowsでも
あったらボタンにフォーカスがあたってるからスペースでも押させればいいんじゃない?

977 :デフォルトの名無しさん:2006/11/02(木) 08:30:02
エラーが発生する箇所(おそらくStrToDateTimeの部分)を
try〜exceptで囲めばダイアログは出なくなる
後は、except節の中でエラー時処理を書けばよい


978 :デフォルトの名無しさん:2006/11/02(木) 08:31:48
問いに対する答えではないけど
空ではないが時刻にできない文字列を取得してるのでは?

979 :デフォルトの名無しさん:2006/11/02(木) 09:38:54
>>973-974
ありがとうございました。


980 :デフォルトの名無しさん:2006/11/02(木) 14:00:57
画面上の指定した位置の色を採取したいのですが
どのようにすればよいのでしょうか?

フォトショップ等の画像編集ソフトにある
スポイドツールのようなものをイメージしているのですが・・・。

どうぞよろしくお願いします。

981 :デフォルトの名無しさん:2006/11/02(木) 14:11:40
検索すればいくらでも引っかかるんですけどねぇ・・・たとえば

ttp://www.wwlnk.com/boheme/delphi/vbtodel/control/vtd0060.html
ttp://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200301_03010018.html

982 :デフォルトの名無しさん:2006/11/02(木) 14:47:05
>>981
ありがとうございます。
TImage上の色の取得。
画面のキャプチャ。
がわかりました。

自分のアプリを抜けたところに有る、マウス直下の色を採取したいのですが
どのようにしてマウスを追跡?するのでしょうか?
またデスクトップでマウスが移動したときに起こるイベントのようなものはあるのでしょうか?

983 :980:2006/11/02(木) 15:16:57
マウス直下の色はタイマーを使用して
そのつど画面をキャプチャしその位置の色を読み取る事で成功しました。

画面の色を採取したいときに、その場所までマウスを移動ていますが、
どのウインドウ上でもマウスのポインタの表示を固定したいのですが
どのようにすればよいのでしょうか?
色を採取する時のマウスのポインタは+(選択領域)を使用したいと思います。

以上、よろしくお願いします。

984 :デフォルトの名無しさん:2006/11/02(木) 15:53:06
OpenOfficeのBaseをDelphiから使えますか?

985 :デフォルトの名無しさん:2006/11/02(木) 16:07:39
>>983
Delphi マウスの位置取得 の検索結果のうち 日本語のページ 約 1,120 件
ググればすぐ答えは出てくる
ある程度わかっているのだから検索くらいしよう

986 :980:2006/11/02(木) 16:19:28
>>985
ありがとうございます。
先ほどその件については解決したのですが、
その条件で検索したところ、さらにいい方法がみつかりました。
(bitbltからGetPixelでマウス直下のRGBを取得するようにしました)

もしよければ>>983の質問にも答えていただけないでしょうか?
先ほどから検索しているのですが、よい方法がみつかりません。

以上、よろしくお願いします。

987 :デフォルトの名無しさん:2006/11/02(木) 16:29:36
 Screen.Cursor := crCross;
 try
  //処理
 finally
  Screen.Cursor := crDefault;
 end;

988 :980:2006/11/02(木) 16:32:11
>>987
そんなに簡単だったのか・・・。
ありがとうございました。

989 :984:2006/11/02(木) 16:32:28
Baseの実体はJava製のHSQLDBというものだということまでは分かりました。
JREを入れずに(コンパイルして?)Delphiから使えたら便利なのですけど無理なんですかねぇ。

990 :980:2006/11/02(木) 16:34:35
>>987
と、思ったら、違ってました。
自アプリのウインドウ内ではカーソルの表示が変わるのですが
外に出てしまうと効果が持続されません。

おわかりの方がいらっしゃいましたら、引き続きお願いしたします。

991 :デフォルトの名無しさん:2006/11/02(木) 17:16:48
SetCaptureでいけるんじゃねぇの?

992 :デフォルトの名無しさん:2006/11/02(木) 17:20:26
>>990
それは記述するところが悪いんだなたぶん

993 :980:2006/11/02(木) 18:04:34
>>991
よくわかりません。
詳しくお願いします。

>>992
場所がわるい?
どういう意味でしょうか?

994 :デフォルトの名無しさん:2006/11/02(木) 18:09:01
次スレを立てたよ。

くだすれDelphi(超初心者用)その37
http://pc8.2ch.net/test/read.cgi/tech/1162458229/

995 :デフォルトの名無しさん:2006/11/02(木) 20:31:19
>>994
モツ煮込みカレー


996 :デフォルトの名無しさん:2006/11/02(木) 20:36:51
モツ煮込みカレー食いたくなってきた…(*´д`*)


997 :デフォルトの名無しさん:2006/11/03(金) 03:09:00
         ハ,,ハ
        ('(゚∀゚∩_ おいらをどこかのスレに送って!
      /ヽ   〈/\ お別れの時にはお土産を持たせてね!
     /| ̄ ̄ ̄|.\/
       | .モツ煮..|/
        ̄ ̄ ̄

998 :デフォルトの名無しさん:2006/11/03(金) 03:10:53
         ∧
        /´。 `ーァ モグモグ
      (( {  々,,゚l´ハ,__
      / o  ( :;;' ハ  /
      (   /| ̄ ̄ ̄|.\/
       U^∪ | .モツ煮..|/
              ̄ ̄ ̄

999 :デフォルトの名無しさん:2006/11/03(金) 03:13:15
 ┌───────────────────┐
 │┌─────────────────┐│
 |│                            ||
 ||                            ||
 ||    ,..-──- 、                 ||
 ||  /. : : : : : : : : : \.               ||
 || /.: : : : : : : : : : : : : : ヽ            ||
 ||,!::: : : :,-…-…-ミ: : : : :',  ∩___∩.  ||
 ||{:: : : : :i '⌒'  '⌒' i: : : : :} /        ヽ. ||
 ||{.:: : : : | ェェ  ェェ |: : : : :}/  ●    ● ヽ. ||
 || { : : : :|   ,.、   |:: : : :;!;    (_●_)   ミ||
 || ヾ: : :i r‐-ニ-┐ | : : :ノ:彡    |∪|  、   ||
 ||  ゞイ! ヽ 二゙ノ イゞ‐′/ __ヽノ  /´>||
 |│   /\` ー一'´丿 \ (___)    | (.||
 || /\  \___/   /` |       |   ||
 |└─────────────────┘│
 |                                |
 |  OCT 21 2005                       |
 |                                |
 |           親 友 と               |
 |                                |
 |                      秋の表にて   |
 |                                |
 |                                |
 └───────────────────┘

1000 :デフォルトの名無しさん:2006/11/03(金) 03:14:27
日テレはルパンにひどいことをしたよね(´・ω・`)

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

238 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)