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

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

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

<雑談・討論などはこちらへ>
||:3ミ バカボンのパパのDelphi談話室その28
http://pc8.2ch.net/test/read.cgi/tech/1136472830/

<その他>
Borland Home Page
http://www.borland.co.jp/
DelWiki 避難所。
http://wiki.s54.xrea.com/delphi/
BDN(Borland Developer Network)※英語
http://bdn.borland.com/delphi/

#過去スレは>>2-10のどこかに
2デフォルトの名無しさん:2006/03/17(金) 20:14:56
3デフォルトの名無しさん:2006/03/17(金) 20:17:05
4デフォルトの名無しさん:2006/03/17(金) 20:17:37
5デフォルトの名無しさん:2006/03/17(金) 20:44:07
乙。
6デフォルトの名無しさん:2006/03/17(金) 21:50:00
Delphiゲームプログラミング相談室
http://pc8.2ch.net/test/read.cgi/gamedev/1006249204/
【Delphi】 ゲームつくるぞ(゚Д゚)ゴルァ 2【Delphi】
http://pc8.2ch.net/test/read.cgi/gamedev/1097836469/
delphiでMMO
http://pc8.2ch.net/test/read.cgi/gamedev/1072515100/
Delphiでアクションゲームが作りたい!! Part2
http://pc8.2ch.net/test/read.cgi/gamedev/1027482533/
ネットワークゲーム作成のお勉強(Delphi専用スレ)
http://pc8.2ch.net/test/read.cgi/gamedev/1028278884/
7デフォルトの名無しさん:2006/03/17(金) 22:14:13
もう書いていい?

あのー、Explorerなんかのファイルの「プロパティ」を表示させたとき、
タブ内の「場所:」とかに書かれたフォルダ名ってマウスで選択コピー
できますよね。

たぶんXPスタイルの背景が透けて見えるTEditみたなもんだと
思うんですが、どうやれば実現できます?
8デフォルトの名無しさん:2006/03/17(金) 22:27:32
TEditでColorをclBtnFaceにして、BevelやBorderStyleをNoneにするだけでできるけど。
9デフォルトの名無しさん:2006/03/17(金) 22:43:14
>>8
そうなんだ・・・自分の環境ですと、clBtnFaceにすると、
clBtnFaceの色のままで、背景は透明にならないんですけど。

逆にTPanelをTPageControlの上におくと、TPanelを何色にしても、
透明になってしまう。
10デフォルトの名無しさん:2006/03/17(金) 22:46:43
>>9
( ゚д゚ )
11デフォルトの名無しさん:2006/03/17(金) 22:56:16
Delphi6です。

i: Integer;
i := $1;の時、

i shl -1は$80000000になります。
僕としてはi shr 1と同じように$0になってくれると助かるんですが…
12デフォルトの名無しさん:2006/03/17(金) 22:59:51
で?だから何?
13デフォルトの名無しさん:2006/03/17(金) 23:06:20
>>9
>逆にTPanelをTPageControlの上におくと、TPanelを何色にしても、
>透明になってしまう。

ParentBackgroundがtrueなんじゃないの?
14デフォルトの名無しさん:2006/03/17(金) 23:17:14
>>13
確かにTPanelの場合ParentBackgroundが「透明」に関係してきますね。
Del7だけど、TPageControl上に置いた段階だとParentBackgroundが
falseだけど、実行すると透明になってる。
ParentBackgroundを一度trueにしてfalseに戻すと透明じゃなくなる。

で、TEditだと、TPageControlのXPスタイルの白っぽい色を背景色にはできない?
それとも、設定によって可能? さらには環境によって可能?
15デフォルトの名無しさん:2006/03/18(土) 01:52:28
以下のVBのコードをDelphiに移植しようとしているのですが、型などがどうしても分からずうまくいきません。
すみませんがどなたか教えてください。
Delphi2005Proを使っています。

Dim oCor
Set oCor = CreateObject("hoge.hoge")

Dim ohogeDesk
Set ohogeDesk = oCor.CreatehogeDesk("hage")

Dim IsLoggedIn : Boolean

Call ohogeDesk.Login(sUserName, sPassword, sHostsPath, shageing)
IsLoggedIn = ohogeDesk.IsLoggedIn()

ohogeDesk.Logout
IsLoggedIn = ohogeDesk.IsLoggedIn()
16デフォルトの名無しさん:2006/03/18(土) 02:02:30
hogeが何なのか分からないので型なんて分かりませんが、
(Ole)Variant使っとけばVBぽくて楽でしょう
17デフォルトの名無しさん:2006/03/18(土) 15:30:04
質問です。
Delphi2006からはレコード型にメソッドを実装することが出来るようになったようですが、
オペレータオーバロードができるのを除くと、レコード型はTP時代からあるobject型とほとんど同じになった
と考えてよいのでしょうか?
18デフォルトの名無しさん:2006/03/18(土) 15:33:54
Delphi8からだったっけか、object型自体が無くなっちゃったからな
1917:2006/03/18(土) 15:36:49
>>18
object型がないのはDelphi.NETだけのようです。
20http://www.vector.co.jp/soft/win95/util/se072729.html:2006/03/18(土) 18:55:18
TextSS の64bit化おながいします

もしくは64bitにネイティブ対応した置換ソフトないですか?
21デフォルトの名無しさん:2006/03/18(土) 18:59:22
世の中には4連休の方もいらっしゃるとか…
で、お聞きしたいのですが、TreeViewに追加したTreeNodeを、
HNode[i] := AddNode; というように動的配列に退避しています。
その後、選択ノードを削除してね、とユーザが操作した場合は
TreeView1.Selected.Delete; と削除します。このとき、動的配列内のTreeNodeの
どれが削除されたかチェックしたいのですが、削除しても nil にはならないようで
判定方法でつまずいています。ご存知の方がいましたらお願いします。
22デフォルトの名無しさん:2006/03/18(土) 19:05:20
TTreeNode には、Data プロパティーがあるんだら、ポインタにキャストして
退避したときのインデックスを記録しておけばいいんじゃないの?

参照を退避して何の意味があるのか皆目見当がつきませんが。
2321:2006/03/18(土) 19:19:52
うう… Data を使った方が良かったかも。でももうかなり作りこんじゃったしな。
OnDeletion イベントで何とかなりそうな気もしてきたし。ちょっと考えて見ます。
>>22 さんありがとうございました。
24デフォルトの名無しさん:2006/03/18(土) 19:44:09
Delphiなんて販売停止が決まったツール使わない方がいいよ。
プログラミングを楽しみたいんだったらVBの方がマシ。
25デフォルトの名無しさん:2006/03/18(土) 19:53:58
VBじゃやれること限られるし、
VB.NETはネイティブなコード書けません。
煽るんならまずこの2点を何とかして下さい。
26デフォルトの名無しさん:2006/03/18(土) 20:01:17
>>25
目的と手段を履き違えてます。
ネイティブでないとできないことって何でしょう?
27デフォルトの名無しさん:2006/03/18(土) 20:11:02
VBは6で終わったって言うのが現実だもんな・・・。
.NETでVBを使う人はさすがにいないだろうし。
28デフォルトの名無しさん:2006/03/18(土) 20:27:14
>>26
普及。
29デフォルトの名無しさん:2006/03/18(土) 22:09:52
起動した時にEditにPCのLocalAdressを表示させたいのですが
どのようにすればいいんでしょうか?
30デフォルトの名無しさん:2006/03/18(土) 22:21:55
31デフォルトの名無しさん:2006/03/18(土) 22:31:24
>>30
ServerSocketを使用してたので


procedure TForm1.FormCreate(Sender: TObject);
begin
EditIP.Text := ServerSocket1.Socket.LocalAddress;
end;


としたのですが思ったような効果が得られません・・
何が問題なのでしょうか?
32デフォルトの名無しさん:2006/03/18(土) 23:09:54
>>31
それだと0.0.0.0になるんじゃね?

どうしてもServerSocket使いたいならLookupしないと駄目でしょ。
iNet_ntoa(ServerSocket1.Socket.LookupName((ServerSocket1.Socket.LocalHost)));
33デフォルトの名無しさん:2006/03/18(土) 23:24:02
PopupMenuのMenuItemでRadioItemをtrueにしても、
チェックマークが黒丸になってくれないのですが何故でしょう?
バージョンはi2006です。
34デフォルトの名無しさん:2006/03/19(日) 00:45:47
排他選択するってだけで、外見がふつうの
ラジオボタンみたいになる訳じゃないんじゃない?

などと、ヘルプも見ずにいってみる
35デフォルトの名無しさん:2006/03/19(日) 00:48:16
ウチの環境だとちゃんと黒丸になるけどな
3634:2006/03/19(日) 01:06:50
試してみたけど黒丸です。
Delphi2006 WinXP Luna有効 manifestなし

とりあえず、フォームにポップアップメニューだけ貼り付けて試してみては?
37デフォルトの名無しさん:2006/03/19(日) 01:27:14
>>35,36
試してくれてありがとうございます。

確かに最小のプログラムでは黒丸になりました。
駄目なプロジェクトと何が違うのか見てみたのですが、
ImageListを設定していると黒丸にならなくなるようです。
そういうものなんでしょうか?
38デフォルトの名無しさん:2006/03/19(日) 02:31:32
>>37
( ゚д゚ )
39デフォルトの名無しさん:2006/03/19(日) 08:23:23
AnsiStrScanの大文字小文字区別なしバージョンないですか?
40デフォルトの名無しさん:2006/03/19(日) 09:58:44
どっちかに揃えろ
41デフォルトの名無しさん:2006/03/19(日) 11:26:34
Edit1に入力された↑↓をListBox1に転送するコードってどう書けばいいですか?
自分でListBox1のカーソルを動かしてやればいい話ではありますが・・・
42デフォルトの名無しさん:2006/03/19(日) 12:21:12
実装している関数のクラス名を取得することはできますか?
ClassNameは実装ではなく、インスタンスのクラス名を返してしまいます。
43デフォルトの名無しさん:2006/03/19(日) 12:56:09
>>37
バグかな。仕様にしては変だし。
44デフォルトの名無しさん:2006/03/19(日) 13:25:37
質問です。お願いです。
キーボードの調子が悪く、押しても反応しなかったり、連打しないと打てない文字が、
あります。
右の「シフトキー」とか、「9」とか、かぎ括弧も何回か押さないと出ません。
しかも最近「F8」もなかなか反応しないことが分かりました。
(F8が効かないのでセーフモードに出来ないことがあった)
メカニカルキーボードなので、ハンダのクラックを疑っているのですが、
どのキーが不調なのか明らかにしたいのです。
そこで、
キーを押してみて反応があるとlabelに「ok」とか出るのを作れませんか?
altとかpauseとかすべてのキーに対応したやつ。
3行くらいで出来ますか?
ソースコードきぼんです。
私はdelphi6/personalを使っています。

45デフォルトの名無しさん:2006/03/19(日) 14:15:35
>>39
比較対象を大文字か小文字にしろ

>>41
意味が理解出来んがこういう意味か?
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
Index: Integer;
begin
Index:= ListBox1.ItemIndex;
if Key = VK_DOWN then
Inc(Index)
else if Key = VK_UP then
Dec(Index);
if (Index >= 0) and (Index < ListBox1.Items.Count) then
ListBox1.ItemIndex:= Index;
end;

>>42
確か無理

>>44
知らん
46デフォルトの名無しさん:2006/03/19(日) 16:06:28
Delphiってもう販売されなくなるんですよね。
VBに乗り換えた方がいいですか?
47デフォルトの名無しさん:2006/03/19(日) 16:07:22
そうしたらw
48デフォルトの名無しさん:2006/03/19(日) 16:14:39
DelphiはVBと違ってgenericsすらないし
49デフォルトの名無しさん:2006/03/19(日) 16:16:18
弄って欲しいならバカボンスレで
50デフォルトの名無しさん:2006/03/19(日) 16:32:45
VBよりLazarusの方がまだ遙かにマシだろうな。
51デフォルトの名無しさん:2006/03/19(日) 17:36:31
それはさすがに言い過ぎな感じ。
52デフォルトの名無しさん:2006/03/19(日) 17:42:06
お前ら事業売却になった製品なんてよく使えるね
53デフォルトの名無しさん:2006/03/19(日) 17:47:27
そんな製品世の中に腐るほどあるわw
54デフォルトの名無しさん:2006/03/19(日) 17:51:31
MS製品なんて買い取った(つまり売却された)製品ばっかだしな
55デフォルトの名無しさん:2006/03/19(日) 17:52:55
>>42: 実装している関数のクラス名を取得:
実装しているクラスの中から呼ぶんだから、静的に解決する。
仮想にはせず
class function TMyClass.getImplementClassName:string
begin result:= 'TMyClass'; end;
を作っているメソッドのクラスに実装。
56デフォルトの名無しさん:2006/03/19(日) 17:54:12
サポート期間切れた製品がってことならまだ分かるが・・・。
そもそも売却騒動って新会社設立のためのパフォーマンスだしな
57デフォルトの名無しさん:2006/03/19(日) 17:57:19
ここで釣られてる奴そろそろ死んでね
58デフォルトの名無しさん:2006/03/19(日) 18:06:45
釣りじゃないよ。事業売却になって先がないのに使ってて大丈夫なの?って心配してるんだよ。
59デフォルトの名無しさん:2006/03/19(日) 18:15:37
逆に質問だけど、売却だとなんで先がないことになるの?
60デフォルトの名無しさん:2006/03/19(日) 18:17:25
>>59
そういうことにしておかないと困るからです。
61デフォルトの名無しさん:2006/03/19(日) 18:17:57
>>58
お前は>>1を理解できるまで読み続けろ
62デフォルトの名無しさん:2006/03/19(日) 18:19:23
結局売却されないしな
元々売る気なかった気もするが
63デフォルトの名無しさん:2006/03/19(日) 18:22:38
TEditやTMemoってUnicode対応にできませんか?
64デフォルトの名無しさん:2006/03/19(日) 18:22:39
まぁVB厨は癌ばれや
最近ほぼ死滅から完全に死滅へと移行してるようにしか見えんよ
65デフォルトの名無しさん:2006/03/19(日) 18:24:21
66デフォルトの名無しさん:2006/03/19(日) 18:24:34
>>44 >3行くらいで出来ますか? 釣りかな?メッセージがこないので、絶対に
不可能、という気がする。
>>63 Tntコンポーネントが割りと(バグも少しあるけど)使える。
67デフォルトの名無しさん:2006/03/19(日) 18:38:08
TEditやTMemoってUnicode対応にできませんか?
68デフォルトの名無しさん:2006/03/19(日) 18:40:38
MainMenu1の[ファイル|ツール]以下のメニュー内容と
PopupMenu1の内容をリンクさせる手っ取り早い方法ないですか?
69デフォルトの名無しさん:2006/03/19(日) 19:00:52
>>68
ToolBar2000にポップアップメニューをメインメニューのサブアイテムとして組み込む機能がある。
70デフォルトの名無しさん:2006/03/19(日) 19:08:49
>>69
Actionを使っているならコードで簡単にコピーできるよ。
7170:2006/03/19(日) 19:09:21
アンカー間違えた。68ね。
72デフォルトの名無しさん:2006/03/19(日) 20:01:48
VCLにバグがあってももう某は直してくれないんだよ。IDE事業売却しちゃったから。
そんな製品使ってて本当に大丈夫なの?
73デフォルトの名無しさん:2006/03/19(日) 20:18:23
別に某が直さなくても、DevCoが直すわけなんだが。
74デフォルトの名無しさん:2006/03/19(日) 20:26:01
Delphiでデータベースを使うプログラムを作ることになりました。
DBの文字コードセットはUnicodeです。

Delphiの標準のデータベースコンポーネント(TDBEditなど)
を使って、SJISのデータを自動的にUnicodeに変換・復元
するような処理はできるのでしょうか?
75デフォルトの名無しさん:2006/03/19(日) 20:26:43
>72
おい、明日仕事だろ? さっさと寝ろよ。
76デフォルトの名無しさん:2006/03/19(日) 20:56:23
>>74
VB.NETなら簡単にできます。
77デフォルトの名無しさん:2006/03/19(日) 21:31:24
>>76
どうやるんですか?
78デフォルトの名無しさん:2006/03/19(日) 21:38:32
>>72とか、まぁ一覧のは同一人物なんだろうが、
一つ勘違いしてるのは売られたとしても部門ごとなので
開発チームは全く変わらない。
極端に言えばBorland DelphiかInprise Delphiっていう違いしかない。
79デフォルトの名無しさん:2006/03/19(日) 21:39:06
一覧ってなんだ('A`)
一連ね。
まぁたまには釣りにマジレスしてもいいよな?
80デフォルトの名無しさん:2006/03/19(日) 21:56:08
だめぇ〜
81デフォルトの名無しさん:2006/03/19(日) 21:57:02
一人が食いつくと、連鎖的に入れ食いになるので
我慢してください><
82デフォルトの名無しさん:2006/03/19(日) 22:01:24
つーか、売却の話はスレ違いだし。
83デフォルトの名無しさん:2006/03/19(日) 22:08:53
TEditやTMemoってUnicode対応にできませんか?
84デフォルトの名無しさん:2006/03/19(日) 22:21:29
>>82
数日前、売却スレの新スレを立てたところ、即削除されてしまいました。
仕方がないので、ここで売却関連の話をするしかないのです。
85デフォルトの名無しさん:2006/03/19(日) 22:23:48
>>82
スレ違いではありません。

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

売却の話もDelphiの質問としてしているのです。
86デフォルトの名無しさん:2006/03/19(日) 22:23:57
「入れ食い」って釣るほうが使う言葉なんだが
87デフォルトの名無しさん:2006/03/19(日) 22:25:00
TEditやTMemoってUnicode対応にできませんか?
88デフォルトの名無しさん:2006/03/19(日) 22:26:22
TEditやTMemoってUnicode対応にできませんか?
89デフォルトの名無しさん:2006/03/19(日) 22:27:42
TEditやTMemoってUnicode対応にできませんか?
90デフォルトの名無しさん:2006/03/19(日) 22:29:00
TEditやTMemoってUnicode対応にできませんか?
91デフォルトの名無しさん:2006/03/19(日) 22:30:00
TEditやTMemoってUnicode対応にできませんか?
92デフォルトの名無しさん:2006/03/19(日) 22:31:30
TEditやTMemoってUnicode対応にできませんか?
93デフォルトの名無しさん:2006/03/19(日) 22:32:27
質問です。お願いです。
キーボードの調子が悪く、押しても反応しなかったり、連打しないと打てない文字が、
あります。
右の「シフトキー」とか、「9」とか、かぎ括弧も何回か押さないと出ません。
しかも最近「F8」もなかなか反応しないことが分かりました。
(F8が効かないのでセーフモードに出来ないことがあった)
メカニカルキーボードなので、ハンダのクラックを疑っているのですが、
どのキーが不調なのか明らかにしたいのです。
そこで、
キーを押してみて反応があるとlabelに「ok」とか出るのを作れませんか?
altとかpauseとかすべてのキーに対応したやつ。
3行くらいで出来ますか?
ソースコードきぼんです。
私はdelphi6/personalを使っています。
94デフォルトの名無しさん:2006/03/19(日) 22:33:13
TEditやTMemoってUnicode対応にできませんか?
95デフォルトの名無しさん:2006/03/19(日) 22:34:01
TEditやTMemoってUnicode対応にできませんか?
96デフォルトの名無しさん:2006/03/19(日) 22:34:39
TEditやTMemoってUnicode対応にできませんか?
97デフォルトの名無しさん:2006/03/19(日) 22:36:16
TEditやTMemoってUnicode対応にできませんか?
98デフォルトの名無しさん:2006/03/19(日) 22:38:20
キーボードなんか2000円で売ってるだろ・・・
TextSS のWindowsXP(Professional)64bit化おながいします

もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?

そういや64bitにネイティブ対応している2chブラウザてありましたっけ?

100デフォルトの名無しさん:2006/03/19(日) 22:55:50
>>84
こっち行ってやれって。

||:3ミ バカボンのパパのDelphi談話室その28
http://pc8.2ch.net/test/read.cgi/tech/1136472830/

>>85
> 売却の話もDelphiの質問としてしているのです
「Delphiの質問」じゃなくて「Borlandの経営戦略に関する質問」だろ、それは。
101デフォルトの名無しさん:2006/03/19(日) 22:57:59
Delphiの質問です。TEditやTMemoってUnicode対応にできませんか?
102デフォルトの名無しさん:2006/03/19(日) 22:59:47
できません。
103デフォルトの名無しさん:2006/03/19(日) 23:27:13
>>102

ありがとう。上司にそう報告しとく。
104デフォルトの名無しさん:2006/03/19(日) 23:37:54
上司「どうやって調べたんだ?」
103「2chで質問して・・・」
105デフォルトの名無しさん:2006/03/19(日) 23:39:16
上司「やはり、まだ対応してないんだな。」
103「そのようです。」
106デフォルトの名無しさん:2006/03/20(月) 00:16:28
Delphiは趣味グラマが多いから売られたってどうでもいいよ
第一Win32全盛の現在はD6さえあれば何とかなるし、
結局Vistaもネイティブだからそのままいける
107デフォルトの名無しさん:2006/03/20(月) 00:32:05
無職ニートの相手をするなや
108デフォルトの名無しさん:2006/03/20(月) 07:15:18
いえてぃる。このまま、エンタプライズ路線を突き進んで、趣味グラマなんか無視しろ。
109デフォルトの名無しさん:2006/03/20(月) 07:58:53
>>108
おまえはアホか。。。
110デフォルトの名無しさん:2006/03/20(月) 08:18:52
>>109 某に言え。
111デフォルトの名無しさん:2006/03/20(月) 08:42:02
Label の横に Edit や ComboBox などを置くことって結構多いと思うのですが、
普通に置くと高さ(Top)が合わず、いつも微調整しています。
一発であわせるように調整することって出来るものなのでしょうか。
112デフォルトの名無しさん:2006/03/20(月) 08:50:11
>>111
バージョンいくつ?
EditならLabeledEditっていうのがあると思うけど7以降だったかな。
113デフォルトの名無しさん:2006/03/20(月) 08:51:41
個人的に懐かしいネタだ。
結構前にFocusControl設定したら微調整するLabelEx作ったことあったな。
なんとなくどっか逝ってしまったが。
というわけで標準の機能じゃ無理。
役に立たないけどLabeledEditなんて半端なコンポもある。
114デフォルトの名無しさん:2006/03/20(月) 08:54:23
>>111
つ Delphi2006のコンポーネント・ガイドライン。
115デフォルトの名無しさん:2006/03/20(月) 09:05:11
>>111
つ 2006のGridPanel
116デフォルトの名無しさん:2006/03/20(月) 09:07:49
2006とか誰も使ってないバージョンであるある言っても意味ないよ。
というか社員乙。はやく2006Personalのリリース決断してね。
そうしないとつぶれちゃうよ♪
117111:2006/03/20(月) 09:49:06
バージョンを書き忘れていました。Delphi7 Pro です。
Edit を使うときは LabeledEdit を利用したいと思います。
>>113 FocusControl設定したら微調整するLabelEx って、良いですね。
FocusControl はまず間違いなく設定するので、便利な感じがします。
Control先を移動したら一緒に移動してくれたりしたら更に便利ですね。
逝ってしまったのが惜しい… でもちょっとWebで探してみます。
118デフォルトの名無しさん:2006/03/20(月) 11:46:42
Delphiって今後某の手を離れてアクチができなくなるんですよね。
せっかく買ったのにどうすればいいですか?
119デフォルトの名無しさん:2006/03/20(月) 12:05:42
VBに乗り換えた方がいいよ。最新版が無償だし。
120デフォルトの名無しさん:2006/03/20(月) 12:21:24
Delphiは二度と無償版なんて出ないしね
121デフォルトの名無しさん:2006/03/20(月) 13:10:24
Lazarusに期待するしかないなこりゃ・・・ハァ
122デフォルトの名無しさん:2006/03/20(月) 13:17:18
とりあえずBDS2005を注文してみた。
123デフォルトの名無しさん:2006/03/20(月) 13:17:50
2006だった・・orz
124デフォルトの名無しさん:2006/03/20(月) 13:20:07
BDS2006に、ADOConnectionとか無いの?
D7Proにはあるのに・・。
125デフォルトの名無しさん:2006/03/20(月) 13:21:23
あるよ。
126デフォルトの名無しさん:2006/03/20(月) 15:49:36
100000000を100,000,000みたいに桁区切りされた
文字列で表示するにはそうすれば良いの?
127デフォルトの名無しさん:2006/03/20(月) 15:59:20
1度浮動小数点に変換してFormat関数

var
 iTemp: Integer;
 dTemp: Double;
begin
 iTemp := 100000000;
 dTemp := iTemp;
 ShowMessage(Format('%.0n', [dTemp]));
end;
128デフォルトの名無しさん:2006/03/20(月) 16:04:34
つい最近Delphiをいじり始めました

マインドマップ的な非線形エディタが目標です

・Indesignみたいに好きなところにテキスト入力エリアを作れる
・MindManeger、SVG catsみたいに各要素がリンクしている
・テキストにリンクをはって注釈やファイル、編集中のファイルの別な場所へリンク
・できれば他の形式に変換してIllustratorとかで編集したい
・画面を拡大縮小できる

とりあえず入門講座をさらっていますが、どうすれば上記のような
機能が実現できるかアドバイスお願いします。
129デフォルトの名無しさん:2006/03/20(月) 16:10:55
>>127
おぉ、なるほど
ありがとう
130デフォルトの名無しさん:2006/03/20(月) 16:14:28
>>127
そんなことしなくてもFormatFloatで一発

var
 i: Integer;
begin
 i := 100000000;
 ShowMessage(FormatFloat(',0', i)); //100,000,000と表示
end;
131デフォルトの名無しさん:2006/03/20(月) 17:31:26
>>128
飛躍しすぎなのでまず基礎を固めて下さい
132デフォルトの名無しさん:2006/03/20(月) 18:04:52
>>125
すいません、探したらありました。dbgoパレットなんですね。
お手数かけました。
133デフォルトの名無しさん:2006/03/20(月) 18:21:41
>>128
>どうすれば
その仕様通りに動くようプログラムを書く。
もしくは書かせる。
134デフォルトの名無しさん:2006/03/20(月) 18:21:58
フィルタリング使って探せば一発じゃん
せっかく便利な機能があるんだから使おうよ
135デフォルトの名無しさん:2006/03/20(月) 18:57:05
フィルタだけど最初がわからないのも検索できるともっと便利だよね。
Buttonと打つとxxxButtonが表示されるって感じで。
136デフォルトの名無しさん:2006/03/20(月) 19:00:20
結局、TLabelEx は見つからなかった…
で、またまたIDEな質問ですみません。delphi7 Pro です。
ImageList に格納されている画像が24ビットなのか8ビットなのか 等を
知るすべはあるでしょうか。
137デフォルトの名無しさん:2006/03/20(月) 19:20:46
すみません。
dbExpressのドライバをアップデートしたいのですが
どこでできるのかわかりません。
力を貸してください。おねがいします。
138デフォルトの名無しさん:2006/03/20(月) 19:31:42
>>137
違法コピーでなければ、某に問い合わせてください。
139デフォルトの名無しさん:2006/03/20(月) 19:38:04
もちろん違法コピーではありません。
ボに問い合わせって?
メールでってこと?
普通はホームページとかにダウンロードできるように置いておくんじゃないの、
ボの社員はサボってるのか、なんか書いてて腹立ってきた。
140デフォルトの名無しさん:2006/03/20(月) 19:42:54
さっきは怒ったりしてごめんなさい。
書き忘れましたがSQLServer用のドライバがほしいんです。
141デフォルトの名無しさん:2006/03/20(月) 19:43:54
きっと違法コピーなんだろ。質問は違法コピーでなければサポートへどうぞ、ってことになってるらしい
142デフォルトの名無しさん:2006/03/20(月) 19:50:11
違法コピーではありません。
だってダウンロードしてインストールするにもインストール番号・キー
とかいるじゃん。
もう疲れたよ〜。もう正直どうでもよくなっちゃった。
さっきまではやる気まんまんだったけどね。
また納期に遅れるよ。お客さんごめんなさい。
143デフォルトの名無しさん:2006/03/20(月) 19:58:39
その客、色々と可哀そうだな
144デフォルトの名無しさん:2006/03/20(月) 20:01:02
ぱっと見たところなさそうだから問い合わせろと言ってるんだが。

「2chで教えてもらえなかったので納期遅れます」なんて客先がかわいそうだ。
145デフォルトの名無しさん:2006/03/20(月) 20:02:33
せめてバージョンくらい書いてくれ。
146デフォルトの名無しさん:2006/03/20(月) 20:06:55
バージョンは6です。
あと正直'サポートに問い合わせ'の方法知らないんです。
知っている人は教えてください。
お母さんのように優しく教えてくれるとうれしいです。
147デフォルトの名無しさん:2006/03/20(月) 20:09:20
>>146
俺も問い合わせ方法は知らないので、教えられません。





調べればわかるけど。
148デフォルトの名無しさん:2006/03/20(月) 20:14:09
http://www.borland.com/downloads/registered/del6_reg_updates_prompt.html
ここにあるのしかないんでないの。
149デフォルトの名無しさん:2006/03/20(月) 20:19:14
ふぅ〜
もう無理です。
お腹が痛くなってきたので今日はもう帰ります。
誰も教えてくれないから2時間も残業しちゃったよ。
150デフォルトの名無しさん:2006/03/20(月) 20:23:25
今書類全部しまった。
じゃ帰る。
さっきカレンダー見たら明日休みだからテンション上がってきた。エヘヘ
151デフォルトの名無しさん:2006/03/20(月) 20:32:14
な、な、な、なんどもすみません。
あ、あ、あ、あ、あきらめて帰ろうとしたらこんなのありました。
http://crlab.com/dbx/download.html
違いますか?ダウンロードして大丈夫でしょうか?
152デフォルトの名無しさん:2006/03/20(月) 20:59:01
>>136
TImageListはDDBを使ってるんでない?
153デフォルトの名無しさん:2006/03/20(月) 20:59:13
>TEditやTMemoってUnicode対応にできませんか?

TEdit.Text を取得してそれをUnicode変換したり逆に
変換したりすればいいだけじゃねえのか?

つーか、質問の意味がわからん。
154デフォルトの名無しさん:2006/03/20(月) 21:16:38
>>152
いや全然違うから
155152:2006/03/20(月) 21:18:35
>>154
全然違うとは? ILC_COLORDDBしか使ってないと思うけど。
156デフォルトの名無しさん:2006/03/20(月) 21:23:28
TImageList を貼り付けてあるユニット名.dfm を見ると
何となく24ビットっぽいのと8ビットぽいのが混じってる気がする。
157デフォルトの名無しさん:2006/03/20(月) 21:26:16
>>153 キミには無理。
158デフォルトの名無しさん:2006/03/20(月) 21:30:42
proc(s: string);
にPChar渡すと問答無用でコピーが発生してしまうんですか?
159デフォルトの名無しさん:2006/03/20(月) 21:34:23
そうだね。
160デフォルトの名無しさん:2006/03/20(月) 21:40:44
>>156
実行時にImageListに追加するときは、結局DDBに変換してるみたいだね。

ところでどうして色解像度を取得したいんだろう?
161デフォルトの名無しさん:2006/03/20(月) 21:43:47
ある自作のソフトが稼動しています。
また、あるツールがあり、このツールからは外部のプログラムを駆動したり、メールを送信することができます。

ここで質問なのですが、稼動中の自作のソフトにツールから即時に処理をさせたい情報を送るには
どうすればいいでしょうか?

テキストファイルに処理させたい情報を書く方法をやってみたのですが、同時にアクセスするとエラーになり、
双方のソフトで同時にアクセスしないように監視すると処理が遅れてしまうので、できるだけ簡単なコードで済む
何かいい方法が無いかと思いまして。
162デフォルトの名無しさん:2006/03/20(月) 21:47:03
>>161
DDE
SendMessage(WM_COPYDATA
レジストリ使っていいならOLEオートメーション
163デフォルトの名無しさん:2006/03/20(月) 21:57:55
>>162
即レスありがとうございます。

その3つはツールからは新たなプログラムを呼び出して、そのプログラムからDDEなりSendMessageで
自作のソフトに情報を伝える方法でしょうか?

ワンクッション入れるしか無いんですね・・・
164デフォルトの名無しさん:2006/03/20(月) 21:58:09
>>160 ImageList に(他人が)追加した数100のビットマップがあるんですが、
解像度が色々でして、なるべく8ビットに統一したいな、という感じで言われて
おりまして、ただ力技で取り出しては変換ってやり方は面倒だ、Delphi使いも
回りにおらず、質問させていただきました.。
165デフォルトの名無しさん:2006/03/20(月) 22:12:30
>>163
稼働中のソフトには手を加えられないのか?
であればSendMessageやらkeybd_eventとかで無理やり操作するしかないと思うが…
166154:2006/03/20(月) 22:26:00
>>155
ん?ああ、スマン間違えた
>>154でなく>>153
167デフォルトの名無しさん:2006/03/20(月) 22:26:58
>>165
稼動中のソフトには手を加えられますが、ツールは外部のプログラムを起動することしかできないので、
ツールから呼ぶときの方法が無いと思いまして・・・
168デフォルトの名無しさん:2006/03/20(月) 22:38:53
>>167
ああ、ツールの方が固定なのね。
OLEオートメーションにしてツールからはWSH経由で、とかもできそうだが、そんなことするぐらいならワンクッションかました方が楽だわな…。
読む限り、ソフトをstmpサーバーにしてメール本文に情報を、とかできそうだが、そんなことするぐらいならワンクッションかました方が楽だわな…。
うーむ。
169デフォルトの名無しさん:2006/03/20(月) 22:39:05
> 稼動中の自作のソフトにツールから即時に処理をさせたい情報を送るには

両方手が入れられるんなら、SendMessage() が一番簡単。ただし、送り先の
ハンドルを見つけやすいようにするのがキモ
170デフォルトの名無しさん:2006/03/20(月) 22:41:47
あー、ツール固定なの? なら、ツールが呼び出す方式は変えられないんだから
どうにもならん。SendMessage するだけのアプリを起動するとか?
171デフォルトの名無しさん:2006/03/20(月) 22:42:29
>>164
逆に一つのImageListに形式が異なる画像を混在させることはできないんじゃない。

しかし数百ってImageListを画像のストレージとして使ってるのかな。
172デフォルトの名無しさん:2006/03/20(月) 22:46:29
> ただ力技で取り出しては変換ってやり方は面倒だ

これが一番簡単そう。
173デフォルトの名無しさん:2006/03/20(月) 22:52:46
>テキストファイルに処理させたい情報を書く方法をやってみたのですが、同時にアクセスするとエラーになり、
>双方のソフトで同時にアクセスしないように監視すると処理が遅れてしまうので、できるだけ簡単なコードで済む

そのツールでテキストファイルに情報を書くことも出来るの?
174デフォルトの名無しさん:2006/03/20(月) 22:56:56
>>173
_です。ワンクッション入れてRAMDISK上のファイルに指令を書かせていました。
175デフォルトの名無しさん:2006/03/20(月) 23:31:04
自作ソフトをコマンド引数でいろいろ出来るようにして、
既に自作ソフトが起動しているなら、そのプロセスにSendMessageなり
投げて終了、起動してなければそのまま引数解釈して処理する。
176デフォルトの名無しさん:2006/03/21(火) 00:17:50
>>175
と言うことは2重起動禁止のコードを追加して、もし既に起動していたらパラメーターをSendMessage、
起動してなかったら通常の処理って形であってますか?

Delphi4の頃に2重起動防止のコードは書いたけど最近のでも通るかな・・・
プロジェクトファイルをいじるのが久しぶりでちょっと不安だったりする・・・
177デフォルトの名無しさん:2006/03/21(火) 00:34:06
>>176
面倒ならSendMessageだけの別プログラムでもいいと思うけど
178デフォルトの名無しさん:2006/03/21(火) 01:00:22
2重起動防止のコードはググルと山のようにある。おすすめは Mutex つかうやつ
179デフォルトの名無しさん:2006/03/21(火) 01:57:42
しかし元アプリにコマンドライン引数転送して
ウィンドウアクティブにするところまでちゃんと書いたサンプルはないんだよな。
180デフォルトの名無しさん:2006/03/21(火) 02:11:19
とりあえず格闘してますが駄目ぽ。。。orz

cd.dwData := SIGNATURE_STRING;
cd.cbData := Length('TestDataNo.1!')+1;
cd.lpData := PChar(cd.cbData);
try
StrCopy(cd.lpData, PChar(cd.cbData));
SendMessage(Handle, WM_COPYDATA, WPARAM(Handle), LPARAM(@cd));
finally
StrDispose(cd.lpData);
end;

ボタンを押したら上記のコードを実行するようにして自分自身に送ろうとしてるんだけど、
SendMessageでエラーが発生してしまいます。
あちこちソースを見てるんだけどソースは間違ってないっぽいんですがどこがおかしいのでしょうか?

2重起動防止のほうは昔のコードがそのまま通りますた。
181デフォルトの名無しさん:2006/03/21(火) 02:27:19
面倒だからメッセージ定義したら?
適当にWM_APPに値を足した定数を定義して

const
 WM_HOGE = WM_APP + 100;

TFormで捕まえる

TForm1 = class(TObject)
private
 procedure WMHoge(var Message: TMessage); message WM_HOGE;
end;
182デフォルトの名無しさん:2006/03/21(火) 02:31:26
>>180
Handleには何が入ってますか?
183デフォルトの名無しさん:2006/03/21(火) 02:34:51
>>179
多重起動防止のサンプルと任意データ送信のサンプル見れば分かるだろ
それを組み合わせる方法なんて考えるまでもないし。

>>180
>PChar(cd.cbData);
長さ入ってるデータのポインタ取ってどうするよw
データのポインタ入れるの。
最後にStrDisposeしてるならそこでStrAlloc汁

おかしい原因は割り当ててもいないアドレス(データ長差してる)に
文字列を上書きしちゃってて、さらにそれを解放してるせい。
メモリ破壊が起きまくってる。
184デフォルトの名無しさん:2006/03/21(火) 02:36:47
>多重起動防止のサンプルと任意データ送信のサンプル見れば分かるだろ
わかってるならこんなやり取りは発生しないわけで
185デフォルトの名無しさん:2006/03/21(火) 02:41:28
てかニフティフォーラムのFAQにそのまんまのコードあるやん
よく探せや
186デフォルトの名無しさん:2006/03/21(火) 02:42:08
>よく探せや
あるならこんなやり取りをする必要はないわけで
187デフォルトの名無しさん:2006/03/21(火) 02:43:59
>>184-186
m9(^Д^)プギャー
188デフォルトの名無しさん:2006/03/21(火) 02:44:30
まぁまぁお前ら
ココはくだすれだし
189デフォルトの名無しさん:2006/03/21(火) 02:46:00
>>181
ごめん。意味が分からないっす。。。

>>182
findwindowで取り込んだ自分自身を入れてます。

>>183
教えてもらったとおりに修正したら送信はできるようになったけど受信が文字化け化けで駄目ぽ。
procedure TForm1.WMCopyData(var msg: TWMCopyData);
const SIGNATURE_STRING: DWORD = $00000001;
var
i: Integer;
buf: PChar;
begin
if msg.CopyDataStruct.dwData=SIGNATURE_STRING then
begin
buf := StrALloc(msg.CopyDataStruct.cbData);
try
StrCopy(buf, msg.CopyDataStruct.lpData);
ShowMessage(buf);
finally
StrDispose(buf);
end;
end
else
inherited;
end;
190デフォルトの名無しさん:2006/03/21(火) 02:48:44
ShowMessage(PChar(msg.CopyDataStruct.lpData));
191デフォルトの名無しさん:2006/03/21(火) 02:50:44
>>189
君はモウちょっと基本的なところを固めるべきだ
192デフォルトの名無しさん:2006/03/21(火) 02:51:19
>>190
駄目ですた。。。
193デフォルトの名無しさん:2006/03/21(火) 02:52:54
C言語の入門書読んで
ポインタについて少し理解を深めるんだ
194デフォルトの名無しさん:2006/03/21(火) 02:53:18
俺もWin32API使うようになって同じようなところで躓いた
195デフォルトの名無しさん:2006/03/21(火) 02:53:25
>>192
じゃあ送信側がおかしい。
変更後どうなってるんだ
196デフォルトの名無しさん:2006/03/21(火) 02:53:49
URL一行で終わる話を延々弄られ続けている質問者君アワレだな。
197デフォルトの名無しさん:2006/03/21(火) 02:55:56
送信側でつ。。。
const SIGNATURE_STRING: DWORD = $00000001;
var
buf: PChar;
i: Integer;
cd: TCopyDataStruct;
Handle:THandle;
begin
cd.dwData := SIGNATURE_STRING;
cd.cbData := Length('TestDataNo.1!')+1;
cd.lpData := StrAlloc(cd.cbData);
Handle := FindWindow('TForm1',nil);

try
StrCopy(cd.lpData, StrAlloc(cd.cbData));
SendMessage(Handle, WM_COPYDATA, Handle, LPARAM(@cd));
finally
StrDispose(cd.lpData);
end;

FDELPHIのFAQサイトはきちんと検索してるけど文字列を送信するコードは無いぽ。
WindowsMessageはあるけどね。
198デフォルトの名無しさん:2006/03/21(火) 02:56:55
>>196
180のコードとか明らかに某サイトのコードコピーしてるが、
勝手にStrAllocとか無しにしてる辺り見ると、
URL一行提示したところで俺理論で書き換えられて「わかりません」ってオチかと
199デフォルトの名無しさん:2006/03/21(火) 02:57:33
>>197
ワロタ
こりゃダメだw
200デフォルトの名無しさん:2006/03/21(火) 02:58:28
>>197
検索せずに一行一行舐めるように見ろ
お前の貧弱な語彙では検索できないだろうから
201デフォルトの名無しさん:2006/03/21(火) 02:58:30
DAAAAAAAAAAAURUSEEEEEEEEEEEEEEEEE
こうだ、こう。

送信側
 cd.dwData := てけとーな32bit値;
 cd.cbData := 渡したいデータのバイト数;
 cd.lpData := 渡したいデータを指すポインタ;
 SendMessage(Handle, WM_COPYDATA, Handle, LPARAM(@cd));

受信側
 ShowMessage(PChar(msg.CopyDataStruct.lpData));
202デフォルトの名無しさん:2006/03/21(火) 03:00:14
これはひどいwwwwwwwwwwwww
203デフォルトの名無しさん:2006/03/21(火) 03:01:24
こういうのみてるとDelphiコミュニティは崩壊したんだと実感できるな。
204デフォルトの名無しさん:2006/03/21(火) 03:01:50
>>201
> cd.lpData := 渡したいデータを指すポインタ;
あ。。。
書き直して来る。。。
205デフォルトの名無しさん:2006/03/21(火) 03:02:19
まだだ、まだ終わらんよ
まだオレたちがいる!…なんてな
206デフォルトの名無しさん:2006/03/21(火) 03:02:56
>>198
連続ですまんがその某所のコードを丸々コピーして駄目だったもんで四苦八苦しててStrAllocがPCHARになってた
ところがあったのでそれに書き換えたりしてますた。
207デフォルトの名無しさん:2006/03/21(火) 03:03:31
>>204
ちょwwwwww直すべき箇所はそこじゃねえwwwwwwww
208デフォルトの名無しさん:2006/03/21(火) 03:04:28
>>197
(´-`)。oO('TestDataNo.1!'#0 はいつ書き込まれるんだろう…)
209デフォルトの名無しさん:2006/03/21(火) 03:05:14
これはメモリリーク発生しまくりのプログラミングですね
210デフォルトの名無しさん:2006/03/21(火) 03:05:28
(´-`)。oO(StrAllocとか使うべきなのか?下位互換ルーチンだろ。String でいいじゃん)
211デフォルトの名無しさん:2006/03/21(火) 03:06:10
StrAllocはもう古い
使うにしてもGetMemやAllocMemだろ
212デフォルトの名無しさん:2006/03/21(火) 03:12:20
>>207
え?違うの?
てけとーな32Bit値とバイト数はあってるし他には何もないと思うんだが。。。

>>208
ん?そんなコード通らんぞ?
213デフォルトの名無しさん:2006/03/21(火) 03:12:41
>>210
下位互換ルーチンではなかったとおも
214デフォルトの名無しさん:2006/03/21(火) 03:13:27
>>212
ちょw
こいつはもうダメかも分からんね・・・
215デフォルトの名無しさん:2006/03/21(火) 03:14:38
>>213
Del6の時点で既にカテゴリが「下位互換性ルーチン」
216デフォルトの名無しさん:2006/03/21(火) 03:20:11
>>215
今ソース見てみたがdeprecated指令が付いてないし、
ヘルプでもヌル文字列用ルーチン一覧として載ってる@D2006
String使った方がいいよーとは書いてあるが。
217デフォルトの名無しさん:2006/03/21(火) 03:20:12
const
 sData = 'TestDataNo.1!';
begin
 cd.dwData := SIGNATURE_STRING;
 cd.cbData := Length(sData) + 1;
 cd.lpData := PChar(sData);
 SendMessage(Handle, WM_COPYDATA, Handle, LPARAM(@cd));
end;

わかったらもう来んな。
218デフォルトの名無しさん:2006/03/21(火) 03:25:22
>わかったらもう来んな。
お前それ違うだろ。

分からなくてももう来んな。
219デフォルトの名無しさん:2006/03/21(火) 03:26:43
半分だけ分かって半分はまだ分からないけど今日はもう寝ます。

でも付き合ってくれてありがとうございますた。
220デフォルトの名無しさん:2006/03/21(火) 06:35:17
明示的に順序値を割り当てた列挙型を基本型とする集合型を定義すると、大抵内部エラーになる(´・ω・`)
どこかに回避法とか落ちてぬい?
221220:2006/03/21(火) 06:38:32
山のように hogeReserveX とか挟み込んで調節と言う手は思いついたけど、
あまりにアホいよね(・ω・`)
222デフォルトの名無しさん:2006/03/21(火) 07:25:11
そんな事出来たっけ?
223デフォルトの名無しさん:2006/03/21(火) 07:58:41
つかコンパイラのバージョンとそのコードくらい書け
224デフォルトの名無しさん:2006/03/21(火) 08:14:37
うぃ、スマソ

TDIEnumDeviceFlag = (
diedfAttachedOnly    =  0,
diedfForceFeedBack   =  8,
diedfIncludeAliases  = 16,
diedfIncludePhantoms = 17,
diedfIncludeHidden   = 18);

TDIEnumDeviceFlags = set of TDIEnumDeviceFlag;

6 Parsonal ね
パッチは UpdatePack 2 と RLT 2,3
225デフォルトの名無しさん:2006/03/21(火) 08:25:15
( ゚д゚)
226デフォルトの名無しさん:2006/03/21(火) 08:25:51
6Proで普通に通るぞ。
定義を空のユニットに切り出してみたら。
227デフォルトの名無しさん:2006/03/21(火) 08:38:07
>>226
ダメだった。(・ω・`)
また内部エラー L1030。
228デフォルトの名無しさん:2006/03/21(火) 12:07:47
昨日もう来るなと言われた香具師だけど、もう一つだけ教えて。

最初のパラメーターはきちんと送れるようになったんだけど、再度送っても無反応になってしまいます。
F9+BreakPointだと起動時にパラメーターを付加できないからどこでエラーが起きてるのか分からないんだけど、
何かいいデバッグ方法がありましたら教えてください。
229デフォルトの名無しさん:2006/03/21(火) 12:14:12
どうせ昨日みたいにメモリをズタズタにしてんじゃねぇの?
悪い事言わんから簡単なサンプルアプリでポインタの練習をしろ
230デフォルトの名無しさん:2006/03/21(火) 12:25:33
>>229
コードは皆さんに添削してもらったものをまったくいじってないです。
いじったらまたボロボロになるし言われると分かってるので。。。
231デフォルトの名無しさん:2006/03/21(火) 13:09:09
日本語も読めないなら、来るなって言われるわな。
>簡単なサンプルアプリで
232デフォルトの名無しさん:2006/03/21(火) 13:16:08
お前もしつこいね。答える気ないならスルーしろよ。
233デフォルトの名無しさん:2006/03/21(火) 13:38:43
>>228
>F9+BreakPointだと起動時にパラメーターを付加できないから

実行時引数指定すれば?
234デフォルトの名無しさん:2006/03/21(火) 16:05:20
もう放置汁
235デフォルトの名無しさん:2006/03/21(火) 18:39:07
>>233
レスありがとうございます。
色々とやってみているのですが、自分自身に引数を渡して実行することってできますか?
Targetのプログラムに引数を渡すことはできるみたいですが、自分自身を指定すると
BreakPointを指定していても虫されます。
236デフォルトの名無しさん:2006/03/21(火) 18:44:58
>>1
>Delphi使いが優しくコメントを返します
237デフォルトの名無しさん:2006/03/21(火) 18:54:26
質問です。
自アプリから、IEで表示しているHPで
マウスポインタ位置の画像のURLを取得したいのですが
どのようにしたら出来るのでしょうか?

Delphi7です。
238デフォルトの名無しさん:2006/03/21(火) 18:54:56
235です。できましたので忘れてください。。。(つд⊂)
239デフォルトの名無しさん:2006/03/21(火) 19:33:53
>237
Del以外の言語やスクリプトならどうやれば出来るか考えたら答え教えてやる。
ヒント:IEコンポーネント
240デフォルトの名無しさん:2006/03/21(火) 20:16:18
なんか往年のPCODEを思い起こさせるが、
彼との違いは徹頭徹尾役に立っていないということだな。
241デフォルトの名無しさん:2006/03/21(火) 21:07:03
>>235
[メニューバー]→[実行]→[実行時引数]

わかったらもう来んな
わからなくてももう来んな
242デフォルトの名無しさん:2006/03/21(火) 21:29:20
質問です。
2005以降のIDEのホームページに表示される
最近使ったプロジェクトの数を変えることはできないでしょうか?
243デフォルトの名無しさん:2006/03/21(火) 23:02:48
Delphiでアプリケーションを作成したんですが、ショートカットのアイコンは変更できるのに
〜.exeは変更できません。
もしかして変えられないんですか?
244デフォルトの名無しさん:2006/03/21(火) 23:04:08
プロジェクト-オプション-アプリケーション-アイコン
245デフォルトの名無しさん:2006/03/21(火) 23:19:00
>>244
ヴェリーサンクス
246デフォルトの名無しさん:2006/03/21(火) 23:28:06
連投すいませんが>>244の方法だと32×32で、拡張子icoなのに
エラーで読み込めません。試してもないのにヴェリーサンクスとか調子乗ってスマソ。
247デフォルトの名無しさん:2006/03/21(火) 23:34:21
その程度自分で解決しろ
248デフォルトの名無しさん:2006/03/21(火) 23:40:15
承知
249デフォルトの名無しさん:2006/03/21(火) 23:45:07
250デフォルトの名無しさん:2006/03/21(火) 23:48:39
見た目はico、中身はbmp、名探偵コ(ry

だったり
251デフォルトの名無しさん:2006/03/22(水) 00:03:22
どうやらコナン君だったようで・・・解決しました。



ミス○ルの体は大人、頭脳は子供の逆コナン君にワロタ。
252デフォルトの名無しさん:2006/03/22(水) 07:55:13
質問です。Delphi 2005とVB 2005でどっちの方が優れていますか?
253デフォルトの名無しさん:2006/03/22(水) 08:11:07
>>252
2005?
254デフォルトの名無しさん:2006/03/22(水) 08:44:36
>>252
はいはいVBVB。
満足したら巣にお帰り下さい。
255デフォルトの名無しさん:2006/03/22(水) 11:06:32
Sender: TObjectの時

(Sender as TButton).Caption := 'unko';
はコンパイルできるのに、

(Sender as TControl).Caption := 'chinko';
はCaptionが未定義の識別だからという理由でコンパイルエラーになります。

CaptionはTControlにもあるのに、どうして未定義となるのでしょう?
256デフォルト名無しタソ:2006/03/22(水) 11:11:38
ScrollBarコンポーネントをコントロールの傍につけたいのですが
プロバティのどこで選択すればいいんでしょうか?
257デフォルトの名無しさん:2006/03/22(水) 12:05:17
>>255
TControlはCaptionプロパティ持ってるとは限らないから
例えばTImageもTContorolからの継承だけどCaptionプロパティはない
258デフォルトの名無しさん:2006/03/22(水) 12:13:32
プログラム起動時にオブジェクトを生成して終了時に開放したいのですが、
バグ等で強制終了した場合でもForm1のOnDestroyイベントは実行されますか?
259255:2006/03/22(水) 12:28:27
そうなのか。
ヘルプでTControlを見るとプロパティのところにCaptionがあるから、
TControlから派生したクラスは全部Captionを持っているのだと思っていた。
260デフォルトの名無しさん:2006/03/22(水) 12:35:47
少しややこしいんだけど
TControl.Captionは存在する。ただしprivateだからアクセスできない。
で、派生クラスで必要ならpublic/publishedに変更してアクセスできるようにすることが出来る。

TControl = class
private
property Caption;
end;

TMyControl = class(TControl)
public
property Caption; // publicで公開
end;

TMyControl2 = class(TControl)
published
property Caption; // publishedで公開
end;

261デフォルトの名無しさん:2006/03/22(水) 12:41:59
訂正
×TControl.Captionは存在する。ただしprivateだからアクセスできない。
○TControl.Captionは存在する。ただしprotectedだからアクセスできない。
262デフォルトの名無しさん:2006/03/22(水) 12:53:22
機会があればVCLのソース眺めてみるといいよ
VCLのソース見るのが楽しくなれば君も立派な廃人w
263255:2006/03/22(水) 12:58:22
詳しくどうも。
でもPersonalなのでソースは見られないのだ。
264デフォルトの名無しさん:2006/03/22(水) 13:36:05
100KBから200KBくらいの文字列の塊をDLLに渡したいんだけど、
一旦テキストに落としてからDLLにテキスト読んでって指令するのと、
PCharにキャストしてDLLに送信するのではどっちがコスト低いの?
やっぱり後者?
265デフォルトの名無しさん:2006/03/22(水) 13:37:39
YES
266デフォルトの名無しさん:2006/03/22(水) 13:38:12
そっか、ありがとん
267デフォルトの名無しさん:2006/03/22(水) 13:38:36
もちろん。体感的な速度差が出るかどうかはともかく。
268デフォルトの名無しさん:2006/03/22(水) 14:26:59
ファイルアクセスとメモリアクセスだから後者の方が断然速いと思うが
最近のPCだとあまり違いを感じないかも
269デフォルトの名無しさん:2006/03/22(水) 14:35:21
HDDのバッファで処理される気がするが、やはりいったんファイルにするのは
かっこ悪い感じだしコストっていうとやっぱポインタ渡しだが、自分ではつい
書いてしまう。
270デフォルトの名無しさん:2006/03/22(水) 14:54:31
TFileStreamやTMemoryStreamを知らない頃は
一生懸命テンポラリファイルを作成してました
271デフォルトの名無しさん:2006/03/22(水) 15:11:37
TFileStreamはファイル操作です
272デフォルトの名無しさん:2006/03/22(水) 15:12:17
D6パーで、株価のチャート見るようなフリーソフト(個人で使う&配布しない)作ってOK?
株で儲けると、間接的に営利目的って事になるの?
273デフォルトの名無しさん:2006/03/22(水) 15:15:27
ボーランドに聞けよ
274デフォルトの名無しさん:2006/03/22(水) 15:18:03
>>272
ならない。

つかDelphi Personalで商用IDEを作ったり
ALMでライバルになるようなアプリを作って
大規模に売らない限りは問題にはならないと思うぞ。
275デフォルトの名無しさん:2006/03/22(水) 16:04:38
>>274
そこまで断言していいのかね?
おまいさんが某国人というなら知らんけど
276デフォルトの名無しさん:2006/03/22(水) 16:22:18
>>272
素直に買うなりLazarusに乗り換えるなりしたほうがいいと思われ
277デフォルトの名無しさん:2006/03/22(水) 16:55:36
デルファイって、どう発音してますか?
頭にアクセント置く人と、フラットに発音する人がいるんですが。
278デフォルトの名無しさん:2006/03/22(水) 16:56:49
辞書引け
279デフォルトの名無しさん:2006/03/22(水) 17:03:24
>>278
必ずしも日本での発音と英語の発音とは一致しないでしょう
280デフォルトの名無しさん:2006/03/22(水) 17:04:35
ここはにアメリカ人しかいないわけだが
281デフォルトの名無しさん:2006/03/22(水) 17:11:54
ここはに

なるほど、アメリカ人のようだな
282デフォルトの名無しさん:2006/03/22(水) 17:13:35
> ここはに

たしかに、日本人じゃなさそうだ
283デフォルトの名無しさん:2006/03/22(水) 17:16:29
>>275
> そこまで断言していいのかね?
そう言われると自信はない。

> 個人で使う&配布しない
こちらは大丈夫だろう。
284デフォルトの名無しさん:2006/03/22(水) 19:09:33
なんかやたらLazarusをすすめるやつがいるが大丈夫なのか。
Linux環境でもDel6PerでビルドしたバイナリをWINEで動かすほうがまだましとか
実状はそんなのだったりして(評価できるほど使ってませんすまそ)。
285デフォルトの名無しさん:2006/03/22(水) 19:21:32
>>277
俺はフラット(正確には"デ"からちょっと音程上がって"ルファイ"はフラット)だったが、
最初にアクセント置いてる人しか出会ったことないな
それが正しいのは分かってるんだが、やはり違和感が・・・
286デフォルトの名無しさん:2006/03/22(水) 20:10:43
ちんこ
と同じアクセント
「デ」ルファ(イ)
287デフォルトの名無しさん:2006/03/22(水) 20:27:29
ComboBoxExのonEnterにボタンを割り当てたんですがエンターキー押しても利かないんですけど…
288デフォルトの名無しさん:2006/03/22(水) 20:27:42
もう、どうでもいいんじゃねーの。
289デフォルトの名無しさん:2006/03/22(水) 20:29:16
おまえのそれエンターキーじゃなくてリターンキーだぞ
290デフォルトの名無しさん:2006/03/22(水) 20:34:02
ヘルプ嫁・・・
OnEnterはフォーカスがそのコントロールに移ってきたときのイベントだ
リターンが取りたきゃOnKeyPressでif Key=#13 then...
291デフォルトの名無しさん:2006/03/22(水) 20:51:10
>>289
え?エンターとリターンって同じじゃないの?
>>290
そうなのか。
OnKeyPressでそれやって見たんだけどエラーが出る
もうちょっとヘルプ読んでくる
分かんないかも知れないけど(w
292デフォルトの名無しさん:2006/03/22(水) 21:20:03
procedure TForm1.NavigateButtonClick(Sender: TObject);
begin
if ComboBoxEx1.Text = '' then
begin
ComboBoxEx1.Text := 'about:blank';
end;
Webbrowser1.Navigate(ComboBoxEx1.Text);
end;
procedure TForm1.ComboBoxEx1KeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then
begin
NavigateButtonClick;
end;
end;
end.
ってなってるんだけど呼び出せないよ?なんで?
293デフォルトの名無しさん:2006/03/22(水) 21:22:57
>>285
>>286
俺の周りはフラットだったが、東京でプログラマやってる人が
最初にアクセント置いてた。
294デフォルトの名無しさん:2006/03/22(水) 21:48:49
すいません、Delphi6をインストールしてみているのですが、
「デバッグ用のシステムレジストリが他のアプリケーションで使われてるのを
 検出しました。書き換えていいですか?」
みたいな警告が出ました。

他にはVisualStudio.net2003とSunのJava開発環境しかないのですが、
これらに影響が出ることはあるでしょうか?
295デフォルトの名無しさん:2006/03/22(水) 21:58:01
Just in time(JIT)だろ?
Del以外の開発環境からも登録変更できると思うから、
問題出たら戻せばよろし
296デフォルトの名無しさん:2006/03/22(水) 22:04:38
それです。ありがとうございました!
297デフォルトの名無しさん:2006/03/23(木) 07:04:02
>>287
onEnterのところでF1を押すんだ
298デフォルトの名無しさん:2006/03/23(木) 11:38:31
@「デ」ルファイ ちんこ・まんこ
Aデ「ル」ファイ おまんこ・小結
B「デル」ファイ アルフィー・大関
Cデ「ルファイ」 キャラメル(のスカしたフラット版)・横綱
俺はBだが、C以外は全部使ったりもする。
299デフォルトの名無しさん:2006/03/23(木) 11:47:41
>>237
IEのステータスバー msctls_statusbar32 のキャプション読み込み
300デフォルトの名無しさん:2006/03/23(木) 12:32:15
俺は横綱派
301デフォルトの名無しさん:2006/03/23(木) 12:58:18
>>297
F1押してみた。
…へぇ。ヘルプ出るんだ。dです!
302デフォルトの名無しさん:2006/03/23(木) 13:00:45
F1とF12、あとCtrl+F12は本当に便利だぞ
303デフォルトの名無しさん:2006/03/23(木) 13:25:14
>>302 なるほど。
で、>>292のコードなんですが
procedure TForm1.NavigateButtonClick(Sender: TObject);
begin
if ComboBoxEx1.Text = '' then
begin
ComboBoxEx1.Text := 'about:blank';
end;
Webbrowser1.Navigate(ComboBoxEx1.Text);
end;
procedure TForm1.ComboBoxEx1KeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then
begin
if ComboBoxEx1.Text = '' then
begin
ComboBoxEx1.Text := 'about:blank';
end;
Webbrowser1.Navigate(ComboBoxEx1.Text);
ComboBoxEx1.ItemsEx.AddItem(ComboBoxEx1.Text, 0, -1, -1, -1, nil);
end;
end;
end.
で、事故解決しました!
304デフォルトの名無しさん:2006/03/23(木) 16:44:49
良く使うのはこれかね
1. Ctrl + S(いつ固まっても良いように)
2. Ctrl + F9 or F9(必ず間違えるから)
3. F1
4. Ctrl + ポチ と Ctrl + ←
4. Ctrl + F(ファイル検索のショートカットがあれば良いのに…)
305デフォルトの名無しさん:2006/03/23(木) 16:46:45
訂正 最初の 4 は Alt + ←
306デフォルトの名無しさん:2006/03/23(木) 17:03:09
てめー何時の間にうちの犬コントロールしやがった

ブレークポイントとCtrl+F2での強制終了のコンボは最強
307デフォルトの名無しさん:2006/03/23(木) 17:14:51
ListViewで項目のダブルクリックを検出するのってどうやりますか?
308286:2006/03/23(木) 17:27:29
すまん、「ちんこ」じゃなくて「大関」の方だったわ
「デル」ファイ
309デフォルトの名無しさん:2006/03/23(木) 17:30:23
>>307 OnDblClick イベントと SelectionCount
310デフォルトの名無しさん:2006/03/23(木) 18:09:03
>>298
Cが普通かと思ってた。ところで@とBは一緒では?
311デフォルトの名無しさん:2006/03/23(木) 18:56:24
BDS2006注文したら、領収書だけ先に届いて品物がまだ来ない。
312237:2006/03/23(木) 22:03:19
>239
EventElement.hrefみたいな事ですか?
IEコンポーネントを、いろいろ調べていますが、まだ見つかりません。
起動しているIEの、IHTMLDocument2の取得方法は、
分かりましたが方向性はあってます?

>299
ありがとうございます。

素朴な疑問なのですが、画像のリンク先になってしまう事ってないですか?
画像右クリック->プロパティ->アドレス(URL)を取得したいのですが
313デフォルトの名無しさん:2006/03/23(木) 22:12:40
お前が間違えたらそうなるね
314デフォルトの名無しさん:2006/03/23(木) 22:19:13
>>310
音符になおせばわかる
315デフォルトの名無しさん:2006/03/24(金) 11:13:58
>>312
自アプリにWebBrowser ActiveX貼っ付けて、PrivateでOVDoc : OLEVariant 宣言しといて
Navigate に'about:blank'入れて初期化した後で、Navigate にURL入れて同じ画面イメージ作り
OnDownloadCompleteイベントで OVDoc := WebBrowser1.Document; でオブジェクト生成し、
OnStatusTextChange イベントで逆引きするでおk?

316デフォルトの名無しさん:2006/03/24(金) 15:53:15
質問です。
今、ある無料ネットワークゲームをやっているのですが、
そのゲームへのログイン、ゲーム起動がそのサイトのトップページから
行われるため、ゲーム開始時には毎回そのページを開かねばなりません(しかもそのページが重い)。
なんで、ログインツール&起動ツールを作成しようと考えているのでが、
なにぶんこのようなアプリを作成したことがないので、まず何をしたらよいのか分かりません。
そのトップページにあるログインボタン、開始ボタンをクリックしたときに行われる通信を
調べて、それと同じ処理をDelphiでやってやればいいとは思うのですが。
通信の内容をどうやって調べればいいのか等、具体的のことが分かりません。

長文、意味不明な内容になってすみません。
宜しくお願いします。

317デフォルトの名無しさん:2006/03/24(金) 15:58:30
>>316
トップページのソース見りゃいいだぴょ。
318デフォルトの名無しさん:2006/03/24(金) 16:01:47
>>317
!!!!
全然気付かなかったです!!!
ありがとうございます。
319316:2006/03/24(金) 16:10:19
>>317
連投すいません。
喜び勇んでトップページ見にいったのですが、htmlではなくaspでした。
ソース見ようとトップページ右クリックしても反応なかったんで、「?」と思い
URL見たら「http://*******/***.asp」となっていました。
Webの知識が全くない自分はそこで頭がまっしろになってしまいました。
すみません。もう一度色々調べてみます・・・
320デフォルトの名無しさん:2006/03/24(金) 16:34:39
>>316
間違いなくあなたには無理です。
諦めるのも手段の一つですよ。
321316:2006/03/24(金) 16:48:11
>>320
はい。
でもせっかくなんで、勉強がてらもうちょっと頑張ってみます。
質問を書きながら、何を聞けばいいのかもよく分からないような状態でしたので。
勉強不足でした。
スレ汚ししてすみませんでした。
322デフォルトの名無しさん:2006/03/24(金) 17:04:44
スキンを使ってるせいなのか出来上がったアプリケーションを他のPC
で実行するとアプリケーションのスキンの色が通常の灰色ではなく真っ青になってしまいます。
アプリケーションのスキンの色を指定してあげればこの問題は解決しますか?
またアプリケーションのスキンの色はどうやって変えれば良いんですか?
323デフォルトの名無しさん:2006/03/24(金) 17:37:36
>>303ですけど
これをスマートにコーディングする事って出来ますか?
324デフォルトの名無しさん:2006/03/24(金) 20:32:43
>>322はスキンが実装できたのにスキンの色の変え方がわからないという・・・
325デフォルトの名無しさん:2006/03/24(金) 21:00:22
>>323
お前のいうスマートの定義なぞ知らんよ

>>324
スキンってーのは恐らくXPのスキンだろうな
326デフォルトの名無しさん:2006/03/24(金) 21:02:43
procedure TForm1.NavigateButtonClick(Sender: TObject);
begin
   if ComboBoxEx1.Text = '' then
       ComboBoxEx1.Text := 'about:blank';
   Webbrowser1.Navigate(ComboBoxEx1.Text);
end;

procedure TForm1.ComboBoxEx1KeyPress(Sender: TObject; var Key: Char);
begin
   if Key=#13 then
   begin
       NavigateButtonClick(Sender);
       ComboBoxEx1.ItemsEx.AddItem(ComboBoxEx1.Text, 0, -1, -1, -1, nil);
   end;
end;
327デフォルトの名無しさん:2006/03/24(金) 21:33:28
>>326
出来た!ありがとう!
328312:2006/03/24(金) 23:46:43
ActiveElementから取得できました。

>>315
やってみます。
ありがとうございます。
329デフォルトの名無しさん:2006/03/25(土) 01:44:36
>>321
IEの履歴開いてそのページからログインしてるページを見つけて開けばすぐ行けるんじゃないか?
330デフォルトの名無しさん:2006/03/25(土) 11:22:21
Delphi7 の IDE についてなのですが、ActionList のアクションを上下に
移動させると、分類が変わってしまうことがあります。これは回避できるもの
なのでしょうか。
331デフォルトの名無しさん:2006/03/25(土) 15:05:30
アクセスのファイル(MDB)をADOSQLQUERYを使ってDBGRIDに表示しています。
1つのテーブルを表示し、SQL文を実行するのは問題なくできています。
問題は、2つのテーブルを1つのDBGRIDに表示したいのですが、やり方がわかりません。
ADOSQLQUERYのヘルプを見ると、2つ以上のテーブルも表示できるように読めますが、具体的にどうすればよいのかわからない状態です。
具体的にどのような操作をすればいいのでしょうか?
プロパティの設定だけでいけるのか、またはコードを書かなければならないのでしょうか?
よろしくお願いします。
332デフォルトの名無しさん:2006/03/25(土) 15:20:04
1個のADOQueryに同時に複数のDataSetを割り当てるってこと?
話がよく見えないんだけど複数のテーブル参照するクエリー発行じゃ駄目なのか
333デフォルトの名無しさん:2006/03/25(土) 15:28:10
すいませんが
procedure TForm1.Memo1Change(Sender: TObject);
begin
TextLine := Memo1.Lines.Count;
SBarText := '';
if TextLine <= 1 then
begin
Label1.Caption := '一行AA';
Edit1.Enabled := False;
Edit1.Color := clBtnFace;
end
else
begin
Label1.Caption := '複数行AAのタイトル';
Edit1.Enabled := True;
Edit1.Color := clWindow;
if Edit1.Text = '' then
SBarText := '複数行AAのタイトルを入力して下さい';
end;
StatusBar1.SimpleText := 'Bytes: ' + 'Lines: ' + IntToStr(TextLine) + ' ' + SBarText;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.Lines.SetText(CmdLine);
Memo1Change(Sender);
end;
ってしてるんですが、起動時に
StatusBar1.SimpleText := 'Bytes: ' + 'Lines: ' + IntToStr(TextLine) + ' ' + SBarText;
が利かずに空白のままなんですが解決策ありますか?
あ、あと、Memo1に書いてある文字のバイト数を参照出来る関数見たいのありますか?
お願いします。
334デフォルトの名無しさん:2006/03/25(土) 15:41:26
StatusBarのSimplePanelプロパティがFalseならお前を掘る
335デフォルトの名無しさん:2006/03/25(土) 15:42:39
Length(Memo1.Text)
336デフォルトの名無しさん:2006/03/25(土) 15:43:00
FormCreateに

StatusBar1.SimpleText:= 'IIOTOKO';

て書いても何も表示されないなら、
SimplePanelが設定されてないとかでお前に落ち度がある可能性が極めて高い

>文字のバイト数

Length(Memo1.Text);
337デフォルトの名無しさん:2006/03/25(土) 15:44:11
>>334
俺1回吊ってくるよ…スマン
338デフォルトの名無しさん:2006/03/25(土) 15:47:07
首吊る前にケツを出せよ
339デフォルトの名無しさん:2006/03/25(土) 15:47:36
>>335,336
何時もベリーサンクスです!
340デフォルトの名無しさん:2006/03/25(土) 15:49:37
アッー!
341331:2006/03/25(土) 18:32:46
説明下手でスマソ。
ADOSQLQUERY1にテーブルA、ADOSQLQUERY2にテーブルBを設定しています。
どちらのテーブルにも「連番」という項目があります。
この、「連番」が同じデータを1つのDBGRIDに表示したいんです。何か基本的なことがわかっていないでしょうか?
よろしくお願いします
342デフォルトの名無しさん:2006/03/25(土) 23:49:12
>>341
Access側でView作っておけばいいだけのような気がするが?
SQL文書けないとかいわれたら氏ねとか言うかも。
343デフォルトの名無しさん:2006/03/26(日) 10:04:02
Delphi 6 Personal でデータベースをちょっと使ってみたいんですが出来ませんか?
344デフォルトの名無しさん:2006/03/26(日) 10:08:20
できます
345デフォルトの名無しさん:2006/03/26(日) 10:12:01
どのコンポーネントでできますか?
346デフォルトの名無しさん:2006/03/26(日) 11:18:17
personalでデータベースってできます?
http://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200302_03020035.html
347デフォルトの名無しさん:2006/03/26(日) 11:26:55
ありがとうございます。やってみます
348デフォルトの名無しさん:2006/03/26(日) 11:36:15
349デフォルトの名無しさん:2006/03/26(日) 12:15:22
keybd_eventを使ってAlt+Aみたいなキー同時押しの送り方を教えてもらえませんか
350349:2006/03/26(日) 12:25:49
すみません。自己解決しました。
連続して送ればいいだけだったんですね。
351デフォルトの名無しさん:2006/03/26(日) 19:09:18
BorlandはIDE事業を売却してしまったそうですが、この先どうすればいいでしょうか?
352バグ:2006/03/26(日) 19:17:33
でるふぁい
バグ
353デフォルトの名無しさん:2006/03/26(日) 20:18:16
>351
このスレに二度と来るな。以上。
354デフォルトの名無しさん:2006/03/26(日) 22:14:16
オマエもな。以上。
355デフォルトの名無しさん:2006/03/27(月) 00:13:36
特定の行動(ボタンを押す等)をした時に外部のテキストファイルからテキストを読み込み
それをフォーム内のmemoに表示させたいのですがどのように書けばいいのでしょうか?
356355:2006/03/27(月) 00:18:27
すみません、上に追記で
テキストファイルの全てを表示させるのでなく

hoge.txtの中身↓
-----------ココカラ
hoge
START
Delphi
12546
ddd
END
おpp
----------ココマデ

というときにSTART の行から END の行までを読み込ませるといったような感じです。

357デフォルトの名無しさん:2006/03/27(月) 00:18:38
stringlist
memo.text
358デフォルトの名無しさん:2006/03/27(月) 00:19:45
stringlist.strings[i]
359デフォルトの名無しさん:2006/03/27(月) 00:26:35
procedure TForm1.Button1Click(Sender: TObject);
begin
 Memo1.Lines.LoadFromFile('c:\hoge\filename.txt');
end;
360デフォルトの名無しさん:2006/03/27(月) 00:32:34
var
 I: Integer;
begin
 Memo1.Lines.LoadFromFile('c:\Hoge\FileName.txt');
 for I := 0 to Memo1.Lines.Count - 1 do
  if Memo1.Lines[I] = 'START' then
   Break
  else
   Memo1.Lines.Delete(0);
 for I := Memo1.Lines.Count - 1 downto 0 do
  if Memo1.Lines[I] = 'END' then
   Break
  else
   Memo1.Lines.Delete(Memo1.Lines.Count - 1);
361デフォルトの名無しさん:2006/03/27(月) 00:34:49
間違えた。 上のループはこう。
 while Memo1.Lines.Count > 0 do
  if Memo1.Lines[0] = 'START' then
  Break
  else
    Memo1.Lines.Delete(0);
362デフォルトの名無しさん:2006/03/27(月) 00:44:44
>>357-361
ありがとうございました!
363デフォルトの名無しさん:2006/03/27(月) 01:28:53
Editなどに文字を入力している時、「 | 」のようなマークがちかちかしますよね。
この入力中の位置を示しているものがもしEdit1にあれば、
という文を書きたいのですが、どのように書けばいいでしょうか?
if 〜 then
の〜にあたる部分が知りたいです。
364デフォルトの名無しさん:2006/03/27(月) 01:47:11
フォーカスを調べなさい
365363:2006/03/27(月) 02:02:00
>>364
ありがとうございます。
一応、ActiveとFocusのことは勉強してみたのですが、
うまくいきません。
Edit1に'abcde'という文字列があったとします。
この文字列を1クリックした時に、SelectAllして、
2回目以降にクリックした時は、そのクリックした所にフォーカスを
当てるようにしたいです。
ご教示いただけるとうれしいです。
366363:2006/03/27(月) 02:06:46
あ、以下のようにすると
procedure TForm1.Edit1Click(Sender: TObject);
begin
 Edit1.SelectAll;
end;
何度クリックしても、常にSelectAllされて困ってしまい、
かといって
procedure TForm1.Edit1Click(Sender: TObject);
begin
 if Edit1.Focused then
 else
 Edit1.SelectAll;
end;
とすると、何度クリックしてもSelectAllされない

という手順でこれまで試行してみました。
367デフォルトの名無しさん:2006/03/27(月) 02:29:55
AutoSelect?
368デフォルトの名無しさん:2006/03/27(月) 03:37:30
>>366
クリックした時点でフォーカス移ってんだから当たり前
まあ367でFAか?
369デフォルトの名無しさん:2006/03/27(月) 12:55:24
配列に文字列を代入したいんですが、
Perlでいうところの、
@words= qw(りんご みかん ばなな);
というように、いっぺんに代入するには
どうすればよいのでしょうか?
370デフォルトの名無しさん:2006/03/27(月) 13:12:51
procedure tform1.button1click(sender:tobject);
var
 hoge : tstrinlist;
begin
 hoge := tstringlist.create;
 hoge.commatext := (りんご、みかん、ばなな);
end;

使い終わったらhogeはfreeしよう
371デフォルトの名無しさん:2006/03/27(月) 13:14:56
hoge.commatext := 'りんご、みかん、ばなな';
だった
372デフォルトの名無しさん:2006/03/27(月) 13:48:54
、はいかんだろ・・
373369:2006/03/27(月) 13:49:44
できました。ありがとうございました。
374デフォルトの名無しさん:2006/03/27(月) 14:54:14
LoadFromFileで読み込むファイルをC:\hoge\hoge.txt のように固定のパスのファイルでなく
実行ファイルと同じフォルダにあるhoge.txtに指定するにはどうすればいいのでしょうか?
375デフォルトの名無しさん:2006/03/27(月) 15:00:07
IncludeTrailingPathDelimiter( ExtractFilePath(Application.ExeName) ) + 'hoge.txt'
376デフォルトの名無しさん:2006/03/27(月) 15:08:57
>>375
ありがとうございました
377デフォルトの名無しさん:2006/03/27(月) 15:09:39
相対パス使うなら
LoadFromFile('hoge.txt');

LoadFromFile('.\hoge.txt');

でも相対パスはカレントディレクトリに依存するから危険ではある
378デフォルトの名無しさん:2006/03/27(月) 15:41:12
蛇足見本
379デフォルトの名無しさん:2006/03/27(月) 16:14:32
>>375
うーん、IncludeTrailingPathDelimiterは必要かな?
380デフォルトの名無しさん:2006/03/27(月) 17:36:30
>>379
ExtractFilePath は最後に\がつくことが保証されている。
因みに、ExtractFileDir はつかないことが保証されている。
381380:2006/03/27(月) 17:37:04
あ、ゴメン、勘違い。
382デフォルトの名無しさん:2006/03/27(月) 17:57:55
ドライブ直下のファイルだと不具合が出るような話を聞いたことあるが
気のせいかもしれない。
383375:2006/03/27(月) 18:01:29
>>379
この場合はいらない
でも、ディレクトリ名やファイル名を連結させてパスを生成する時に
¥がないとかのつまらないエラー防ぐためにいつも書いてる
384デフォルトの名無しさん:2006/03/27(月) 19:45:33
ま、自分仕様で他人に不要コードを押しつけない方がいいね
385デフォルトの名無しさん:2006/03/27(月) 20:09:31
>>384
別に押し付けてる様子は微塵も無いんだが
もうちょっと広い心持とうよ
386デフォルトの名無しさん:2006/03/27(月) 20:29:53
俺はIncludeTrailingPathDelimiterを初めて見た勉強になった
387デフォルトの名無しさん:2006/03/27(月) 20:36:26
それは良かったな!いったい何を Traning するのかと不思議に思いながら
使ってたが、最近になって Trailing だったと知った!!!
388デフォルトの名無しさん:2006/03/27(月) 20:51:18
末尾の\を自動的に処理してくれるライブラリ作ると便利かもな。

type
   TPath = object
   public
       function set(s: string): string;
       function add(s: string): string;
       property str: string;
       ...
   end;
   
var path: TPath;

path.set('c:\windows\'); ==> 'c:\windows'
path.add('system32'); ==> 'c:\windows\system32'
path.add('taskmgr.exe'); ==> 'c:\windows\system32\taskmgr.exe'
path.filename ==> 'taskmgr.exe'
path.dir ==> 'c:\windows\system32'
path.name ==> 'taskmgr'
path.ext ==> '.exe'
path.changeext('.ini') ==> 'c:\windows\system32\taskmgr.ini'
389デフォルトの名無しさん:2006/03/27(月) 21:00:37
そのクラスの使い道がさっぱりわかんね。
390デフォルトの名無しさん:2006/03/27(月) 21:46:13
ExtractFilePath, ExtractFileDirと二つに加え、
末尾が\なら削除てな関数があれば大抵のパス操作に関しては十分
わざわざクラスを作る無駄などまったく必要ない
391デフォルトの名無しさん:2006/03/27(月) 21:51:09
>末尾が\なら削除てな関数があれば
あるよ。
というかラッパークラス否定したらVCLいらん罠。
392デフォルトの名無しさん:2006/03/27(月) 22:05:33
390から何故ラッパークラスという存在の否定に繋がるのか理解出来ない
極論論者は正直好きじゃない
393デフォルトの名無しさん:2006/03/27(月) 22:08:35
なぜ繋がらないのか理解できないがスレ違いだしもうやめとくよ。
394デフォルトの名無しさん:2006/03/27(月) 22:12:10
>>390
パスをよく加工するならあった方が便利だし、
何よりそう書いたほうがDelphiらしいコードだと思う
変に手続き言語の部分を引きずってるから、
クラス作るの面倒って考えが生まれちゃうんだろうね
395デフォルトの名無しさん:2006/03/27(月) 22:13:07
アンタ、オンナだな。じゃない、オトナだな。もう春だなぁ
396デフォルトの名無しさん:2006/03/27(月) 22:24:56
Kylix の負の遺産がまた悪さしてるな
397Delフサギコ ◆A6VzDeLphI :2006/03/28(火) 00:07:18
    ∧,,∧  >>394
   ミ*゚Д゚彡  >>388
    ミ つ旦)~~
  〜と,,,~),,~)

あんたら、相当の手練れとみた。

やるね。
398デフォルトの名無しさん:2006/03/28(火) 00:58:40
ところでobject型でもやっぱりクラスって言うの?
399デフォルトの名無しさん:2006/03/28(火) 01:10:18
共通点はあるけどクラスとは言わないんじゃない。
400デフォルトの名無しさん:2006/03/28(火) 01:32:57
クラスだよ
厳密に言えばobjectは静的クラス、classは動的クラス
401デフォルトの名無しさん:2006/03/28(火) 01:40:33
>厳密に言えばobjectは静的クラス
厳密に言えばそれは俺用語
値型、参照型の違いがわかってれば好きに呼んでいいと思うけど。
402デフォルトの名無しさん:2006/03/28(火) 01:44:53
よそでやれ
403デフォルトの名無しさん:2006/03/28(火) 01:48:00
>>388
思ったけど、全てクラスメソッドにして、インスタンス作らなくてもいいようにした方がいいんじゃね?
404デフォルトの名無しさん:2006/03/28(火) 02:08:20
>>403
思ったけど、全て関数にして、クラス作らなくてもいいようにした方がいいんじゃね?
405デフォルトの名無しさん:2006/03/28(火) 04:07:03
>>403
それやるならクラス変数用意しないと文字が保持できんな
その場合D6とか古いのを切り捨てることになるが

>>404
絶対しろという決まりがあるわけではないけど、
オブジェクト指向的にはあれで正しいんだよ
隠蔽してしまえば最後の\が…って話は出ないし
まあネタで言ってるんだろうけどね
406デフォルトの名無しさん:2006/03/28(火) 04:10:40
>>394
> パスをよく加工するならあった方が便利だし、
普通の関数でいいんじゃないの。

> ここで使われているTextProcClassはどうやら文字列の処理をするつもりなのですが,よく見ると,
> 単なる文字列処理サブルーチン集に成り下がっています。これだったらクラスにする必然性など
> 何もなく,各メンバ関数を1つずつ独立した普通の関数にしても差し支えはありません。

C MAGAZINE - プログラミングの禁じ手Web版 C++編 - 理念の誤解に関するパターン
http://www.cmagazine.jp/src/kinjite/cpp/idea.html#index33
407デフォルトの名無しさん:2006/03/28(火) 04:46:05
>>406
理念の誤解に関するパターンを誤解しているw
よく見てみれば分かると思うけど、状況が違うでしょ?
まずあっちは状態の保持が無いが上記のはある
カプセル化することで>>405で言われるようなデリミタの有無を考慮する必要がなくなる

あとそれとは関係ないけど、クラスメソッドにしてしまうなら
そこで言われるようなサブルーチン集もコーディング速度の面で有利だね。
例えば補完が使いやすい、複数の関数名覚えなくても1つのクラス名を覚えれば良いなど。
// もっとも、見ただけで機能が分かるようなメソッド名にする必要があるが
408デフォルトの名無しさん:2006/03/28(火) 07:59:09
単なる関数で十分だろ、今回の例では。
409デフォルトの名無しさん:2006/03/28(火) 08:21:19
何で388?がこんなに必死なのか分からないが、
とりあえず何でもクラスにすりゃ良いってもんでもないと思うけどね
隠蔽を伴うクラスは関数よりコストが増大するし
410デフォルトの名無しさん:2006/03/28(火) 08:39:27
クラスメソッドにしなくても、ユニット名で補完効くだろ。アフォらし
411デフォルトの名無しさん:2006/03/28(火) 08:59:15
クラスを自分では書けない人が必死ですね^^;
412デフォルトの名無しさん:2006/03/28(火) 09:00:43
もんくしかいえんのかおまえは
413デフォルトの名無しさん:2006/03/28(火) 09:08:24
クラスなんて書くだけ無駄無駄
つーかクラスなんて自分で書くようなもんじゃないでしょw
414デフォルトの名無しさん:2006/03/28(火) 09:10:08
はいはい、アフォな話題はほっといて、次、どうぞ!
415デフォルトの名無しさん:2006/03/28(火) 10:25:31
クラスってなんですか?
416デフォルトの名無しさん:2006/03/28(火) 10:50:42
memoコンポーネントのスクロール(縦)って、キーボードの↑↓キーや、マウスのホイールなんかと同期したりできるんですか?
417デフォルトの名無しさん:2006/03/28(火) 10:58:33
できます。
418デフォルトの名無しさん:2006/03/28(火) 11:37:52
memoをスクロールさせるには、プロパティを設定するだけのように簡単にはいかないですか?
ちょっと「Delphi memo ホイール」なんかでググってみたんですが、これっていう答えがみつからなくて…

APIとやらをいじくならければならないならお手上げです。

どちらが簡単だけでも教えてくれませんか?
419デフォルトの名無しさん:2006/03/28(火) 11:45:02
あなたが余計なことをしない限り、デフォルトでできます
420デフォルトの名無しさん:2006/03/28(火) 11:49:11
なるほど、SetFocasなんかでフォーカスもたせるとデフォでできるんですね。
421デフォルトの名無しさん:2006/03/28(火) 12:15:59
SetFocas じゃコンパイルできんだろ
422デフォルトの名無しさん:2006/03/28(火) 12:17:04
もうお前消えていいよ
423デフォルトの名無しさん:2006/03/28(火) 12:20:34
はいはい、アフォな話題はほっといて、次、どうぞ!
424デフォルトの名無しさん:2006/03/28(火) 13:01:58
フォーカスってなんですか?
425デフォルトの名無しさん:2006/03/28(火) 13:11:37
>>424
週刊誌か何かの名前だろ。
426デフォルトの名無しさん:2006/03/28(火) 18:07:31
>もうお前消えていいよ

在日は性格悪いな
427デフォルトの名無しさん:2006/03/28(火) 18:21:19
>>422みたいな奴らがこの手の板に居つく目的って、初心者に答えてやるのではなくて初心者けなしてスッキリするためだからな
次どうぞとか言ってる>>423が実際に答えてやったことがあるのかも疑問
428デフォルトの名無しさん:2006/03/28(火) 18:47:52
まぁマッタリ質問待とうぜ
429デフォルトの名無しさん:2006/03/28(火) 18:50:54
お前らみたいな初心者が回答者面してたら誰も聞く気しないって
430デフォルトの名無しさん:2006/03/28(火) 18:58:09
なんか変な設定したのか分からないんだけど
ActiveXのブラウザー関係のWebBrowser_V1とWebBrowserが消えちゃいました!
どうすれば戻りますか?
431デフォルトの名無しさん:2006/03/28(火) 20:24:32
>>430
[メニューバー]→[プロジェクト]→[オプション]→[パッケージ]
でおまいがTWebBrowserを含めたパッケージにチェックをつける。
432デフォルトの名無しさん:2006/03/28(火) 20:46:08
Del2006ですが、レコードに関数を入れるのって、どのくらい前のDelphiから
サポートされているんですか?
433デフォルトの名無しさん:2006/03/28(火) 20:49:50
2006から
ただしほとんど同じ機能を持つobject型というのは大昔からある
434デフォルトの名無しさん:2006/03/28(火) 21:31:05
TObject型ですか?でも例えば、

TMyClass = TObject
public
x,y:integer;
end;

として、

MyClass:TMyClass;

TStream.WriteBuffer(MyClass,SizeOf(TMyClass));

とした時は、Record型と違って、ポインタだけ保存になっちゃいますよね。
435デフォルトの名無しさん:2006/03/28(火) 21:32:42
objectはobjectだTはいらん
436デフォルトの名無しさん:2006/03/28(火) 21:36:54
そんなオブソレートなもん使うなよー。
437デフォルトの名無しさん:2006/03/28(火) 21:45:37
ただのobjectってのはヘルプを見てもよくわかりませんでしたが、
どういうものですか?
438デフォルトの名無しさん:2006/03/28(火) 21:49:36
2006のレコードとほぼ同じ。
某が亡き物にしようとしてたら.NETで同等の機能が復活して
それに対応する為にrecordにobjectと同等の機能が追加された。

別に知らなくても使わなくても全く問題ない。
439デフォルトの名無しさん:2006/03/28(火) 22:01:10
>>434
> public
> x,y:integer;
> end;

( ゚д゚)…
440デフォルトの名無しさん:2006/03/28(火) 22:01:55
え?何?何か間違ってる?
441デフォルトの名無しさん:2006/03/28(火) 22:06:22
>>431
調べてみたけどチェックは全部付いてた
も一回再構成っての?してみたら直った
でも何でだろ?さっきは全然駄目だったのに
442デフォルトの名無しさん:2006/03/28(火) 22:07:29
>>440
フィールドをpublicにしていることに対して突っ込んでるんだろうけど
record/objectでは普通の使い方だな。
443デフォルトの名無しさん:2006/03/28(火) 22:10:43
ああ、ごめん。でもClassでも結構publicにしてるよ。

private
Fx:integer;
public
property x:integer read Fx write Fx;

とかするくらいなら、

public
x:integer

で良くない?
444デフォルトの名無しさん:2006/03/28(火) 22:10:49
444
445デフォルトの名無しさん:2006/03/28(火) 22:15:16
objectは使うな、と言いながら.dfmはobjectの塊なんだよなぁ。
446デフォルトの名無しさん:2006/03/28(火) 22:28:10
別に便利なんだから使えばいいと思うよ
どうせ下位互換の名目で延々と残るんだし
447デフォルトの名無しさん:2006/03/28(火) 22:50:22
そんなオブソレートなもん使うなよー。
448デフォルトの名無しさん:2006/03/28(火) 22:54:10
まーた始まった
449デフォルトの名無しさん:2006/03/28(火) 23:17:48
くだすれなんだから非推奨だろうが何だろうが別にどうでもいいよ
450デフォルトの名無しさん:2006/03/28(火) 23:36:48
よくもまあ24時間体制でスレに張り付いて
揚げ足取りまくって重箱の隅つつきまくっていられるもんだな
451デフォルトの名無しさん:2006/03/28(火) 23:57:20
object = 重箱の隅
452デフォルトの名無しさん:2006/03/28(火) 23:58:50
はいはい、アフォな話題はほっといて、次、いってみよう!
453デフォルトの名無しさん:2006/03/29(水) 00:27:40
知恵を貸してください。

タイマー内で一定間隔ごとにスレッドをCreateして処理してるものがあるのですが。
(処理が終わればFreeOnTarminateで自動的に解放されます。)

スレッド途中でメインフォームを終了させると、スレッドが完全に終了していないときに
例外が発生します。このような場合どう回避しますか?

グローバルなスレッドのポインタをリストなどで管理したほうがいいのでしょうか。
454デフォルトの名無しさん:2006/03/29(水) 00:32:03
TThreadを一旦Suspendして、TerminateしてからWaitForで終了を待てば良いんでないの
ただし、Threadの処理自体にTerminatedに応じた処理を書いとく必要があるけど
455デフォルトの名無しさん:2006/03/29(水) 00:34:14
例外回避だでいいならグローバル変数Form1Alive: Booleanを参照
456デフォルトの名無しさん:2006/03/29(水) 00:42:04
>453
スレッドを最後まで実行させる必要がないなら
OnCloseの中でTerminateThreadを使ってスレッド強制終了させた方が良い。
457デフォルトの名無しさん:2006/03/29(水) 00:55:17
>>454-456
ご回答どうもありがとです。
↓つまりこういうことなんですが、変数スコープ的にアクセスできなくなるので
  終了処理をするにはまずいってことですよね。(terminate,Suspendできない)

procedure TForm1.Button1Click(Sender: TObject);
var
Thread:TMyThread;
begin
Thread:=TMyThread.Create();//解放はFreeOnTarminateまかせ
end;


>変数Form1Alive: Boolean
すみません調べてみたけどわかりませんでした。(@_@;
Formのプロパティってことではないんですかね?
458454:2006/03/29(水) 01:00:09
変数スコープが問題ならTListにインスタンスを入れておけば良い
その辺は工夫次第だ
459デフォルトの名無しさん:2006/03/29(水) 01:07:48
>>457
>すみません調べてみたけどわかりませんでした。(@_@;
いや、自分で変数作るんだよ。
unit Unit1;
interface
var Form1Alive: Boolean; // Form1のリソースにアクセスできるかどうかのフラグ

procedure TForm1.FormCreate
begin
  Form1Alive := True; // フォームにアクセス可能
end;

procedure TForm1.FormDestroy
beign
  Form1Alive := False; // フォームは死んだ。これ以降アクセス不可
end;

で、スレッド側で

if Form1Alive then Form1にアクセス else スレッド終了

といったコードを書く。手抜きなやり方だけどね。
460デフォルトの名無しさん:2006/03/29(水) 01:08:14
>458
どうもです。
なるほど、解決できそうな気がしてきました。
有難うございました!
461デフォルトの名無しさん:2006/03/29(水) 01:09:48
>459
手抜き最高!!まずそれを試してみます。
462デフォルトの名無しさん:2006/03/29(水) 01:16:43
できた!有難う!!
463デフォルトの名無しさん:2006/03/29(水) 03:33:44
TForm1のDestroyをオーバーライドして最後にForm1 := nil;じゃダメ?
それなら変数作らなくてもAssigned(Form1)とかで調べられるし。
もちろんinheritedの後でnil代入しないと死ねると思うけど。
//inheritedの後でもやっぱダメかな?今手元に環境無いんで誰か検証よろ
464デフォルトの名無しさん:2006/03/29(水) 03:42:40
フラグの方が簡単だね
465デフォルトの名無しさん:2006/03/29(水) 03:51:04
>>463
前でも後でも同じ。問題ない。

ただ、破棄されたメインフォームへの参照が原因で
アクセス違反が起きているということが前提で話が進んでいるが、

> スレッド途中でメインフォームを終了させると、スレッドが完全に終了していないときに
> 例外が発生します。

これだけの記述では何の例外が発生しているのかすら不明。
例外の種類を特定して原因を追求するのが先。
466デフォルトの名無しさん:2006/03/29(水) 04:15:05
>話が進んでいるが、
話は終わっているが
467デフォルトの名無しさん:2006/03/29(水) 08:43:05
そう、終わってるよね。
468デフォルトの名無しさん:2006/03/29(水) 10:04:04
復刻へ向けて投票お願いします。
http://www.fukkan.com/vote.php3?no=22601
469デフォルトの名無しさん:2006/03/29(水) 12:47:27
RichEditからの印刷で、RichEdit1.Print('xxx');
としていますが、印刷が開始されるときに
「印刷中 〜を LPT1:へ出力中 ページ 1/2」などというダイアログを
表示させたいです。ヒントでもありましたらお願いします。
470デフォルトの名無しさん:2006/03/29(水) 16:25:47
↑すみません。無しにしてください。
TPrinter を使って解決できました。ページ数の方はRichEdit1.Print
をコピーして、自分で数えました。
471デフォルトの名無しさん:2006/03/30(木) 14:42:06
BDS2006のTADOConnection、TADOTableを使って、SQLServer2000に接続しています。

OLEデータ(バイナリデータ)フィールドを含むテーブルをTADOTableに指定して、
ActiveをTrueにすると、全レコードの全バイナリデータを読み込むかのような処理が始まり、
恐ろしく待たされてしまいます。

filterでターゲットのレコードを1つに指定しても全レコード分読み込むかのような時間が
かかるのですが、もう少しパフォーマンスを改善することはできないでしょうか。

どうぞ宜しくお願いします。
472デフォルトの名無しさん:2006/03/30(木) 14:53:20
つ TADOQuery
473471:2006/03/30(木) 15:42:31
>>472
ありがとうございます。
SQL文で直接フィルタすると、パフォーマンスが良くなりました。


もう一つ質問なのですが、TADOConnectionのConnectionStringを
ユーザーにビルドさせる事は可能でしょうか。ビルドのダイアログを
出したいのですが、TADOConnectionのメソッド等にはそれらしきものが
ありませんでした。

また、ConnectionStringが含まれるudlファイルというのがあるのですが、
これを起動時にADOConnectionに読み込ませる方法は無いでしょうか。
474デフォルトの名無しさん:2006/03/30(木) 22:59:13
TreeView(DragMode=automatic)でノードをドラッグ&ドロップしている間に
エクスローラのようにキー操作でマウスカーソルを変化させたいのですが、
キーを押してもOnKeyPress等のイベントが呼ばれないため
カーソルを変化させる事が出来ないのですが、
どうすれば出来るようになるのでしょうか?
475デフォルトの名無しさん:2006/03/30(木) 23:24:05
あるボタンを押して内部処理実行中にカーソルを砂時計にしたいのです。
Form1->Cursor = crHourGlass;とやれば、マウスがFormの上にあるときは砂時計になるのですが
Formの上に貼り付けてあるボタンやページコントロール上では砂時計に変わってくれません。
処理中はどの部品の上でも砂時計にしたいのですが・・
Form1->Cursor = crHourGlass;
PageControl1->Cursor = crHourGlass;
GroupBox2->Cursor = crHourGlass;



と、部品1つ1つにコードを書いてやるしか方法はないでしょうか?

476デフォルトの名無しさん:2006/03/30(木) 23:24:51
>>475
Screen.Cursor := crHourGlass
477デフォルトの名無しさん:2006/03/30(木) 23:40:23
>476

ありがとうございます。
うまくいきました!!
478デフォルトの名無しさん:2006/03/30(木) 23:54:01
>>473
ユーザーの選択により動的に文字列生成してConnectionStringに突っ込んでは?

http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200406/04060060.txt
http://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200410_04100024.html (//FProviderのところみたいに)


udlの中身は単なるテキストだから文字列取り出して上と同じくConnectionStringに突っ込むとか。
479デフォルトの名無しさん:2006/03/31(金) 00:00:58
> これを起動時にADOConnectionに読み込ませる方法は無いでしょうか。
ConnectionString プロパティに
FILE NAME=C:\Program Files\Common Files\System\OLE DB\Data Links\DBDEMOS.udl
とか設定するのかな。

> ビルドのダイアログ
つ PromptDataSourceメソッド

With ADOConnection1 do
 ConnectionString := PromptDataSource(Form1.Handle, ConnectionString);
480デフォルトの名無しさん:2006/03/31(金) 01:17:18
>>474
WM_KEYDOWNはMouseCaptureしているウィドウへ送られるのでは?
481デフォルトの名無しさん:2006/03/31(金) 04:17:59
すみません。どなたか知恵を貸してください。

TreeViewを使ってアウトラインプロセッサみたいなのを作りはじめました。
TreeViewのItemをMouseUpしたら当Item名のファイルを開く、というヤツです。

ところが困ったことがおきました。
Itemが子をもったときに、ノードを展開するためにしたMouseUpにも反応してファイルを開いてしまうという症状です。

ノードをExpandするためにしたMouseUpか、ファイルを開くためにしたMouseUpか判別できたらいいんですが…
482デフォルトの名無しさん:2006/03/31(金) 05:29:02
>>481
TTreeNode.DisplayRect とか?
あとどうでもいいが MouseUp はないだろう。
OnClick か OnChange でいいじゃん。

ついでに言うならダブルクリックでファイルを開く方がよくね?
そうすりゃ小難しい事考えんですむぞ。
483デフォルトの名無しさん:2006/03/31(金) 05:50:56
>>482さんへ
レス、サンクスです。

クリックされた位置(X,Y)が欲しくてOnClick等は使わないでMouseUpにこだわったのです。
MouseDownされたときにグローバル変数にX,Yを退避させようかなぁ…
素人の考えつくことはこんなもんです。

DisplayRectのヘルプをみたけど、ノードの位置だけを取れるみたいですね。
でも、TTreeNodeの情報を取得するコードが思いつかない。

徹夜したので、また起きて考えなおしてみます。ヒントをどうもありがとう!
484デフォルトの名無しさん:2006/03/31(金) 05:54:35
>>483
クライアント座標からノードを取得したいなら GetNodeAt
でも OnChange なら TTreeNode が直接もらえるけど?
485デフォルトの名無しさん:2006/03/31(金) 05:55:16
あスマンそれとは別に座標も欲しいのか
486デフォルトの名無しさん:2006/03/31(金) 06:19:15
Delphi7でActiveXフォームを作って保存したあと、再度プロジェクトを読み込んでも
きちんとフォームが表示されません。ActiveXフォームの場合はプロジェクトを読み込む以外に
何かやらなければならないことがあるのでしょうか?
487デフォルトの名無しさん:2006/03/31(金) 09:47:48
>>481
MouseDownしたときの座標でGetHitTestInfoAt
488デフォルトの名無しさん:2006/03/31(金) 10:29:10
アプリケーションが、
常に他のウインドウより一番上にくる方法を
教えてください。
489デフォルトの名無しさん:2006/03/31(金) 10:31:47
FormStyle := fsStayonTop
490デフォルトの名無しさん:2006/03/31(金) 12:08:53
「アプリケーションが」というのが意味不明。

そんなアプリが複数あったらどうなるんだろうか?
491デフォルトの名無しさん:2006/03/31(金) 12:14:47
VCL には Application というオブジェクトがあってウィンドウハンドルを持っている。
別に意味不明じゃない。
492デフォルトの名無しさん:2006/03/31(金) 12:22:53
で FormStyle := fsStayonTop にするとアプリケーションは一番上にくるのか?
必ずフォームより下だと思うが。
493デフォルトの名無しさん:2006/03/31(金) 12:34:47
そこまで突っかかるほど意味不明じゃないと思うんだが
494デフォルトの名無しさん:2006/03/31(金) 13:20:59
なら、アプリケーションを一番上にするための回答が分かってるの?
495デフォルトの名無しさん:2006/03/31(金) 13:56:51
不可視のウィンドウにもZオーダーってあるの?
496デフォルトの名無しさん:2006/03/31(金) 14:20:37
質問者はメインフォームをfsStayOnTopにした状態の事聞いてんじゃねの
497デフォルトの名無しさん:2006/03/31(金) 14:22:16
相変わらずコミュニケーション能力読解力0の引きこもり粘着バカが常駐してるな。
498488:2006/03/31(金) 14:29:19
>>489
できました。ありがとうございます。

キー入力を常に監視し、
押されたキーを表示するアプリケーションを
作りたいのですが、
ウインドウがアクティブじゃない状態でも
キーボードからの入力を得るには
どうすればよいのでしょうか?
499デフォルトの名無しさん:2006/03/31(金) 14:32:13
>>498
SetWindowsHookEx
500デフォルトの名無しさん:2006/03/31(金) 14:34:39
手軽にやるならタイマー使ってGetAsyncKeyState()かGetKeyboardState()で監視し続ける
501デフォルトの名無しさん:2006/03/31(金) 15:03:47
んー、結局 fsStayOnTop 関係なくキー入力監視したいだけなんだな。Zオーダと
フォーカスの関係もわかってないひとの質問にエスパーが答えてるってことだな。

タイーホされた奴もいたなぁー。インターネットカフェに仕込んで。
502デフォルトの名無しさん:2006/03/31(金) 15:23:35
この粘着力には並々ならぬ物を感じます
503デフォルトの名無しさん:2006/03/31(金) 16:48:41
で、アプリケーションが一番上にくる方法はどうなった?
504デフォルトの名無しさん:2006/03/31(金) 17:10:27
出来たって言ってんじゃん
505デフォルトの名無しさん:2006/03/31(金) 17:23:33
いや >>491 にきいてるんだが
506デフォルトの名無しさん:2006/03/31(金) 17:36:33
Application.HandleにSetWindowPosで常に手前にできるべさ
507デフォルトの名無しさん:2006/03/31(金) 17:37:16
できねべさ
508デフォルトの名無しさん:2006/03/31(金) 17:39:33
>>507
フォームずっと手前にあるよ?理屈は知らんけど。(ちなみに>>491じゃない
509デフォルトの名無しさん:2006/03/31(金) 19:22:02
フックすりゃいいじゃん
510デフォルトの名無しさん:2006/03/31(金) 20:14:17
アプリケーション粘着厨はやっと去ったか
511デフォルトの名無しさん:2006/03/31(金) 21:42:12
で、結局アプリケーションが一番上にくる方法はどうなった?
512デフォルトの名無しさん:2006/03/31(金) 21:59:42
「別に意味不明じゃない」とか言ってた >>491 はどうした?
513デフォルトの名無しさん:2006/03/31(金) 22:06:25
暇だね
514デフォルトの名無しさん:2006/03/31(金) 22:08:34
>>511-512
>>506

某公式にも書いてあることなんだが・・・
515デフォルトの名無しさん:2006/03/31(金) 22:09:52
相当ね
516デフォルトの名無しさん:2006/03/31(金) 22:11:40
fsStayOnTopだと一瞬ちらつくからWin32API使った方がよさげ
517デフォルトの名無しさん:2006/03/31(金) 22:15:25
フォームの上には出れないだろ。
518デフォルトの名無しさん:2006/03/31(金) 22:17:22
いまだにアプリケーションを一番上にした回答はないのか?
519デフォルトの名無しさん:2006/03/31(金) 22:17:36
ひょっとしてApplicationを知らないとか・・・?
いや、まさか、それはないよね・・・
520デフォルトの名無しさん:2006/03/31(金) 22:18:54
Application はすべてのフォームのオーナだから、フォームより上に来れないだろさ。
521デフォルトの名無しさん:2006/03/31(金) 22:20:03
M$も某も「アプリケーションを手前に表示」という使い方を普通にしてるんですが、
これに対しての見解はいかがなものでしょうか。
先ほどからデータ到着待ちで暇な同僚とニヤニヤしながら見ております。
返答の程よろしくお願いいたします。
522デフォルトの名無しさん:2006/03/31(金) 22:26:56
これが社会人のやり取りなのかと思うと欝になる
523デフォルトの名無しさん:2006/03/31(金) 22:32:48
アホ同僚同士
524デフォルトの名無しさん:2006/03/31(金) 23:06:26
そして肝心のアプリケーション厨は逃げたか
525デフォルトの名無しさん:2006/03/31(金) 23:54:12
Delphiは二度と無償版が出ないどころかIDE事業を売却したそうですが、
この先どの言語に乗り換えるべきでしょうか。
526デフォルトの名無しさん:2006/03/31(金) 23:57:05
いや、言語ではなく職を変えるべきです。
527デフォルトの名無しさん:2006/03/32(土) 00:04:09
無職ニートの525 はどうすれば?
そうだ人間やめなさい。
528デフォルトの名無しさん:2006/03/32(土) 00:14:40
>>525
毎回上げてくれるので判別がつきやすいです。
どうもありがとうございます。

おっと、助言しちゃった
529デフォルトの名無しさん:2006/03/32(土) 02:07:08
>>479
遅くなりましたができました。ありがとうございます。
530デフォルトの名無しさん:2006/03/32(土) 02:28:41
>>521
きみは >>491 が読めないのか? それとも >>491 に見解をもとめてるのか?
もしかして、VCL 知らないとか?
531デフォルトの名無しさん:2006/03/32(土) 02:37:19
491は別に間違っちゃいないよ
間違ってると言うなら具体的に指摘してよ
532デフォルトの名無しさん:2006/03/32(土) 02:39:42
英字を全角で打つ奴は大抵アホだから信用できねーなw
533デフォルトの名無しさん:2006/03/32(土) 02:45:39
>>531
だから、Application ウィンドウが「常に他のウインドウより一番上にくる方法」
を質問してるんだよ、>>491 に。間違ってるなんて言ってないだろ。
きみが知ってるなら教えて。
534デフォルトの名無しさん:2006/03/32(土) 02:55:53
VCL には Application というオブジェクトがあってウィンドウハンドルを持っている。
こいつに最前面の属性をつけてやれば、自アプリのウィンドウが
他のアプリのウィンドウより手前にくるようになる。
535デフォルトの名無しさん:2006/03/32(土) 03:17:15
タイマで定期的に一番上に表示してはどうでしょう?
536デフォルトの名無しさん:2006/03/32(土) 08:24:11
>>533>>534も理解できないんだろうな
537デフォルトの名無しさん:2006/03/32(土) 08:29:02
>>533
頭カワイソス(´・ω・)
538デフォルトの名無しさん:2006/03/32(土) 08:44:45
解決してるものを質問者じゃないのが延々と引っ張るな
レスしたやつも荒らしの手伝いになるからスルー汁
539デフォルトの名無しさん:2006/03/32(土) 11:01:29
Application ウィンドウ が「常に他のウインドウより一番上にくる方法」 は、マダー?
540デフォルトの名無しさん:2006/03/32(土) 12:29:19
Application ウィンドウを一番上に持ってきてもサイズ0だしメリットなんかあるん?
それでもやりたいんなら、

hWndMain:=Windows.FindWindow('<フォームのClass名>',Nil);
hWndParent:=Windows.GetParent(hWndMain);
//クラス名後のDelphiのオーナーウィンドウを検索し表示する
hWndMain:=Windows.FindWindowEx(hWndParent,hWndMain,
'TApplication','<dprの名前>');
Windows.ShowWindow(hWndMain, <SW_うだうだ>);

それ以降ご自由に。
541デフォルトの名無しさん:2006/03/32(土) 12:42:57
最近質問者の質よりも回答者の立場にいる人間の質のほうが悪いな
MLとは天と地程の差があるよな
542デフォルトの名無しさん:2006/03/32(土) 13:10:04
この状況では質問者の方がタチ悪い気がするが
543デフォルトの名無しさん:2006/03/32(土) 13:38:36
質問者は解決したと言ってるのに勝手に話続けてるのは回答する側だろ
544デフォルトの名無しさん:2006/03/32(土) 13:54:35
荒らしは荒らしで、質問者でも回答者でもないよ。
545デフォルトの名無しさん:2006/03/32(土) 14:03:24
この話題引っ張ってる奴も糞
546デフォルトの名無しさん:2006/03/32(土) 14:05:03
そりゃあこんな糞ユーザーばかりではDelWikiも潰れるわな
547デフォルトの名無しさん:2006/03/32(土) 14:09:22
賢い頭持ってるならスルーしようぜ
548デフォルトの名無しさん:2006/03/32(土) 14:11:50
僕は本当に悲しいです。どうして皆いがみ合ってるんですか?
仲良く教えあいましょうよ。
549デフォルトの名無しさん:2006/03/32(土) 17:32:15
2ちゃんで質問するほうが悪いのかもな・・
550デフォルトの名無しさん:2006/03/32(土) 19:41:01
それはそうと、>>540 のナンセンスコードってなんなの?
551デフォルトの名無しさん:2006/03/32(土) 20:15:51
うんうんあれは酷いねあなたの言う事は全て正しい

これで満足か?
552デフォルトの名無しさん:2006/03/32(土) 20:23:28
>>550
ただ批判するだけなら誰でもできますよ。
あなたが同じ処理を書く場合において「センスが良い」と感じるコードを
明示してください。そうでなければ>>550の発言には何の価値もありません。
553デフォルトの名無しさん:2006/03/32(土) 20:25:10
かまっちゃだめだって
554デフォルトの名無しさん:2006/03/32(土) 20:37:21
すまん、つい・・・悪かったorz

そいやBDS2006使ってるんだが、特定のパーソナリティの内容変えるとき
ちまちまレジストリ弄ってんだが、ひょっとしてツールとかあったりする?
555デフォルトの名無しさん:2006/03/32(土) 20:47:57
>>552
同じ処理っていったって意味不明。 なんか必死に外から Application.Handle
を取ろうとしているように見えるが間違いだらけ。ギャグとしか思えないのに偉そう、なこと
言ってるから、つい絡んでみたくなっただけ。スマヌ
556デフォルトの名無しさん:2006/03/32(土) 21:11:21
粘着がうるさいからわざと回りくどく書いたと思ってたが
557デフォルトの名無しさん:2006/03/32(土) 21:13:36
いいからスルーしろって
558483:2006/03/32(土) 22:43:42
亀レスですが。

>>487さん、ヒントをどうもありがとう!
さっきやってみたら、無事、動きました。

しかし、スレが伸びてると思ったら荒れてますね・・
559デフォルトの名無しさん:2006/03/32(土) 23:56:24
触れちゃだめだって
560デフォルトの名無しさん:2006/04/02(日) 06:55:58
こんにちは。コンボボックスの妙な挙動に悩んでいます。一応自分でもググったり
して調べて見たんだけど、万一既出だったら許して。
フォームにコンボボックスを配置してOnChangeイベントに以下のコード。
procedure TForm1.ComboBox1Change(Sender: TObject);
var
 i: integer;
begin
 ComboBox1.Items.Insert(0, ComboBox1.Text);

 i := ComboBox1.Items.Count - 1;
 while i > 0 do
 begin
  if ComboBox1.Items[i] = ComboBox1.Items[0] then
  begin
   ComboBox1.Items.Delete(i);
   i := 1;
  end;

  Dec(i);
 end;
end;

編集ボックス1文字ずつ入れていけば、ドロップダウンリストにその履歴が残ります。
で、重複する文字が入力されたとき(あるいは、ドロップダウンリストから履歴のひとつ
がクリックされたとき)、それをドロップダウンリストの一番上に追加し、編集ボックス
に表示させた上で、重複文字をドロップダウンリストから削除したいってだけです。
このコードで、まずアイテムリストの先頭に文字が挿入され、重複するアイテムがあれば
確かに削除されるんだけど、その直後なぜか入力したはずの編集ボックスが空になって
しまいます。なんで!?
ComboBox1.Items.Delete(i);の次にたとえばComboBox1.Text := ComboBox1.Items[0];
とやっても、やはり編集ボックスは空白のままです。編集ボックスには、入力した文字を
そのまま表示させておきたいんだけど・・・
561デフォルトの名無しさん:2006/04/02(日) 07:04:46
>>560
というかやろうとしてる事自体が妙なんですが。
562560:2006/04/02(日) 07:09:44
>561
え、そんなに妙ですか?
ドロップダウンリストを入力データの履歴として使って、重複するデータが
あればそれをリストの先頭にもってきたいってだけなんですけど・・・
563デフォルトの名無しさん:2006/04/02(日) 07:12:32
入力する度に全部履歴に残すってどうかと思う。

>>560のソース見る限りasdfって入力すると

asdf
asd
as
a

みたいな感じで保存されていくんだよね?
何らかのアクションがあった時に追加していくのが普通かと思ってた。
まぁ俺自身初心者なので何とも言えませんが〜。
564560:2006/04/02(日) 07:23:11
>563
あーごめんなさい、560のコードは話をわかりやすくするために、一番シンプルに
しただけなんです。実際のOnChageイベントは
if Length(ComboBox1.Text) = 4 then begin...end;
で囲ってあって、入力された文字数を監視していて、
4桁の数字が入力されたときのみ履歴に追加されるようになっています。
つまり履歴は
5555
4444
3333
2222
1111
って感じになるわけです。かえってわかりにくくなってしまった。すいません。

565560:2006/04/02(日) 07:37:26
こっちのコードの方がわかりやすかったでしょうか。
procedure TForm1.ComboBox1Change(Sender: TObject);
var
i: integer;
begin
if Length(ComboBox1.Text) = 4 then
begin
ComboBox1.Items.Insert(0, ComboBox1.Text);

i := ComboBox1.Items.Count - 1;
while i > 0 do
begin
if ComboBox1.Items[i] = ComboBox1.Items[0] then
begin
ComboBox1.Items.Delete(i);
i := 1;
end;
Dec(i);
end;
end;
end;
566560:2006/04/02(日) 07:37:59
ずれた orz
567デフォルトの名無しさん:2006/04/02(日) 07:44:12
procedure AddToHistory(History: TStrings; Item: String; MaxItems: Integer = 8);
var
   i: Integer;
begin
   i := History.IndexOf(Item);
   if i >= 0 then
       History.Delete(i);
   History.Insert(0, Item);
   while History.Count > MaxItems do
       History.Delete(History.Count-1);
end;
568デフォルトの名無しさん:2006/04/02(日) 07:45:08
なるほどー確かにそれだとドロップダウンリストを選択した時に
入力中の文字列が消えてしまいますね。

そういえばTComboBoxにはいくつか不具合があるらしいので、
それもその1つなのかもしれません。

別のコンポーネントを使うか、ちょっと妥協して他の手段を用いるか
するしかない気がします。

お力になれずにすいませんOTL
569デフォルトの名無しさん:2006/04/02(日) 09:34:35
>>560
選択中のアイテムを削除してしまうと、何も選択されていない状態になってしまうのが原因。
挿入、選択アイテムの変更、削除の順で行えば回避できる。

var
 Index: Integer;
begin
 if Length(ComboBox1.Text) = 4 then
 begin
  ComboBox1.ItemIndex;
  Index := ComboBox1.Items.IndexOf(ComboBox1.Text);
  if Index >= 0 then
  begin
   ComboBox1.Items.Insert(0, ComboBox1.Text);
ComboBox1.ItemIndex := 0;
   ComboBox1.Items.Delete(Index + 1);
  end;
 end;
end;
570デフォルトの名無しさん:2006/04/02(日) 09:36:08
('A`)何か変なゴミが混ざってた・・・

var
 Index: Integer;
begin
 if Length(ComboBox1.Text) = 4 then
 begin
  Index := ComboBox1.Items.IndexOf(ComboBox1.Text);
  if Index >= 0 then
  begin
   ComboBox1.Items.Insert(0, ComboBox1.Text);
   ComboBox1.ItemIndex := 0;
   ComboBox1.Items.Delete(Index + 1);
  end;
 end;
end;
571デフォルトの名無しさん:2006/04/02(日) 10:34:44
>>554
> ちまちまレジストリ弄ってんだが
bds に -r オプションというのがあるが。
参照: bds -?
572560:2006/04/02(日) 17:25:17
どうも皆さんありがとうございます。特に>>569さん、的確なヒントに感謝します。
ComboBox1.ItemIndex := 0;
が鍵だったようで、この1行を付け加えることで私のコードでも望む挙動を
得られました。私は、この1行と
ComboBox1.Text := ComboBox1.Items[0];
が同じ働きをするものと思っていたのですが、どうも違うようですね。

あと、プロパティのautocompleteはfalseにしておいた方が良いようです。

くだスレの皆さん、日曜日の朝からありがとうございました。
573デフォルトの名無しさん:2006/04/02(日) 18:28:47
オブジェクトの永続化を行う場合、TPersistentではなく
TComponentを継承してWrite/ReadComponentしないといけないんでしょうか?
できればName, Tagは省きたいです。

また、永続化はバイナリでないといけないんでしょうか。
できればテキストで保存したいです。
574デフォルトの名無しさん:2006/04/02(日) 18:30:03
自分でそういう風に実装して下さい
575デフォルトの名無しさん:2006/04/02(日) 19:20:26
NameもTagも設定しなければ保存されないだろ
テキスト化はObjectBinaryToText
576デフォルトの名無しさん:2006/04/02(日) 23:58:28
VBはかっこいい最新版が無償で手に入るそうですが、
http://msdn.microsoft.com/vstudio/express/vb/
Delphiにはそういうのがありませんか?

BorlandはIDE事業に力を入れてるので多分あるはずだと思いますが。
577デフォルトの名無しさん:2006/04/03(月) 00:10:17
はいはいクマクマ
↓次どうぞ
578デフォルトの名無しさん:2006/04/03(月) 00:46:34
>>576

ない
579デフォルトの名無しさん:2006/04/03(月) 01:52:45
>>576
.NETみたいな次世代OSVistaの内部ではほぼ不採用なマネージドコードじゃなくて、
結果的にVistaの9割以上で使われてるネイティブコードで開発できるVBは無償配布されてませんか?
かっこいい最新版を無償で配ってるくらいなら多分あるはずだと思いますが。
580デフォルトの名無しさん:2006/04/03(月) 02:36:40
くるしいな、それ。ほぼ不採用だとか、必死すぎ ワラワラ
581デフォルトの名無しさん:2006/04/03(月) 02:37:39
>>579
すれ違い。ここはDelスレ。
582デフォルトの名無しさん:2006/04/03(月) 03:23:39
ネイティブ捨てたVBに対する皮肉だろw
あとVistaでマネージドコードが全然使われなかったのは事実だよ
確かすでに解析結果が外人さんのサイトにあげられてたはず
スラド辺りに簡単な解説も載ってたかな
583デフォルトの名無しさん:2006/04/03(月) 06:52:55
>スラド辺りに簡単な解説も載ってたかな
なるほど。こういうところに出入りしているのがスレ荒らしてたわけか。
おまえに粘着されたら絶望的だな。
584デフォルトの名無しさん:2006/04/03(月) 08:28:00
DirectX 9 for Delphi
http://wdirectx.no-ip.com/
585デフォルトの名無しさん:2006/04/03(月) 09:23:48
Now-filetimeを〜日前とか〜秒前といった文字列に変換するのって
自前でやらないとダメですか?
何か便利な関数ないですか。
586デフォルトの名無しさん:2006/04/03(月) 12:10:06
Delphiなんて誰も使ってない言語使ってて楽しいですか?w
587デフォルトの名無しさん:2006/04/03(月) 12:17:16
そりゃ楽しいよ。他人が何使おうと関係ないし
588デフォルトの名無しさん:2006/04/03(月) 12:21:24
delphiスレなのにMS信者が必死なスレだな
589デフォルトの名無しさん:2006/04/03(月) 12:37:14

くだらん質問して悪いのだけど、
vbaの中で時間のかかるサブルーチンをデルフィーのdllで置き換えたいのですが、
3次元配列をdllに渡して、dllの中でそれ更新して、更新された配列を
vbaに戻すことはできますか?
この場合、dllに渡したりdllから貰ったりするには、
テキストファイルなどに一旦保存する必要があるんでしょうか?
590デフォルトの名無しさん:2006/04/03(月) 13:10:42
ない
591デフォルトの名無しさん:2006/04/03(月) 16:10:37
>>586
楽しいかどうかという基準で考えるようじゃ駄目。
いかに仕事を速くこなせるかが重要。
Delphiの方が開発効率が格段に上だから使っているだけ。
592デフォルトの名無しさん:2006/04/03(月) 17:21:18
Delphiで仕事なんてあるんですか?
593デフォルトの名無しさん:2006/04/03(月) 17:28:57
本当に答えが聞きたいなら雑談スレで再質問してください。
594デフォルトの名無しさん:2006/04/03(月) 19:36:05
>>592
ぶっちゃけ、うちの案件は言語が指定されていない場合が結構あるので、
そういう場合はDelphiでちゃっちゃと作ってる。
595デフォルトの名無しさん:2006/04/03(月) 20:10:54
そういう小中規模のはいいよな
ある程度の規模以上になると指定無しなんてまずないorz
596デフォルトの名無しさん:2006/04/03(月) 20:52:01
うちはBorland製品を採用しそうになったら上司にこのリンク教えてる。

米BorlandがDelphiなどIDE事業を売却
http://enterprise.watch.impress.co.jp/cda/foreign/2006/02/09/7187.html
597デフォルトの名無しさん:2006/04/03(月) 21:16:36
雑談がしたいのなら雑談スレでどうぞ
598デフォルトの名無しさん:2006/04/03(月) 21:30:49
>589
出来ますが、ポインタの概念を理解していないと難しい。
Delphiで配列へのポインタと要素数を引数とする関数を持つDLLを作り、VBA内部でそれをDeclare。



599デフォルトの名無しさん:2006/04/03(月) 22:08:21
>>585
時間のフォーマットによる。
NowってことはTDateTimeか?ならDateTimeToString
600デフォルトの名無しさん:2006/04/03(月) 22:50:50
クライアントーサーバー型のプログラムで
クライアントにあるListBoxの全要素をサーバーに渡してそれをクライアントに渡す動作をする場合
ListBoxの要素はSendTextで一つづつ送るしかありませんか?
601Delフサギコ ◆A6VzDeLphI :2006/04/03(月) 23:12:32
          >>600
    ∧,,∧   IPメッセですか?
   ミ,,゚Д゚彡
    ミ つ旦)~~

まとめてからSendTextで送る
とかも、あるんじゃない?

どんな回答を求めたいの?

602デフォルトの名無しさん:2006/04/03(月) 23:29:00
テキストだけでいいなら、Items.Textで全部送ればいい。
603デフォルトの名無しさん:2006/04/03(月) 23:36:07
>>601
クライアント1のListBoxの中身をそっくりクライアント2のListBoxに移したいと思ったんですが
ListBox.Items がTstrings型だからSendTextできませんよ・・って言われちゃうので
Listbox.Items[i]をforループで回して一つづつ送らなきゃいけないのかなと思いまして
604600:2006/04/03(月) 23:36:50
リロードしてませんでした_| ̄|○
>>602
やってみます、ありがとうございました
605589:2006/04/04(火) 09:02:19
>>598
そうなんですかありがとう。
ちなみに、サンプルコードってどこかにのってますか
606デフォルトの名無しさん:2006/04/04(火) 10:21:36
サンプルがないと何も出来ない。それがDelphi厨。
607デフォルトの名無しさん:2006/04/04(火) 10:43:38
>>606
.net 普及しませんね
608デフォルトの名無しさん:2006/04/04(火) 11:01:46
>>606
vb厨なんですけど
609デフォルトの名無しさん:2006/04/04(火) 11:18:33
すれ違いだろ。DLL のつくり方はともかく、使い方なら。
610デフォルトの名無しさん:2006/04/04(火) 14:49:04
Delphi6PersonalSP2(RTLUpdate3適用済み)
矩形の積集合を求める関数UnionRectについて。

r, r1, r2: TRect;
r1 := Rect(0, 0, 10, 10);
r2 := Rect(5, 5, 10, 10);
の時、UnionRect(r, r1, r2)を呼んだ後
r = (Left:0; Top:0; Right:10; Bottom:10)となってました。
積集合だからr = (Left:5; Top:5; Right:10; Bottom:10)が正しいと思うのですが、
もしかしてバグでしょうか?
611デフォルトの名無しさん:2006/04/04(火) 14:56:52
ヘルプ100回嫁
612デフォルトの名無しさん:2006/04/04(火) 14:58:03
IntersectRect 関数と勘違いしてるんじゃないの?
613デフォルトの名無しさん:2006/04/04(火) 15:01:02
UnionRect 関数を呼び出すと,R1 と R2 の両方が含まれる最小の長方形を取得できます。
IntersectRect 関数を呼び出すと,R1 と R2 の共通部分である長方形を取得できます。
614デフォルトの名無しさん:2006/04/04(火) 15:18:30
現在表示されている複数のウィンドウを取得して1つのフォームにならべて
表示したいのですけれど可能ですか?
実現するための関数とかヒントを誰か教えてー
615デフォルトの名無しさん:2006/04/04(火) 15:21:57
可能だが、変なUIだね。おれならやらんな。
616デフォルトの名無しさん:2006/04/04(火) 15:28:40
>>614
ウィンドウ自体を並べたいの?
だったらEnumWindows+SetWindowPos。

Macのexposeみたいにウィンドウのイメージ画像を取得して
一覧表をフォームにベタっと貼り付けたい?
617デフォルトの名無しさん:2006/04/04(火) 16:02:12
WindowsNT系列のログイン画面を放っておくと出てくるスクリーンセーバみたいのを
作りたいのだけど、詰まったので質問します。
--------------------------------------------------------------------
procedure TScreenSaverForm.Timer1Timer(Sender: TObject);
var
x,y: Integer;
begin
with Canvas do
begin
if Font.Color = clWhite then
begin
// (Image1に表示されてる画像を消去)←これがわからない
Font.Color := clBlack
end
else
begin
Image1.Canvas.Draw(Random(Screen.Width) ,Random(Screen.Height),Image1.Picture.Graphic);
Font.Color := clWhite;
end;
TextOut((Width - TextWidth(DispStr)) div 2, ((Height - TextHeight(DispStr)) div 2),'テスト中');
end;
end;
--------------------------------
ここまでコードを書いて悩んでます。
Image1はウィンドウ全画面です。(Image1.Width := Screen.Width; 高さも同様)
今のままだと画像が重なってしまって意味不明です。
Image1に表示されてる画像を消去の仕方を教えてください。
そのあとに画像をまた描画する方法も教えてください。
618614:2006/04/04(火) 16:02:18
>>616 さん
ありがとうございます。

はい。ウィンドウ自体を取得して並べたいです。
EnumWindows+SetWindowPos
ですか。
調べてやってみます〜
619デフォルトの名無しさん:2006/04/04(火) 16:05:27
Image1.Picture = nil;
Image1.Picture.LoadFromFile('hoge.bmp');
620デフォルトの名無しさん:2006/04/04(火) 16:08:47
Length関数って、ヌル探して1文字ずつ検証するんでしょうか?
それとも、StringやArrayのどこかに長さ情報が入ってるんでしょうか?
もしヌルを探しているなら、Lengthを使わないで長さを変数で保持した方が速いし、
長さの情報を既に保持していて、参照するだけならLengthが速いし。
どっちなんでしょ?
621デフォルトの名無しさん:2006/04/04(火) 16:16:58
>>620
Stringの[-1..-4]あたりに長さがセットされていてそれを返すだけ。
ガシガシ呼んで問題なし。
622デフォルトの名無しさん:2006/04/04(火) 16:31:19
Stringの実態は連続したChar型配列へのポインタで
0番目の要素に長さが入っていてLength関数は>>621が言うようにそれを返すだけ
0番目の要素を直接参照するとDelphiが青筋立てて怒ります
Array(動的配列)も同じく実態はポインタ

var
 hoge: String;
begin
 hoge   := 'Hello Delphi';
 hoge[1] := 'F';       //hogeは'Fello Delphi'
 hoge[0] := 'F';       //コンパイルエラー
end;
623デフォルトの名無しさん:2006/04/04(火) 16:36:12
>619さん
ありがとうございます。nilを代入すれば良かったんですね。
外に画像ファイルを置くのが嫌いなのでImage2を作って隠し、
Image1.Canvas.Draw(Random(Screen.Width) ,Random(Screen.Height) ,Image2.Picture.Graphic);
とimage2から画像をコピーすることで対処しました。
ありがとうございます。
624620:2006/04/04(火) 17:19:30
>>621-622
意外な結果で参考になりました。
ここに疑問を持ったのは、
PListW: PWideChar;
で、
Length(WideString(PListW))
なんていうコードを見かけたからです。
コレはさすがに型変換の時点でヌルを探してますよね。
625614:2006/04/04(火) 18:22:10
EnumWindowsで得たウィンドウ名でFindWindowして
得られたウィンドウハンドルをSetParentで実行して
いるプログラムのフォーム上に並べたいのですが
うまくいきません・・
うまく自身のフォームにはいりません。

テストで自身のフォーム上にメモ帳を入れるものを作ってます

WinHnd := FindWindow(nil,'test.txt - メモ帳');
MyWHnd := GetForegroundWindow;

if oldH<>MyWHnd then Windows.SetParent(Handle, MyWHnd);
//oldH:=MyWHnd;
SetWindowPos(WinHnd,HWND_TOPMOST,0,0,0,0,
SWP_NOACTIVATE or SWP_NOSIZE);
626デフォルトの名無しさん:2006/04/04(火) 19:26:46
Delphi6をダウンロードしたんだが…

何にも作れなかったー\(^o^)/
627デフォルトの名無しさん:2006/04/04(火) 19:35:31
>>626
F9
628デフォルトの名無しさん:2006/04/04(火) 19:46:58
>>627
いや…実行とかじゃなくて…作る物がないって言うか
あるんだけど実装出来ないっていうか…

何も作れなかったー\(^o^)/
629デフォルトの名無しさん:2006/04/04(火) 19:47:01
>>624
Lengthはあくまで長さしか見てない
そのコードだと長さがセットされてるからね
意味分かる?
630デフォルトの名無しさん:2006/04/04(火) 19:47:47
>>628
日記はチラシへ
631デフォルトの名無しさん:2006/04/04(火) 21:08:30
ImageからImage.Picture.LoadFromFile(C:\hoge.jpg)
としてhoge.jpgを読み込もうとしたんですが
処理できません云々のエラーがでて読み込めません・・
BMPなら読み込めたのですが目標のものの都合上jpgにアクセスできないのは少々辛いものがあります

どのようにすればjpgを読み込めるのでしょうか?
632デフォルトの名無しさん:2006/04/04(火) 21:11:42
健全版OptixProみたいなの作ったぜ!今度Vectorに登録しよう。
633デフォルトの名無しさん:2006/04/04(火) 21:14:19
>>631
usesにjpegって入れてみ。
634デフォルトの名無しさん:2006/04/04(火) 21:20:41
>>633
ありgとうございました!
635デフォルトの名無しさん:2006/04/04(火) 22:44:05
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
Randomize;
for i:=0 to 14 do
begin
Memo1.Lines.Add(inttostr(Random(20)));
end;
for i:=0 to Serversocket1.Socket.ActiveConnections -1 do
begin
ServerSocket1.Socket.Connections[i].SendText('random');
end;
end;


procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
msg :String;
i : integer;
begin
msg := Socket.ReceiveText ;
if msg = 'random' then
begin
for i:=0 to 14 do
begin
Memo1.Lines.Add(inttostr(Random(20)));
end;
end;
end;
636635:2006/04/04(火) 22:49:07
>>635のような手続きとServersocket、Clientsocketをもつプログラムを使って
サーバー一つ、クライアント二つを立ち上げました。
サーバーのButton1を押すとサーバーと全てのクライアントのMemoにそれぞれ違った乱数を発生させるような動作を期待していたのですが

結果
サーバーのMemo


11


(以下略)
クライアント1,2のMemo




16
(以下略)

のようにクライアントに表示される乱数のパターンが同じになってしまったのです・・
どうすればそれぞれ違ったものにできるのでしょうか?
637デフォルトの名無しさん:2006/04/04(火) 22:52:04
クライアントの方にRandomize入れた?
638デフォルトの名無しさん:2006/04/04(火) 22:54:52
ValueListEditorの指定箇所の値を拾う場合どうすればいいのでしょうか?
ValueListEditorのヘルプが見つからないのですが無いのでしょうか?

Stringsで拾って無理やり解析する方法は思い付いたのですが
ちゃんとした命令があればそれを使いたいのでよろしくお願いします。
639635:2006/04/04(火) 22:56:42
>>637
クライアントのほうにというのは
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
の手続きの中にということですか?
今入れてみましたが結果は同じでした。
640デフォルトの名無しさん:2006/04/04(火) 23:07:02
if msg = 'random' then
begin
 for i:=0 to 14 do
 begin
  randomize;
  Memo1.Lines.Add(inttostr(Random(20)));
 end;
end;
にしないと種変わらないんじゃないの?
641デフォルトの名無しさん:2006/04/04(火) 23:08:25
ああ、ごめんなんでもない('A`)
642635:2006/04/04(火) 23:11:15
>>640
サーバー
9
6
17
0
(以下略)

クライアント1,2
9
19
19
19
19
19
(以下19)

のように変化が無くなってしまいました
643デフォルトの名無しさん:2006/04/04(火) 23:30:39
Randomizeは基本的に起動時に1回だけ実行するものだよね。
644ミ,,゚Д゚彡 ◆A6VzDeLphI :2006/04/04(火) 23:58:08
>>638

ValueListEditor1.Cells[0 or 1, 行]

ではないかと。
645ミ,,゚Д゚彡 ◆A6VzDeLphI :2006/04/05(水) 00:05:18
>>625

俺もよくしらんが、
Kindergarten
http://himagine.s20.xrea.com/soft/kinder.htm

これを参考にしてはいかがでしょう。
ソース付っす。
646643:2006/04/05(水) 00:07:29
起動時というと語弊があるかな。Random関数を呼ぶ前に一度だけ実行する、かな。

Randomizeでは時間を元に種を初期化するので、同時にRandomizeを実行したら
同じ種になるのは当然なんだけど、中身はPerformanceCounterだったような気がするので
同時というのはほとんど無理そうな気がするんだけど。
647デフォルトの名無しさん:2006/04/05(水) 00:36:55
randomize;って割と1秒程度でしか見てないかもな。
クライアントのFormCreateの方に入れた方がいいんじゃない?
648デフォルトの名無しさん:2006/04/05(水) 00:50:10
>>643,647
解決しました、ありがとうございました
649デフォルトの名無しさん:2006/04/05(水) 01:03:32
>>642
変化が無くなったっつうことは・・・初期化の時間が結構長いって事だね。
9から19に一度変化したんだから。
15回ループよりも長いって事だ。
650デフォルトの名無しさん:2006/04/05(水) 01:04:20
ありゃ、遅かったorz
結果教えてくれ
651デフォルトの名無しさん:2006/04/05(水) 01:10:30
>>650
>>647さんの方法でできました。
652デフォルトの名無しさん:2006/04/05(水) 01:21:51
全てのクライアントで違う乱数列発生させたいなら、
サーバーでクライアント分の乱数列発生させて、
それぞれを各クライアントの種にするとかは?
653デフォルトの名無しさん:2006/04/05(水) 01:39:51
>>652
解決したと言っておるではないかw
654デフォルトの名無しさん:2006/04/05(水) 01:41:23
参考までに言っただけのことよ
647の方法だと同時起動で被る可能性があるしな
655デフォルトの名無しさん:2006/04/05(水) 01:42:21
あとこういうのは知識の蓄積だから、
本人が見ていようと何だろうと、改善点があるなら指摘した方がいい
その方がこのスレを後で見た人のためにもなる
656デフォルトの名無しさん:2006/04/05(水) 01:48:14
全くそのとおりだと思う。
657デフォルトの名無しさん:2006/04/05(水) 07:43:07
セキュリティが絡むならCryptGenRandom。
そうでないならRandomizeで十分。
サーバから取得なんてアホ杉です。
658デフォルトの名無しさん:2006/04/05(水) 08:17:59
Delphi6 Personalを落として使ってみたんですが、なんでこんな古臭いダサい見た目なんでしょう。
同じ無償のVB 2005はとてもきれいな見た目でした。
まともなGUIアプリを作るなら、日頃から使うIDEのセンスにもこだわるべきですね。
659デフォルトの名無しさん:2006/04/05(水) 08:24:33
RandamizeがGetTickCountを使ってるとしたら、ミリ秒の精度もないから635のような描き方をしたら
同じになる可能性は高そうだね。
660デフォルトの名無しさん:2006/04/05(水) 08:26:53
おもすれー
661デフォルトの名無しさん:2006/04/05(水) 08:48:49
658が荒らすまでもなくひどいスレ。
662デフォルトの名無しさん:2006/04/05(水) 10:34:41
>>658
その言葉をVC++に言ってあげて下さい。
663デフォルトの名無しさん:2006/04/05(水) 12:28:58
デルパイってbeginとかendとか書いていて非常に抵抗を感じるのですが、
見慣れるまでにどのくらい時間かかりますか?
あと、デルパイのメリットとデメリットを教えてください。
664デフォルトの名無しさん:2006/04/05(水) 13:06:15
>時間
永遠
>メリット
無い
>デメリット
あらゆる面でVB等の他の言語に劣る
665デフォルトの名無しさん:2006/04/05(水) 14:52:33
         ∧ ∧
        (・∀ ・) <だから毎回言ってるじゃん
        ノ(  )ヽ
         <  >

         ∧ ∧
       ヽ(・∀ ・)ノ <雑談スレでやりなよー
       (( ノ(  )ヽ ))
         <  >
666デフォルトの名無しさん:2006/04/05(水) 14:53:24
AutoCAD等で使われる、DXFファイルを、Delphiで展開できるようなライブラリ等はありませんか?
667デフォルトの名無しさん:2006/04/05(水) 14:53:55
うわ、666って縁起わりぃ
668デフォルトの名無しさん:2006/04/05(水) 14:56:50
Delphiを使いたくないなら使うな。
主観を他人に押し付けるな。
669デフォルトの名無しさん:2006/04/05(水) 15:00:24
DXFファイルの中身はテキストファイルだから
ライブラリなくてもAssignFileやTFileStreamで大丈夫じゃないかな
670デフォルトの名無しさん:2006/04/05(水) 15:04:03
>>666
Delphi専用ではないが、DWGdirectとかは?
自力で解析するなら669でいいと思うけど、
バージョン互換ってかなり低いから現実的じゃないね

>>668
反応すると喜ぶからスルーね
671デフォルトの名無しさん:2006/04/05(水) 15:14:30
処理を一定時間待たせる事はできないでしょうか
できればsleepみたいに全体を止めてしまう方法じゃないほうがいいのですが
672デフォルトの名無しさん:2006/04/05(水) 15:20:04
タイマー、WaitForSingleObject、スレッド切るなど
具体例がないと答えにも限界が
673デフォルトの名無しさん:2006/04/05(水) 15:22:52
>>671

//指定時間待
procedure pWaitMiliSec(lwMiliSec: Longword);
{
lwMiliSec: 待ち時間(単位:ミリ秒)
}
var
StartTime, WaitTime: TDateTime;
begin
WaitTime := lwMiliSec/1000/24/60/60;
StartTime := Now;
while True do begin
Application.ProcessMessages;
if StartTime + WaitTime < Now then Break;
end;
end;

674671:2006/04/05(水) 15:49:41
>>673
Application.ProcessMessagesを調べてみて納得しました。
解決しました、ありがとうございました。
675デフォルトの名無しさん:2006/04/05(水) 16:11:23
Application.ProcessMessagesでループさせる場合
CPU負荷が跳ね上がるからSleep(1);もはさんどけ。
676デフォルトの名無しさん:2006/04/05(水) 17:38:11
e-
677デフォルトの名無しさん:2006/04/05(水) 19:39:09
質問です。
イメージリストに0〜5までの6個のイメージを入れて
ランダムで発生させた数(0〜5)のイメージをImageに張る方法ってありますか?
678デフォルトの名無しさん:2006/04/05(水) 19:42:28
あるよ
679デフォルトの名無しさん:2006/04/05(水) 19:43:38
>>678
教えては頂けませんか?
680デフォルトの名無しさん:2006/04/05(水) 19:43:39
ImageList.Draw(index, target)みたいにできたはず。詳細忘れた。
681デフォルトの名無しさん:2006/04/05(水) 19:52:59
Delphiってgenericsが使えないんですか?
今時VBでも使えるそうですが。
682デフォルトの名無しさん:2006/04/05(水) 20:23:29
使えるとどんな良いことがあるの?
683デフォルトの名無しさん:2006/04/05(水) 20:24:27
>>679 ImageList の GetBitmap を使った気がする。Draw かもしらんが。
乱数は Random 関数。
684デフォルトの名無しさん:2006/04/05(水) 20:39:42
たった参加国数16カ国でもチャンピョンはチャンピョンだ!
685デフォルトの名無しさん:2006/04/05(水) 20:53:09
荒らしには「無職ニート乙」以外のレスをしないでください。
686デフォルトの名無しさん:2006/04/05(水) 20:59:03
VB使いも可哀想だねえ。せっかくgenericsの技術的な話題を振っても
中古Delphi使いではついて来れる人がいないから。
687デフォルトの名無しさん:2006/04/05(水) 21:03:13
本当にgenerics使える奴ならVBスレで話題振るわな
よくわからんけど自慢したいだけの奴、乙
688デフォルトの名無しさん:2006/04/05(水) 21:24:38
Delphiスレの住民=日本人
VBスレの住民=朝○人
689デフォルトの名無しさん:2006/04/05(水) 21:24:50
よりによって死滅したVBだもんなぁ。
690デフォルトの名無しさん:2006/04/05(水) 21:28:06
>>689
今すぐVBの最新版を無料でget!
http://msdn.microsoft.com/vstudio/express/vb/

一方、Delphiは
米BorlandがDelphiなどIDE事業を売却
http://enterprise.watch.impress.co.jp/cda/foreign/2006/02/09/7187.html
691デフォルトの名無しさん:2006/04/05(水) 21:28:21
>>680,683
ありがとうございます。
ImageList.Draw(Image.Canvas,0,0,rnd);で
Imageに張ることは出来ました。
が、再度乱数を発生させたときにImageが変わりません。
Image.Canvasを色々してみたんですがどうにも上手く行きません
こちらも教えていただけると有難いのですが…
692デフォルトの名無しさん:2006/04/05(水) 22:19:21
>>690
そこで手に入るのは VB じゃなくて VB.NET
693デフォルトの名無しさん:2006/04/05(水) 22:36:39
VBは死滅だしVB.NETはもはや別言語だし、
みんなC#とかに移行して寂しいんじゃないんだろうか。
VBの方が優れてると思ってるなら、
わざわざここまで来て優位性語る必要ないしね。
694デフォルトの名無しさん:2006/04/05(水) 22:45:04
VB使いも大変だな、ゲイツに振り回されて。
M$もあんな中途半端な言語作るくらいならC#一本にするか
VB7でも出してやればよかったのに。
695デフォルトの名無しさん:2006/04/05(水) 22:55:37
>>691
乱数発生はどうなってる?
Randomize何回も呼んでないか?
696デフォルトの名無しさん:2006/04/05(水) 22:59:13
>>695
こんな感じ
type
public
{ Public 宣言 }
saikoro: integer
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
randomize;
saikoro := Random(5);
ImageList1.Draw(Image1.Canvas,0,0,saikoro);
saikoro := saikoro + 1;
Label1.Caption := inttostr(saikoro) + ' マス進んでください!';
end;
697デフォルトの名無しさん:2006/04/05(水) 23:00:30
Delphi はじめの一歩さんを参考にタブブラウザこしらえています。
起動時に例えばyahoo!を開くようにしたいですがどう書けばよいですか?
下記の記述しかうかばなくてやっぱりだめでした。personal6です。

procedure TForm1.FormCreate(Sender: TObject);
begin
TForm2.Create(Application);
TForm2(ActiveMDIChild).WebBrowser1.Navigate('http://www.yahoo.co.jp');
end;
698デフォルトの名無しさん:2006/04/05(水) 23:01:21
まずな、乱数もなにもかもやる前にだな、ボタン押したら順番に表示させるルーチンでも
書くと。それから乱数に取りかかると。
699デフォルトの名無しさん:2006/04/05(水) 23:04:12
saikoro := Random(5);
saikoro := saikoro + 1;

これだと 1から5までしか出ないよ。Randomize() は FormCreate() で1回だけ。
700デフォルトの名無しさん:2006/04/05(水) 23:04:24
>>698
え?順番に表示させるって?
1〜6まで順番にって事??
701デフォルトの名無しさん:2006/04/05(水) 23:05:33
Image1.Refresh とか。
702デフォルトの名無しさん:2006/04/05(水) 23:06:22
>>701
やって見たけどなにも起きなかった。
703デフォルトの名無しさん:2006/04/05(水) 23:07:31
saikoro := Random(6);
saikoro := saikoro + 1;
にすればおkなのか?

あー、なんだか判んなくなって来たOTL
704デフォルトの名無しさん:2006/04/05(水) 23:07:54
>ボタン押したら順番に表示させる

これは出来てるんだろな
705デフォルトの名無しさん:2006/04/05(水) 23:08:59
>>704
いや、ただランダムに表示させてるだけだよ?
706デフォルトの名無しさん:2006/04/05(水) 23:09:10
まず、1−6の数値を与えて表示するメソッドを書く。
順番に表示するイベントハンドラを書く。
乱数を使ってみる。
707デフォルトの名無しさん:2006/04/05(水) 23:10:18
ダメだこりゃ・・・
708デフォルトの名無しさん:2006/04/05(水) 23:13:02
>randomize;
はFormCreateで一回だけ読んどけ。
709デフォルトの名無しさん:2006/04/05(水) 23:39:28
var
Form1: TForm1;
saikoro: Integer;

procedure TForm1.Button1Click(Sender: TObject);
begin
for saikoro := 0 to 6 do;
begin
Image1.Refresh;
//saikoro := Random(6);
ImageList1.Draw(Image1.Canvas,0,0,saikoro);
saikoro := saikoro + 1;
Label1.Caption := inttostr(saikoro) + ' マス進んでください!';
Sleep(1000);
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
randomize;
end;
end.

ってしたんですが、ローカル変数じゃなきゃ駄目って言われるし
結果がいきなり6(5+1)になるんですが…
710デフォルトの名無しさん:2006/04/06(木) 00:04:34
サイコロは7面体だったんですね
711デフォルトの名無しさん:2006/04/06(木) 00:05:45
だめだー解説サイト四でも分からないー
俺の感だと0が始まると0のイメージを張ってキャプションに0+1を書く
それを5回繰り返して最終的に5のイメージを張って、キャプションに5+1を書く
って事なんだろうけどなんで最後の6が書かれてイメージには何も表示してくれないんだろ

もしかして全部終わってからしか書き込んだりイメージを張ったりしないんだろうか…

今日は取り合えず寝よう

あー、こんな程度で苦戦してるようじゃ何も出来ないよなー\(^o^)/
712デフォルトの名無しさん:2006/04/06(木) 00:42:54
713デフォルトの名無しさん:2006/04/06(木) 00:56:58
>>711
こんな感じ

procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
for i:= 0 to ImageList1.Count-1 do
begin
Image1.Canvas.FillRect(Image1.ClientRect);
ImageList1.Draw(Image1.Canvas,0,0,i);
Image1.Refresh;
Sleep(100);
end;
end;

> \(^o^)/
キモイ
714デフォルトの名無しさん:2006/04/06(木) 01:14:48
>>713
で、出来てる…
なんで?何が違ってたの?
ImageList1のCountを1引くのは何でか分かるような気がする。
多分6個あれば6になるんだろう。
FillRect(Image1.ClientRect)ってなんだ?
それにいままでRefreshが利いても2重3重になるのになぜ利いてるんだ?
疑問は多いけど>>713ありがとう!

なんかこんな俺にここまでしてくれて半分泣いてるよ。
本当にありがとう!
715デフォルトの名無しさん:2006/04/06(木) 01:27:39
それで満足せずにヘルプを使って
>>713の技術を全てモノにするんだ
716デフォルトの名無しさん:2006/04/06(木) 01:34:40
>>714
> Image1.Canvas.FillRect(Image1.ClientRect);
コメントアウトしてみ。わかるから
717デフォルトの名無しさん:2006/04/06(木) 01:42:25
>>715,716
ヘルプで調べたら分かったよ!
FillRect=指定した色で短角描画
ClientRect=デフォで指定されている色
つまりデフォで指定されている色で描画範囲をべた塗り(ペイントで言うと塗りつぶしツール)して
指定されたイメージリストのイメージを描画
って事だね?

あー、なんでそんな事に気が付かなかったんだろう。
718デフォルトの名無しさん:2006/04/06(木) 02:01:30
>>717
ちょっと違うかな。
色を指定するときは
Image1.Canvas.Brush.Color := clBlue;
こんな感じで。
Canvas.FillRectは指定した領域をCanvas.Brush.Colorで指定している色で塗りつぶす
Canvas.FillRectの引数は指定した領域。
ClientRectはそのコントロールの領域の全体をあらわすプロパティ。全体を塗りたいからClientRectを使う。
例えば
Image1.Canvas.Brush.Color := clBlue;
Image1.Canvas.FillRect(Rect(0,0,32,32));
とやればimage1の左上から32*32の領域を青で塗りつぶすことが出来る。
もうちょい詳しく知りたいならTRectとかをヘルプで調べてみ。
719デフォルトの名無しさん:2006/04/06(木) 06:33:27
>>712

ありがとう。
参考にして試してみたんだけど例外アドレス・・・エラーでして、
もう少しがんばってみます。
720デフォルトの名無しさん:2006/04/06(木) 07:46:34
>>694
> MSもあんな中途半端な言語作るくらいならC#一本にするか
> VB7でも出してやればよかったのに。

その成果が.NET Frameworkです!

最新の開発環境が無料で使えます。
Delphiユーザも試してみる価値はあります。

Visual Studio 2005 Express Edition
http://www.microsoft.com/japan/msdn/vstudio/express/maninstall/

Microsoft .NET Framework Version 2.0 Redistributable Package (x86)
http://www.microsoft.com/downloads/details.aspx?FamilyId=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=en

Microsoft .NET Framework 2.0 日本語 Language Pack (x86)
http://www.microsoft.com/downloads/details.aspx?FamilyID=39c8b63b-f64b-4b68-a774-b64ed0c32ae7&DisplayLang=ja

Microsoft .NET Framework 2.0 SDK 日本語版 (x86)
http://www.microsoft.com/downloads/details.aspx?familyid=FE6F2099-B7B4-4F47-A244-C96D69C35DEC&displaylang=ja

ユーザコミュニティーも賑わっています。

http://www.gotdotnet.com/japan/

書籍も続々刊行予定です!
721デフォルトの名無しさん:2006/04/06(木) 09:11:34
ユーザコミュニティーも賑わっています(笑)
722デフォルトの名無しさん:2006/04/06(木) 10:26:46
Express ウチのボロPCだと重くてまともに動かないんだよね。
Delphiは軽快でいいいよ。
723デフォルトの名無しさん:2006/04/06(木) 12:11:06
そうだね、ボロPCにはDelphi。

普通の環境なら VSExpress で決まり。
724デフォルトの名無しさん:2006/04/06(木) 12:29:43
VCLの挙動に少しだけ不満があるけど、ほぼ満足って場合に、
その不満がオーバーライドぐらいで解消できればいいけど、
そうでない場合はVCLソース自体を改変するってことがあるよね。
で、その改変したソースを含めて全部公開しちゃうってあり?

プロ版以上にしかソース付いてないわけだから、
ちょっぴり改変しただけのソースを公開したらダメって言われそう。
でもそのユニットを含めないと正常にビルドできないし。
725デフォルトの名無しさん:2006/04/06(木) 12:47:34
ライセンスをよくお読みなさい
726デフォルトの名無しさん:2006/04/06(木) 13:01:58
>>725
利口なおまえが読んで教えてくれ。
俺は読んで理解できるほど利口じゃない。
727デフォルトの名無しさん:2006/04/06(木) 13:04:07
>>718
色々ありがとうございます。
728デフォルトの名無しさん:2006/04/06(木) 13:19:12
>>726
そういうことしようとしてるのに自分で理解できないでどうするの?
他人の言葉信じてもしライセンス違反で訴えられてもいいの?
729デフォルトの名無しさん:2006/04/06(木) 13:20:30
>>728
馬鹿に構うな
スルー推奨
730デフォルトの名無しさん:2006/04/06(木) 13:20:37
答えたくないなら黙っとけ。どうせ他人のやることだ。
731デフォルトの名無しさん:2006/04/06(木) 13:23:07
         __ , ────── 、__
      , - ':::::::::::::::::::::::::::::::::::::::::::::::::::\
     / ;;;;;;;:::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;\
    /,,;,,,,,  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  ,,,,,,,,;::::::丶
   / :::::::::;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;:::::::::::::::::::ヽ
   i゙:::;:::::||::::::,!i:::::::::::,|i::::::::::::::::::;:::::::::::::::::::::::::::::::゙i
  i゙::::|;;;;| |;;;;;| |::::::::::| |:::::::::::::::::||::::::::::::::::::::::::::::::::|
 . i゙::::::i     ''''''''''' '───' |;;;;;;;;;;;;::::::::::::::::::::|
  .|:::::::|,-====-´  ゙ヽ,,,,,,,,,,,,,、    |:::::::::::::::::::|
  |;::::::::|,-──、    ~ニニ,,_`    |:::::::::::::::::::|
  `ヽ、i (、i´ノ     ´い,, ノ '    |;;;::::::::::::::/  なんで質問者こんな偉そうなん?
  .   i ^~~~ー==─ ー'-+、     /^゙-、;;;;/
     {     ヽゝ          '-'~ノ
    λ   ''゙゙''-''-─、       /-'^"
     ヽ,_    ^~^        (
     /`''丶、     , -    /^l
    /  /( ノ `'''''''´~ _, - ' ~ ゙i、
    { / /| ̄ ̄ ̄ ̄   _,-'^¨ }
    {/ /  ゙ー────'~   \|
    /               ヽ  \
732デフォルトの名無しさん:2006/04/06(木) 13:52:59
読んでないんじゃないぜ。読んでもわからないバカなんだ俺。

>>728
インストールフォルダにあるライセンスは理解できないが、
だれかが理解できる形ですでに解釈していると期待して書いてみている。
信じられそうな内容なら、それを信じて出すか出さないか決めれるし、
アホっぽい1行レスなら粘着してよりよい答えを待つ。

で、公開していいと思う?訴えられると思う?
GPLとかどう対処したらいい?
733デフォルトの名無しさん:2006/04/06(木) 14:02:49
deploy.txtに記述してあるパッケージファイルだけ
配布可能(但し変更するとダメ)、ソースはNG

VCLのソースを変更して作ったプログラムは配布OK
VCLの変更したソースは配布不可

ボーランドに聞くのが一番いいと思うが
734デフォルトの名無しさん:2006/04/06(木) 14:03:21
公開していいよ、たぶん
735デフォルトの名無しさん:2006/04/06(木) 14:54:56
再配布可能なものにソースファイルが含まれてないからダメってことだよね。
うん、わかった。

とか言ってる間に、
ユニット名もクラス名も違う、99%VCLからコピペの独自のファイルでビルド通った。
これなら大丈夫だと俺は理解したし、この状態でこっそり混ぜて配布することに決めた。
バレなきゃいいんだし。
736デフォルトの名無しさん:2006/04/06(木) 16:21:30
こういうのがいるからモラル低下すんだよ
せめてdcu配布とかにしようぜ
737デフォルトの名無しさん:2006/04/06(木) 16:24:19
99%コピペなのに名前変えただけで独自のファイルって、
どこかのパクリ大国みたいな言い分ですね
あ、ひょっとしてその国の方でしたか?^^;
738デフォルトの名無しさん:2006/04/06(木) 17:04:28
おkだよ
739デフォルトの名無しさん:2006/04/06(木) 18:50:41
ちゃんコロにモラルを説くだけ無駄
740デフォルトの名無しさん:2006/04/06(木) 19:18:27
うん
741デフォルトの名無しさん:2006/04/06(木) 20:19:16
VB 2005 Expressなら安心して自由に使えるのに
742デフォルトの名無しさん:2006/04/06(木) 20:27:05
無職ニート乙
743デフォルトの名無しさん:2006/04/06(木) 20:34:44
犯罪者よりマシ
744デフォルトの名無しさん:2006/04/06(木) 20:48:51
昨晩から今朝の流れに感動した

なのにまたこの流れ。
745デフォルトの名無しさん:2006/04/06(木) 21:39:12
BDS2006でコンパイルしたものを、試しに64bitEditionで走らせて
みたら、普通に動くんですね。

64bitコードを吐ける訳ではないんすよね?
746デフォルトの名無しさん:2006/04/06(木) 21:44:06
XP上で16bitアプリケーションが動く訳を考えてみるとよろし
747デフォルトの名無しさん:2006/04/06(木) 21:49:04
いや、そうなんだけど、何の警告も出ずに、違和感なく動作したもんだから、ちょっと驚いたよ。
748デフォルトの名無しさん:2006/04/06(木) 23:39:04
マジでさVCLのソースを改造しざる得なくてGPLとかでの配布の場合ってどうすんの?
差分配布?それともdcuとかで?
749デフォルトの名無しさん:2006/04/06(木) 23:44:18
差分でいいんじゃね?
750デフォルトの名無しさん:2006/04/06(木) 23:58:23
そもそもVCLのソースを改造しざる得ない状況など無い。
一からつくれば良いだけ。

751デフォルトの名無しさん:2006/04/07(金) 00:01:55
最近はだいぶ減ったけど、Delphi2.0とかその辺の時代は、
overrideしたい関数がprivateとかvirtual付いてないとか
結構あったんだよ…。
752デフォルトの名無しさん:2006/04/07(金) 00:42:19
現在を語るのになんで昔の話を持ち出す
753デフォルトの名無しさん:2006/04/07(金) 00:52:05
作った実行ファイルのアイコンをデフォルトのアイコンから変更するにはどうすればいいのでしょう?
754デフォルトの名無しさん:2006/04/07(金) 00:56:39
メニュー[プロジェクト]→[オプション]→[アプリケーション]タブ→[アイコンの読み込み]
アイコンは自分で用意しな。
755デフォルトの名無しさん:2006/04/07(金) 00:58:21
一見、変わってないように見える時は
コンパイルしたexeを他の場所に移動すれば変わる
756デフォルトの名無しさん:2006/04/07(金) 01:11:45
>>754
ありがとうございました
757デフォルトの名無しさん:2006/04/07(金) 01:22:26
死滅寸前のDelphiの信者を最新のVisualStudio2005に移行させるにはどうすればいいのでしょう?
758デフォルトの名無しさん:2006/04/07(金) 01:29:15
ほっとく。スレ荒らしすると余計に移行しない。
759デフォルトの名無しさん:2006/04/07(金) 01:33:59
マジレスするとDelphi使いは死滅関係なくほとんど自分で選んで使ってるから難しいよ
VBやC++とかは仕事で使うから仕方なくって人もいるけど、Delphiはほとんど好み
760デフォルトの名無しさん:2006/04/07(金) 01:38:25
>>757
北風と太陽の童話は知っていますか。
移行させようと押しつけたり、.netのURLを貼り付けるのは逆効果です。
>>758の言うとおり放っておくのが最良です。
だからもう書き込まないでね。
761デフォルトの名無しさん:2006/04/07(金) 02:21:38
           /
          /
         \
          /      /
  ∧ ∧__ノ\/ \/
 (‘ω‘ *    ノ    
. ‖‖‖‖‖‖
 ШШШШШШ_________________
(_______________________)
762デフォルトの名無しさん:2006/04/07(金) 07:40:20
Delphiが死滅するはずがありません。
Borlandは開発ツール事業を何よりも重視しているからです。
763デフォルトの名無しさん:2006/04/07(金) 07:45:24
Delphi製アプリってXP上だとよく落ちるんだよね。
ネイティブのくせに不安定すぎ。
764デフォルトの名無しさん:2006/04/07(金) 07:50:44
Delphiってライセンスは不透明だし、先行きも危ないしで仕事で使うなんてあり得ない。
765デフォルトの名無しさん:2006/04/07(金) 07:55:28
Delphi 2005とVB 2005を比較したら、VBの方がはるかに生産性が高くて安全なコードが書けることがよくわかった。
766デフォルトの名無しさん:2006/04/07(金) 08:11:00
それはよかったね
767デフォルトの名無しさん:2006/04/07(金) 08:11:01
無職ニート乙
768デフォルトの名無しさん:2006/04/07(金) 08:27:43
>>763
Delphi製アプリが落ちたことは無いが、Delphiはよく落ちる。
769デフォルトの名無しさん:2006/04/07(金) 09:09:03
落ちる原因はスタックオーバーフローだから、XPかどうかは関係ない。
XPでルナでしかもマニフェストつけてるDelphiアプリで、
日本語の文字入力があやしくなるだけで落ちるわけではない。
人づての話をまぜこぜで言うからウソになる。
770デフォルトの名無しさん:2006/04/07(金) 13:23:16
>>768
Delphiが落ちた事はないがOS巻き込んで固まる事はよくある
771デフォルトの名無しさん:2006/04/07(金) 13:24:57
そろそろスルーを覚えませんか、皆さん
772デフォルトの名無しさん:2006/04/07(金) 13:33:41
そんなの無理だと悟りましょう
773デフォルトの名無しさん:2006/04/07(金) 13:35:58
アクセス違反は全Delphi共通で多発だが、よく落ちるのは2005のみ。
774デフォルトの名無しさん:2006/04/07(金) 13:47:58
煽り耐性もないなんてホント低脳の集まりですね、Delphi使いって
775デフォルトの名無しさん:2006/04/07(金) 14:02:06
とイライラしてる人が申しております
776デフォルトの名無しさん:2006/04/07(金) 14:47:48
<雑談・討論などはこちらへ>
||:3ミ バカボンのパパのDelphi談話室その28
http://pc8.2ch.net/test/read.cgi/tech/1136472830/
777デフォルトの名無しさん:2006/04/07(金) 16:19:25
Delphi使いって>>775みたいな何のひねりも無い返ししかできないんですね
さすがです^^;
778デフォルトの名無しさん:2006/04/07(金) 16:24:23
とても典型的でワンパターンな流れですね
779デフォルトの名無しさん:2006/04/07(金) 17:05:17
IDが無いと不便だなぁ
780デフォルトの名無しさん:2006/04/07(金) 18:45:08

     _____  
   /::::::::::::::::::::::::::\〜プーン
  /:::::::::::::::::::::::::::::::::::::::\〜プーン
  |:::::::::::::;;;;;;|_|_|_|_|〜プーン         
  |;;;;;;;;;;ノ∪  \,) ,,/ ヽ〜          
  |::( 6∪ ー─◎─◎ )〜        / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  |ノ  (∵∴ ( o o)∴)〜      <  とても典型的でワンパターンな流れですね
  | ∪< ∵∵   3 ∵>         \_____________
  \        ⌒ ノ_____
    \_____/ |  | ̄ ̄\ \   カチャ
___/      \   |  |    | ̄ ̄| カチャ
|:::::::/  \___ | \|  |    |__|   
|:::::::| \____|つ⊂|__|__/ /
|:::::/        | ̄ ̄ ̄ ̄|  〔 ̄ ̄〕  

781デフォルトの名無しさん:2006/04/07(金) 21:26:52
重複の無い15個の乱数を表示させるにはどうすればいいでしょうか?
782デフォルトの名無しさん:2006/04/07(金) 21:35:37
発生したら、重複があるかどうか調べる。あったら、もう一回ループ。
783デフォルトの名無しさん:2006/04/07(金) 21:56:12
重複の無い15個の値を用意して乱数でシャッフル。
784デフォルトの名無しさん:2006/04/07(金) 22:00:38
VCLのようなGUI以外何もサポートしないライブラリで将来大丈夫でしょうか?
VBの.NET Frameworkの方がいろいろあるみたいでよさげです。
785デフォルトの名無しさん:2006/04/07(金) 22:04:14
将来はしらんが、過去も現在もVCLの方が実用的。.NET は将来のための保険。
やっておいて損はないが、C# を勧める。
786デフォルトの名無しさん:2006/04/07(金) 22:04:46
ここまで突っ込みどころが多いと、
わざとアホなフリしてるのかと勘繰ってしまいます
787デフォルトの名無しさん:2006/04/07(金) 22:06:51
自分がアホなんだろ、気づいてないらしいが。
788デフォルトの名無しさん:2006/04/07(金) 22:08:23
>>782
そう思って↓のようにしてみたのですがループ制御変数 i に触ったせいでエラーがでてしまうんです
var
i,j : integer;
Ch : Array[0..19]of integer;
begin
Randomize;
for i := 0 to 5 do
begin
Ch[i] := Random(10);
if i <> 0 then
begin
for j := 0 to i-1 do
begin
if Ch[j] =Ch[i] then
begin
i := i-1;
Continue;
end;

end;
end;
end;

end;

>>783
150前後の数の中から15個の重複しない乱数が欲しいのですが、そのやりかたで可能ですか?
789デフォルトの名無しさん:2006/04/07(金) 22:09:51
>>784
本当にVB以外何も知らないんだろうなぁ・・・
Delphiは嫌いみたいだからやらなくてもいいけど、
C++やC#でもやって知識付けた方がいいよ。
ちょっと無知すぎる。
790デフォルトの名無しさん:2006/04/07(金) 22:20:05
>>788
var bool sameCheckOk

for i:=0 to 15-1
do begin

repeat
ch[i]=random(150)
sameCheckOk=true
for j=0 to i-1 do
if ch[j]=ch[i] then begin
sameCheckOk=false;
break
endl

until sameCheckOk;



end;


文法は忘れたが、こんな感じでどう?
791デフォルトの名無しさん:2006/04/07(金) 22:37:50
>>790
うまくいきました、ありがとうございました〜
792デフォルトの名無しさん:2006/04/07(金) 22:40:47
Randomize何度も呼ぶなと一体何度言わせれば・・・
793デフォルトの名無しさん:2006/04/07(金) 22:46:41
一度も呼んでないだろ・・・変なヤツ
794デフォルトの名無しさん:2006/04/07(金) 22:47:14
何度呼ぼうと別に問題はない。
795788:2006/04/07(金) 22:54:13
>>782

var intSet : set of 1..150

intSet:=[];
while intSet.count<15
do
 inclued(intset,Rondom(150));


count が使えたか、Randomがそのまんま列挙に入るかも忘れたけど、
こんな感じなら実質3行。
796デフォルトの名無しさん:2006/04/07(金) 23:17:24
[エラー] Unit1.pas(29): レコード、オブジェクトまたはクラスのいずれかが必要です
797デフォルトの名無しさん:2006/04/07(金) 23:33:58
邪道かな・・・

procedure TForm1.Button1Click(Sender: TObject);
var
  v: TList;
  i, kazu: integer;
begin
  v := TList.Create;
  repeat
    kazu := Random(150);
    if v.IndexOf(pointer(kazu)) = -1 then v.Add(pointer(kazu));
  until v.Count = 15;

  Memo1.Clear;
  for i := 0 to 14 do
    Memo1.Lines.Add(IntToStr(integer(v[i])));

  v.Free;
end;
798デフォルトの名無しさん:2006/04/08(土) 00:20:31
// Swap は自分で作って
var
 A: array[0..150] of Integer;
 I: Integer;
begin
 for I := 0 to 150 do
  A[I] := I;
 for I := 0 to 150 do
  Swap(A[I], A[Random(151)]);
 for I := 0 to 14 do
  ShowMessage(A[I]);
799デフォルトの名無しさん:2006/04/08(土) 00:27:57
それ、遅すぎ、無駄すぎ
800デフォルトの名無しさん:2006/04/08(土) 00:28:58
第一、均一じゃないし、とどこかの議論を蒸し返す
801デフォルトの名無しさん:2006/04/08(土) 00:48:40
VB使いの方がまだまともなコード書くよ
802デフォルトの名無しさん:2006/04/08(土) 01:08:59
はいはいクマクマ
803デフォルトの名無しさん:2006/04/08(土) 01:13:42
TShellListViewでファイル名を取得することすら
できないんです..

どこかに解説ないですか???
804デフォルトの名無しさん:2006/04/08(土) 01:21:39
解決しました....
805デフォルトの名無しさん:2006/04/08(土) 03:00:39
こっちだな。 >>798は均一じゃないの?

var
 A: array[0..150] of Integer;
 I: Integer;
begin
 for I := 0 to 150 do
  A[I] := I;
 for I := 0 to 14 do
  Swap(A[I], A[Random(151 - I) + I]);
806デフォルトの名無しさん:2006/04/08(土) 08:39:26
発信県みるとアンチは一人でした
807デフォルトの名無しさん:2006/04/08(土) 08:43:58
はいはいクマクマクマクマ
808デフォルトの名無しさん:2006/04/08(土) 10:20:01
>>801
じゃあ書いて。
809デフォルトの名無しさん:2006/04/08(土) 12:39:34
swap は、このような場合は非効率すぎ。100万人応募の抽選で、当選10人を
決めるのに100万回swapするのは馬鹿すぎ。
810デフォルトの名無しさん:2006/04/08(土) 13:38:46
100万では無く150です。
10では無く15です。
811デフォルトの名無しさん:2006/04/08(土) 14:20:18
日本のDelphiユーザーの数ですか?
812デフォルトの名無しさん:2006/04/08(土) 14:27:02
>>810 こういうヤツは、量と質の区別がつかないんだろうなぁ・・・
813デフォルトの名無しさん:2006/04/08(土) 15:40:44
だからVB使いにまで馬鹿にされる
814デフォルトの名無しさん:2006/04/08(土) 16:02:35
実際VB使いの方がレベル高いし
815デフォルトの名無しさん:2006/04/08(土) 16:10:32
今日の質問者の回答レベルはVB.NET使いの方が高いね。
回答者もスキルアップに勤めてください。
816デフォルトの名無しさん:2006/04/08(土) 16:22:18
>>809

>>798は均一さも怪しくそもそも論外でしょが、>>805はスワップ15回。
と弁護しておく。
817デフォルトの名無しさん:2006/04/08(土) 16:39:31
で、配列を確保したり代入したり、効率いいのか?
818デフォルトの名無しさん:2006/04/08(土) 16:50:59
>>815
VB質問スレの回答者>このスレの解答者>(省略)>このスレの粘着VB使いで別にいいよ

>>815
固定長配列だし数k程度までなら問題ないだろ。
819デフォルトの名無しさん:2006/04/08(土) 16:59:06
>>803
TShellFolderのPathName
820デフォルトの名無しさん:2006/04/08(土) 17:04:39
579 :デフォルトの名無しさん :2006/04/08(土) 10:35:17
VCLはGUIを楽にさせてくれるためだけに集中してくれたからこそ使いやすかった。
変なライブラリを追加しなくても単独で動いてくれるからね
それ以外のコンポーネントが必要とか欲しくなったら作ればいいのだし
簡単に作らせてくれたのがDelphiだったのだろう。



580 :デフォルトの名無しさん :2006/04/08(土) 12:36:10
そうだね。GUI ビルダとして最も便利なものだった。で、それが Delphi の限界
でもあった。サードパーティーや外部のコンポなしではユニコードも正規表現も
インターネットも出来ないからね。いまだに TList、TStringList 大活躍の
有様だもんね。


ほんと、VS が進化して RAD は Delphi を追い越したし、ライブラリははるかに
先を行ってしまったのに、Delphi だけは11年ほとんど進化なし。統合メリット
はプラスよりバグ増加動作激重のマイナスの方が多いことを考えると、退歩と
言えるかも知れない。それがユーザ激減につながっている。ま、妥当な結果だろうね。
821デフォルトの名無しさん:2006/04/08(土) 20:13:17
知らないうちにVSのVCってRADになったんだ。
それともC#ネイティブが作れるようになったの?

ちと、Express試してみるか。
822デフォルトの名無しさん:2006/04/08(土) 20:30:06
ちなみに>781のコードをVB.netで書いたらどうなるんですか?
無論.netに標準装備である素晴らしい機能でDelphiよりもスマートに書ける筈だよな?
823デフォルトの名無しさん:2006/04/08(土) 21:31:13
image.picture.loadfromfile
で画像を読み込んだあと、画像を読み込んでない元の状態に戻すにはどうすればいいのでしょうか?
824デフォルトの名無しさん:2006/04/08(土) 21:35:17
>>803-804
解決したら、解決策書け。バカ
825デフォルトの名無しさん:2006/04/08(土) 21:35:31
>>823
Graphic := nil
826デフォルトの名無しさん:2006/04/08(土) 21:36:40
>>825
ありがとうございました
827デフォルトの名無しさん:2006/04/08(土) 23:00:43
>>821
.NETアプリの開発はRADになったが、Win32/MFCは今まで通り。
VCとC#は別物。
828デフォルトの名無しさん:2006/04/08(土) 23:10:44
今も昔も最強RADはVB
829デフォルトの名無しさん:2006/04/08(土) 23:20:07
>>828
禿同!!
830デフォルトの名無しさん:2006/04/09(日) 00:01:58
labelの文字の周りを透過させることは可能ですか?
他のものを使わないと駄目でしょうか?
831デフォルトの名無しさん:2006/04/09(日) 00:04:15
Label1.Transparent := True;
832デフォルトの名無しさん:2006/04/09(日) 00:08:04
>>831
ありがとうございました
833デフォルトの名無しさん:2006/04/09(日) 00:40:53
集合型について質問です。
ある集合型の変数が複数の値を持っているかを一発で調べる方法ってありますか?

例えば
TTest = set of (tt0, tt1, tt2, tt3);
i: TTest;
の時
iがtt0, tt1, tt3全てを持っているか調べるのに、
if (tt0 in i) and (tt1 in i) and (tt3 in i) then ...
とする以外の方法はあるのでしょうか?
834デフォルトの名無しさん:2006/04/09(日) 00:42:26
>>833
集合は+で和集合、-で差集合、*で積集合が得られる。
if [tt0, tt1, tt3] * i <> [] then
835834:2006/04/09(日) 00:43:45
ちょっとだけ間違い。834だとどれかひとつでもあったら通っちまう。
 if [tt0, tt1, tt3] * i = [tt0, tt1, tt3] then
836デフォルトの名無しさん:2006/04/09(日) 00:44:17
 for I := 0 to 150 do
  Swap(A[I], A[Random(151)]);
シャッフルが進むと、入れ替わらない要素が出てくるから均一でないって事?
837デフォルトの名無しさん:2006/04/09(日) 00:44:48
早速試してみます。
838デフォルトの名無しさん:2006/04/09(日) 00:46:21
くだらない質問ですがくだらない質問のためのスレのようなので
質問させていただきます。

私は今までMacでMac用のアプリを製作していたのですが、
自分のソフトのWin用をつくりたくなり、使用言語を検討しています。

MacではObjective-C言語で開発していましたが、
こんな奴にDelphiはよさそうですか?
839デフォルトの名無しさん:2006/04/09(日) 00:51:21
>>838
gccとか使えばWindowsでもObjective-Cは使えると思うが…。
まあ、どんなアプリを作りたいかにもよる。
Objective-Cからの移行ならC++Builderのほうが自然な気もするけど。
840デフォルトの名無しさん:2006/04/09(日) 00:53:35
移行しやすいのはC++かC#じゃないか?
MS嫌いじゃなきゃVC++、VC#
人と違うのがいい場合はC++Builder、C#Builder
VJ#というのもありか
類似点が少ない言語がいいのならVB、Delphiだろう
841デフォルトの名無しさん:2006/04/09(日) 00:58:50
MacでJavaではなくObjective-Cというあたりで想像するけど
C系でRADで速度を犠牲にしない、という条件ならC++Builder一択。
Delphiスレで聞くからにはDelphiに興味があるんだろうけど、
Objective-CもObjectPascalもそれぞれ癖あるから…。

ちなみにBDS2006ならC++BuilderとDelphiがセット。両方試してみりゃいい。
http://www.borland.com/products/downloads/download_delphi.html
842821:2006/04/09(日) 01:04:59
>>827
VC++とVC#が別物なのはもちろんわかってる。.NETにはあまり興味ないので使い道が
あるとすれば、VC++がRAD化するかVC#がWin32/64に対応するかのどちらかってこと。
843デフォルトの名無しさん:2006/04/09(日) 01:24:21
お前らVBも薦めてやれよwww
844デフォルトの名無しさん:2006/04/09(日) 01:35:31
C#があるんだからVBには価値が無い
845デフォルトの名無しさん:2006/04/09(日) 01:44:57
分かってないなあ。VB9.0はC#3.0よりも先進的なのに。
846デフォルトの名無しさん:2006/04/09(日) 02:03:33
一人でVB9.0使っとけば?
847827:2006/04/09(日) 02:49:53
>>842
おお、そういう意味か。
最近どこかで読んだが、VC#がWin32/64ネイティブに対応する予定は今の所ないらしい。
要望は上がっているから検討ぐらいはするみたいだけど。
元々.NET用に設計された言語だし、今からわざわざWin32/64ネイティブ対応はしないだろうね。
848デフォルトの名無しさん:2006/04/09(日) 03:22:41
いずれにせよDelphiの出番はどこにもないということだね。
849デフォルトの名無しさん:2006/04/09(日) 04:56:08
Delphiはいわゆる日曜大工
850デフォルトの名無しさん:2006/04/09(日) 12:37:53
日曜大工ならVBの方が・・・
851デフォルトの名無しさん:2006/04/09(日) 13:07:00
日曜大工出来たのは昔のVB
852デフォルトの名無しさん:2006/04/09(日) 13:30:27
おまえらにちようの字が違いませんか?
853838:2006/04/09(日) 14:06:39
皆さんありがとうございました。
レスを参考に検討します。感謝です。
854デフォルトの名無しさん:2006/04/09(日) 14:07:51
日曜大工って休日だけ作業する事だろ
855デフォルトの名無しさん:2006/04/09(日) 18:20:49
プログラム内の全ての変数やプロパティなどをまとめて起動したときの状態に戻す方法はありますか?
856デフォルトの名無しさん:2006/04/09(日) 18:24:27
ParamStr(0)をCreateProcess/ShellExecuteして自分は死ぬことで
見た目上戻すことは出来るけど(よーするに再起動)、
フォームをストリームから復元する方法がたぶんある気がする。
857デフォルトの名無しさん:2006/04/09(日) 18:28:20
Delphiはもう次のバージョンが出ないとのことですが本当ですか?
858デフォルトの名無しさん:2006/04/09(日) 18:54:58
分かりません
859デフォルトの名無しさん:2006/04/09(日) 20:12:30
全ての変数はメモリ上+現在のレジスタにあるのだから
プログラムで確保していたメモリ領域(ヒープ、スタック)+レジスタを全て保存し
それを元に戻せばいい。
レジスタについてはアセンブラで全部をスタックに詰んでおいてから
スタック毎復元すればいい
860デフォルトの名無しさん:2006/04/09(日) 21:02:09
そういう危険なことができる言語って怖いね。セキュリティホールの元。
861デフォルトの名無しさん:2006/04/09(日) 21:33:21
出来ない言語って例えばどんな言語があるの?
862デフォルトの名無しさん:2006/04/09(日) 21:37:14
糞言語
863デフォルトの名無しさん:2006/04/09(日) 21:39:31
>>861
Java
864デフォルトの名無しさん:2006/04/09(日) 21:49:18
Javaスゲー
変数がメモリに展開されないんだ!
じゃあどこに実体があるんだろう?
865デフォルトの名無しさん:2006/04/09(日) 22:39:11
お子様の手の届かないところ
866デフォルトの名無しさん:2006/04/09(日) 23:32:55
脳内
867デフォルトの名無しさん:2006/04/09(日) 23:34:36
Javaはメモリなんて時代遅れなもの使わないからwww
868デフォルトの名無しさん:2006/04/10(月) 03:23:36
アクセスDBを使ったプログラムを組んでいます。
DBGridに表示しているのですが一部表示がうまくいきません。
具体的に言うとアクセスのデータ型が「メモ型」だと
DBGridでは「(WIDEMEMO)」としか表示されません。
これを表示するためにはどうしたらよいでしょう?

よろしくお願いします。
869デフォルトの名無しさん:2006/04/10(月) 06:56:55
>>867
JavaはHDDを使うんですか><
870デフォルトの名無しさん:2006/04/10(月) 16:10:14
日曜大工で豪邸建てるやつもおるで
871デフォルトの名無しさん:2006/04/10(月) 16:11:55
>>868
TDataGridをヤメテ、TStringGridかTDrawGridの派生で自分で描画する。
872デフォルトの名無しさん:2006/04/10(月) 20:31:11
Memoに文字列を貼り付けていく処理をすると勝手にスクロールが1番下まで行くのいですが
これを無効にすることはできないでしょうか?
873デフォルトの名無しさん:2006/04/10(月) 20:35:02
SelStartを保存しておいて
追加後に値を元に戻す
874デフォルトの名無しさん:2006/04/10(月) 20:52:11
>>872
貼り付けるって、ひょっとしてMemo.lines.Add()を使ってる?
Memo.Lines.Text := Memo.Lines.Text + s;
という形で処理できるならこれを使ってみ。
875デフォルトの名無しさん:2006/04/10(月) 20:54:56
う・・うまくいかない
けどなんとかやってみます
876デフォルトの名無しさん:2006/04/10(月) 20:55:32
>>874
ああ・・それつかってますけど
Textならいけるんですか?
やってみます
877デフォルトの名無しさん:2006/04/10(月) 21:00:48
>>874
できました!
ありがとうごさいました
878デフォルトの名無しさん:2006/04/11(火) 01:47:09
serversocketのsendtextなんですが二つ並べて
serversocket1.socket.connections[0].sendtext('hoge');
serversocket1.socket.connections[0].sendtext('hoge');

のように使ったときにどうも一つずつ「hoge」が送られるのでなく
一度に「hogehoge」が送られてしまうようなのですがこれを回避する方法はあるのでしょうか?
879デフォルトの名無しさん:2006/04/11(火) 02:01:55
TCP/IPはそういうものだ。
#0はさむとかして自分でばらせ。
880デフォルトの名無しさん:2006/04/11(火) 02:11:56
>>879
そうですか・・
#0ってのはなんですか?
881デフォルトの名無しさん:2006/04/11(火) 04:17:14
ヌル文字
882868:2006/04/11(火) 05:36:38
>871
どうもレスアリがdです。

どちらもやったことが無いですorz
どっちが簡単なのかも分からないですが、
なんとなくTDrawGridの派生の方をしらべてみます。
883デフォルトの名無しさん:2006/04/11(火) 12:18:46
初心者です。
TMemoでCtrl+Aで全選択したいのですがどうしたらよいですか?
884デフォルトの名無しさん:2006/04/11(火) 12:24:53
>>883
標準アクションにあるから、popupメニューでも メインメニューでも
885デフォルトの名無しさん:2006/04/11(火) 13:11:20
>>883
MemoのイベントOnKeyDown に処理を記述

if (Shift=[ssCtrl]) and (Key = Word('A')) then
begin
Memo.SelectAll;
Key := 0; // 他のキー入力処理を無効にするため
end;

他のKeyの値についてはWindows.pasを検索すること
886デフォルトの名無しさん:2006/04/11(火) 13:19:05
>>884-885
ありがと(*’3’)
887デフォルトの名無しさん:2006/04/11(火) 15:50:43
Memoコンポーネントのキャレットを非表示にする方法ですが…

http://www2.big.or.jp/~osamu/Delphi/Tips/key.cgi?key=16#0243.txt

こんな感じで、TMemoの場合のキャレットを非表示にする方法はWeb上に散見できるのですが、
同じやり方でTRichEditでやった場合、うまくいきません(キャレットは表示されてしまう)。

TRichEditでキャレットを非表示にするのはTMemoのときに比べて複雑なんですか??
やり方わかる人がいたらぜひ教えてほしいです!
888デフォルトの名無しさん:2006/04/11(火) 16:06:29
なんかの方法でHideCaret( RichEdit1.Handle) を送りまくれば、非表示になるよ
889デフォルトの名無しさん:2006/04/11(火) 16:14:13
 HideCaret(RichEdit1.Handle);
890デフォルトの名無しさん:2006/04/11(火) 17:11:49
>>888
>>889さんへ。

やってみますた。確かにHideCaret(RichEdit1.Handle); でキャレットは隠れるみたいですが、再びFocusを得たらキャレットも復活してしまう。
orz

例えばプロパティでColorを変えたときのように、永続してキャレット無しにしたいのれす。
891デフォルトの名無しさん:2006/04/11(火) 17:20:36
892890:2006/04/11(火) 17:26:41
根本的な解決方法はないようでつね

orz
893デフォルトの名無しさん:2006/04/11(火) 21:48:00
>890
よくわからんけどフォーカス得た瞬間にHideCaretじゃだめなの?
もしくはOnEnterでタイマー起動させてHideCaretするとか。
894デフォルトの名無しさん:2006/04/11(火) 22:06:00
>>893 まあそうなんだけど、
あんまり考えずに、とりあえずHideCaret送りまくれば
895デフォルトの名無しさん:2006/04/11(火) 23:52:42
隠そうとしないで、透明キャレットを表示する!
896デフォルトの名無しさん:2006/04/12(水) 00:25:40
TADOConnectionにある、GetTableNamesやGetFieldNamesで、テーブル・フィールドの
一覧を得る事はできたのですが、フィールドの型や、テーブルのレコード数を知る方法は
無いでしょうか。

mdbファイルやSQLServer上のテーブル構造を調べるプログラムを作りたいのですが、
TADOTableなどで開くとレコード数の取得を始めてしまい、遅くて仕方ありません。

何かもっと速く処理できる方法はないものでしょうか。
897890:2006/04/12(水) 05:54:09
>>895
透明キャレット!?背景と同じ色のキャレットにすれば隠れると思うんですけど・・
キャレットの色としていする方法ってあるんですか?
898デフォルトの名無しさん:2006/04/12(水) 06:16:37
配列の要素数を調べる場合HighとLengthどちらを使う方が効率がいいのでしょうか?
899デフォルトの名無しさん:2006/04/12(水) 06:37:44
上限と長さは意味が違うと思うけど、
静的配列ならHighは即値に置き換わるよ。 CPUViewを見てみよう。
900デフォルトの名無しさん:2006/04/12(水) 06:44:06
要素数を調べるのであればHigh(A)-Low(A)+1しなかればならなのでLength(A)のが短くて便利ジャマイカ
901デフォルトの名無しさん:2006/04/12(水) 07:49:52
>>896
つ TADOQuery
902デフォルトの名無しさん:2006/04/12(水) 08:34:45
レスありがとございました。

>>899
アセンブラは良くわからないですが解らないなりに読んでみました。
LengthもHighも静的配列の場合は最後のmovが変わるだけなんですね。
動的配列の場合は内部で@DynArrayLength @DynArrayHighを呼んで、
それでDynArrayHighはDynArrayLengthを呼んでデクリメントをしてるんですね
結局用途に合わせて好きな方を使えってことですね。

>>900
質問の仕方が悪くてすみません。
forで0からの配列を回したいだけなのでどちらがいいのかなと思いまして。
903デフォルトの名無しさん:2006/04/12(水) 09:07:46
vmaidをdelphiに移植していいのですか?
904デフォルトの名無しさん:2006/04/12(水) 09:56:32
>>902
for 文で配列を処理するなら 2006で拡張された構文を使わないなら
普通に for ... Low(....) to High(....) do でしょ
905デフォルトの名無しさん:2006/04/12(水) 09:57:48
>>903
http://sourceforge.jp/projects/vmaid/
で聞けばいいじゃない
906デフォルトの名無しさん:2006/04/12(水) 11:09:43
いつもの904の人は空気嫁ないのか読みたくないのか・・・
907デフォルトの名無しさん:2006/04/12(水) 13:21:25
>>903
GPLだから移植は自由。
ただし公開するならGPLで公開しないといけない。
といってもexeをGUIでラップするだけならライセンスは自由だけどな。
908デフォルトの名無しさん:2006/04/12(水) 18:48:59
C又はC++のDLLでvarargとか...が入ってる関数を呼ぶのって無理?
909デフォルトの名無しさん:2006/04/12(水) 18:54:47
>>908
Delphiのバージョンによっては無理じゃなかったと思うよ
910デフォルトの名無しさん:2006/04/12(水) 19:37:30
int wsprintf(LPTSTR lpOut, LPCTSTR lpFmt, ...);
function wsprintfA(Output: PAnsiChar; Format: PAnsiChar): Integer; cdecl; varargs;
911デフォルトの名無しさん:2006/04/12(水) 20:49:38
66 :デフォルトの名無しさん :2006/04/12(水) 20:13:28
どんなにひどい仕打ちを受けても、それを試練と思ってついて行くのが儲です。


67 :デフォルトの名無しさん :2006/04/12(水) 20:28:11
某信者は真性M


68 :デフォルトの名無しさん :2006/04/12(水) 20:35:20
>>67
真性Mの人と一緒にすると、真性Mの人が怒るよ。
某信者はただの馬鹿でしょ。
912デフォルトの名無しさん:2006/04/12(水) 22:17:38
Delphi初心者に真相を知らせることはあまり良くありませんね。
初心者はあくまで騙し続けてDelphiを使わせておくべきでしょう。
他の言語に移行されたら競争相手が増えてしまうしね。
913デフォルトの名無しさん:2006/04/12(水) 22:22:00
このスレの回答者も分かってて隠し通してるんだけど、
Delphiは言語仕様も速度も開発生産性もVBに惨敗してるんだよ。
しかもVBは関数型言語の要素を取り入れてさらに進化しようとしてる。
Delphiみたいな大昔のGUIアプリしか書けないようなツールを使ってたら
開発者の創造性も制限されてしまうよ。
914デフォルトの名無しさん:2006/04/12(水) 22:25:11
なんでよりによってVBなんかと比較するんだ?
915デフォルトの名無しさん:2006/04/12(水) 22:26:21
某信者が受け入れたくない現実がそこにあるから
916デフォルトの名無しさん:2006/04/12(水) 22:31:29
.NET時代から見れば、Delphiは親の親だからなあ。
Delphi→VJ++→VB.NET/VC#で。
爺さんが若者と対等に戦えるわけないよな。
917デフォルトの名無しさん:2006/04/12(水) 22:31:31
ブビイラネ
918デフォルトの名無しさん:2006/04/12(水) 22:32:59
C丼はカ○ワな子供だな。
氏産のJ++/J#よりましか。
919デフォルトの名無しさん:2006/04/12(水) 22:35:33
Windows Vistaが出る頃もDel6使いはVisualStyleにすら対応できないダサUIしか作れないのかあ。
一方VB使いはWPFでGPUフル活用の3D UIが楽しめるんだなあ、これが。

どっちが楽しいかは言うまでもないよね。
920デフォルトの名無しさん:2006/04/12(水) 22:36:22
最近V$の陰が消えた希ガス
921デフォルトの名無しさん:2006/04/12(水) 22:37:32
今時ブビ註だって(プ
時代錯誤も酷杉。
922デフォルトの名無しさん:2006/04/12(水) 22:37:48
相変わらずDel厨のスレ嵐が酷いな
923デフォルトの名無しさん:2006/04/12(水) 23:34:46
Delphi 6 Personal用のTNTコンポーネントもあるというのをネットで見たのですが、
検索しても見つかりません。どこにあるんでしょうか?
924デフォルトの名無しさん:2006/04/12(水) 23:50:55
>>923
Tnt Delphi Personal でググレ
925デフォルトの名無しさん:2006/04/12(水) 23:54:08
>>923
http://www.tntware.com/delphicontrols/unicode/downloads.htm

Ver.が古いから普通のを改造(DBやBandActn消す)して使えば?
926デフォルトの名無しさん:2006/04/13(木) 00:11:08
>>924
検索してますが、見つからないんです。
>>925
改造する技術はありません。
927デフォルトの名無しさん:2006/04/13(木) 07:50:38
改造する技術はありません=プログラマに向いてません
928デフォルトの名無しさん:2006/04/13(木) 07:52:00
改造しないとまともに使えないのが糞。
VBならいろんなコンポーネントが揃ってて便利なのに。
929デフォルトの名無しさん:2006/04/13(木) 07:54:40
VB6にウニコード対応してるコンポーネントってあったっけ? 

あ! WebBrowserがあったな
930デフォルトの名無しさん:2006/04/13(木) 07:59:36
931デフォルトの名無しさん:2006/04/13(木) 08:16:41
VBといえばVB6だと思うのがすでに時代遅れを自称してるようなものだな。
VBといえばVB2005。Delphiには存在しないgenericsもサポート。
932デフォルトの名無しさん:2006/04/13(木) 08:24:05
>>931 だったら、そう書けばいいじゃん。  
VB6とVB2006は違うものだけど、 Delphiは2006でも6のコードがそのまま使える。
だから別けて書く必要はないけど、VBは、何の話をしてるか、ちゃんと書かないと判らないんだよ。

で、そのVB2005で、CreateWindowExA で窓を開くコンポーネントはあるんだね?
933デフォルトの名無しさん:2006/04/13(木) 09:01:22
procedureのDLLを造りたいですけど、
http://oto.chu.jp/kujira/text/delphi/dll.htm
のコードのfunctionの部分をprocedureにすればいいだけですか?
934デフォルトの名無しさん:2006/04/13(木) 09:03:27
まぁそうだが
935デフォルトの名無しさん:2006/04/13(木) 09:06:42
でも 値を何か返しておいて、呼出側で使わなければいいじゃん。
936デフォルトの名無しさん:2006/04/13(木) 09:14:21
シャラップ
937デフォルトの名無しさん:2006/04/13(木) 09:26:09
>>934,935
有難うがぜいます。一度実験してみて失敗したらまた教えてください
938デフォルトの名無しさん:2006/04/13(木) 19:53:39
オプソのVBプロジェクトでがgenericsを有効利用している物など見たことがない。
(C#ならはそれなりに有るが)

使えもしない機能に何を求めてるんですか?
939デフォルトの名無しさん:2006/04/13(木) 20:47:09
delphiにはガベコレはないんですか?
940デフォルトの名無しさん:2006/04/13(木) 20:53:28
なかとよ
941デフォルトの名無しさん:2006/04/13(木) 21:08:37
バッファオーバーフロー起きまくり
942デフォルトの名無しさん:2006/04/13(木) 22:10:41
>>939
 インターフェース型なら参照カウンタ型のメモリ自動解放がされるよ


>>941
残念だけど、Delphiは 文字列型を持っていて、こいつは可変長だからローカル変数でもヒープに作成される。
また動的配列も持っているので
バッファオーバフローはおきないよ。

943デフォルトの名無しさん:2006/04/13(木) 22:15:07
そうじゃなくて、Del6の最初のバージョンにはVCLにバグが有ってメモリリークを起こしてたんですよ。

944デフォルトの名無しさん:2006/04/13(木) 22:19:42
メモリーリークと バッファオーバーフローは意味が違うだろ
945デフォルトの名無しさん:2006/04/13(木) 22:43:09
いずれにしてもVBの方が安全安心ということですね
946デフォルトの名無しさん:2006/04/13(木) 23:02:32
もうVBはDelphiに負ける要素がないね。時代だなあ
947デフォルトの名無しさん:2006/04/13(木) 23:12:37
.NETのようなガベージコレクション型の言語は、
メモリがある限りメモリを取ろうとするわけで
長時間運転アプリではメモリリークと同じくらい始末に悪いぞ。

他のアプリのメモリを奪ってHDDへの退避しまくり
948デフォルトの名無しさん:2006/04/13(木) 23:13:17
消えろよカス
949デフォルトの名無しさん:2006/04/13(木) 23:15:00
>>947
じゃあ、Javaなんて使えないね。w
950デフォルトの名無しさん:2006/04/13(木) 23:16:51
VBはそんな行儀が悪いとは思わないけどね。
それに64bit版Windowsで動かせばスケーラビリティも相当行ける。
言うことなし。
951デフォルトの名無しさん:2006/04/13(木) 23:17:51
Delphiってサーバーサイドで使えるの?
VBは使えるようだけど。
952デフォルトの名無しさん:2006/04/13(木) 23:19:08
>>951
VBが使えるWindowsサーバなら使えるよ。
とってもお手楽なIntraWebなんてのもあるよ
953デフォルトの名無しさん:2006/04/13(木) 23:21:08
> とってもお手楽なIntraWebなんてのもあるよ

「あるよ」というよりは「あった」という方が正確だな。
954デフォルトの名無しさん:2006/04/13(木) 23:31:37
bds2006にもIntraWebはあるよ
サーバを建てるなんてメンドクサイ事考えなくても
どっかの古いパソコンで作った実行ファイル走らせるだけで サーバの出来上がり。
公開しないIntraなら、ホントにとってもお手軽だよ
955デフォルトの名無しさん:2006/04/14(金) 00:16:28
まぁ、その程度だけどな
956デフォルトの名無しさん:2006/04/14(金) 00:16:57
>>949
その通り。Javaも.NETも、サーバーサイドや業務用で一台丸ごとそのアプリに占有させるならわかるが、普通のデスクトップアプリとしては有り得ん…。
957デフォルトの名無しさん:2006/04/14(金) 00:23:41
>>951
WebSnapという機能があって、ISAPIやApache ModuleをRADで作成可能。
DLLとして作られるので当然ネイティブコード動作。
普通に標準入出力を扱えるので古典的CGIも作れる。

958デフォルトの名無しさん:2006/04/14(金) 00:23:46
こっちでやれ
Borlandは信者にひどいことしたよね(´・ω・`)
http://pc8.2ch.net/test/read.cgi/tech/1143951088/l50
959デフォルトの名無しさん:2006/04/14(金) 00:50:44
>>956
サーバサイドでも.NETを選択する理由はほとんどないよね。。。
960デフォルトの名無しさん:2006/04/14(金) 07:29:31
サーバサイドでもDelphiを選択する理由はほとんどないよね

クライアントサイドでもDelphiを選択する理由はほとんどないよね


IDE事業売却しちゃったから
961デフォルトの名無しさん:2006/04/14(金) 08:21:27
全ての用途に使用する理由が皆無なVBよりはマシって事か。
962デフォルトの名無しさん:2006/04/14(金) 09:13:42
スレ違い
963デフォルトの名無しさん:2006/04/14(金) 09:31:21
Delphiはじめました。よろしくv(^^)v
964デフォルトの名無しさん:2006/04/14(金) 13:49:29
>>963

Delphi、2.0から使ってるけど、もう落目だよ
orz
965デフォルトの名無しさん:2006/04/14(金) 19:59:22
「自アプリからExplorerにリストアイテムをD&Dしたときに、
ドロップ先のExplorerのフォルダパスを取得する」
方法をご存知でしたら教えて下さいませんでしょうか。

Delphi-MLやネットで調べた時にその答えとして出てくる
http://www.melander.dk/delphi/dragdrop/
が随分前から消えてしまっていまして、
探し回ってDropSource.pasだけはなんとか入手したのですが、
DropSource特有の使用方法がわからず、色々動かしてみたのですが
パスの取得ができずに困っています。

できましたらよろしくお願い致します。
966デフォルトの名無しさん:2006/04/15(土) 02:13:21
>>926
何か勘違いしてるのかも知れんが、>>925にPersonal用のLinkがある
PersonalにはDB関係やThemeMgrが無いので削るだけ
同じVerと差分採れば、ソースすら読めなくても改変できるでしょ
ComboBoxのオートコンプリートはIMEの日本語入力でバグってるので、
修正するかオートコンプリートをOffにする
TntThemeManager6.dpkを入れたければ↓か自前のコンポでも先に入れる
http://www.delphi-gems.com/ThemeManager.php

>>965
V3.7
http://www.torry.net→VCLSystem→Drag and Drop
v4.0(ベータ版)
http://dominativ.com/thotor/open_source/dragdrop0400.exe
967デフォルトの名無しさん:2006/04/15(土) 08:49:11
Delphi7でJpegファイルのサムネイルをListViewに表示しようとしています。
ListViewは仮想リストビューとして、別スレッドでサムネイルを読み込んで
ImageListに追加しているのですが、ImageListにAddするたびにListViewが
Refreshされてしまい、チラツキがずっと続いてしまいます。何とかなりませんか?
968デフォルトの名無しさん:2006/04/15(土) 08:52:18
ListView.DoubleBuffered := True;
969デフォルトの名無しさん:2006/04/15(土) 09:28:24
>>968
ベリベリサンクス!
970デフォルトの名無しさん:2006/04/16(日) 03:31:21
バックグラウンドでキーボードの入力を監視して
Aキーが押されたときそれをBキーに置換するといったモノを作りたいのですが
可能ですか?
また、どのように手をつければいいのでしょうか?
971デフォルトの名無しさん:2006/04/16(日) 03:36:57
>>970
窓使いの憂鬱がそれできたを思う。
参考にならんかね
972デフォルトの名無しさん:2006/04/16(日) 04:32:22
変数のみからインスタンスを作成したいのですが、どうすれば良いのでしょう?

type
 THoge = class
 end;
var
 H: THoge;
begin
 H :=nil;
 H.ClassType.Create;

の様な事をやりたいのです。

>>970
SetWindowsHookEx
973デフォルトの名無しさん:2006/04/16(日) 04:51:01
>>972 それはできません。
974デフォルトの名無しさん:2006/04/16(日) 06:52:22
H.Createでいけるだろ。
質問とは直接関係ないけどclass ofのクラス参照型は知ってるよな。
975デフォルトの名無しさん:2006/04/16(日) 07:04:02
コンストラクタはインスタンス変数に対して使った時はメモリを割り当てないので、別途メモリを確保してからね
976デフォルトの名無しさん:2006/04/16(日) 07:30:32
var
 H: THoge;
begin
 H :=nil;
 GetMem(Pointer(H), SizeOf(H));
 H.Create;

---------------------------
デバッガ例外が発生
---------------------------
プロジェクト Project1 が EAccessViolation クラスの例外を生成しました。
'モジュール 'Project1.exe' のアドレス 00003204 でアドレス 00003204 に対する読み込み違反がおきました。'
プロセスは停止しています。再開するにはステップ実行または実行を選択してください。
---------------------------
OK ヘルプ(H)
---------------------------
977デフォルトの名無しさん:2006/04/16(日) 11:10:17
>SizeOf(H)
4バイトしか確保できて無いじゃん。
978デフォルトの名無しさん:2006/04/16(日) 11:53:00
で、どうやってクラス参照しないでサイズを取得するの?
979デフォルトの名無しさん:2006/04/16(日) 12:17:40
Q DelphiでUNICODEを取り扱えますか?

A WideStringがUNICODEです。AnsiStringとは相互に代入すれば変換されます。
 またUTF8との変換等も最近のバージョンであれば用意されています

Q  UNICODE文字を画面に表示するには?
A VCLはAnsiで窓が開かれていますのでAnsiに変換して表示するのが簡単です

Q  日本語以外のUNICODE文字を画面に表示するには?
A その文字を表示出来るフォントを指定した上で、TextOutW/DrawTextW で表示出来ます
  Windows2000/XPではFONTLINKが設定されているので
  ANSI_CHARSET/MS UI Gothicで表示出来ます。
  それより古いOSの場合フォントをどこかから入手する必要があります

Q  UNICODE文字を入力するテキストBOXが欲しい
A http://www.tntware.com/delphicontrols/unicode/ を使うのが一つ
  TWebBrowserを貼り付けて使うのも簡単でしょう

Q 普通のフォームのタイトルバーだけをUNICODE化したいのだが
A 現在方法を調査中。 ちょっとまってね
980デフォルトの名無しさん:2006/04/16(日) 12:25:19
>>976
class function TObject.NewInstance: TObject;
というのがメモリだけを確保してくれる
だから
H:= THoge.NewInstance ;でメモリ確保
H.Create; でコンストラクタを呼ぶ

という手順にすればいい。

TApplication.CreateForm がこの方法を使っている
981デフォルトの名無しさん:2006/04/16(日) 12:35:21
>>978
class function TObject.InstanceSize: Longint;
でサイズは取得出来る。 ただしメモリだけを確保しても
VMTテーブル等が設定されていないと
Createをメソッドとして呼び出せないので注意

あvirtualでなければ呼べるけど
982926:2006/04/16(日) 13:10:27
>>966
遅レスですがありがとうございます! 挑戦してみます。
983デフォルトの名無しさん:2006/04/16(日) 14:57:03
クラス参照無しでどうやってインスタンスを作るか、を質問してるのに
クラス参照つかってサイズ取得してたら意味ないだろ・・・
984デフォルトの名無しさん:2006/04/16(日) 15:00:57
てか普通にコンストラクタ呼べばいいしな
985デフォルトの名無しさん:2006/04/16(日) 15:18:46
誰の子でもいいので私を妊娠させて下さいって事か?
986デフォルトの名無しさん:2006/04/16(日) 15:21:17
クラスメソッドはインスタンス変数からでも呼べるので、H := H.NewInstance; とかでもいいわけだが。
まあ、普通はやらない。
やるとしたら、CreateFormのような事情があるとか、インスタンスを大量生成する場合メモリを細切れで確保するより固定長配列で取って〜とか。
987デフォルトの名無しさん:2006/04/16(日) 15:40:59
で、一般になんのクラスの変数かわからないものを渡されたとして、
どうやって、そのインスタンスを作りますか?
988デフォルトの名無しさん:2006/04/16(日) 15:45:23
メモリ確保を配列的に取りたいなら

InstanceSizeメモリ確保
  ↓
InitInstance(メモリ)
  ↓
コンストラクタ
989デフォルトの名無しさん:2006/04/16(日) 15:45:26
>>972のHはTHogeってわかるじゃん。
元々クラス参照型みたいな一般的に使える多態は考えて無くて、なんかトリッキーなことしたいだけと思ってたが、違うの?
990デフォルトの名無しさん:2006/04/16(日) 15:50:22
>>987
 一般的には、 
 なんのクラスの変数かわからないものを渡されてインスタンスをそこから作りたいという事はありません

一般的には
たとえば、GUI上で「複製」という操作をさせたいなら複製というメソッドを作成するのが普通です。
991デフォルトの名無しさん:2006/04/16(日) 16:52:38
deep copyするならAssign overrideするかRead/WriteComponent使っとけ。
992デフォルトの名無しさん:2006/04/16(日) 18:07:14
これはひどい
993デフォルトの名無しさん:2006/04/16(日) 19:04:41
残りカス、ひどすぎ
994デフォルトの名無しさん:2006/04/16(日) 21:18:38
ここもうダメだなぁ・・・
995デフォルトの名無しさん:2006/04/16(日) 21:21:08
このスレッドはBorland(ボーランド)のDelphi(デルファイ)について、
他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
996デフォルトの名無しさん:2006/04/16(日) 22:27:43
残り少ないし、回答者が低レベルすぎるし、このスレ終わり。
997デフォルトの名無しさん:2006/04/17(月) 07:04:45
>>987 DelphiのクラスはTObjectが幹となっているので、何かのインスタンスが入っているなら
 インスタンスのVMTの先頭がClassTypeとなっており
 ClassType メソッドで取り出す事が出来るため、何のクラスの変数か判らないという事には絶対になりません
998デフォルトの名無しさん:2006/04/17(月) 07:58:56
> var
>  H: THoge;
> begin
>  H :=nil;
999デフォルトの名無しさん:2006/04/17(月) 08:12:42
procedure TForm1.Button1Click(Sender: TObject);
var nc:TControl;
begin
nc:=(TComponentClass(Sender.ClassType).Create(Self)) as TControl;
with nc do begin
nc.Parent:=Self;
Left :=Left +100;
Top :=Top+100;
Show;
end;
end;
1000デフォルトの名無しさん:2006/04/17(月) 09:43:09
Sender が TStringList かもしれないし・・・コンストラクタの形はどうやって
決められますか?
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。