モナーの *やさしい* Delphi質問スレ Ver.11
2 :
デフォルトの名無しさん :03/01/13 10:33
このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。
5 :
デフォルトの名無しさん :03/01/13 10:41
>1 ( ´∀`)乙!
スレ立て乙 もう前スレがhtml化されてるのには驚いた。
つーか
>>1 のモナーの語り口はダメ過ぎ
モナー使うなら全部語尾は「もな」でお願いします
大型連休に固定が消えるのはいつものこと(ひろゆき含む)
質問させて下さい。 Delphi6 Enterpriseを使っているのですが、 ShellListViewから、ショートカットファイルをクリックし、そのURLとタイトルを 取得するにはどうしたらいいのでしょうか?
>>11 レスありがとうございます。
やってみます。
>>10 たった今、ほとんど同じ質問を他の場所で読んだ気がするのは
気のせいか?
粘着ですまないが、
>>10 からレスが無いな…。
マルチだね?
2003/01/14(火) 06:57:03 と
TECH :03/01/14 08:30 か…
マルチはやめとけよ。そんだけ。
訂正。 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 プロパティのようにって事ですか? それは無理というか・・・
やっぱり無理ですか。 Database DesktopでテストしてOKならそのままTQueryにコピペできれば 楽なんですけど。 パラメーターが使えるツールはないですかねぇ。
>>18 新規プロジェクトを作って、フォームにメモとDBGridとボタンを貼り付けて
作ってるアプリの DataModuleユニットを入れて
ボタンイベントで TMemoの内容でDataModuleのTQuertを更新したら?
>>19 とりあえずそれでやってみます。ありがとうございました。
21 :
デフォルトの名無しさん :03/01/15 14:46
スンマセンが教えてください。 例えばフォームにボタンを3個貼って、それを実行してTABキーを押すと ボタンを貼り付けた順番でフォーカスが移動しますよね。 それを任意の順番で移動させたい場合はどうするのですか?(OnKeyDownイベントとか書かずに)
>>21 フォームを右クリックしてタブ順序を変更する。
>22 ありがとうございますた。簡単ですた。
(^^)
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
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の検索とわからない事を質問するにとどめた方がいい。 まとまった情報は書籍にすべし。
MDIアプリケーションでmainformのkeypreviewをtrueにして onkeypressイベントの所に begin showmessage('キー押したよ'); end; と書いて実行したんですが、キーを押してもメッセージダイアログが出てきません。 なぜキーを押したのにダイアログが出ないのか分からないのですが、 教えていただけないでしょうか バージョンはpersonal ver6です。 よろしくお願いします。
>>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 教えてくださってありがとうございます!
ちょっと理解できない所もあるのですがそこは自分で勉強して
何とかやってみます。
ありがとうございました。
>>38-41 レス有難うございます
>>41 さんの挙げたページから辿って行けばなんとなく解るような(?)ページがありました。
>>40 さんのおっしゃる通り、今まで色々なdelphi関連の初心者ページを見て回ってましたが
全体的に最低限の知識を所有する人間相手のページばかりでしたので大変助かります。
未だ先の話なのですが、皆さんはdelphi初心者の頃はどんな書籍を見ましたか?
amazonで調べると何やらやたらと評判のわるいのとかよく見かけるんで
人によって向き不向きはあるでしょうが、参考までに教えてください
よろしくお願いします・・・。
>>45 最終的には、技術書は並べてベッドに出来るくらい読まないといけないわけで、
どれが良いとか悪いとか考える前に、学校なり近所の図書館なりを利用して
まずは沢山読んでみる方がいいのでは?
それからプログラミングについては、やはり他人のコードを読むことが一番の勉強になります。
Web上の色んなソースを読んだり、
少しお金を貯めて Proを買ってVCLを読んだり
後、やっぱり動かしながら勉強するのがモチベーションが保てて良い感じです。 最初に ファイル->新規作成->その他->プロジェクト->SDIアプリケーション して、これを元に色々追加してみると良いでしょう。 それが終ったら、 Demos ディレクトリの内容を順に見ていくとか
やっぱり「自分が欲しいソフトを作りたい」が一番のモチベーションかなぁ? とオレは思う。
>>48 ドウーイ
明確な達成目標がある事で学ぶ事の取捨選択ができるからね。
学ぶ事が多少偏るだろうし、非効率でツギハギだらけの
プログラムが出来あがるかもしれないけど
作る過程で得られる内容は確実に次に活かせるし
作ったという達成感が生まれるのはとても良い。
しつもんです。 ほんとに初歩的ですが… 'TStrings' と 'Array' には互換性がありません TStringsとArrayってどう型変換すればいいんでしょうか???
50です。 ある程度直したら今度もエラーが発生しました(泣) 'TArchiverOptions' と 'String' には互換性がありません これはどうしたらよいのでしょうか? 探しても型変換を詳しく取り扱ってるところがない・・・
50です。 なぜか書き込めませんでした(エラーは出ず) で、ある程度解決したのですが、 'TArchiverOptions' と 'String' には互換性がありません のエラーです。 いくら探しても型変換を取り扱っているところが・・ない 初歩的ですみません
書き込めません(泣)
かきこめてました。 すみません
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
61 :
デフォルトの名無しさん :03/01/19 13:14
IPアドレスを使ってチャットをするプログラムを 組みたいのですがどうするべきなんでしょうか?
どうするべき?
サーバーとクライアント
64 :
デフォルトの名無しさん :03/01/19 14:19
indyでCGIファイルの要求を出して、 返ってきたファイルが、htmなのかgifなのかって判断はどうすれば いいのでしょうか? お願いします。
頭の3バイトをチェック
どうもありがとうございます。 jpegが返ってきたりする事はないのでしょうか?
そりゃあるだろ。というかあっても破綻しないように作っとけ
69 :
デフォルトの名無しさん :03/01/19 16:38
61ですが、教えてよん(はぁと)
一般的なチャットの構造とDelphiでの実装のどっちがわからないんだ? 前者ならスレ違い。とりあえずIndyでもWinsockでも何でもいいからTCP覚えろ。
71 :
デフォルトの名無しさん :03/01/19 16:56
Delphiでの実装です!
>>64 Content-Type調べれば分かると思います。
>>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にスコアを送信したいのですがどのようにすればよいのでしょうか? 参考サイトなどありましたら教えてください。
質問です
プログラム(EXE)の終了時に、呼び出し元に値を返す方法はどのような方法がエレガントなのでしょうか?
VB からEXEを呼び出して、その帰り値をVB側で取得することが目的です。
できれば文字列が取得できればいいのですが....
ご存知の方、ご教授ください。
>>86 あまりいい方法ではありませんが、IEを呼び出す方法があります。
(ブラウザが立ち上がりますが、それでも問題ないケースもあると思いますので)
ShellExecute(0, 'open',sURL, nil, nil, SW_SHOW);
詳しくはドキュメントでお調べください。
ExitCodeで数値を返せる。それ以外は無理。 プロセス間通信するしかない。 あるいはiniファイルかレジストリか。
92 :
デフォルトの名無しさん :03/01/20 23:16
>>89-91 レス 有難う。大変参考になりました。
実際、調べるとこの辺りの仕様はあまり拡張されていないようですね。
調べ方が足りないのかと、ここに書かせてもらいました。
従来の方法だと値、もしくはポインタ(使わないほうが良いと書かれている)
となっているようでつд`).....
そうであれば89さんがご指摘のレジストリというのが手っ取り早いですかね。
エラー処理も整っているし、VB側からの呼び出しも簡単。
なにしろ、(プロセス間通信などのタイミングやメッセージアイドリング、タイマー)
などが入ってくると、目的とはかけ離れて無駄にプログラムが煩雑になりそうです。
レジストリの中にはOS起動時に消してくれる便利な場所もあるので、そういう部分を使ってみます。
ご意見、有難うございました。
>>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 名前はどこも変えていないのです。
本みながらなのにつまづくなんて。。。
説明書どおりにしてるのですが。
すいません。実行部ってどこでしょうか。。。 教えてください。お願いします。 もうだめぽ。
>>105 Timer1Timar <> Timer1Timer という事では?
Timer1のOnTimerを記述するときは
プロパティエディタの OnTimer をダブルクリックするといいよ
>>108 implementから下の方。
procedure TForm1.Timer1Timer(Sender: TObject);
begin
end;
の様にイベントハンドラの実行部を書く。
>>109 イベントですよね?してるんですが・・。
うぅ。。。
わかんない。。ソースあとで張ります。またきます。。
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したりしてプログラムを作る。
です。 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に割り当てられないので注意。
>>117 ありがとうございます!わかりました。
interface部分を勝手にいじってました。
お騒がせしました。
厨質問ですいませんが、フックの仕方を教えてください 具体的には、他のアプリケーション(市販のものです)のチャットのようなものがあって、 そこに表示されるメッセージに対して処理を行いたいのです (誰かが入室したら音を鳴らすetc.) 調べたところ、そのウィンドウはListBoxになっているようで、 文字列が追加されるときは、LB_ADDSTRINGというメッセージが発生してるようなので、 このメッセージを捕まえられればと思うのですが、やり方がわかりません。 「Delhpi2 達人テクニック」という本のキーフックのところを参考にして、 やってみようとしたのですが、うまくいきません。 (PrtScキーを押したときに画面をキャプチャする例) まず単純に本にあるSetWindowsHookExのコールバック関数の中の if文の条件を下記のように変更してみたのですが、 これではLB_ADDSTRINGというのは捕まえられないのでしょうか? (フックの種類はWH_GETMESSAGEになってます)
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内に置いてね。その関数。
>121 レスありがとうございます。 説明が足らずにすいません。本に従って、DLLを作成しています。 (というか、サンプルでついてたのを少しずつ変更してます) キーフックの動作は確認取れてます。
適当というか予想 if (pm.message = WM_COMMAND) and (pm.wParam = LB_ADDSTRING) then
>123 試してみましたが、駄目ですた(´・ω・`)ショボーン
125 :
デフォルトの名無しさん :03/01/22 00:21
先生!小生、DLLは使えるようになったのですが(delphi6)、 COMはdelphi6で使えるのでしょうか!教えてくだだい! 宣言の仕方すら調べても出てきません!
>>126 先生
使えますか!お返事ありがとうございます!
どこか参考になるようなサイトとかないですかね・・・
(・∀・)イイ情報キゴンヌ!
誰か教えて!COMコンポ!(の組込方
>>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のライブラリパスの通っているディレクトリにコピーしてください。 適当にやったらエラーが出てしまいました。 どなたかインストール方法を教えていただけないでしょうか?
できました。すいません
143 :
デフォルトの名無しさん :03/01/22 21:28
>>139-140 もうひとつユニットを作って色々呼んでみるとわかる筈。
public 他のソースファイルから見える
protected private に加え派生クラスから見える
private そのソースファイルだけ
public/privateはinterface/implementationとおんなじような関係。
同じソースファイル内なら同じ人が書くのは明白なので
妙なアクセス規制かけずに好き放題させてくれると考えればよし。
145 :
デフォルトの名無しさん :03/01/22 22:17
でるふぁいで作ったプログラムは特別なコンポーネントがないと うごきませんか?BVみたいに
つまらんネタだろ?反応しないように<BV
>>145 Windowsという特別なコンポーネント群が無いと動きません。
149 :
デフォルトの名無しさん :03/01/23 01:03
>>1 が
>Delモナーがどんな厨房疑問でもやさしく答えます。
言ってるじゃん
馬鹿扱いしたりネタ扱いしてもいいけど、おしえて。
>>149 何に答えてほしいんだ?
つーか、「Delモナー」は優しいが、他は荒くれ者ばかりが集うスレ。
七つの海を制覇した強者しかいないと思ってくれ。
プッシーは潮でも吹いてろ
153 :
デフォルトの名無しさん :03/01/23 11:30
>>125 プロジェクト→タイプライブラリの取り込み、で登録したocxが表示されるはず。
んで、OKすると自動的にpasが作成されるから、それをusesすればよい。
そしたら、CreateComObjectし、ご自由にお使いくださいと。
>>149 >146さんがすでに書いてあるとおり単体で動きますよ.
ほかの方が作ったコンポーネントを使ってもやはり単体です.
>>150 それだとDelスレがいくつもある意味が….
どなたか>119に知恵を貸してやってください
>>119 は、他のアプリが受け取ってるメッセージをフックしたいという事ですよね?
それは簡単ではないと思います。
というかソレが出来るなら、逆に困った事になってしまうような・・・
ListBoxの窓ハンドルが入手出来ているなら、
LB_GETSELCOUNT LB_GETTEXT は使えませんか?
>156 レスありがとうございます いちおうタイマ処理で、SendMessageして文字列取得して処理するのは作ってみました でも、フックができたら、いろいろできるんだろうなぁと妄想を膨らませていたので、 やり方がわかればと思ったのです それができると困ったことになるということは、 Winの仕組み上できないようになってるってことなんでしょうか? (できたとしてもキーフックみたいに簡単?ではないということですかね)
あ、ゴメン 観察するだけなんだね。 なら可能だ。 タイマー割り込みの代わりに、そのフック中で 自アプリにメッセージを送って貰って それでテキストを取得したらいいんじゃないの?
ありがとうございます 参考サイトを見ると、SendMessage()を送られたのはWH_CALLWNDPROCでってことみたいですね。 また挑戦してみます
(^^)
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リファレンスのファイルと名の付くものも読みあさった。
誰かわかりませんか〜?
>>162 質問がワケ分からんから、誰も相手しないと見た。
このまま相手されなくて、他のとこへマルチポストしてる姿が見えます。
こんなんでましたけど(泉)
MDI環境とSDI環境の違いじゃないの? Delphiは使ったことないからどっちかしらないんだけど<おい
一人よくわからないバカが勘違いして粋がっているスレはここですか?
パンツを洗濯機で洗うと必ず裏返しになる理由を考察するスレはここですか?
>>178 Activeデスクトップ + 白いgifファイル&アイコンの表示をしない。
ていうか、そこに突っ込む人をはじめてみた。
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は推奨しないって言ってたのに。
レスありがとうございます じゃあdelphiをMDIのように背景をつけることはできないんでしょうか?
悪いことは言わない。このままグダグダ同じこと聞くより 「慣 れ ろ !」 しまいには叩かれるぞ。いいじゃんか、後ろが見えたって。 絶対慣れるから。そのまま使うがヨロシ!
>162 最背面に常に表示されるウインドウをもつ、フル画面のソフトを作って 常に立ち上げておけばいい。
A型
Delphi(プログラミング)初心者です。 上司から、これ参考にしてつくれと eXescoper(逆コンパイラ?)とsample.exeを渡された のですが使い方を書いたHPが見当たりません。 上司に質問したらそんなこと自分で調べろと怒られました。 先輩に聞いても、そんな課題でなかったらしく、知らない と言われ、困ってます。どなたかご存知でしたら教えてください。
初心者がeXescper作るなんて無理。
>>198 違うだろ。
Sample.exe "を" eXescoper "で"懐石して作れだろ。
>>197 何を作るのかを書かなければ分からない。
もう一度言う。「何を」を書かないと(その上司以外は)誰も分からない。
eXescopeは、exeやdll内の様々なデータを見るツール。
sample.exeは、作ったやつに聞け。それとも広く公開され有名なアプリなのか?sample.exeって。
自分しか分からない情報を出さないことには、誰も答えることなんて出来ない。
これは、プログラミングとは関係ない社会人としての常識である。
レスありがとうございます。 私の説明が舌足らずでしたので、もう一度説明させて下さい。 sample.exeに動きを参考にしたい部分があるのですが それをeXescoperを使って調べて、課題のプログラム をつくれというのが上司の要求です。 (要するにパクれってことだと思います) eXescoperを起動させてsample.exeを開くと、 なにやらいっぱい出てくるのですが見方がわかりません。 どうやって使うのでしょうか?
>>201 なんで他のアプリをパクるのにeXescopeを使う必要があるの?
一体何を作るの?(仕様のことだよ)
sample.exeの「参考にしたい」部分を言わないと分からないよ。
まず、sample.exeが何をするものなのかから説明したほうがいいんじゃない?
eXescopeは、逆コンパイラじゃないよ。EXEのヘッダとか、参照してるやつとか、リソースを表示するやつだよ。
203 :
デフォルトの名無しさん :03/01/25 03:31
ネタの予感… でもマジレス。上司か先輩に聞け。恥を書くことを恐れては成長しない罠。
はい、すみませんでした。以後気をつけます。 課題はブロック崩しゲームなのですが (ピンポン玉があたるとブロックが消えていく) ボールの動きが終始同じなのを、ブロックの数が少なく なるにつれて、速くするというものです。 sample.exeはスクリーンセーバーだと思うのですが 球が壁に跳ね返っているものです。ただ時間がたつにつれて 次第にその移動スピードがあがってきます。 その部分をブロック崩しのピンポン玉の動きにとりいれろ というのです。スピードのあがり方は全く同じにしなくては いけないという条件なのでプログラムソースをみなくては できないです。こんな状況ですが、おわかり頂けたでしょうか?
レスありがとうございます。 私も最初そういう主旨だと思って、だいたい似たような速度の上がり方 するもので提出したのですが、sample.exeはなにか特別な関数を使ってる らしく全く同じ(1pixelも違わずに)してくれと却下されました。 パクることも目的のようです。
はい、先輩にきいたのですが、 eXescoperなんて知らないって言う人ばかり(いじめ?)で 上司に聞いたら、それを調べるのが仕事とつっかえされました(涙)
202さんへ、レスありがとうございます。 とんちんかんな質問でしたらごめんなさい。 eXescoperはコンパイル前の状態を復元するものでは ないということでしょうか?
>>208 違います。
eXescopeは”なにか特別な関数”を使っている事や
その関数名とかはImport情報から分かるかもしれないが
例えば関数の引数の意味など仕様までは教えてくれない。
だから”よっぽど特別”な関数でない限り全く同じは無理。
情報を小出しにするあんたも、無茶な課題を出す上司
2人とも意識はないかもしれんが、相当悪質だぞ。
>>208 違います。リソースを調べる物です。
これでアプリケーションの動作を検証するなんて事は出来ません。
そのサンプルはゲームだから目で見て判断するしかないんじゃないでしょうか?
レスありがとうございます。 ということは全く同じにするには 本当の逆コンパイルツールっていりますよね? そんなのあるのでしょうか? すみません、いろいろ聞いちゃって。
ある。が、DelphiのObjectPascalでなくアセンブラになるな。 …つまり、やめとけって事。
レスありがとうございます。 アセンブラ→ObjectPascal翻訳みたいなツール ないですよね・・すみません。 てことはどうしろってことなのかな? 単なるいじめ?
どうでもいいがいじめいじめウザい
eXescopeと課題の関係なさを説明しろってことかなぁ リソースの中になにか数字が入ってるんだろうか まったく同じにするには動画としてキャプったほうが手っ取り早そうだな sample.exeとやらをうぷするわけにはさすがにいかんだろうが他にはなにもないの?
216 :
デフォルトの名無しさん :03/01/25 05:46
>てことはどうしろってことなのかな? 知らんわ。あんたの上司の言う通りだ。ちったぁ自分でかんがえろや ここはDelphi質問スレであって、新入社員を育成するスレじゃない。出直せ
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']以外のもの(空白や()、@等) がセパレーターになると思ったのですが、違うようなのです。 空白や括弧等複数のセパレーターを設定するには、どうしたらいいでしょうか? 教えてください。よろしくお願いします。
A型です
> がセパレーターになると思ったのですが、違うようなのです。 どこで違うと思った?
例えば AAAAA() という文字列があった場合AAAAAが取り出されると思うのですが、 AAAAA()と、全部なってしまうのです。 ブレークポイントを設定してマウスを合わせてみたら、Parserの中身は'@','[','_' など6個ぐらいしか設定されていないようなのです。
>>218 ネタの予感がしますが…
課題からしてほぼ9割いじめと考えていいでしょ。
コンパイルされたアプリから内部処理を取得することは普通のレベルの
プログラマには不可能です。(リソースは簡単)
DLLにリンクされていれば内部処理結果を取得することは可能でしょうが
それにしてもDLLの仕様を取得する必要があります。
天才の反対の反対 ↑ 結局、天才では?
自己レスです。 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 は,空の文字列をリストに追加しません。
>>192 確かにそういう時期があったが、その後、複数起動を許すMDIなら
SDIとしてもMDIとしても利用できるので、現在はMDIを推奨してるんでなかった?
なにかの書籍で読んだ覚えが。
222さんへ、ご指摘いただきありがとうございます。 私も今、eXescopeというのがあるのを知りましたが 私が渡されたのはeXescopeRです。eXescopeではありません。 レス頂いた皆さんへ、スペルを見る限り勘違いされてますね。
223さんへ、反比例がどうかはわかりません。 わかっているのはブロックの数が少なくなると球のスピード があがるということだけです。それを満たす関数なんて無数にありますよね。 (反比例というのもその中の1つですが) 課題はその中から特定しろってことです。
上司は eXescoper を逆コンパイラと勘違いしているのかも。
>>234 勘違いしていた。
だが、exescoperとやらも試してみた限り、逆コンパイラには程遠い代物だぞ。
やはり、いじめか、上司がバカかだな・・・。
課題があともう1つ出てるので、わかる方みえましたら アドバイス頂けたら幸いです。 電話で商品の注文を受け付けるシステムについて {電話での入力(ボタンを押す)に対して音声を返す(”在庫切れです”など)} Delphiでできるそうなのですが、どんなハードのデバイスやコンポーネントが 必要になるのでしょうか?CTIサーバというのらしいのですが関連業界の方 みえたらさしさわりがない範囲でかまいませんので教えて下さい。
>このソフトはDelphiでコンパイルされたEXE/DLLファイルを高速で解析して >DFMファイル(Delphiフォーム)を抜き出したり、使用しているクラス及びPAS >ファイル(Delphiソースコード)を取得することが出来ます。 >いわゆる逆コンパイラーに近い働きをすることが出来ます。たぶん。(^^; >また、 自分で作成したプロジェクトの管理または他人が作ったプロジェクト >を解析したい人にお勧めのソフトです。 なーんて書いてあるから、勘違いしたのでしょう。 上司の間違いを指摘すると逆切れされるかもしれないので、 適当に似せて作って、同じにはなりませんでしたと言えば良いでしょう。
上司がここ見てたらどうするのかなぁ…。
と言う訳で、どなたか単語に分解する関数知りませんか?
>>239 Delphiで出来る事は、CTIサーバメーカーが提供するライブラリのAPIを
呼ぶぐらいじゃないの?
eXescoperに関して、ファイルをみていったら nameのところにらしき関数が書いてあったので それで提出します。 レス頂いた皆様、ありがとうございました。
246 :
デフォルトの名無しさん :03/01/26 08:48
224,230です。 ExtractHeaderFieldsについて、くどくいようで申し訳ないのですが、 D6だと空白や括弧 ( で文字列を切り分けてくれるのですが、D7では切り分け てくれないようです。 PRO版なのでソースを見比べてみたのですが、何が違うのか判りませんでした。 D6、D7どちらが正しいのか判らないのですが、D6の動作にしたいのでどなたか、教えてください。よろしくお願いします。 (とりあえずは、D6でプログラムします。)
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
おいコラ! 教えてたら自分でできなくなるだろ!アホかてめえあえええええええええええええええええええええええええええええええええ あほかてめええええええ
すみません。あほです。 レスは全部呼んだつもりですが、多分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
>>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; じゃいかんの?
ありがとうございます。でも両方とも 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]); の部分で 変数実パラメータと変数仮パラメータとは同一の型でなければなりません ってまた怒られちゃいますた…
キャストすれ
なんだ。全体じゃなく要素の入れ換えか。なら
>>270 でいいでしょ?
実はxがIntegerの配列ではないなんてオチで無ければ。
>>276 思いっきりそれですた…
ご迷惑おかけしますた。回線切って(ry
可変部付きのレコード型のタグフィールドって何か意味あるの? 使い方がよおわからん??? type TRec = record A:integer; B:integer; case C:Boolean of True:(D:integer); False:(E:integer); end; この時、フィールドDとFはいつでも読み書き出きるでしょ。 なら、タグフィールドCって何に使われるのでしょう?
>>278 DとEは同じ記憶領域を共有するってわかってる?
同じ型じゃ可変部にする意味ないじゃん。
間違えた type TRec = record A:integer; B:integer; case C:Boolean of True:(D:integer); False:(E:String[10]); end;
DとEは同じメモリアドレスにアクセスするのはわかるけど、 Cの値関係無しに、DとEどちらも書き込み出きるでしょ。 C値によって、どちらかが制限されるのならわかるけど、 じゃあ、この中のCaseってどんな動作するの? Cの使い方って?
>>279 同じ型にする意味はありますよ。 同じメモリ領域に二つの識別子が使えるので、 一つのレコード型データに対して、どちらかのフィールドしか使わない (二つ一緒に使う事はない) 場合、メモリが節約できます。
>>283 後、ビット列の表現を変えたい場合な。
IntegerとByte4つの構造体を共用させればRGB形式のデータの操作が楽だったり。
278=280=281=282=284 なのかな? メモリの節約なんてできませんよ SizeOf の戻り値見てる? むしろ case 文の分だけ損してる > 後、ビット列の表現を変えたい場合な。 「後、」って何だろ?(w その副詞は話の流れとして相応しくないな レコードの可変は主にそのためにあるんでしょ 同じ型にして意味のある事といえば、ヘルプに出てくるみたいに 変数名を別にできるということくらいでしょう
>>285 >同じ型にして意味のある事といえば、ヘルプに出てくるみたいに
>変数名を別にできるということくらいでしょう
アホですか?それになんの意味があるというのだ。
>>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に頼っているやつは あほだろ。
ボクは西沢選手が大好きです♥
>>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
なぜ2ちゃんねる関連のツールはDelphiやVB製が多いのだろう。
>>311 ソフトウェアのできは、使うツールとは関係ない。ってこと。
>>311 ユーザーが多いからだろ
ちなみに監視所、アクティブスレッドランキング、みみずん検索なども2ちゃんねる関連のツールと捉えると
Delphi、VBが多数派とも言えない
314 :
デフォルトの名無しさん :03/01/28 08:47
(1) external宣言でWin32APIを使う利点は、関数名にエイリアスを使えること以外に ないように思えるのですが、他に何かメリットはありますか? (2) Handle(HWnd)を受け取る引数は何型で定義すればよいのでしょうか? Integerだと「型が不一致」でハネられるのですが・・・。
316 :
デフォルトの名無しさん :03/01/28 08:52
>>315 (1) VBのDeclare宣言とおなじで、煩雑だと思います。
楽だとは思えないんですが・・・。
(2) Cardinalとはちょっと気が付きませんでした。感謝です。
>>316 GetProcAddrとかLoadLibraryの戻り値はちゃんとチェックしてくださいね。
318 :
bloom :03/01/28 08:59
319 :
デフォルトの名無しさん :03/01/28 09:04
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
323 :
デフォルトの名無しさん :03/01/28 09:46
(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
WaitForSingleObject か GetExitCodeProcess を使えば該当アプリが終了してるかどうかわかりますが ところが、これらのAPIを呼出すのに必要なハンドルを ShellExecuteは返してくれません。 対策は、 1、ShellExecuteEx を使って hProcess を使う 2、 FindExecutable で対応アプリの名前を調べてCreateProcessする
>>328 ご返答ありがとうございます。
教えていただいた内容を調べて概要が分かりました。
難しそうですが、何とかがんばってみます。
ありがとうございました。
SpinEditというコンポーネントを使って数値を変えて ボタンを押すとその数値を使って処理をするというプログラムについてなんですが、 処理が終わった後、ユーザーによって変えられた数値を 「元に戻す」ボタンで初期値に戻すためにはボタンを押したときに SpinEdhit1.Valueに初期値を書いて代入する以外に何か方法ってありますか?
>>330 Undoメソッドがあるにはあるけど
キー入力→Undo→(・∀・)アンドゥセイコウ
スピン→Undo→(・A・)アンドゥデキン
となった(Del6付属のTSpinEdit)
ボタンを押すとテキストファイルにその日の日付を書き込みたいのですがどのようにやればいいのでしょうか? たとえばボタンを押すと「2003/01/28」という文字がfile.iniの一番上の行に追加されるというものです。 昔の日付はだんだん下の行に下がっていく、つまり新しく書き込むと上から順に追加される という感じなのですがこれはどうやるんでしょうか?
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; こんな感じでとりあえず保存だけやり方がわかったのですが追加書き込みはどうやるのでしょうか? 新しい日付が最初にこなくてもいいのでファイルもう一度ボタンを押すと 次の行に追加されるようにしたいのですが調べても詳しく分からなかったので 例みたいなものを教えていただけないでしょうか
追記:vdateには日付が文字列型で入っています。
337 :
デフォルトの名無しさん :03/01/28 19:07
コンソールアプリケーション作ったんですが コマンドプロンプトで300行弱しか表示されません。 もっと表示するのって無理なんですかね…?
コンソールアプリで表示される行数って考え方が今風だな(w
>>337 あなたの言われる機能はターミナルに依存します。
よって、履歴機能を自力で実装するしかないです。
とはいえ、300行ってことは、NT系だろうからコマンドプロンプトのプロパティで増やせるはず。
誰も解決策知らないのかよ(w
だからターミナルに依存すると言っているだろうに アプリ側でどうにかなるもんじゃない。てうかどうにかするほうが反則だゴルァ それも嫌なら自前で出力ウィンドウ作るとか、リダイレクト使ってファイルに吐かせるとか。
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
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
見れない
すいません、「フォルダの参照」ダイアログに「フォルダの新規作成」 機能がついた奴です。ついてない奴は見つけたのですが、新規作成が できればかなり便利になると思いましたので。
>>354 実験したけどちゃんと"2.2"になったよ。
Dataの初期化をわすれてないか。
360 :
デフォルトの名無しさん :03/01/29 00:27
>>359 そのページ、初めて見るけど、
>関数郡です
↑
「関数群」だよなぁ。
ま、くだらないあげあしとりだけどさ。
361 :
デフォルトの名無しさん :03/01/29 05:25
Glyph が TImageList になってる TSpeedButton がほスィのですが、 探し方が悪いのか、いくら探してもみつかりません。 もしご存じのかたおられましたら教えてください。 よろしくお願いします。
AVIからWAVを摘出するコードを書きたい。 どうするの?
いじってたらできてしまいました もういいです
>>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
>>320 文字列を返したいのですか?
VBの事はもう忘れてしまったのですが、一般的な話として文字列を返したい場合は
文字列用の領域を用意し、領域サイズもあわせて引数として渡す必要があります。
WindowsのGetWindowText API を参考にすると良いでしょう。
マルチスレッドを使わない場合は、関数の引数で返さず、
その関数内で別の変数に代入しておいて、別の関数でPCharで返す方法もあります
368 :
デフォルトの名無しさん :03/01/29 10:00
>>366-367 ありがとうございます。
無論、文字列も・・・なんですが、それ以前に数値(32bit整数)も返せていない(DLL内で
MessageboxAで表示してみると正しい値が入っている)という情けない状況です。(T_T)
>>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
コントロールパネルにある サウンドとマルチメディアの設定(OSによって名前が違うかも)で 起動音やごみ箱の音とか登録してまとめれて変えられますが 現在選択されているものをプログラムで外部から操作できないでしょうか? 個々の設定を変えるのではなく、用はデスクトップテーマの 効果音だけ変更ソフトみたいなのを作りたいんですが。
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.
ミ⊃ ⊃
画像の出し方教えてください
クイックソートのプログラムを作っているんですが、 どうもうまくいきません。 どこを直せばいいか教えてください。 お願いします。 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 回 く ら い 検 索 し て か ら に し て く れ
>>359 ありがとうございますー
とても助かりました。
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
「改行が多過ぎます」って何やねん!(激怒) こんな使えん掲示板見たことないわ。
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をつけて宣言したような静的ローカル 変数はどうすれば宣言できるのでしょうか?
>>401 の内容を貼り付けて実行したのですが、
inc(intStatic); の行で、「代入できない左辺値です」というエラーが
出てしまいます。
Delphi6で試しているのですけど、どうしてエラーになるのでしょうか?
>>398 さんの、疑問私も知りたいです。
>>400 さんの、文字をヘルプで探したのですが、
わかりませんでした・・。
すいませんが教えてください。
>>403 1つのイベントプロシージャからしか使用しないので、イベントプロシージャの中で
宣言したいのです。
>>402 「プロジェクトのオプション」->「コンパイラ」で「型付変数への代入」にチェックを入れるか、または{$J+}を指定する。
>>401 そんな仕様初めて聞いたぞ( ゚Д゚)ゴルァ
と思って調べたら、コンパイラオプション{$J+}を付ければ出来るみたいね。
///
___
,∠==、ヽ `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
>>409-410 同意と言いたいところだが、頭の弱い奴を叩いてもしょうがないんじゃないの?
>>409 禿同。
頭悪いやつに何言っても無駄かもしんないけど
>>389 のクソ関数なんか
イラネーんだよボケ。
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ´∀`)<. Delモナーがどんな厨房疑問でもやさしく答えます。 ( ) .| Delモナーは時に私であり、時には別の人。 | | | | 他のスレに書き込んで罵倒される前に、まずここで質問しよう。 (__)_) | でも、罵倒するときゃするで〜 | だってプログラミングしか取り柄のない 使い捨てられる人間だから \_________________________
どなたかわかりませんか?
>>414 最近MLか何かでも見たような話題だけど・・・
400が答えてるように起動オプションを使う
delphi32 /np
とりあえずDelphiのヘルプでキーワード
IDE,コマンドラインオプション
を読むとよろし
>398,414 Delphiを起動したときにフォームを「出さない」というのはどういう意味? Delphiを起動したときに ・新規プロジェクトを開かない ・新規プロジェクトは開くけど、メインフォームを持っていない ・新規プロジェクトを開いて、メインフォームも持ってるけど、表示はさせない この3つのどれ?
417 :
デフォルトの名無しさん :03/01/30 23:28
>>347 >>353 変更前のコードでは最悪,writeln文は1回も実行されませんよ.
されるとしても j = 1 のときだけ.
『途中で整列する対象がソート済みの配列に変わってしまう』というのは
恐らくそう見えるだけで実行結果には影響していないと思われますが….
#そもそも整列の実行速度を調べるのに
配列の中身をwritelnで表示する意味はないと思いますし,
writelnの実行時間は配列の整列よりずっとかかりますから,
速度調査になりません.
>>361 >>363 スピードボタンのActionプロパティに『アクション』を指定した場合,
その『アクション』があるアクションリストのImagesプロパティに
イメージリストが指定されていると,
スピードボタンのGlyphは,
そのイメージリストの中のイメージのうち
その『アクション』のImageIndexで指定された番号のもの
に変わるようですね.
>>417 1.「実行時」←これにいろいろ付加して検索してみれ。
2.コンポーネント探してきてインストールするしか無いと思う。
3.コンパイルしたexeを違う場所へ移動させてみると…。
>>420 1,2.ども、ぐぐってきます。
3.カワッタ━━━━(゚∀゚)━━━━ッ!!
ありがとう。
1.ウボァー、フォーム使うだけで200~300KBも増えるとは フォームを使わず開発しろというのも渋いなぁ 2.png使うのはGLDPNGっとかってナイスなコンポーネントありました。
まぁ、PNGで日本のってーと、それが一番メジャーな気がするなぁ。 でも著作権表示すれ!って縛りは何の意味があるんだろう? ちょっとなぁ…。
昨日からはじめました。なかなかおもしろいですね
>>416 一番上です。
>>421 ありがとうございます。そこでしらべてみます。
おさわがせしました。
>396 もう解決したかもしれないけど、サブクラス化して、 if (Message.Msg = TVM_SELECTITEM) and (Message.WParam = TVGN_DROPHILITE) then begin Message.LParam := 0; end; とかやれば出来るはず。
429 :
デフォルトの名無しさん :03/01/31 12:08
これからDelphiを始めようと思うのですが、 どんなことをやったらよいでしょうか? 何か課題のようなものを出して頂けませんか?
メモ帳と同じ物を作ってみれ。
見た目はそれらしい物ができました。 いきなり質問なのですが、ファイル>新規を押した時に出るダイアログなのですが はい・いいえ・キャンセルのあるものはどうやってだすのでしょうか? Showmessageでは、うまくできそうになく新しいFormを作るのでしょうか?
435 :
デフォルトの名無しさん :03/01/31 14:10
>>434 messagedlgはWindowキャプションを変更できないのが嫌だ。
MessageboxAがお奨め。
レスありがとうございます。 MessageboxAを使用してうまくできました。 MessageboxAの hWnd という部分ですが、 よくわからないのでHandleと入れましたが これは問題ないのでしょうか? オーナー ウィンドウのハンドルと言われてもわからなかったもので、、、
>>437 Ctrl+スペースの候補からそれっぽいのを選んだので適当でして、、
才能なんてものはありません、、、
>>438 ウイングよ。ここは素直に照れておきな。
>>439 ウイング??
メニューのファイルから作ってるのですが
ページ設定ダイアログは簡単に呼び出す方法はありますか?
やはりフォームから作るしかないのでしょうか?
>>436 適当なフォームを二個作って
Form1.HandleとForm2.Handleを入れれば違いが分かるよ。
>>441 自分の頭じゃ違いが、わかりませんでした、、、
ごめんなさいです、、、
>>440 Dialogsにあるのはだめなのかいな?
444 :
デフォルトの名無しさん :03/01/31 16:18
あれれ? ありますか? こちらでは、 Open,Save,OpnePicture,SavePicture,Font Color,Print,PrinterSetup,Find,Replace 以上しかないのですが、他にもあるのでしょうか?
446 :
デフォルトの名無しさん :03/01/31 16:22
データベースアプリ組んでるんですが、 コンボボックスにのitemの内容をテーブルからもってくるには、 レコードを1つ1つ参照するしかないんでしょうか?
>>446 訂正
×コンボボックスにのitemの内容を
○コンボボックスのitemの内容を
>>447 なにがやりたいかよくわからないが、
ComboBoxのアイテムをDBから取得したいだけなら、
DBLookupComboBoxを使えば簡単だわな。
独自の実装をする場合は一個一個参照するしかない。
>>390 その程度でいちいちWSH使って
しかもよりによってDelスレで自慢気に発表するのがワラタ
粘着アフォ見苦しい (・∀・)カエレ!
本人ハケーン
>>448 ありがとうございます。
またまた質問なのですが、FindDialogを呼び出して文字を入力させ
その文字を検索するところまでは何となくわかったのですが
その文字を反転状態?にさせたいのですが、どのようにすればよいのでしょうか?
>>454 素早い返事ありがとうございます。
早速試させて頂きます。
>>427 まずソコが出てくるとは通ですな。
ありがとーです。
参考にさせていただきます。
プログラムが長くなってきたんですが、 ソースを複数のファイルに分けるということは出来るのでしょうか?
>>458 Delphiのヘルプでusesと検索したら、
「複数のユニットの参照と間接的なユニット参照」というよさそうなのが、
出てきたけど、よく使い方がわかりません。
誰か教えてくれませんか?
>>459 完成品の適当なソースをパクって使い方を研究するのが最短距離。
>>459 ,
>>461 大きなお世話かもしれないが、参照するUnitをInterfaceのusesに記述するか、
Implementationのusesに記述するか、はハマる原因になるので、注意!
(FAQの部類に入る)
(´-`)。o ○ (「長い」ってどんくらいの長さなんだろう…?)
コンポーネントのタブが消えてしまいました 一覧から参照してるので問題ないのですが、これはバグですか?
466 :
デフォルトの名無しさん :03/02/01 14:52
イメージコンポーネント上に文字を表示したいのですけど、↓を実行すると 背景まで白くなってしまいます。 Image1.Canvas.TextOut(10, 10, 'abcde'); BrushのStyleを設定しても無理ですし、どうすれば白くならないように文字 だけを表示できるのでしょうか?
>>467 う〜ん
どうしてもイメージコンポーネントの背景が白くなってしまうんですよ・・・
>>468 Image1のTransparent(プロパティ)をTrueにしる
>>471 不思議だよねえ、ETO_OPAQUEが勝手に付いちゃうのかなあ
>>472 う〜ん
どうして白く塗りつぶされるんでしょうね・・・
分からないや・・・
ここはリアル厨房ばかりなのか? TImage の仕組みもわからんのか?
めんどくさいからおまえなんかちょくせつびょうがしてしまえ procedure TForm1.Button1Click(Sender: TObject); begin with Form1.Canvas do begin brush.style:=bsClear; TextOut(10, 10, 'abcde'); end; end;
>>466 文字を表示するだけならラベルコンポでいいと思いますよ.
少なくともイメージコンポは文字を表示する用途には向いていません.
ちなみにイメージコンポの背景が白くなる理由:
画像が入っていないイメージコンポのキャンバスを操作すると
イメージコンポは自分と同じサイズのビットマップを作り
そのビットマップのキャンバスを操作して
そのビットマップを表示するのです.
で,作られたばかりのビットマップが全面真っ白だったので
全体が白く表示されたわけです.
大気との摩擦熱で・・・ ((;゚Д゚)ガクガクブルブル
↑もちろん誤爆なわけだが
こんな関数作って 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'); これじゃダメ?
SetBkMode(Canvas.Handle, TRANSPARENT);
482 :
デフォルトの名無しさん :03/02/02 00:33
スレ違い。ちゃんと2chの仕様を調べてみなよ。
>>482 それだけじゃわかんないよ
NHKでもみておちけつ
>>484 古い映像だと思ったら最新の映像だったのか・・・
つーかおつけつるかよ!!
Delphi使い始めたばっかりの初心者なんですけど まずどういうことをすればいいんでしょうか?
>>486 なにをしたいかによる。ねたか?
まずはNHKをみることがたいせつ
>>487 何のソフトを作るかはまだ決めてないんですが
練習を考えるとまずどういうプログラム組んでみるのが一番ですかね?
あといろんなスレでスペースシャトルの話題出てるなぁ・・・
>>488 プログラムの経験があるのかないのかによっても変わってくるだろ。
練習ならいろんなコンポーネントを並べて、それらを連携させてみるとか。
メモ帳とかならすぐできるぞ。
(´-`)。o ○ (そもそも「何から始めたら…」ってのが理解出来ない。 そんなことすら自分で決められないなら、やらなくてもいいと思う)
491 :
デフォルトの名無しさん :03/02/02 08:53
>>490 正直、サンプルもなくプログラムを作ってしまう人は尊敬する。天才だと思う。
こんな自分でもパソコン操作をたずねてくる人がたくさんいる。
先日、パソコンもかなり慣れただろうっという友人が、
「ワードで貼り付けた複数の絵を一度にサイズ変更できるか?」と訊ねてきた。
自分はそんなことやったことがない。
とりあえず、やってみた。難なくできた。
で、思わず言ってしまった。
「まず、やってみろと・・・」
すると、「判らないから聞いてるんだよ。できれば聞かないよ」と答えてきた。
なるほど・・・
おれが、「モナーの *やさしい* Delphi質問スレ」で質問するのも
答えてくれる人がいるのも、これに近い関係なのかなぁっと。
>判らないから聞いてるんだよ いるよね、努力の方法を知らない奴
>>490 なんとなくソフト作ってみたいと思ってプログラミング始めようとした香具師は
そんな感じになるのは仕方ないんじゃないのか?
漏れも前はそんなこと考えてたし。
>>494 >なんとなくソフト作ってみたい
なんとなくだろうがなんだろうが出来る奴は出来るし出来ない奴は出来ない。
情報は書籍にもインターネットにも腐るほどある。
本屋なんて親切だぞ。「プログラミング」ってコーナーがあるからな。
そこ以外には目的の本はないと明記してくれているわけだ。
要は情報の集め方と言う今のPCを使うに当たって必須の能力が欠如してるってこった。
>>486 作りたいという強い欲求がなければやめた方がよい。
てゆーか俺の代わりにソフト作ってくれ そうだな、Janeに自動巡回機能でも組み込んでくれや。 もちろんサーバ負荷を考えてな。
>>495 都会に住んでる香具師はいいけど
田舎に住んでる18歳未満(っていうか免許ない香具師)だと
近くの本屋になんかちょっとしかプログラミング関係の本ないけどな。
Delphiに関係するのなんて1、2冊。。
まぁネットで調べればいいことだが・・
>>498 兵庫県の山奥に住んでますがね。
5年前の乏しい本環境+ネットなしでもここまで来れましたわ。
人間やる気だなと思う今日この頃。
>>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があるのかと小一時間
>>508 Schemeをやろうというか大学の講義で取ってるだけです。
単位ヤヴァイです。
趣味・遊びとしてのプログラミングなら
>>486 さんみたいなのもアリだと思いますけど.
私はブロック遊びの延長でプログラミングを始めましたが,
ブロック遊びを始めるのに『○○を作りたいから…』
などという目的などありませんから.
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 ← 解放されない もしかして俺の環境だけですか?
>>523 EM_POSFROMCHAR とかGetCaretPosなんかを使ってごりごりかなぁ?
>>449 ありがとうございます。
ただ、DBctrlGridでDBLookupComboBoxのListSourceを設定しようとすると、
「この動作はサポートされていません」と出てしまいます。
DBctrlGridでDBLookupComboBoxはつかえないんでしょうか?
バージョンはDelphi6entです
>>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;
>>525-526 仕様ですか…
メニューアイテムの上にポインタが来たときにある処理をしたいのですが、
どんな方法でやったらいいでしょうか?
TActionのOnHintでは524と同様にうまくいかないので…
>>533 begin
If MenuItemNoUePointa = 1
Then
begin
処理;
end;
end;
ウソピョーン!!
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
SaveDialogとかを使わなくてもできるんですか?
( ゚Д゚) ポカーン
_____________
∧,,∧ /
>>532 さん
ミ,,゚Д゚彡 < TEditorを使ってはどうでしょうか?
ミ⊃ ミ⊃ \____________
〜ミ ミ
∪''∪
_____________
∧,,∧ /
ミ゚Д゚,,彡 < ってのは無しかしら?
⊂ミ ⊂ミ \____________
〜ミ ミ
∪''∪
いまだに、DesignInfo系の問題を
引きずっているみたいで、ちょっと苗ますが・・・
やっぱカップラーメンメーカーの王様は日清だよな。 日清のカップメンはどれもうまい。
555 :
デフォルトの名無しさん :03/02/04 00:38
personalじゃアプリケーションの配布はできないんですか?
>>553 >いまだに、DesignInfo系の問題を
>引きずっているみたいで、ちょっと苗ますが・・・
ぜんぜん引きずっていませんが……
>>555 お金を稼ごうとしなければいいんでないのけ
>>555 バリバリ配布してます。
つーか、ちゃんと書いてあることくらい読め。
どこに書いてありますか?
書いてあるところとはどこですか?
僕たちの心の中に・・・
>>562 全く同じこと書こうとしてた(藁
そして大空にはヤツの笑顔が…。
ParamStrは512文字の制限があるそうですが、もっと長い値を渡したい場合、どうすればいいですか? ファイルに書き出して読み込みでしょうか?
566 :
デフォルトの名無しさん :03/02/04 01:25
>>564 そうですね。TStringListでテキストを読み書きすればいいのではないでしょうか?
pipe
わかりました。それで頑張ります。 (DLL化とかしたらいけますか?
CDからインストールしたのじゃなくてもできるんですか?
できるよ。exeをzipにして配布しろ。
InstallShield Express Custom Edition for Delphiってのをインストールしなきゃ できないと書いてあるんですが、どこにも見当たらないので困ってます
>>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の動的配列版ってないのですか?
>>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 ツール→環境オプション→設定→フォームデザイナ→自動生成とする。
でいけると思います。家ではこれがデフォでチェックされてました。
>>588 できました!
ありがごうございました。
>>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
TMozillaBrowser(Delphi6 Personal上でActiveX取り込みによる) について質問してもいいですか?
すいません。最初の質問に関連してなんですけど、複数のユニットを作成して それらをひとつのプロジェクトとして保存したのですが次にそれの続きを つくろうとして「開く」→「目的のプロジェクトファイル」とやると、最初の ひとつのメインフォームだかなんだかしか表示されず、いちいち全部開いていかないと だめなんですけど一気に全部開くにはどうすればいいんでしょうか?
すいません587でした。上のに加えてプロジェクトマネージャを 起動時に自動で表示させるにはどうしたらいいのでしょうか?
Delのヘルプに「デスクトップの配置」というキーワードを入れてみてから出直してこい。
612 :
デフォルトの名無しさん :03/02/05 20:22
TMozillaBrowserについて質問です。 よくユーザー認証するサイトありますよね?ブラウザのダイアログボックスが出てきてユーザー名とか認証する。 FTPログインとかです。 ブラウザでダイアログを表示したのはいいのですが、どうやってユーザー認証情報をNavigateに渡すのかわかりません。 ですからユーザー認証ページには今移動できない状態です。 ご教授よろしくお願いします。 Delphi6 Personal+up2を使ってます。
614 :
ta-na-ka :03/02/05 22:48
おすすめの本教えてください
>>614 ちばてつや「ハリスの旋風」はマジ最高。買っとけ。
すいません、 ShellListViewで特定の拡張子のファイルのみを 表示させる方法は無いでしょうか?
なんか、コンポーネントとかをたくさん使ってソフトを作ると、 サイズがどんどん大きくなりますよね。 サイズを小さくするコツってないですか? VCLを使わないとかじゃなく。 ちょっとしたことでちょっとサイズが小さくなるとか。
>>616 無理だと思います…。
それらのコンポーネントはあくまでサンプルだと思ってください。
619 :
ta-na-ka :03/02/06 01:19
class使うと何が便利なんですか?
>>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) の帰り値を 設定すれば? 一行に押し込む。って癖は早めに取ったほうが後々よいかと。
>>624 できました。
直接指定してはだめって事ですね。
どうもありがとうございしました。
>>625 いや、ケースバイケース。
Rect って Classes.pas で定義されている関数だから、
@Rect ってやると、関数のポインタをとってきちゃうのよ。
ひとつのまとまった処理をユニットに書いて、 その関数をほかのユニットから呼び出そうとしてるんですが、 うまくいきません。 たとえば、Unit1からUnit2の関数を呼び出したいときはどうすればいいのでしょう?
>>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は入れ替わっているとしか考えられないような気がするのですが・・・。 どなたか、よろしくお願いします。
>>629 「初期化しないローカル変数は何が入っているか不定」
という事ではないのかな?
>>628 ありがとん。参考になりました。
ついでにもうひとつ。
Remainのuses節にReinitって書いてないような気がするんだけど、
何で関数呼び出せるの?
>>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 互換関数だから、意味を考えて別の表現を使ったほうが 物事が簡単になるぞよ。
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(自体)って何で作ってあるのでしょうか?
s
機械語
HS(ry
>>633 インターフェース部 でヘルプをひいてみたら?
>>643 設問がよくわかりませんが、
そういう細かな操作をする場合は Windows エディット コントロール について調べるとよいです
Delphiを購入してるなら、CDROMにある日本語APIヘルプから エディット コントロールの概要が一番良いテキストです
もしかして、WM_VSCROLL かな?
>>650 ヘルプ見たらUnit2ではエラー起きなくなった。
だけど、Unit1では相変わらずエラー。
Unit2で
procedure TForm1.MyProc;
ってなっているのをUnit1で
MyProc;
って呼び出すことは出来ないの?
DelphiはVBで作ってあります
VBはHSPでつくってあります。
某の愛と野望で出来ている。
656 :
デフォルトの名無しさん :03/02/06 15:03
イベントハンドラをわかりやすく説明せよ
>>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ユーザーは、情報の出し惜しみもしないし。
>>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として(?)使うには、どうやるんですか?
StrToInt
675 :
デフォルトの名無しさん :03/02/06 18:43
ボタンを押すと1づつ加算されていくコード Label1.Caption := StrToInt(Label1.Caption) + 1; こんなかんじでやってみましたが互換が無いそうです
ちがうってば a := StrToInt(Label1.Caption):; a := a+1; Label1.Caption := IntToStr(a); 変数の型にきをつけれ
aをVariantにしたら a := Label1.Caption:; a := a+1; Label1.Caption := a; って書けないかな
678 :
673,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にパーソナルエディションってあったっけ??)
>>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)しちゃって、 「ちょっと待ってね♥」とか 出しておく(藁
マウスは常に止まっている 動いているように見えるのは残像がもたらす錯覚だ。
usesにユニットを追加した場合、 完成バイナリはそのユニットの中身全部を含むのでしょうか? 例えばmathユニットのMAX関数のみ使った場合、 mathユニット全部含まれてしまうのでしょうか?
>>696 俺も
>>699 と同じデジタル思考の人間ですが、
その答えは、マウスを動かす手が動いているかどうかだと思います
たとえ、残像でマウスが動いているように見えるだけでも手は動いてるんです
俺は、その手が動いてるかどうかを判定したいんです
>>630 返事遅くなってすみません。
>「初期化しないローカル変数は何が入っているか不定」
・・・と言うことは、Result BもF2の戻り値で、
F1からF2が呼び出されたときに、
F2にF1が勝手に代入されてしまった、ということでしょうか?
俺もよく知らないですが、前教えてもらったことには
∧,,∧
>>701 さん
ミ,,゚Д゚彡 そういうことはないそうです
ミつS(ミ スマートリンクってって
Max関数のみの分がバイナリになるらしい
でしが。実際は
VCLではユニット内にinitializationが
結構使われているらしく、
これに書いた文はusesするだけで
起動時に実行されるため、
usesするだけで結構な量のコードが
リンクされて、気が付かずusesしてると
Exeのサイズはびっくりな大きさになります。
>>705 それは、どういうことですか?!手は動かない・・?
707 :
デフォルトの名無しさん :03/02/07 01:06
入力カーソルについての質問なのですが、 Form1上に複数のTEdit(例えばEdit1, Edit2, Edit3)が存在するとして、 Edit1〜3と入力をしていき、その値である処理をしたいとします。 Edit1〜3の入力が完了したら、TButtonの処理により必要な処理がされ、入力データはクリアさせます。 このとき、入力カーソル(点滅する「T」のこと)をEdit1に再度移したいのですが、 TButtonの中で指定できる項目や、または他の方法で実現できる処理がありますでしょうか?
Form1.ActiveControl
SetFocus?
反応も薄くなってきたので、マウス監視する技を伝授してください!
>>708 おお、できました!
しかも即レスでホント助かりました。
ありがとうございました。m(_ _)m
712 :
デフォルトの名無しさん :03/02/07 01:34
713 :
デフォルトの名無しさん :03/02/07 01:37
'やさしいDelモナー'は居ないのですか?;
OnMouseMoveで き ま り だ!
モナーが優しいわけではない
>>712 OnMouseMove?調べてみるかな
>>715 10こくらいみたけど、マウス監視の話からずれたものが多かった
Delphiで〜を監視するには、みたいな
つか何がしたいんだよ
OnMouseMove イベントは,ユーザーがマウスポインタをコントロール上に置いてマウスポインタを移動したときに発生します。 ウィンドウの外で動かしてる部分は駄目なようですね・・・ デスクトップ全体を動いてるマウスを監視したいんです 最強のプログラマーの方お願いします
GetMousePos
マウスが動かしてる時だけに音を流したいんです ピピピピピピピとか
だからタイマー使えと何度言わせれば(略
「GetMousePos Delphi」で検索したら、なんと1個だけ。しかも難解 デルファイの情報少なすぎる!! しかも、GetMousePosをヘルプで検索しても出てこない! どこまで情報を少なくしているんだボーランドは
GetMousePosって、検索した範囲では個人の実装しか出てきてないような。 APIだとGetCursorPosですし。 そもそも何がしたい? 手(マウス)が動いているかどうかなら、カメラを付けて画像処理だ。 マウス「カーソル」ならAPIでもOnMouseMoveでもOK。
そろそろやめような。 ひとつひとつ吟味してからにしろ。 荒らしと変わらなくなるぞ。 タイマーだっつーの。
エサをあたえないでください
タイマー貼り付けますた(・∀・)
この情報社会といわれる現代で、 こんなに情報が乏しいなんて信じられません・・・ みなさんは、どうやって最強の座に上り詰めたんですか?
わかりました。じゃあ、小一時間タイマーを使い倒してきます
>>728 ちゃんと探せばいくらでも情報があるんだけど
「GetMousePos」みたいな関数名を自分で思い込んでしまうと
思ったような情報は引き出せないよね
検索方法をいろいろ工夫してみるといい結果が得られると思うよ
もっとも、ヘルプの上手な調べ方を覚えるのが先だけど
OnMouseMoveの使い方(コーディング)が分からなかったので GetCursorPosでインターバル1でマウスの動作を判定するようにしました お父さんお母さん、ボキはなんとかデルファイを続けられそうです
タイマーで監視? まぁ、Del厨の頭じゃCPU食う方法しか思いつかないでしょうな(藁
テポ テポヽ(゚∀゚)人(・д・)ノドン ドン! テポヽ(・д・)人(゚∀゚)ノドン ドン!
Delphi6 Personalで使えるフリーのFTPコンポーネントみたいなのって無いですか?
タイマー使って前のポインタの座標と現在のポインタの座標が違ってたら動いてるってこと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 の値が異常なんだとおもう。
>>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に置き換えましたが
うまくいきませんでした
根本的に何か間違っているのかな?
>>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のソースでも何でもよいので
インスタンスの管理の参考になるものは
何か無いものでしょうか?
フォームの親を 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 にします
>>752 さん
返信ありがとうございます
TComponentList ...早速ヘルプで見てみました
、、なんだか便利なクラスのような気がする・・・
ぐらいしかわかりませんでした
これからじっくり勉強してみようと思います
FormInfo.FormOpenの記述、メモリの管理は
ぼんやりわかりかけてきたのですが
TForminfoをRecordからTComponentListに変更すると
FormList.Addの部分
>>744 はどうなるのでしょう?
FormListの目的は各目的毎に作成しているFormを
アプリのメインフォームのOnCreate時に追加(FormList.Addを使って)
その後、Open,Closeは設定したFormNoのFormName起動したいと思っています
物わかりが悪くて、すみません
よく判らないけどこうかな 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;
まてよ。 FormNo は必要かな? 識別出来る番号ならIndex でいいんじゃないの? FormNameも必要かな? クラスを渡してるんだから FormNameはClassName で代用すべきじゃないの? となると、 TFormList. は TClassListでいいんじゃないの?
DLL作ってフックしろって
ていうかお前らどうやってDelphi勉強したの? 俺の探し方が悪いんだか知らんが、基礎的なことが書いてある ホームページしか見つけられなかったんだが・・・ なんかいい勉強法教えてくれよ。
返信ありがとうございます FormNo, FormNameをForm毎に指定する意味は Open(FormName);等で指定するためです (普通はForm.Captionを入れようと思っています) FormNoはIndexではなくそのFormの固有の番号を想定しています また、OpenFormは二つ以上のインスタンス作成は許さず もし既にインスタンスが作成済の場合はそのFormを一番手前に もってくるような形にしようとしています もしかしたら端から見た場合、おかしな事をしているのかも・・・ すみません、ごちゃごちゃ書いてしまって・・・
>>757 さん
私は本屋にあるDelphiの本という本を買うか
立ち読みしまくっています。
そばに誰も教えてくれる人もいないので
そのような勉強法になっています(^_^;
>757 まず何を作るかを決めて、 簡単そうな機能から、ヘルプとメーリングリストの過去ログ、Googleで調べながら、実装していく。 最初はヘルプの内容もよく理解出来なかったりして苦労するけど、 だんだん解ってくる。
ずっと前にDLL作ってフックしたことがある。 したら、自分のウィンドウの外は正常にマウスを捕まえられたが、 自分のウィンドウ内がうまくいかなかった記憶がある。 なんでだったかなぁ。 とにかくそのときは見えないウィンドウ作って誤魔化したと思う。
>>758 2つ以上のインスタンス作成を許さなく、かつApplicationを親にするのなら
1、FormNoは自分のフォームのベースメンバーにする
2、FormNameはフォーム.Name を使う
procedure MyFormOpen(TForms: TTestForm; No: Word; Name: String); という感じの手続きを作り
既にフォームがあるかどうかは
FindComponent で 検索出来ますし、
if Application.Components[i] as TForms then ・・・みたいに検索しても早いですから
既に作成されていれば、それを、でなければ 新規作成
という方法が一番スマートで簡単かと思います。
>>763 返信ありがとうございます
早速返信していただいた内容で
試してみたいと思います
(また困った事があったら書き込んでしまうかも?)
長い間、本当にありがとうございました
関数作ってみた。 こんな感じ 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 ひとつ上の兄弟ノードが、子ノードを持っていた場合だめじゃない?
あっ!すまん
>>767 返信っつーとまるでメールみたいだニャ
「返信!」
「ライダー返信!」
「返信V3!」
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 エラーが出ますと良いながらエラーメッセージを書かない。
エラーメッセージを読んでないってこった。それで解決出来る訳がない。
>>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));
On抜きましたけど、 procedure Paint(var Msg: TMessage); message cm_Paint; でもエラーになるんです。 OnPaintの時はどうすればいいのでしょうかね。
ぅぉ! 誰も返信してくれてない…
WM_PAINTじゃないの?
「F9キーが押されたとき」、処理を実行するにはどうすればいいでしょうか?
OnKeydownイベントで引数Keyの値がVK_F9だったときに実行する。
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って順番で出るんだけど もっとランダムにできないの?
>>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
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 ちゃんとスコープ当たりから叩き込んでやるのが親心だと思うけど。
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だかのありかを教えて頂けませんか?
>>816 「DesignIntf」でテキスト検索したんですが、
「del6vcl.hlp」というヘルプにしか書かれていませんでした。
また、この内容も「DesignIntf」の使い方のみでした。
DesignMenusについては書かれてもないし…
ひょっとして知らん間に消したのか……?
再インストールしたら直らんかなぁ。
818 :
デフォルトの名無しさん :03/02/09 02:28
TQueryでSQL.Text := 'SELECT DISTINCT 'サンプル' FROM test'; のようにtestファイルからサンプル項目内の情報を重複なしで取得、というのは TTableを使った場合どのようにすれば同様にできますか?
>817 ちょい設計が悪いコンポーネントかも。 プロジェクト→オプション→パッケージ→実行時パッケージを使うにチェックして、designideを追加。
>>819 うぉっ!いけた!
すげぇです。感動です。あなたが神に見えます。
マジでありがとうございました。
最近、「Delphi Q & A 掲示板」とここに分かりやすいマルチしてる ヤツがいる。 マルチはカスのやることだと思い知れ。
俺カスだからマルチって良いんですね♪
>>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.
830 :
デフォルトの名無しさん :03/02/09 14:52
(*´д`*)アハァ…
>>827 Schemeに乗り換えれ。
すばらしい世界が待ってるぞ!
832 :
デフォルトの名無しさん :03/02/09 15:13
>>827 TTSに乗り換えれ。
すばらしく笑われるぞ!
834 :
デフォルトの名無しさん :03/02/09 15:48
TWebBrowserの画面に表示されているページにあるボタンを 自動的にクリックさせるにはどうしたらいいんですか?
>>833 TTSはそこらの半端な人間には使いこなせません。
836 :
デフォルトの名無しさん :03/02/09 16:05
>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でええやん
すいません。 GetCaretPosはProtectedなので呼び出せないのですが、どうすればいいのでしょうか?
プロテクトを外す。
すいません、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); で前面にもってくるのが素直な反応でよろしいかなと。
>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を指定しても出来ませんでした。
>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
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の方が良いと思います。
あのう、TEditorって有名なシェアウェアあるじゃないですか? これから派生したらしいTEditorEXというコンポーネントがあるんですが、 こちらはどうやらフリーなようなんですよね。 これって・・・みんなこっちの方使っちゃいません? それともなんか本家にはない欠点見たいなものがあるんでしょうか?
TEditorEXのreadme.txtより >TEditorEx では、本田勝彦氏の2つのコンポーネントとbmonkey氏の >コンポーネントが必要です。 >・・・ >TEditorExはフリーウェアですが、TEditorはシェアウェアです。 >使用するにあたって本田勝彦氏への送金をお願いします。
ああ!なるほど。 チッ
>>884 なんか意味不明だね。勘違いして「完全なフリー」と思っちゃった人は
大変だ。いるかどうか知らんけど。
887 :
デフォルトの名無しさん :03/02/12 00:27
作成したフォームを、常に他の特定アプリケーションの前面にだけ表示する方法を教えてください 他のアプリケーションに張り付いたような感じにしたいのです
>>887 MDIにするかそいつを親として登録するか。
889 :
デフォルトの名無しさん :03/02/12 00:54
>>887 procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.WndParent:=FindWindow('IEFrame', nil);
end;
>888 ありがとうございます。 こんなんで、なんか動きました。あってますか? SetWindowPos(TargetWnd,Form1.Handle,0,0,0,0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);
モジュール自体がBSD, GPLなものはないでしょうか?
>893 うまくいったと思ったら、だめだった... 全然無関係なアプリをアクティブにしてから、 張り付いたアプリをアクティブにしようとしたときに、うまくいかないようです 他の部分が悪さしてる気もするので、今、見ていますが、 何か間違ってるようでしたら教えていただけるようお願いします。
やっぱり、根本的に違ってる気がしてきました 正解お願いしますです
>>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;
898って、以前から馬鹿だのアフォだの言ってるやつだろ こなきゃいいじゃねーか なんでここでえらそうにしてんだ?ばかか
>>904 >ばかか
これがなきゃ至極まっとうな発言だったんだけどな・・・。
906 :
デフォルトの名無しさん :03/02/13 03:39
TWebBrowserコンポーネントのNavigateメソッドで、HTMLファイルを読み込むと、 一回目はおかしな表示になってしまいます。 同じファイルをもう一回Navigateメソッドで表示すると、今度は正しく表示されます。 何が原因なのでしょうか?
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 メモ帳がその機能をサポートしていないなら起動しているメモ帳を検索して操作する。
メモ帳を表示の件のプログラムは別にできなくても差し支えないのですが、例えば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等を使う。
>ShellExecuteじゃ無くて、shdocvw.pas(shdocvw_tlb.pas)のTInternetExplorer等を使う。
すいません。何の事かまったく意味が分かりません。
お手数ですが、
>>912 で書き込んでいる事を実現するチュートリアルみたいな手順を誰か教
えてくれないでしょうか?
KeyPressでもKeyDownでもVK_CONVERTが捕まえられません。 どうすればいいですか?
起動直前にメモ帳検索して全部killしてからshellexecuteしろ
Delphiでユニコードをそのまま(SJIS変換しないで)表示する方法教えてください。
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 すごいっすね ソースコード意味不明ですが、感謝です
>>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
で、いつまで?どるぱい?
>>932 マウスキャプチャって何ですか?
Windousの昨日のようですが。
教えていただけるとありがたいです。
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ´∀`)< . Delモナーがどんな厨房疑問でもやさしく答えます。 ( ) |. Delモナーは時に私であり、時には別の人。 | | | |. 他のスレに書き込んで罵倒される前に、ヘルプ、過去ログ見ろ! (__)_) \_________________________
>>928 実行してみた。感動した。
ばってんD7up1+Win2Ksp3だとMouseDown時にカーソルが変わらんとです。
Cursor:=crDrag;の次にUpdate;と入れてみたけどだめでしたとばい。
どうやればよかとですか?どうか教えてつかぁさい。
∧,,∧ ミ,,゚Д゚彡 ミつ日(ミ DelマガにGrabhandle コンポーネントがありますよ。 THUMBHDL って名前の圧縮ファイルだったような。
TBitmapにはキーカラーを透過させてコピーする機能が無いようですが、やはり派生クラスを作らなくてはいけないのでしょうか? ('A`)ノ マンドクセ
>>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にはポインタがありません。
了解 まあ、アホやらバカやらになりたい時もあるさ そういう時に使うものって結論で
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^);
この例に限らず速度は一緒だと思うけれど。
>ポインタを使わなくても同じことが出来るけど
ポインタなしで削除、追加の自由自在なリストを作ってください。
>特に変数パラメータとか動的配列とかは遅い。
上で散々もめてるのに・・・
いいかげん参照とポインタをごっちゃにして考えるのやめろよな。 参照使ってリストを作れないは氏ね。
わかりやすいソースを教えて欲しいのですが…。本を見ると944や 958みたいなのしか載ってなくて理解できません
>>960 有用性に疑問があるの? それとももっと前の段階?
リンクリストは、まあクラス使えで済まされちゃったらそれまでだから、
文字列を扱う時、特にメモリ上にデータがある場合の
パーサを作る場合は、ポインタを使って参照するのが便利ってのはどう?
パーサは、【現在の文字】 が該当するなら処理して【次の文字にする】ってのが基本になるんだけど
ポインタを使わないと 最初に現在の文字が無いから、一文字だけ先読みする必要があるわけ
コレは慣れないと最初苦痛だし、理屈が判らないと読み辛いもんがあるけど、
ポインタを使えば、ポインタで文字を参照すればいいから、先読みの必要がなく頭の中もスッキリ
ってな話じゃ判らないかな・・・・
以前、フォルダ削除のことを質問した者です。 複数のフォルダがあって、すべてを削除できるか調べて、すべてを削除でき るならRemoveDirectoryを実行したいのです。エクスプローラで開かれていて 削除できないなどの理由で、一つでも削除できないフォルダがあれば、一つ も削除したくないのです。 何かいい方法はないでしょうか?
>>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を呼び出すことでディレクトリハンドルを取得できるから、
それでフォルダが削除可能かどうかを調べるというのは?
補足:上のGetFileTimeは情報が不要な場合はパラメータにnilを指定できるとします(参照:Windows.GetFileTime)。
レスありがとう。
今のところ、一度削除するフォルダとファイルをコピーしておいて、エラーにぶ
つかったら、それまでに削除したフォルダとファイルを戻す、という風にしてい
ます。だけどこの方法は、とてもスマートな方法とは言えない。
>>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;
あと少しだけ、お・ね・が・い♥
亀レス申し訳ありませんでつ。
>>937 見てみまつ。あ、今月号(?)買ってないので明日買うでつ。
>>941 明日やってみまつ。(会社にソースがあるでつ。明日も会社出るでつ)
ありがとうございますた。
日本語の環境で作ったソフトって、メニューとかメッセージとかをアルファベットに変えておけば、 ローカライズって言うのをやらなくても英語環境で使えますか?
>>975 例外が思いっきり日本語で笑えなかったりとか。
なるほど。ありがと。 あともう一つ聞きたいのだけど、エクセルのマクロでプログラムに興味がでて、 Del7を買ってみたのだけど、言語ソフト?のヘルプってプログラマ対象だから、 趣味のレベルの人間にはわかりずらいのですか?
>>977 >わかりずらいのですか?
正直、日本語の読み書きが不自由な人には大変かと。
>>971 ,974
ありがと♥ なんとかできそう。
>>977 >言語ソフト?のヘルプってプログラマ対象だから、
>趣味のレベルの人間にはわかりずらい
↑あたしも最初はそう思ったけど、初心者向けのdelphiのHPって結構あるから
そういうとこである程度勉強するとhelpもわかるようになる。
あたしは最初は Seventh Delphi ばかりみてたよ。
∧ ∧ 〃⌒ ヽl|l) / rノ ; Ο Ο_)
∧∧ /⌒ヽ) i三 ∪ ○三 | (/~∪ 三三 三三 三三
このスレで答えてる奴って、リアルでは生きていけそうもない感じがするのですがどうなんで ございますでそうか?
984 :
次の方、どうぞ。 :03/02/17 18:07
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ´∀`)<. Delモナーがどんな厨房疑問でもやさしく答えます。 ( ) .| Delモナーは時に私であり、時には別の人。 | | | | 他のスレに書き込んで罵倒される前に、まずここで質問しよう。 (__)_) \_________________________
Delモナーの正体は誰ですか?
>>985 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´∀`)<. そんな厨な質問には答えられません。
( ) .\________________
| | |
(__)_)
なんでフサギコに変わってんだよ(藁
_, ._ (´`c_,'` )
_, ._ ( ゚ Д゚) ( つ旦O と_)_)
_, ._ ( ゚ Д゚) ( つ O と_)_) 旧 ガシャ
_、_ ⊂( ,_ノ` )つ-、 /// /_/:::::/ |:::|/⊂ヽノ|:::| /」 / ̄ ̄旦 ̄ ̄ ̄/| /______/ | | | |-----------| |
| |`Д)ノ | | ノ |_| | | | ̄| |_| |文| | ̄| | |
┌──────────┐ | _ _ ぶ | | / _)=∩=∩=_) ら | | | | ∧ ∧| 下.| | | | ( ゚Д゚) が | | | | | | . り | | | | |,| 健 | |● | | ∫UU . も 康 | | |_|__|_| ら 器.| | 2 \_ \ っ を | |点  ̄ ̄ ̄ た | └──────────┘
┌──────────┐ | _ _ ぶ | | / _)=====_) ら | | | | || 下 | | | | Λ||Λ が | | | | ( /⌒ヽ り | | | | | | |. .. .か | |● | | ∪亅 | 間 た| | | | ∪∪ 違 を | | |_|__|_| .. え. . | |1 \_ \ る . .| |点  ̄ ̄ ̄ .. . | └──────────┘
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。