モナーの *やさしい* Delphi質問スレ Ver.11

このエントリーをはてなブックマークに追加
1Delモナー
  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ´∀`)<. Delモナーがどんな厨房疑問でもやさしく答えます。
 (    ) .| Delモナーは時に私であり、時には別の人。
 | | |  | 他のスレに書き込んで罵倒される前に、まずここで質問しよう。
 (__)_)  \_________________________

前スレ モナーの *やさしい* Delphi質問スレ Ver.10
http://pc3.2ch.net/tech/kako/1038/10388/1038880567.html
2デフォルトの名無しさん:03/01/13 10:33
■過去スレ

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

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

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

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

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

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

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

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

モナーの *やさしい* Delphi質問スレ
http://pc.2ch.net/tech/kako/1003/10031/1003113413.html
このスレは冗談で作られた偽スレです。

すでに削除依頼済ですので、今後は書き込まないようにお願いします。

本物のスレは↓こちら。

http://pc3.2ch.net/test/read.cgi/tech/1037146781/l50
Delphi相談室その8
41001:03/01/13 10:36
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
5デフォルトの名無しさん:03/01/13 10:41
>1
( ´∀`)乙!
スレ立て乙

もう前スレがhtml化されてるのには驚いた。
つーか>>1のモナーの語り口はダメ過ぎ
モナー使うなら全部語尾は「もな」でお願いします
>>7
このスレの伝統だから、大目に見てあげて。
大型連休に固定が消えるのはいつものこと(ひろゆき含む)
質問させて下さい。

Delphi6 Enterpriseを使っているのですが、
ShellListViewから、ショートカットファイルをクリックし、そのURLとタイトルを
取得するにはどうしたらいいのでしょうか?
11TECH:03/01/14 08:30
>>10
//ショートカットファイル かどうかは
  with ShellListView1.SelectedFolder do
   if fpIsLink in Properties then begin

//タイトルは
   Memo1.Lines.Add( DisplayName );
//ショートカットファイルのファイル名は
   Memo1.Lines.Add( PathName );
  end;
さらに URLが必要な IShellLinkを PathNameからか ShellFolder からか収得する
http://www.google.co.jp/search?q=IShellLink+Delphi&lr=lang_ja
1210:03/01/14 19:16
>>11
レスありがとうございます。
やってみます。
13 :03/01/14 23:48
>>10
たった今、ほとんど同じ質問を他の場所で読んだ気がするのは
気のせいか?
14 :03/01/15 00:34
粘着ですまないが、>>10からレスが無いな…。
マルチだね?
2003/01/14(火) 06:57:03 と 
TECH :03/01/14 08:30 か…

マルチはやめとけよ。そんだけ。
1513,14:03/01/15 01:26
訂正。
TECH氏に悪いので…。スマソ。

2003/01/14(火) 06:57:03 と 
デフォルトの名無しさん :03/01/14 06:44。
こっちの方が先に書いたのか。
16デフォルトの名無しさん:03/01/15 12:03
Database DesktopまたはDatabase ExplorerでSQLを実行する際に
WHERE句にパラメーターを使いたいのですがやりかたが判りません。
どなたか教えてください。
TQuertの Params プロパティのようにって事ですか? それは無理というか・・・
1816:03/01/15 13:13
やっぱり無理ですか。
Database DesktopでテストしてOKならそのままTQueryにコピペできれば
楽なんですけど。
パラメーターが使えるツールはないですかねぇ。
19TECH:03/01/15 13:28
>>18
新規プロジェクトを作って、フォームにメモとDBGridとボタンを貼り付けて
作ってるアプリの DataModuleユニットを入れて
ボタンイベントで TMemoの内容でDataModuleのTQuertを更新したら?

 
2016:03/01/15 13:44
>>19
とりあえずそれでやってみます。ありがとうございました。
21デフォルトの名無しさん:03/01/15 14:46
スンマセンが教えてください。

例えばフォームにボタンを3個貼って、それを実行してTABキーを押すと
ボタンを貼り付けた順番でフォーカスが移動しますよね。
それを任意の順番で移動させたい場合はどうするのですか?(OnKeyDownイベントとか書かずに)
>>21
フォームを右クリックしてタブ順序を変更する。
2321:03/01/15 15:23
>22
ありがとうございますた。簡単ですた。
24山崎渉:03/01/15 17:45
(^^)
25デフォルトの名無しさん:03/01/15 21:54
教えて頂きたいのですが、

26Mバイト、90万行のテキストファイルから文字列を抜き出そうと思ってます。
AssignFile、readlnを使用して一行ずつチェックしていくプログラムを作成したのですが
どうも全てチェックできないようです。

While not Eoln(F) do begin
readln(F, Str1);
〜〜
end;

上の様に一行ずつチェックしていきます。
この方法ではこのサイズのテキストデータを扱うのは無理なのでしょうか。
んなこたない
変な文字コードでも混じってるんじゃないの
27デフォルトの名無しさん:03/01/15 22:03
>>26
ありがとうございました。
原因がわかりました。よく考えてみたら、Eoln は行の最後かどうかチェックする
関数でした。 正しくはSeekEofにしないと駄目ですね。

どうも有り難うございました。
28デフォルトの名無しさん:03/01/15 22:43
Delphiやりたいんだけど、やっぱDelphi7をやった方がいいのかな?
Delphi6はフリーで落とせるみたいなんだが・・・
PersonalとProfessionalの差は大きいけど
6と7の差なんて大してないからPro買わないんだったら6Perで十分。
30デフォルトの名無しさん:03/01/15 22:59
>>29
ありがとうございます。
31デフォルトの名無しさん:03/01/15 23:00
ども、任意のディレクトリ一覧を得たいのですがヒントをくださいお願いします(;´Д`)
FindFirst/Next/Close
33デフォルトの名無しさん:03/01/15 23:04
>>32
ども、それっぽいところに行き着けました(;´Д`)
訳あってApplication.MainFormじゃない普通のフォームをメインのフォームとして使ってます。
ShowModalで表示したフォームがそのフォームより後ろに隠れないようにするにはCreateParamsのoverrideで出来ると分かったんですが
ShowMessageやMessageDlgとかで出てくるフォームが後ろに隠れないようにする方法が分からないっす。
誰か教えてください。
iniファイルでやることにしたか…。
こっちにも報告しろよ。
ってもう見てないか?
37デフォルトの名無しさん:03/01/17 00:18
プログラムは一切やった事無いんですけどpersonal版がフリーなので落としてみました。
挑戦しようと思うんですけど、プログラミング事態に面識が無いので
勉強すれば良いんですけど何をすれば良いかすら解りません。
アマゾンとかで検索かけるもどんな内容かも読まないから解らないし
かと言って本屋に行ってもVBユーザーのdelphiとかしか無くて
VBすら触った事の無い俺はどないせー言うんじゃぁぁ!
・・・という、どうしようも無い屁タレっぷりを発揮してしまったのですが
とにかく、プログラミングをした事ない人間に良い書籍及び勉強法をご存知でしたら
どうか教えて下さいませ、お願いします。
>>37
最初は「初心者向けデルファイ」として講座を開いてくれてるページを
参考にした方がいいと思う。タダだし。
いきなり本買ってもいいけど。
「プログラミング 初心者」とかで検索してみては?
つーか、全くもって何が何だかサパーリだと、そーゆーのを見るだけでストレスかも
しれないから、もっと簡易(深い意味は無い)な言語とかスクリプトから始めると
ラッキーかも。ラッキープレイスは東京タワー。ラッキーカラーはclwhite。
とっておきの帽子を被って出かけるといいことありそう!
>>37
とりあえず、なんか作ってみるとか。
メモ帳とか、ラーメンタイマーとかなら、コードは少しだけでいいし。
初心者向けのサイトは結構頓珍漢なことが書いてあるのでお勧めしない。
FAQ&Tipsの検索とわからない事を質問するにとどめた方がいい。
まとまった情報は書籍にすべし。
>>37
http://onigiri.s3.xrea.com:8080/delphi/
とりあえず、ここのリンクの初心者向けのサイトを見てみたら?
最初は解説通りに何かを作ってみるだけでも意味が有ると思うから。
42 :03/01/17 02:09
MDIアプリケーションでmainformのkeypreviewをtrueにして
onkeypressイベントの所に

begin
showmessage('キー押したよ');
end;

と書いて実行したんですが、キーを押してもメッセージダイアログが出てきません。
なぜキーを押したのにダイアログが出ないのか分からないのですが、
教えていただけないでしょうか
バージョンはpersonal ver6です。
よろしくお願いします。
43TECH:03/01/17 07:58
>>42
なぜ、出ないのかは説明が難しいですが、MDIChildのフォームも作成時の
親は Application だという事で、
 全部のキーイベントをフックしたい場合は、メインフォームではなく
 Applicationの持つ窓ハンドルに対してフックすると多少は横取り
 可能な範囲が広がります。

procedure TMainForm.FormCreate(Sender: TObject);
begin
Application.OnMessage:=MessageEvent;
end;

procedure TMainForm.MessageEvent(var Msg: TMsg; var Handled: Boolean);
begin
if Msg.message=WM_CHAR then begin
   showmessage('キー押したよ');
end;
end;


ただ、メニュー操作時やダイアログ操作時はたぶんダメでしょう
>>43
教えてくださってありがとうございます!
ちょっと理解できない所もあるのですがそこは自分で勉強して
何とかやってみます。
ありがとうございました。
4537:03/01/17 17:25
>>38-41
レス有難うございます
>>41さんの挙げたページから辿って行けばなんとなく解るような(?)ページがありました。
>>40さんのおっしゃる通り、今まで色々なdelphi関連の初心者ページを見て回ってましたが
全体的に最低限の知識を所有する人間相手のページばかりでしたので大変助かります。

未だ先の話なのですが、皆さんはdelphi初心者の頃はどんな書籍を見ましたか?
amazonで調べると何やらやたらと評判のわるいのとかよく見かけるんで
人によって向き不向きはあるでしょうが、参考までに教えてください
よろしくお願いします・・・。
46TECH:03/01/17 17:43
>>45
最終的には、技術書は並べてベッドに出来るくらい読まないといけないわけで、
どれが良いとか悪いとか考える前に、学校なり近所の図書館なりを利用して
まずは沢山読んでみる方がいいのでは?

それからプログラミングについては、やはり他人のコードを読むことが一番の勉強になります。
Web上の色んなソースを読んだり、
少しお金を貯めて Proを買ってVCLを読んだり
47TECH:03/01/17 17:50
後、やっぱり動かしながら勉強するのがモチベーションが保てて良い感じです。

最初に
ファイル->新規作成->その他->プロジェクト->SDIアプリケーション
して、これを元に色々追加してみると良いでしょう。

それが終ったら、
Demos ディレクトリの内容を順に見ていくとか
やっぱり「自分が欲しいソフトを作りたい」が一番のモチベーションかなぁ?
とオレは思う。
>>48 ドウーイ
明確な達成目標がある事で学ぶ事の取捨選択ができるからね。
学ぶ事が多少偏るだろうし、非効率でツギハギだらけの
プログラムが出来あがるかもしれないけど
作る過程で得られる内容は確実に次に活かせるし
作ったという達成感が生まれるのはとても良い。
しつもんです。
ほんとに初歩的ですが…

'TStrings' と 'Array' には互換性がありません

TStringsとArrayってどう型変換すればいいんでしょうか???
50です。
ある程度直したら今度もエラーが発生しました(泣)

'TArchiverOptions' と 'String' には互換性がありません

これはどうしたらよいのでしょうか?
探しても型変換を詳しく取り扱ってるところがない・・・
50です。
なぜか書き込めませんでした(エラーは出ず)
で、ある程度解決したのですが、

'TArchiverOptions' と 'String' には互換性がありません

のエラーです。
いくら探しても型変換を取り扱っているところが・・ない
初歩的ですみません
5350:03/01/18 13:23
書き込めません(泣)
5450:03/01/18 13:25
かきこめてました。
すみません
TArchiverOptions の変数を直接代入しようとしてるのでは?
欲しいのは UserOptions とか ResFileName とかじゃないの?

56デフォルトの名無しさん:03/01/18 23:00
新規の質問です。

XPに「ユーザーによる操作なしで Windows にプリンタを追加する方法」
と言うのがあるのですが、
http://support.microsoft.com/default.aspx?scid=kb;ja;JP189105

プログラム上で設定を値を変えながら
プリンタを追加して行こうとかと思っています。が

[ WinExec ][ ShellExecute ]などを使っても動いてくれません。
こんなの↓
ShellExecute(Handle, 'OPEN', 'rundll32.exe',
'printui.dll,PrintUIEntry /if /b "Test Printer" /f "%windir%
\inf\ntprint.inf" /r "lpt1:" /m "AGFA-AccuSet v52.3" ', '', SW_SHOW);

DOSプロンプト&ファイル名を指定して実行では正常に追加されます。
根本的な物が抜けていると思うので、どなたかお助けを〜( ToT)

CreateProcessは?
58デフォルトの名無しさん:03/01/18 23:12
>>57
CreateProcess?
さっそく挑戦中

レスありがとうございます
59デフォルトの名無しさん:03/01/19 00:40
>>58
つーか、思いっきりマルチポストだねぇ…。
よく恥ずかしくないね。信じられない。
あっち消しとけよ。
60デフォルトの名無しさん:03/01/19 02:04
>>59
すみません。。。
61デフォルトの名無しさん:03/01/19 13:14
IPアドレスを使ってチャットをするプログラムを
組みたいのですがどうするべきなんでしょうか?
どうするべき?
サーバーとクライアント
64デフォルトの名無しさん:03/01/19 14:19
indyでCGIファイルの要求を出して、
返ってきたファイルが、htmなのかgifなのかって判断はどうすれば
いいのでしょうか?

お願いします。
>>64
拡張子を調べる
頭の3バイトをチェック
6764:03/01/19 16:22
どうもありがとうございます。
jpegが返ってきたりする事はないのでしょうか?
そりゃあるだろ。というかあっても破綻しないように作っとけ
69デフォルトの名無しさん:03/01/19 16:38
61ですが、教えてよん(はぁと)
一般的なチャットの構造とDelphiでの実装のどっちがわからないんだ?
前者ならスレ違い。とりあえずIndyでもWinsockでも何でもいいからTCP覚えろ。
71デフォルトの名無しさん:03/01/19 16:56
Delphiでの実装です!
>>64
Content-Type調べれば分かると思います。
7364:03/01/19 18:05
>>68
>>72
どうもありがとうございます。ヽ(´∀` )ノ
>>71
その構造をIndyで作ればよいでしょう。
75デフォルトの名無しさん:03/01/19 18:23
>>74 どうやって作ったらよいのかわかりません・・・。
>>75 何がわからないのかわかりません・・・。
とりあえずTCP/IP使った一般的なチャットクライアントの構造を説明してみなよ。
77デフォルトの名無しさん:03/01/19 18:42
>>77 はっきりとは分からないですが・・・。
俺はP2P方式のチャットソフトを作ろうとしています。
P2Pとは通信し合う機器の間にプロバイタ以外の機器が入らずに
通信する方法です。peer to peerでしたかな?
そのP2Pを用いてチャットシステムを組みたいのです。
まずは普通にクライアント-サーバ型のチャットシステムを作る(exeは二種類)
client->server<-client
それができたらサーバの機能をクライアントに突っ込む(exeは一種類)
client<-client
つまりクライアントが他のクライアントからの接続要求を受けたら
サーバの役割も果たすようにする。
>>77
だからそのP2Pを理解してるんですか?
理解していればおのずと何をするべきか分かると思うのです。
80デフォルトの名無しさん:03/01/19 20:58
Delphiで実際どのように記述したらよいのか分からないので。
コンポーネントとかは何を使ったらよいのやら・・・。
IdTCPServerってコンポーネント使えばよいの?
>>80
TCP/IPの基礎から勉強してください。煽りじゃなくて。
「どうするべきなんでしょうか?」とか逝ってる時点でもうDelphi以前の問題
新手だよネ。
「○○は出来ますか」とかの。
自分で決めろって。
子供じゃないんだから。
煽りじゃなくて。
マルチポストも最低だけど、「どうすれば」だの「出来ますか」だの…。
>>61
QuadrupleDのヘルプ見てごらん(DirectX9対応の最新βじゃなくてVer2.12のほうね)
すぐ作れるよ
横やりだが
ADSLとかLANの中に居ると使えないチャットとか有るわけだがそのへんどうなんだろかと
Delphi 6 Personal を使っているのですが
GETメソッドで特定のCGIにスコアを送信したいのですがどのようにすればよいのでしょうか?
参考サイトなどありましたら教えてください。
>>85
ルータを設定しなさい。
質問です

プログラム(EXE)の終了時に、呼び出し元に値を返す方法はどのような方法がエレガントなのでしょうか?

VB からEXEを呼び出して、その帰り値をVB側で取得することが目的です。
できれば文字列が取得できればいいのですが....

ご存知の方、ご教授ください。

>>86 あまりいい方法ではありませんが、IEを呼び出す方法があります。
(ブラウザが立ち上がりますが、それでも問題ないケースもあると思いますので)

ShellExecute(0, 'open',sURL, nil, nil, SW_SHOW);
詳しくはドキュメントでお調べください。

ExitCodeで数値を返せる。それ以外は無理。
プロセス間通信するしかない。
あるいはiniファイルかレジストリか。
>>88
その用途で文字列を渡すなら DDE かメールスロットが簡単だと思うよ。
メールスロットなら

Delphi相談室その8
http://pc3.2ch.net/test/read.cgi/tech/1037146781/400-401
92デフォルトの名無しさん:03/01/20 23:16
>>89-91
レス 有難う。大変参考になりました。

実際、調べるとこの辺りの仕様はあまり拡張されていないようですね。
調べ方が足りないのかと、ここに書かせてもらいました。
従来の方法だと値、もしくはポインタ(使わないほうが良いと書かれている)
となっているようでつд`).....

そうであれば89さんがご指摘のレジストリというのが手っ取り早いですかね。
エラー処理も整っているし、VB側からの呼び出しも簡単。
なにしろ、(プロセス間通信などのタイミングやメッセージアイドリング、タイマー)
などが入ってくると、目的とはかけ離れて無駄にプログラムが煩雑になりそうです。

レジストリの中にはOS起動時に消してくれる便利な場所もあるので、そういう部分を使ってみます。
ご意見、有難うございました。
9386:03/01/21 07:18
>>88さんありがとうございます

ネットランキングをやりたいのですが、どうにかブラウザを立ち上げずに
データのみ送信できないでしょうか?
GETでもPOSTメソッドでもかまいませんので何か方法があればご教授下さい。
>>93
SocketからHTTP実装するとかな。なんかHTTP用のコンポーネントもいくつかあるみたいだが融通聞かないので嫌い。
Wininetで十分
すでに開いているフォーム(TForm)のメソッドや内在コントロールの
プロパティを別のUnitから操作したいのですが、方法がわかりません。

具体的には、

(1) TFormHoge の [実行]ボタンをクリック。
(2) UnitHoge.MethodHoge が呼び出される。
(3) 上記処理の進捗状況(「実行中」、「1/N」など)を(1)の
  フォームに表示。
(4) 処理を終了。

といったことがしたいのです。
ユニットを分割せずに、すべての処理をTFormHogeに記述すれば
簡単なのですが、それは本意ではないのです。

ヘルプや、ttp://www.users.gr.jp/query.aspx のログ、数冊の
書籍を探してみたのですが、探し方が悪いためか、目的に合い
そうな説明を発見できませんでした。

ご存知の方いらっしゃいましたら、ご教示(または代案の提示)
ください。
簡単なサンプルコードを示して頂けると助かります。
age忘れました。
>>96
uses Unit1; //<-TForm1


...


procedure hoge();
begin
Form1.Edit1.Text.Lines.Add('こんな感じ?');
end;
>>98

ありがとうございます。
実は、その方法と似たようなやり方は試してみたのですが、
Form1 が未定義の識別子でハネられます。
そこで、Uses節にForm1の参照を追加すると、当然のように
循環参照でハネられます。

何かうまい方法はないでしょうか・・・?
>>99
WebBrowser
を使うのはどうですか?
非表示で使えば良いし、エレガントではないけど(簡単ではある)。
ファイル->ユニットファイルヘッダーの追加
>>99
implement節のusesに加えると循環参照にならないはず。
>>100
ありがとうございます。
(できればもう少し具体的なところを教えて頂けると助かるのですが・・・)

>>102
ありがとうございます。確認してみます。
>>103
tWebBrowser
というコンポーネントがあるので、それを使います。
機能はWEBのブラウジング(表示)をおこないます。
URLを呼び出し先にセットすれば CGIトリガーが引かれます。
非表示、表示枠 サイス0にできるのでこれで良いかと...
Delohiでwindowsゲームを作ろう!を見ながらつくってるんですが、
アニメーション作りでエラーが出てしまい、先へ進めません。
interface部を変えて、Timer1のOnTimerを、Timer1Timarに変えると、
エラーがでてしまい、メソッドTimer1Timerの実現部がみつかりません。
とでてしまいます。なにが悪いのでしょうか。おしえてください。
実現部の名前を変えたからじゃないの?
>>106
名前はどこも変えていないのです。
本みながらなのにつまづくなんて。。。
説明書どおりにしてるのですが。
すいません。実行部ってどこでしょうか。。。
教えてください。お願いします。
もうだめぽ。
109組込もしまっせ:03/01/21 19:08
>>105
Timer1Timar <> Timer1Timer という事では?

Timer1のOnTimerを記述するときは
プロパティエディタの OnTimer をダブルクリックするといいよ
>>108
implementから下の方。
procedure TForm1.Timer1Timer(Sender: TObject);
begin
end;
の様にイベントハンドラの実行部を書く。
>>109
イベントですよね?してるんですが・・。
うぅ。。。
わかんない。。ソースあとで張ります。またきます。。
>>110
ありがとう。
VBを少しかじっってて、今Delphiやり始めたんですけど

Label1 TLabel
Label2 Tlabel

のLabel1,Label2などはそのコンポーネントの名前だってことはわかるんですが
TLabelとかってなんなんでしょうか?
それと
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm1 = class(TForm)
private
{ Private 宣言 }
public
{ Public 宣言 }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

end.

↑がかなり気になるんですがこのままやっていいんですよね?
>>113
クラス(コンポーネント)名。
その場合Label1はクラスTLabelのインスタンス。
>>114
TFormを継承したTForm1が作られている。そのままでも良いがTForm1よりもっとわかりやすい名前の方が良いかと。
オブジェクトインスペクタでForm1のNameというプロパティを変えるとTForm1というクラス名も勝手に変わる。
そしてフォームのprivateやpublicにメソッドを追加したりコンポーネントを貼り付けたり、
他のユニットをUsesしたりしてプログラムを作る。
116111:03/01/21 21:00
です。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Timer1: TTimer;
ImageList1: TImageList;
procedure Timer1Timer(Sender: TObject);
Procedure FormCreate(Sender:TObject);
private
{ Private 宣言 }
PtnNo: Imteger;
MxX, MyY: Integer;
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
end.
これのあとに、Timer1のTimer1Timerをしようとしてもできません。お願いします。
>>116
何がしたいかわからないっす。
TTimerのOnTimerイベントを書きたいなら、

>>109
>Timer1のOnTimerを記述するときは
>プロパティエディタの OnTimer をダブルクリックするといいよ
すれば、勝手に実行部にも宣言部にもコードを書いてくれる。

それをせずただ、宣言と実装を書くだけだと、イベントがTimerに割り当てられないので注意。
118111:03/01/21 21:36
>>117
ありがとうございます!わかりました。
interface部分を勝手にいじってました。
お騒がせしました。
厨質問ですいませんが、フックの仕方を教えてください

具体的には、他のアプリケーション(市販のものです)のチャットのようなものがあって、
そこに表示されるメッセージに対して処理を行いたいのです
(誰かが入室したら音を鳴らすetc.)

調べたところ、そのウィンドウはListBoxになっているようで、
文字列が追加されるときは、LB_ADDSTRINGというメッセージが発生してるようなので、
このメッセージを捕まえられればと思うのですが、やり方がわかりません。
「Delhpi2 達人テクニック」という本のキーフックのところを参考にして、
やってみようとしたのですが、うまくいきません。
(PrtScキーを押したときに画面をキャプチャする例)

まず単純に本にあるSetWindowsHookExのコールバック関数の中の
if文の条件を下記のように変更してみたのですが、
これではLB_ADDSTRINGというのは捕まえられないのでしょうか?
(フックの種類はWH_GETMESSAGEになってます)
120119:03/01/21 21:58
function GetMsgProc(Code: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var
rc: Boolean;
hFM: THandle; // メモリマップドファイル
pLog: PMsgBuf; // 共用メモリへのポインタ
pm: PMsg; // フックしたメッセージ
(省略)
begin
pLog := PMsgBuf(GetMapAddr);
if pLog <> nil then
begin
// ここから
if Code >= 0 then
begin
pm := PMsg(lParam);
// Ctrl+Escを殺す
if (pm.message = WM_SYSCOMMAND) and
(pm.wParam = SC_TASKLIST) then
begin
pm.message := WM_NULL;
pm.wParam := 0;
end;
// Print Screenキー
// if ((pm.message = WM_KEYUP) or (pm.message = WM_SYSKEYUP)) and
// (pm.wParam = VK_SNAPSHOT) then
if (pm.message = LB_ADDSTRING) then // <-変更行
begin
(以下略)
>>119
取りあえずDLL内に置いてね。その関数。
122119:03/01/21 22:46
>121
レスありがとうございます。

説明が足らずにすいません。本に従って、DLLを作成しています。
(というか、サンプルでついてたのを少しずつ変更してます)
キーフックの動作は確認取れてます。
適当というか予想

if (pm.message = WM_COMMAND) and (pm.wParam = LB_ADDSTRING) then
124119:03/01/22 00:00
>123
試してみましたが、駄目ですた(´・ω・`)ショボーン
125デフォルトの名無しさん:03/01/22 00:21
先生!小生、DLLは使えるようになったのですが(delphi6)、
COMはdelphi6で使えるのでしょうか!教えてくだだい!
宣言の仕方すら調べても出てきません!
>>125
使える。
127125:03/01/22 01:14
>>126先生
使えますか!お返事ありがとうございます!

どこか参考になるようなサイトとかないですかね・・・
(・∀・)イイ情報キゴンヌ!
誰か教えて!COMコンポ!(の組込方
128いいサイト:03/01/22 01:19
>>127
http://www.google.com/
終了
一通り探しまくったらまた来い。
129:03/01/22 09:33
>>127
付属のヘルプくらいは読もうよ。
ActiveX の取り込みとか
>>102

循環参照は解消できたのですが、UnitHogeからFormHogeのラベルのキャプションを
操作すると実行時エラーとなり、うまくいきませんでした。

自分なりに、外部からはコントロールの操作はできないのか?と考えて、FormHoge
にラベルのキャプション操作用のMethodHogeを追加して間接的にアクセスして見たり
もしたのですが、結果はおなじ(実行時エラー)でした。

(1) FormHoge内のイベントハンドラからMethodHogeを実行。→ ○
(2) UnitHoge内のプロシージャからMethodHogeを実行。→ ×

という結果です。
ちなみに、MethodHogeのコントロールを操作する記述をコメントアウトし、数値演算
やメッセージボックス表示の処理を記述した結果は(2)でもエラーにならずに正常実行
できました。
結局、原因も回避手段もわからず、UnitHogeに記述していた処理すべてをFormHogeに
記述することで妥協しました。(不本意)

このような場合、どのような実装が一般的なのでしょうか?多機能なフォームの場合、
関連する処理すべてを1箇所に記述すると、保守性が悪くなると思うのですが。
>>130
エラーが出ると書いてエラーメッセージ書かない奴ってアホだと思うが。
>>131
今手元にないので、書きたくても書けない。(メモって置けばよかったと思う)
>>132
ちなみに、Try .... Finally でも回避できなかった。
>>133
try...Finallyの場合例外はキャッチされずに呼び出し元に伝搬すると記憶。
IDEから実行してるならexceptのあるなしに関わらずデバッガが実行を停止してウザイ。
>130
別スレッドから操作したらエラー出るけど、
別ユニットから操作したからってエラーは出ないよ。
俺はこんな感じでいくつかのユニットに分けてるけど、それが原因のエラーは出てないから。
unit untHoge;
interface
type
  THogeEvents = class(TObject)
  public
    procedure SetEvents;
    procedure Button1Click(Sender: TObject);
  end;
implementation
uses frmMain;
procedure THogeEvents.SetEvents;
begin
  MainForm.Button1.OnClick := Button1Click;
end;
procedure THogeEvents.Button1Click(Sender: TObject);
begin
  MainForm.Label1.Caption := '押しますた';
end;
end.
やはり>>96の考え方(外部からフォームを操作する)がおかしいのだろうか?
>>136
いや、普通に出来る。恐らく君のコーディングに何らかの問題があるだけかと。
>>136はタイミングズレ。

>>135
ありがとうございます。書き忘れましたが、私の事例では、UnitHogeは
Classではないのです。(VBで言うところの「標準モジュール」)
これが間違いなのでしょうか?
もうひとつ気になった疑問点は、public .... End;節に宣言しなくても
FunctionやProcedureが外部から呼べてしまう点。
(130の例でも、UnitHogeからの呼び出しでエラーになったのは、コント
ロールのプロパティ操作だけ)
スコープがイマイチよくわからない。
>>139
Publicはプロジェクト外部に公開という意味?
Interface でPublicでないものはFriend(というキーワードはDelphiにはないが)
スコープになるのか・・・。
(基本的な部分がよくわかってないので、ヘルプを読んだ方がよさげ)
Quadruple Dのインストールをしようとしたんですが、
この部分の意味がよくわかりませんでした。

>まず、配布アーカイブであるdddd.lzhを解凍し、libディレクトリに移動してください。

>そして、中にある全てのファイルを、Delphiのライブラリパスの通っているディレクトリにコピーしてください。
>dxheaderディレクトリの中のファイルも同様に、全てDelphiのライブラリパスの通っているディレクトリにコピーしてください。

適当にやったらエラーが出てしまいました。
どなたかインストール方法を教えていただけないでしょうか?


142141:03/01/22 20:44
できました。すいません
143デフォルトの名無しさん:03/01/22 21:28
>>139
ソース貼ってみ
>>139-140
もうひとつユニットを作って色々呼んでみるとわかる筈。

public 他のソースファイルから見える
protected private に加え派生クラスから見える
private そのソースファイルだけ

public/privateはinterface/implementationとおんなじような関係。
同じソースファイル内なら同じ人が書くのは明白なので
妙なアクセス規制かけずに好き放題させてくれると考えればよし。
145デフォルトの名無しさん:03/01/22 22:17
でるふぁいで作ったプログラムは特別なコンポーネントがないと
うごきませんか?BVみたいに
>>145
死ね。後、単体で動く。
つまらんネタだろ?反応しないように<BV
>>145
Windowsという特別なコンポーネント群が無いと動きません。
149デフォルトの名無しさん:03/01/23 01:03
>>1
>Delモナーがどんな厨房疑問でもやさしく答えます。
言ってるじゃん
馬鹿扱いしたりネタ扱いしてもいいけど、おしえて。
150 :03/01/23 01:10
>>149
何に答えてほしいんだ?
つーか、「Delモナー」は優しいが、他は荒くれ者ばかりが集うスレ。
七つの海を制覇した強者しかいないと思ってくれ。
>>149にハゲドウ
>>150そんなんしるか!
プッシーは潮でも吹いてろ
153デフォルトの名無しさん:03/01/23 11:30
>>125
プロジェクト→タイプライブラリの取り込み、で登録したocxが表示されるはず。
んで、OKすると自動的にpasが作成されるから、それをusesすればよい。

そしたら、CreateComObjectし、ご自由にお使いくださいと。
>>149
>146さんがすでに書いてあるとおり単体で動きますよ.
ほかの方が作ったコンポーネントを使ってもやはり単体です.

>>150
それだとDelスレがいくつもある意味が….
どなたか>119に知恵を貸してやってください
156組込もしまっせ:03/01/23 14:52
>>119 は、他のアプリが受け取ってるメッセージをフックしたいという事ですよね?
 それは簡単ではないと思います。
 というかソレが出来るなら、逆に困った事になってしまうような・・・

ListBoxの窓ハンドルが入手出来ているなら、 
LB_GETSELCOUNT LB_GETTEXT は使えませんか?
>156
レスありがとうございます
いちおうタイマ処理で、SendMessageして文字列取得して処理するのは作ってみました

でも、フックができたら、いろいろできるんだろうなぁと妄想を膨らませていたので、
やり方がわかればと思ったのです
それができると困ったことになるということは、
Winの仕組み上できないようになってるってことなんでしょうか?
(できたとしてもキーフックみたいに簡単?ではないということですかね)


158組込もしまっせ:03/01/23 16:01
あ、ゴメン 観察するだけなんだね。 なら可能だ。

タイマー割り込みの代わりに、そのフック中で 自アプリにメッセージを送って貰って
それでテキストを取得したらいいんじゃないの?
159組込もしまっせ:03/01/23 16:05
もしかして、WH_CALLWNDPROC の方がいいのかもね
参考: ttp://home.att.ne.jp/yellow/hide_n/programming/tips03.html
ありがとうございます
参考サイトを見ると、SendMessage()を送られたのはWH_CALLWNDPROCでってことみたいですね。
また挑戦してみます
161山崎渉:03/01/23 21:17
(^^)

delphi 6 personal 使ってるんですが背景がデスクトップそのまま映ってて
気持ち悪いんですがVBのように背景をつけることってできないんでしょうか?
背景っていうのはdelphi本体の背景のことです
164デフォルトの名無しさん:03/01/23 22:19
ファイルのコピーのダイアログに出るような

c:\progam filed\...\a.txt

の様な形式を生成するAPIとか関数ってあるんですか?
たしかあった。
>>165
ですよねw

昔Del3使ってた時に見かけた記憶があるんですけどねぇ。
検 索 す れ ば 1 2 0 % 出 て く る ぞ 
>>164
uses節に Filectrl を追加して MinimizeName
頼むから1回くらい検索してくれ
>>169
散々検索したけれど。
VCLリファレンスのファイルと名の付くものも読みあさった。
171162:03/01/24 00:16
誰かわかりませんか〜?
172煽りではないが:03/01/24 00:26
>>162
質問がワケ分からんから、誰も相手しないと見た。
このまま相手されなくて、他のとこへマルチポストしてる姿が見えます。

こんなんでましたけど(泉)
MDI環境とSDI環境の違いじゃないの?
Delphiは使ったことないからどっちかしらないんだけど<おい
一人よくわからないバカが勘違いして粋がっているスレはここですか?
>>174
違います。
パンツを洗濯機で洗うと必ず裏返しになる理由を考察するスレはここですか?
>>162
放置するのも気持ち悪いからレスするけど外してたらごめんよ

http://www.borland.co.jp/tips/delphi/dh015/
178162:03/01/24 06:45

えーとつまり
http://age.ne.jp/x/kazuhito/Delphi/0101b.gif
この画像のようにフォームウィンドウの後ろにデスクトップがそのまま
見えていますよね?デスクトップが見えているとなんかやりにくいので
色をつけて隠せたらいいなと思うんですが可能でしょうか?
>>178
Activeデスクトップ + 白いgifファイル&アイコンの表示をしない。
>>178
Delphiの仕様です。
ていうか、そこに突っ込む人をはじめてみた。
VBも3位まで背景無くなかったっけ?
>>178 わかるぞー 俺も最初は戸惑ったものだ。気持ち悪いと思ったものだ
今は全く気にならないけど
>>183
気持ち悪いとは思わないが、バックグラウンドで別の窓が開いていると、
触ってしまう。
結局>>173であってるじゃん。。。
ああ、>>174は自分で自分に言ってたのか
ちなみにVB6あたりでも、ツール>オプション>明細設定で変更できます
Delphi統合環境の画面の話でしたか.
>>182
そもそもこの画面構成はVBをまねたものにしか思えませんでしたが
VBの方はすでに変わっていたのですね.

#include <stdio.h>

↑これってDelphiでいうところのuses?
>>187
その行に stdio.h というファイルを 読み込んで追加 というような動作。
>>187
Delphiでいうところの#include
違った。$inlucde
インルークド
つーか、MSは昔から(95時代くらいから?)MDIは推奨しないって言ってたのに。
193162:03/01/24 23:42

レスありがとうございます
じゃあdelphiをMDIのように背景をつけることはできないんでしょうか?
194 :03/01/25 00:00
悪いことは言わない。このままグダグダ同じこと聞くより
「慣  れ  ろ  !」
しまいには叩かれるぞ。いいじゃんか、後ろが見えたって。
絶対慣れるから。そのまま使うがヨロシ!
>162
最背面に常に表示されるウインドウをもつ、フル画面のソフトを作って
常に立ち上げておけばいい。
A型
197いちご:03/01/25 02:25
Delphi(プログラミング)初心者です。
上司から、これ参考にしてつくれと
eXescoper(逆コンパイラ?)とsample.exeを渡された
のですが使い方を書いたHPが見当たりません。
上司に質問したらそんなこと自分で調べろと怒られました。
先輩に聞いても、そんな課題でなかったらしく、知らない
と言われ、困ってます。どなたかご存知でしたら教えてください。
初心者がeXescper作るなんて無理。
>>198
違うだろ。
Sample.exe "を" eXescoper "で"懐石して作れだろ。
>>197
何を作るのかを書かなければ分からない。
もう一度言う。「何を」を書かないと(その上司以外は)誰も分からない。
eXescopeは、exeやdll内の様々なデータを見るツール。
sample.exeは、作ったやつに聞け。それとも広く公開され有名なアプリなのか?sample.exeって。
自分しか分からない情報を出さないことには、誰も答えることなんて出来ない。
これは、プログラミングとは関係ない社会人としての常識である。
201いちご:03/01/25 02:59
レスありがとうございます。
私の説明が舌足らずでしたので、もう一度説明させて下さい。
sample.exeに動きを参考にしたい部分があるのですが
それをeXescoperを使って調べて、課題のプログラム
をつくれというのが上司の要求です。
(要するにパクれってことだと思います)
eXescoperを起動させてsample.exeを開くと、
なにやらいっぱい出てくるのですが見方がわかりません。
どうやって使うのでしょうか?
>>201
なんで他のアプリをパクるのにeXescopeを使う必要があるの?
一体何を作るの?(仕様のことだよ)
sample.exeの「参考にしたい」部分を言わないと分からないよ。
まず、sample.exeが何をするものなのかから説明したほうがいいんじゃない?
eXescopeは、逆コンパイラじゃないよ。EXEのヘッダとか、参照してるやつとか、リソースを表示するやつだよ。
203デフォルトの名無しさん:03/01/25 03:31
ネタの予感…
でもマジレス。上司か先輩に聞け。恥を書くことを恐れては成長しない罠。
204いちご:03/01/25 03:36
はい、すみませんでした。以後気をつけます。
課題はブロック崩しゲームなのですが
(ピンポン玉があたるとブロックが消えていく)
ボールの動きが終始同じなのを、ブロックの数が少なく
なるにつれて、速くするというものです。
sample.exeはスクリーンセーバーだと思うのですが
球が壁に跳ね返っているものです。ただ時間がたつにつれて
次第にその移動スピードがあがってきます。
その部分をブロック崩しのピンポン玉の動きにとりいれろ
というのです。スピードのあがり方は全く同じにしなくては
いけないという条件なのでプログラムソースをみなくては
できないです。こんな状況ですが、おわかり頂けたでしょうか?
>>204
そのアプリを作るにあたり、eXescopeは役に立ちそうにありません。
上司が本気でeXescopeを使えと言っているのなら、その上司は天才の反対の反対です。
動きをまったく(1pixelも違わずに)同じくする必要は無いでしょ?
この課題はパクることが目的なの?
たぶん、ブロック崩しを作る上で必要な、「ボールが壁に当たったときの跳ね返りの
角度を計算する」とか、そういうことを学ばせるために課題を出したんだと思う。
だとしたら、まったく同じくパクる必要はなくて、ちゃんと計算式が理解出来て、それをプログラムに
反映できればいいんじゃないかと思う。
で、そういう計算は、俺は分からんから、他の人に任せます。
あと、サイト見つけた。
http://pc.2ch.net/tech/kako/1004/10048/1004855513.html
http://www.geocities.co.jp/SiliconValley/2530/vbblock.html
206いちご:03/01/25 04:07
レスありがとうございます。
私も最初そういう主旨だと思って、だいたい似たような速度の上がり方
するもので提出したのですが、sample.exeはなにか特別な関数を使ってる
らしく全く同じ(1pixelも違わずに)してくれと却下されました。
パクることも目的のようです。
207いちご:03/01/25 04:19
はい、先輩にきいたのですが、
eXescoperなんて知らないって言う人ばかり(いじめ?)で
上司に聞いたら、それを調べるのが仕事とつっかえされました(涙)
208いちご:03/01/25 04:27
202さんへ、レスありがとうございます。
とんちんかんな質問でしたらごめんなさい。
eXescoperはコンパイル前の状態を復元するものでは
ないということでしょうか?
>>208違います。
eXescopeは”なにか特別な関数”を使っている事や
その関数名とかはImport情報から分かるかもしれないが
例えば関数の引数の意味など仕様までは教えてくれない。
だから”よっぽど特別”な関数でない限り全く同じは無理。

情報を小出しにするあんたも、無茶な課題を出す上司
2人とも意識はないかもしれんが、相当悪質だぞ。
>>208
違います。リソースを調べる物です。
これでアプリケーションの動作を検証するなんて事は出来ません。
そのサンプルはゲームだから目で見て判断するしかないんじゃないでしょうか?
211いちご:03/01/25 04:53
レスありがとうございます。
ということは全く同じにするには
本当の逆コンパイルツールっていりますよね?
そんなのあるのでしょうか?
すみません、いろいろ聞いちゃって。
ある。が、DelphiのObjectPascalでなくアセンブラになるな。
…つまり、やめとけって事。
213いちご:03/01/25 05:23
レスありがとうございます。
アセンブラ→ObjectPascal翻訳みたいなツール
ないですよね・・すみません。
てことはどうしろってことなのかな?
単なるいじめ?
どうでもいいがいじめいじめウザい
eXescopeと課題の関係なさを説明しろってことかなぁ
リソースの中になにか数字が入ってるんだろうか
まったく同じにするには動画としてキャプったほうが手っ取り早そうだな
sample.exeとやらをうぷするわけにはさすがにいかんだろうが他にはなにもないの?
216デフォルトの名無しさん:03/01/25 05:46
>てことはどうしろってことなのかな?
知らんわ。あんたの上司の言う通りだ。ちったぁ自分でかんがえろや
ここはDelphi質問スレであって、新入社員を育成するスレじゃない。出直せ
218いちご:03/01/25 05:56
215さん、レスありがとうございます。
今、eXescoperをみてみたのですが、
リソースってのは具体的にどの部分のことを
いうのでしょうか?
そろそろウザクなってきませんか?

>>218
リソースはいくつも意味があるが、この場合は、
exeファイルに埋め込まれた、アイコンや文字列、その他のデータを意味する。
で、上司だけど
真性の馬鹿で、exescopeや逆コンパイルを何か知らないで渡したか、
わざと間違った道具を渡して、自分で調べさせようとした
のどちらか。
できないならできない正統な理由を調べてレポートしろや、なあ。
できないことを証明するのも科学のうちだと学生のころにやったっしょ?
レス付けてる人たちが、eXeScopeとeXeScoperがごっちゃにしてるような気がしなくもない。
似たようなもんだけどさ。
つーかブロックの数に反比例して速度上げるくらいすぐ出来るだろ
224デフォルトの名無しさん:03/01/25 10:10
ExtractHeaderFieldsを使って、文字列を分解しようと思いセパレーターを
このように設定しました。
Parser:TSysCharSet;
Parser := [#$0..#$FF] - ['0'..'9', 'A'..'Z', '_', 'a'..'z'];
私としては、['0'..'9', 'A'..'Z', '_', 'a'..'z']以外のもの(空白や()、@等)
がセパレーターになると思ったのですが、違うようなのです。
空白や括弧等複数のセパレーターを設定するには、どうしたらいいでしょうか?
教えてください。よろしくお願いします。
225162:03/01/25 13:18

A型です
> がセパレーターになると思ったのですが、違うようなのです。

どこで違うと思った?
227224:03/01/25 16:53
例えば AAAAA() という文字列があった場合AAAAAが取り出されると思うのですが、
AAAAA()と、全部なってしまうのです。
ブレークポイントを設定してマウスを合わせてみたら、Parserの中身は'@','[','_'
など6個ぐらいしか設定されていないようなのです。

>>218
ネタの予感がしますが…
課題からしてほぼ9割いじめと考えていいでしょ。
コンパイルされたアプリから内部処理を取得することは普通のレベルの
プログラマには不可能です。(リソースは簡単)
DLLにリンクされていれば内部処理結果を取得することは可能でしょうが
それにしてもDLLの仕様を取得する必要があります。
229なのだ!:03/01/25 23:50
天才の反対の反対

結局、天才では?
230224:03/01/26 00:19
自己レスです。
ExtractHeaderFieldsは、urlを分解する為のものなので空白をセパレーターに
指定しても無視されるようです。
よく考えたらurlの場合は空白で区切るとまずいですよね。
(私の質問がまずかった。urlとかに関係のない文字列を分解しようとしている
ことを書かなかった)
226さん ありがとうございました

function ExtractStrings(Separators, WhiteSpace: TSysCharSet; Content: PChar; Strings: TStrings): Integer;

説明

ExtractStrings 関数を使うと,Content で指定されたヌルで終わる文字列の部分文字列を文
字列リストに挿入できます。
Separators は,部分文字列を区切る区切り記号として使われる文字のセットです。復帰,改
行文字,および引用符(一重または二重)は常に区切り記号として扱われます。引用符付き
文字列の中の Separators は最後の引用符が現れるまで無視されます(引用符を二重にし
た場合,引用符を引用符付き文字列内に表示できます)。
WhiteSpace は,文字列の先頭にある場合に Content の分解時に無視される文字のセット
です。

Content は,部分文字列に分解されるヌルで終わる文字列です。
Strings は,Content から分解されたすべての部分文字列が追加される文字列リストです
。この文字列リストは ExtractStrings ではクリアされないので,文字列リストの既存の文字
列はそのまま維持されます。
ExtractStrings は,Strings パラメータに追加される文字列の数を返します。

注意ExtractStrings は,空の文字列をリストに追加しません。
>>231
(´-`)。o ○ (オイオイ…)
>>192
確かにそういう時期があったが、その後、複数起動を許すMDIなら
SDIとしてもMDIとしても利用できるので、現在はMDIを推奨してるんでなかった?
なにかの書籍で読んだ覚えが。
234いちご:03/01/26 05:20
222さんへ、ご指摘いただきありがとうございます。
私も今、eXescopeというのがあるのを知りましたが
私が渡されたのはeXescopeRです。eXescopeではありません。
レス頂いた皆さんへ、スペルを見る限り勘違いされてますね。
235いちご:03/01/26 05:32
223さんへ、反比例がどうかはわかりません。
わかっているのはブロックの数が少なくなると球のスピード
があがるということだけです。それを満たす関数なんて無数にありますよね。
(反比例というのもその中の1つですが)
課題はその中から特定しろってことです。
厨房な質問で申し訳ないんですが、
&&rrlo;を使って反転させるのはわかるんですが、トリップ入れると反転
はできないと思ってたんですが・・・
http://okazu.bbspink.com/test/read.cgi/ascii/1041248983/308
↑これ どうやるんですか?
って・・・やっぱり、わかりませんよね
厨房すまそ
上司は eXescoper を逆コンパイラと勘違いしているのかも。


>>234
勘違いしていた。
だが、exescoperとやらも試してみた限り、逆コンパイラには程遠い代物だぞ。
やはり、いじめか、上司がバカかだな・・・。
239いちご:03/01/26 07:12
課題があともう1つ出てるので、わかる方みえましたら
アドバイス頂けたら幸いです。
電話で商品の注文を受け付けるシステムについて
{電話での入力(ボタンを押す)に対して音声を返す(”在庫切れです”など)}
Delphiでできるそうなのですが、どんなハードのデバイスやコンポーネントが
必要になるのでしょうか?CTIサーバというのらしいのですが関連業界の方
みえたらさしさわりがない範囲でかまいませんので教えて下さい。
>このソフトはDelphiでコンパイルされたEXE/DLLファイルを高速で解析して
>DFMファイル(Delphiフォーム)を抜き出したり、使用しているクラス及びPAS
>ファイル(Delphiソースコード)を取得することが出来ます。
>いわゆる逆コンパイラーに近い働きをすることが出来ます。たぶん。(^^;
>また、 自分で作成したプロジェクトの管理または他人が作ったプロジェクト
>を解析したい人にお勧めのソフトです。

なーんて書いてあるから、勘違いしたのでしょう。
上司の間違いを指摘すると逆切れされるかもしれないので、
適当に似せて作って、同じにはなりませんでしたと言えば良いでしょう。
上司がここ見てたらどうするのかなぁ…。
242224:03/01/26 07:33
と言う訳で、どなたか単語に分解する関数知りませんか?

>>239
Delphiで出来る事は、CTIサーバメーカーが提供するライブラリのAPIを
呼ぶぐらいじゃないの?
244いちご:03/01/26 08:11
eXescoperに関して、ファイルをみていったら
nameのところにらしき関数が書いてあったので
それで提出します。
レス頂いた皆様、ありがとうございました。
245いちご:03/01/26 08:19

246デフォルトの名無しさん:03/01/26 08:48
224,230です。
ExtractHeaderFieldsについて、くどくいようで申し訳ないのですが、
D6だと空白や括弧 ( で文字列を切り分けてくれるのですが、D7では切り分け
てくれないようです。
PRO版なのでソースを見比べてみたのですが、何が違うのか判りませんでした。
D6、D7どちらが正しいのか判らないのですが、D6の動作にしたいのでどなたか、教えてください。よろしくお願いします。
(とりあえずは、D6でプログラムします。)
>>246
レス全部読まないバカは嫌い。
248世直し一揆:03/01/26 09:57
<血液型A型の一般的な特徴>(見せかけの優しさ・もっともらしさ(偽善)に騙され
るな!)
●とにかく気が小さい(神経質、臆病、二言目には「世間」、了見が狭い)
●他人に異常に干渉する(しかも好戦的・ファイト満々でキモイ、自己中心)
●自尊心が異常に強く、自分が馬鹿にされると怒るくせに平気で他人を馬鹿にしようとす
る(ただし、相手を表面的・形式的にしか判断できず(早合点・誤解の名人)、実際には
たいてい、内面的・実質的に負けている)
●本音は、ものすごく幼稚で倫理意識が異常に低い(人にばれさえしなければOK)
●「常識、常識」と口うるさいが、実はA型の常識はピントがズレまくっている(日本
の常識は世界の非常識)
●権力、強者(警察、暴走族…etc)に弱く、弱者には威張り散らす(強い者に弱く
、弱い者には強い)
●あら探しだけは名人級(例え10の長所があってもほめることをせず、たった1つの短所を見つけてはけなす)
●基本的に悲観主義でマイナス思考に支配されているため性格がうっとうしい(根暗)
●一人では何もできない(群れでしか行動できないヘタレ)
●少数派の異質、異文化を排斥する(差別主義者、狭量)
●集団によるいじめのパイオニア&天才(陰湿&陰険)
●悪口、陰口が大好き(A型が3人寄れば他人の悪口、裏表が激しい)
●他人からどう見られているか、人の目を異常に気にする(「世間体命」、「〜みたい
」とよく言う)
●自分の感情をうまく表現できず、コミュニケーション能力に乏しい(同じことを何度
も言ってキモイ)
●表面上意気投合しているようでも、腹は各自バラバラで融通が利かず、頑固(本当は
個性・アク強い)
●人を信じられず、疑い深い(自分自身裏表が激しいため、他人に対してもそう思う)
●自ら好んでストイックな生活をし、ストレスを溜めておきながら、他人に猛烈に嫉妬
する(不合理な馬鹿)
●執念深く、粘着でしつこい(「一生恨みます」タイプ)
●自分に甘く他人に厳しい(自分のことは棚に上げてまず他人を責める。しかも冷酷)
●男は、女々しいあるいは女の腐ったみたいな考えのやつが多い(例:「俺のほうが男
前やのに、なんでや!(あいつの足を引っ張ってやる!!)」)
249デフォルトの名無しさん:03/01/26 11:19
Cで書かれたDLL内の、void hoge(char** au); を、Delphiから呼び出したいんですが
どう宣言すれば良いんでしょうか?

procedure hoge(au: array of pchar); <実行時例外
procedure hoge(au: array of array of pchar); <コンパイルエラー
>>249
type

ppchar = ^PChar;

procedure hoge(au: ppchar);cdecl;
251デフォルトの名無しさん:03/01/26 11:49
>>250
すいません、追加で教えて下さい。
var
test: ppchar;
begin
GetMem(test, 1);
GetMem(test^, 6);
strcopy(test^, 'test0');
end;
こうすると、実行時例外になります。
メモリの確保と代入のところで何か間違いを犯してるんだと思うんですが
ppcharに値を代入するには、どうすれば良いんでしょうか?
DelphiってDLLのあつかいがめんどくさいね。
特に文字列の扱いがね。
254デフォルトの名無しさん:03/01/26 12:03
ArrayPChar = Array of PChar;
PArrayPChar = ^ArrayPChar;
procedure hoge(au: PArrayPChar); cdecl;

var
test: PArrayPChar;
begin
GetMem(test^,2);
GetMem(test^[0], 6);
GetMem(test^[1], 6);
strcopy(test^[0], 'test0');
strcopy(test^[1], 'test1');

としたらできました・・・・・・けど、なんでこんな複雑なことに?ヽ(;´Д`)ノ
255デフォルトの名無しさん:03/01/26 12:06
procedure hoge(var au: Array of PChar); cdecl;

var
test: Array of PChar;
begin
GetMem(test, 2);
GetMem(test[0], 6);
GetMem(test[1], 6);
strcopy(test[0], 'test0');
strcopy(test[1], 'test1');
end;
こうすると実行時例外になるんですが、なぜなんでしょう?
varはアドレスを渡すから、>>254と同じ結果になると思ったんですが・・・・・・
Delphiなんか使わないでC/C++使えよ(藁
>>251
GetMem(test, 1);→GetMem(test, 4);じゃないか。
SizeOf(PChar)の値だから。


まっDelphiでAPIなんか使うなってこった。
259デフォルトの名無しさん:03/01/26 12:13
>>257
はう、確かに・・・・・・でも、>>254でエラーにならないのは何故なんだろう?
ポインターわからんですヽ(;´Д`)ノ
>>258
アホ丸出しです。

>>252
他の言語より遙かに簡単です。


>>249
Cで作ったDLL側がstdcall呼び出し規約を使ってるならdelphi側も

procedure hoge();stdcall;

にすべし。
249は根本的に間違ってないか?
DLLから関数を呼ぶときは、external でDLLのファイル名を指定しないと
procedure hoge(p:ppchar);external 'ABCDE.DLL';

262デフォルトの名無しさん:03/01/26 12:31
おいコラ! 教えてたら自分でできなくなるだろ!アホかてめえあえええええええええええええええええええええええええええええええええ あほかてめええええええ
263↑(´∀`)MVP:03/01/26 12:35
 
264246:03/01/26 15:16
すみません。あほです。
レスは全部呼んだつもりですが、多分231のレスを私が理解し切れていないため
あほ扱いになったと。
ヘルプは呼んだのですが、あの文章からどの文字では区切られて、どれではだめか
読みとる力がありません。
あほに解説していただけませんか?
>>あほ
あほには何いっても無駄
266デフォルトの名無しさん:03/01/26 19:52
>>あほには何いっても無駄
え〜 そんなにおこらなくても。。。
これだから、ヒキオタは(略
x[i]の値とx[j]の値を入れ替える手続きswapを
procedure swap(var x,y:array of integer);
var temp:array of integer;
begin
temp:=x;x:=y;y:=temp;
end;
と定義したら
'Array' と 'dynamic array' には互換性がありません
って怒られちゃいますた。助けてください。
268デフォルトの名無しさん:03/01/26 20:00
http://jsweb.muvc.net/index.html
  ★こんなサイト見つけました★
>>267
Pascalでは同じ内容でも別の場所で宣言した型は別の型。

type T = array of integer;
procedure swap(var x,y:T);
var temp:T;
begin
 temp:=x;x:=y;y:=temp;
end;

ならどうです?
つーか・・・
procedure swap(var x,y:Integer);
var
 temp: Integer;
begin
 temp := y; y := x; x := Temp;
end;
じゃいかんの?
271267:03/01/26 20:55
ありがとうございます。でも両方とも
k:=0;
for l:=1 to r do
begin
if x[l]>x[l+1] then begin
swap(x[l],x[l+1]);
k:=l;
end;
r:=k-1;
end;
end;
の swap(x[l],x[l+1]); の部分で
変数実パラメータと変数仮パラメータとは同一の型でなければなりません
ってまた怒られちゃいますた…
キャストすれ
>>272
キャスト?
>>273
(・Д・)!?
>>274
( ;´Д`)
なんだ。全体じゃなく要素の入れ換えか。なら>>270でいいでしょ?
実はxがIntegerの配列ではないなんてオチで無ければ。
277 :03/01/26 21:52
>>276
思いっきりそれですた…
ご迷惑おかけしますた。回線切って(ry
278しつもん:03/01/27 01:30
可変部付きのレコード型のタグフィールドって何か意味あるの?
使い方がよおわからん???

type
TRec = record
A:integer;
B:integer;
case C:Boolean of
True:(D:integer);
False:(E:integer);
end;

この時、フィールドDとFはいつでも読み書き出きるでしょ。
なら、タグフィールドCって何に使われるのでしょう?

>>278
DとEは同じ記憶領域を共有するってわかってる?
同じ型じゃ可変部にする意味ないじゃん。
280しつもん:03/01/27 01:42
間違えた

type
TRec = record
A:integer;
B:integer;
case C:Boolean of
True:(D:integer);
False:(E:String[10]);
end;
281しつもん:03/01/27 01:55
DとEは同じメモリアドレスにアクセスするのはわかるけど、
Cの値関係無しに、DとEどちらも書き込み出きるでしょ。
C値によって、どちらかが制限されるのならわかるけど、
じゃあ、この中のCaseってどんな動作するの?
Cの使い方って?
282しつもん:03/01/27 02:02
>>279
同じ型にする意味はありますよ。
同じメモリ領域に二つの識別子が使えるので、
一つのレコード型データに対して、どちらかのフィールドしか使わない
(二つ一緒に使う事はない)
場合、メモリが節約できます。
>>282
まじで?
>>283
後、ビット列の表現を変えたい場合な。

IntegerとByte4つの構造体を共用させればRGB形式のデータの操作が楽だったり。
285282:03/01/27 08:46
278=280=281=282=284 なのかな?
メモリの節約なんてできませんよ
SizeOf の戻り値見てる?
むしろ case 文の分だけ損してる

> 後、ビット列の表現を変えたい場合な。
「後、」って何だろ?(w
その副詞は話の流れとして相応しくないな
レコードの可変は主にそのためにあるんでしょ

同じ型にして意味のある事といえば、ヘルプに出てくるみたいに
変数名を別にできるということくらいでしょう
>>285
>同じ型にして意味のある事といえば、ヘルプに出てくるみたいに
>変数名を別にできるということくらいでしょう

アホですか?それになんの意味があるというのだ。
287285:03/01/27 09:13
>>286
あなたのアホすぎる質問に、発言するのが嫌になった・・・
type t1=record a,b:Integer; end;
type t2=record case Boolean of true:(a:Integer;);false:(b:Integer;) end;
type t3=record case C:Boolean of true:(a:Integer;);false:(b:Integer;) end;
begin
AllocConsole;
writeln(sizeof(t1));
writeln(sizeof(t2));
writeln(sizeof(t3));
end;
実行結果
8
4
8
タグフィールドは、Borland実装が単なるフィールドとしてしか扱わないってだけで、
p-codeやインタプリタのPascalには、ちゃんと見てくれて、
タグフィールドが向けられてない要素にアクセスしようとするとエラーになる実装が存在する

…と何処かで読んだ気がする。
290デフォルトの名無しさん:03/01/27 11:51
なんかさいきんあほとかばかとかでおわらせるのおおいな
D6PROですが、かなり内部のソースコードまで付属しているんですね。
ひょっとしてDelphiそのものをビルドできちゃうとか?
IDEの正規表現検索を自分のアプリに組み込みたいのですが、
ユニットorクラスが見つかりません。
おしえてください。
まあほんとうにばかなんだけどな
モナーじゃしょうがないのか...

>>291
ありません
ガッカリ。。

とあるフレームワークでは標準装備なのに。。
>>293
あ、これいいですね。どうもです。
ググルでは外部DLLものばかりひっかかってウンザリしてたんです。
>295
しょせんんVBにはかなわんよな。プツ
くそったれ
デルポイ
297デフォルトの名無しさん:03/01/27 14:54
ろくにVBできねアフォが調子こいてんじゃねえよ
いっとくけどDelphiのほうが上だバカ
比較して、こっちが上だと言う人は、両方の言語を使いこなしてないんだろうな。
ばかやろう、VBの方がまだましだぜ。
たとえば、先行きわからんVCLに頼っているやつは
あほだろ。
300I90vmCq+:03/01/27 15:12
ボクは西沢選手が大好きです♥
>>299
あなたの対象としてるのは、VB6までのこと?VB.NETからのこと?
全部同じ奴っぽいな。
VB>DELPHIってほざいてんの
Pascal >> delphi
だな。
かなりobject pascal文法は
いい加減だぞ。
とあるフレームワークって.NET Frameworkのことだよ。
なにVB厨に釣られてるんだ(w
まあ.NETにもVBあるけどな。
305デフォルトの名無しさん:03/01/27 17:21
なにが.NETだつぎからつぎ新しいのだしやがって
難しくなっただけじゃねーーーーーーーーーーーのか
中身一緒で難しくなっただけじゃねえええええええええええええええええええええのか
つぎつぎ新しいのでてきりがねええええええええええええええええええんだよ
ちょっと書き方かわっただけじゃねえええええええええええええええええええのか
せっかく慣れたと思ったら次の出やがってやってらんねえええええええええええっての
信用ねえええええええええええええええええええええええええええええええっつの
結論 Delphi.NETなんかだすな。
>>296
とかカキコしてるツールが かちゅ とか ギコナビとか(w
>>307
Janeだヴォケ(嘲笑禿藁
>>305
同意。
>>308
それ同じことだ。まじれすスマソ。
なぜ2ちゃんねる関連のツールはDelphiやVB製が多いのだろう。
312..:03/01/28 05:03
>>311
ソフトウェアのできは、使うツールとは関係ない。ってこと。
>>311
ユーザーが多いからだろ
ちなみに監視所、アクティブスレッドランキング、みみずん検索なども2ちゃんねる関連のツールと捉えると
Delphi、VBが多数派とも言えない
314デフォルトの名無しさん:03/01/28 08:47
(1)
external宣言でWin32APIを使う利点は、関数名にエイリアスを使えること以外に
ないように思えるのですが、他に何かメリットはありますか?

(2)
Handle(HWnd)を受け取る引数は何型で定義すればよいのでしょうか?
Integerだと「型が不一致」でハネられるのですが・・・。
>>314


Cardinal
316デフォルトの名無しさん:03/01/28 08:52
>>315

(1) VBのDeclare宣言とおなじで、煩雑だと思います。
  楽だとは思えないんですが・・・。

(2) Cardinalとはちょっと気が付きませんでした。感謝です。
>>316
GetProcAddrとかLoadLibraryの戻り値はちゃんとチェックしてくださいね。
318bloom:03/01/28 08:59
319デフォルトの名無しさん:03/01/28 09:04
>>317
コメントありがとうございます。
320デフォルトの名無しさん:03/01/28 09:16
(3)
Delphiで作ったDLLのAPIをVBクライアントからDeclare宣言で呼び出すと、
function(procedure)の実行は出来るのですが、呼び出し元に変更を反映
させたい引数が、変更されません。(値渡しの引数やローカル変数と同じ
ような動作で、関数スコープ内でしか値が有効でない)
引数の型をPInteger(PChar)に変更したり、VB側のAPI関数宣言でByValを
ByRefに変更したりしましたが、結果はおなじでした。
どのようにコーディングすればよいのでしょうか?
(ちなみに、Delphi側の引数宣言をvarに変更したら、アプリケーション
エラーで落ちました)

(4)
VBクライアントから利用するAPIで文字列を返す場合は、PCharではなく、
PWideChar(Unicode扱い)でないとダメですか?
(1)の問題が解決しないことには意味がありませんが・・・。
321デフォルトの名無しさん:03/01/28 09:22
>>320
補足ですが、当然stdcallは記述しています。
「参照渡し引数の値の変更をクライアント側に反映させる」以外の動作は
一通り問題なく実現できています。
(テスト的なものなので、あまりむずかしい処理は書いていないのです)
322デフォルトの名無しさん:03/01/28 09:32
>>320 を書いた後で、

ttp://www.users.gr.jp/ml/archive/delphi/33597.asp

を見つけました。これで何とかなるのかな・・・?
323デフォルトの名無しさん:03/01/28 09:46
>>320

ttp://www.users.gr.jp/ml/archive/delphi/33627.asp

↑こんなのも見つけたのですが、この本、今でも入手できるのだろうか?
(1) C/C++製のdllだと関数名に変な記号が付いていて別名与えないとどうしようもない場合有り
(3) VB側で、違う型を与えてません?VBだとByRefに式が書けてその場合変更は無視された気が
(4) 6以前のVBは文字列の扱いがややこしいのでVariantに入れて返すのが一番楽と思う
325デフォルトの名無しさん:03/01/28 10:18
>>324
コメントありがとうございます。
結果報告は、後日・・・。
326デフォルトの名無しさん:03/01/28 12:00
教えて頂きたいのですが、

Delphiで、ShellAPIのShellExecute関数を使っているのですが、
起動したアプリケーションとDelphiのプログラムが同時に走ってしまい、
プログラムがうまくいきません。

ShellExecute関数で起動したアプリケーションの終了を確認してから、
プログラムの続きを実行する方法をどなたか教えて頂けないでしょうか。

宜しくお願いします。
FAQ
328組込もしまっせ:03/01/28 13:23
WaitForSingleObject か
GetExitCodeProcess を使えば該当アプリが終了してるかどうかわかりますが
ところが、これらのAPIを呼出すのに必要なハンドルを ShellExecuteは返してくれません。

対策は、
1、ShellExecuteEx を使って hProcess を使う
2、 FindExecutable で対応アプリの名前を調べてCreateProcessする
329326:03/01/28 14:01
>>328

ご返答ありがとうございます。
教えていただいた内容を調べて概要が分かりました。

難しそうですが、何とかがんばってみます。
ありがとうございました。

SpinEditというコンポーネントを使って数値を変えて
ボタンを押すとその数値を使って処理をするというプログラムについてなんですが、

処理が終わった後、ユーザーによって変えられた数値を
「元に戻す」ボタンで初期値に戻すためにはボタンを押したときに
SpinEdhit1.Valueに初期値を書いて代入する以外に何か方法ってありますか?


>>330
Undoメソッドがあるにはあるけど
 キー入力→Undo→(・∀・)アンドゥセイコウ
 スピン→Undo→(・A・)アンドゥデキン
となった(Del6付属のTSpinEdit)
ボタンを押すとテキストファイルにその日の日付を書き込みたいのですがどのようにやればいいのでしょうか?

たとえばボタンを押すと「2003/01/28」という文字がfile.iniの一番上の行に追加されるというものです。
昔の日付はだんだん下の行に下がっていく、つまり新しく書き込むと上から順に追加される
という感じなのですがこれはどうやるんでしょうか?
333組込もしまっせ:03/01/28 17:05
TStringList.Create; して、 LoadFromFileして、先頭に
Insert FormatDateTime して SaveToFileかな

でも、
新しい書き込みが下になった方が パソコンには優しい処理だと思うけどなあ・・・・
ユーザ的に不便

はい次
procedure TForm1.Button1Click(Sender: TObject);

var

vdate : String; vdata : TStringList;

begin

vdata := TStringList.Create ;
vdata.Text := vdate;
vdata.SaveToFile ('test.txt');
vdata.Free ;

end;

こんな感じでとりあえず保存だけやり方がわかったのですが追加書き込みはどうやるのでしょうか?
新しい日付が最初にこなくてもいいのでファイルもう一度ボタンを押すと
次の行に追加されるようにしたいのですが調べても詳しく分からなかったので
例みたいなものを教えていただけないでしょうか
336335:03/01/28 18:53
追記:vdateには日付が文字列型で入っています。
337デフォルトの名無しさん:03/01/28 19:07
コンソールアプリケーション作ったんですが
コマンドプロンプトで300行弱しか表示されません。
もっと表示するのって無理なんですかね…?
コンソールアプリで表示される行数って考え方が今風だな(w
>>337
OS次第。
>>337
あなたの言われる機能はターミナルに依存します。
よって、履歴機能を自力で実装するしかないです。
>>338-340
ありがとうございました。
とはいえ、300行ってことは、NT系だろうからコマンドプロンプトのプロパティで増やせるはず。
誰も解決策知らないのかよ(w
>>342
もっと具体的に教えてください。
>>344
何をつかってるんだ。
だからターミナルに依存すると言っているだろうに
アプリ側でどうにかなるもんじゃない。てうかどうにかするほうが反則だゴルァ

それも嫌なら自前で出力ウィンドウ作るとか、リダイレクト使ってファイルに吐かせるとか。
347デフォルトの名無しさん:03/01/28 20:31
整列の時間を計ろうとしたら早く終わりすぎて計れなかったんでループさせてから
かかった時間をループ回数で割って計ろうとしました。
自分で作ってみたんですが途中で整列する対象がソート済みの配列に変わってしまうんです。
整列前のソートをソートし続けるいい方法はないですかね?
begin
for i:=1 to 100 do begin
y[i]:=101-i;
end;
for j:= 1 to 10000 do begin
for k:=1 to 100 do begin
x[k]:=y[k];
end;
while m<=100 do begin
writeln('x[',m,']=',x[m]); m:=m+1;
end;
for r:=100 downto 1 do begin
for l:=1 to 99 do begin
if (x[l]>x[l+1]) then swap(x[l],x[l+1]);{swap(x,y)はxの値とyの値を入れ替える手続き}
end;
end;
end.
毎回初期化するか降順昇順でソートするかQueryPerformanceCounter使え。
>>348
一応ループの中に
for k:=1 to 100 do begin
x[k]:=y[k];
end;
って入れてループに入るたびにxの値を更新するようにしたつもりなんですが…
350デフォルトの名無しさん:03/01/28 21:12
>>335

実行してないので間違ってたらスマソ・・・

var
vdate : String;
vdata : TStringList;

begin
vdata := TStringList.Create ;
vdata.LoadFormFile ('test.txt');
vdata.Add(Newdata);
 ・
 ・
 ・
 ・
vdata.Free ;
end;
Webページのデータから、リンクしているファイルのアドレスを抽出するコンポーネントなどはないでしょうか?
自分でHTMLを解析するのが面倒なので、定番のライブラリなどがあったら教えて欲しいです。
test
353347:03/01/28 21:59
while m<=100 do begin
writeln('x[',m,']=',x[m]); m:=m+1;
end;
の部分を
for m:=1 to 100 do begin
writeln('x[',m,']=',x[m]);
end;
に変えたらなぜか知らないけどうまくいきました。すいません。

シングル型の変数 Data に 2.222222 という数値が入ったとして
これを2.2にしたいのですが、FormatFloatを使ってもうまくいきません。

Data2 := FormatFloat('0.0',Data);

Label1.Caption := Data2;

にするとラベルには0.0と表示されてしまいました
どんな感じでやればいいのでしょうか?
355デフォルトの名無しさん:03/01/28 22:59
このダイアログを使いたいんですが、どこにありますか?
http://www.42ch.net/UploaderSmall/source/1043761966.jpg
見れない
すいません、「フォルダの参照」ダイアログに「フォルダの新規作成」
機能がついた奴です。ついてない奴は見つけたのですが、新規作成が
できればかなり便利になると思いましたので。
>>354
実験したけどちゃんと"2.2"になったよ。
Dataの初期化をわすれてないか。
http://takamichie.tripod.co.jp/warehouse/units/index.html

   ∧,,∧    /
  ミ,,゚Д゚彡 < ほいな。
   ミ つ つ   \
 @ミ  ミ      
   ∪''∪     
>>351さん
360デフォルトの名無しさん:03/01/29 00:27
>>359
そのページ、初めて見るけど、
>関数郡です
  ↑
「関数群」だよなぁ。

ま、くだらないあげあしとりだけどさ。
361デフォルトの名無しさん:03/01/29 05:25
Glyph が TImageList になってる TSpeedButton がほスィのですが、
探し方が悪いのか、いくら探してもみつかりません。
もしご存じのかたおられましたら教えてください。
よろしくお願いします。
362初心者:03/01/29 05:55
AVIからWAVを摘出するコードを書きたい。
どうするの?
363361:03/01/29 06:54
いじってたらできてしまいました
もういいです
>>358

すいません。こちらのケアレスミスでした。

50 / ((150/100) * (150/100))

とやらなければいけないところを

50 / (100 * 100)

にしていたので前者の答えは0.0022222...で後者の答えは22.2222...になるため
前者は0.0に、後者は22.2になっていました。

ちなみにDelphi初めて間もないのでよくわからないのですが、
なぜ変数を初期化しなければいけないのでしょうか?
初期化するのは違う値を何回も入れ替えるときのみでいいんでしょうか?
それ以外の、たとえば1回しか代入しないような変数は初期化しないでもOKですか?
365デフォルトの名無しさん:03/01/29 08:58
>>315
せっかくコメントを頂いたのに申し訳ないのですが、後で調べてみたら、
THANDLE で問題なく動作しました。たぶん、Cardinalよりこちらの方が
ベターだと思います。

>>326
VB用のサンプルコードなら、WEB上で探せば腐るほどあるので、VBのコード
を読み書きできるなら、それをDelphiで書き直すのもありだと思います。
Win32APIの代わりにWSHを使う方法もあります。
 Delphi用のコードも、WEBや書籍で見た記憶があるのですが、残念ながら
提示できません。(どこで見たか忘れた・・・)


・・・>>320-321の問題は未解決です。(T_T)
(>>322を読んだが、イマイチ意味がよくわからないし)
どこかにわかりやすいサンプルコードはないだろうか?
>>365
WIndowsAPIと同じ様な動作で良ければ

// Delphi側
function testproc( X: PChar ): Integer; stdcall;
begin
  StrCopy( X, 'Hello World' );
  result := 12;
end;

'' VB側
Private Declare Function testproc Lib "AHAN\UHUN.DLL" (ByVal X As String) As Long

Private Sub Main()
  Dim X As String
  Dim L As Long
  X = Space(100)
  L = testproc(X)
  MsgBox L & " '" & X & "'"
End Sub
367組込もしまっせ:03/01/29 09:49
>>320
文字列を返したいのですか?
VBの事はもう忘れてしまったのですが、一般的な話として文字列を返したい場合は
 文字列用の領域を用意し、領域サイズもあわせて引数として渡す必要があります。
 WindowsのGetWindowText API を参考にすると良いでしょう。

マルチスレッドを使わない場合は、関数の引数で返さず、
その関数内で別の変数に代入しておいて、別の関数でPCharで返す方法もあります
368デフォルトの名無しさん:03/01/29 10:00
>>366-367
ありがとうございます。
無論、文字列も・・・なんですが、それ以前に数値(32bit整数)も返せていない(DLL内で
MessageboxAで表示してみると正しい値が入っている)という情けない状況です。(T_T)
369366:03/01/29 10:23
>>368
ほれ。
メモリ管理はどうなっているかわからん。調べてくれ。

// Delphiだってさ
uses
Ole2 in '..\..\..\..\..\Program Files\Borland\Delphi6\Source\Rtl\Win\Ole2.pas';

function testproc( var X: PWideChar; var Y: Integer; Z: PInteger ): Integer; stdcall;
const
  X_ = 'はいりはいりふれはいりほー';
begin
  X := SysAllocStringByteLen( X_, Length( X_ ) );
  Y := 8823;
  Z^ := 2003;
  result := 11;
end;


'' VBだってばよ
Private Declare Function testproc Lib "KILLTHEVB.DLL" (ByRef X As String, ByRef Y As Long, ByRef Z As Long) As Long
Private Sub Main()
  Dim X As String
  Dim Y As Long
  Dim Z As Long
  Dim L As Long
  L = testproc(X, Y, Z)
  MsgBox L & " '" & X & "' ," & Y & "," & Z
End Sub

370あべし:03/01/29 13:31
コントロールパネルにある
サウンドとマルチメディアの設定(OSによって名前が違うかも)で
起動音やごみ箱の音とか登録してまとめれて変えられますが
現在選択されているものをプログラムで外部から操作できないでしょうか?

個々の設定を変えるのではなく、用はデスクトップテーマの
効果音だけ変更ソフトみたいなのを作りたいんですが。
>>370
レジストリを書き換えるしかない。
372Mister:03/01/29 19:23
Delphi personalをはじめようと思うんですが、何からはじめればいいですか?
1:事実に対して仮定を持ち出す
    「犬は子供を産むが、もし卵を生む犬がいたらどうだろうか?」
2:ごくまれな反例をとりあげる
    「だが、時として尻尾が2本ある犬が生まれることもある」
3:自分に有利な将来像を予想する
    「何年か後、犬に羽が生えないという保証は誰にもできない」
4:主観で決め付ける
    「犬自身が哺乳類であることを望むわけがない」
5:資料を示さず自論が支持されていると思わせる
    「世界では、犬は哺乳類ではないという見方が一般的だ」
6:一見関係ありそうで関係ない話を始める
    「ところで、カモノハシが卵を産むのは知っているか?」
7:陰謀であると力説する
    「それは、犬を哺乳類と認めると都合の良いアメリカが画策した陰謀だ」
8:知能障害を起こす
    「何、犬ごときにマジになってやんの、バーカバーカ」
9:自分の見解を述べずに人格批判をする
    「犬が哺乳類なんて言う奴は、社会に出てない証拠。現実をみてみろよ」
10:ありえない解決策を図る
    「結局、犬が卵を産めるようになれば良いって事だよね」
11:レッテル貼りをする
    「犬が哺乳類だなんて過去の概念にしがみつく右翼はイタイね」
12:決着した話を経緯を無視して蒸し返す
    「ところで、犬がどうやったら哺乳類の条件をみたすんだ?」
13:勝利宣言をする
    「犬が哺乳類だという論はすでに何年も前に論破されてる事なのだが」
14:細かい部分のミスを指摘し相手を無知と認識させる
    「犬って言っても大型犬から小型犬までいる。もっと勉強しろよ」
15:新しい概念が全て正しいのだとミスリードする
    「犬が哺乳類ではないと認めない限り生物学に進歩はない」
16:反論の代わりに詭弁ということにしてすます。
    「それは詭弁です。いいから詭弁なんです。」

終了ボタンを押すとアプリケーションを終了させるには

beginとendの間にclose;と書くのが正しい方法なのでしょうか?
ほかにやり方とかってありますか?
>>373
それは詭弁です。いいから詭弁なんです。






そんなことはどうでもいいが、

メインフォームならそれでOK
そうでないなら、
Application.Terminate または
Application.MainForm.Close

コンソール(等、VCLで作られたフォームがないアプリ)なら、Halt
  ∧,,∧  >>326さん
 ミ,,゚Д゚彡 きっとCreateProcess.
 ミ⊃ ⊃
377初心者:03/01/29 22:11
画像の出し方教えてください
>>377
難しすぎて分かりません
クイックソートのプログラムを作っているんですが、
どうもうまくいきません。
どこを直せばいいか教えてください。
お願いします。

program quick;
{$APPTYPE CONSOLE}
uses
SysUtils;
procedure quick_sort(l,r:integer);
var p,pivot,i,j,b:integer;
begin
p:=(l+r) div 2;
pivot:=x[p];
i:=l;
j:=r;
repeat
while x[i]<pivot do i:=i+1;
while x[j]>pivot do j:=j-1;
if i<=j then
begin
b:=x[i];
x[i]:=x[j];
x[j]:=b;
i:=i+1;
j:=j-1;
end;
until i>j;
if l>j then quick_sort(l,j);
if i<r then quick_sort(i,r);
end;
381デフォルトの名無しさん:03/01/29 23:27
var i,n:integer;
t,t1,t2:TDateTime;
Year,Month,Day,Hour,Min,Sec,MSec:Word;
x:array[1..10000] of integer;
begin
n:=10000;
Randomize;
for i:=1 to 10000 do begin
x[i]:=random(n+1);
end;
t1:=Now;
quick_sort(1,n);
t2:=Now;
t:=t2-t1;
DecodeTime(t,Hour,Min,Sec,Msec);
writeln(Sec,'秒',Msec);
readln;
end.
382デフォルトの名無しさん:03/01/29 23:36
>>379-381です
varの位置を変えたらうまくいきました。
どうもお騒がせしました。
頼 む か ら 1 回 く ら い 検 索 し て か ら に し て く れ
>>379
頑張れよ、九州大学電気情報工学科。
385351:03/01/30 01:34
>>359
ありがとうございますー
とても助かりました。
>>379
今日提出レポート必死だな(w
>>379

ワロタw
388デフォルトの名無しさん:03/01/30 08:41
>>366-367 >>369

ありがとうございます。お蔭様で解決しました。実は仕事でも何でも
なかったのですが、動かないプログラムが気に掛かって、ここ数日、
睡眠不足気味でした。
これでDelphiのことは忘れて仕事に集中できそうです。(おい

お礼と言っては何ですが、自作の関数をいくつか紹介します。
使えそうなのがありましたら、ご自由にお使いください。

(>>388 に続く)
389デフォルトの名無しさん:03/01/30 08:47
(>>388 の続き)
procedure SendKeysEx(KeyCode1: Byte;
           KeyCode2: Byte = 0;
           KeyCode3: Byte = 0);
//仮想キーコードの送信。
//複合キーストロークが可能。(3つまで指定可能。第2、3キーコードは省略可)
begin
  keybd_event(KeyCode1, 0, 0, 0);
  if KeyCode2 <> 0 then begin
    keybd_event(KeyCode2, 0, 0, 0);
    if KeyCode3 <> 0 then begin
      keybd_event(KeyCode3, 0, 0, 0);
      keybd_event(KeyCode3, 0, KEYEVENTF_KEYUP, 0);
    end;
    keybd_event(KeyCode2, 0, KEYEVENTF_KEYUP, 0);
  end;
  keybd_event(KeyCode1, 0, KEYEVENTF_KEYUP, 0);
end;
390デフォルトの名無しさん:03/01/30 08:50
(>>389 の続き)
//uses ComObj;
function GetLinkPath(PathFile: String): String;
//ショートカットからリンク先のパスを取得。(WSHを使用)
var
  objShell:   variant;
  objShortcut:  variant;
  objUrlShortcut: variant;
begin
  try
    GetLinkPath := PathFile;
    if AnsiLowerCase(GetFileExtName(PathFile)) = 'lnk' then begin
      objShell := CreateOleObject('WScript.Shell');
      objShortcut := objShell.CreateShortcut(PathFile);
      GetLinkPath := objShortcut.TargetPath;
    end;
    if AnsiLowerCase(GetFileExtName(PathFile)) = 'url' then begin
      objShell := CreateOleObject('WScript.Shell');
      objUrlShortcut := objShell.CreateShortcut(PathFile);
      GetLinkPath := objUrlShortcut.TargetPath;
    end;
  exception
  end;
end;
391デフォルトの名無しさん:03/01/30 08:54
「改行が多過ぎます」って何やねん!(激怒)
こんな使えん掲示板見たことないわ。
良かったらDelWikiのコードテンプレート当たりに書いて欲しいYO.

http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5B%A5%B3%A1%BC%A5%C9%A5%C6%A5%F3%A5%D7%A5%EC%A1%BC%A5%C8%5D%5D
393デフォルトの名無しさん:03/01/30 08:59
394デフォルトの名無しさん:03/01/30 09:15
ちょっと言葉が足らないので、補足。

>>388
動かなかった原因は、ポインタの使い方を理解していなかった、の一語に尽きます。
(文字列バッファーの確保とヌル文字列での初期化はやっていたのですが)

>>389
VBの悪名高い?SendKeysステートメントと同機能です。引数は配列でもよさそうですが、
VBの元ネタに合せてOptionalにして見ました。

>>390
よく見直したら、拡張子'lnk'の場合も、'url'の場合もおなじ処理なので分岐の必要は
ないようです。まだ改良の余地あり?
だれも使わないと思うよ。
396デフォルトの名無しさん:03/01/30 14:42
TTreeViewでノードをドラッグしたとき、
ドラッグ中はマウスポインタの下のノードが
選択状態(ノードのTextが反転)しますが
これを選択状態にしないようにするにはどうしたら
よいのでしょうか?
>>394
SendKeysってね、実は漢字も送れるの。

delphiを起動するとformとunitが勝手に出てくるのですが起動時に
これらを出さないようにするにはどうすればいいのでしょうか?
399デフォルトの名無しさん:03/01/30 19:18
Delphi始めたばかりの者ですが、VBのStaticをつけて宣言したような静的ローカル
変数はどうすれば宣言できるのでしょうか?
>>398
コマンドラインオプションで
402399:03/01/30 19:48
>>401の内容を貼り付けて実行したのですが、
inc(intStatic); の行で、「代入できない左辺値です」というエラーが
出てしまいます。

Delphi6で試しているのですけど、どうしてエラーになるのでしょうか?
>>399
privateでいいじゃん
>>398さんの、疑問私も知りたいです。
>>400さんの、文字をヘルプで探したのですが、
わかりませんでした・・。
すいませんが教えてください。
405399:03/01/30 20:20
>>403
1つのイベントプロシージャからしか使用しないので、イベントプロシージャの中で
宣言したいのです。
>>402
「プロジェクトのオプション」->「コンパイラ」で「型付変数への代入」にチェックを入れるか、または{$J+}を指定する。

>>401
そんな仕様初めて聞いたぞ( ゚Д゚)ゴルァ

と思って調べたら、コンパイラオプション{$J+}を付ければ出来るみたいね。

408399:03/01/30 20:35
          ///
         ___
       ,∠==、ヽ `i'ー- .
      /    ヽ| 「`'ー、`ー、
       l     ミ| /   `ー、ヽ   できました。どうもありがとうございました。>>406
      j     R|イ ー-、.  ノ7┐
      `Vハハハ/ヽ.「~ ̄ `''ァf‐┘
.         `、 }ー-`、__..._/::l
          `|:::::::|ヽ/l:;:;:;|
.            |::::::::l:::::::::::::::l
.            l::::::::l:::::::::::::::l
           l:::::::::l::::::::::::::l
           l;::::::::{:::::::::::::l
              `iiiiiiiハiiiiiiiij´
          ∠-、レ'ヽ〃〕
409デフォルトの名無しさん:03/01/30 21:10
>>389-390

見苦しい。死ね。
>>409
同感。>>388には生きている価値がない。生まれて来ない方がよかったんじゃない?
>>409-410
同意と言いたいところだが、頭の弱い奴を叩いてもしょうがないんじゃないの?
>>409

禿同。

頭悪いやつに何言っても無駄かもしんないけど>>389のクソ関数なんか
イラネーんだよボケ。
  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ´∀`)<. Delモナーがどんな厨房疑問でもやさしく答えます。
 (    ) .| Delモナーは時に私であり、時には別の人。
 | | |  | 他のスレに書き込んで罵倒される前に、まずここで質問しよう。
 (__)_) | でも、罵倒するときゃするで〜 
        | だってプログラミングしか取り柄のない 使い捨てられる人間だから
  \_________________________
414398:03/01/30 23:07
どなたかわかりませんか?
>>414 最近MLか何かでも見たような話題だけど・・・
400が答えてるように起動オプションを使う
 delphi32 /np

とりあえずDelphiのヘルプでキーワード
 IDE,コマンドラインオプション
を読むとよろし
>398,414
Delphiを起動したときにフォームを「出さない」というのはどういう意味?
Delphiを起動したときに
・新規プロジェクトを開かない
・新規プロジェクトは開くけど、メインフォームを持っていない
・新規プロジェクトを開いて、メインフォームも持ってるけど、表示はさせない
この3つのどれ?

417デフォルトの名無しさん:03/01/30 23:28
いくつか質問

ttp://wblue.hp.infoseek.co.jp/prog/apptop.htm
見ながらグラフィックビューア作ってたんですよ。で、
・なんであんな簡単なプログラムが550KBもしてしまったのか。
 自分で作り終えたときそのでかさにびっくりしました。
・png対応させるためにはどうすればいいのか?
・アイコン設定したのにアイコン変わんねぇぞゴルァ

の三つなんですが、どうかよろしくお願いします。
>>347 >>353
変更前のコードでは最悪,writeln文は1回も実行されませんよ.
されるとしても j = 1 のときだけ.

『途中で整列する対象がソート済みの配列に変わってしまう』というのは
恐らくそう見えるだけで実行結果には影響していないと思われますが….

#そもそも整列の実行速度を調べるのに
 配列の中身をwritelnで表示する意味はないと思いますし,
 writelnの実行時間は配列の整列よりずっとかかりますから,
 速度調査になりません.
>>361 >>363
スピードボタンのActionプロパティに『アクション』を指定した場合,
その『アクション』があるアクションリストのImagesプロパティに
イメージリストが指定されていると,

スピードボタンのGlyphは,
そのイメージリストの中のイメージのうち
その『アクション』のImageIndexで指定された番号のもの
に変わるようですね.
420 :03/01/30 23:46
>>417
1.「実行時」←これにいろいろ付加して検索してみれ。
2.コンポーネント探してきてインストールするしか無いと思う。
3.コンパイルしたexeを違う場所へ移動させてみると…。
>>414
http://hp.vector.co.jp/authors/VA028375/index.html?page=Delphi_Setup.html

初期設定とかこの人のページが詳しくまとまってるから見たもれ
>>420
1,2.ども、ぐぐってきます。
3.カワッタ━━━━(゚∀゚)━━━━ッ!!

ありがとう。
423417:03/01/31 00:31
1.ウボァー、フォーム使うだけで200~300KBも増えるとは
フォームを使わず開発しろというのも渋いなぁ

2.png使うのはGLDPNGっとかってナイスなコンポーネントありました。
424 :03/01/31 00:37
まぁ、PNGで日本のってーと、それが一番メジャーな気がするなぁ。
でも著作権表示すれ!って縛りは何の意味があるんだろう?
ちょっとなぁ…。
425ケン玉城:03/01/31 00:40
昨日からはじめました。なかなかおもしろいですね
>>416
一番上です。
>>421
ありがとうございます。そこでしらべてみます。

おさわがせしました。
> ウボァー
FF2のラスボス?

>>417
でかいのがいやなら、WindowsAPI+SDKでやる方法があります。
しんどいけど今時勉強にもなりませんし、知ったかできるくらいですか利点は。

参考URL
http://halbow.cool.ne.jp/
>396
もう解決したかもしれないけど、サブクラス化して、
if (Message.Msg = TVM_SELECTITEM) and (Message.WParam = TVGN_DROPHILITE) then
begin
Message.LParam := 0;
end;
とかやれば出来るはず。
429デフォルトの名無しさん:03/01/31 12:08
これからDelphiを始めようと思うのですが、
どんなことをやったらよいでしょうか?
何か課題のようなものを出して頂けませんか?
>>429
課題:やりたいことをみつけること
メモ帳と同じ物を作ってみれ。
432429:03/01/31 13:25
>>430
確かにそうですね。。。
>>431
メモ帳にこれから挑戦してみます
433429:03/01/31 14:04
見た目はそれらしい物ができました。
いきなり質問なのですが、ファイル>新規を押した時に出るダイアログなのですが
はい・いいえ・キャンセルのあるものはどうやってだすのでしょうか?
Showmessageでは、うまくできそうになく新しいFormを作るのでしょうか?
>>433
messagedlg
435デフォルトの名無しさん:03/01/31 14:10
>>434

messagedlgはWindowキャプションを変更できないのが嫌だ。

MessageboxAがお奨め。
436429:03/01/31 14:51
レスありがとうございます。
MessageboxAを使用してうまくできました。
MessageboxAの hWnd という部分ですが、
よくわからないのでHandleと入れましたが
これは問題ないのでしょうか?
オーナー ウィンドウのハンドルと言われてもわからなかったもので、、、
>>436
正直、才能あると思う。
438429:03/01/31 14:58
>>437
Ctrl+スペースの候補からそれっぽいのを選んだので適当でして、、
才能なんてものはありません、、、
>>438
ウイングよ。ここは素直に照れておきな。
440429:03/01/31 15:54
>>439
ウイング??

メニューのファイルから作ってるのですが
ページ設定ダイアログは簡単に呼び出す方法はありますか?
やはりフォームから作るしかないのでしょうか?
>>436
適当なフォームを二個作って
Form1.HandleとForm2.Handleを入れれば違いが分かるよ。
442429:03/01/31 16:07
>>441
自分の頭じゃ違いが、わかりませんでした、、、
ごめんなさいです、、、
>>440
Dialogsにあるのはだめなのかいな?
444デフォルトの名無しさん:03/01/31 16:18
>>409-412
そんなに酷いコードとは思えんが?

まあ、誰かが使うことはないだろうし、>>388がアフォなのは否定しないが(w
445429:03/01/31 16:19
あれれ? ありますか?
こちらでは、
Open,Save,OpnePicture,SavePicture,Font
Color,Print,PrinterSetup,Find,Replace
以上しかないのですが、他にもあるのでしょうか?
446デフォルトの名無しさん:03/01/31 16:22
データベースアプリ組んでるんですが、
コンボボックスにのitemの内容をテーブルからもってくるには、
レコードを1つ1つ参照するしかないんでしょうか?
447446:03/01/31 16:22
>>446
訂正
×コンボボックスにのitemの内容を
○コンボボックスのitemの内容を
>>445
Print,PrinterSetup
>>447

なにがやりたいかよくわからないが、
ComboBoxのアイテムをDBから取得したいだけなら、
DBLookupComboBoxを使えば簡単だわな。

独自の実装をする場合は一個一個参照するしかない。
>>390
その程度でいちいちWSH使って
しかもよりによってDelスレで自慢気に発表するのがワラタ
粘着アフォ見苦しい (・∀・)カエレ!
本人ハケーン
453429:03/01/31 17:35
>>448
ありがとうございます。

またまた質問なのですが、FindDialogを呼び出して文字を入力させ
その文字を検索するところまでは何となくわかったのですが
その文字を反転状態?にさせたいのですが、どのようにすればよいのでしょうか?
>>453
Selstart Sellength
455429:03/01/31 17:44
>>454
素早い返事ありがとうございます。
早速試させて頂きます。
456417:03/01/31 20:41
>>427
まずソコが出てくるとは通ですな。

ありがとーです。
参考にさせていただきます。
プログラムが長くなってきたんですが、
ソースを複数のファイルに分けるということは出来るのでしょうか?
>>457
出来ます。uses
>>458
Delphiのヘルプでusesと検索したら、
「複数のユニットの参照と間接的なユニット参照」というよさそうなのが、
出てきたけど、よく使い方がわかりません。
誰か教えてくれませんか?
>>459
完成品の適当なソースをパクって使い方を研究するのが最短距離。
>>460
そうします。
>>459, >>461

大きなお世話かもしれないが、参照するUnitをInterfaceのusesに記述するか、
Implementationのusesに記述するか、はハマる原因になるので、注意!
(FAQの部類に入る)
463 :03/01/31 23:46
(´-`)。o ○ (「長い」ってどんくらいの長さなんだろう…?)
>>463
9月から3月くらい
コンポーネントのタブが消えてしまいました
一覧から参照してるので問題ないのですが、これはバグですか?
466デフォルトの名無しさん:03/02/01 14:52
イメージコンポーネント上に文字を表示したいのですけど、↓を実行すると
背景まで白くなってしまいます。
Image1.Canvas.TextOut(10, 10, 'abcde');

BrushのStyleを設定しても無理ですし、どうすれば白くならないように文字
だけを表示できるのでしょうか?
>>466
え〜?
468466:03/02/01 16:34
>>467
う〜ん
どうしてもイメージコンポーネントの背景が白くなってしまうんですよ・・・
>>468
え〜?
>>468
Image1のTransparent(プロパティ)をTrueにしる
471466:03/02/01 19:30
>>469->>470
う〜ん

procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Transparent := True;
Image1.Canvas.TextOut(10, 10, 'abcde');
end;

↑を実行しても、↓のようになってしまいます・・・
http://fanel7.ath.cx/cgi-bin/upbbs/img-box/img20030201192829.jpg

イメージコンポーネントに文字だけを表示したいのですが、背景が白くぅ・・・
>>471
不思議だよねえ、ETO_OPAQUEが勝手に付いちゃうのかなあ
473466:03/02/01 20:17
>>472
う〜ん
どうして白く塗りつぶされるんでしょうね・・・
分からないや・・・
ここはリアル厨房ばかりなのか?
TImage の仕組みもわからんのか?
めんどくさいからおまえなんかちょくせつびょうがしてしまえ

procedure TForm1.Button1Click(Sender: TObject);
begin
    with Form1.Canvas do
    begin
        brush.style:=bsClear;
        TextOut(10, 10, 'abcde');
    end;
end;
>>475
それって無理やりだね、、、
>>466
文字を表示するだけならラベルコンポでいいと思いますよ.
少なくともイメージコンポは文字を表示する用途には向いていません.


ちなみにイメージコンポの背景が白くなる理由:

画像が入っていないイメージコンポのキャンバスを操作すると
イメージコンポは自分と同じサイズのビットマップを作り
そのビットマップのキャンバスを操作して
そのビットマップを表示するのです.

で,作られたばかりのビットマップが全面真っ白だったので
全体が白く表示されたわけです.
大気との摩擦熱で・・・
((;゚Д゚)ガクガクブルブル
↑もちろん誤爆なわけだが
480組込もしまっせ:03/02/02 00:19
こんな関数作って
procedure TransparentTextOut(Cvs:TCanvas;x,y:Integer;s:string);
var b:TBitmap;
begin
b:=TBitmap.Create;
try
with b do begin
height:=Cvs.TextHeight(s);
width :=Cvs.TextWidth(s);
PixelFormat:=pf24bit;
Canvas.Font:=Cvs.Font;
Canvas.textout(0,0,s);
TransparentColor:=clWhite;
Transparent:=True;
end;
Cvs.Pen.color:=Cvs.Font.Color;
Cvs.Draw(x,y,b);
finally b.free;end;
end;

呼び出しは
TransparentTextOut(IMAGE1.CANVAS,10, 10, 'abcde');

これじゃダメ?
481ねこま:03/02/02 00:25
SetBkMode(Canvas.Handle, TRANSPARENT);
482デフォルトの名無しさん:03/02/02 00:33
IndyのIndy.Get()を使って、2ちゃんねるの掲示板
http://pc2.2ch.net/test/read.cgi/tech/1042421592/l50
などを読み取ろうとするとエラーになってしまいます。

Indy.ResponseTextで調べると「302 Found」と出てきます。
どうすればいいのでしょうか?ヽ(;´Д`)ノ
スレ違い。ちゃんと2chの仕様を調べてみなよ。
>>482
それだけじゃわかんないよ
NHKでもみておちけつ
>>484
古い映像だと思ったら最新の映像だったのか・・・
つーかおつけつるかよ!!
Delphi使い始めたばっかりの初心者なんですけど
まずどういうことをすればいいんでしょうか?
>>486
なにをしたいかによる。ねたか?
まずはNHKをみることがたいせつ
>>487
何のソフトを作るかはまだ決めてないんですが
練習を考えるとまずどういうプログラム組んでみるのが一番ですかね?

あといろんなスレでスペースシャトルの話題出てるなぁ・・・
>>488
プログラムの経験があるのかないのかによっても変わってくるだろ。
練習ならいろんなコンポーネントを並べて、それらを連携させてみるとか。
メモ帳とかならすぐできるぞ。
(´-`)。o ○ (そもそも「何から始めたら…」ってのが理解出来ない。
そんなことすら自分で決められないなら、やらなくてもいいと思う)
491デフォルトの名無しさん:03/02/02 08:53
>>490
正直、サンプルもなくプログラムを作ってしまう人は尊敬する。天才だと思う。
こんな自分でもパソコン操作をたずねてくる人がたくさんいる。
先日、パソコンもかなり慣れただろうっという友人が、
「ワードで貼り付けた複数の絵を一度にサイズ変更できるか?」と訊ねてきた。

自分はそんなことやったことがない。
とりあえず、やってみた。難なくできた。
で、思わず言ってしまった。

「まず、やってみろと・・・」
すると、「判らないから聞いてるんだよ。できれば聞かないよ」と答えてきた。

なるほど・・・
おれが、「モナーの *やさしい* Delphi質問スレ」で質問するのも
答えてくれる人がいるのも、これに近い関係なのかなぁっと。
>判らないから聞いてるんだよ
いるよね、努力の方法を知らない奴
なんかこのスレ思い出しますた。

本日の無料サポートは終了しましたPart9
http://pc2.2ch.net/test/read.cgi/win/1042457406/
>>490
なんとなくソフト作ってみたいと思ってプログラミング始めようとした香具師は
そんな感じになるのは仕方ないんじゃないのか?
漏れも前はそんなこと考えてたし。
>>494
>なんとなくソフト作ってみたい

なんとなくだろうがなんだろうが出来る奴は出来るし出来ない奴は出来ない。
情報は書籍にもインターネットにも腐るほどある。

本屋なんて親切だぞ。「プログラミング」ってコーナーがあるからな。
そこ以外には目的の本はないと明記してくれているわけだ。

要は情報の集め方と言う今のPCを使うに当たって必須の能力が欠如してるってこった。
>>486
作りたいという強い欲求がなければやめた方がよい。
てゆーか俺の代わりにソフト作ってくれ
そうだな、Janeに自動巡回機能でも組み込んでくれや。
もちろんサーバ負荷を考えてな。
>>495
都会に住んでる香具師はいいけど
田舎に住んでる18歳未満(っていうか免許ない香具師)だと
近くの本屋になんかちょっとしかプログラミング関係の本ないけどな。
Delphiに関係するのなんて1、2冊。。
まぁネットで調べればいいことだが・・
>>498
兵庫県の山奥に住んでますがね。

5年前の乏しい本環境+ネットなしでもここまで来れましたわ。


人間やる気だなと思う今日この頃。
500466:03/02/02 11:09
>>477
>画像が入っていないイメージコンポのキャンバスを操作すると
>イメージコンポは自分と同じサイズのビットマップを作り
>そのビットマップのキャンバスを操作して
>そのビットマップを表示するのです.
そういう事だったのですか。
どうもありがごうございました。
もしlが偶数ならってどうやって表現すればいいですか?
>>501
if(l mod 2 = 0)then
>>502
その手があったか〜!
どうもありがとうございました。
Odd関数という手もあったな
if Odd(l) then
×if Odd(l) then
○if not Odd(l) then
>>504-506さんもサンクス。
実はSchemeでiterative processで指数計算のプロcを書こうとしたらわからなかったので
Schemeよりは理解しているDelphiで書いてからの方が理解しやすいってことで
試しに書いてみたんですがエラーばっかりで…
まだまだだなぁ。もっと精進しなくちゃ。
Schemeをやろうという人がそんな初歩的なのを思いつかないというのが信じられない(w
if((l and $1) = 0)then

ってのはどうだ?
Odd以外の判定は素人にはお勧めできない。
>>510
Shemeにoddがあるのかと小一時間
>>511
ありますが何か?
http://www.math.grin.edu/~stone/scheme-web/odd-ques.html

Delphiに限って言えばmodは負数で誤動作するし、andは速度的に不利。素直にOdd使っとけ。
>>508
Schemeをやろうというか大学の講義で取ってるだけです。
単位ヤヴァイです。
>>513
がんばれよ、斎藤
趣味・遊びとしてのプログラミングなら
>>486 さんみたいなのもアリだと思いますけど.

私はブロック遊びの延長でプログラミングを始めましたが,
ブロック遊びを始めるのに『○○を作りたいから…』
などという目的などありませんから.
>>514
斎藤?
>>515
>>486

ようはきっかけが欲しいわけだろ

とりあえず

http://www.wakhok.ac.jp/~tetsuo/delphi/mokuji.html

上のモグラ叩きとインベーダーゲームでも作ってみろ

そのあとはWindows Powerとかの雑誌で紹介されてるソフトの中から
適当なものをダウソしてパクってみろ。同じものを作ろうとすると
それだけでスキルアップできるから
519デフォルトの名無しさん:03/02/02 16:14
VBスレのネタ質問で、総当りで偶数・奇数を判定云々・・・というを見たような気がする。
520デフォルトの名無しさん:03/02/02 17:17
いろいろ試している所ですが、質問です。
 @4個の数字を入力(1,2,3,4)
 Aその4個で2桁の数字を作る(12,13,14,23,24,34)
 B出力画面
   1. 12(出来た2桁) 2. 120(*10) 3. 88(100-12)
   1. 13(出来た2桁) 2. 130(*10) 3. 87(100-13)
   1. 14(出来た2桁) 2. 140(*10) 3. 86(100-14)
   1. 23(出来た2桁) 2. 230(*10) 3. 77(100-23)
   1. 24(出来た2桁) 2. 240(*10) 3. 76(100-24)
   1. 34(出来た2桁) 2. 340(*10) 3. 66(100-34)
 C各行の 1. 2桁の数字 部分だけ背景色を変える。

例えばこんな事をしてみたいのですが、
どうすれば良いでしょうか?
よろしくお願いします。

数字が4個ってのは固定なの?
>>520
aとb

a * 10 + bで望みの数字は得られるな。がんばれ。
523デフォルトの名無しさん:03/02/02 18:20
TMemoの行の左上のポイント
例えばTMemoの3行目の左上の
TopとLeftを求めるにはどうしたら
よいのでしょうか?
524デフォルトの名無しさん:03/02/02 22:57
applicationとformのShowHintプロパティをtrueにし、
FormとMenuItemのhintプロパティにそれぞれ文字列を設定したのですが、
MenuItemのほうのヒントが実行時に表示されません。
どんな原因が考えられるでしょうか。
仕様
うん、仕様だな。
>>523
行頭の座標が欲しいのかね
Font.Sizeから強引に割り出すとか
( ´∀`)なんとなく何に使うのか聞いてみたいな
528デフォルトの名無しさん:03/02/03 09:34
Delphi6j+up2で
何もコードを書かずにコンパイルして
それをMemProofで起動、終了するとなんかリークするのですが・・・

Virtual Memory 4096 ← 解放されない

もしかして俺の環境だけですか?

>>520
依存文字がキモイです
>>523
EM_POSFROMCHAR とかGetCaretPosなんかを使ってごりごりかなぁ?
531446:03/02/03 11:15
>>449
ありがとうございます。

ただ、DBctrlGridでDBLookupComboBoxのListSourceを設定しようとすると、
「この動作はサポートされていません」と出てしまいます。

DBctrlGridでDBLookupComboBoxはつかえないんでしょうか?

バージョンはDelphi6entです
532523:03/02/03 11:41
>>527
そうなのです。
Memoの左側にマージン作ってその空いたスペースに
IDEのしおりみたく目印となるマークをその行のマージンに描画したいのです。
他の方法とかありますかね?この方法しか思いつかなくって。。
>>530
GetCaretPosはこんな感じでやってみたらなんかうまくいきそうです。
EM_POSFROMCHARは使ったことがないのでまた調べて試してみます。
var
P: TPoint;
i: Integer; //行

with Memo do
begin
SelStart := SendMessage(Handle, EM_LINEINDEX, i, 0);
SetFocus;
GetCaretPos(P);
end;
533524:03/02/03 12:17
>>525-526
仕様ですか…
メニューアイテムの上にポインタが来たときにある処理をしたいのですが、
どんな方法でやったらいいでしょうか?
TActionのOnHintでは524と同様にうまくいかないので…
>>533

begin

If MenuItemNoUePointa = 1
Then
begin
処理;
end;

end;
535534:03/02/03 19:35
ウソピョーン!!
536デフォルトの名無しさん:03/02/03 21:19
slList : array[0..1] of TStringList
と宣言すると

([0〜...]がTStringListが初めからもってるところ
[0][1]が配列にしたところ)

slList[0][0〜...]
slList[1][0〜...]

になりますが、そうでなく

slList[0〜...][0]
slList[0〜...][1]

と使用したい場合、どのように宣言すればいいのですか?

説明しづらく、解りにくいと思いますがよろしくお願いします
外部から特定のコンポーネント上にドロップさせるためにはどうすればいいのですか?
ドラッグしてくるとフォーム全部に反応してしまうのを変えたいのですが。
>>536
言いたいことはわかるが無理
slList[0][0〜...] ってのは
slList[0].Strings[0〜...]の .Strings を省略してるだけだから
>>536
そうですか、残念。
slList[0]をソートするとslList[0][0〜...]とslList[1][0〜...]の内容の位置が
変わるため難儀してたのですが、動的配列を使ってなんとかしてみます
540デフォルトの名無しさん:03/02/03 22:33
TStringList.Objects[i]/AddObject()を使うとよいかも。
強引にTObject型にキャストするか、
TMyDataクラスを作ってラップするかして。
TListでええやn
          _______________
   ∧.,,∧   /
  ミ.,,゚Д゚彡< >>537さん、いろんな方法ありまフ、が
  ミ つ目(ミ . \
〜ミ,,O,,,,,,つ     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

 DragAcceptFiles(StatusBar1.Handle, True);
これしておいて、

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
 var Handled: Boolean);
begin
 case Msg.message of
  WM_DROPFILES:
  if Msg.hwnd = StatusBar1.Handle then
  begin
   ShowMessage('ドロップされてよし');
  end;
 end;
 Handled := False;
end;

こうしておくといいのではないでしょうか。
543デフォルトの名無しさん:03/02/03 23:04
文字を保存したいのですが、どうやるんですか?
TMemoのSaveToFile

はい次
>>544
アホか。

TStringListのSaveToFile
>>543にはTIniFileで十分
>>546
それはあまりにもかわいそうだ・・・。
548543:03/02/03 23:23
SaveDialogとかを使わなくてもできるんですか?
だめだこりゃ

やっぱ>>544>>546で我慢しとけ
>>549
必死だな。
( ゚Д゚) ポカーン
552524:03/02/03 23:34
自己解決しました。
ttp://www.users.gr.jp/ml/archive/delphi/24121.asp
これを参考にしてなんとかできそうです。
           _____________
   ∧,,∧    />>532さん
  ミ,,゚Д゚彡 < TEditorを使ってはどうでしょうか?
  ミ⊃  ミ⊃  \____________
 〜ミ  ミ
   ∪''∪
           _____________
   ∧,,∧    /
  ミ゚Д゚,,彡 < ってのは無しかしら?
 ⊂ミ ⊂ミ   \____________
 〜ミ  ミ
   ∪''∪

いまだに、DesignInfo系の問題を
引きずっているみたいで、ちょっと苗ますが・・・
やっぱカップラーメンメーカーの王様は日清だよな。
日清のカップメンはどれもうまい。
555デフォルトの名無しさん:03/02/04 00:38
personalじゃアプリケーションの配布はできないんですか?
556ねこま:03/02/04 00:39
>>553
>いまだに、DesignInfo系の問題を
>引きずっているみたいで、ちょっと苗ますが・・・

ぜんぜん引きずっていませんが……
>>555
お金を稼ごうとしなければいいんでないのけ
558 :03/02/04 00:41
>>555
バリバリ配布してます。
つーか、ちゃんと書いてあることくらい読め。
559555:03/02/04 00:58
どこに書いてありますか?
>>559
書イテアルトコロニ、書イテアリマス。
561555:03/02/04 01:06
書いてあるところとはどこですか?
僕たちの心の中に・・・
>>562
全く同じこと書こうとしてた(藁
そして大空にはヤツの笑顔が…。
ParamStrは512文字の制限があるそうですが、もっと長い値を渡したい場合、どうすればいいですか?
ファイルに書き出して読み込みでしょうか?
>>564
その通りでございます。
566デフォルトの名無しさん:03/02/04 01:25
>>564
そうですね。TStringListでテキストを読み書きすればいいのではないでしょうか?
pipe
わかりました。それで頑張ります。 (DLL化とかしたらいけますか?
569555:03/02/04 01:57
CDからインストールしたのじゃなくてもできるんですか?
できるよ。exeをzipにして配布しろ。
571555:03/02/04 02:04
InstallShield Express Custom Edition for Delphiってのをインストールしなきゃ
できないと書いてあるんですが、どこにも見当たらないので困ってます
Delphiマガジソの創刊号すごく読んでみたいんですけど持ってる人いますか?

恥を覚悟で
ttp://bbs.psnet.ne.jp/read.cgi/DELPHI/DEFAULT/ALL
のレス番24でおながいしてきますた。

同士がいたら援護きぼんです(;´Д`)

http://www.sysinternals.com/ntw2k/source/tcpview.shtml
ここにソースがのってるよん。
>>572
なんで創刊号を?どの記事が読みたいの?
これに限らず創刊号って、わけもなく興味惹かれない?
ない。
nai?
578デフォルトの名無しさん:03/02/04 15:58
type
TForm1 = class(TForm)


private
{ Private 宣言 }
arry:array of double;
public
{ Public 宣言 }
end;

で適当に
  setlength(arry,30000);
としたとして
フォームを閉じる時には、arryは勝手に開放されるのですか?
arry:=nil; とかしないとダメなのですか?
579デフォルトの名無しさん:03/02/04 16:46
TMemo中の出力文字は色変えられますか?
(指定した物だけ。)
>>578
 マニュアルに解放しなければならない、とは何処にも書かれてないので放ってもよいとおもうが、
 明示的に解放するなら、不要になった時点で(OnDestroy等)で、SetLenght(arry, 0, 0)とするべし。
 arry := nilとやってもエラーになる。

 なお、フォームを閉じる≠フォームを解放するではありませぬ。
 フォームを閉じると、暗黙的にフォームが解放されているのれす。
 そこを勘違いしていると、要らぬトラブルを起こす罠(特にMDI子フォームとか)

>>579
 できません。自分で書くしかない。
>>578
動的配列は、string型と同様に参照カウントで管理されている。
したがって、他の変数に代入してなければ、フォーム解放時に一緒に解放される。
582デフォルトの名無しさん:03/02/04 18:12
>>581
動的配列関連で、以前から疑問に思っていたことをついでに聞くんですけど、
UniqueStringの動的配列版ってないのですか?
Win32APIのGetOpenFileName関数のDelphi用サンプルコードって意外と少ないね。
VCLで用が足りちゃうから需要がないのかな?
VB用なら腐るほどあるんだけど。

ttp://halbow.cool.ne.jp/Chap18.html
>>583
後は読み替えるだけでしょう。
585581:03/02/04 22:55
>>582
procedure UniqueArray(var a:array);
begin
a:=Copy(a, 0, MaxInt);
end;

こんな感じでどうかね。
copy関数は新しい配列を生成するので、参照カウントは1になるはず。
586デフォルトの名無しさん:03/02/04 23:03
VBで

Label1.ZOrder 0

を実行するとLabel1が前面に表示されますが、Delphiではどうすればいいのでしょうか?
メソッドが見つかりません・・・

Projectファイルとunitファイルの違いもよく分からない者ですが
まず新規作成でアプリを選択するとフォームとユニットが作られ、
さらに新規作成でふたつめのフォームを作って
それぞれ名前をつけて保存し、最後にプロジェクトを保存したのですが
次にやるときにプロジェクトを開くとユニット1しか表示されません。
さらにそれを実行するとユニット1のフォームしか表示されないのですが
複数のユニットがある場合はいちいち全部開いていかないといけないのでしょうか?
また、実行時にフォーム2を表示させるにはどうしたらいいでしょうか?
>>586
Label1.BringToFront
>>587
フォーム2のVisibleプロパティをTrueにすれば、実行時に表示されます。
あと蛇足かもしれませんが、プロジェクトマネージャを表示させておくと
ユニットの表示が楽になると思います、
>>588

Form2のプロパティのVisibleをTrueに、Form1はそのままにして
プロジェクトを開いた状態でF9を押してもForm1しか表示されないんですが
ほかに何か原因はありますか?
>>589
プロジェクト→オプション→フォーム
で、自動生成されるフォームの方にForm2が入ってますか?
>>590

あ、でました〜。これってフォーム追加するたびにこの自動生成のところに
追加していかないとだめなんですかね?
>>591
ツール→環境オプション→設定→フォームデザイナ→自動生成とする。
でいけると思います。家ではこれがデフォでチェックされてました。
593586:03/02/04 23:34
>>588
できました!
ありがごうございました。
594532:03/02/05 01:11
>>553
Delフサギコ さんレスありがとです。
>>532のやり方でやったのですが
ややこしくなったので挫折しました。。
今のおいらには無理っぽいのでおとなしく
3000円払うことにします。
>>592

分かりました。ありがとうございます^^
はじめて作るプログラムは何ですか?
>>596
一般的にはHello Worldだな。
TForm1.Button1Click(Sender:TObject);
begin
  if MessageBox('逝ってヨシ!',mtWarning ,mbYesNo,0)=mrYes then
  begin
    ShowMessage('オマエモナー');
  end;
end;
TForm1.Button1Click(Sender:TObject);
begin
   Application.Terminate;
end;
TForm1.Button1Click(Sender:TObject);
begin
 ShowMessage('人知れず600ゲット');
end;
delphi=VB=C++
みたいな処理速度の実験結果をVBスレでみたんですが、こんなもんなんですか?
どういう所で差が出るもんなんでしょう?
>>601
>delphi=VB=C++
>どういう所で差が出るもんなんでしょう?
それじゃ差が出てねーじゃねーかよ(w
>>601
三種類とも遅いと叩かれ慣れているものだしなぁ
何の速さよ?というところに収束していくと思われ
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=63
これ?

VBスレの結果ではDelphiが誤差程度に遅かったけど、多分定数の型を取れば誤差程度には向上する筈。
ところで、gotoはいいとして、timeGetTimeを使っているのにtimeBeginPeriodは?(OSがXPなので)

…以前のC#対ネイティブ(Del/C++)対決の時自分が学んだ結論として、
ひとつの関数内で勝負する場合、差は出ない、ってのがあります。
//その上で実行時にCPU別にコードを吐けるC#は速い

Delphiは、変数のレジスタ割りつけが上手、関数呼出しが高速。
C++は、インライン関数が使える、(templateなどで)静的に計算できる部分が多い、その他。
しかし、この小さなコードでは、関数も呼んで無ければ、レジスタ割り当ての上手下手が出るほど変数も無い。
要するに最適化するような項目が無いので、差が出て無いと思われます。
>>602
20000 個の素数をエラトステネスのふるいにより算出する時間
がほぼ同じってあったんで。
計算速度はあんまりかわらないってことですよね。
じゃあどういう面で違いがあるんやろ、っておもったんです。
初心者の戯言ですんません。
606デフォルトの名無しさん:03/02/05 16:28
少し前にメモ帳の作り方で色々質問した者ですが、またお願いいたします。
今回はIP指定で接続してチャットをするものを作ってるのですが
サーバーとクライアント別に作っておりまして
サーバーへクライアントが複数接続している状態で
とあるクライアントのみにメッセージを送るという処理は
できるのでしょうか?
A−−クライアント−−B 
C−−−┘  └−−−D
こんな状態の時にA---Cのみ送信したいの様な感じです。
ごめんなさい クライアントじゃなくてサーバーです。
A−−サーバー−−B 
C−−−┘└−−−D
608 ◆thBybA46GM :03/02/05 18:06
TMozillaBrowser(Delphi6 Personal上でActiveX取り込みによる) について質問してもいいですか?
609586:03/02/05 19:03
すいません。最初の質問に関連してなんですけど、複数のユニットを作成して
それらをひとつのプロジェクトとして保存したのですが次にそれの続きを
つくろうとして「開く」→「目的のプロジェクトファイル」とやると、最初の
ひとつのメインフォームだかなんだかしか表示されず、いちいち全部開いていかないと
だめなんですけど一気に全部開くにはどうすればいいんでしょうか?
610587:03/02/05 19:06
すいません587でした。上のに加えてプロジェクトマネージャを
起動時に自動で表示させるにはどうしたらいいのでしょうか?
Delのヘルプに「デスクトップの配置」というキーワードを入れてみてから出直してこい。
612デフォルトの名無しさん:03/02/05 20:22
>>609
マクロ作ってみた。
【今開いているプロジェクト中の全てのユニットを開くエキスパート】
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999294620&res=58
表示->Open All Unitsで実行。
613Delphi1年生 ◆thBybA46GM :03/02/05 20:51
TMozillaBrowserについて質問です。

よくユーザー認証するサイトありますよね?ブラウザのダイアログボックスが出てきてユーザー名とか認証する。
FTPログインとかです。

ブラウザでダイアログを表示したのはいいのですが、どうやってユーザー認証情報をNavigateに渡すのかわかりません。
ですからユーザー認証ページには今移動できない状態です。

ご教授よろしくお願いします。
Delphi6 Personal+up2を使ってます。
614ta-na-ka:03/02/05 22:48
おすすめの本教えてください
>>614
ちばてつや「ハリスの旋風」はマジ最高。買っとけ。
すいません、
ShellListViewで特定の拡張子のファイルのみを
表示させる方法は無いでしょうか?
なんか、コンポーネントとかをたくさん使ってソフトを作ると、
サイズがどんどん大きくなりますよね。
サイズを小さくするコツってないですか?
VCLを使わないとかじゃなく。
ちょっとしたことでちょっとサイズが小さくなるとか。
>>616
無理だと思います…。
それらのコンポーネントはあくまでサンプルだと思ってください。
619ta-na-ka:03/02/06 01:19
class使うと何が便利なんですか?
>>617
http://pc2.2ch.net/test/read.cgi/tech/1009080085/l10

>>619
今ならキャッシュバック5000円!送料無料!!
621616:03/02/06 02:00
>>618
そうですか…ありがとうございます。

これだけのために3時間費やした…
>>621
けど、ソースついているんだから自分で書き換えたら?
623デフォルトの名無しさん:03/02/06 04:12
Form1の左上(100,100)、右下(200,200)を再描画したいので
以下の命令を実行したいのですけど、

InvalidateRect(Form1.Handle, @Rect(100, 100, 200, 200), True);

この命令が「変数が必要です」というコンパイルエラーになってしまって
実行できません。
どうすればいいのでしょうか?
TRect 型の変数 R を用意して、それに Rect(100, 100, 200, 200) の帰り値を
設定すれば?
一行に押し込む。って癖は早めに取ったほうが後々よいかと。
625623:03/02/06 05:47
>>624
できました。
直接指定してはだめって事ですね。

どうもありがとうございしました。
>>625
いや、ケースバイケース。
Rect って Classes.pas で定義されている関数だから、
@Rect ってやると、関数のポインタをとってきちゃうのよ。
ひとつのまとまった処理をユニットに書いて、
その関数をほかのユニットから呼び出そうとしてるんですが、
うまくいきません。
たとえば、Unit1からUnit2の関数を呼び出したいときはどうすればいいのでしょう?
628組込もしまっせ:03/02/06 08:45
>>627
 Demos\RichEdit を開いてみて
 そこの Reinit.pas のReinitializeForms手続き を Remain.pasは使ってる。

uses と ReinitializeForms の位置とかよくみて、それを真似てみたら?
629デフォルトの名無しさん:03/02/06 09:37
ネストした関数について質問です。

function F1(S1: string): string;

function F2: string;
begin
F2 := ''; //a行
Result{Result A} := Result{Result B} + 'K.';
end;

begin
Result := 'O.';
Result := F2;
end;

というルーチンを書くと、F1の戻り値は'K.'になりました。
a行を削除すると、F1の戻り値は'O.K.'になりました。
ここで、Result AとResult Bは、それぞれF1、F2何れの戻り値を表すのでしょうか?
私見では、Result AはF2とみなしてよいのでしょうが、
a行削除の前後でResult Bは入れ替わっているとしか考えられないような気がするのですが・・・。
どなたか、よろしくお願いします。

630組込もしまっせ:03/02/06 09:49
>>629
「初期化しないローカル変数は何が入っているか不定」
という事ではないのかな?
>>628
ありがとん。参考になりました。
ついでにもうひとつ。
Remainのuses節にReinitって書いてないような気がするんだけど、
何で関数呼び出せるの?
632組込もしまっせ:03/02/06 10:03
>>631
書いてあるよ。検索してみたら? uses はもう一箇所書ける場所があるから
>>632
すまんかった。もう1箇所に気づかなかった。
ってことはもう1箇所のuses節の位置がポイントなのかな。
でも、今テストプログラム書いてみたら、うまくいかない。
なんでだろう?
MidStr関数で文字列の中から切り出した1文字の文字コードをOrd関数で取得したいのですが、
下記のコードで、「互換性がない型」のコンパイルエラーでハネられます。

function Hoge(var strSource: String): Boolean;
var
  CharCode: Longint:
i: Integer
begin
  for i := 1 to Length(strSource) do begin
    //....(略)....
    CharCode := MidStr(strSource, i, 1); //← ここでコンパイルエラー。(-_-;
    //....(略)....
  end;
  //....(略)....
end;

右辺式をPCharとしてみましたが、おなじく、「互換性がない型」エラー。
Charだと、「キャストが正しくない」エラーとなりました。
正しい書き方(または代案)を教えてください。
>>634
慌てたので、書き間違えますた。m(_ _)m

function Hoge(var strSource: String): Boolean;
var
  CharCode: Longint;
  i: Integer;
begin
  for i := 1 to Length(strSource) do begin
    //....(略)....
    CharCode := Ord(MidStr(strSource, i, 1)); //← ここでコンパイルエラー。(-_-;
    //....(略)....
  end;
  //....(略)....
end;
>右辺式をPCharとしてみましたが、おなじく、「互換性がない型」エラー。
>Charだと、「キャストが正しくない」エラーとなりました。
分からないからといって手当たり次第に体当たりかますのは、愚か者のやること。
何が間違っているのか、理解しなきゃ。

代案。
CharCode := byte(strSource[i]);

byte へのキャストは適当。最初から LongInt にキャストしても良い。
何かの宿題かねぇ。

MidStr とかは VB 互換関数だから、意味を考えて別の表現を使ったほうが
物事が簡単になるぞよ。
>>634-635
ヴァカは一生VBだけやってろ。
function MidStr(const AText: string; const AStart, ACount: Integer): string;
begin
Result := Copy(WideString(AText), AStart, ACount);
end;
>>639
なんの解説/解決/説明にもなっていないような...
>>640
想像だけど、「MidStrの実装はこのようになっているのだから、適切な使い方を考えれ」
という意味かと思われ。
外部仕様とと内部実装は関係ないでしょ。
643デフォルトの名無しさん:03/02/06 13:59
TMemoのスクロールバー(縦)で、
改行でスクロールバーが出るとき、上寄せ・下寄せを変更する項目は何でしょうか?
644デフォルトの名無しさん:03/02/06 14:01
Delphi(自体)って何で作ってあるのでしょうか?
>>644 (どうせネタだろうけど)

VCL
>>645
だからって典型的なつられ方寸名よ。
機械語
HS(ry
650組込もしまっせ:03/02/06 14:13
>>633
インターフェース部 でヘルプをひいてみたら?

>>643
設問がよくわかりませんが、

そういう細かな操作をする場合は Windows エディット コントロール について調べるとよいです
Delphiを購入してるなら、CDROMにある日本語APIヘルプから エディット コントロールの概要が一番良いテキストです

もしかして、WM_VSCROLL かな?
651何度もホントスマソ:03/02/06 14:31
>>650
ヘルプ見たらUnit2ではエラー起きなくなった。
だけど、Unit1では相変わらずエラー。
Unit2で
procedure TForm1.MyProc;
ってなっているのをUnit1で
MyProc;
って呼び出すことは出来ないの?
DelphiはVBで作ってあります
VBはHSPでつくってあります。
>>652-653
つまんない。も少しヒネろうよ。
某の愛と野望で出来ている。
656デフォルトの名無しさん:03/02/06 15:03
イベントハンドラをわかりやすく説明せよ
>>654
つまんない。
>>656
非常用縄ばしごの説明書。

火事が起こったときそこに書いてある手順が実行される。
>651
例えば、
TForm1 = class(TForm)
public
  procedure Proc1;
  procedure Proc2;
end;
procedure Proc3;
TForm2 = class(TForm)
public
  procedure Proc4;
end;
var  Form1: TForm1;  Form2: TForm2;
としてある時、
procedure TForm1.Proc2;
begin
  Proc1;
  Proc3;
end;
とか
procedure TForm2.Proc4;
begin
  Form1.Proc1;
end;
はエラーじゃないけど、
procedure TForm2.Proc4;
begin
  Proc1;
end;
はエラー。
660デフォルトの名無しさん:03/02/06 16:11
何が駄目ですか?動きません

procedure TFormMain.ButtonGuClick(Sender: TObject);
var
Com : integer;
begin
Com := Random(3);
LabelYou.Caption := 'グー'
if Com = 0 then begin
LabelCom.Caption := 'グー'
end;
if Com = 1 then begin
LabelCom.Caption := 'チョキ'
end;
if Com = 2 then begin
LabelCom.Caption := 'パー'
end;
end;
>>660
で、どう動かないって?

エラーが出てるのにエラーメッセージ書かないのは間抜けです。
初心者相手にいきなりそれですか。
もういいです。
さようなら。
馬鹿が一人減ってなによりですね。
>>660

(1) マザーボードは装着されてますか?筐体を開けて確認してみてください。
(2) コンセントは抜けてませんか?
(3) 電源は入ってますか?
665デフォルトの名無しさん:03/02/06 16:28
次スレから
「鬼モナーの*スパルタ式*Delphi質問スレ」に変えよう

>  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
> ( ´∀`)<. Delモナーがどんな厨房疑問でもやさしく答えます。
> (    ) .| Delモナーは時に私であり、時には別の人。
> | | |  | 他のスレに書き込んで罵倒される前に、まずここで質問しよう。
> (__)_)  \_________________________

もしくは>>1も読めない馬鹿な回答者の排除を
Delphi使うやつは性格悪いやつが多いからVBの方がいいよ。
VBユーザーは、情報の出し惜しみもしないし。
667組込もしまっせ:03/02/06 16:34
>>651
 procedure TForm1.MyProc; はメソッドなので、オブジェクトインスタンスを指定してやる必要があります

単なる関数として扱えるようなら
 procedure MyProc;

とした方がいいでしょう

>>660
セミコロンを忘れていませんか?
Delphiは人によって作られています
>>668
つまんない
              ☆ チン     マチクタビレタ〜
                         マチクタビレタ〜
        ☆ チン  〃  Λ_Λ    / ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・) < オチまだ〜?
             \_/⊂ ⊂_ )   \______
           / ̄ ̄ ̄ ̄ ̄ ̄ /|
        | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
        |             |/
I Programmed Delphi1.0 ha ha aha....
>>659,667
サンクス。
まだなんか動かないけど、これ以上やってると
迷惑そうなんで、自分で色々調べてみます。

でも、質問する前にも調べたからこれ以上調べようがないけど・・・
VBもDelphiも韓国製ニダ!
673デフォルトの名無しさん:03/02/06 18:17
LabelのCaptionをIntegerとして(?)使うには、どうやるんですか?
674 :03/02/06 18:20
StrToInt
675デフォルトの名無しさん:03/02/06 18:43
ボタンを押すと1づつ加算されていくコード
Label1.Caption := StrToInt(Label1.Caption) + 1;
こんなかんじでやってみましたが互換が無いそうです
676 :03/02/06 18:53
ちがうってば

a := StrToInt(Label1.Caption):;
a := a+1;
Label1.Caption := IntToStr(a);

変数の型にきをつけれ
aをVariantにしたら
a := Label1.Caption:;
a := a+1;
Label1.Caption := a;
って書けないかな
678673,675:03/02/06 19:12
なるほど
最後にまたStrに戻してあげないとCaptionに入らないわけですか

そして、できました
ありがとうございました

Label1.Caption := IntToStr(StrToInt(Label1.Caption) + 1);

ニダ!
ボーランドにはCのコンパイラだかなんだかも無料で配布されてるみたいなんですが
それもDelphiみたいに開発環境がととのってるのでしょうか?
>>680
ネタなのか、マジ質問なのか、判断に迷うが・・・。
フリーなのは、BCC(Borland C++ Compiler)。
これには、IDEはなく、コマンドライン以外のUIはない。
BCB(Borland C++ Builder)にはIDEがありますが、こちらは
フリーではありません。価格体系はDelphiとおなじ。
(BCBにパーソナルエディションってあったっけ??)
>>681

マジ質です
>>621>>618>>616
  ∧,,∧
 ミ,,゚Д゚ミつ ヲイッ

//uses StrUtilsを追加
procedure TForm1.ShellListView1AddFolder(Sender: TObject;
AFolder: TShellFolder; var CanAdd: Boolean);
var
 Ext:string;
begin
 if AFolder.IsFolder then Exit;

 Ext := ExtractFileExt( AFolder.PathName );
 CanAdd := AnsiMatchText( Ext, ['.jpg', '.jpeg', '.bmp' ] );
end;

684デフォルトの名無しさん:03/02/06 21:44
destructor Destroy;override;のoverrideって何ですか?
685デフォルトの名無しさん:03/02/06 21:46
フォームにQueryを貼り付けて、エイリアスとかよく解らないので
onCreateにQuery.DatabaseName := ExtractFilePath(Application.Exename)
とかして、データベースファイルの位置を設定してあげたら
うまく動いたのですが、他のパソコンにExeファイルとdbfファイルをもってって動かすと
'Borland Database Engine の初期化に失敗しました'
と出てしまうのですが、他のパソコンで動かすにはどうすればよいのでしょうか?
>>684
VCLの基幹クラスであるTObjectのヘルプを読みませう
(TObjectではデストラクタが
 destructor Destroy; virtual;
 という仮想メソッドで宣言されているから云々)
>>685
>エイリアスとかよく解らないので
解るまで頑張る。
不親切な人ばかりですね。
689デフォルトの名無しさん:03/02/06 23:19
デルファイでプレステ2で動くゲームを作れますか?
690デフォルトの名無しさん:03/02/06 23:27
質問です。

エクスプローラーで、フォルダを開いた状態にしていると(空のフォルダ)、
RmDirでフォルダ削除に失敗しますよね。フォルダが開いた状態かどう
かを調べるにはどうすればいいでしょうか?

ファイルなら、FileOpenでfmOpenReadWriteでハンドルを取れない時、とい
ので判断できますが・・・。
RemoveDirectory使ったらいいやん。
692デフォルトの名無しさん:03/02/06 23:36
マウスが動いているか止まっているかを判定する技ありますかね?
大麻使ってマウスの位置を監視しろ
>>691
どうも。
RemoveDirectoryですか。フォルダのアクセスモードを一発で調べるAPI
か何かあるのかなあと思ってたけど、削除できるかできないかで判断する
しかないのですね。
>>693
タイマーでは計りきれないほど、短い間隔で動き止められたらだめじゃないですか
マウスが動いているとはどういうことか。
マウスが止まっているとはどういうことか。
>タイマーでは計りきれないほど、短い間隔で動き止められたらだめじゃないですか

ワロタヨ
強引にShowCursor(false)しちゃって、
「ちょっと待ってね♥」とか
出しておく(藁
マウスは常に止まっている
動いているように見えるのは残像がもたらす錯覚だ。
>>671
http://pc2.2ch.net/test/read.cgi/tech/1037146781/61
に答えられるようになれば、自然に理解できてると思うよ。
usesにユニットを追加した場合、
完成バイナリはそのユニットの中身全部を含むのでしょうか?
例えばmathユニットのMAX関数のみ使った場合、
mathユニット全部含まれてしまうのでしょうか?
>>696
俺も>>699と同じデジタル思考の人間ですが、
その答えは、マウスを動かす手が動いているかどうかだと思います
たとえ、残像でマウスが動いているように見えるだけでも手は動いてるんです
俺は、その手が動いてるかどうかを判定したいんです
703629:03/02/07 00:19
>>630
返事遅くなってすみません。

>「初期化しないローカル変数は何が入っているか不定」
・・・と言うことは、Result BもF2の戻り値で、
F1からF2が呼び出されたときに、
F2にF1が勝手に代入されてしまった、ということでしょうか?
俺もよく知らないですが、前教えてもらったことには

  ∧,,∧  >>701さん
 ミ,,゚Д゚彡 そういうことはないそうです
 ミつS(ミ スマートリンクってって
       Max関数のみの分がバイナリになるらしい

でしが。実際は

VCLではユニット内にinitializationが
結構使われているらしく、
これに書いた文はusesするだけで
起動時に実行されるため、
usesするだけで結構な量のコードが
リンクされて、気が付かずusesしてると
Exeのサイズはびっくりな大きさになります。
705ゼノン:03/02/07 00:40
>>702
手が動くなんて原理的に不可能だ。
>>705
それは、どういうことですか?!手は動かない・・?
707デフォルトの名無しさん:03/02/07 01:06
入力カーソルについての質問なのですが、
Form1上に複数のTEdit(例えばEdit1, Edit2, Edit3)が存在するとして、
Edit1〜3と入力をしていき、その値である処理をしたいとします。
Edit1〜3の入力が完了したら、TButtonの処理により必要な処理がされ、入力データはクリアさせます。
このとき、入力カーソル(点滅する「T」のこと)をEdit1に再度移したいのですが、
TButtonの中で指定できる項目や、または他の方法で実現できる処理がありますでしょうか?
Form1.ActiveControl
709知ったかぶり:03/02/07 01:09
SetFocus?
反応も薄くなってきたので、マウス監視する技を伝授してください!
711707:03/02/07 01:22
>>708
おお、できました!
しかも即レスでホント助かりました。
ありがとうございました。m(_ _)m
712デフォルトの名無しさん:03/02/07 01:34
Delphi マウス監視」で検索したら↓の1つしかなくて
ttp://www.fastwave.gr.jp/diarysrv/nekomi/200209.html
なんか中みたらわけのわからない煽りが入ってるんです
しかも、内容が関係ないんです
713デフォルトの名無しさん:03/02/07 01:37
'やさしいDelモナー'は居ないのですか?;
OnMouseMoveで き ま り だ!
716 :03/02/07 01:42
モナーが優しいわけではない
>>712
OnMouseMove?調べてみるかな
>>715
10こくらいみたけど、マウス監視の話からずれたものが多かった
Delphiで〜を監視するには、みたいな
つか何がしたいんだよ
OnMouseMove イベントは,ユーザーがマウスポインタをコントロール上に置いてマウスポインタを移動したときに発生します。

ウィンドウの外で動かしてる部分は駄目なようですね・・・
デスクトップ全体を動いてるマウスを監視したいんです
最強のプログラマーの方お願いします
GetMousePos
マウスが動かしてる時だけに音を流したいんです
ピピピピピピピとか
だからタイマー使えと何度言わせれば(略
「GetMousePos Delphi」で検索したら、なんと1個だけ。しかも難解
デルファイの情報少なすぎる!!
しかも、GetMousePosをヘルプで検索しても出てこない!
どこまで情報を少なくしているんだボーランドは
GetMousePosって、検索した範囲では個人の実装しか出てきてないような。
APIだとGetCursorPosですし。
そもそも何がしたい?
手(マウス)が動いているかどうかなら、カメラを付けて画像処理だ。
マウス「カーソル」ならAPIでもOnMouseMoveでもOK。
そろそろやめような。
ひとつひとつ吟味してからにしろ。
荒らしと変わらなくなるぞ。
タイマーだっつーの。
エサをあたえないでください
タイマー貼り付けますた(・∀・)
この情報社会といわれる現代で、
こんなに情報が乏しいなんて信じられません・・・
みなさんは、どうやって最強の座に上り詰めたんですか?
わかりました。じゃあ、小一時間タイマーを使い倒してきます
>>728
トリビアの泉を毎週みる
>>728
ちゃんと探せばいくらでも情報があるんだけど
「GetMousePos」みたいな関数名を自分で思い込んでしまうと
思ったような情報は引き出せないよね

検索方法をいろいろ工夫してみるといい結果が得られると思うよ
もっとも、ヘルプの上手な調べ方を覚えるのが先だけど
OnMouseMoveの使い方(コーディング)が分からなかったので
GetCursorPosでインターバル1でマウスの動作を判定するようにしました
お父さんお母さん、ボキはなんとかデルファイを続けられそうです
タイマーで監視?
まぁ、Del厨の頭じゃCPU食う方法しか思いつかないでしょうな(藁
734 :03/02/07 04:46
テポ テポヽ(゚∀゚)人(・д・)ノドン ドン!

テポヽ(・д・)人(゚∀゚)ノドン ドン!
Delphi6 Personalで使えるフリーのFTPコンポーネントみたいなのって無いですか?
>>735
Indy

タイマー使って前のポインタの座標と現在のポインタの座標が違ってたら動いてるってことdふぁ路ヴァワカ
>>736
ありがとうございます。早速インストールして使



…Delphi歴1週間の俺ごときが手を出すべきではなかった……
要するに、お前はまだCaptionの値を1ずつ増やしたりしてろってことですね。
>>738
何が問題だったんだろう?
英語が読めない?インストールに失敗?使い方が分からない?

匿名掲示板なんだから、グダグダ言わずに声を出す!
>>738
ftpで接続してファイルをgetするくらいの動作だったら
適当にそれらしい関数呼べばできるべ
つーか、FFFTPとかあるんだから、今更車輪の再作成しなくても・・・。
正直、ffftpはインターフェースがイマイチなので
ffftpのソースを使わせてもらってカコイイのができればそれに越したことはない
743デフォルトの名無しさん:03/02/07 11:46
力を貸して下さい
TListを継承したFormListを作成しています
動作そのものはうまくいくのですが
メモリの解放がうまくいきません
解放の仕方が何か悪いのでしょうか?
type
TTestForm = class of TForm;
pFormInfo = ^TFormInfo;
TFormInfo = record
Form: TTestForm;
FormNo: Integer;
FormName: String;
FncButton: array[TFuncBtn] of String;
end;

TFormList = class(TList)
private
StringList: TStringList;
FListSeparator: String;
public
constructor Create;
destructor Destroy; override;
procedure FormAdd(TestForm: TTestForm; No: Word; Name: String);
end;
744デフォルトの名無しさん:03/02/07 11:46
implementation

destructor TFormList.Destroy;
var
i:integer;
begin
for i:=0 to Count - 1 do
Dispose(Items[i]);
inherited;
end;

procedure TFormList.FormAdd(TestForm: TTestForm; No: Word; Name: String);
begin
New(FormInfo);
FormInfo^.Form := TestForm;
FormInfo^.FormNo := No;
FormInfo^.FormName := Name;
Add(FormInfo);
end;
745デフォルトの名無しさん:03/02/07 11:50
使い方は
FormList := TFormList.Create;
FormList.FormAdd(TForm2, 1, 'Form2');
FormList.FormAdd(TForm3, 2, 'Form3');
FormList.FormAdd(TForm4, 3, 'Form4');
などどし
FormList.FormOpenのような形で
それぞれを開くような感じです
しかし
FormList.FormAdd
を使い、それを使用したアプリを終了すると
必ずリークします
(FreeAndNil(FormList)を使用しているFormの
OnFormDestroyで実行しています)
皆さんよろしくお願いします
>>力を貸して下さい
いやです。 ML に投げろ。
たぶん、サーバーの MTU の値が異常なんだとおもう。
748組込もしまっせ:03/02/07 12:58
>>743
Dispose は Newした FormInfoしか解放しません
Items[i].Formを解放してないと思いますよ。

ただ、このリストで解放してよいかどうかわかりません。
コンポーネントの場合親が解放すべきです
FormList.FormOpen で 親を誰にしていますか?
親が FormListであるなら、FormListが解放すべきです
749デフォルトの名無しさん:03/02/07 13:23
>>748さん
返信ありがとうございます

FormList.FormOpenで親は
----------------------
 //pFormはItems[i]のAddress
 //pForm: pFormInfo;
 //OpenForm: TForm;
 OpenForm := pForm.Form.Create(Application);
 OpenForm.Show;
----------------------
としてますので、そのアプリ?..なのかな?
なので
destructor TFormList.Destroy;
var
i:integer;
begin
for i:=0 to Count - 1 do
begin
Dispose(Items[i]);
FreeAndNil(pFormInfo(Items[i]).Form);
end;
inherited;
end;
としてみましたがEAccessViolationの例外が生成されてしまいました
FreeAndNilをDisposeに置き換えましたが
うまくいきませんでした

根本的に何か間違っているのかな?
750組込もしまっせ:03/02/07 13:52
>>749
素直な感想言うと、メタメタです。・・・・気に障ったらゴメン。

1、Applicationを親にしてるのなら、そもそも解放忘れではなく、解放されているかどうか確認する 
  作業のタイミングの問題であったと思います。

2、FormInfoではフォームのインスタンスを管理していない筈です
 FormInfo.Formはメタクラスでしょう? ですから
  FreeAndNil(pFormInfo(Items[i]).Form);  
 これは出来ませんし、そもそも、Items[i] をDispostの後に触っちゃいけません。

3、もしFormList でフォームのインスタンスを管理するなら
  つまり FormOpenで pForm.Form.Create(Self); としたなら

 FormList.Components を使います。・・・というか自動的に解放されますから
 普通は特に何かする必要もないのですが


751デフォルトの名無しさん:03/02/07 14:12
>>750さん
返信ありがとうございます

率直な感想、もっと欲しいぐらいありがたいです(^_^;

返信の内容、何となく理解できたのですが
3番のFormList.Componentsでインスタンスを管理する
というところが今ひとつ理解できませんでした

VCLのソースでも何でもよいので
インスタンスの管理の参考になるものは
何か無いものでしょうか?
752組込もしまっせ:03/02/07 14:42
フォームの親を Applicationにして、かつFormListでも管理したい場合は
 フォームの FreeNotification で 自分を登録します。
 すると、そのフォームが別のタイミングで解放される場合に知る事が可能になります。


もし自分なら、TFormInfo  を record ではなくTComponentList 継承のコンポーネントにします
//FormInfo: TFormInfo;
 //OpenForm: TForm;
 OpenForm := FormInfo.Form.Create(Application);
FormInfo.Add(OpenForm); //作成したフォームをリストに追加しておく
 OpenForm.FreeNotification( FormInfo. ) ; //解放される時の連絡先に登録しておく

そして、FormInfo の Notification には フォームが解放される時に opRemoveが呼ばれるので
FormInfo.Remove で削除しておきます
また、FormInfoを解放する直前に OwnsObjects:=True にします

753749:03/02/07 15:21
>>752さん
返信ありがとうございます

TComponentList ...早速ヘルプで見てみました
、、なんだか便利なクラスのような気がする・・・
ぐらいしかわかりませんでした
これからじっくり勉強してみようと思います

FormInfo.FormOpenの記述、メモリの管理は
ぼんやりわかりかけてきたのですが
TForminfoをRecordからTComponentListに変更すると
FormList.Addの部分>>744はどうなるのでしょう?

FormListの目的は各目的毎に作成しているFormを
アプリのメインフォームのOnCreate時に追加(FormList.Addを使って)
その後、Open,Closeは設定したFormNoのFormName起動したいと思っています

物わかりが悪くて、すみません
754組込もしまっせ:03/02/07 15:37
よく判らないけどこうかな

procedure TFormList.FormAdd(TestForm: TTestForm; No: Word; Name: String);
var FormInfo:TFormInfo;
begin
FormInfo:= TFormInfo.Create(self); //ホントはこれで Self.Components[] に登録されるのだけど
Add(FormInfo); //一応 TListだから・・・・でもこのクラスもTComponentList継承の方が少し楽かもね

FormInfo.Form := TestForm; //でもFormという名前はあんまり良くないよ メタクラスがわかるような名前がいい
FormInfo.FormNo := No;
FormInfo.FormName := Name; //複数のインスタンスが作られるなら、Nameに何の意味があるの?
end;
755組込もしまっせ:03/02/07 16:07
まてよ。
FormNo は必要かな?
識別出来る番号ならIndex でいいんじゃないの?

FormNameも必要かな?
クラスを渡してるんだから FormNameはClassName で代用すべきじゃないの?

となると、 TFormList. は TClassListでいいんじゃないの?
DLL作ってフックしろって
ていうかお前らどうやってDelphi勉強したの?
俺の探し方が悪いんだか知らんが、基礎的なことが書いてある
ホームページしか見つけられなかったんだが・・・
なんかいい勉強法教えてくれよ。
758749:03/02/07 16:48
返信ありがとうございます

FormNo, FormNameをForm毎に指定する意味は
Open(FormName);等で指定するためです
(普通はForm.Captionを入れようと思っています)
FormNoはIndexではなくそのFormの固有の番号を想定しています

また、OpenFormは二つ以上のインスタンス作成は許さず
もし既にインスタンスが作成済の場合はそのFormを一番手前に
もってくるような形にしようとしています

もしかしたら端から見た場合、おかしな事をしているのかも・・・

すみません、ごちゃごちゃ書いてしまって・・・
759749:03/02/07 16:50
>>757さん
私は本屋にあるDelphiの本という本を買うか
立ち読みしまくっています。

そばに誰も教えてくれる人もいないので
そのような勉強法になっています(^_^;
>757
まず何を作るかを決めて、
簡単そうな機能から、ヘルプとメーリングリストの過去ログ、Googleで調べながら、実装していく。
最初はヘルプの内容もよく理解出来なかったりして苦労するけど、
だんだん解ってくる。
ずっと前にDLL作ってフックしたことがある。
したら、自分のウィンドウの外は正常にマウスを捕まえられたが、
自分のウィンドウ内がうまくいかなかった記憶がある。
なんでだったかなぁ。
とにかくそのときは見えないウィンドウ作って誤魔化したと思う。
>>759-760
なるほろ。参考になりました。
763組込もしまっせ:03/02/07 18:22
>>758
 2つ以上のインスタンス作成を許さなく、かつApplicationを親にするのなら
1、FormNoは自分のフォームのベースメンバーにする
2、FormNameはフォーム.Name を使う


procedure MyFormOpen(TForms: TTestForm; No: Word; Name: String);  という感じの手続きを作り
 既にフォームがあるかどうかは
 FindComponent で 検索出来ますし、
 if Application.Components[i] as TForms then ・・・みたいに検索しても早いですから
既に作成されていれば、それを、でなければ 新規作成

という方法が一番スマートで簡単かと思います。
764749:03/02/07 19:01
>>763
返信ありがとうございます

早速返信していただいた内容で
試してみたいと思います
(また困った事があったら書き込んでしまうかも?)

長い間、本当にありがとうございました
765組込もしまっせ:03/02/07 20:48
関数作ってみた。 こんな感じ

function MyFormOpenClose(TForms:TFormClass;fname:string;IsClose:boolean=false):TForm;
var i:Integer;
var Form:TForm;
begin
Result:=nil ;
for i:=0 to Application.ComponentCount-1 do
if Application.Components[i] is TForms then
with Application.Components[i] as TForms do
if name=fname then
begin
  if IsClose then begin Free;Result:=nil;exit;end
  else begin Show;SetFocus;exit;end;
end;
if IsClose then exit;
  Application.CreateForm(TForms,Form);
  Result:=Form;
  Form.Name:=fname;
  Form.Show;
  Form.SetFocus;
end;
766デフォルトの名無しさん:03/02/07 21:08
データベースに接続したら_QSQL〜.dbfってのが作成されて、終了時に消え去るんだけど
これの作成場所を変えれる?
767デフォルトの名無しさん:03/02/07 21:21
最近ここでは
『返信ありがとうございます』
が流行ってるのですか?
TreeViewで、たとえばレベル0の2番目のノードを1発で求める関数ってありますかね。
>>768
function get2bannme(tree :TTreeview) :TTreeItem;
begin
Result := tree.Items[1];
end;
770デフォルトの名無しさん:03/02/07 22:48
スクロールボックスコンポーネントで、スクロールボックスコンポーネント内の
再描画を処理するのはどうすればいいのでしょうか?
スクロールボックスコンポーネントには、ONPaintイベントが無いのでで
きないのです。
どうしても実現したいです。
>>769
ひとつ上の兄弟ノードが、子ノードを持っていた場合だめじゃない?
>>771
ツリー構造じゃないの?
あっ!すまん
>>772-3 君たち間違え(w 漫才か?
>>767
返信っつーとまるでメールみたいだニャ

「返信!」
「ライダー返信!」
「返信V3!」
>>774
間違い。なら納得もするが。
WindowsXPだとMS-Officeがとても速く起動すると思います。
XP、入れて良かったです。
なぜDelphiのコードエディタは上方向検索がないのでしょう。
とても不便に感じます。
ある
F3やShift+F3での上下切り替えがないということでした。
781デフォルトの名無しさん:03/02/08 05:26
Delphi情報少ないね
これが7まで続くとは某国も頑張ってきたね
>>781
確かに日本語の情報は少ない。
この業界、海の向こうで流行ると無批判で使う人が多いからねぇ
そろそろ終わりだね(w
>>770
PaintBoxでも貼り付けてみたらどうだろう。
でなければ、TScrollBoxからコンポーネントを派生させて
WM_PAINTのメッセージハンドラを作るとか。
デルファイ終了sage
786デフォルトの名無しさん:03/02/08 16:22
デルピーage
何気に質問が…

ツールバーのカスタマイズを有効にして、ツールバーをダブルクリックすると、設定ウインドウが出るじゃないですか。
それをアプリケーション側から出すにはどうすればいいのですかね?
実数型のデータのバイナリ保存のプログラムを作ってみたのですが、
button1を押すとエラーが出てうまくできません。
簡単なことなのかもしれませんが、どこが悪いのかわからないので
どなたかご教授ねがえませんでしょうか?

procedure TForm1.Button1Click(Sender: TObject);
var
fs: TFileStream;
i: integer;
begin
fs := TFileStream.Create('D:\test.txt', fmCreate);

i := StrToInt(Edit1.Text);
fs.WriteBuffer(Pointer(i)^, SizeOf(i));
fs.Free;
end;
Win2000のPC3台にDel7を入れました。
Del7を起動させるとファイルとか編集とかの横に(F)(E)とか出ません。
ALTを押すと出ます。
おれだけ?
>>788
エラーが出ますと良いながらエラーメッセージを書かない。
エラーメッセージを読んでないってこった。それで解決出来る訳がない。
791770:03/02/08 20:10
>>784
WndProcでやればできたのですが、
例えば、

procedure MouseEnter(var Msg: TMessage); message cm_mouseEnter;

みたいにすると、マウスカーソルがコンポーネント上に来た時に呼ばれますが、
onPaintの時はどう書けばいいのでしょうか?
messageのあとにcm_OnPaintと記述しても、未定義の識別子となってしまいます。
>>791
OnmouseEnterの時はOn省いたくせに・・・
>>790
プログラムみればストリームエラーということぐらい簡単にわかると思うが。

>>788
WriteBufferの第1引数は、実体を与えればよい。
つまり、
WriteBuffer(i, SizeOf(i));
794770:03/02/08 21:15
On抜きましたけど、

procedure Paint(var Msg: TMessage); message cm_Paint;

でもエラーになるんです。
OnPaintの時はどうすればいいのでしょうかね。
>>793
初心者潰しか。おめでてぇな。
ぅぉ!
誰も返信してくれてない…
WM_PAINTじゃないの?
「F9キーが押されたとき」、処理を実行するにはどうすればいいでしょうか?
OnKeydownイベントで引数Keyの値がVK_F9だったときに実行する。
800770:03/02/08 22:48
WM_PAINTでできました。
実験サンプルですが、

type
TForm1 = class(TForm)
Label1: TLabel;
private
{ Private 宣言 }
procedure Paint(var Msg: TMessage); message WM_PAINT;
public
{ Public 宣言 }
end;

procedure TForm1.Paint(var Msg: TMessage);
begin
Label1.Caption := 'abcde';
Inherited; ●
end;

を実行した時、●のところにあるInheritedを記述しないと、ラベルが表示されないのですが、
このInheritedの既定の処理の中で、フォーム上に存在するコンポーネントが描画されている
という事ですか?
解釈としてはあっているでしょうかね?

また、このようにしてメッセージを処理した時は、オリジナルの記述の後に必ずデフォルトの
処理が必要という事でしょうか?
801デフォルトの名無しさん:03/02/08 22:50
i:=Random(3);
case i of
0:Label1.Caption:='0';
1:Label1.Caption:='1';
2:Label1.Caption:='2';
ってすると最初は必ず0,0,2,0って順番で出るんだけど
もっとランダムにできないの?
>>801
ヘルプに書いてあるよ。
>>800
WM_PAINT受け取った時にはBeginPaintとEndPaint呼ばなくちゃいけないから…
っつーか、ちゃんと描画しようと思ったらBeginPaintとEndPaintの間で
描画処理を呼ぶような仕組みにしないといけないし。
「Delphi owner draw scrollbox」あたりでぐぐるとスクロールボックスの
サンプルが出てくるから、それ参考にしてみたら。
804デフォルトの名無しさん:03/02/08 23:01
>>801
Randomは、プログラムを開始して実行しても、毎回同じ順序で値を
返してきます。

これをランダムにするにはRandomizeを使います。
Randomを実行する前に一度だけ実行するだけで有効になりますので
(何個も記述しても同じです)、FormのOnCreateイベントに記述すれば良いでしょう。
805デフォルトの名無しさん:03/02/08 23:03
>>803
できました!ありがとうございます
806801:03/02/08 23:06
>>802
でした。>>804もありがとう
807801:03/02/08 23:10
THint=class(TObject)
Fi:Integer;
procedure show;
end;
ってクラス定義して
procedure THint.show;
begin
Fi:=Random(3);
case Fi of
0:Label1.Caption:='グー';
1:Label1.Caption:='チョキ';
2:Label1.Caption:='パー';
end;
end;
って書いたんですけど、Label1.Caption1に出てこないのは
なんでですかね?
Label1ってのはForm1.Label1とかじゃないの?
THintのメソッド定義中ではForm1が必要
809デフォルトの名無しさん:03/02/08 23:34
>>807
例えば、Form1上のラベルに表示したい時、ラベルはForm1というものの
中に存在します。
THintクラスはTForm1クラスとは別なので、ラベルがどこに存在するかと
いう事を指定しなければいけません。

例えば、自分と同じ学級(4組とします)の「山田さん」の事を伝えるには、
先生に「山田さん」といえば分かりますが、他の学級の山田さんの事を伝
えるには、「6組の山田さん」みたいに何組なのかを言わなければ分から
ないのと同じです。

Form1.Label1.Caption のForm1が何組かなのかに当たります。

procedure THint.show;
begin
  Fi:=Random(3);
  case Fi of
    0: Form1.Label1.Caption:='グー';
    1: Form1.Label1.Caption:='チョキ';
    2: Form1.Label1.Caption:='パー';
  end;
end;
付け足しです。
ここでの学級がクラスの事にあたります。
>>809
ちゃんとスコープ当たりから叩き込んでやるのが親心だと思うけど。
812801:03/02/09 01:04
>>808
できました!
813801:03/02/09 01:28
0と2と4という数字をランダムに選びたいんですが、どうやるんですか?
Delphi6 Personalを使っているんですが、
あるコンポーネントを使ってコンパイルすると
「 'DesignIntf.dcu' が見つかりません」とエラーが返されます。

いろいろ調べてみたのですが、今まで「DsgnIntf」であったものが
Delphi6になってDesignIntfとDesignEditorsになったらしいのです。

つーことはDesignIntfのファイルは存在するはずなので検索してみたところ
何故かDocフォルダの中にDesignIntf.intなるものが見つかりました。
で、ヤケクソになってこのファイル名をDesignIntf.dcuとかDesignIntf.pasなどとして
Libの中に放り込んだら、今度はDesignIntfの中でusesされてる
「DesignMenus」が見つからないと。

ListViewの使い方程度に四苦八苦してる漏れにはもう限界です。
誰かDesignIntfだかDesignMenusだかのありかを教えて頂けませんか?
>>815
ヘルプをくまなく読めば書いてあるよ。
>>816
「DesignIntf」でテキスト検索したんですが、
「del6vcl.hlp」というヘルプにしか書かれていませんでした。
また、この内容も「DesignIntf」の使い方のみでした。
DesignMenusについては書かれてもないし…

ひょっとして知らん間に消したのか……?
再インストールしたら直らんかなぁ。
818デフォルトの名無しさん:03/02/09 02:28
TQueryでSQL.Text := 'SELECT DISTINCT 'サンプル' FROM test';
のようにtestファイルからサンプル項目内の情報を重複なしで取得、というのは
TTableを使った場合どのようにすれば同様にできますか?
>817
ちょい設計が悪いコンポーネントかも。
プロジェクト→オプション→パッケージ→実行時パッケージを使うにチェックして、designideを追加。
>>819
うぉっ!いけた!
すげぇです。感動です。あなたが神に見えます。

マジでありがとうございました。
821マルチはカス:03/02/09 04:43
最近、「Delphi Q & A 掲示板」とここに分かりやすいマルチしてる
ヤツがいる。
マルチはカスのやることだと思い知れ。
俺カスだからマルチって良いんですね♪
823800:03/02/09 06:02
>>803
参考にします。
ありがとうございます。
初心者ですが、このプログラムでbutton1を押して文字列のバイナリを読み込んでも、
Edit1にはなぜか空白が代入されてしまいます。
どうすれば文字列が代入されるのか教えてください。お願いします。
自分ではReadBufferの中身が悪いような気がするんですけど、
中身がどのように悪いのか分かりません。

procedure TForm1.Button2Click(Sender: TObject);
var
fs: TFileStream;
s: string;
begin
fs := TFileStream.Create('D:\test.txt', fmOpenRead);
try
fs.ReadBuffer(Pointer(s)^, Length(s));
Edit1.Text := s;
finally
fs.Free;
end;
end;
>>824
>Length(s)

= 0

そのおかげで、幸か不幸か例外が出ずに動いている。

Setlengthするかcharの配列使った方がいいよ。
826デフォルトの名無しさん:03/02/09 13:46
コード上でそのプログラムを終了させる方法をお願いします
827デフォルトの名無しさん:03/02/09 14:44
Delphi使ってると笑われるんだけどどうしたらいい?
Application.Terminate.
>>827
一緒に笑う。
830デフォルトの名無しさん:03/02/09 14:52
(*´д`*)アハァ…
>>827
Schemeに乗り換えれ。
すばらしい世界が待ってるぞ!
832デフォルトの名無しさん:03/02/09 15:13

ttp://www.delphipages.com/tips/thread.cfm?ID=148
ここに載っている方法で、RichEditのテキストのURLを青字で表示して、
クリックしたら開けるようになったんですが、
RichEditがあるフォーム(単一です)のFormStyleをfsStayOnTopにして、
常に前面に表示するようにすると、機能しなくなってしまいます。
その後、前面表示をやめても戻りません。
URLをクリックして開けるようにする方法を教えてください。
>>827
TTSに乗り換えれ。
すばらしく笑われるぞ!
834デフォルトの名無しさん:03/02/09 15:48
TWebBrowserの画面に表示されているページにあるボタンを
自動的にクリックさせるにはどうしたらいいんですか?
>>833
TTSはそこらの半端な人間には使いこなせません。
836デフォルトの名無しさん:03/02/09 16:05
====================================

http://www5b.biglobe.ne.jp/~ryo-kyo/osu.html

====================================
>>827
ひまわりに(ry
>834
INPUTオブジェクトのClick()メソッドあたりを使う。
839デフォルトの名無しさん:03/02/09 18:04
>>838
もうちょっと具体的に教えてください。。。
840デフォルトの名無しさん:03/02/09 18:26
起動時の処理でlistViewのBeginUpdate,EndUpdateをするとリストのコラムが
何故か表示されてません。コラムをクリックすると元に戻るのですが
ほかに良い方法はないでしょうか?
>839
var doc: OleVariant;
doc := WebBrowser1.DefaultInterface.Document;
とかすればdocにdocumentオブジェクトが入るので、
あとはDHTMLのリファレンスとかを参考にやります。
例えばid='okButton'のボタンを押したければ、
doc.all('okButton').Click();
「モナーの *やさしい* Delphi質問スレ」

とはいっても講義がやさしいのであって、モナーが優しいわけではない。
モナー本人は辛辣。
TStaticLabelはTLabelと違って、AutoSize=Trueでテキストをキャプションに読み込んでも
改行されずにすべて一行で表示されてしまいます。
複数行表示にするにはどうすればいいのでしょうか?
Delって、VC++みたいに、マクロ機能のような物は存在するんですか?
あるなら、どうやってやるんでしょうか。

>>844
まぁ、結局コンパイラでインライン展開されたりしたら大して変わらなさそうだけどね。
>>844
IFDEF関連だけありますよ。
IFOPTでコンパイラオプションで分岐できるし、IFでconstの値も使えるし。
キーボードマクロとか、スクリプトマクロのことだったりして。
そんなのありえないだろ。
VCのマクロ機能って普通にそれ連想したけどな。
ま、どっちでもいいけど。
ここって質問スレじゃねぇよな?
教えてくんでスマソ
>832教えてください
852デフォルトの名無しさん:03/02/10 00:59
メモコンポーネントなどの中の、点滅しているキャレットの座標を取得す
る事はできるでしょうか?
できるとすればどうすればいいのでしょうか?
>852
SelStartじゃ駄目?
854デフォルトの名無しさん:03/02/10 01:18
>>853
う〜ん

直接、メモの左上から(50、100)みたいに座標を取得できたらいいのですけど。
どうせWordとかExcelのキャレットの座標は取得できないし。
xy := Memo1.Perform(EM_POSFROMCHAR, Memo1.SelStart, 0);
x := LOWORD(xy);
y := HIWORD(xy);
ただ、文末にキャレットがあるとおかしくなるね。
GetCaretPosでええやん
858854:03/02/10 03:34
すいません。

GetCaretPosはProtectedなので呼び出せないのですが、どうすればいいのでしょうか?
プロテクトを外す。
860815:03/02/10 11:43
すいません、815でDesignIntfについて質問した者です。>>819で答えていただいた通り
「プロジェクト→オプション→パッケージ→実行時パッケージを使うにチェックして、designideを追加。」
でコンパイルは出来るのですが、これを実行時パッケージを使わずにコンパイルすることは
出来ないのでしょうか?設計時パッケージの方にdesignide.dcpを追加してコンパイルしてみても
「DesignIntf.pas(17): ファイル'DesignMenus.dcu' が見つかりません」と出てコンパイルできません。

また、「実行時パッケージを使う」でコンパイルした場合、実行ファイルの他に
どういったファイルが必要になるのでしょうか?
>>842
質問内容が「やさしい」のかと思ってたんだけど?
>851
RichEditに再度テキストを流しこむか(再設定のコマンドあるかも知れないけど)、

FormStyleをいじるのではなく
SetWindowPos(Form1.Handle, HWND_TOPMOST, 0,0,0,0,
SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);
で前面にもってくるのが素直な反応でよろしいかなと。
>>861
それはないだろ(藁
>862
ありがとうございます。
帰ってから試してみます。
>>860
>これを実行時パッケージを使わずにコンパイルすることは出来ないのでしょうか?
残念ながら、コンポーネントがdesignideの機能を要求する限り無理です。
(というか、本来設計時のみのdesignideを要求するコンポーネントが腐ってる)

>また、「実行時パッケージを使う」でコンパイルした場合、実行ファイルの他に
*.bpl。具体的にどれとどれかは、該当オプションのすぐ下にvcl;rtl;…って並んでる。

以下、完璧余談ながら、
VC++は実行時パッケージ相当のものがOSにはいってんですよねー卑怯ですよねー
>>854
TRichEditのメソッドGetCaretPos()じゃなくて、WindowsAPIのGetCaretPos()を呼べ。
定義は"Windows.pas"の中。


867デフォルトの名無しさん:03/02/10 22:53
>>841
そのidとは何ですか?
HTMLに記述されているinputのnameを指定しても出来ませんでした。
868832:03/02/10 23:59
>862
教えていただいた方法で、前面に表示しても大丈夫になりました。

また、
Form1.BorderStyle := bsNone;
とした場合も同じ現象になってしまうので、これも回避したいのですが、
SetWindowLong()で、変えてみたのですが、
Form1だけ、いちおうスタイルが変わるようなのですが、
その上に配置してある、メニューとRichEditの位置、サイズがそのままなのと、
再描画?が行われず、機能はしないものの、キャプションバーが見た目上残っています。
メニューを操作すると、メニューの位置は、フォームの一番上(元々キャプションバーだったところ)に
移動するようなのですが、元々のメニューの表示が残ってしまいました。
同じような回避方法を教えていただけないでしょうか。



Del6でレジストリを書き換えるツールを作ろうとしています。

具体的には、LAN接続の設定(IPアドレス、
サブネットマスク、デフォルトゲートウェイ)を切り
替えたいのですが、いじろうと思っているレジス
トリの ネットワークアダプタID(キーの{}で囲
まれたところ)が複数ある場合があるわけです。
(昔のNICの残骸が残ってる?)
自分のPCの場合なら、今使ってるNIC名が
わかっているので、何とかなるわけですが、
人様に使っていただくツールの場合、NICが
わからないので、{アダプタID}が複数ある場
合はどこをいじればよいかわからないのです。
何かいい判別方法ないでしょうか?

説明が下手で済みませんがよろしくお願いします。
スレ違いだか板違い
コマンドラインツールであったような気もするけど
>>869
>どこをいじれば

該当箇所。としか言いようがないけれど。
872デフォルトの名無しさん:03/02/11 01:24
 その手のソフトに「あいぷっち」 ってのがあるな。VBだけど。
873デフォルトの名無しさん:03/02/11 01:55
>>869

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=628&lngWId=7

Delで VBのWMIを使う、、、らしい。 参考まで。
Delphiって、exeの中にシリアルNoを暗号化したりして、開発者個人を
特定する事が可能な情報が入っていますか?
はいってねねーよ
876デフォルトの名無しさん:03/02/11 04:50
今、エクセルVBAでテキストファイルのデータとCSVのデータをエクセルにコピー
して計算式を書き込んでいって、結果をエクセルに出しています。
1つのテキストデータの計算結果を出すのに30秒から1分くらいかかります
4000のテキストファイルのデータを読み込むとすると膨大な時間がかかります

Delphiを使って計算をさせようと思うのですが、時間にしてどの程度かかるもの
なのか分かりません。VBAとDelphiの両方で同じような計算式を使うとどのくらいの
違いがありますか?

>>876 Excelを使う限りは同じ
CSVのデータをDelphi側で読んで加工して結果だけExeclに書き出せばよいのなら多少はマシになるかな
単純な数式の計算速度は、最大でVBの三倍ぐらい出せる…とどこかで読んだ…けど、
(ただしVBでもネイティブコンパイルして手動で関数展開して、ってやればCやDelと遜色無い)、
読んだ感じファイル入出力やオートメーションが大部分を占めているように思えますので
それだとディスクアクセス速度やExcel側の速度のほうに影響されて、何でやっても差は出ないかも。

Excel呼ばずに全部自前でやるというなら別ですけどね。
>>865
解答ありがとうございます。
rtl60.bplやvcl60.bplのように必要そうなファイルの容量が
大きすぎるので、結局このコンポーネントを使うのは諦めました。

はぁ、また1から作り直しか……
880デフォルトの名無しさん:03/02/11 17:38
DateTimeToUnix関数がどうやっても使えないんですけど、
どうすれば使えるようになりますか?
881デフォルトの名無しさん:03/02/11 17:42
>>879
なんてコンポーネント?差し支えなければ教えて。
fmOpenReadだけよりfmOpenRead or fmShareDenyNoneの方が良いと思います。
883棒スレより:03/02/11 22:54
あのう、TEditorって有名なシェアウェアあるじゃないですか?
これから派生したらしいTEditorEXというコンポーネントがあるんですが、
こちらはどうやらフリーなようなんですよね。

これって・・・みんなこっちの方使っちゃいません?
それともなんか本家にはない欠点見たいなものがあるんでしょうか?
TEditorEXのreadme.txtより
>TEditorEx では、本田勝彦氏の2つのコンポーネントとbmonkey氏の
>コンポーネントが必要です。
>・・・
>TEditorExはフリーウェアですが、TEditorはシェアウェアです。
>使用するにあたって本田勝彦氏への送金をお願いします。
ああ!なるほど。

チッ
886 :03/02/11 23:55
>>884
なんか意味不明だね。勘違いして「完全なフリー」と思っちゃった人は
大変だ。いるかどうか知らんけど。
887デフォルトの名無しさん:03/02/12 00:27
作成したフォームを、常に他の特定アプリケーションの前面にだけ表示する方法を教えてください

他のアプリケーションに張り付いたような感じにしたいのです

>>887
MDIにするかそいつを親として登録するか。
889デフォルトの名無しさん:03/02/12 00:54
http://www.phoenix-c.or.jp/~taki/library/delphi/GLDPNG3.html#License

なんかGPLなプログラムには使っちゃいけないらしくて、
あまり自由じゃなさそうです。
他に、PNGファイルを扱うモジュールで
GPLまたはBSDライセンスで、Delphiから使えて
使いやすいものはありませんか?
>>887
procedure TForm2.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.WndParent:=FindWindow('IEFrame', nil);
end;
>>890はIEの前に表示する例ね。
>BSDライセンスで、Delphiから使えて
ほらよ
http://www.phoenix-c.or.jp/~taki/library/delphi/GLDPNG3.html#License

糞スレの削除依頼出しとけよ
>888
ありがとうございます。
こんなんで、なんか動きました。あってますか?


SetWindowPos(TargetWnd,Form1.Handle,0,0,0,0,
SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);


894889:03/02/12 01:01
モジュール自体がBSD, GPLなものはないでしょうか?
895893:03/02/12 01:04
>893
うまくいったと思ったら、だめだった...
全然無関係なアプリをアクティブにしてから、
張り付いたアプリをアクティブにしようとしたときに、うまくいかないようです
他の部分が悪さしてる気もするので、今、見ていますが、
何か間違ってるようでしたら教えていただけるようお願いします。
896893:03/02/12 01:08
やっぱり、根本的に違ってる気がしてきました
正解お願いしますです
>>894
GPLなCのコード拾ってきてBCCでビルドしてリンクしたら。
死ね。でいい気がする。
899デフォルトの名無しさん:03/02/12 09:03
>890,819
すいません、昨晩見落としていました。
帰宅してから試したいと思います。

このCreateParams()というのは、見たところFormの生成時にでも、
処理されるのかと思うのですが、Form作成時には、
ターゲットのウィンドウが存在しないような場合には問題ありますか?
900!
901デフォルトの名無しさん:03/02/12 14:10
今、
var d:Int64;

の時、dがInteger(32bit)の範囲であるかどうかのチェックをどうすればよいでしょう?

色々試して
if ( d>=int64(-2147483647-1))
and ( d<=int64(2147483647)) then ・・・処理・・・;

と書けばD5では巧く動くようですが・・・ int64の定数って書けないんですよね?
>dがInteger(32bit)の範囲であるかどうかのチェック
if (d >= Low(Integer)) and (d <= High(Integer)) then
if d = Integer(d) then

>int64の定数って書けないんですよね?
const c = Int64(0);
const c: Int64 = 0;
>>902
ありがとうございました。
898って、以前から馬鹿だのアフォだの言ってるやつだろ
こなきゃいいじゃねーか
なんでここでえらそうにしてんだ?ばかか
>>904
>ばかか

これがなきゃ至極まっとうな発言だったんだけどな・・・。
906デフォルトの名無しさん:03/02/13 03:39
TWebBrowserコンポーネントのNavigateメソッドで、HTMLファイルを読み込むと、
一回目はおかしな表示になってしまいます。
同じファイルをもう一回Navigateメソッドで表示すると、今度は正しく表示されます。
何が原因なのでしょうか?
>>906
エンコードの問題では?
908デフォルトの名無しさん:03/02/13 05:30
>>907
直りました。
HTMLファイルの記述ミスでした。
Delphiではステータスバーのパネルのサイズを、そのパネルに表示されている
文字のサイズに合わせて変更するプロパティはないのでしょうか?
ちょっと見当たりません。

VB6.0のPanelオブジェクトのsbrContentsに相当するものです。
910デフォルトの名無しさん:03/02/13 10:57
質問があります。

ShellExecute(0, nil, PChar('notepad.exe'), PChar(path), nil, SW_NORMAL)

を実行すると、毎回新しいメモ帳が開いてpathで示されるファイルの内容が表示
されてしまいますが、これを、メモ帳がすでに開いている時は、新しいファイル
を指定してShellExecuteを実行しても、すでに起動しているメモ帳にファイルの
内容を表示するにはどうすればいいのでしょうか?(要するに、1つしかメモ帳が
起動してほしくありません)
>>910
メモ帳がその機能をサポートしていないなら起動しているメモ帳を検索して操作する。
912910:03/02/13 12:06
メモ帳を表示の件のプログラムは別にできなくても差し支えないのですが、例えばHTML
ファイルを表示する時にはどうすればいいのでしょうか?
Button1Click → Button2Click → Button3Click の順番でクリックした時、Button1Clickで
Text1.htmを表示した時に起動したIEで、Button2ClickのText2.htm、Button3ClickのText3.htm
を表示したいのです。

>メモ帳がその機能をサポートしていないなら起動しているメモ帳を検索して操作する。
初心者なので全然やり方が分かりませんので、誰か実現するコードを載せてください。
お願いします。

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShellExecute(0, nil, PChar('C:\Program Files\Internet Explorer\IEXPLORE.EXE'),
    PChar('D:\Text1.htm'), nil, SW_NORMAL);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  ShellExecute(0, nil, PChar('C:\Program Files\Internet Explorer\IEXPLORE.EXE'),  
    PChar('D:\Text2.htm'), nil, SW_NORMAL);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  ShellExecute(0, nil, PChar('C:\Program Files\Internet Explorer\IEXPLORE.EXE'),
    PChar('D:\Text3.htm'), nil, SW_NORMAL);
end;
>>912
ShellExecuteじゃ無くて、shdocvw.pas(shdocvw_tlb.pas)のTInternetExplorer等を使う。
914910:03/02/13 13:07
>ShellExecuteじゃ無くて、shdocvw.pas(shdocvw_tlb.pas)のTInternetExplorer等を使う。
すいません。何の事かまったく意味が分かりません。

お手数ですが、>>912で書き込んでいる事を実現するチュートリアルみたいな手順を誰か教
えてくれないでしょうか?
>>910
きみ、いいね。実にナイスだよ。
KeyPressでもKeyDownでもVK_CONVERTが捕まえられません。
どうすればいいですか?
起動直前にメモ帳検索して全部killしてからshellexecuteしろ
Delphiでユニコードをそのまま(SJIS変換しないで)表示する方法教えてください。
>>918
MassageBoxM();
920デフォルトの名無しさん:03/02/14 14:41
EXEファイルを作成した後に、Form上のEditの位置をドラッグで移動する事はできるのでしょうか?
位置情報は外部にtxtファイルか何かで保存すればいいかなとは思うのですが、
こういったことはできるでしょうか?
>>920
出来るよ。 Top,Leftに代入するだけでしょ。

というか、質問する前に やってみたらいい部類だと思うのだが?
918>>
大ジョうブ、メモ帳はひとつの例を示しているよ。
923デフォルトの名無しさん:03/02/14 16:22
>>921
ドラッグで各コンポーネントの移動は可能ということでしょうか?
各コンポーネントのTopとLeftをテキスト保存というのはできました。
オプションでできるとかっていうことでしょうか。。?
デルポイはもうう終わりなんでしょうか?
>>924
君の中ではとっくに終わってます。だからもうこのスレにくるな。
>>923
当然コード書かないとダメだよ

var DragEdit:TEdit=nil;
procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (x=0) or (y=0) then begin
Cursor := crDrag;
DragEdit:= Sender as TEdit;
SetCapture(DragEdit.Handle);
end;
end;

procedure TForm1.Edit1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if DragEdit= Sender then begin
DragEdit.Top :=DragEdit.Top +Y;
DragEdit.Left:=DragEdit.Left +X;
end;

end;

procedure TForm1.Edit1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if DragEdit= Sender then begin
Cursor := crDefault;
ReleaseCapture;
DragEdit:=nil;
end;
end;
927デフォルトの名無しさん:03/02/14 17:09
>>926
すごいっすね ソースコード意味不明ですが、感謝です
>>927
こういう物は理解してから使えよ。
>>928
取り合えずそのままコピペしてもイベントハンドらはバインドされないわけで。
すぐに泣きながら帰ってくると思われ。
var DragEdit:TEdit=nil; //どのEditがドラッグしてるかどうか
procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if (x=0) or (y=0) then begin //上か左のをクリックした事をドラッグの開始にする
Cursor := crDrag; //ドラッグ中のカーソルを変更する
DragEdit:= Sender as TEdit; //どれを動かすか覚えておく
SetCapture(DragEdit.Handle); //マウスのキャプチャを始める
end;
end;

procedure TForm1.Edit1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if DragEdit= Sender then begin //このEditがドラッグ中なら
DragEdit.Top :=DragEdit.Top +Y; //無理やり動かす
DragEdit.Left:=DragEdit.Left +X;
end;

end;

procedure TForm1.Edit1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if DragEdit= Sender then begin //このEditがドラッグ中ならドラッグ終了
Cursor := crDefault; //カーソルをデフォルトに戻す
ReleaseCapture; //マウスキャプチャを終らせる
DragEdit:=nil;
end;
end;
931デフォルトの名無しさん:03/02/14 17:21
>>928-930
すごい助言感謝です。
解読しつつ使わせて頂きます。
で、いつまで?どるぱい?
>>932
マウスキャプチャって何ですか?
Windousの昨日のようですが。
教えていただけるとありがたいです。
>>932 さん ほらガンバッテ
  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ´∀`)< . Delモナーがどんな厨房疑問でもやさしく答えます。
 (    )  |. Delモナーは時に私であり、時には別の人。
 | | |  |. 他のスレに書き込んで罵倒される前に、ヘルプ、過去ログ見ろ!
 (__)_)  \_________________________

>>928
実行してみた。感動した。
ばってんD7up1+Win2Ksp3だとMouseDown時にカーソルが変わらんとです。
Cursor:=crDrag;の次にUpdate;と入れてみたけどだめでしたとばい。
どうやればよかとですか?どうか教えてつかぁさい。
  ∧,,∧
 ミ,,゚Д゚彡
 ミつ日(ミ
DelマガにGrabhandle
コンポーネントがありますよ。

THUMBHDL
って名前の圧縮ファイルだったような。
TBitmapにはキーカラーを透過させてコピーする機能が無いようですが、やはり派生クラスを作らなくてはいけないのでしょうか?



('A`)ノ マンドクセ
940938:03/02/15 10:37
>>939
感謝です。


‥‥‥‥なんか、激しくオーバースペックですが(((゚Д゚;)))‥‥
もしかすると、
Cursor := crDrag; //ドラッグ中のカーソルを変更する
DragEdit:= Sender as TEdit; //どれを動かすか覚えておく

DragEdit:= Sender as TEdit; //どれを動かすか覚えておく
DragEdit.Cursor := crDrag; //ドラッグ中のカーソルを変更する

にするほうがいいんじゃないのかな?
942デフォルトの名無しさん:03/02/15 14:04
ポインタが何で必要なのかわかりません。教えてください
Delphiでは基本的にあまり使われないけど用途としては
バイナリファイルやパケットの読み書きのようにバッファを操作するときにつかうかな。
>>942
800Kgの石像を隣町の友人にさわらせたいとしよう。

方法は二つある。

一つは友人宅まで800Kgの石像を運ぶ
二つ目は自分の住所を教えて友人に来てもらう。

どちらが楽ちんかは言わなくてもわかってもらえるだろうと思う。
でかいデータをコピーして渡すくらいならアドレス教えて直接見てもらった方が早いと。

値渡しと参照渡しを例としたポインタのお話。

他にもメリットは多いよ。取りあえず勉強してみれば?

正直、

var
p :Pint;
i :integer;
begin
i := 1;
p := @i;
ShowMessageFmt('%d',[p^]);

i := 5;
ShowMessageFmt('%d',[p^]);
end;

こんな感じのコードでポインタ教えてる気になってる糞本が多くて憤慨。
こんなもんで絶対メリットわかんねぇよと。 
>>944
それはCの話で、Delphiでは値渡し・参照渡しとポインタは無関係。
constかvarを付けるのが正解。
>>945
わかってるけど。ポインタのメリットではあるでしょ。
>>946
参照ベースのOOPLでその説明は適切ではないでしょ。
ここはDelスレなんだから一般的な説明されても混乱するだけ。
じゃ、リンクリストはどうだろ? ポインタ無かったら作れないぞ

  ・・・・って思ったが全部クラスにしろと言われそうだな
>>947
参照ベースのOOPLですからね。ポインタを使うのはアホなのです。
DelphiでのポインタはWindowsAPIとの互換のためだけに残ってます。

だからKylixにはポインタがありません。
自己レスになってるし・・・>>948あてです。
了解
まあ、アホやらバカやらになりたい時もあるさ そういう時に使うものって結論で
kylixにはポインタがないage
953デフォルトの名無しさん:03/02/15 14:59
ポインタがなくても、多態と配列があれば...
>>953
さて、それでIOポートをどうやって叩くのか教えちくり。と。
absolete使え(藁
>>954
DeviceIoControlとかだろ。
>>942
アクセス(読み書き)が速いから。
ポインタを使わなくても同じことが出来るけど、遅くなることが多し。
特に変数パラメータとか動的配列とかは遅い。
>>957
>アクセス(読み書き)が速いから。

var
p :PInt;
i :Integer;
begin
Inc(i);
Inc(p^);

この例に限らず速度は一緒だと思うけれど。


>ポインタを使わなくても同じことが出来るけど

ポインタなしで削除、追加の自由自在なリストを作ってください。

>特に変数パラメータとか動的配列とかは遅い。
上で散々もめてるのに・・・
いいかげん参照とポインタをごっちゃにして考えるのやめろよな。
参照使ってリストを作れないは氏ね。
960942:03/02/15 17:07
わかりやすいソースを教えて欲しいのですが…。本を見ると944や
958みたいなのしか載ってなくて理解できません
>>960
ならば、必要が無いということだ。
>>960
有用性に疑問があるの? それとももっと前の段階?

リンクリストは、まあクラス使えで済まされちゃったらそれまでだから、
文字列を扱う時、特にメモリ上にデータがある場合の
パーサを作る場合は、ポインタを使って参照するのが便利ってのはどう?

パーサは、【現在の文字】 が該当するなら処理して【次の文字にする】ってのが基本になるんだけど
ポインタを使わないと 最初に現在の文字が無いから、一文字だけ先読みする必要があるわけ
コレは慣れないと最初苦痛だし、理屈が判らないと読み辛いもんがあるけど、

ポインタを使えば、ポインタで文字を参照すればいいから、先読みの必要がなく頭の中もスッキリ

ってな話じゃ判らないかな・・・・
963690:03/02/15 17:57
以前、フォルダ削除のことを質問した者です。

複数のフォルダがあって、すべてを削除できるか調べて、すべてを削除でき
るならRemoveDirectoryを実行したいのです。エクスプローラで開かれていて
削除できないなどの理由で、一つでも削除できないフォルダがあれば、一つ
も削除したくないのです。
何かいい方法はないでしょうか?
>>963
ロック
>>963
難しそうな課題だね。 
データベースみたいにトランザクションかけてロールバック出来たらいいのにね。

フォルダ名を変更してみて全部可能なら削除かな・・・・
でも別のアプリがアクセスする可能性は捨てきれないし、ゴミ箱にコピーしてから削除しかないかな
>>960
function GetFileTime(const path: string; pCreationTime, pLastAccessTime, pLastWriteTime: PFileTime): Boolean;
function GetFileTime(const path: string; var CreationTime, LastAccessTime, LastWriteTime: TFileTime): Boolean;
どっちが使いやすい?

>>963
FILE_FLAG_BACKUP_SEMANTICSフラグを設定してWindows.CreateFileを呼び出すことでディレクトリハンドルを取得できるから、
それでフォルダが削除可能かどうかを調べるというのは?
967966:03/02/15 18:39
補足:上のGetFileTimeは情報が不要な場合はパラメータにnilを指定できるとします(参照:Windows.GetFileTime)。
968963:03/02/15 19:02
レスありがとう。

今のところ、一度削除するフォルダとファイルをコピーしておいて、エラーにぶ
つかったら、それまでに削除したフォルダとファイルを戻す、という風にしてい
ます。だけどこの方法は、とてもスマートな方法とは言えない。

>>965
他のアプリが意図的に使うことはないので、リネーム案も使えそうです。リネー
ムするのはちょっと抵抗があるけど、名前が変更されている時間はほんの一瞬
ですしね。

>>966
その方法で可能がどうか、今から実験してみます。
親ディレクトリのリネームを試せば一回で済むけどね。
いずれにしても調べ終わって実際に削除する間に何かあってら検出できないよ。
970デフォルトの名無しさん:03/02/15 20:37
最小2乗法のコードを誰か教えてください♥
>>970
はい、途中までだけどどうぞ
for i:=0 to High(dt) do begin
X :=X +dt[i].x;
XX:=XX+dt[i].x*dt[i].x;
Y :=Y +dt[i].y;
YY:=YY+dt[i].y*dt[i].y;
XY:=XY+dt[i].x*dt[i].y;
end;
あと少しだけ、お・ね・が・い♥
973936:03/02/16 00:05
亀レス申し訳ありませんでつ。

>>937
見てみまつ。あ、今月号(?)買ってないので明日買うでつ。

>>941
明日やってみまつ。(会社にソースがあるでつ。明日も会社出るでつ)

ありがとうございますた。
>>970
ttp://www.tensyo.com/urame/prog/linealgo.htm
より
>Y=aX+bのa,b
>a:=(XY -X*Y/N) /(XX-X*X/N);
>b:=(XX*Y-X*XY)/N/(XX-X*X/N);
日本語の環境で作ったソフトって、メニューとかメッセージとかをアルファベットに変えておけば、
ローカライズって言うのをやらなくても英語環境で使えますか?
>>975
例外が思いっきり日本語で笑えなかったりとか。
なるほど。ありがと。
あともう一つ聞きたいのだけど、エクセルのマクロでプログラムに興味がでて、
Del7を買ってみたのだけど、言語ソフト?のヘルプってプログラマ対象だから、
趣味のレベルの人間にはわかりずらいのですか?
>>977
>わかりずらいのですか?

正直、日本語の読み書きが不自由な人には大変かと。
>>971,974

ありがと♥ なんとかできそう。

>>977
>言語ソフト?のヘルプってプログラマ対象だから、
>趣味のレベルの人間にはわかりずらい

↑あたしも最初はそう思ったけど、初心者向けのdelphiのHPって結構あるから
そういうとこである程度勉強するとhelpもわかるようになる。
 あたしは最初は Seventh Delphi ばかりみてたよ。
          ∧ ∧
        〃⌒ ヽl|l)
       /   rノ ;
      Ο Ο_)
   ∧∧
   /⌒ヽ)
  i三 ∪
 ○三 |
  (/~∪
  三三
 三三
三三
>>978
そうですね。おまえはちょんだからね。
このスレで答えてる奴って、リアルでは生きていけそうもない感じがするのですがどうなんで
ございますでそうか?
984次の方、どうぞ。:03/02/17 18:07


  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ´∀`)<. Delモナーがどんな厨房疑問でもやさしく答えます。
 (    ) .| Delモナーは時に私であり、時には別の人。
 | | |  | 他のスレに書き込んで罵倒される前に、まずここで質問しよう。
 (__)_)  \_________________________

Delモナーの正体は誰ですか?
>>985
  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ´∀`)<. そんな厨な質問には答えられません。
 (    ) .\________________
 | | |
 (__)_)
  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ´∀`)<. 次スレ
 (    ) .| http://pc2.2ch.net/test/read.cgi/tech/1045476912/l50
 | | |  \_________________________
 (__)_)
なんでフサギコに変わってんだよ(藁
 
  
   

 

  
  _, ._
(´`c_,'` )
    _, ._
  ( ゚ Д゚)
  ( つ旦O
  と_)_)
    _, ._
  ( ゚ Д゚)
  ( つ O
  と_)_) 旧 ガシャ
           _、_
        ⊂( ,_ノ` )つ-、
      ///   /_/:::::/
      |:::|/⊂ヽノ|:::| /」
    / ̄ ̄旦 ̄ ̄ ̄/|
  /______/ | |
  | |-----------| |
|  |`Д)ノ
|  | ノ
|_|
|  |
| ̄|
|_|
|文|
| ̄|
|  |
999イヒ:03/02/17 19:36
┌──────────┐
|     _       _   ぶ |
|    / _)=∩=∩=_)   ら |
|    | | ∧ ∧|    下.|
|    | | ( ゚Д゚)    が |
|    | | | |    .   り |
|    | | |,|      健 |
|●  | | ∫UU .   も 康 |
|    |_|__|_|   ら 器.|
| 2  \_   \   っ を |
|点     ̄ ̄ ̄  た   |
└──────────┘
1000イヒ:03/02/17 19:37
┌──────────┐
|     _       _   ぶ |
|    / _)=====_)     ら |
|    | |    ||      下 |
|    | |  Λ||Λ    が |
|    | | ( /⌒ヽ    り |
|    | |  | |   |. .. .か |
|●  | |  ∪亅 |  間 た|
|    | |   ∪∪  違 を |
|    |_|__|_| .. え. . |
|1   \_   \  る . .|
|点     ̄ ̄ ̄ ..  .  |
└──────────┘

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