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

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

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

1 :デフォルトの名無しさん:04/04/03 23:47
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、お礼はDelphiの布教と初心者の
救済をお願いします。

<前スレ>
Delphi相談室(超初心者用)その11(実質その12)
http://pc5.2ch.net/test/read.cgi/tech/1076610073/

<関連スレ>
Delphi相談室(中級者以上)その12
http://pc5.2ch.net/test/read.cgi/tech/1064420818/
Delphi相談室(上級者用)その12
http://pc5.2ch.net/test/read.cgi/tech/1064766880/
【ドキュメント】Delphi8 for .NET 2【どこ?】
http://pc5.2ch.net/test/read.cgi/tech/1078695271/
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その12
http://pc5.2ch.net/test/read.cgi/tech/1076095856/

<その他>
ボーランド
http://www.borland.co.jp/
DelWiki
http://onigiri.s3.xrea.com:8080/delphi/


2 :デフォルトの名無しさん:04/04/03 23:48
<過去ログ>
12 http://pc5.2ch.net/test/read.cgi/tech/1076610073/
11 http://pc2.2ch.net/test/read.cgi/tech/1074523803/
10 http://pc2.2ch.net/test/read.cgi/tech/1074523803/
09 http://pc2.2ch.net/test/read.cgi/tech/1071294733/
08 http://pc2.2ch.net/tech/kako/1068/10682/1068201045.html
07 http://pc2.2ch.net/tech/kako/1065/10651/1065195699.html
06 http://pc2.2ch.net/tech/kako/1063/10632/1063202727.html
05 http://pc2.2ch.net/tech/kako/1061/10610/1061090908.html
04 http://pc2.2ch.net/tech/kako/1058/10588/1058834815.html
03 http://pc2.2ch.net/tech/kako/1055/10559/1055986736.html
02 http://pc2.2ch.net/tech/kako/1053/10537/1053757982.html
01 http://pc2.2ch.net/tech/kako/1051/10518/1051882835.html

3 :デフォルトの名無しさん:04/04/04 01:31
3げっと。

4 :デフォルトの名無しさん:04/04/04 01:55
>>1
乙です

で、早速ですが

procedure TForm1.Button3Click(Sender: TObject);
Var
 FS: TFileStream;
 S: String;
begin
 If OpenDialog1.Execute Then Begin
  FS := TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
  Try
   FS.Read(PChar(S)^,FS.Size);
   Memo1.Text := S;
  Finally
   FS.Free;
  End;
 End;
end;

1バイトも読み込まれず、Read を ReadBuffer に変えると「ストリームの読み込みエラー」になります。
Read する直前に FS.Size を調べたところファイルは正しく開かれているようなのですが…
一体に何が間違ってるのでしょうか?

5 :デフォルトの名無しさん:04/04/04 02:11
ガン( ゚д゚)ガレ

6 :デフォルトの名無しさん:04/04/04 02:38
if FS.Size > 0 then begin
 SetLength(S, FS.Size);
 FS.Read(S[1], FS.Size);

7 :デフォルトの名無しさん:04/04/04 02:42
>>6
出来るようになりました。
ありがとう御座います。

8 :デフォルトの名無しさん:04/04/04 02:48
何で Lines.LoadFromFile を使わないの?

9 :デフォルトの名無しさん:04/04/04 03:05
>>8
遅いからじゃないの?
オレは使わんなぁ。
さらに言うと、TFileStreamじゃなくてTStringlist使うな。オレだったら。

10 :デフォルトの名無しさん:04/04/04 10:09
>>9
> 遅いからじゃないの?

ほんとにおそいの?
Lines.LoadFromFile() は TFileStream を使って LoadFromStream() してる
し、TStringList を使うのより、速いのでは?

11 :デフォルトの名無しさん:04/04/04 14:00
Delphiとは直接関係はないのですが
Indyコンポーネントについて質問させてください。
IndyはTCPを利用した通信において、ブロック単位を保証してくれるのですか?
WriteBufferを利用してクライアントが800B送ったとしたら、受信側である
サーバーは受信バッファが800Bに達するまで待ってくれるのですか?
(800B送ったら、受信側も必ず800B受信できることを保証するものですか?)
どうしてもTCPでパケット単位の処理をしたいので…
教えてください

12 :デフォルトの名無しさん:04/04/04 15:00
>>8
いえ、Memo1に出しているのは読み込みの確認の為で、実際にはメモリ内での処理だけです。
>>9
TStringsのソースでは>>10 のようになっていたので。

13 :デフォルトの名無しさん:04/04/04 17:38
>>12
どうも余計な口出しをしたようで失礼しました。

ちなみに私は可変長のバッファを扱う場合、原始的な動的変数を使うことが
多いですね。文字列しか扱わない場合は TStringList ですが。
動的変数は全部手動でやらないといけない反面、今回のような勘違いによる
トラブルは起こりにくいと思います。
何が一番速いかはよくわかりませんです。

14 :デフォルトの名無しさん:04/04/05 09:30
> 動的変数は全部手動でやらないといけない反面、今回のような勘違いによる
> トラブルは起こりにくいと思います。

動的変数って何? 動的配列のこと? なら、SetLength() しなきゃならないのは
同じでは?


15 :デフォルトの名無しさん:04/04/05 14:07
manifestを組み込んだソフトにおいて、
設定でビジュアルスタイルの適応の有無の切り替え方のできる方法があれば教えてください。

16 :デフォルトの名無しさん:04/04/05 14:10
クラシックスタイルとXPスタイルを切り替える

17 :15:04/04/05 14:33
>>16
そういう意味ではなくて…
秀丸の動作環境設定の、「XPのVisual Style表示」
のような動作を実現したいです。

18 :デフォルトの名無しさん:04/04/05 19:16
DelphiでAownerになるのはコンポーネントか親フォームですよね?
VCでこれに代わるものは何でしょうか?

Delphiで引数が(AOwner:TComponent)となっているのを
VCで使いたいんです。


19 :デフォルトの名無しさん:04/04/05 19:18
無理
NULLでも突っ込んどいたら。

20 :デフォルトの名無しさん:04/04/05 20:37
>>14
動的変数は GetMem で作成する名前なしのメモリ空間のことです。
作成や解放などメモリそのものの管理を手動で行わないといけない代わりに
どんなデータでも格納することができます。
長い文字列や動的配列も動的変数の一種ですが、メモリ管理は Delphi が
勝手にやってくれます。

21 :デフォルトの名無しさん:04/04/05 21:08
NewしてTListに格納。大好き

22 :デフォルトの名無しさん:04/04/05 21:12
>>20
レスさんくす

> 動的変数は GetMem で作成する名前なしのメモリ空間のことです。

それを「動的変数」というのははじめてききました。

> 作成や解放などメモリそのものの管理を手動で行わないといけない代わりに
> どんなデータでも格納することができます。

はい、そうですね。書き込み・読み出しは Move() でやるわけですね?
わたしは普通そういうときは、TMemoryStream のインスタンスをつくって、
SetSize() で領域を確保します。そうすると、Write() や Read() などの
メソッドがつかえたり、Position プロパティーで任意のオフセットに移動で
きたり、ファイルへの読み書きも簡単です。またインスタンスを Free すると
メモリの解放も自動的に行えます。以前は GetMem() FreeMem() を愛用して
ましたが、いまはもっぱら TMemoryStream を使っています。

23 :デフォルトの名無しさん:04/04/05 21:15
http://www.borland.co.jp/tips/delphi/dh002/dh_17.html

24 :デフォルトの名無しさん:04/04/05 21:23
今日Del6 personalをインストールしました。
初めてのプログラムとしてメモ帳をタブ化したいと思っているのですが、ずぶの素人の
私にでも出来るのでしょうか?

25 :デフォルトの名無しさん:04/04/05 21:24
>>24
本物のメモ帳をタブ化したいの?
それともタブ型のメモ帳クローン?
まぁどっちもできるよ。

26 :24:04/04/05 21:40
>>25さん、どちらの方が簡単でしょうか?
なにぶんプログラムなどはじめてでして。

27 :デフォルトの名無しさん:04/04/05 21:47
ガン( ゚д゚)ガレ

28 :デフォルトの名無しさん:04/04/05 22:35
>>26
はじめてなら両方とも難しい。
まずは普通のメモ帳をつくりなされ。

29 :デフォルトの名無しさん:04/04/05 22:36
>>26
文字コードとかにこだわらないならメモ帳もどきの方が簡単かな。

30 :デフォルトの名無しさん:04/04/06 00:06
チュートリアルはやるべきかやらざるべきか(藁
せっかく門戸叩いても、「無いものを使え」って書いてあるチュートリアルってのもなぁ。
まぁ過ぎた話ではあるが。
幸い、オレはやらなかった。

31 :Cappuccino ◆OTxNmva8vI :04/04/06 01:56
Windows XP SP2 RC1を入れたらデバッガが使えなくなったのですが、どうにかなる方法ご存知の方いらっしゃったらお教えください。
ttp://cafe-au-lait.ath.cx/img/d6err.png みたいに出て、そのあと固まります。
Delphi6で、一応Borlandから出ている修正はすべて当ててます(RTL Update #3まで)。

32 :デフォルトの名無しさん:04/04/06 02:57
XP RC2 で修正されていますから、それまでお待ちください。

33 :デフォルトの名無しさん:04/04/06 04:02
出典
ttp://groups.google.co.jp/groups?selm=40616c0f%241%40newsgroups.borland.com

>The D7 debugging issue seems to be caused by a bug or breaking change in
>RC1 - appearantly this is being fixed for RC2 - see thread below.


34 :Cappuccino ◆OTxNmva8vI :04/04/06 04:06
やっぱりどうにもならないよね・・・待つしかw
別マシンでしばらく組むことにします。

35 :デフォルトの名無しさん:04/04/06 04:17
XP SP2 はいわゆる「ベータ版」なのですから、これくらいの問題は予想しておくべきでしょう。
で、SP2/RC1 をアンインストールすれば問題ないでしょ?

もしあなたが Windows Beta ユーザーなら RC2 をダウンロードできますが.

OS のベータ版なんて一般公開するもんじゃないだろうに > MS

36 :Cappuccino ◆OTxNmva8vI :04/04/06 04:48
XP SP2はアンインストするとIEに不具合出るらしいです。

37 :デフォルトの名無しさん:04/04/06 05:53
じゃ、己の不幸を呪うがよかろう。

RC2 は一般公開されないから、もう RTM まで待つしかないか。どれくらいかかるかな。


38 :Cappuccino ◆OTxNmva8vI :04/04/06 07:08
一般公開するらしいよ?

39 :デフォルトの名無しさん:04/04/06 07:17
XP SP2 RC2 も公開するの?
今の時点で日本語版が出てないが時間的に間に合うのかな?


40 :デフォルトの名無しさん:04/04/06 08:51
>>38
えーと、今使っている XP SP2 RC1 のビルド番号はいくつですか?
コントロールパネルのシステムで確認できると思います。

41 :デフォルトの名無しさん:04/04/06 10:58
D6 Update#2 を当てない状態だと RC1 でも動くことを確認しました。
BorDbg60.dll を使うようにすれば、当面は回避可能。
さてさて。

42 :デフォルトの名無しさん:04/04/06 11:17
はいよ。

[HKEY_CURRENT_USER\Software\Borland\Delphi\6.0\Debugging]
"Dbk ClassID"="{092E9CC0-071B-11D3-83A5-00C04F6BC736}"

結果教えてね。

RC2 が出たらこのレジストリを取り去ってください。

43 :デフォルトの名無しさん:04/04/06 16:17
海外のコンポでDBCtrlGridを継承したものありますか?
付属のものだと、ちょっと不満足なので

DBGridを拡張したコンポですといろいろと見かけますが
DBCtrlGridを拡張したコンポは、どこにもみあたらなかったので・・・

44 :デフォルトの名無しさん:04/04/06 16:40
>>43
DBCtrlGridは使い勝手よくないからねぇ。DBCtrlGridじゃなければならない
理由は何かな?
「もしGrid上に任意のコントロールが乗っていることが必要」と言う理由ならば
ここがお勧めです。
http://www.devexpress.com/

CheckBox, LookupComboBox, RadioButton, カレンダー, ボタン,
MaskEditなどを乗せることができるし、1レコードで2行以上の
行を表示することもできる。
これ以外の理由でDBCtrlGridを使う理由があったら教えて。

45 :43:04/04/06 18:58
ご回答、ありがとうございます

QuantumGrid、いいですよね〜
これと似たのでTMSのGridもありますね

実は以前、DBGridの継承コンポを使い、入力フォームを作っていましたが
DBGrid継承のコンポーネントですと、個々の入力の制御が(特にフォーカス関連)
インプレースエディッタがらみ(しかもprotectedだし)でいろいろ弄るしかなくコードも乱雑になってしまったもので・・・
また、行レベルで各コントロールの表示の有無、フォーカスの順序などが変わるような機能を付けた場合
DBGrid継承のコンポですとなかなか難しいような気がします

そこで、DBGridからDBCtrlGridを使い、各DBEditに細かい事を書き込もうと思ったのですが
普通はそう言うことしないものなのでしょうか?
(でも、標準のDBCtrlGridだといろいろ問題が・・・ 
スクロールのバグやXPStyleのバグやらいろいろ不都合があったので)

売上伝票などの複数のレコードを登録する必要が有る場合(現在のData構成がそうなってます)
どういったコントロールで入力するのが普通なのでしょうか?

なんだか、まとまらない文章でごめんなさい、、、

46 :Cappuccino ◆OTxNmva8vI :04/04/06 20:17
>>40
2096です
>>42
実行できましたー。ありがとうございます。

47 :デフォルトの名無しさん:04/04/07 00:18
2000/xpで動かしているDOSアプリの仮称:abc.exeっていうのが
あるのですが、button1で終了、button2で再実行させたいのです。
DOSプロンプトから実行しているときは、停止させるには
ctrl+cを実行する以外に手はありません。
諸先生方、なにとぞHELPを。


48 :デフォルトの名無しさん:04/04/07 01:01
DOSアプリでボタン?

49 :デフォルトの名無しさん:04/04/07 01:13
ctrl+cをエミュればいいじゃない?
keybd_eventで調べれ

50 :デフォルトの名無しさん:04/04/07 01:28
button1 を押したとたんフォーカスが移動して keybd_event が効かなくなるんじゃ・・・・

51 :デフォルトの名無しさん:04/04/07 01:42
質問します。

dprファイルで宣言した変数はそのファイルからusesしたユニットで
扱うことはできないんですか?

52 :デフォルトの名無しさん:04/04/07 02:41
>>51
似たような質問をしたら、自分で調べろと言われたよ!


53 :デフォルトの名無しさん:04/04/07 02:55
>>51
ユニットの方でプロジェクトファイルを uses できないので使えない。

そもそもプロジェクトファイルだけがメインルーチンなのに、サブルーチン
に相当する *.pas のほうからアクセスするのは変。

54 :デフォルトの名無しさん:04/04/07 08:41
そう。別にユニットを作って宣言すればいいだけの事だと思う。

55 :デフォルトの名無しさん:04/04/07 12:38
>>52
超初心者という言葉に甘んじてしまいました。
軽率な行動を取らぬようにします。

>>53 >>54
そのように指摘していただくともっともな話だと思えます。
勉強になりました。どうもありがとうございました。

56 :デフォルトの名無しさん:04/04/07 13:53
>>50
BringWindowToTopとかSetForeGroundWindowってDOS窓には使えへんの?
アクティブになる前にSleep(100)とか挟まないとうまくいかない

57 :デフォルトの名無しさん:04/04/07 17:26
>>56
うまくいくならそれでいいじゃないか(・∀・)ニヤニヤ

58 :デフォルトの名無しさん:04/04/07 18:48
------------------
これ以外にもレジストリの書き換えで Windows に DLL を開放させる
方法もありますが、この場合に DLL の開放処理が呼び出されるかどうか
は未確認です。方法は AlwaysUnloadDll をキーに google して見て
ください。
------------------


59 :デフォルトの名無しさん:04/04/07 18:49
ttp://www.h3.dion.ne.jp/~tokky/p21.htm より。

...つまり、かつて多くの人がメモリの無駄をなくしたいと思っており、プログラマーの間では知られていた
「シェルが利用してる DLL を解放する設定」の話が、いつしか「不要な DLL をメモリから解放する」という
誰もが見ていた夢の話にすりかわっていたのではないか。そんなようなパターンで広まった俗説ならいくらでも
ありそうである...




60 :デフォルトの名無しさん:04/04/07 18:50
------------------
ライブラリのブロックの実行部には,ライブラリの初期化コードを記述します。
このコードは,ライブラリがロードされるたびに一度実行されます。通常,ウィ
ンドウクラスの登録や変数の初期化といった処理を行います。ライブラリ初期化
コードには,ExitProc 変数を使って終了手続きを組み込むこともできます(こ
の詳細については,終了手続きを参照してください)。この終了手続きは,ライ
ブラリのアンロード時に実行されます。
------------------

61 :デフォルトの名無しさん:04/04/07 18:51
D7 ヘルプより

ExitProc 変数は下位互換性のために残されています。かわりに finalization を使用してください。
ExitProc はパッケージと互換性がないので,かわりにユニットの finalization 部にコードを追加することをお勧めします。
DLL 内部では,かわりに DLLProc 変数を使用できます。

62 :デフォルトの名無しさん:04/04/07 18:57
実際のサンプル
DLL のデバッグ時には、DLL にたいして「TD32 デバッグ情報を含める」をチェックすること

library Project2;
procedure Test; begin end;
exports test;
procedure DllProcedure(Reason: Integer); begin end;

begin
DllProc := DllProcedure;
end.

63 :デフォルトの名無しさん:04/04/07 19:07
nandaka DQNdousi no yaritorimiteru to tukarerune

64 :デフォルトの名無しさん:04/04/07 19:53
>>63

ここに書き込みたくなる気持ちは分かるよなぁ

65 :デフォルトの名無しさん:04/04/07 21:19
質問いいかな。
肛門ダイアログって実装できますか?
変な質問でごめんね

66 :デフォルトの名無しさん:04/04/07 21:22
(;´Д`) ?

67 :デフォルトの名無しさん:04/04/07 21:23
パスワードを*で表示するやつのことじゃない?

68 :デフォルトの名無しさん:04/04/07 21:25
コモンダイアログですた。

69 :デフォルトの名無しさん:04/04/07 21:29
ワロタ

70 :デフォルトの名無しさん:04/04/08 04:59
>>65
米MSに就職してコモンダイアログを作って下さい。



71 :デフォルトの名無しさん:04/04/08 05:02
>>65
TFileOpen とかで使えるけど?
コモンダイアログを拡張したいとか? Dialogs.pas のソースを見ればやり方が書いてある。

肛門ダイアログの拡張のやり方なら別のスレへ。

72 :デフォルトの名無しさん:04/04/08 09:29
超初心者のスレをみて DQNばっかしだというほうが おかしい。


73 :デフォルトの名無しさん:04/04/08 09:30
>>72
某 ML の話だとおもわれ

74 :デフォルトの名無しさん:04/04/08 12:45
メモ帳の色をしろ意外にして、字を大きく書くと字の周りに白い点々が
でて汚いのを直す方法を教えて下さい。

75 :デフォルトの名無しさん:04/04/08 12:49
> メモ帳の色をしろ意外にして、字を大きく書くと

これはどうやってやるの?

76 :44:04/04/08 12:51
>>45
>そこで、DBGridからDBCtrlGridを使い、各DBEditに細かい事を書き込もうと思ったのですが
>普通はそう言うことしないものなのでしょうか?
DBCtlGridは挙動不審すぎて業務には使えないです。また、これに載せることができる
コントロールも限られているのでちょっと使いにくい。

>売上伝票などの複数のレコードを登録する必要が有る場合(現在のData構成がそうなってます)
>どういったコントロールで入力するのが普通なのでしょうか?
「普通」はどうしているんだろうね。自分はQuantumGridを割と早い時期から
使用していたからほかの方法が思いつかない。これが一番ベストだと思っています。



77 :デフォルトの名無しさん:04/04/08 12:58
>>75
TMemoのことだと思われ

78 :デフォルトの名無しさん:04/04/08 13:00
>>74
再現しない。ディスプレイを買い換えるといい。

79 :デフォルトの名無しさん:04/04/08 13:15
>>78
「ディスプレイを買い換えるといい。」は
「ビデオカードを買い換えるとよい。」かな?

>>74
もしできるなら、問題と思うコントロールのキャプチャ画面をどこかにアップして
URL をここに貼りなさい

80 :43:04/04/08 13:22
>>76
そうですよね、DBCtrlGridでコーディングしている最中に
いかに使いにくいかがわかってきました。

わたしも以前は他社の海外コンポDbAltGridというのを使って開発しておりました
なぜならこのグリッドもワンレコードに複数行表示可能で明細の入力に適していると思ったからです。
しかし、どうしてもprotectedのインプレースエディタにアクセスするのが引っかかって
DBCtrlGridに浮気してしまいました

でもDBGrid継承コンポで、開発をやり直したほうがよさそうですね
今回のご回答で目が覚めました

貴重なご意見、本当にありがとうございました

81 :デフォルトの名無しさん:04/04/09 16:53
Formが最小化、最大化状態の時に、
元に戻した位置(Left,Top)、サイズ(Width,Height)を知りたいんですが方法が分かりません。
どなたか教えてください。お願いします。

82 :デフォルトの名無しさん:04/04/09 17:00
>>81
GetWindowPlacement っていうAPIがあるよ。

83 :81:04/04/09 17:08
ありがとうございます。

84 :デフォルトの名無しさん:04/04/09 17:24
MDIの子フォームを常に最大化の状態にしておいて、最小化もサイズ変更も
できない状態(すなわち×しか使用できない状態)にするにはどうすればよいでしょうか。
以下のコードを書いて「サイズ変更」ボタンを使用不可にしようと試みたのですが、
使用不可になりませんでした。

procedure TfrmMain.FormActivate(Sender: TObject);
var
 Menus: HMENU;
begin
//システムメニューの「サイズ変更」を使用不可にしてみる
 Menus := GetSystemMenu(Handle, False);
 DeleteMenu(Menus, SC_RESTORE, MF_BYCOMMAND);
 DrawMenuBar(Handle);
end;

85 :デフォルトの名無しさん:04/04/09 20:08
TextOutをヘルプで調べたら下のようなサンプルがありました。
(コメント消してあります。)

GetClientRect(hwnd, &r);


BeginPath(hdc);

TextOut(hdc, r.left, r.top, "Windows NT Rules Well & Wisely", 4);

EndPath(hdc);

SelectClipPath(hdc, RGN_AND);

FillRect(hdc, &r, GetStockObject(GRAY_BRUSH));


最後灰色で塗っていますが、他の色で塗りつぶすにはどうしたらいいですか?

86 :デフォルトの名無しさん:04/04/09 20:21
Form1.Canvas に対して Delphi ふうに書けば

procedure TForm1.Button1Click(Sender: TObject);
begin
with Canvas do begin
Font.Size := 36;
BeginPath(Handle);
TextOut(0,0,'Windows NT Rules Well & Wisely');
EndPath(Handle);
SelectClipPath(Handle,RGN_AND);
Brush.Color := clRed;
Windows.FillRect(Handle,ClientRect,Brush.Handle);
end;
end;

87 :デフォルトの名無しさん:04/04/09 20:50
>>86
ありがとうございました。

88 :デフォルトの名無しさん:04/04/10 12:50
現在、D6Personalでいろいろ勉強中なのですが、
参考にAge2chのソースを見ているとなにやらConfig.Save;とかがありまして、、
なんか管理しやすそうな設定の保存の仕方をしているのですが、

これと同じような処理のさせ方はどうすればいいのでしょうか(;´Д`)
試行錯誤で試してみたり、あちこち調べてみましたが結局できませんでした。。
説明下手ですみません。。。

89 :デフォルトの名無しさん:04/04/10 12:55
> これと同じような処理のさせ方はどうすればいいのでしょうか(;´Д`)

ソースあるなら、それと同じようにするとよい、のでは?

90 :デフォルトの名無しさん:04/04/10 13:14
すいません、言うの忘れてました。
ソースで
var Config: TAgeConfig;

この部分で何故TAgeConfig;と宣言できているのかわからんのです。。
_| ̄|○ |||

91 :デフォルトの名無しさん:04/04/10 13:29
var
 Number: Integer;

の意味はわかるのか?
それとも TAgeConfig というクラスがどこで定義されているのかがわからない?

92 :デフォルトの名無しさん:04/04/10 13:32
personalじゃ定義へ簡単にジャンプできねえからな。

93 :デフォルトの名無しさん:04/04/10 13:33
>>91
あー、どこで定義されているのかわからないという感じかもしれません。
クラスとかが関係しているんですね、ヒントありがとうございます。もう一回調べてきます。

94 :デフォルトの名無しさん:04/04/10 13:33
検索くらいはできるだろうに。
90 さんがどこで躓いているのかがわからないとなんともいえないな


95 :デフォルトの名無しさん:04/04/10 13:36
UConfig.pas を見なさい。>>93

たぶん、いろいろ大事なことがまだ学習できていないのだと思いますが
ゆっくり学んでください。

96 :デフォルトの名無しさん:04/04/10 13:36
>>94
いや、それがTAgeConfigで検索かけても見つからなかったんです。。

97 :デフォルトの名無しさん:04/04/10 13:38
>>95
おぉぉ、ありがとうございます。まさしくそれっぽいです。
別のファイルに書かれていたのですね。。がんばります。

98 :デフォルトの名無しさん:04/04/10 13:41
あとは main.pas の uses 節に UConfig とあることを見つければ、
分割コンパイルとユニット単位の名前空間の概念が身につくでしょう。

99 :デフォルトの名無しさん:04/04/10 14:55
数字を0埋めしたいのですがどうしたらできますか?
7->07というように。

100 :デフォルトの名無しさん:04/04/10 15:20
>>99

Str(i:2,S);

101 :デフォルトの名無しさん:04/04/10 15:30
ファイル名変更にエディタボックスを使ってるのでファイル名に使えない文字は無効化しようと

if (Key='\') or (Key='/') or (Key=':') or (Key=',') or
(Key=';') or (Key='*') or (Key='?') or (Key='"') or
(Key='<') or (Key='>') or (Key='|') then
begin
Key :=#0;
Beep;
end;

こんなことやってる漏れってバカかな。。_| ̄|○ |||

102 :デフォルトの名無しさん:04/04/10 15:37
>>99
Format('%.4d', number)
で4桁分、0 で埋める。0007 0012 0345 1234 56789 という感じになる

103 :デフォルトの名無しさん:04/04/10 15:38
>>101
良いのでは?目的を満たしているなら実装はどうやっても良いわけだし。趣味プログラマーならなおのこと。

ただその実装だと、コピー/ペーストしたときにチェックできないよ。

104 :101:04/04/10 15:41
>>103
ガーン、コピペでできちゃうのか。。

もし使えない文字があったら使えない文字を空白に置き換える
という処理はどうすればいいのでしょうか。。

検索してみても複数の文字を置き換えられるような関数ってないんですよね。。

105 :デフォルトの名無しさん:04/04/10 15:45
>>101
俺だったら警告ダイアログ->再入力にするけどな。
入力内容を勝手に変更するのはよくない、と思ってるんで。

106 :デフォルトの名無しさん:04/04/10 16:57
>>100さん、>>102さん、レスありがとうございます。
102さんのを探してたのですが、0埋めとかでもなかなか出てこなくて・・・
100さんのはシンプルですね。初めて見ました。
ただ、関数で値が返ってくるほうがうれしいので、102さんの使わせて貰います。
ありがとうございました。

107 :ななしへたぐらま ◆XcB18Bks.Y :04/04/10 20:26
>>101
ちなみに以下のように『集合』を使って表現することもできます.
if Key in ['\', '/', ':', ',', ';', '*', '?', '"', '<', '>', '|'] then
(以下同じ)
Keyの値が'\', '/', ':', ',', ';', '*', '?', '"', '<', '>', '|'のいずれかと一致するならTrue,そうでなければFalseです.
(詳しくはヘルプの『集合型』をご覧ください)

>>104
そのものズバリの関数や手続きがないときは自分で目的の処理コードを書きます.
といってもそんなに難しいことではありません.
以下は無効な文字を空白で置きかえる関数の例.

const cInvalidChars = ['\', '/', ':', ',', ';', '*', '?', '"', '<', '>', '|']; // 無効な文字たち(※この例では何回も使うので定数にした)

function FillInvalidChars(const s: string): string;
var i: integer; // ループ変数
begin
 Result := s; // 引数をいきなり戻り値にコピー
 for i := 1 to Length(Result) do
  if Result[i] in cInvalidChars then // Resultのi番目の文字が無効な文字たちに含まれるなら…
   Result[i] := ' '; // Resultのi番目の文字を' 'で置きかえる.
end;
※参考>101のように無効な文字を削除する関数の例.(定数宣言は上と同じ)
function DeleteInvalidChars(const s: string): string;
var i: integer; // ループ変数
begin
 Result := s; // 引数をいきなり戻り値にコピー
 for i := Length(Result) downto 1 do
  if Result[i] in cInvalidChars then // Resultのi番目の文字が無効な文字たちに含まれるなら…
   Delete(Result, i, 1); // Resultのi番目の文字を削除
end;

108 :101:04/04/10 23:22
>>107
うわぁ、なんかすごいですね。
一つ一つ勉強したいと思います。ありがとうございます。

109 :デフォルトの名無しさん:04/04/10 23:37
今日、BorlandDelphiPersonal6.0をDLしたばかりなんですが、ヘルプに載っている
クイックスタートのトコのチュートリアルをやりながら勉強してるんです

さっそく詰まったんですが質問です・・
「1コンポーネントパレットの[Additional]ページにある ActionManager コンポーネントをダブルクリックして,」

これが見当たらないんですがActionManagerはどこにあるんでしょう?
もしくは変わりになるモノありますか?

ヘルプの先頭にこんなの書かれちゃってたのでヤパーリ無理でしょうか・・?
「ここで取り上げている機能の一部は Delphi の Personal 版では使用できません。」
:・゜・(ノД‘)・゜・。

110 :デフォルトの名無しさん:04/04/10 23:44
>>109
パレットの上にカーソル置いたら名前出るから総当りで探せ
Personalにもちゃんとあるから

111 :デフォルトの名無しさん:04/04/10 23:53
別にこれを使わなくても十分アプリケーションは構築できる。
練習ならば、まずはメニューだけでツールバーなしで作ってみれ。

ちなみにメニューはTMainMenu[Standard]、ツールバーはTImageList+TToolBar[Win32]を使えば実現できる。
フローティングとか実行時編集とかそういう機能はないが、無ければ困るような機能でもないし。


112 :デフォルトの名無しさん:04/04/10 23:54
ネタは他のスレでやってくれんか?

113 :デフォルトの名無しさん:04/04/10 23:55
>>109
http://www.borland.co.jp/delphi/devsupport/d6issues.html

パレットで見つからない場合は
表示→コンポーネント一覧
で探すと良い

114 :109:04/04/11 00:03
>>110
>>113
探したけど見当たらないです
http://upld.komugi.net/img/up169.jpg

コンポーネントのインストールとかそういう項目で増やすんですか?

>>112
超初心者用だったので_| ̄|○ガクッ

115 :デフォルトの名無しさん:04/04/11 00:05
>>114
とりあえずヘルプなんかで覚えるより
http://kakinotane.s7.xrea.com/dirDelphi/mainmenu.html

ここで基本の大体のことは覚えられる。

116 :デフォルトの名無しさん:04/04/11 00:06
ActionManager コンポーネントは、Delphi 6 Personal には含まれません。

117 :うろ覚え:04/04/11 00:08
PersonalにはActionListしかないんじゃなかったっけ?
ActionManagerあるの?

118 :デフォルトの名無しさん:04/04/11 00:12
だから「ネタ」だと…。
悪質だぞ>答えてるヤツ

119 :109:04/04/11 00:19
>>115-116
了解です、すいませんでした

>>118
いや、ネタのつもりは全くないですが、スレ汚しすいませんでした

120 :デフォルトの名無しさん:04/04/11 00:22
>>119
いや「答えてるヤツ」だと…。

121 :101:04/04/11 00:29
>>107
EditChengeに
if SameText(Edit.Text,DeleteInvalidChars(Edit.Text))=False then
begin
ShowMessage('ファイル名に使えない文字が含まれていました。'+ Char(13) +
DeleteInvalidChars(Demo.Text) + 'に変更します。');
Edit.Text:=DeleteInvalidChars(Edit.Text);
end;

こんな感じに実装してみました。ありがとうございます。

122 :113:04/04/11 00:30
>ActionManager コンポーネントについて
>メニューの使用頻度に対応してメニュー項目の表示・非表示を切り替えたり、
>カスタマイズ機能を備えたツールバーを設計するための ActionManager コンポーネントは、
>Delphi 6 Personal には含まれません。製品機能の最新情報については「Delphi 6 機能一覧」を
>ご覧ください。
>※「クイックスタート」中に誤った記述があることをお詫びいたします。

>>109
ブラクラじゃないから踏んでも大丈夫だよ


123 :デフォルトの名無しさん:04/04/11 00:32
>>30 って意見もあるな

124 :デフォルトの名無しさん:04/04/11 00:37
>>123
それ、オレ。
そーいや、既に書いてたんじゃないか(藁

125 :125:04/04/11 08:30
コンポーネントのインストールができません。

メニューバーの「コンポーネント」 → 「コンポーネントのインストール」で
インストールを試みたのですが、[致命的なエラー]ファイル'DsgnIntf.dcu'が
見つかりませんと出てしまいました。何かアドバイスをよろしくお願いします。



126 :デフォルトの名無しさん:04/04/11 09:41
>>125
D6 ならヘルプの「Delphi6へのアップグレード」−「互換性の問題」−
「DsgnIntfの名前変更および関連する変更」のところ嫁。



127 :125:04/04/11 10:06
>>126
いま読んでみましたが意味がさっぱりわからないのでコンポーネントの
作者さんに伺ってみようと思います。いいご回答ありがとうございました。

128 :デフォルトの名無しさん:04/04/11 11:27
簡単なタブ型テキストエディタを作ろうと思うんですが、参考になるソースを
置いてるところを知りませんでしょうか?

129 :デフォルトの名無しさん:04/04/11 12:27
>>128
 TSonEditを使えばいいんじゃ

130 :デフォルトの名無しさん:04/04/11 13:08
>>128
タブ化の部分を参考に、ということだと勝手に解釈して
どっかにタブブラウザをDel6perで作るチュートリアルがあったはず。
ググってくれ。

131 :デフォルトの名無しさん:04/04/11 15:00
>>128
SynEditのDemoの中に有ったと思う。

132 :デフォルトの名無しさん:04/04/11 19:04
>>127
uses節にある DsgnIntfを削除して代わりに
DesignEditors, VCLEditors, RTLConsts を追加すれば
大抵の場合はうまくいくはず。

ヘルプにそう書いてあるはずなんだが・・・


133 :128:04/04/11 21:01
アドバイスをくれた美奈さん、ありがとさんです。
これで何とかなりそうです。

134 :デフォルトの名無しさん:04/04/11 22:53
 Delphiで作成されたブラウザ(2ちゃん専用はのぞく)ってどんなものがありますか?


135 :デフォルトの名無しさん:04/04/11 23:29
Form1をTransparentColor,TransparentColorValueで透明にした時に、
Form1のParentをForm2のPanelなどに変えると、
透明で無くなってしまうのですが、
これを透明のままにする方法がありましたら教えてください。お願いします。

136 :デフォルトの名無しさん:04/04/11 23:31
Delphiで作成されたブラウザ?
IEコンポーネント使ったやつ?
ActiveX使ったやつ?
Delphiなのに他にDLLがいるやつ?


137 :デフォルトの名無しさん:04/04/11 23:51
>>135

Form1 はデフォルトの MainForm です。その親を Form2.Panel1 などにするアプリ
をつくってはいけません。

138 :135:04/04/12 00:27
逆でした。
Form2を透明にした状態で変える場合でお願いします。

139 :デフォルトの名無しさん:04/04/12 00:40
Webbrowserで表示されているTEXTAREAの文字を取得したいんですが、
出来ませんというか分かりません。
APIとかで出来るのでしょうか?教えてください。お願いします。

140 :デフォルトの名無しさん:04/04/12 07:24
>>139
IEコンポスレへ行けといいたかったがあのスレずいぶん前に落ちていたんだな。
TWebBrowserコンポーネントのWebBrowser1があると仮定して、
text := WebBrowser1.Document.all.tags('textarea').item(n).innerText;
でTEXTAREA内の文字列を取得できる。


141 :139:04/04/12 14:16
出来ました。ありがとうございます。

142 :デフォルトの名無しさん:04/04/12 18:35
BitBltでマスク処理するときに、
検索したサイトではSRCERACE→SRCINVERTと書いてありましたが、
実際にやってみると変な色になってしまします。どうすればいいでしょうか。

143 :デフォルトの名無しさん:04/04/12 19:09
BitBlt って DC から DC にイメージをコピーするものじゃないの?

マスク部分だけをコピーする API もあるみたいだけど (MaskBlt)、
手元の資料では Windows 95/98/Me: Unsupported. って書いてあるので、
TImageList の Draw や DrawOverlay を使って描画する方がいいと思う。

見当違いなこと書いてたらごめん。

144 :デフォルトの名無しさん:04/04/12 19:14
カッコイイツールバー用のアイコンてどっかにありませんかね

145 :デフォルトの名無しさん:04/04/12 19:14
ImageList使ったほうが早い

146 :デフォルトの名無しさん:04/04/12 19:27
フォームを透明にしておいて、Canvasで直接フォームに
字を書くと字の周りにフォームの元の色が出るんですが、
綺麗に書くにはどうすればいいですか?

147 :デフォルトの名無しさん:04/04/12 19:48
試してないんですが DrawText API で書く場合は
SetBkMode(Canvas.Handle, TRANSPARENT); を呼び出してから書く、
TextOut, TextRect メソッドで書く場合は、Canvas.Brush.Style を
bsClear にして書いたらどうですか?

148 :デフォルトの名無しさん:04/04/12 19:51
procedure TForm1.Button1Click(Sender: TObject);
begin
with Canvas do begin
Brush.Style := bsClear;
TextOut(10,10,'lkhnoihcw');
end;
end;

これでもダメ?

149 :デフォルトの名無しさん:04/04/12 21:07
>>143さん、145さん、ありがとうございます。
park18.wakwak.com/~greenspace/dev-api/theapi/reference/bitblt.html
↑のサイトを見ると透過ができそうな気もするのですが・・・
他のDelphi系のサイトではImageList使ってました。
(´・ω・`)IL使います・・・。

150 :デフォルトの名無しさん:04/04/12 23:13
{$R *.res}

非常に簡単な質問かと思いますが、、
これってresファイル全部を指定しているということですよね?
resファイル関係はこれ一つ書いておけば全部取り込んでくれるということですよね。

151 :デフォルトの名無しさん:04/04/12 23:39
>>150
ヘルプでRESOURCEコンパイラ指令のところを読んでくらはい

152 :デフォルトの名無しさん:04/04/13 00:29
>>150
自分で作ったリソース(例:アイコン)は自分で「取り込むように」指定する。
つーか、ソレに追加する形。

153 :152:04/04/13 00:42
ちょっと勘違いするかもしれないので、訂正。
「自作リソースを取り込むように指定する箇所を自分で追加する」。
あああ、まだ何か勘違いされそう…。
ま、最終的には>>151

154 :デフォルトの名無しさん:04/04/13 02:03
ヘルプより

記号 * は $R 指令では特別な意味を持ちます。これは,指令が現れるソース
コードファイルの基本名(拡張子を除いた部分)を表します。通常は,アプリ
ケーションのリソース(.RES)ファイルの名前はそのプロジェクト(.DPR)
ファイルと同じです。この場合,プロジェクトファイルに {$R *.RES} を指
定すると,対応するリソースファイルがアプリケーションにリンクされます。
同様に,フォーム(.DFM)ファイルの名前は通常そのユニット(.PAS)ファイ
ルと同じです。.PAS ファイルに {$R *.DFM} を指定すると,対応するフォーム
ファイルがアプリケーションにリンクされます。

155 :デフォルトの名無しさん:04/04/13 02:09
ワイルドカードじゃなかったのか_| ̄|○

156 :デフォルトの名無しさん:04/04/13 08:00
147,14さん、ありがとうございます。
bsClearにしているんですけど、文字サイズを大きくすると
文字の周りにフォームの色が出てきてしまいます。
リージョンなんて物を使って背景を透明にしてやると
うまくいくんですけど、フォームの移動とかをどうすればいいか
分からなくて、教えて君で済みません。


157 :デフォルトの名無しさん:04/04/13 08:30
> リージョンなんて物を使って背景を透明にしてやると

リージョンと背景の透明化に何の関係が?

158 :146:04/04/13 08:59
>>157
何でと言われても。。。。
色々ホームページを見てた時に、
リージョンを使ったフォームの作成の仕方
を解説してたとこがあって、その例題を元に
したので。


159 :デフォルトの名無しさん:04/04/13 15:24
>>156
私の環境だと以下のコードでちゃんと透明になりますし、フォームを
移動してもついてきますよ。
Button1 をクリックすると 2 ポイントずつフォントが大きくなります。

procedure TForm1.FormPaint(Sender: TObject);
begin
  with Canvas do
  begin
    Font.Assign(Self.Font);
    Font.Size := Font.Size + Tag;
    Brush.Style := bsClear;
    TextOut(10, 10, 'lkhnoihcw');
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Tag := Tag + 2;
  Invalidate;
end;

160 :146:04/04/13 15:53
>>159
ありがとうございます。
できました。
自分のと何が違うか見直します。


161 :デフォルトの名無しさん:04/04/13 18:50
前スレの252です。
WebBrowserを使用したブラウザを作ってるんですが、新しいウインドを
開くリンクをクリックすると自分自身を立ち上げて、リンク先をブラウズできるようにしました。

ブラウズ用のWebBrowserと、OnNewWindow2イベントが発生すると
そのURLを取得するための隠しWebBrowserの二つを用意して、
OnStatusTextChangeイベントを利用してマウスカーソル直下のリンクの
URLを取得し、隠しWebBrowserのOnBeforeNavigate2でURLを照らし合わし
同じURLならShellExecuteで自身を立ち上げるという方法を取りました。

で、質問なんですが、例えば<a href="http://・・・" target="body">の
リンクをクリックした場合、新しく開いたブラウザにbodyという名前のフレームを
セットしたいのですが、どうすれば可能なのでしょうか。
NavigateのTargetやPostDataをいじくってみたり、新しいブラウザを
開くときにリンク先のフレーム名をセットしたHTMLファイルを作成して、
そのHTMLを読み込んだりと色々試してみたのですが、無理でした。

どうすればいいんでしょうか?
ご教授よろしくお願いします。

162 :デフォルトの名無しさん:04/04/13 19:23
どうでもいいことだけど最近よく見かける
ご教授じゃなくてご教示じゃないんか?

163 :デフォルトの名無しさん:04/04/13 19:40
そーでもない

164 :デフォルトの名無しさん:04/04/13 22:47
どっちゃでもええ

165 :デフォルトの名無しさん:04/04/13 23:03
ご教示 の検索結果のうち 日本語のページ 約 55,100 件中 1 - 50 件目 (0.59 秒)
ご教授 の検索結果のうち 日本語のページ 約 86,200 件中 1 - 50 件目 (0.34 秒)

ご教授の勝ちです

166 :デフォルトの名無しさん:04/04/13 23:13
procedureで引数無しで作るとき、どうすればいいのでしょうか?

167 :デフォルトの名無しさん:04/04/13 23:25
procedure honwakapappahonwakapappadoraemon; でも
procedure honwakapappahonwakapappadoraemon(); でも
好きなようにすればいいよ。

168 :デフォルトの名無しさん:04/04/13 23:32
>161
Webページの読み込みが完了した後でこうしてやれば、名前を設定出来る。
Doc := WebBrowser1.Document as IHTMLDocument2; // Doc: IHTMLDocument2;
Win := Doc.parentWindow; // Win: IHTMLWindow2;
Win.name := 'body'; // 名前をbodyに設定。

もし、新しいウィンドウで開くのと、Targetの問題を解決するのとがしたいだけなら、
RegisterAsBrowserプロパティをTrueにすれば、勝手にTargetと同じ名前のウインドウ探して、
そのウインドウに表示してくれるし、
OnNewWindow2イベントで
新しいウインドウを作成して、
ppDisp := Browser.Application; // Browserは新しいウインドウのTWebBrowser
としてやるだけで、勝手にTargetの名前を設定してくれるので、
そうした方が楽。

ブラウザ作るなら、こことか見ておいた方が良いと思う。
http://www.euromind.com/iedelphi/index.html
http://www33.ocn.ne.jp/~takoyakusi/
あとメーリングリストの過去ログにもけっこう情報ある。
MSDNにも当然たくさん情報ある。英語でしかもサンプルがC++だけど。
http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/hosting/wbcustomization.asp

169 :デフォルトの名無しさん:04/04/13 23:38
きょうじゅ けう― 【教授】

(名)スル
(1)0 1 (ア)児童・生徒に知識・技能を与え、そこからさらに知識への興味を呼び起こすこと。
(イ)専門的な学問・技芸を教えること。
「国文学を―する」「書道―」
(2)0 大学などの高等教育機関において、専門の学問・技能を教え、また自らは研究に従事する人の職名。助教授・講師の上位。


三省堂提供「大辞林 第二版」より


きょうじ けう― 0 1 【教示】

(名)スル
(1)〔「きょうし」とも〕おしえしめすこと。示教。
「御―を賜りたく」
(2)実験・調査で、研究者の意図する行動を被験者にとらせるための指示。


三省堂提供「大辞林 第二版」より


170 :デフォルトの名無しさん:04/04/14 17:25
ソースを印刷すると procedure のeとか 欠けるんですが、どうしてでしょうか?
欠けないようにできないんでしょうか?

171 :デフォルトの名無しさん:04/04/14 17:31
>>170
わけわからん?!

172 :デフォルトの名無しさん:04/04/14 17:33
Delphiのソースを印刷すると なぜか
procedure
の 最後の eの部分が 欠けるというのだ。
印刷して確認してみてくれ。

173 :デフォルトの名無しさん:04/04/14 17:34
>>172
それが人に物を頼む態度か?

174 :デフォルトの名無しさん:04/04/14 17:35
>>173
あなたには頼んでいません。

175 :デフォルトの名無しさん:04/04/14 17:51
意味が わからんのなら やってみてくれというだけだろ。

やっていなくて 意味がわかるはずもない。

176 :デフォルトの名無しさん:04/04/14 18:02
>>170
フォントの設定がまずいんじゃないの?
ていうかsageれ。

177 :161:04/04/14 19:15
>>168
ありがとうございます。解決しました。
ブラウザでTargetが効くようになりました。

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

178 :デフォルトの名無しさん:04/04/14 21:31
ttp://www.wwlnk.com/boheme/delphi/tips/tec1620.htm
を基にして
procedure Tform.NaviClick(Sender: TObject);
var
 TabSheet: TTabSheet;
 WebBrowser: TWebBrowser;
begin
 TabSheet := TTabSheet.Create(Self);
 TabSheet.Parent := PageControl1;
 TabSheet.PageControl := PageControl1;
 TabSheet.Caption := '読込中…';
 WebBrowser := TWebBrowser.Create(Self);
 TOleControl(WebBrowser).Parent := TabSheet;
 WebBrowser.OnCommandStateChange := WebBrowser1CommandStateChange;
 WebBrowser.OnNavigateComplete2 := WebBrowser1NavigateComplete2;
 WebBrowser.OnTitleChange := WebBrowser1TitleChange;
 WebBrowser.OnStatusTextChange := WebBrowser1StatusTextChange;
 webBrowser.OnNewWindow2 := WebBrowser1NewWindow2;
 WebBrowser.Align := alClient;
 WebBrowser.RegisterAsBrowser := True;
 WebBrowser.Navigate(URLs.Text, EmptyParam, EmptyParam,
 EmptyParam, EmptyParam);
end;
として動的にページを作り
PageControl1.ActivePage.Free;
でそのページを削除したとき、確かに削除されるのですが
プログラム終了時に例外が出ます。何が悪いのでしょうか?
(Win2Ksp4+D7Pro+IE5.5sp2)

179 :デフォルトの名無しさん:04/04/14 21:40
>>176
印刷時の構文強調表示をオンにすると俺のところでも欠ける。
単なるバグだと思う。

>>174-175
アフォは放置で。

180 :デフォルトの名無しさん:04/04/14 21:41
>>178
TabSheet := TTabSheet.Create(Self);
たぶんコレ

181 :デフォルトの名無しさん:04/04/14 22:54
>178
TEmbeddedWBの場合は、このページの一番下に書いてある通り、
TEmbeddedWB.Create(nil);としてやらないと、その症状が出た気がする。
http://www.euromind.com/iedelphi/embeddedwb/tips.htm
それ以外が原因だと、俺には解らない。

182 :デフォルトの名無しさん:04/04/15 00:40
フォームデザイナ上で今まではボタンなどを選択して、
上下左右の矢印キーを押せば移動していたのですが、
なぜか突然その方法では移動しなくなりました。

代わりに[Shfit]+[Ctrl]+矢印キーで移動するようになっているのですが、
微妙に気持ち悪くて適いません。

どうすれば元に戻りますか?

183 :178:04/04/15 08:23
>>180-181 ありがとうございます。
nilでやってみたのですが変わりませんでした。
よくよく調べてみるとOnNewWindows2で同じことをして作ったページを
削除したときだけプログラム終了時に例外が出ることがわかりました。
(OnNewWindows2では>>178の最後のNavigateを>>168の ppDisp := に変えてある)
どう回避すればいいのでしょうか?

184 :デフォルトの名無しさん:04/04/15 08:25
>>170
予約語を斜体にしてるから印刷時に末尾が切れるんじゃないの?

185 :デフォルトの名無しさん:04/04/15 08:40
>>170, 1884
IDE のバージョンなんぼ?


186 :178:04/04/15 09:02
PageControl1.ActivePage.Free;
の前に
PageControl1.ActivePage.PageControl := Nil;
してなかったからでした。WebBrowserに罪はなかったようです。
失礼しました。

187 :デフォルトの名無しさん:04/04/15 10:31
>>179
やはりバグかな?
これって 古いバージョンからあると思うけど どう?

188 :デフォルトの名無しさん:04/04/15 10:49
できれば IDE で選択しているフォント名、教えていただけますかいな。
あと IDE のバージョンも。


189 :デフォルトの名無しさん:04/04/15 10:51
>>187
できればあげずに書き込めませんかね?
E-Mail 欄に sage と入れてください。
ttp://info.2ch.net/guide/faq.html#C1 にざっと目を通してください。


190 :デフォルトの名無しさん:04/04/15 10:57
あげるのが好きなのに どうして さげないと いけないのか。

191 :デフォルトの名無しさん:04/04/15 10:59
そう。じゃかってにどうぞ

192 :デフォルトの名無しさん:04/04/15 17:42
何だかいちいちトゲのある言い方をしますね(^-^;
やれやれです(^-^;

193 :デフォルトの名無しさん:04/04/15 19:02
>>182
Ctrl+矢印キーで移動、Shift+Ctrl+矢印キーでグリッドに沿って
移動、Shift+矢印キーでサイズ変更だったと思うけど。

194 :デフォルトの名無しさん:04/04/15 20:09
Form1ウィンドウの右上にある三つのボタン[_□×]
最大化は必要ないので、これを[_×]にする方法を教えてくらさい。

Windowsに付属の「電卓」や「マインスイーパ」みたいに、
最大化ボタンを押せなくするだけならbiMaximizeプロパティで
できるとわかったのですが、
見た目カッコ悪いのでボタンを消してしまいたいのです。

195 :194:04/04/15 20:10
書き忘れました。
Delphiのバージョンは6の無料版です。

196 :デフォルトの名無しさん:04/04/15 21:36
>>194
不可能

197 :デフォルトの名無しさん:04/04/15 21:44
>>195
bsDialog

198 :デフォルトの名無しさん:04/04/15 21:54
bsDialog にすると最小化ボタンやコントロールメニューボックスも消えますよ。
まあ、絶対に不可能というわけじゃなさそうだけどかなり難しい。

BorderIcons に biMinimize が入ってるとグレーの最大化ボタンが表示されて
しまうので、まずこれを外さなきゃいけない。

で、最小化ボタンも消えるので、枠の部分の描画メッセージを引っかけて最小化
ボタンを本来の場所に自力で描画することになる。

最小化ボタンの形状やサイズは OS やユーザーの設定によって違ってくるので
その辺も考慮しないといけない。この設定は実行中に変更されるかもしれない。

描くだけでなくクリックしたときにへこむとかの応答も提供する必要がある。
さらに最小化のメニュー項目も消えるので自分で追加する必要がある。

199 :デフォルトの名無しさん:04/04/15 22:17
逆に、最大化を押しても何も起こらないようにするとか・・。
まぁ、わしのスキルでは出来るかどうかもワカランが。

200 :デフォルトの名無しさん:04/04/15 22:31
質問しようと思ったけど>>4とほぼ同じだった。
>>4>>6、有り難う。

>>195
「何処までそれにこだわるか」だと思います。
デザインに凝りたいのなら、自分で描くしかないのでは?

201 :デフォルトの名無しさん:04/04/15 22:45
>>195
フォームをbsNoneにする。
パネルをAlign=alTopに設定して、Width=45、Align=alRightに設定したツールバーを
パネルに貼りつけて、ツールバーを右クリックしてボタンを2つ作り、
左でApplication.Minimize、右でCloseを実行させるようにすれば、あとはなんとかなるぞ。

202 :デフォルトの名無しさん:04/04/15 23:02
おまけ。
201だとフォームが移動できないから、ドラッグで移動させたい場合は

procedure Form1.Panel1MouseDown(Sender: TObject;
Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
begin
//マウス左ボタンが押されているとき
If ssLeft in Shift then
begin
//マウスキャプチャを解放する
ReleaseCapture;
//Formをドラッグせよという命令を送る
SendMessage(aterollBrowser.Handle, WM_NCLBUTTONDOWN, HTCAPTION,0);
end;
end;

203 :デフォルトの名無しさん:04/04/15 23:07
>>202
aterollBrowser.Handle??

204 :デフォルトの名無しさん:04/04/15 23:22
どなたか>>182に答えてくださると嬉しい感じです。

205 :デフォルトの名無しさん:04/04/15 23:23
しまった間違えた。
SendMessage(Fram1.Handle, WM_NCLBUTTONDOWN, HTCAPTION,0);

206 :デフォルトの名無しさん:04/04/15 23:25
>>204
>>(182 + 204) div 2

207 :デフォルトの名無しさん:04/04/15 23:27
ヽ(`Д´)ノ ウワァァァン
SendMessage(Form1.Handle, WM_NCLBUTTONDOWN, HTCAPTION,0);

208 :194:04/04/15 23:31
>>196-203
どうもありがとうございます。
どっかのプロパティ(visibleとか?)を例えばFalseにするだけで
消えてくれるもんだと思ってましたが、なんか大変そうですね。
超初心者の私には無理そうですので、今回はあきらめます。

209 :デフォルトの名無しさん:04/04/15 23:33
>>207
ワロタ

210 :デフォルトの名無しさん:04/04/15 23:45
>>206
Σ(゚Д゚ )オオッ

211 :デフォルトの名無しさん:04/04/15 23:45
>>204
よくわからんが [ツール | エディタ オプション] あたりの設定じゃない?

212 :204:04/04/16 02:12
>>193
>>206
矢印キー押しただけでボタンとか移動できてたのは錯覚ですか(;´Д`)ノ?

>>211
なんかそこ見ても設定できなくて(´・ω・`)

213 :デフォルトの名無しさん:04/04/16 03:10
>>212
俺の環境だと矢印キーでコントロール間をフォーカスが「移動」するし、
Ctrl+矢印だとコントロール自体が「移動」するよ。Delphiではこれが普通の動作のはず。
何か別のアプリと混同してるんじゃないの?

214 :204:04/04/16 03:22
なんかそう言われるとすごいそんな気がしてきました(;´Д`)
どうも勘違いだったっぽいです。
お騒がせしました。

元に戻そうとして3時間くらい格闘したのに。。_| ̄|○

215 :デフォルトの名無しさん:04/04/16 14:20
教えてください。
D6パーソナルで、Memcheckを使うと、
Formに何もない状態でも5回と出るんですが、
5回より増えないようにすればいい。って事ですか?

216 :デフォルトの名無しさん:04/04/16 14:31
MemCheck の使い方を間違えている。ってやつだと思う。

メモリリークがあると、MemCheck で見つけられるが
MemCheck がレポートしたからといって、それがメモリリークであるとは限らない。


217 :デフォルトの名無しさん:04/04/16 14:31
ちゃんと <project>.dpr に MemCheck のコードを入れましたか?>> 215

218 :デフォルトの名無しさん:04/04/16 16:35
>>215
.dprでMemCheckをusesして、プロジェクトオプションの
ディレクトリ/条件タブの条件定義に<MemCheckStackTrace>を追加(括弧はいらない)。
リンカタブのTD32デバッグ情報を含めるにチェック。
コンパイラタブのスタックフレームの生成をチェック。
こんな感じだったかのぅ。

219 :215:04/04/16 17:09
新規プロジェクトで
>218と同じにしてやってみましたが5回と出ます。
何かまだ設定が足りないんでしょうか?
他のD6パーソナルの人は出ないのかな?

220 :デフォルトの名無しさん:04/04/16 17:17
>>216
アフォ?

221 :デフォルトの名無しさん:04/04/16 17:18
>5回より増えないようにすればいい。って事ですか?
とりあえず、これでよいと思うよ。

で、D6 のアップデートは当ててありますか?

222 :デフォルトの名無しさん:04/04/16 17:43
>>215
>>218と同じ条件にしてやってみたけど1つもレポート出ないよ。
Del6per+up2+rtl3

223 :デフォルトの名無しさん:04/04/16 17:50
おそらく >>215 はアップデートを当てていない。

224 :215:04/04/16 18:37
http://www.borland.co.jp/delphi/del6up.html
ここに書いてあるものは
やってるつもりなんですが、後でやり直してみます。
ありがとうございました。

225 :デフォルトの名無しさん:04/04/16 18:55
>>224
ガンガレ

226 :デフォルトの名無しさん:04/04/16 19:44
>>216
メモリリークでは無い場合のレポートを見せて頂けませんか?

227 :デフォルトの名無しさん:04/04/17 21:47
例外処理の利点と欠点について教えてください。
たとえば、自分でとある関数を作ったとして、その関数の処理に失敗した場合、
raiseで例外を生成する場合と、WinAPIっぽく関数の戻り値にエラーを示す値を返す方法とでは、
どうメリット、デメリットがあるかがよくわからない。

228 :デフォルトの名無しさん:04/04/17 21:48
もっと質問しぼります。
関数でエラー値戻す方法よりも、例外生成ほうが何かメリットがあるんでしょうか?

229 :デフォルトの名無しさん:04/04/17 23:19
例外生成→使用時にtryで捕獲
関数の戻り値にエラー値→ifで処理

違ってたらマターリする

230 :デフォルトの名無しさん:04/04/18 00:21
今気づいたんだけど、MainMenuで
「ツール」って項目設けたらデフォのNameが「ool1」になった
もしかして俺のDelphi壊れてる?

231 :デフォルトの名無しさん:04/04/18 00:35
気にすんな
漏れのDelphiは右クリックメニューとかの各Captionが''だったりするけどがんがって使ってる

232 :デフォルトの名無しさん:04/04/18 01:50
気にした方が(藁

233 :デフォルトの名無しさん:04/04/18 06:51
例外を出せば 例外を出した時点でメッセージを用意しておける。
呼び出した側ではしらんかおしておけばいい。

234 :デフォルトの名無しさん:04/04/18 15:38
教えてください。

Panel上にドッキングするコントロールが3つあって、
┌┬─┐
│├─┤
││  │
└┴─┘
↑のように3つドッキングしてる状態を記憶させるには、
iniファイルにどう書けばいいですか?

235 :デフォルトの名無しさん:04/04/18 19:48
┌┬─┐ ←B
│├─┤
││  │ ←C
└┴─┘
 ↑A
だとしたら、
1.設定ロード前に全コントロールのAlignをNone
2.最初にAのコントロールをLeftにする
3.BのコントロールをTopにする
4.CのコントロールをClientにする

覚えさせておくのは、各コントロールの設定状態と、設定する順序だ。


236 :234:04/04/18 21:08
順序ってどうやるとわかるのかが分かりませんが、
何か色々やってみます。ありがとうございました。


237 :デフォルトの名無しさん:04/04/19 00:26
すみません質問です。
フォームに配置したコントロールのヒントを非アクティブ状態でも表示したいのですが、
その方法がわかりません。
調べると、SetFocusというメソッドを見つけたんですけど、どうもこれは違うようですし。

他のアプリケーションに隠れた状態でもヒントを表示させる事は可能なんでしょうか?

238 :デフォルトの名無しさん:04/04/19 01:19
どうしてそうしたいのか、よく分からんが。
質問者は「これこれこーゆーことがしたいので、こーなりませんか?」って
書くと代替案が出るかも。
ちょっとソレはナニだと思う>>237

239 :デフォルトの名無しさん:04/04/19 02:09
>>237
THintWindow のインスタンスを自分で作成して、そいつをコードで
適当な場所に表示させるというのはどうですか?

240 :デフォルトの名無しさん:04/04/19 09:35
>>237の質問を見た感じでは恐らく>>239が何を言ってるのかが解からないと思う。

241 :デフォルトの名無しさん:04/04/19 09:51
>>239

どのタイミングでどこに表示するの?

242 :デフォルトの名無しさん:04/04/19 09:54
>>239が何を言ってるのかが解からないと思う。

言っている意味はわかるが、解決にはほど遠い。

1.どのタイミングで?
2.どこに表示?
3.Enabled が true のときは、本来のヒントとかち合わないの?

243 :デフォルトの名無しさん:04/04/19 12:30
あるアプリケーションを作成していて、
「何秒後にフォームを閉じたい」とか、「何分ごとに文字を表示させる」とか、
それぞれ時間の異なるタイマーイベントを複数用意しなければいけなくなりました。
時間は正確ではなくていいのですが、たくさんのタイマーを動かすのも
悪いかなと思い、例えば2秒間隔でイベントを発生させるタイマーを一つだけ用意し、
なんとかまとめて処理できないかなと思っています。

具体的には、
1)タイマーイベント発生時に実行する、あるオブジェクトのメソッドを登録
2)そのメソッドを何秒後に実行するか登録
3)イベント発生時に登録した秒数−経過時間の演算を行う
4)登録した秒数<0で、登録されたメソッドを実行
という処理をすれば、1つのタイマーだけでまかなえると思うのですが、
このとき実行するオブジェクトのメソッドを登録/管理する方法、
経過時間を登録/管理する上手い方法ってありますか?

244 :デフォルトの名無しさん:04/04/19 12:56
> たくさんのタイマーを動かすのも悪いかなと思い、

3つ、4つ動かすくらいなら平気でしょ。ややこしいこと考えずにタイマつかっとけよ。

245 :デフォルトの名無しさん:04/04/19 13:03
>>244
ユーザの操作によるんですが、可能性としては5−6個動くことがあるので、
一つにしたいなぁぁぁと・・・

どのぐらいまで可能なんですかね。

246 :デフォルトの名無しさん:04/04/19 14:42
簡単な処理なら、100個のタイマーを同時に使っても、問題無かったよ。

247 :デフォルトの名無しさん:04/04/19 14:55
>>246
NT 系列の OS ならね。ってはなしでは?
98 でも事実上、無制限に近かったとも思ったが..

248 :デフォルトの名無しさん:04/04/19 15:06
IdSNTPで時刻合わせしているプログラムにMemCheckを入れたら
IdComponentのInitializationでCreateしてるGStackCriticalSectionを
開放し忘れていると言われたんですが、Indyのソースには
// Dont Free. If shutdown is from another Init section, it can cause GPF when stack
// tries to access it. App will kill it off anyways, so just let it leak
// FreeAndNil(GStackCriticalSection);
というコメントがありました。どこで開放すればいいのでしょうか?

249 :デフォルトの名無しさん:04/04/19 15:06
100個もいけるんですか!!??じゃあ、問題ないですねぇぇ。

type
 TDoMethodObject = record
  MyMethod: TNotifyEvent;
  Interval: Integer;
  AtOnce: Boolean;
 end;

をTListにポインタで格納して、定期的にTListに登録された
メソッドを実行するClassを作成中でした。
大丈夫なら、こんなの作る必要ないか・・・・

250 :デフォルトの名無しさん:04/04/19 16:34
>>248
開放しない。が正解。

251 :デフォルトの名無しさん:04/04/19 16:54
ちょいと質問させてください..

LABELで出力した文字列を選択、コピーできるようにする方法はあるのでしょうか?
もしくはLABEL以外の何かを使わないといけないでしょうか?

252 :デフォルトの名無しさん:04/04/19 17:11
TLabel は選択もコピーもできないと思ったが..
TEdit と間違えているのかな?

253 :デフォルトの名無しさん:04/04/19 17:37
>>243
大麻やりまくっちゃえよー

254 :デフォルトの名無しさん:04/04/19 18:42
>>252
だから、それを可能にさせる方法ってことでは?

>>251
TLabel では出来ないが、TEdit の Color と BorderStyle を弄れば同じモノが作れる

255 :デフォルトの名無しさん:04/04/19 18:43
あ、後 ReadOnly もか

256 :デフォルトの名無しさん:04/04/19 18:59
TLabelに右クリックつけてコピーって出せば







あふぉ

257 :248:04/04/19 19:31
>>250
リークはしていないと理解していいのでしょうか?


258 :デフォルトの名無しさん:04/04/19 19:59
>>257
MemCheckってDel7でもいける?

259 :デフォルトの名無しさん:04/04/19 20:22
無害なリーク。
または
(メモリリークの定義にもよるが)リークしていない。

一応、リーク (Leak) の語源を英和辞書で確認してくださいね。

アプリを長時間起動しても対象リソースが「もれる」わけではない場合、それは
厳密にはリソースリークとは呼ばない。
アプリケーションの確保しているメモリブロックはプロセス終了時に開放されるので
結局開放されるわけだ。

複雑なプログラムでは終了条件の判断が難しい場合がある。
厳密には、フラグとかをたてまくれば本当の開放のタイミングが特定できるはずなのだが、
それを行うためのコストが高くつき、かつ上に書いたような良性の未開放リソースに対しては
開放処理を OS のプロセス終了処理に任せる。ということが多くある。

もちろん、プロセスをまたがるリソースや、OS が開放してくれないリソースはこの限りではないので
状況に応じて判断すること。


260 :デフォルトの名無しさん:04/04/19 20:23
>>258
D7 でもいけるけど、元からパッケージに対応していないので、俺は捨てた。

261 :248:04/04/19 21:56
>>259
えーと、>>248のは必ず開放されるということで。ありがとうございました。

>>258
ここ見て動かしました。
ttp://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200306_03060058.html


262 :デフォルトの名無しさん:04/04/20 00:21
すみません、どこに質問していいのか謎でしたのでここで・・。
Delphiでくだらないアプリを作ってます。
アプリ終了時に設定を保存したいんです。
タスクマネージャを起動させて、プロセスのタブ内からこのアプリを終了
させた場合、アプリにはどんなメッセージが飛んでくるのでしょう?
この場合だけ設定が保存されないで困っています。
ご存知の方、ご教授お願いします。

とか、「あっちのスレッドで質問しろ!」とかでもいいです。
(その場合、あっちがどこなのか教えてください)


263 :デフォルトの名無しさん:04/04/20 00:32
どのイベントで設定保存してる?

264 :デフォルトの名無しさん:04/04/20 01:04
closeと見た。
そーだったら、デストローイに変えてみる。
違ったら↓

265 :デフォルトの名無しさん:04/04/20 01:08
あなご自力で捕まえる

266 :デフォルトの名無しさん:04/04/20 03:10
マルチ

ttp://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200404/04040053.txt

267 :デフォルトの名無しさん:04/04/20 08:29
>>264
ふつーonCloseQueryじゃねーの?

268 :デフォルトの名無しさん:04/04/20 10:08
>>261
これ便利かも。こういうのがあるって知らなかった。
他にも、こういうチェッカーみたいなのありますか?

269 :デフォルトの名無しさん:04/04/20 10:11
>>262
プロセスタブからならTerminateProcessされるからメッセージもなしに問答無用で終了。

デストラクタも呼び出されないのでリソースリークが発生したりするから凍った時以外はその方法で終了させるのは論外。
あくまでも非常手段。

270 :デフォルトの名無しさん:04/04/20 11:04
MemCheckしたら、なんかいっぱいでてきた・・・
自分でFree等のし忘れはないみたいだけど、
種類とサイズとバイナリしか表示されてなくて、
どのファイルでリークしてるか表示されない・・・

これじゃ対処のしようがないし、解放されるはず
のリークかどうか判断できないよ
かなーり心配 ウワワワワン

271 :デフォルトの名無しさん:04/04/20 12:32
>>270
VCL のバグもみつけるには Debug DCU を使う。をチェック。
リンカー設定で TD32 デバッグ情報をつける。をチェックしたか?
そうすれば、ソースがあるコードなら行番号まで出てくるはずだ。

272 :デフォルトの名無しさん:04/04/20 12:39
>解放されるはずのリークかどうか判断できないよ
良性か悪性かの判断の(ひとつの)目安。

1. 一通りの機能を使う手順を決める。ファイルを開いて、処理して、閉じる。など。
2. 1 で決めた手順を行って、MemCheck のログをとる。適当な名前で保存
3. 1 の手順を2度繰り返す。ログを保存。
4. 2 のログと 3のログを比較。未開放メモリブロックの数、量に変化が無ければ
「おそらく」良性の未開放メモリ。
数、量に変化がある場合は悪性の未開放メモリブロックの可能性あり。

5. 確認のために 1 の手順を5回繰り返したログをとり、2 および 3 のログと比較。

6. 最後によく考える。

あまりにも多くの未開放メモリがレポートされた場合は、本質的なバグを持っていると
判断するか、または手順をもう少し簡単にすること。


273 :デフォルトの名無しさん:04/04/20 13:02
>>271-272
272さんの方法ですと、行った動作に対して数と量は変化ないです。
そしたら良性かなぁ。
TreeItem.Dataに確保したメモリのポインタを入れて、OnDeletionで
Disposeしてるんだけど、その確保したメモリはごっそりリークとして
判断されてしまうらしいでつ。
でも、なんか心配だなぁ。


271さんの方法については、あとで試してみます。



274 :デフォルトの名無しさん:04/04/20 13:25
>TreeItem.Dataに確保したメモリのポインタを入れて、OnDeletionで
>Disposeしてるんだけど、その確保したメモリはごっそりリークとして
>判断されてしまうらしいでつ。

ここでもたびたび話題になる例のやつではありませんか?
Dispose() するとき、ちゃんと New() したときのポインタ型にキャストしてますか?

275 :デフォルトの名無しさん:04/04/20 13:37
>>274
うわっ まさにそれだ・・・ガックシ
でも理由がわかってよかったありがとう・・・
さっそくキャストして調査してみます。

TBitMap、自作Createしたモーダルフォームあたりでも
発生しているみたいだけど、これも何かやり忘れてるのかな。
調べてみます。

276 :デフォルトの名無しさん:04/04/20 15:20
>>275
それが問題なのだとしたら、New/Dispose の組み合わせを呼ぶ数が異なるような
テストケースを考えて、272 みたいに呼び出し数が変わるようにしてチェックしてみたら?

New/Dispose の組み合わせが定数回しか呼ばれないなら、それは良性のメモリ未開放。
けど、直せるのであれば直したほうが良い。

277 :デフォルトの名無しさん:04/04/20 15:42
> けど、直せるのであれば直したほうが良い。

なんだか、ごちゃごちゃ書いても当たり前の結論(藁

良性とかいっても、悪性じゃない、という意味であり、
メモリ未開放が良性であるはずがないよね

278 :デフォルトの名無しさん:04/04/20 15:49
>>269
えー!そーなのー!_| ̄|○
うすうすは気づいていだんだけど・・・(問答無用か・・・)
じゃぁどうすることもできないのかぁ・・・(諦め)
CreateProcess使ってwait・・・で待とうと思ってたんだけど意味ないか・・。
どーもでーす!


279 :>>269:04/04/20 15:57
あ、ちょと待った。
アプリAから
CreateProcessでアプリBを起動して
WaitForSingleObjectで待って
プロセスタブでアプリBを終了させたら
WaitForSingleObjectを抜けてきた!
これで終了されたか判断できそーだ。
気持ちやりたい事とは違うけど、応用すればなんとかなるかも。
269さんありがとう。

280 :251:04/04/20 17:52
>>254
どもです、やってみたらそれらしいものが出来ました。
しかし..複数行にわたる場合がどうも上手くいかんのですが、どうにかならんもんでしょうか?
一応いろいろやってみます..

281 :デフォルトの名無しさん:04/04/20 17:55
>>280
Memoを使えばできるよ。
詳しくはOpenJaneのソースの設定画面ちょこちょこ覗いてみればわかるかも

282 :デフォルトの名無しさん:04/04/20 19:08
ウィンドウを持たないアプリでWindowsの終了を感知する方法って何かご存じですか?


283 :デフォルトの名無しさん:04/04/20 19:18
TTimerのように表示しない窓ハンドルを持たせたら?

284 :デフォルトの名無しさん:04/04/20 20:27
> TTimerのように表示しない窓ハンドルを持たせたら?

メッセージループが必要になるけどね。

285 :デフォルトの名無しさん:04/04/20 20:58
おー、なるほど!俺ってアホっすね。
それだとそーですね、ループ必要っすね。
あー、でもexeのサイズが・・・
・CPUに負担かけずに
・exeのサイズは小さく
が条件でして・・・ちょっとやってみます。


286 :デフォルトの名無しさん:04/04/20 21:09
別に
>・CPUに負担かけずに
>・exeのサイズは小さく
この条件と照らし合わせてもなんの問題もないように思うのは漏れだけ?

287 :デフォルトの名無しさん:04/04/20 21:37
Var
 S: Array Of String;
begin
 SetLength(S,2);
 SetLength(S,1);
 S[1] := '';
end;

これでエラーにならないのは何故ですか?
SetLength(S,2) が無ければ Invalid pointer operation になるんですが…
妙な動作なので不安です…

288 :デフォルトの名無しさん:04/04/20 21:52
むしろなんでエラーになると思うのかを聞きたい。
SetLength(S,2);
をコメントアウトしてもエラーにならなかったよ?

289 :デフォルトの名無しさん:04/04/20 21:57
>>288
え?だって SetLength(S,1) とやれば 存在する要素は 0 番目だけじゃないですか?
あと SetLength(S,2) の件も改めて試してみましたがエラー出ました。


290 :デフォルトの名無しさん:04/04/20 22:07
string型について調べてみな。

291 :デフォルトの名無しさん:04/04/20 22:14
String 型についても調べていますが、 String 型でなくても出ます。

Var
 i: Array Of Integer;
 C Array Of Char;

でも同様に出ました。

292 :デフォルトの名無しさん:04/04/20 22:15
すみません Array Of Char では出ませんでした。

293 :デフォルトの名無しさん:04/04/20 22:16
>>289
>え?だって SetLength(S,1) とやれば 存在する要素は 0 番目だけじゃないですか?

じゃあ「SetLength(S,0)」とやったらどうなると思うんだい?

294 :デフォルトの名無しさん:04/04/20 22:17
うあ、間違えた
Array Of Integer では Array Of String と同じでエラーにならず、
SetLength(i,2) を消すとエラーになり、
Array Of Char だとSetLength(C,2) を消してもエラーになりませんでした。

295 :デフォルトの名無しさん:04/04/20 22:19
>>293
要素を1つももたない配列になるのでは?


296 :デフォルトの名無しさん:04/04/20 22:22
昔のString型は0番目の要素が文字列の長さを表していたが
最近のStringの0番目の要素には#0が入ってたような気がする
だから結局Stringに格納される文字列は1番目の要素から始まるんじゃない?

297 :デフォルトの名無しさん:04/04/20 22:23
おいおい、質問者の質問の意図を
よく理解してないヤツは答えなくて良いよ。

298 :デフォルトの名無しさん:04/04/20 22:24
>最近のStringの0番目の要素には#0が入ってたような気がする

文字列の開始アドレスが入ってるんじゃないの?

299 :287:04/04/20 22:27
えー、どうも行き違いがあるような・・・
やってることは
文字列型に SetLength して長さを弄っているのでは無くて
文字列の配列に SetLength して要素数を弄っているのですが。

300 :296:04/04/20 22:32
あー、スマソ。
俺勘違い。

301 :296:04/04/20 22:43
失礼のお詫びに俺でわかるだけのことはしてみた。

S[1]:=''
の時はSetLength(S,2)をしなくてもエラーにはならない。
S[2]:=''
とやっても大丈夫。

S[1]:='A'
の時は
SetLength(S,2);
SetLength(S,1);
とやってもエラーになる。

なのでS[x]:=''の時は実際に参照が行われないからなんじゃない?

302 :287:04/04/20 22:54
>>301
なるほど、どうもありがとう御座います…といって完結したかったのですが、うちの環境だと

SetLength(S,2);
SetLength(S,1);
S[1] := 'A';

でエラーにならないです
その上

SetLength(S,3);
SetLength(S,1);
S[1] := 'A';

だとエラーになります
もう、何がなんだか…

303 :デフォルトの名無しさん:04/04/20 22:54
Var
 S: Array Of String;
begin
 SetLength(S,2);
 ShowMessage(IntToHex(Integer(@S),8));
 SetLength(S,1);
 S[1] := 'ああああ';
end;

これだとエラーが出ない。ShowMessageを//するとエラーが出る。

304 :デフォルトの名無しさん:04/04/20 22:57
>>287
SetLength(S,1);S[1]:='';の動作は不定なので妙な動作になるのは当然。
{$R+}付ければ例外発生するし。

---------------------------
デバッガ例外が発生
---------------------------
プロジェクト Project1.exe が ERangeError クラスの例外を生成しました。
'Range check error'
プロセスは停止しています。再開するにはステップ実行または実行を選択してください。
---------------------------
OK ヘルプ(H)
---------------------------


305 :287:04/04/20 23:00
>>304
範囲チェック有りででエラー出ました。
そういうものだったんですか、どうもありがとう御座います。
お騒がせしました。

306 :デフォルトの名無しさん:04/04/20 23:29
明示的に領域が確保されてないから勝手に格納される(参照不可能)んだと思ってたけど違ってたみたいね
ありがd

307 :デフォルトの名無しさん:04/04/21 09:22
(・♂・) ユースケ・キンタマリアですが、何か?

308 :デフォルトの名無しさん:04/04/21 12:08
MXMoniter(http://www3.to/mxmonitor/)的なものをDelphiで作ってみたいのですが
他のアプリを絡めてモノを作った経験がありません。どのような勉強が必要でしょうか?
お勧めの本やサイトがあったら教えてください。

309 :デフォルトの名無しさん:04/04/21 12:22
「他のアプリを絡めてモノを作った経験」

「他のアプリを絡めるモノを作った経験」
の間違いかな?

普通のアプリは作れるの?

310 :308:04/04/21 12:43
簡単なテキストエディタやブラウザのようなものを作った経験はあります。
超初心者向けのサイトなどだとそこらへんの段階で一段楽してしまっているところが多く
他のアプリとの絡みに関してわかりやすく解説されているサイトがちょっと見当たらなかったもので・・・
もしご存知でしたら教えてください よろしくお願いします。

311 :デフォルトの名無しさん:04/04/21 12:55
Delphiとはあまり関係無いのでは?
必要なのは Windows Programming の知識でしょ。
WIN32APIのスレとかを過去ログから漁ったりした方が
知識を得られると思うけど。

312 :デフォルトの名無しさん:04/04/21 13:23
他人のアプリ(ソースコードが無いアプリ)を、アプリの外から操作する。
ということだ。対象アプリが外部コントロールを許しているかどうかから調査を
はじめないと。WinMX のことは良く知らんが、多分 OLE AUtomation なんて機能は無いだろう。

となると、対象アプリに対してキーボード操作をエミュレートすることになる。
基本は二点。
1. その時点での対象アプリの状態の取得
2. 望んだ変更を行うために何をしなければいけないのか。

どちらを行うにしても、最初は
1. 対象アプリの特定
2. アプリ上のコントロール/ウィンドウの取得。
3. 状態を把握。
からはじめることになる。

けして初心者向きでは無いし、作るなら根気が必要。

313 :デフォルトの名無しさん:04/04/21 13:35
Halbow の負の遺産として
「他のアプリのウィンドウ情報の取得 」
ttp://homepage2.nifty.com/Mr_XRAY/Halbow/VCL08.html

ってのがあるので、眉につばつけて読んで見なさい。

(以下はまだわからなくてもいいです)
実は _GETTEXT 系メッセージは、プロセス境界を越えたときでも正しく文字列をコピーしてくれる。
Halbow がどこで勘違いしたのかわからないけど、コントロールのキャプションを読み書きするだけなら
共有メモリは必要ない。
詳しくは、MSDN で GetWindowText API の説明を熟読してください

314 :デフォルトの名無しさん:04/04/21 14:19
> 実は _GETTEXT 系メッセージは、プロセス境界を越えたときでも正しく文字列をコピーしてくれる。

これは常識。そのサイトでもいっぱい使ってる。

> コントロールのキャプションを読み書きするだけなら共有メモリは必要ない。

そなの?
ListView の Items の内容は、コントロールキャプションじゃないけど取れるの?


315 :デフォルトの名無しさん:04/04/21 14:21
他プロセスの作ったウィンドウ情報は文字列だけじゃないし

316 :デフォルトの名無しさん:04/04/21 14:25
そうだね。ヘッダーの幅だとかヘッダーテキストの配置だとか、レコード型を
通してしか取得できないものは共有メモリつかうしかないでしょう。

317 :デフォルトの名無しさん:04/04/21 14:28
313は共有メモリを使わずにあの内容と同じことができるのか?

318 :デフォルトの名無しさん:04/04/21 14:30
無理

319 :デフォルトの名無しさん:04/04/21 14:42
>>313

そこ読んだけど、コントロールのキャプションを取得、って何にも書いてないが?
むしろ

http://homepage2.nifty.com/Mr_XRAY/Halbow/VCL06.html

こっちでは? ウィンドウテキストの取得には GetWindowText() 使っているよ。

なんか、313 の勘違いじゃないの。

320 :デフォルトの名無しさん:04/04/21 15:06
> Delphiとはあまり関係無いのでは?
> 必要なのは Windows Programming の知識でしょ。

おもしろい。
Delphi だと Windows Programming の知識はあまり必要じゃない、ってことかしら?
Delphi は Windows 以外のプラットフォームのアプリはつくれないのに?


321 :晒しあげ:04/04/21 15:26
Delphi は Windows 以外のプラットフォームのアプリはつくれないのに?
Delphi は Windows 以外のプラットフォームのアプリはつくれないのに?
Delphi は Windows 以外のプラットフォームのアプリはつくれないのに?
Delphi は Windows 以外のプラットフォームのアプリはつくれないのに?
Delphi は Windows 以外のプラットフォームのアプリはつくれないのに?


322 :デフォルトの名無しさん:04/04/21 15:28
Delphi は Windows 以外のプラットフォームのアプリをつくれるの?
Kylix とかいうんじゃないだろね。

323 :晒しあげ:04/04/21 15:29
Delphiは言語名ですよw

324 :デフォルトの名無しさん:04/04/21 15:34
> Delphiは言語名ですよw

開発環境でもあるんだが。
Windows 以外で動作する Delphi 言語があるのか? Kylix とか?

Kylix があるから、Delphi では Windows Programming の知識は必要ないとか?

おもしろいね。

325 :デフォルトの名無しさん:04/04/21 15:35
晒しさげ

Delphiは言語名ですよw
Delphiは言語名ですよw
Delphiは言語名ですよw
Delphiは言語名ですよw
Delphiは言語名ですよw
Delphiは言語名ですよw
Delphiは言語名ですよw
Delphiは言語名ですよw
Delphiは言語名ですよw


326 :デフォルトの名無しさん:04/04/21 15:36
>>324
http://www.borland.co.jp/kylix/kx3/fact01.html

> C/C++言語とDelphiTM言語の 自由な選択
>
> Borland Kylix 3は、ANSI/ISO標準規格の C++と
> 弊社独自規格の Delphiの二つの言語による
> プログラミングを可能にします。

327 :デフォルトの名無しさん:04/04/21 15:37
ボーランド自らDelphiは言語だと言っている。
さあ後がなくなったぞw

328 :デフォルトの名無しさん:04/04/21 15:38
>Delphi だと Windows Programming の知識はあまり必要じゃない
誰がこう言ってるのかわからないので、レス番指定してもらえますか?

329 :デフォルトの名無しさん:04/04/21 15:39
Delphiが言語名になったのは、Delphi6 くらいからだろ、たしか。
Delphi5以下では Object Pascal だよね。

絶滅寸前の Kylix ユーザも「自分は Delphi つかい」とか思ってるんだろうか。w

330 :デフォルトの名無しさん:04/04/21 15:40
>>328

誰もいってないと思うよ。

331 :デフォルトの名無しさん:04/04/21 15:46
>>330 ですよね。
>>320がなに言ってるかさっぱりわかりません。

まあみなさん、冬将軍でもみて落ち着いてください。

               ,i`'ー‐'\
          ,.-∠,,,、 `' /~‐-、,
     ._  ,/ ,,.-''",、=-,`'ー-、 \
    /  ``'_」``ヽー‐'i''ー-<''ー'',.r'"<-‐''"'、
   ./ /``''7ー--、\ `''‐-"/,,....-┬'''"'、 '、
   ./ /   .| i''ー-、,,,,ヽ ̄ ̄/,,,...,,,、、 |   .'、 '、
  / /  r、|. ヽ、,_●ノ    ヽ、,_●ノ |/i  '、 '、
 ./ /   ,,ヽ`ヽ、,,___,/-,-,-\,___,,,.-'",ノ_  .'、 '、
 ヽ,/_   >、        ,/ .ヽ、     ,イ    '、,,..ゝ
    .`''ー-| `'ー--‐‐'',,.--、_`'ー--‐''" |,,.-‐''"
        └───、 '"    `'.,r──‐┘ 

332 :デフォルトの名無しさん:04/04/21 15:49
>>329
> Delphi5以下では Object Pascal だよね。
そもそも、それはObject Pascalだったわけじゃなく、
単に名前が間違っていただけだし。

http://pcweb.mycom.co.jp/news/2002/08/08/05.html
> もともとDelphi言語と呼ぶつもりだったのが、
> Delphi 1のドキュメントで何故かObject Pascalという名前が出てしまった。
> 今回の製品を機会に、この"歴史的な間違い"を正しい名前に戻した」とも述べる。

333 :デフォルトの名無しさん:04/04/21 15:52
いきさつはともかく、ヘルプにも「Object Pascal 言語ガイド」っていうのがあるし。

334 :デフォルトの名無しさん:04/04/21 16:01
>>311 を素直に読むと、「Delphi」と「Windows Programming の知識」は
あまり関係がない、ということだよね。

そうすると、このスレは言語仕様やその使い方の Q&A をするところですか。

はぁー、リストボックスもツリービューも共有メモリもレジストリも
あまり関係なしですか?

335 :デフォルトの名無しさん:04/04/21 16:02
Object PascalじゃないのにObject Pascalだなんて詐欺ですね。

336 :デフォルトの名無しさん:04/04/21 16:05
>はぁー、リストボックスもツリービューも共有メモリもレジストリも
>あまり関係なしですか?

共有メモリ以外はVCLでラップされてんじゃないの?
VCL内部でWin32コールさせた方が、Kylixしやすいと思うが。

337 :デフォルトの名無しさん:04/04/21 16:06
>>331
>>320がなに言ってるかさっぱりわかりません。

疑問文でしょ。誰も答えないが。

338 :デフォルトの名無しさん:04/04/21 16:07
ボーランドが「ほんとは最初からdelphi言語って名付けるつもりだったんだ」って
今になってわめいているという可能性はないの?

別にボーランドを非難している訳じゃないけど、間違ったのなら2からでも
改めそうな気がしたんで。

339 :デフォルトの名無しさん:04/04/21 16:08
>>336
VCLはライブラリでしょ。言語じゃないよ。

340 :デフォルトの名無しさん:04/04/21 16:10
>>338
わめいてはいないけど、「実はさぁ」といいわけがましいのは事実。

341 :デフォルトの名無しさん:04/04/21 16:12
>>340
なるほど。ボーランドも大変ですね。
どうもありがとう。

342 :デフォルトの名無しさん:04/04/21 16:16
Wirth 先生やその取り巻きが、Turbo Pascal までは許せたけど、OOP を
導入した以降の 「Object Pascal」 に Pascal という名前を使ってほしくない
とか文句言ったそうで。Oberon とかの関連もあって。Wirth 先生は Turbo Pascal
には論文で言及するけど、Delphi は完全無視だよ。

343 :デフォルトの名無しさん:04/04/21 16:36
TListViewで個々のセルに対してフォント色等を設定したいのですが、
関連するようなプロパティやメソッドがヘルプにないということはできない
ということですよね?

もしFontStyleやColorを設定したい場合には、どのコンポを使えばいいの
でしょうか?



344 :デフォルトの名無しさん:04/04/21 16:37
TStringGrid か TDrawGrid だと

345 :デフォルトの名無しさん:04/04/21 16:42
>>343
やったことないけど、オーナードローでできないかな?

346 :デフォルトの名無しさん:04/04/21 16:45
> TListViewで個々のセルに対してフォント色等を設定したいのですが、

の質問に

> Delphiとはあまり関係無いのでは?
> 必要なのは Windows Programming の知識でしょ。

とかは、はまりますよね?

347 :デフォルトの名無しさん:04/04/21 16:47
なんか粘着してるな。
VCLの利用法はDelphiの知識の範疇に入ると思うけど。

348 :デフォルトの名無しさん:04/04/21 17:41
> VCLの利用法はDelphiの知識の範疇に入ると思うけど。

そう思います。でも VCL ってどの範囲だろうか。
Forms.pas や Controls.pas は VCL だけど、Windows.pas や ShellAPI.pas は
どうなの? これらがないと、VCL が動作しないことだけは確実ですが。

347は311のコメントをどう思ってる?

349 :デフォルトの名無しさん:04/04/21 17:42
>>281
ありがとぉ〜今からやてきます

350 :デフォルトの名無しさん:04/04/21 17:43
「Delphiは言語名ですよw」 ってのはどうなった?

351 :デフォルトの名無しさん:04/04/21 17:57
>>348
>347は311のコメントをどう思ってる?
いちいち気にしてない。じゃないかな。

さてつぎいきましょ。

352 :デフォルトの名無しさん:04/04/21 18:33
>>343
TListViewのOnCustomDrawItem辺りに
if Item.Caption='ぬるぽ' then Sender.Canvas.Font.Color:=clBlue;
とか入れてみ

353 :デフォルトの名無しさん:04/04/21 18:41
> TListViewで個々のセルに対してフォント色等を設定したいのですが

結構面倒なので、セルとかとして使うんなら、すなおに TStringGrid にする

354 :デフォルトの名無しさん:04/04/21 20:35
ボーランド社特有の問題というかなんというか
delphi7トライアルをダウソしてインストールしたんですけど、
その後の登録が上手くいきません。
delphi7を起動し、登録サイトにジャンプしてログインしてもログインできないし、
キーやらレジトリなんちゃらなど、どれがどれでいったい何を登録しろというのか
送られてきたメールはいったいなんのためにあるのか
初心者にとって全くもって理解しがたいプロシージャを要求しすぎだと思います。
ボーランド社特有のアクセシビリティの悪さはみなさん問題なくクリアされているのでせうか。

355 :デフォルトの名無しさん:04/04/21 21:04
>>350
ボーランド自らDelphiは言語ですと言い切っている
ソースを出されてあっさり終了。

356 :デフォルトの名無しさん:04/04/21 21:19
ObjectPascalは、Del7からDelphi言語と改称。

357 :デフォルトの名無しさん:04/04/21 21:21
「delphi7を起動し、登録サイトにジャンプしてログイン」
そんなこと要求されたっけ?
大体ダウンロードするときにキー送付のためのユーザー登録をしているはず。

多分、難しく考えているだけだと思うけどね。

358 :デフォルトの名無しさん:04/04/21 21:22
もともとDelphi言語と呼ぶつもりだったのが、
Delphi 1のドキュメントで何故かObject Pascalという名前が出てしまった。

359 :デフォルトの名無しさん:04/04/21 21:32
>>357
なにが悪いのかまったくわからず、
しかも登録失敗とかログインできませんとかで
結局、書籍付録の6パーソナルで済ましました。

360 :デフォルトの名無しさん:04/04/21 21:58
> ボーランド自らDelphiは言語ですと言い切っている

はぁ、そんなことではなく、Delphi が言語なら、Delphiスレは、言語スレ
なのか、という意味。なら、ツリービューなんか関係ないだろ、ってこと。

Delphi が言語になって2年だろ。開発環境の名前としては、9年だよ。
Delphi と言ったら、普通は、間髪環境のことだろ。

361 :デフォルトの名無しさん:04/04/21 21:59
× 間髪環境
○ 開発環境

362 :デフォルトの名無しさん:04/04/21 22:02
> ボーランド自らDelphiは言語ですと言い切っている

ボーランドのHPより

Delphiは、ビジュアル開発による生産性とネイティブコードによる高速性を
両立させたWindows用ビジュアル開発ツールです。

363 :デフォルトの名無しさん:04/04/21 22:10
仕様許諾コードを取得するプログラムは、
キチンと動いてないらしいという話が、
前スレかどっかであったよ。

364 :デフォルトの名無しさん:04/04/21 22:19
仕様許諾コードを取得させたくないんだよ、きっと。

プログラム開発環境だか言語だか知らないけど、その製品の会社が作った
「仕様許諾コードを取得するプログラム」がまともに動かないのは
お笑いだよな。

365 :デフォルトの名無しさん:04/04/21 22:26
ん、仕様許諾? 使用許諾だよね

366 :363:04/04/21 22:40
プログラムの不備と言う記述はなかったや、ごめんよ。
レジストサーバーが死んでるんじゃないか、と言う話だった。

367 :デフォルトの名無しさん:04/04/22 00:31
われながら程度の低い質問だと思うのですが、
程度が低すぎるせいかヘルプを見てもgoogle検索してもひっかかりません。

Extended型をinteger型に変換するにはどうしたらよいのでしょうか?
普通の型キャスト
integer(Extended);
では「正しくない型キャスト」といわれてしまいます。

368 :デフォルトの名無しさん:04/04/22 00:42
Round(), Tranc()

369 :デフォルトの名無しさん:04/04/22 00:42
×Tranc
○Trunc

370 :デフォルトの名無しさん:04/04/22 00:44
>>367
用途によって違う
Trunc, Floor, Ceil, Round

371 :367:04/04/22 00:49
>>368-370
ありがとうございます。
Truncで無事解決できました。
ほんと低レベルな質問で失礼しました。

372 :デフォルトの名無しさん:04/04/22 00:52
型キャスト っていうのは、実体が同じで、コンパイラに見方を変えてね
っていう指示なんだよね。内部データ形式が全く異なるExtended型をinteger型
にキャストできないのは当然。この辺の感覚はだんだんついてくるようになる。

373 :デフォルトの名無しさん:04/04/22 00:57
二つの値を渡して比を求める関数を作っているのですが、どう求めればいいかわかりません
現状だと9:3等はできますが9:6等はできません
function ratio(p : TPoint):TPoint;
var Upper , Lower , x , y : integer;
begin
Result.X := -1;
Result.Y := -1;
if (p.X = 0) or (p.Y = 0) then
exit;
x := p.X;
y := p.Y;
if (Max(x,y) mod Min(x,y)) = 0 then //大きい方から小さい方を割ってあまりがないとき
begin
Upper := (Max(x, y) div Min(x,y));
lower := 1;
if Max(x,y) = x then
begin
Result.X := Upper;
Result.Y := Lower;
end else begin
Result.Y := Upper;
Result.X := Lower;
end;
end else begin
//ここ
end;
end;

374 :デフォルトの名無しさん:04/04/22 01:22
>>373
比というのはどちらかを 1 としたときにもう一方の Y/X あるいは
X/Y のことですよね。
失礼ながらこのソースでは何をしたいのかよくわかりません。

もし長方形を枠にあわせて拡大・縮小をするというような用途であれば、
あらかじめ実数値として Y/X を算出し (←これを一般に比と呼びます)、
目的の幅に比を掛けて高さを求めるか、目的の高さを比で割って幅を
求めるという方法が適切ではないでしょうか。

375 :デフォルトの名無しさん:04/04/22 01:26
最大公約数を求めて、両方をそれで割るってことでは?

最大公約数の求め方

http://oto.chu.jp/kujira/text/delphi/zero/11.htm

376 :デフォルトの名無しさん:04/04/22 01:42
どうも失礼しました。ちょうど Rect に収まるようにイメージをストレッチ描画
するものを書いてたので、それと同じようなものかと勝手に勘違いしていました。

377 :デフォルトの名無しさん:04/04/22 01:45
質問です。
Delphiの事をよく理解しないまま、ネット上のTipsを参考にしたり、
ダウンロードした自作コンポーネントを貼り付けたりして、気がついたら
千行を越える複雑怪奇なプログラムが組みあがってしまったんですが、
普通にCloseすると例外が発生します。
仕方が無いのでHaltで終わらせてるんですが、これってやっぱまずいんでしょうか?

378 :デフォルトの名無しさん:04/04/22 01:48
> 普通にCloseすると例外が発生します。

十分ヤバイと思います。

379 :デフォルトの名無しさん:04/04/22 02:04
>>378
やっぱりヤバイですか(´・ω・`)
とはいえ、どこをどう直せばばいいのやら全く見当がつきません。
下手にいじるとWindowごと落ちる始末です。

なんとか頑張って例外が発生しないようにしてみます。

380 :デフォルトの名無しさん:04/04/22 02:16
>>366
D7 は日本のサーバーではなくあっちのサーバーにつながっているので、めったに
こけることは無いと思いますが。

381 :デフォルトの名無しさん:04/04/22 02:28
>>376
アスペクト比を保ったまま、ある Rect に収まる最大の描画方法は、長辺を Rect の
対応する辺にぴったり収まる比率を求めて、その比率で短辺を描画したとするとき
はみ出すかどうか確認し、はみ出さなければその比率で、はみ出したら、短辺の
対応する辺にぴったり収まる比率を求めて、それで全体を描画する。 if 文が二つ。

382 :デフォルトの名無しさん:04/04/22 02:30
訂正 if は一つ

383 :デフォルトの名無しさん:04/04/22 06:08
>>379
例外が出て、IDE / デバッガで捕捉できているのなら、直せるかどうかは別にして
バグの場所だけでも特定できそうなものだが。
デバッグ情報をつけて、デバッグ版の .DCU を使って再コンパイル。
例外でデバッガに戻った時にソースコードが表示されればしめたもの。

>千行を越える複雑怪奇なプログラム
は、一関数が千行越えたのかな?
バグを直しつつかきかえなされ。

384 :デフォルトの名無しさん:04/04/22 11:31
'AAA',1
'BBB',2
'CCC',3
というリストをTStringsで扱いたいのですが、AddObjectの第2引数はどのように
書けばいいのでしょうか? 数値だけのクラスを定義しないとダメですか?

385 :デフォルトの名無しさん:04/04/22 11:57
AddObject('AAA',TObject(1));

386 :デフォルトの名無しさん:04/04/22 11:59
TStrings は抽象クラスだよ、分かってると思うが。

387 :384:04/04/22 12:04
>>385
できました。単純にキャストしてしまえばいいのですね。
でもなんか不思議な気がします。「1」の実体は一体どこに格納されてるのでしょう??

>>386
TStringListの間違いでした。

388 :デフォルトの名無しさん:04/04/22 12:14
>>384
純粋なオブジェクト指向の考えからすれば「数値だけのクラスを定義」するのが美しい。
ところが数値だけしか入らない。とわかっているのにクラスを定義するのはもったいない。
ってことと、Delphi ではクラスはポインタで受渡しされることから、TObject(<なにか>)
という使い方をします。これは

まず、数値 1 はポインタ型にキャストされます。絶対アドレス $00000001 を示す形無しポインタです。
次にこれが TObject 型にキャストされ、見かけ上 TObject 型として保存されます。

この "TObject" 型の値は、本物ではありませんから、メソッド呼び出しなどを行うと
AV がおきるでしょう。TObject 型に見せかけた4バイトの領域でしかありません。


389 :デフォルトの名無しさん:04/04/22 13:54
>>342
ObjectPascal自体は、昔AppleがWirth先生と共同で策定した言語で別にちゃんとある。
初期のMac用のクラスライブラリ(OWLのようなアプリケーションフレームワーク)、
MacAppのために設計された。
その後AppleがC++に傾倒してMacAppもC++で書き直された事や、
OSのヘッダファイルがPascal用だけでなくC用も提供されるようになったので、
あまり使われなくなった。


390 :デフォルトの名無しさん:04/04/22 13:54
>>387

ここ読んでみて
http://homepage2.nifty.com/Mr_XRAY/Halbow/Notes/N023.html

391 :デフォルトの名無しさん:04/04/23 00:07
先日Delphi6フリー版をDLしたんですけど使い方がいまいちわかりません。
レジストリに任意の内容に書き換えれるようにしたいのですが。
(スタートアップや環境変数の書き換え等)悪用目的じゃないです。
よければ初心者向けのお勧めのHPを教えてください。
できればサンプルをDLできるような所があれば・・・

ちなみにHPで公開されてるソースはどのようにして利用すればいいのでしょう?
貼り付けるだけではエラーばっかりでハングアップしてしまいます。。。
アドバイスお願いします

392 :デフォルトの名無しさん:04/04/23 00:13
いろいろやってみて。

393 :デフォルトの名無しさん:04/04/23 00:19
>>391

>レジストリに任意の内容に書き換えれるようにしたいのですが。
TRegistryオブジェクトを使う。
WindowsAPI使って実装も可能。

>貼り付けるだけではエラーばっかりでハングアップしてしまいます。。。
何を貼り付けたかにもよるので何とも。
具体的に何さ?どんなエラー返すんだ?

394 :デフォルトの名無しさん:04/04/23 00:39
レスありが問うございます
>>392
がんばります

>>393
>TRegistryオブジェクトを使う
オブジェクトという物事態わかりません;; すいません
TRegistryはどうやれば利用できるのでしょう?

それにソース貼り付けだけでもプログラムは組めるんですか?
エラーが出たのは全部なんですがたとえば
ttp://forum.nifty.com/fdelphi/samples/00109.html
このソースを全部コピーして新規作成で貼り付けたんですが…
思いっきり固まりました。

395 :デフォルトの名無しさん:04/04/23 00:41
(´-`)。o ○ (レジストリだけは完全に学習してからにして欲しいと
思うのはオレだけか?
つーか、自分が使うツールってことであって欲しい…)

396 :デフォルトの名無しさん:04/04/23 00:55
レジストリは怖い。



397 :デフォルトの名無しさん:04/04/23 01:06
ヘルプの文字列リストの使い方では、TStrings型で宣言してTStringList型をCreateしていますが、
TStringList型で宣言してはいけないのですか?

398 :391:04/04/23 01:09
>>395
自分で使うツールです。
たとえばyahooメッセで表示される広告を変えるとか。
普通に弄ったらエラーがでるんです。
この操作のツールはもう出てるんですけど勉強の為です。
できるなら完全に学習できる方法を教えてください。

いちをVBも持ってるんですが素人はどちらを使えばいいのでしょう。。。

399 :デフォルトの名無しさん:04/04/23 01:15
>>395
たかだか設定情報の場所が違うだけだ。
気にすんな。

400 :デフォルトの名無しさん:04/04/23 01:16
>>394
TRegistry は例外処理が必須なので最初に始めるプログラムとしては
少し難しいと思います。

格納値には型があり、基本的に Write〜 で書き込んだのに対応する
Read〜 で読み出す必要があります。型が一致しない格納値を読み書き
しようとすると例外が発生しますので、必要に応じて try 〜 except で
捕捉しなければいけません。ヘルプの例外処理を読んでみてください。

>>397
TStrings で宣言する理由がなければ (例えば TStringList のメンバーを
隠蔽したいとか) 、TStringList で宣言する方がむしろ普通かと思います。

401 :デフォルトの名無しさん:04/04/23 01:17
(´-`)。o ○ (「どちらが」なんてことを他人に決めてもらうのはどうか。
自分の好きなようにすればいいし、挫折したらしたで他やれば良いかと)

402 :397:04/04/23 01:21
>>400
そうですか、どうもありがとう御座います

403 :398:04/04/23 01:24
>>400
アドバイスありがとうございます
基本からやっていきたいと思います。

>>401
あくまでも参考にと思って聞いてみただけです。
そうですね

404 :デフォルトの名無しさん:04/04/23 11:02
しおりの設定なんですが、設定したしおり(□に数字が入ってる)の数字が非常に
みにくいので、色を変えたりしてみやすくしたいのですが、どうすれば
いいのでしょうか?


405 :デフォルトの名無しさん:04/04/23 12:23
某に要望書をだす。

406 :デフォルトの名無しさん:04/04/23 12:42
>>404 色覚異常者かな?
バイナリに格納されているビットマップを書き換える。ってことになると思うけど。


407 :デフォルトの名無しさん:04/04/23 12:55
>>404
ちゃんと見たことあるのかな?

みやすいと思うのか?
あと、解像度を高くして使っているから、さらにみにくくなっているというのもあるが。



408 :デフォルトの名無しさん:04/04/23 13:11
俺も見難い。
Delphi 6 Personal
濃い緑に黒字の奴だろ?
これを見やすいと言ってる香具師の気が知れない。

409 :デフォルトの名無しさん:04/04/23 13:14
数字が書いてるのにも気づかなかった漏れ。
まあしおりは使ってないけど。

410 :デフォルトの名無しさん:04/04/23 15:19
俺は栞使わないで別ウィンドウで開く使ってる。

411 :デフォルトの名無しさん:04/04/23 16:09
見やすくは無いが見えないことも無いって位か。
モニターのブライトネスはかなり低いけど。

412 :デフォルトの名無しさん:04/04/23 17:06
しおりは ひとつか ふたつ記憶させるのにいい。


413 :デフォルトの名無しさん:04/04/23 21:28
ヘルプのフォントを変更することはできますか?行間の広いフォントにしたいのですが。
DelphiのヘルプはHTMLヘルプじゃないのでできないのでしょうか。

414 :デフォルトの名無しさん:04/04/24 00:09
ガーン。オレも数字なんて知らなかった…<しおり
見づらいとは思わなかったが。
7とか8だと「しおりの保存機能」は付いてんだろうか?
多分無いような気がするが。便利だと思うのに。

415 :デフォルトの名無しさん:04/04/24 00:54
脳で考えただけでそこへ移動できたら便利だね。

416 :デフォルトの名無しさん:04/04/24 01:05
夢物語見てないで、現実にあるものをもっと使いやすくしろ>Delphi

417 :デフォルトの名無しさん:04/04/24 01:13
>>415
ロシア語で…。

418 :デフォルトの名無しさん:04/04/24 01:45
>>413
できない,氏ね。

419 :デフォルトの名無しさん:04/04/24 17:45
すみません、質問です。
プロジェクトを読み込むと「フォーム作成中にエラーが発生しました。2197行で行が長すぎます」という
エラーが発生しました。
どうもUnit1.dfmが壊れてるみたいなのですが・・・。
どうすればいいんでしょうか?

420 :デフォルトの名無しさん:04/04/24 17:51
・Unit1.dfmを修復する
・諦めて作り直す
・悔しくても泣かない

421 :419:04/04/24 17:55
_| ̄|○

422 :デフォルトの名無しさん:04/04/24 17:57
functionとprocedureでオーバーロードすることは出来ないんですか?

423 :デフォルトの名無しさん:04/04/24 19:40
2197行を含む一番内側のbegin〜endを削除すれば他の部分は助かる

424 :デフォルトの名無しさん:04/04/24 19:57
>>422 できるでしょ

425 :デフォルトの名無しさん:04/04/25 01:35
function Hoge: Integer; overload;
procedure Hoge; overload;

begin
 Hoge;
end;

どっちのHogeを呼び出すの?


426 :デフォルトの名無しさん:04/04/25 01:39
やりゃわかるだろ

427 :デフォルトの名無しさん:04/04/25 01:44
同じパラメータを持つメソッド 'Hoge' がすでに定義されています

だってさ
ケッ

428 :デフォルトの名無しさん:04/04/25 01:55
何するかわからんコード書いても仕方ないな

429 :422:04/04/25 01:57
たとえば
function hoge(i:integer):integer;
procedure hoge(var i:integer);
とか

430 :デフォルトの名無しさん:04/04/25 04:15
引数が同じヤツはオーバーロード無理

431 :デフォルトの名無しさん:04/04/25 08:21
最近プログラミングに興味をもって、
無料でできるというのでDelphi6をインスコしたんだが
ホームページでの学習はたいていのところが更新とまってたりして
変数って何よ。ってなぐらいの俺にとって結構しんどそうなので
本買ってみようと思って
http://www.amazon.co.jp/exec/obidos/ASIN/4839907161/ref=pd_ecc_rvi_4/249-4988864-8187503
を検討してるんだが
これでいいのだろうか?
中村拓男?て人のレビューにのところが気になるのだが・・・

長文スマソ

432 :デフォルトの名無しさん:04/04/25 08:43
アマゾンは返品可能だから、新品買って読んでみて合わないと思ったら返品するか
それは気まずいと思うなら、
ユーズド価格 : ¥2,000よりを買って、合わないと思ったらまた売ればいいじゃない。


433 :デフォルトの名無しさん:04/04/25 09:27
>>431
http://www.fukkan.com/sell/index.php3?mode=detail&i_no=13893706

大きな書店でもたまに見る
関西でスマンが難波ジュンク堂や日本橋のジョーシンで売ってた

434 :デフォルトの名無しさん:04/04/25 11:29
「Delphi オブジェクト指向プログラミング」
何年たっても不滅の名著ですねー。
この本を読んで初めてオブジェクト指向をなんとなく理解できました。
最近書店で見かけないので絶版になったのかと思ってた。

435 :431:04/04/25 11:31
復刊ドットコムでは
中級者以上必携になってますが、
俺でも理解できるようなものなんですか?

436 :デフォルトの名無しさん:04/04/25 11:34
古すぎだと思う。

437 :デフォルトの名無しさん:04/04/25 11:51
すみませんが...
real型はstr型に直せないですか?

438 :デフォルトの名無しさん:04/04/25 12:09
>>437
FloatToStr

439 :デフォルトの名無しさん:04/04/25 12:33
ド素人ほど必須だと思うけど。>Delphi オブジェクト指向プログラミング

復刊を期に手に入れた方だけど、これがなかったと思うとぞっとする。

440 :431:04/04/25 12:41
Delphi オブジェクト指向プログラミング
買ってみました。
アドバイスくれた方々どうもありがとうございました。

441 :デフォルトの名無しさん:04/04/25 12:59
持ってない漏れには持ってないことの不便さが分からん
そんなにいいの?

442 :デフォルトの名無しさん:04/04/25 13:29
ヘルプの言語ガイドを読んで理解できない人にはいい本かも知れないね。

443 :デフォルトの名無しさん:04/04/25 16:00
Delphiにおけるオブジェクト指向をこれほどわかりやすく解説した本は他に知らない。
自前のクラス作成・活用もコンポーネント作成もVCLのソース読むのも
この本を読んでからできるようになった。
この本読んでなければ私はきっと今も初心者だったことでしょう。

>>440
超初心者には難しすぎる本かも。
しかし良い本なので将来役立ててください。
まずは他の本で言語の基本を勉強しましょう。


444 :デフォルトの名無しさん:04/04/25 16:08
>436
純粋にオブジェクト指向の解説本なんだから古いも新しいも関係ないのでは。

445 :431:04/04/25 17:27
>>443
そうか・・・でも有用な本なら損はないと思っておいて、
もう一冊買って見ます。

わからないことがあったらまた
質問させてくれ。
そのときもよろしく頼みます。

446 :デフォルトの名無しさん:04/04/25 21:49
>>439
確かにその本は不朽の名著だと思うけど、Delphi1に準拠している点を改訂して
新版を出してほしかったな

でなければ、中村さんあたりの大御所にDelphiオブジェクト指向プログラミングに
関する書籍を出版してほしいところだが・・・ヒマないんだろうな


447 :デフォルトの名無しさん:04/04/25 22:11
結論

Delphiなんかやめとけ。

448 :デフォルトの名無しさん:04/04/25 22:20
結論


釣られた奴は敗北者。 以上。

449 :デフォルトの名無しさん:04/04/25 22:31
> 中村さんあたりの大御所に

自分もそう思います。2年まえだったら。

今からですと、Delphi の先細りがハッキリしてきているので、あまり意味ない
と思います。しかし、オブジェクト指向そのものの思想というか基礎的な事柄は
言語によらず重要だと思っています。

450 :デフォルトの名無しさん:04/04/25 23:14
内容は古いけど筆者の読者をオブジェクト指向への
誘導のさせかたは今でも好き。代入互換性の重要さ
を説いてる人はこの人以外あまり見かけないね〜。

451 :デフォルトの名無しさん:04/04/25 23:32
この筆者、LINUXの本も出してるけど、かなり独特。
ブートローダーの解説で、OSがブートする仕組み(カーネルは何者なのかとか、
OS起動前になぜファイルをメモリに展開でき実行できるのかとか)
を非常に詳しく書いていたりする。
たかがブートローダーの解説でブートストラップの説明する本なんて他にないと思う。

筆者の信念は
「ツール使い方を覚える」のではなく「ツールの根底にある概念や原理を理解する」
のが大事だと思っているのだと思う。
実際、書いてある事を理解すれば仕組みを理解でき、応用力がつく。
この筆者の本は役に立ちます。

452 :デフォルトの名無しさん:04/04/25 23:34
> 代入互換性の重要さ

持ってたけど、どっかいってしまったので、詳しくは分かりませんが、
ひょっとして、下位クラスのインスタンスは上位クラスの参照に代入できる
ことを言ってるんですか? だとしたら、OOP の基本ですけど、多態性の。
OOP に関するどんな本でも必ず載ってますよ。

Delphi は、C++ と同様、クラスの外に、関数やレコード型や変数を宣言できたり
して、OOP 用の言語としては、Java や C# よりも構造化言語に近くて、中途半端
です。

453 :デフォルトの名無しさん:04/04/26 00:16
だが本音と建前を使い分けられる仕様だからこそよい。

454 :デフォルトの名無しさん:04/04/26 00:17
> だが本音と建前を使い分けられる仕様だからこそよい。

同意。中途半端さ加減が絶妙ではあるね。

455 :デフォルトの名無しさん:04/04/26 03:47
(´・ω・`)さっぱりわからない…。

456 :デフォルトの名無しさん:04/04/26 04:16
"代入互換"や"代入互換性"じゃほとんどヒットしないけど
どんなキーワードで検索すればいいのですか?

457 :デフォルトの名無しさん:04/04/26 09:59
> どんなキーワードで検索すればいいのですか?

多態性 の検索結果 約 220,000 件



458 :デフォルトの名無しさん:04/04/26 10:02
塚越本は超初心者にはやや難しいし、中級者には陳腐だな。
まず、初心者サイトでポトペタの練習をして、「なぜ、このように動作するのか」を
考えてから読むといいかも。

459 :デフォルトの名無しさん:04/04/26 11:50
質問させて下さい。
ScrollBox上でマウスホイールを回転させても、OnMouseWheelイベントが発生せずに
スクロールバーが動いてしまいます。
スクロールバーを動かさずOnMouseWheelイベントを発生させる方法はありませんか?

460 :デフォルトの名無しさん:04/04/26 12:00
マウスに依存するみたいだよ。

http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200312/03120057.txt

461 :459:04/04/26 12:23
そうなんです。マウスドライバをバージョンアップしてからなんです。
どうやらフォーカスに関係無く、マウスカーソル直下をスクロールさせてるみたいで
ドライバ側でホイールを切れば、今まで通りに動くんです。

どのような環境でも一定の操作感で動かしたいんですが無理でしょうか?

462 :デフォルトの名無しさん:04/04/26 13:28
どのような環境でもって言われても、普通は検証できないし

463 :デフォルトの名無しさん:04/04/26 13:59
TFormにあるヘルプ機能や、WinHelpは.hlpのヘルプファイルにしか
対応してないようですが、.chmにはデフォルトで対応してないのでつか?

F1キーを押したときに表示させるようにするには、F1が押されたことを
イベント関知して、そして自分でフォームに応じたヘルプのトピックを表示
させるようにしなければならないんでしょうか?

464 :デフォルトの名無しさん:04/04/26 14:12
吐駄っちって
「家族に不幸があったため NET 活動を自粛しています。m(_~_)m」
なんて書いといて全然自粛してないしw

465 :デフォルトの名無しさん:04/04/26 15:53
外出

466 :デフォルトの名無しさん:04/04/26 22:30
プリンターの制御(ってほどのものではないけど)についてお聞きしたいのですが、
デジタル複合機があって、ホチキス止めする機能があります。
ここからここまでを印刷してホチキスで止めるというのはどのように書けばよいのでしょうか?

467 :466:04/04/26 22:30
すいません sageてました。

468 :デフォルトの名無しさん:04/04/26 22:46
>>463
Delphi.NET使え

469 :デフォルトの名無しさん:04/04/26 22:52
>>466
情報が少なさ過ぎる。
ホチキス止め処理をしているのがプリンタドライバかハード側かすらも解らない。
ハード側で制御しているなら、アプリケーションでは如何なる言語を使おうがムリ。
プリンタドライバでしているとしても、それを行うAPIやコマンドの類が公開されていない限り不可能。

470 :デフォルトの名無しさん:04/04/26 23:04
>>468
.NET使えない開発もあるだろ
答えてやれないなら返事するな

>>463
HtmlHelpを使えるようにす.pasや、メッセージをフックする方法が
米のBorlandのTipsにあるよ。
あと、フリーの.pasでF1キーその他を関知して、TFormコンテキスト等を
HtmlHelpに渡してくれるソフトなんかもあるので、調べてみたら?

471 :466:04/04/26 23:05
wordでホチキス止めを実施したときはプリンターの設定で実施しました。
なので、プリンタドライバ側で処理しているのではないかと思います。
このような、APIはWindowsの標準ではないのでしょうか?

両面印刷は出来たので同じようなイメージで調べたのですがわかりませんでした。



472 :デフォルトの名無しさん:04/04/26 23:40
>>471
全てのプリンタに標準で両面印刷やホチキス止め機能が付いているとでも?

473 :466:04/04/26 23:46
>全てのプリンタに標準で両面印刷やホチキス止め機能が付いているとでも?

さすがにそうには思いませんが、Windowsで機能があるのかなと思いまして・・・
そういゆうものではないのですか?

両面印刷の選択とか、A4,A3の選択みたいなものだと思っていたのですが



474 :デフォルトの名無しさん:04/04/26 23:51
Win32APIスレかそのプリンタメーカーに問い合わせたら?

475 :466:04/04/27 00:33
>474

わかりました。
明日、メーカーに聞くか
Win32APIスレをしばらくROMって質問します。

476 :デフォルトの名無しさん:04/04/28 13:23
調べてみたのですがよくわからなかったのでヒントをください。

いま、簡単なデータベースアプリケーションを作っています。
その中で、テーブルのメンテナンス画面としてモーダルダイアログで
表示したウィンドウで、TDBGridなどを使用してデータに変更
を加えるインタフェースを作っています。

たとえば、データを変更して、やっぱりキャンセルしたい場合に
キャンセルボタンを押してダイアログを終了すれば、先ほどまでの
作業はなかったことになるようにするにはどうすればいいのでしょうか。

キャッシュアップデートとか、そのあたりを使うのでしょうか。

よろしくお願いします。

477 :デフォルトの名無しさん:04/04/28 23:21
ヘルプでキーワード検索タブを表示して rollback と入力
その下の TDatabase をダブルクリックして出てきたヘルプの例を見る。(D7)

478 :デフォルトの名無しさん:04/04/28 23:42
TEditコンポーネントに数字を入力させて、
それを変数に格納したいのですが、
どうすればいいですか。

自動的に Form1: TForm1;とグローバル変数が定義されています。
イベントはOnChangeを使うのか程度しかわからないです。

479 :478:04/04/28 23:57
変数にしなくてもEdit1.textで直接入力した内容を読み出せるみたいなので
それでいいことにしました

480 :デフォルトの名無しさん:04/04/29 00:15
>>479
strtointdefあたりをお忘れなく(数字しか入力出来ないようになってるんなら
別だけど)。

481 :デフォルトの名無しさん:04/04/29 00:39
indyのTIdTCPServerとTIdTCPClientを使って接続先の
MACアドレスの取得をしたいのですがどうすればいいですか?

よろしくおねがいします。

482 :デフォルトの名無しさん:04/04/29 00:58
DelphiからExcelのセルに数値を読み書きしたいのですが
セルに書き込む方法は解りましたが、セルから数値を取得するにはどうすればいいでしょうか?


483 :デフォルトの名無しさん:04/04/29 17:58
Delphi6インストールしたんですが起動アイコンが見当たりません
どこにあるんでしょうか?

484 :デフォルトの名無しさん:04/04/29 18:24
delphi32.exe

485 :デフォルトの名無しさん:04/04/29 18:47
>>484 ありがと〜、ファイル名で実行してみます


486 :デフォルトの名無しさん:04/04/29 18:50
スタートメニューに無かったのかの小一時間(ry

487 :デフォルトの名無しさん:04/04/29 19:40
Indyコンポーネントをインストールしようとすると、
「プロシージャエントリポイント @Idresourcestrings@_RSBindingAny が
ダイナミックリンクライブラリ Indy60.bpl から見つかりませんでした。」
というエラーメッセージが出て失敗します。
何が原因なんでしょうか?

環境は
Windows XP
Delphi 6.0 Update Pack 2

インストールしようとしたパッケージは
http://www.nevrona.com/Indy/download/Files/Indy9.html
からダウンロードできる9.0.14 Source code distributionです。

インストールの方法はzipファイルに同梱されている
Manual Installによりました。

488 :デフォルトの名無しさん:04/04/29 21:33
>483
こんな初心者がどうやってD6手に入れたのか小一時間w

489 :デフォルトの名無しさん:04/04/29 21:36
むしろ普通にパッケージを入手したに20Mag

490 :デフォルトの名無しさん:04/04/29 21:47
むしゃくしゃしてやったに30孫

491 :デフォルトの名無しさん:04/04/29 22:07
>>487
Del6perはIndy使えないの。
はずしてたらゴメンネ。

492 :デフォルトの名無しさん:04/04/29 22:16
>>491
んなことはない。

493 :デフォルトの名無しさん:04/04/29 22:21
>>491
るるとん@K?

494 :デフォルトの名無しさん:04/04/29 22:27
>>487

同梱マニュアルは読んでないから解からんが、少なくともここに書いてある方法でならインストールできた
ttp://deuxdeux.hp.infoseek.co.jp/gikobuild.html#Indy9


495 :デフォルトの名無しさん:04/04/29 23:03
Windows初心者がデル手に入れてもただのゴミ。
しかもどう考えても違法品でしょ。今時D6売ってないし。

496 :デフォルトの名無しさん:04/04/29 23:06
>>495
売ってなくても合法的に手に入るんだよ。

497 :デフォルトの名無しさん:04/04/30 01:09
>>486 それが無いから驚いたんです、
探せど探せどエクスプローラが展開するばかりで


498 :デフォルトの名無しさん:04/04/30 01:10
>>497
もう一度、インストし直せよ

499 :デフォルトの名無しさん:04/04/30 01:13
>>498 見つけたから大丈夫です、ちなみにVectorから落としました


500 :デフォルトの名無しさん:04/04/30 01:15
微妙に話しがかみ合ってないような気もする。

501 :デフォルトの名無しさん:04/04/30 01:19
>>500
たぶん、>>499はインストールとダウンロードを間違えてるんだと思う

502 :487:04/04/30 01:45
自己解決してしまいましたのでご報告を。

「プロシージャエントリポイント .... が
ダイナミックリンクライブラリ ... から見つかりませんでした。」
というエラーメッセージは、
DLLのバージョンが古いために呼ぼうとした手続きや関数がDLLの中に
含まれていない場合に起こるメッセージのようです。
また、上記インストール方法ではC:\Windows\System32\以下にindy60.dplを作成するのですが、
${DELPHI}\Bin\以下および${DELPHI}\Source\Bpl\以下にも同名のファイルの古いバージョンが存在したために、
ライブラリパスの設定の関係上そちらが優先して読み込まれていたようです。

なので、上記のようなエラーメッセージが発生した場合、
別のパスの同名のファイルの存在を疑うといいかもしれません。
今後似たような質問がありましたらご参考にしてください。

それでは皆さま、どうもありがとうございました。

503 :デフォルトの名無しさん:04/04/30 08:42
OpenDialogのOnIncludeItemで、
特定の拡張子のファイルを非表示にするやり方をどなたか教えてください。

504 :デフォルトの名無しさん:04/04/30 09:24
http://www.vector.co.jp/soft/dl/win95/prog/se205882.html

こいつをDLしたのか・・・。

505 :デフォルトの名無しさん:04/04/30 12:18
>>504そうです、VBのただのやつに似てるネこれ


506 :デフォルトの名無しさん:04/04/30 13:01
>>503
uses ShlObj;
var file_name: packed array[0..MAX_PATH] of Char;
SHGetPathFromIDList(OFN.pidl, file_name);
これでファイル名がとれるから後は煮るなり焼くなり

507 :デフォルトの名無しさん:04/04/30 13:59
どうやって 煮るのか 焼くのか 教えてくれ(w

508 :デフォルトの名無しさん:04/04/30 14:58
それが人に者を頼む態度かっ!!





なんつって。
フィルターに必要な拡張子だけ許可入れるんじゃダメなんか?

509 :デフォルトの名無しさん:04/04/30 14:59
漢字間違ってんじゃんorz

510 :デフォルトの名無しさん:04/04/30 16:56
Inc(rya := CompareT(ry ExtractF(r (

511 :デフォルトの名無しさん:04/04/30 17:27
MIDI再生プログラムを作りたいのですが、
再生、制御に関するコンポーネントは存在するのですが、
スペクトラム表示機能みたいなコンポーネントって存在するのでしょうか。

自分でやろうと思っても全然その辺のことわかんないんですorz

512 :503:04/05/01 00:37
Include:=False;でもTrueでも全部表示されるみたいなんですが、
Includeで表示させるかを指定するものとは違うんでしょうか?
この辺が良く分かりません。

513 :デフォルトの名無しさん:04/05/01 07:11
delphi personalでタイプライブララリって作るの無理?

514 :513:04/05/01 07:12
>delphi personal
delphi6 personal

515 :デフォルトの名無しさん:04/05/01 08:09
>>510
何じゃそりゃw

そんなことしてるとそのうちコンパイラ様が真似するぞ!

[ヒント] Unit1.pas: 変数 'a' が宣言され(ry
[警告] (r

516 :デフォルトの名無しさん:04/05/01 15:09
Tpanel上にあるTbuttonがクリックされた時に
Tpanel.nameを取得したいのですがどうすれば良いですか?

517 :デフォルトの名無しさん:04/05/01 15:23
TButton.Parent.Name

518 :516:04/05/01 15:47
>>517
実際にやってみた結果、取得する事が出来ました。
ありがとうございました。

519 :デフォルトの名無しさん:04/05/01 22:55
ObjectList.Add(追加Object);
でどんどんObjectListにオブジェクトを追加していくとして、
終了時にObjectList.Freeとすれば追加Objectの使用しているメモリも開放されるのでしょうか?

520 :デフォルトの名無しさん:04/05/01 23:10
OwnsObjectsの値による。

521 :デフォルトの名無しさん:04/05/01 23:16
>>520
格納されているobjectはこんな感じです。

TData=class(Tobject)
public
 string型と
 integer型の値が複数
end;

522 :デフォルトの名無しさん:04/05/01 23:43
いや、そのだな……うがーっ
TObjectListのメンバをOからOまで全部見ろ

523 :デフォルトの名無しさん:04/05/01 23:47
すみません。とりあえず出直してきます・゜・(ノД`)・゜・。

524 :デフォルトの名無しさん:04/05/01 23:53
>>522
理解しました。初心者以前の問題でした…
本当にごめんなさい。

525 :デフォルトの名無しさん:04/05/01 23:58
「くだすれ」だから謝る必要無し。

526 :デフォルトの名無しさん:04/05/02 20:22
誠意がなくなったら人間お終いよ

527 :たま:04/05/02 20:43
さよなら人類

528 :デフォルトの名無しさん:04/05/02 23:19
>>527
古すぎw

529 :527:04/05/02 23:28
この間友達4人とカラオケ行って歌ったら、すごく盛り上がったよ
知ってたのは漏れを含めて2人だったがw

530 :デフォルトの名無しさん:04/05/03 11:22
TObjectListで質問です。
フォームをたくさん作るので、TObjectListで管理しようと思っています。
しかし、TObjectListはRemove時に自動的にオブジェクトを解放してくれるので、
作成したFormはFreeしなくてもいいのですよね?

しかし、フォームを安全にするならReleaseを使えという記述がよくありますが、
そうするとTObjectListではReleaseではなく、Freeしてしまうため、TObjectListで
フォームは管理すべきじゃないんでしょうか?

もし安全にTObjectListのようにフォームのオブジェクトを管理する方法があったら
教えてください。

531 :デフォルトの名無しさん:04/05/03 11:41
> Remove時に自動的にオブジェクトを解放

ヘルプより

OwnsObjects プロパティが True の場合でも,Extract メソッドを使って,
オブジェクトを解放せずにオブジェクトをリストから削除することができます。

つーか、Screen.Forms や FormCount を使うのが普通だけど

532 :デフォルトの名無しさん:04/05/03 11:42
Remove メソッドは,指定したオブジェクトをリストから削除し,(OwnsObject プロパティが Trueの場合)オブジェクトを解放します。

function Remove(AObject: TObject): Integer;

説明

Remove メソッドを呼び出すと,添字が不明なオブジェクトをリストから削除できます。
返される値は,オブジェクトが削除される前の,Items 配列内のオブジェクトの添字です。
指定したオブジェクトがリストに見つからない場合,Remove メソッドは -1 を返します。
OwnsObjects プロパティが True の場合,Remove メソッドはオブジェクトを解放し,同時にそのオブジェクトをリストから削除します。
オブジェクトを削除すると,削除されたオブジェクトに続くすべてのオブジェクトが上の添字に移動し,Count プロパティがデクリメントされます。
リストに複数のオブジェクトが存在する場合,Remove メソッドは最初に見つかったオブジェクトだけを削除します。
したがって,OwnsObjects プロパティが True の場合,何回かにわたってオブジェクトを削除すると,最終的にリスト内のオブジェクト参照は空になります。

(オブジェクト参照ではなく)添字を使ってオブジェクトの削除を指定するには,Delete メソッドを呼び出します。
オブジェクトを解放せずにリストから削除するには,Extract メソッドを呼び出します。

533 :デフォルトの名無しさん:04/05/03 12:25
マウスカーソルの下にあるウィンドウのHWNDの取得をする方法を教えてください

534 :デフォルトの名無しさん:04/05/03 12:27
>>531
おおFormCountはしらんかった。これは使えそう。
画面に表示されてるってのは、Visible := Trueの場合だけなんですかね。
実験してみます。

RemoveでFreeしてくれるのはわかるのですが、安全に破棄するなら
Releaseのほうがいいんじゃないかと思って、ReleaseではなくFreeして
しまうTObjectListではFormは扱うべきじゃないのでは?と思ったんです。

535 :デフォルトの名無しさん:04/05/03 12:55
>>533
WindowFromPoint

536 :デフォルトの名無しさん:04/05/03 15:09
ボタンを押すと、新しいウィンドウが出てきて
そこで色々な設定出来るようにしたいのですが。

Formを新しく一つ作って、ユニットの参照をして・・・と
こんなんで方向性はあってるのでしょうか(´Д`;)

537 :デフォルトの名無しさん:04/05/03 15:18
>>536
間違いない!

538 :デフォルトの名無しさん:04/05/03 15:45
ありがとう

procedure TMainForm.Button2Click(Sender: TObject);
begin
  TSetupForm.Create(Self);
end;

ですが、これでウントモスントモ言いません_| ̄\○_

539 :デフォルトの名無しさん:04/05/03 16:04
show しないとね。
デフォルトの例では、プロジェクトオプションで Form2 を自動生成からはずしておいて

uses
Unit2;

procedure TForm1.Button1Click(Sender: TObject);
begin
with TForm2.Create(Application) do
show;
end;

な感じね

540 :デフォルトの名無しさん:04/05/03 16:05
>>535
出来ましたサンクス

541 :デフォルトの名無しさん:04/05/03 16:12
>>539
出来ますた!dクス
感謝です!

542 :デフォルトの名無しさん:04/05/03 18:05
超初心者スレでそれをやるのは・・・

543 :デフォルトの名無しさん:04/05/03 18:36
そもそも何処までが『超初心者』なのか…
コンポーネント自作の話まで出たことあるし


544 :デフォルトの名無しさん:04/05/03 22:05
ふと気になったんですが、適当に宣言している変数は
その処理内でFreeしてやらなくていいのですか?
Char : Array[0..10000] of Char;
という宣言をしたのですが、ちゃんと開放されるのか心配になりました。
色々なWebサイト見てもされてないので必要なさげに思えるのですが、
どうも気になってしょうがありません。

545 :デフォルトの名無しさん:04/05/03 22:34
>>544 ただの変数は解放の必要ない。クラス型だけ気にすれば(・∀・)イイ!!

Createした時は最後にFree と思っていればいい。

546 :544:04/05/03 22:40
>>545
ありがとうございます。
喉の小骨取れました。

547 :デフォルトの名無しさん:04/05/03 22:56
>>543
いや、質問じゃなくて解答のほう


548 :デフォルトの名無しさん:04/05/03 23:15
まぁ補足すると
クラス型変数も 変数は解放してないしね。 オブジェクトを解放してるだけだし。
var list:Tstringlist;
begin
list:= TStringList.create(self);←listは今作ったTstringlistを指しているだけ
list.free;←なんとな変数を解放しているかのような印象を受けちゃうね
end;

549 :デフォルトの名無しさん:04/05/04 05:24
> list:= TStringList.create(self);

TStringList のコンストラクタでオーナを設定できるとは知らなかったなぁ

550 :デフォルトの名無しさん:04/05/04 16:30
Delphi でMS Agent をいじっているのですが・・・。
LanguageID プロパティの設定がうまくできません。

procedure TForm1.FormCreate(Sender: TObject);
begin
Agent1.Characters.Load('MyAgent','C:\WINDOWS\msagent\chars\merlin.acs');
AgentChar:=Agent1.Characters.Character('MyAgent') as IAgentCtlCharacterEx;
AgentChar.LanguageID:=$409;// ここでAccessViolationエラーが出ます
AgentChar.Show(0);
AgentChar.Speak('apple', '');
end;

LanguageID プロパティを設定しないと日本語の音声になってしまいます。
英語の音声に切り替えたいのですが、
どなたか、MS Agent に詳しい方はおられませんか?


551 :550:04/05/04 16:31
(追記)

VBでは、こんな感じで正常に動作しました。

Private Sub Form_Load()
Dim marlin As IAgentCtlCharacterEx
Agent1.Characters.Load "marlin", "C:\WINDOWS\msagent\chars\merlin.acs"
Set marlin = Agent1.Characters("marlin")
marlin.LanguageID = &H409' American English
marlin.Show
marlin.Speak "apple"
End Sub


552 :デフォルトの名無しさん:04/05/04 19:01
>>550
うちの環境だとAccessViolationエラー出ないぞ
AgentChar の宣言、間違たりしてないか?

553 :550:04/05/04 19:30
え、そうなんですか・・。
私の宣言部はこんな感じなんですけど、552さんとは違いますか?

type
TForm1 = class(TForm)
Agent1: TAgent;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
AgentChar: IAgentCtlCharacterEx;
end;




554 :550:04/05/04 19:39
uses 節はこんな感じになっています。

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


555 :552:04/05/04 20:28
>>553

んーむ…全く同じだが正常に動作するな
環境依存…?

556 :550:04/05/04 22:39
そうですか・・。
どうも、ありがとうございました。
現在はWinXP&Delphi7の環境なので、Win98とかDelphi6でも試してみようと思います。


557 :550:04/05/05 11:38
>>552
さっそくDelphi6で試してみたら、動きました!
AgentObjects_TLBのコードがDelphi7に対応していないのでしょうか・・・。
少しDelphiの将来が不安になってしまいました。(関係ない?)

558 :デフォルトの名無しさん:04/05/05 13:08
delphiでmp3を再生する方法を教えてください。
関連サイトを探しのですが見つかりませんでした。
御願いします。

559 :デフォルトの名無しさん:04/05/05 13:45
MediaPlayerかShellExecute使っとけ

560 :デフォルトの名無しさん:04/05/05 13:55
MCIもお忘れなく。

BCBだったらDirectShowでFAなんだが‥‥


561 :デフォルトの名無しさん:04/05/05 23:59
ケン 2004/05/03(月) 20:07:55
550 :デフォルトの名無しさん :04/05/04 16:30

一日たったから、こっちへマルチポストですか。

562 :デフォルトの名無しさん:04/05/06 00:09
いいんじゃないでしょうか。レスつかなかったし。

563 :デフォルトの名無しさん:04/05/06 00:13
>>562
レス付かなきゃいいってセンスが分からん。
削除するんならまだしも。
マルチポストするヤツは人間として失格。

564 :デフォルトの名無しさん:04/05/06 00:44
>>563
>削除するんならまだしも。

どうやって削除するの?

>マルチポストするヤツは人間として失格。

適切なレスがなければいいんじゃないでしょうか。削除する手段がないし。

>レス付かなきゃいいってセンスが分からん。

わからんヤツは人間としてどうなの? たんに頭わるいだけじゃないの?

565 :デフォルトの名無しさん:04/05/06 00:52
>マルチポストするヤツは人間として失格。

これを呪文みたいにとなえるヤツがいるよね。
なぜ、マルチポストが嫌われるか、その理由を一度考えてみたらいい。

566 :デフォルトの名無しさん:04/05/06 01:01
>どうやって削除するの?
2ちゃんは無理だけど、他は削除出来るところあるだろ。

>適切なレスがなければいいんじゃないでしょうか。削除する手段がないし。
↑上と同じ。

>レス付かなきゃいいってセンスが分からん。
>わからんヤツは人間としてどうなの? たんに頭わるいだけじゃないの?
失礼なことをするヤツにマトモな脳味噌はありません。
それくらいも分からんの?

567 :デフォルトの名無しさん:04/05/06 01:05
まぁ「マルチポストがなぜ悪いのかが分からない」ってヤツは
返答する側になったことが無いんだろうな。

568 :デフォルトの名無しさん:04/05/06 01:06
> 2ちゃんは無理だけど、他は削除出来るところあるだろ。

マルチポストはいけないことである、これは同意。
今回の件は、どうやって削除するか訊いている。答えろよ。

569 :デフォルトの名無しさん:04/05/06 01:09
>>568
はぁ?あっちは消せるだろ。
もちろん消した後に謝罪でも書かなきゃダメだが。
つーか、噛みつく所が違うぞ、お前(w

570 :デフォルトの名無しさん:04/05/06 01:09
> 返答する側になったことが無いんだろうな。

勝手な推測は迷惑。どんな根拠あるの?

571 :デフォルトの名無しさん:04/05/06 01:09
まぁまぁ。
ケン=550が、マナー知らずのクズだったってことで。

572 :デフォルトの名無しさん:04/05/06 01:12
> はぁ?あっちは消せるだろ。

そなの? 書き込んだことは何回もあるけど、消し方知らないんだけど。

573 :デフォルトの名無しさん:04/05/06 01:15
>>572
管理者に頼めば消せるのでは?
2ちゃんじゃ、そう簡単には行かないが。

574 :デフォルトの名無しさん:04/05/06 01:15
> ケン=550が、マナー知らずのクズだったってことで。

そんなことはない。ちゃんと結果だけは報告してるし。
ほめられたことではないが、最低限のことはしてるようだよ。

全部同時ポストで、すべて放置、というのがもっとも悪質。

575 :デフォルトの名無しさん:04/05/06 01:18
返答する側で「マルチポストされて、自分のレスの方は無視されて
知らん所で解決してた」
なーんてことになっても平気な人は人間が出来てて素晴らしい。

576 :デフォルトの名無しさん:04/05/06 01:18
> 管理者に頼めば消せるのでは?

いちいち管理人を引っ張り出す方が迷惑なんじゃないの?
消してくれる保証もないし。2ちゃんじゃ簡単じゃなくて、ほかは簡単だから消せ、
ってどういうこと?

577 :デフォルトの名無しさん:04/05/06 01:21
>>575
あのね、マルチポストはいけないことである、と、これは同意。
一般論ではなく、今回の件を議論してる。 OK?

今回は解決するようなレスはついていない。OK?
ついたレスにはちゃんと応答している。OK?

578 :デフォルトの名無しさん:04/05/06 01:21
>>576
今回は2chと「簡単には消せない掲示板」だったけど、
大抵は投稿者が削除(パスワード設定)出来るのが普通では?

579 :デフォルトの名無しさん:04/05/06 01:23
>>577
今回の件限定なんて、誰が決めた?
勝手なルール出すなよ。

580 :デフォルトの名無しさん:04/05/06 01:25
やはり頭のわるいのと議論するんじゃなかった。アホらし。

581 :デフォルトの名無しさん:04/05/06 01:26
580が逃げましたw

582 :デフォルトの名無しさん:04/05/06 01:41
役に立たない話はフサギコのほうでやってくんない?

583 :デフォルトの名無しさん:04/05/06 01:45
必死に言い返しましたw

584 :デフォルトの名無しさん:04/05/06 03:11
マルチポストしても
両方の板にちゃんと結果報告して
レスも返したらOKですか?

585 :デフォルトの名無しさん:04/05/06 03:14
http://pc5.2ch.net/test/read.cgi/tech/1076095856/
続きしたいんなら、ここの方が良いかと。

586 :デフォルトの名無しさん:04/05/06 08:13
「返答する側の気持ちも考えろ」っていうが
レスつかなかったんだろ?
質問する側の気持ちも考えろよ。

まぁマナーとして、最初に質問したほうに
「レスがつかなかったので他所で聞いてみます」ぐらい書いておくべきとも思うがな

587 :550:04/05/06 10:04
みなさん、すみませんでした。
もうひとつのサイトではMSAgentに詳しい方がおられないようだったのと、
早く問題を解決したいという身勝手な気持ちで、こちらにもお願いしてしまいました。
私は、返答してくれる皆さんのおかげで助けられているのに、配慮が欠けていました。
かばってくれかた方、すみませんでした。


588 :Delフサギコ ◆A6VzDeLphI :04/05/06 14:42
          
   ∧,,∧   マターリいこうよ
  ミ*゚Д゚彡
   ミつ旦(ミ~~
 @ミ   ミ  マルチポストの1コや2コや
   ∪''∪  3コや4コや…ひゃくコくらい
        大目に....

100個所もマルチできるとこないか。

589 :デフォルトの名無しさん:04/05/06 15:00
マルチ野郎はゴミクズ

590 :デフォルトの名無しさん:04/05/06 15:18
フォーム内に複数のフレーム(大きさや位置はバラバラ)が
重なって表示されるような画面を作っているのですが、
フレームの重なる順序(表示順序?)を変える方法を教えてください。
Delphiのバージョンは6です。

関連するメソッド、またはプロパティ名などを教えていただければ、
具体的な使い方は自分で調べるようにしますので、
よろしくお願いいたします。

591 :デフォルトの名無しさん:04/05/06 15:29
test

592 :デフォルトの名無しさん:04/05/06 16:24
フレームの表示順序を変えればいいんだよ

593 :デフォルトの名無しさん:04/05/06 17:03
フレーム
画面

Delphiユーザ5年。知らないことばかり。

594 :デフォルトの名無しさん:04/05/06 17:25
フレームって、TFrame のこと? BringToFront メソッドだろうか。

595 :デフォルトの名無しさん:04/05/06 17:58
procedure foobar(var hoge, fuga: string);
みたいな手続きがあって、fugaの値はいらない場合、
fugaには何を渡せばいいでしょうか。
捨て変数渡してるのですが、どうも無駄な気がして・・・

596 :デフォルトの名無しさん:04/05/06 18:04
>>595
デフォルトパラメータ

597 :デフォルトの名無しさん:04/05/06 18:10
>>592-593
質問の仕方が悪かったようです。すみません。
>>594
そうです。TFormの上に並べたTFrame(から派生したクラス)の
順序を変えたいのです。
BringToFrontメソッドで目的が達成できました。
どうもありがとうございました。

598 :デフォルトの名無しさん:04/05/06 18:28
なんだか最近、とあるプロジェクトが
IDEからコンパイル&実行して、終了すると
オブジェクトインスペクタやエディタなどが再表示されるのに
時間がかかるようになってしまいました。
こういう症状ってなにが原因なんでしょうか?

599 :デフォルトの名無しさん:04/05/06 19:06
プログラミング用のテキストエディターを書いていて
C/C++のソースファイルを解析して関数や変数名をファイルに出力したいんですけど
どうすればいいのでしょうか・・・・

600 :デフォルトの名無しさん:04/05/06 19:14
>>599
ソースファイルをTStringListあたりに読み込んで1行ずつループまわして解析して
関数や変数名を抜き出して別のTStringListに蓄えていってSaveToFileすればよいのでは?

601 :デフォルトの名無しさん:04/05/06 23:40
パーサ書け。

602 :デフォルトの名無しさん:04/05/06 23:44
>>595
PString(nil)^

>>598
とあるプロジェクトが原因。

603 :598:04/05/07 07:05
>>602
いやぁ、それはわかってます。
例えば「未解放のクラスがあるんじゃないか?」とかそういうのを聞きたかった。
ちなみに自分でCreateしたクラスは全部Freeしてあります。

一度コンパイルすると症状は出ないんですけど
現在進行形のプロジェクトなのでコンパイルの機会が頻繁なのです。
「リソースの読み込みに時間がかかる」とかならまだわかるんだけど
プログラム終了→IDE復帰が遅いんだよなぁ

604 :デフォルトの名無しさん:04/05/07 08:39
・とあるプロジェクトだけでおきるのか?たのプロジェクトでは?
・せめて OS と Delphi のバージョンだけでも書いとくれ。
・遅い、って何秒くらい?

デバッグ対象アプリのプロセス終了時に時間がかかるのだとすると..

・ウィルスチェッカーを常駐させていませんか?
・ネットワークやデータベース接続を行っていませんか?それらがタイムアウトを待っているとか..
・環境設定ファイル等に存在しないネットワークパスを示すものが混ざっていませんか?


605 :デフォルトの名無しさん:04/05/07 13:05
怪しそうなのどんどん削除していけばいい、いつか見つかる。
ソース晒すんならまだしも(誰も見たがらないと思うけど)
とあるプログラムと言われても発生しうること予想しろなんてそりゃないぜ。
原因特定後に解からないならソースの一部晒すなりしたほうがいい。

606 :デフォルトの名無しさん:04/05/07 13:11
まぁまぁ。
複雑なときのみ出るバグだってあるんだし。
人生相談だと思って回答するくらいの余裕をもとうや。

607 :デフォルトの名無しさん:04/05/07 13:43
DelでDefaultGateを取得する方法を教えてください

608 :デフォルトの名無しさん:04/05/07 13:52
DefaultGate ってなんだろう..
TCPIP の Default Gateway のことかなぁ?


609 :デフォルトの名無しさん:04/05/07 13:54
>>608
そうです。そうです。
DefaultGateWayです。コマンドプロンプトでipconfigを実行したときの、
同等の表示をさせたいのですが、SubnetMaskとDefaultGatewayが
わからなくて・・・

610 :デフォルトの名無しさん:04/05/07 14:09
過去ログ嫁。
で終わっちゃいそうだ..


611 :デフォルトの名無しさん:04/05/07 14:13
最近の OS (NT4 SP4 以降)なら IpHlpapi.dll が提供している GetAdaptersInfo を。
Win98 とかになると、レジストリをつつくしかない。

GetAdaptersInfo Delphi
でググりなさい

612 :デフォルトの名無しさん:04/05/07 18:25
>>611
ありがとうございます。
いちおうなんとかできますた!!

ところがAdapterNameを取得しても、名前じゃなくクラスIDを
取得しちゃうんですが、これは自分でレジストリいじって探せって
ことですか?

613 :デフォルトの名無しさん:04/05/07 20:12
delphiをはじめようと思うんですが
プログラミング自体が初めてなので
初心者でも分かるようなサイトってありませんか?

614 :デフォルトの名無しさん:04/05/07 20:24
>>613
>>1

615 :デフォルトの名無しさん:04/05/07 20:59
指定したURLのファイルをダウンロードするツールは沢山ありますが、
Delphiでそれをするにはどうすればよいでしょうか。

具体的には、
ttp://www.url.jpg
ttp://www.url2.jpg
ttp://www.url3.ljp
みたいな文字列を受け取り、そのファイルのダウンロードをするソフトを作って見たいのです。


616 :デフォルトの名無しさん:04/05/07 21:06
>>615
TIdHTTP.Get

617 :デフォルトの名無しさん:04/05/07 21:49
>>616
すばやい返答ありがとうございました。
頂いたキーワードで調べてみます。

618 :デフォルトの名無しさん:04/05/08 02:07
ソレなんだっけかなー?と思って、日本語でググルと1件だけだね…。
>>617
余計なお世話かもしれんが、「urlmon」か「Wininet」ではどーだろう。

619 :デフォルトの名無しさん:04/05/08 10:02
>>618
実は616さんから頂いたキーワードは自分では処理しきれず、
まだファイルダウンロードは早いのかとあきらめていたところでした。
ところがwininetでググったら、素人の自分でも一発で実現できました。
本当にありがとうございました。

620 :デフォルトの名無しさん:04/05/08 10:26
なんか微妙に腹たつな〜

621 :デフォルトの名無しさん:04/05/08 12:20
そうだね。Indy の方が簡単だよね。

622 :デフォルトの名無しさん:04/05/08 12:23
簡単だからわざわざWEBで書くこともないので情報が少ない、ということ。皮肉だね。
619はずっとWininetやってればいいんじゃないの。

623 :619:04/05/08 13:03
本当にすみません。自分があまりにも無能である上、書き方も変であったと思われる為、
このスレ全体の方へ不愉快な思いをさせてしまったことをお詫びします。


624 :デフォルトの名無しさん:04/05/08 13:06
気にすんなハゲ

625 :デフォルトの名無しさん:04/05/08 15:26
へりくだり杉。ヒクツになるなや。


626 :デフォルトの名無しさん:04/05/08 15:59
        Λ_Λ . . . .: : : ::: : :: ::::::::: :::::::::::::::::::::::::::::
       /:彡ミ゛ヽ;)ー、 . . .: : : :::::: :::::::::::::::::::::::::::::::::
      / :::/:: ヽ、ヽ、 ::i . .:: :.: ::: . :::::::::::::::::::::::::::::::::::::::
      / :::/;;:   ヽ ヽ ::l . :. :. .:: : :: :: :::::::: : ::::::::::::::::::
 ̄ ̄ ̄(_,ノ  ̄ ̄ ̄ヽ、_ノ ̄ ̄ ̄ ̄ 
大ちゃん、公然猥褻で捕まっちゃうよ・・・

627 :デフォルトの名無しさん:04/05/08 16:03
ごめん、誤爆った…

628 :デフォルトの名無しさん:04/05/08 17:32
大ちゃんて、大ちゃん☆タフィの大ちゃん?

629 :デフォルトの名無しさん:04/05/08 18:43
想像上の生物だろ

630 :デフォルトの名無しさん:04/05/08 19:07
え?ナマハゲ?

631 :デフォルトの名無しさん:04/05/08 19:23
>>602
nil逆参照すると、EAccessViolation出ね?

632 :デフォルトの名無しさん:04/05/08 20:30
>>602
別に '' でよくね?

633 :デフォルトの名無しさん:04/05/08 20:31
あぁ、varなのか…

634 :デフォルトの名無しさん:04/05/08 23:30
>>631
知らない。


635 :Delフサギコ ◆A6VzDeLphI :04/05/09 01:24
     ∧,,∧,,,,,, )      (´⌒(´
  ⊂ミ゚Д゚⊂,,,,,,,`つ≡≡(´⌒;;;≡≡≡
ズザーーーーーッ    (´⌒(´⌒;;

IPアドレス入力用コントロールって
どこにあるでしょうか?

636 :デフォルトの名無しさん:04/05/09 01:43
TMaskEdit ではいかんの?

637 :デフォルトの名無しさん:04/05/09 03:46
>>635
私が最近練習用に作ったのでよければ、TIPAddress というのを↓に置いてます。
Delphi6 用ですので、古いバージョンで使うにはソースを修正する必要があります。
ttp://xd3e8d081.at.infoseek.co.jp/cgi-bin/default.cgi

638 :デフォルトの名無しさん:04/05/09 17:25
Del6Personal入れたら、
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AEDebug

C:\Program Files\Borland\Delphi6\Bin\bordbg60.exe -aeargs %ld %ld
になってるんだけど、略\Common Files\Borland Shared\Debugger
\BORdbk61.dll -aeargs %ld %ldかBORdbg61.exeに書き換えれば良いの?
regsvr32 /u してregsvr32しなきゃダメ?

639 :Delフサギコ ◆A6VzDeLphI :04/05/09 18:45
   ∧,,∧   ふつうMaskEdit使うのかしら...
  ミ,,゚Д゚彡
   ミつ旦(ミ~~
 @ミ   ミ  >>637さん
   ∪''∪ まあ!素敵!
     ありがとう。勉強&使用してみるです。

640 :デフォルトの名無しさん:04/05/09 19:11
Delphiとは直接関係ない質問かもしれないんですけど、
LabelのフォントとかってWindows上では変えることはできなくて、
常にMS UI Gothicでサイズも9ですよね?

変える事ができるのはそのプログラム上からしか
変えることはできないんですよね?(;´Д`)

641 :デフォルトの名無しさん:04/05/09 19:36
わけわからん。

> Windows上では変えることはできなくて

これの意味は? デフォルトフォントのことを言ってるの?
TLabel は Delphi 独自の実装だから、直接 Windows とは関係ないよ

642 :デフォルトの名無しさん:04/05/09 19:40
Windowsの設定でLabelのフォントを変えてしまう事ができるのかどうかということです。。
説明不足ですみません。。。

643 :デフォルトの名無しさん:04/05/09 19:42
>>639
> ふつうMaskEdit使うのかしら...

ふつうは、コモンコントロールの IP Address Control を使うんだけど、Delphi
にはラッパーがないよね。いつか ML でも話題になったので過去ログ見てみたら。

644 :デフォルトの名無しさん:04/05/09 19:42
CaptionとかTipヘルプとかのフォント設定を取得してTLabelとかにセットするとか。
どう取得するのか知らんけど

645 :デフォルトの名無しさん:04/05/09 19:44
TLabel に限らず、Delphi のコントロールのデフォルトフォントは、Windows の
システムフォントと無関係に設定されているので、できません。

646 :デフォルトの名無しさん:04/05/09 19:45
>>645
あぁ、やっぱりそうですか。ありがとうございます。

647 :デフォルトの名無しさん:04/05/09 19:55
> ふつうは、コモンコントロールの IP Address Control を使うんだけど

数字しかいれられないんで、あまり便利じゃないね。MaskEdit の方がいいかも。

648 :デフォルトの名無しさん:04/05/09 20:11
簡単なプレイヤーを作っています。
プレイヤーと拡張子を関連付けてファイルをクリックするだけで
起動してファイルを開けるようにしました。

さて、アプリ起動中に別のファイルを開いた場合、
二重起動を防止して、起動中のアプリでそのファイルを開きたいのです

現在、二重起動を防止するところまではできたのですが
起動中のアプリに新しいファイル名を渡すにはどうしたらよいのでしょうか?

649 :デフォルトの名無しさん:04/05/09 20:52
ファイル名を受け取るインターフェースを実装してそのインターフェースを使って渡せばいいだけ。
DDE とかでやればいいと思うが。

650 :デフォルトの名無しさん:04/05/09 21:14
>>647
IPアドレスに数値以外の文字がありえるのか?

651 :デフォルトの名無しさん:04/05/09 21:36
IPv6アドレスはA〜Fもあるな

652 :デフォルトの名無しさん:04/05/09 21:51
16進は数値ではないと

653 :デフォルトの名無しさん:04/05/09 22:02
数字の話を数値の話にねじまげられても。

654 :デフォルトの名無しさん:04/05/09 23:02
IPv4/6の話を数字の話にねじまげられても。

655 :デフォルトの名無しさん:04/05/09 23:20
>>654
流れが読めてない人は吊って来てね

656 :デフォルトの名無しさん:04/05/09 23:47
>648 http://www2.big.or.jp/~osamu/Delphi/tips.cgi?index=267

657 :648:04/05/10 00:32
>>649&>>656
ベリーサンクスv

658 :デフォルトの名無しさん:04/05/10 17:54
OpenDialogを使用してファイル選択ダイアログ
を出したのはいいのですけど、キャンセル処理って
どうやるのでしょうか(;´Д`)
VBだったらCancelErrorがあったから出来たんですが。。。

659 :デフォルトの名無しさん:04/05/10 18:11
ヘルプより

Execute メソッドはファイル選択用のダイアログボックスを開き,ユーザーが
ファイルを選択して[開く]をクリックしたときに True を返します。ユーザー
が[キャンセル]をクリックした場合,Execute メソッドは False を返します。

660 :658:04/05/10 18:15
659タソアリガトン
こんなに簡単だったとはorz

661 :デフォルトの名無しさん:04/05/10 19:23
>>660
まぁ、ヘルプぐらい読めってこったな

662 :デフォルトの名無しさん:04/05/10 21:00
☆★☆★ 日本語プログラミング言語『ひまわり』 ☆★☆★

日本語で『こんにちはと、言う。』と入力すれば
ダイアログに『こんにちは』と出るプログラミング言語登場!!
PNGもサポートしてるので、かなりおすすめです!!
また、【『http://www.xxxx.xx/』を、『index.htm』へ、HTTPダウンロード。】
とすれば自動的にダウンロードできる優れ物です!!

↓日本語プログラミング言語『ひまわり』
http://hima.chu.jp/index.htm
↓日本語プログラミング言語『ひまわり』スレッド
http://pc5.2ch.net/test/read.cgi/tech/1083053283/l50

663 :デフォルトの名無しさん:04/05/10 22:15
>>662
IdHTTP1.Get("http://www.xxxx.xx/index", stream);と比べてどう優れていますか?

664 :デフォルトの名無しさん:04/05/11 00:46
>>663
メソッドの構文を知らなくてもソースが読める

665 :デフォルトの名無しさん:04/05/11 00:49
>>662
英語じゃないとかっこよくないじゃないか!

666 :デフォルトの名無しさん:04/05/11 03:30
indyを入れたら恐ろしい量のコンポーネントが追加されたのですが
ネット上にあるjpgファイルやgifファイルをダウンロードするには
どのコンポーネントを使えばいいのでしょうか?

667 :デフォルトの名無しさん:04/05/11 05:07
0〜9の異なる数字を導く方法がわからないので、教えていただきたいのですが。
4桁なら、↓の方法でできました。

a := random(10);
b := random(10);
while b = a do
b := random(10);
c := random(10);
while (c = a) or (c = b) do
c := random(10);
d := random(10);
while (d = a) or (d = b) or (d = c) do
d := random(10);

しかしながら、10桁ともなると、大変なことになってしまいます。
もっと効率のいい方法を教えていただけますでしょうか。
よろしくお願いします。

668 :デフォルトの名無しさん:04/05/11 05:22
Google 検索: 配列 シャッフル
http://www.google.com/search?hl=ja&lr=lang_ja&ie=sjis&q=%94z%97%f1%81@%83V%83%83%83b%83t%83%8b

669 :デフォルトの名無しさん:04/05/11 05:48
>>667 効率はまったく変わらないけど、こんなんでどうよ。
procedure TForm1.Button1Click(Sender: TObject);
var
  A: array [0..9] of Integer;
  I, J: Integer;
  Retry: Boolean;
begin
  Edit1.Clear;
  for I := 0 to 9 do
  begin
    Retry := True;
    while Retry do
    begin
      A[I] := Random(10);
      Retry := False;
      for J := 0 to I - 1 do
        if A[I] = A[J] then
        begin
          Retry := True;
          Break;
        end;
    end;
    Edit1.Text := Edit1.Text + IntToStr(A[I]);
  end;
end;

670 :デフォルトの名無しさん:04/05/11 05:59
>>668-669
なるほど、配列を使うんですね。
勉強になりました。
ありがとうございました。

671 :デフォルトの名無しさん:04/05/11 06:01
while じゃなくて repeat〜until の方がスマートだわ。
普段使わないから存在を忘れてた。

672 :デフォルトの名無しさん:04/05/11 08:27
>>666
そのファイルをダウンロードするのに適切なプロトコルに合わせて選ぶ。

673 :デフォルトの名無しさん:04/05/11 08:52
ひまわりか。懐かしいな。
かなり昔に興味本位で落としてみて、10分でアンインスコしたな。

674 :デフォルトの名無しさん:04/05/11 09:55
>>666
>>663

675 :デフォルトの名無しさん:04/05/11 10:30
キャレットを指定した行、列に移動させる方法を教えてください
SelStartだと文頭からの文字数でしか指定できません
位置を取得する方法はたくさん出てくるのですが・・・

TRichedit、Delphi6です

676 :デフォルトの名無しさん:04/05/11 11:01
> 位置を取得する方法はたくさん出てくるのですが・・・

逆に、指定した行、列をSelStartに換算するといいのでは。

677 :デフォルトの名無しさん:04/05/11 11:13
> 指定した行、列をSelStartに換算する

RichEdit1.Perform(EM_LINEINDEX,行,0) + 列

678 :デフォルトの名無しさん:04/05/11 12:58
IdHTTP1.Get("http://www.xxxx.xx/index", stream);を
ひまわり風に書くとどうなるんだろ・・


679 :デフォルトの名無しさん:04/05/11 16:28
Delphi6パーソナルで、
AND DWORD[EAX],0
が6Byteにアセンブルされてしまうんです。
本来は3Byteで済むはずなのに。
アップデートを適用したらしたら直りますか?
ダイヤルアップで数十MB DLはきついので、教えてほしいんです。

680 :デフォルトの名無しさん:04/05/11 17:04
直ってる

681 :679:04/05/11 17:51
うぉ、直ってるんですか。うれしいけど...がんばってDLしよう。
60MBを5時間かけてDLしたんだから...


682 :デフォルトの名無しさん:04/05/11 20:25
うふ、3byte 削るための努力としては見合っていますか?

683 :デフォルトの名無しさん:04/05/12 00:09
奇数は遅くなるのでは?

684 :デフォルトの名無しさん:04/05/12 00:51
ちょっと聞きたいんですが、あるクラス内での処理結果を
呼び出し側(Form1とか)に必要に応じて返したい場合
普通はどんな手段が一般的なんでしょうか?


685 :デフォルトの名無しさん:04/05/12 00:57
メソッドの戻り値にする

686 :デフォルトの名無しさん:04/05/12 01:03
あと、引数を参照渡し var にするとか。インスタンスをつくることと、可視性を
除くと、メソッドの呼び出しは普通の関数の呼び出しと形式的には同じだよ。
なぜ特別視して質問するのかな?

687 :デフォルトの名無しさん:04/05/12 01:13
>>685
早速の回答、ありがとうございます。。。そうですか。

たとえば、クラスには、作成時に、作成したフォームに含まれる
コントロールを渡すようになっていて、そのコントロールの
イベントをクラス内で処理するような場合です。

で、そのイベント処理後、フォーム側の変数の一部を
変更したりするケースです。

まあ、クラス側からフォームの変数や手続きにアクセス
するっていう反則技も考えたんですが、やっぱ。。。

688 :デフォルトの名無しさん:04/05/12 01:14
>>684
1.グローバル変数を使う。
2.処理をメソッドとして実装、Form1から呼び出して戻り値やVar引数で取得
3.処理結果はそのクラスの別のPublicメンバにセットしておき、必要に応じてそこから取得する。
4.クラスにユーザー定義イベントプロパティを作成し、Form1に作成した関数を割り当てる。
 処理が終了した時点で、そのイベントを呼び出す。


689 :デフォルトの名無しさん:04/05/12 01:47
>>688
ありがとうございます。

何か4のユーザー定義イベントプロパティってのが
一番すっきりするみたいです。どうもです。

690 :デフォルトの名無しさん:04/05/12 01:50
('A`)ノWebBrowserで開いたリンク先が画像かHTMLか見分けるには
どうすればいいんですか?


691 :デフォルトの名無しさん:04/05/12 03:00
>>690
ソレだけじゃ、状況がよく分からないから答えようがない。

とりあえず、イベントでリンク先に飛ばないようにして
リンク先を裏でDLするなり拡張子チェックするなりするとか。

拡張子偽装がイヤだとか?

692 :デフォルトの名無しさん:04/05/12 03:03
書き忘れた。
照れ隠しからなのか知らんが、質問にAA付けるのは
回答者のやる気を削ぐだけと思われ。

693 :デフォルトの名無しさん:04/05/12 09:49
┌─┬────┬────┐
│aa│bbb .    │ccc   .  │
├─┼────┼────┤
│01│dog   . │A      │
├─┼────┼────┤
│02│cat..  . │B      │
├─┼────┼────┤
│03│mouse   │A      │
└─┴────┴────┘
のようにListViewでreport表示したデータを
01,dog,A
02,cat,B
03,mouse,A
と言う感じでcsvファイルに出力するにはどうしたらいいんですか?



694 :デフォルトの名無しさん:04/05/12 10:30
行ごとに Caption とSubItems を読み出してコンマを挟んで連結する。
それを TStringList にadd、SaveToFile() でセーブ。以上。

695 :693:04/05/12 11:54
>>694
できたー!ありがとー

696 :デフォルトの名無しさん:04/05/12 11:58
”で誤動作する悪寒

697 :デフォルトの名無しさん:04/05/12 12:18
SubItemsはTStringsだからCommaTextを使うと楽かも。

698 :教えて君:04/05/12 14:45
Project読込時に下記メッセージが出るのですが

フォーム読込中のエラー
クラス***が見つかりません、エラーを無視して
続けますか? 注意:エラーを無視すると、コンポーネント
またはプロパティを失う場合があります。

***を何処で追加すれば良いのでしょうか?


699 :デフォルトの名無しさん:04/05/12 15:35
>>691
開いた先のページのURLを
WebBrowser1(表示用、align=alClient)
WebBrowser2(ページの大きさの取得用、aligin=alCustom)
の両方に読み込んで、onDocumentComplete2で
var
body: OleVariant;
WebBW: Integer;
WebBH: Integer;
begin
body := (WebBrowser2.Document as IHTMLDocument2).Body;
try
WebBW := body.scrollWidth + (Width - WebBrowser1.Width) + 24;
if WebBW < Screen.Width then
Width := WebBW;
except
end;
try
WebBH := body.scrollHeight + (Height - WebBrowser1.Height) + 16;
if WebBH < Screen.Height then
Height := WebBH;
except
end;
end;
で読み込んだ先のページの大きさにブラウザの大きさを合わせるようにしてるんですが
PNGファイルを読み込むと正しい大きさで表示してくれないんです。

とりあえず拡張子で判断して、PNGの場合ブラウザの大きさを変えないようにしてみます。

700 :デフォルトの名無しさん:04/05/12 22:00
TStringListのDuplicatesのプロパティを設定しても
重複行が追加されてしまうのですが、どう書けば追加されずにすみますか?

list := TStringList.Create;

list.add('aaa');
list.add('bbb');
list.add('ccc');
list.add('ddd');

list.Sort;
list.Duplicates := dupIgnore;

list.add('ddd');

ListBox1.Items.AddStrings(list);

list.Free;

701 :デフォルトの名無しさん:04/05/12 22:05
Sortedプロパティをtrueにしてる?

702 :デフォルトの名無しさん:04/05/12 22:19
してませんでした

703 :デフォルトの名無しさん:04/05/12 23:19
>>698
おそらく設計時パッケージ。

704 :デフォルトの名無しさん:04/05/12 23:53
>>699
やりたいことは分かった…ような分からないような…。
そのexceptには例外処理が省略してあるんだよね?
ソレは必要なのかな?

pngの「サイズを求める方法」を変えた方が良い…ような気がする。
現時点のはAlign任せってことだよね?

705 :デフォルトの名無しさん:04/05/12 23:59
>701

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


706 :デフォルトの名無しさん:04/05/13 14:17
Delphi初心者なんですが
画像を読み込みをして、ある点(例:20pix,20pix)のRGBの値を
得たいのですが どのようにしたらいいでしょうか?
できましたら教えてください。

707 :デフォルトの名無しさん:04/05/13 14:20
>>706
pixels

708 :デフォルトの名無しさん:04/05/13 14:26
>>707
ありがとうございました

709 :デフォルトの名無しさん:04/05/13 19:42
>>704
>やりたいことは分かった…ような分からないような…。

すみません、説明が足りませんでした。
自分が作ってるのはタブブラウザーではなく、IEもどきのブラウザーを
作ってるんですが、新しくウインドウを開くリンクをクリックたびに
ShellExcuteで自分自身を立ち上げて、最初のナビゲートの時に
699の処理でブラウザの大きさを変更するようにしています。
大きさを変えるのは最初だけで、それ以降のナビゲートでは
ブラウザの大きさは変わりません。

なんでこんな面倒な事をしてるかというと、ポップアップ広告や
固定サイズのポップアップウインドウ(?)をブラウザで表示させた場合、
ブラウザの大きさを変更しないと余白が見苦しいので・・・。

>そのexceptには例外処理が省略してあるんだよね?
>ソレは必要なのかな?
exceptを外すと、特定のページで例外が発生する場合があるので
例外を回避するために付けてます。



ウインドウの大きさを変える方法は、現時点では699の方法が
自分で実装出来る限界なんですが、PNGファイルだけでなく
サイズを変えて欲しくないページまで変更してしまうのが悩みの種です。

やはりPNGファイルの大きさを取得したり、HTMLからページの大きさを
記述してる部分を解析して表示するようにしたほうが良いんでしょうか?

710 :デフォルトの名無しさん:04/05/13 23:51
>>709
オレはpngからサイズ得た方がいいと思う。個人的に。

>記述してる部分を解析して表示するようにしたほうが良いんでしょうか?
記述してないことがあるから、無駄なような…。つーか、記述してない方が
多いかも…。


711 :デフォルトの名無しさん:04/05/13 23:56
あらかじめ指定していた座標にマウスを動かし、
指定していた操作(右や左クリック)を行うプログラムを作るにはどうすればいいでしょうか。
SetCursorPos
で希望の位置へマウスカーソルが動くのですが、そこから先がすすみません。
よろしくお願いいたします。

712 :デフォルトの名無しさん:04/05/14 00:25
>>711
mouse_event

713 :デフォルトの名無しさん:04/05/14 00:26
>>712
ありがとうございました

714 :デフォルトの名無しさん:04/05/14 08:55
初めてカキコさせていただきます、Delphi初心者で、使い始めてから一週間ぐらいです。
プログラムソフトなど使ったこともなく、Delphiがはじめてという、プログラム初心者です。

他のソフト(便宜上Aソフトと呼びます)の補助ツール(Hツール)という形で、ソフトをつくっているのですが
HツールにHotkeyを登録し、Aソフトがアクティブなときに
Hツールに登録したHotkeyを押すと、Hツールのタイマーがスタートするようになっています。
Hookをつかった他の方のコンポを使用し、ここまでは出来たのですが
Hotkeyのキーを、同時にアクティブなAソフトにも送信したいのです。
Dispatch()なるものを使えば、Hookというキーを盗む形ではなく、分けてもらう形で
やりたいことを実行できそうなのですが、googleで検索してもほとんどヒットせず
Hookのコンポを使用しました。

アクティブなウィンドウのハンドルを取得し、それに対してキー送信の命令を送りたいのです。
var
Wnd: HWnd; //アクティブなウィンドウのハンドル//
begin
Wnd:=GetForegroundWindow; //アクティブなウィンドウの取得//

と、すれば、アクティブなウィンドウのハンドルを取得することはわかったのですが、
このあと、Hツールに登録したHotkeyを、アクティブなウィンドウにキー送信する方法が
まったく分かりません。

なにぶん、初心者ですので、的外れなことがあるかもしれませんが
よろしくお願いしますm(_ _)m

715 :デフォルトの名無しさん:04/05/14 11:27
Keybd_event

716 :デフォルトの名無しさん:04/05/14 11:39
>>714 ネットゲーか!

717 :デフォルトの名無しさん:04/05/14 11:49
SetWindowHookExってコールバックできちんとCallNextHookEx呼んでれば普通にフック先にメッセージ行くと思うんだが‥‥

718 :デフォルトの名無しさん:04/05/14 12:29
>>714です、レスありがとうございます

>>715さん
さっそくgoogleで検索してみました。

Keybd_event(Byte('M'), 0, 0, 0);
Keybd_event(Byte('M'), 0, KEYEVENTF_KEYUP, 0);

↑のような記述を見つけ、さっそく714のソースに貼り付けてやってみました
すると、ショートカットに設定したキーを押すと、アクティブなウィンドウにMキーが反映されました!
一歩前進して、嬉しいです。
ただ、この文をいじって(’M’)の部分のMを
hotkey1.hotkey
に置き換えて、ショートカット登録したキーをそのままアクティブなウィンドウに送ろうとしましたが
正しくない型キャスト、というエラーで実行できませんでした。
strtointなどの型変換があるのでしょうか?
APIはほとんど無知たために分かりません・・・

>>716さん
はい、そうです。

>>717さん
すいません、ショートカット登録したキーをHookするフリーの自作コンポを
フォームに貼り付けただけで、717さんの言っていることは全くやっていません・・・
まだまだ勉強不足で、フリーのコンポに走りました・・・

719 :679:04/05/14 14:03
コードサイズの問題は、
and [eax],0 ではなく、and [eax],$FFFFFFFFだった。
$FFFFFFFFでなく-1を使えば大丈夫だった。
アップデートは見送りにしようか。

☆ソース
procedure AsmProcedure;
var i : Cardinal;
const EfuEfu = $FFFFFFFF; Mainasu = -1;
asm
lea eax,i
and [eax],0
and [eax],$00000000
and [eax],-1
and [eax],$FFFFFFFF
and [eax],EfuEfu
and [eax],Mainasu
end;

☆アセンブル結果
00407031 8D45FC lea eax,[ebp-$04]
00407034 832000 and dword ptr [eax],$00
00407037 832000 and dword ptr [eax],$00
0040703A 8320FF and dword ptr [eax],-$01
0040703D 8120FFFFFFFF and dword ptr [eax],$ffffffff
00407043 8320FF and dword ptr [eax],-$01
00407046 8320FF and dword ptr [eax],-$01
or,and,xor,pushでサイズが無駄に大きくなる可能性がある。
小さく速く短く理解しやすいコードは美しい...気がする。

720 :デフォルトの名無しさん:04/05/14 15:18
>>719
まだダウンロード終わらないの!?

721 :デフォルトの名無しさん:04/05/14 20:54
>>718
M でなく 'M' を hotkey〜 に置き換えれ

722 :デフォルトの名無しさん:04/05/14 22:15
相手に、
自分のマシンのファイルを見せる方法として、
ttp://forum.nifty.com/fdelphi/samples/00986.html
という方法があるみたいなのですが、これと同じようなことをindyでするには
どうすればいいでしょうか。
よろしくお願いします。

723 :デフォルトの名無しさん:04/05/14 22:42
>>714です

>>721さん、お返事ありがとうございます

'M'の部分を

hotkey1.hotkey

に置き換えて、実行をしてみました。
すると、プログラムがフリーズしてしまいました

何が悪いのか自分でもほとんど理解していないので、お手数かけます・・・

724 :デフォルトの名無しさん:04/05/14 23:35
4000行ぐらいのCSVのファイルをListViewへ表示させたのですが
その表示している状態をキャッシュみたいなファイルを作って次回から
高速に表示出来るようなコードとかってありますか?
なんかヒントになるようなこと教えてください。

725 :デフォルトの名無しさん:04/05/14 23:49
>723 ShortcutToKey(hotkey,うんこ,ちんこ);とかではダメなのか?

726 :デフォルトの名無しさん:04/05/15 00:13
(´-`)。o ○ (「うんこ、ちんこ」にツッコミ欲しいんやろか…)

727 :デフォルトの名無しさん:04/05/15 01:15
>>714です

>>725さん、お返事ありがとうございます

ShortcutToKeyを使って、

Keybd_event(Byte('M'), 0, 0, 0);
Keybd_event(Byte('M'), 0, KEYEVENTF_KEYUP, 0);

の、Mの代わりに登録したホットキーを反映させるには、どうしたらいいのでしょうか?

いろいろ調べて見たんですが、いまいち使い方が分かりません・・・

Shortcuttokey(hotkey1.hotkey,key,shift)

を Byte('M') のかわりに放り込んでみたんですが、使い方間違ってますよね・・・

728 :デフォルトの名無しさん:04/05/15 01:40
keybd_event(key,0,0,0);
ではダメなの?

729 :デフォルトの名無しさん:04/05/15 03:03
具体的にショートカットキーは何をどう押すの?
Keybd_event() はキーの押し下げ・上げを一組にして、実際のキーのシミュレート
するのに使う。たとえば

Keybd_event(Ord('M'), 0, 0, 0);
Keybd_event(Ord('M'), 0, KEYEVENTF_KEYUP, 0);

を Memo1 にフォーカスがある時に実行すると 'm' が入力される。

Keybd_event(VK_SHIFT, 0, 0, 0);
Keybd_event(Ord('M'), 0, 0, 0);
Keybd_event(Ord('M'), 0, KEYEVENTF_KEYUP, 0);
Keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);

だと、大文字の 'M' が入力される。 SHIFT+M をシミュレートしているから。
参考になりますか?

730 :デフォルトの名無しさん:04/05/15 03:20
>>727
キー操作をトレースしてる側のHツールが
AツールにHotkeyの値を送るのはどんな意味があるの?

731 :714:04/05/15 03:41
>>728さん お返事ありがとうございます
その構文のkeyの定義について、ちょっとまだ理解できていないので
これから勉強して理解していきたいと思います

>>729さん お返事ありがとうございます
ネットゲームの補助ツールということで、魔法を詠唱し、その効果時間をタイマーで
計る、といったことができるツールを作りたいと思っています。

魔法の効果時間を計るために、タイマーを用意しています
そのタイマースイッチを、メインメニューのショートカットを利用して
Hotkeyに設定したキーが押されれば、メインメニューの「タイマーON」を押し
タイマーのスイッチをONという形にしています。

そして、Hookをして、メインメニューの「タイマーON」を押しているので、
魔法キャストのキーを押したはずなのに、タイマーは動いているが
Hookでキーをとられたために、魔法が詠唱されてない、という状態になってます。

そのために、Hotkeyに登録したキーを、そのままアクティブなウィンドウに送信したいのです。

決まったキーであれば、例にあるように、
Keybd_event(Ord('M'), 0, 0, 0);
といった形で対応はできると思うのですが、人によって魔法の詠唱するキーが
違うので、その人に対応するために、ホットキーに登録したキーをそのまま
アクティブなウィンドウに送信したいのです。

まだまだ勉強不足で、いろいろアドバイスをいただいているのですが、
たぶん半分も理解できていません・・・

こんな私ですが、よろしくお願いしますm(_ _)m




732 :デフォルトの名無しさん:04/05/15 04:35
誰か>>714にSetWindowsHookExの使い方レクチャープリーズ
俺あほだから正しい使用法忘れた・゜・(ノД`)・゜・。

733 :デフォルトの名無しさん:04/05/15 04:44
登録してどうこうってのをやめて、Hツールが取得したキーを
そのままAソフトに流してはダメなんだろうか…

いや、むしろ登録してあるキー情報のデータ形式が問題なのかも…?
「hotkey1.hotkey」に、どのように格納されているのか…

734 :デフォルトの名無しさん:04/05/15 08:53
var
 key:word;
 Shift:TShiftState;
begin
 Shortcuttokey(hotkey1.hotkey,key,Shift);


735 :デフォルトの名無しさん:04/05/15 10:37
>>732 >>714
っミ
http://homepage1.nifty.com/MADIA/delphi/tokusen.htm

システム全体に影響を及ぼす強力なフックの方法

dwThreadIdに対象のスレッドID入れればそのスレッドのウィンドウだけに対象を絞れる。

736 :デフォルトの名無しさん:04/05/15 11:41
なんか、マラソンはじめて1ヶ月で、2時間30分を切りたい、と望んでいるような。
ちゃんと地道で基礎的な訓練が必要なんでは?

737 :デフォルトの名無しさん:04/05/15 11:51
>>736
ここはそういうスレじゃないの?
コーチのいない無名の選手がマラソンで成績を残したいという。
もし基礎的な訓練が必要なら、その訓練方法なりを示してあげないと、
路頭に迷うことになっちゃうよん。

参考書読んで勉強しろ、とか講座サイト見て勉強しろ、ということだったり、
過去ログ嫁、というだけだと、「どうすればいいか分かりません」という答えが
返ってくるだけだと思うけどね…


738 :デフォルトの名無しさん:04/05/15 12:48
>>737
> コーチのいない無名の選手がマラソンで成績を残したいという。

そりゃそうだ。でも望んでる成績がトンデモだったりしたら、やはり、それなり
の訓練をしろ、というアドバイスもあり、では。地道に努力しろ、というのは、
掲示板でどうしろ、と簡単に書けない内容なのでは? 簡単に書ける内容だったら
地道な努力は必要ないわけで。

739 :デフォルトの名無しさん:04/05/15 12:53
くだすれの意味は、その比喩でいうと、

3時間30分の記録をあと十分縮めるにはどうしたらよいか、という質問を
しろ、という感じかな?

740 :デフォルトの名無しさん:04/05/15 13:14
Delphi Personal ダウンロードしようと思って、
http://register.borland.co.jp/regist/delphipersonal/delphipersonal.dll/
で登録したんですが、いつまで経ってもメールが送られてきません。


741 :デフォルトの名無しさん:04/05/15 13:18
>>740
土日は休みだから

742 :デフォルトの名無しさん:04/05/15 13:25
>>739
>記録をあと十分縮めるにはどうしたらよいか
!!
そういうことか。納得。
ただ、3時間30分というのがどのくらいか分からないけど、
「走ったことないんですけど、どうしたら完走できますか? 私は完走できそうですか?」
という質問は御法度というわけですね。
あくまでも記録なり足跡なりを残した上で、あと十分縮めるための方法を模索する、というスレ
だという認識で問題ないかな。

>>740
いつ頃登録したのか分からないけど、3日程度は待った記憶がある。

743 :デフォルトの名無しさん:04/05/15 13:25
TEditのOnChangeイベントなんですけど
アプリが内容を変更したときのOnChangeイベントは無効にして
ユーザーが内容を変更したときだけOnChangeイベントを発生させるにはどうしたらよいのでしょうか?

744 :デフォルトの名無しさん:04/05/15 13:30
>>743
イベントの発生を制限するのではなく、イベントが発生しても、それがアプリによるものか、
ユーザによるものかを判断させてみたらどうだろう。


745 :デフォルトの名無しさん:04/05/15 13:33
>>744
それはどうやってやったらいいのでしょうか?
Senderとかで判断できるのでしょうか?

746 :デフォルトの名無しさん:04/05/15 13:34
おっ、すこしは質問の色を変えましたね。

Edit1.OnChange := nil;
ここで内容変更のコード
Edit1.OnChange := Edit1Change;

な感じ。

747 :デフォルトの名無しさん:04/05/15 13:37
>>746
あ!なるほど。
でもTEditって毎回こんなことしないとだめなんですか・・
プログラミングって思ったより手間がかかりそうですね

748 :デフォルトの名無しさん:04/05/15 13:38
> プログラミングって思ったより手間がかかりそうですね

どう思ってたか知らないけど、Delphi より十倍も手間がかかる言語もあるよ。

749 :743=745=747:04/05/15 13:39
ありがとうございました。
おかげさまでうまくいきました

750 :デフォルトの名無しさん:04/05/15 13:46
例えにマジレスするのも何だが
素人にいきなりフルマラソン走らせるなよ

751 :デフォルトの名無しさん:04/05/15 14:05
>でもTEditって毎回こんなことしないとだめなんですか・・
継承しとけ。
ChangeメソッドとTextプロパティをオーバーライドすればいい

752 :デフォルトの名無しさん:04/05/15 14:18
>>724
一番簡単なのは
ListView1.BeginUpdate;
〜追加処理
ListView1.EndUpdate;


あとはMLにある TMandom を使うとか(注意書きをよく読んだほうがいい
OwnerDrawで色々工夫するとかかな

もしTStringListでCSVファイルを読み出してるのなら
サンプル蔵の高速TStrings読込でファイル読込高速化はある程度可能

キャッシュファイルを作って高速化とかはわからん

753 : :04/05/15 14:56
失礼します。
練習として
「スクロールバーでRGB変化させて色表示」するプログラムや
「ボタンがクリックされた回数を表示」するプログラムなど、
ホントに小さなプログラムを作ってみました。
が、どれもexeファイルにすると400kb以上になってしまって…。
この程度のものなら通常、20kb前後に収まると思うんですが…。
何か解消の方法ありましたらお教え下さい。

754 :デフォルトの名無しさん:04/05/15 15:02
>>753
Delphiで小さな実行ファイルを作ろう
http://pc5.2ch.net/test/read.cgi/tech/1009080085/

755 : :04/05/15 15:38
>>754
ありがとうございます。

756 :デフォルトの名無しさん:04/05/15 15:58
>>753
UPX
http://homepage2.nifty.com/maskp/
を使用すると、EXEファイルのサイズが半分以下になります。

757 :デフォルトの名無しさん:04/05/15 16:15
いまある exeファイルのサイズを小さくしたい

のと

小さな実行ファイルを作りたい

を混同する人が多いよね

758 :753=755:04/05/15 16:25
>>756
>754さんのリンク先をザッと読んで、
「随分手間が掛かるみたいだから、現状のままでもいいか」と考えていました。
でもこれを使えば、
さほど手間をかけずにファイルサイズを小さく出来ますね。
しばらく使ってみてデメリットが無いようであれば、常用させていただきます。
ありがとうございました。

759 :デフォルトの名無しさん:04/05/15 16:30
> さほど手間をかけずにファイルサイズを小さく出来ますね。

プログラミングは全く関係ないし

760 :デフォルトの名無しさん:04/05/15 16:40
754のスレもいいけどさ
http://homepage2.nifty.com/Mr_XRAY/Halbow/index.html
なんかどうよ。
勉強にもなるし9KBのプログラム作れたよ。

761 :デフォルトの名無しさん:04/05/15 17:16
Win32がらみの質問になるのかもしれませんが失礼します。
デバイスマネージャからデバイスの有効、無効を切り替える
操作をプログラムで処理したいのですが可能でしょうか?


762 :714:04/05/15 17:37
たくさんのレス、ありがとうございます714です

Hotkeyに登録したキーをショートカットとして使うのに、TH○okhotkeyというフリーの自作コンポーネントを
使ったことが、混乱の原因のような気がします・・・

結局、よく見てみると、このコンポのおかげで、メインメニューのショートカットは使用しておらず
こちらの勘違いで、ご迷惑をおかけしましたm(_ _)m

また、このコンポのおかげで、自動的にHookをしてくれるために、Hookに関する知識もいらずに
Hookができています

やりたいことは、Hokeyに登録したキーを、そのままアクティブなウィンドウに流したい

ということなのですが、このTH○okhotkeyの便利さもあって、Hookの勉強をおろそかにしていました
もっと勉強してHookを身に着けて、CallNextHookExで、やりたいことをできるように
がんばりたいと思います。

ご指導ありがとうございましたm(_ _)m

763 :724:04/05/15 17:49
>>752
アドバイスありがとうございます。
StringListで読み込んでるので
サンプル蔵のコードを一度試してみます。

764 :デフォルトの名無しさん:04/05/15 19:01
>>762
そのコンポーネントがやってるのはフックじゃなくてホットキーだ。

765 :デフォルトの名無しさん:04/05/15 20:10
OfficeXPや一部のソフト(タブブラウザのSleipnirとか)で使用されて
いる独特なメニュー、ツールバーなどの(フラットでマウスオーバーで
ふちの色が変わったり)インターフェイスはDelphiからでも使用できるんですか?
正式名称があったら教えていただきたいです。

766 :デフォルトの名無しさん:04/05/15 20:17
色が変わるのは標準ではないかも

自前で作るのがおそらく1番手っ取り早い

767 :デフォルトの名無しさん:04/05/15 20:41
普通にTToolBarとTToolButtonで実現できるはず・・<作った覚えがある

768 :デフォルトの名無しさん:04/05/15 20:42
TToolBar.Flatやね

769 :767-768:04/05/15 20:45
なんか勘違いしてるような気がしてきた。
とりあえず謝っときます。
スレ汚しスマソ>ALL

770 :デフォルトの名無しさん:04/05/15 21:34
>>765
Toolbar2000+TBXで出来るよ

771 :デフォルトの名無しさん:04/05/15 23:24
TFile = class(TObject)
public
 Name: string;
 いくつかのメソッド
end;

TFolder = class(TObject)
public
 Name: string;
 List: TObjectList;
 function Add(F: TFile): integer;
end;

function TFolder.Add(F: TFile): integer;
begin
 Result := List.Add(F); 
end;

772 :デフォルトの名無しさん:04/05/15 23:25
procedure Form1.Button1Click(Sender: TObject);
var
 F: TFile;
 FL: TFolder;
begin
 F := TFile.Create;
 FL := TFile.Create;

 F.Name := '新しいファイル';
 FL.Add(F);
 ここでいろいろな処理

 FL.Free;
 F.Free;
end;

このような感じで作っているのですがFL内のリストにFのデータが追加がされません。
どこがおかしいのでしょうか。

773 :デフォルトの名無しさん:04/05/15 23:27
>>765
関係ないけどプニルはこれを使ってるらしい。
http://www.bcgsoft.com/bcgcontrolbar.htm

774 :デフォルトの名無しさん:04/05/15 23:31
>>772
TFolder.ListはどこでCreateしてる?

775 :デフォルトの名無しさん:04/05/15 23:34
>>774
TFolderの、Create内でCreateして
DestroyでFreeしています。

776 :デフォルトの名無しさん:04/05/15 23:37
>FL := TFile.Create;
コピペミスだよね?

データが追加されないってどう確認した?


777 :デフォルトの名無しさん:04/05/15 23:39
>>772
FL := TFile.Create;
ここを
FL := TFolder.Create;
にしたら?

778 :デフォルトの名無しさん:04/05/15 23:51
>>776
>FL := TFolder.Create;の間違いでした。

PFile = ^TFile;

TFolder = class(TObject)
private
 procedure SetFile(F: TFile);
 function GetFile(i: integer): TFile;
public
 property Files[i: integer]: TFile read GetFile write SetFile; default;

function TFolder.GetFile(i: integer): TFile;
begin
 Result := PFile(List.Items[i])^;
end;

ShowMessage(FL..Files[0].Name);
この処理を実行した時点でエラーが出て止まります。

779 :デフォルトの名無しさん:04/05/15 23:54
Result := List.Items[i] as TFile;
でどうよ?


780 :デフォルトの名無しさん:04/05/16 00:02
>>779
ありがとうございます、取得できました。
でもあいかわらず終了時に読み込み違反が出てしまいます。
ListにTFileを追加する部分を省くとエラーは出ないのですが。

781 :デフォルトの名無しさん:04/05/16 00:08
>>780
ListをCreateするとき、引数にFalseを書いてみれば?(ヘルプ参照)
TFileを二重解放してる気がする。

782 :デフォルトの名無しさん:04/05/16 00:19
>>781
全部スムーズに行きました。
親切丁寧なご指導本当にありがとうございます・゜・(ノД`)・゜・。

783 :デフォルトの名無しさん:04/05/16 04:27
>>782
書き忘れたけど、解放を自力でやるかTObjectListにまかせるかは
プログラムによるので考えてみてね。

784 :デフォルトの名無しさん:04/05/16 12:35
RicheditでURLだけクリックできるようにするには
どうすればいいですか?

785 :デフォルトの名無しさん:04/05/16 12:37
ほかの場所をクリック出来ないようにするには? ということをききたいの?

786 :デフォルトの名無しさん:04/05/16 12:38
ほかの場所には行かせないように、マウスを動かせなくするとか?

787 :デフォルトの名無しさん:04/05/16 13:23
VBの方がよいかなあ

788 :デフォルトの名無しさん:04/05/16 13:23
>>784
カーソルお変えろ

789 :デフォルトの名無しさん:04/05/16 14:32
ApplicationのOwner以外のフォームをMDIの親にしたいんですが、
どうすればいいですか?

790 :デフォルトの名無しさん:04/05/16 14:44
>>787
VBしか使ったことない人は、そのように感じることが多いようだね。
自分も長い間VBを使ってきてそう思っていたが、いざDelphiを触ってみると
以下に長い間自分が無駄な時間を過ごしてきたかが一瞬にしてわかった。
ただ、VB.NETに関してはそうとはいえない(VB.NET/C#の方がよいと思う点が
かなり出てきている)。

791 :デフォルトの名無しさん:04/05/16 16:39
> ApplicationのOwner以外のフォームをMDIの親にしたいんですが、

回答じゃなくてすみませんが、なぜ「したい」のか教えてください。

792 :デフォルトの名無しさん:04/05/16 16:39
>>790
> 以下に長い間自分が無駄な時間を過ごしてきたかが一瞬にしてわかった。

具体例プリーズ。
でないと、単なるデル厨にしか見えん。

793 :デフォルトの名無しさん:04/05/16 16:46
> VBの方がよいかなあ

具体的理由プリーズ。
でないと、単なるVB厨にしか見えん。

794 :デフォルトの名無しさん:04/05/16 17:01
板が荒れるのを見て楽しむような奴の相手はするな。

795 :Delフサギコ ◆A6VzDeLphI :04/05/16 23:02
>>784

 ∫,,,,,,,,,∧,,∧  たしか、どこかにあったけど・・・
⊂,,,,,,,,,つ,,゚Д゚ミつ
  デルヒワールドだったかな。

796 :初心者1:04/05/16 23:26
失礼します。デルファイ初心者です。
delphi6.0でORACLEのストアドプロシージャに引数を渡そうと
しているのですが、1つの時はうまくいき、2つになると2つ目の
parambyname("→この部分←")の名前が見つからないというエラーが
発生します。
どのような原因が考えられるか教えてください。
よろしくお願いします。


797 :デフォルトの名無しさん:04/05/16 23:36
画面のハードコピーをクリップボードを経由せずに、
JPGファイルで作成したいのです。
とりあえず、一度ビットマップ形式でデータを読み込み
JPGに変換保存という方法で成功はしたのですが、
いかんせん遅いので、画像のデータをスマートにJPGに取り込むにはどうすればよいか、
ご教授願います。

よろしくお願いします。

798 :デフォルトの名無しさん:04/05/16 23:45
>>784
非常に泥臭いですが、
いちおう、下の方法でうまくいきました。もしご参考になれば・・・

・文字列からURLを探す
・URLの部分を青くアンダーバー付で表示するようにする。
・カーソルの動きをチェックし、URL部分の上にいるときにはクリックカーソルに変える
・URLの上でクリックしたらURLを開くイベントを実行

799 :デフォルトの名無しさん:04/05/17 00:02
>>797
GetDesktopWindow+GetDC+BilBlt

800 :デフォルトの名無しさん:04/05/17 00:33
JPEGへの変換が遅いのは仕方が無いでしょう。

801 :デフォルトの名無しさん:04/05/17 02:23
>>796
引数1個ならうまく実行できるんだよね?
・2つめの引数の微妙なスペル違い(実はこれが一番多い)
・PL/SQLには実は引数は1つしかなかったというオチ
・2つめの引数の種類が in ではなくて outだった
・(Delphi上で)Parametersが最初の一つしか指定されていなかった
が考えられる。

とりあえずDelphi抜きでSQL Plus*あたりから手動で引数を渡して実行して
確認してみれ。

ちなみに、DBアクセスの方法を書いておいたほうがいい(BDEとか、dbExpressとか)
漏れはサードパーティーのOracle VCLを使っているので、BDEやdbExpressに特化した
ものだとうまく答えられない。もしそうなったらゴメン。

802 :デフォルトの名無しさん:04/05/17 05:40
> JPGファイルで作成したいのです。

bmp → jpg の変換速度は、ディスクアクセスに比較すると十分速いと思うぞ。
巨大なデスクトップを使ってるとか?

803 :797:04/05/17 21:31
>>799
ありがとうございます。
試してみます。

>>800
やはりそうなのでしょうか。
やりたいことは画像ファイルの送受信して、相手の端末に
自分のデスクトップや画像を送る処理なので、
HDCの情報を直接送ることができればわざわざ
ファイルを作成する必要はないのですが。

>>802
作成処理から作成までで、1秒弱かかってしまいます。
壁紙とか使用してないシンプルなデスクトップなのですが

804 :デフォルトの名無しさん:04/05/17 22:00
> 自分のデスクトップや画像を送る処理なので、

jpg にする必要ないんじゃないの。

> ファイルを作成する必要はないのですが。

そうですね、TBitmap に写し取って、SaveToStream() でメモリストリームにして
そのメモリイメージをそのまま送れば、すべてメモリ上の処理で済む。

> HDCの情報を直接送ることができればわざわざ

HDCの情報がそのビットマップに相当する

805 :デフォルトの名無しさん:04/05/17 22:48
>>804
ありがとうございます。早速試してみたいと思います。

806 :デフォルトの名無しさん:04/05/17 23:52
相互依存するクラス
(たとえば、クラスAのフィールドにクラスBのインスタンスがあるけど、BはAのフィールドも参照する)
これを別のユニットの置く方法ってありますか?


807 :デフォルトの名無しさん:04/05/18 00:17
あります。

808 :デフォルトの名無しさん:04/05/18 03:54
ありません。

809 :デフォルトの名無しさん:04/05/18 10:20
・クラスAのフィールドにクラスBのインスタンス
・BはAのフィールドも参照する

classA → UnitA
classB → UnitB

として、UnitA では、宣言部の uses に UnitB を含め、UnitB では実装部の uses に UnitA を含める

810 :デフォルトの名無しさん:04/05/18 10:23
> ・BはAのフィールドも参照する

どのように参照するかによる

811 :デフォルトの名無しさん:04/05/18 10:24
TObjectで持ってimplementationでusesしてキャストすればいい

812 :デフォルトの名無しさん:04/05/18 12:35
>>811
オレもそうしてるけど、一々キャストしなければいけないから
余りエレガントには思えないね。ローカルで代入するとしても、なぁ。
もっと良い方法は

無いんだろうなァ

813 :デフォルトの名無しさん:04/05/18 12:44
> これを別のユニットの置く方法ってありますか?

ありますか?  って質問だっただろ。キャストは実装コードだけだろ。

814 :デフォルトの名無しさん:04/05/18 13:44
相互に参照するクラスを別々のユニットに分ける時点でエレガントさとはオサラバ

815 :デフォルトの名無しさん:04/05/18 15:33
Edit1に入力された数を2倍にして、Edit2に表示させたいんですが
文字が入力されたり、何も入力されていない時にエラーが出ます。
どうしたらいいでしょうか?

procedure TForm1.Edit1Change(Sender: TObject);
var x:integer;
begin
x:=StrToInt(Edit1.Text);
x:=x+x;
Edit2.Text:=IntToStr(x);

end;

816 :デフォルトの名無しさん:04/05/18 16:03
わけの分からない値が表示されるよりはエラーになったほうがいいだろ。
その時どうしたいんだ?それはプログラム作成者が決めることだ。
とりあえず適切なエラーメッセージを表示したければこんな感じ。
begin
 try
  x:=StrToInt(Edit1.Text);
  x:=x+x;
  Edit2.Text:=IntToStr(x);
 except
  on E: EConvertError do
   ShowMessage('Edit1に数値を入れろゴルァ!!');
 end;
end;


817 :デフォルトの名無しさん:04/05/18 16:54
>>815
エラーが嫌ならStrToIntDefでも使ってください。

818 :804:04/05/18 20:12
>>804
なぜか遅くなってしまいました。多分BMPのメモリストリームそのまま送ると、
今度は転送量が大きくなりすぎるんですね。再度、精進いたします。

>>815
文字を入力したくないなら、
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (Key <> '0') and
(Key <> '1') and
(Key <> '3') and
//略
(Key <> '9') then
begin
Key := #0;
end;
end;

なにも入力してないときにエラーを回避したいなら、
procedure TForm1.Edit1Change(Sender: TObject);
var x:integer;
begin
if Edit1.Text = '' then
begin
Edit2.Text:=IntToStr(x);
exit;
end;
//以下略
でいけるかと。質問の意味が違うかもしれないけど

819 :818:04/05/18 20:13
失礼しました>>818
は以下の間違いです
procedure TForm1.Edit1Change(Sender: TObject);
var x:integer;
begin
if Edit1.Text = '' then
begin
Edit2.Text:='';
exit;
end;
//以下略

820 :デフォルトの名無しさん:04/05/18 21:21
delphiで、ウィンドウを持たないプログラムって
どうやって作るんでしょうか?(コンソールアプリではなく)

やりたい事は、外部プログラムの起動です。

新規作成→アプリケーション のプロジェクトで
ウィンドウを作成する前に、処理をして
ウィンドウを作成せずに終了する。
って感じですか?

もしかして、personal版以外だと適応したプロジェクトがあるのでしょうか?

821 :デフォルトの名無しさん:04/05/18 21:26
>>820
それでもいいしけど、コンソールアプリプロジェクト作って
program Project1;
{$APPTYPE GUI}
uses
Windows;
begin
OutputDebugString('hello,world');
end.
とか書き換えるだけ。

822 :820:04/05/18 21:42
>821
ありがとうございます。

なんだか、とても簡単なんですね。
勉強させてもらいました。
また、何かあったらよろしくお願いします。

823 :デフォルトの名無しさん:04/05/18 22:54
ファイルの転送処理を、
ここのソースをそのまま使って実行できたのですが、
ttp://www.ipc.hokusei.ac.jp/~z00104/delphi/thread.html

サンプルでは一度送信する度に切断してしまうため、
送信処理をする度にアクセスする為の時間がかかってしまいます。
切断せずに処理を続けるにはどうすればよいでしょうか。
よろしくお願いいたします。


824 :デフォルトの名無しさん:04/05/18 23:04
ソケットをクローズしなけりゃいいだけだろ

825 :デフォルトの名無しさん:04/05/18 23:05
>>818
> なぜか遅くなってしまいました。多分BMPのメモリストリームそのまま送ると、

TJpegImage にも SaveToStream() メソッドがあるよ。

826 :823:04/05/18 23:25
>>824
最初、自分もそうかと思いまして
ソケットをクローズしないで、
while (not Terminated) and ClientSocket.Connected do
のループをデータ受信後抜ける方法を模索してみましたが
分かりませんでした。どのようにすればよいでしょうか。お願いいたします。

827 :デフォルトの名無しさん:04/05/19 01:19
もうDelの問題じゃないな。

828 :デフォルトの名無しさん:04/05/19 02:20
>>826
全部受信し終わってたら Break すればええやん

829 :デフォルトの名無しさん:04/05/19 06:31
delphiでDLLの練習をしているのですが
フォームのハンドル等をDLL側に送る方法ってないでしょうか?

830 :デフォルトの名無しさん:04/05/19 09:54
関数の引数にする

831 :デフォルトの名無しさん:04/05/19 11:25
>>826
TCPのストリームには区切りがないので自分で目印をつけるしかない
[データサイズ][データ本体][次のデータサイズ・・・]
とか
[データ本体][データ終端][次のデータ・・・

832 :デフォルトの名無しさん:04/05/19 13:43
Canvasの持ち主(「Form1.Canvas」なら「Form1」、「Image1.Canvas」なら「Image1」)を
Canvasから調べるにはどのようにしたらよいのでしょうか?

833 :デフォルトの名無しさん:04/05/19 13:49
RSSのコンポーネントってありませんか?

834 :デフォルトの名無しさん:04/05/19 14:54
Canvas が TControlCanvas なら簡単なんだけど(Form1 や PaintBox1 などは簡単)
Image1.Canvas は実装部に定義がある TBitmapCanvas なので Image1 にたどり着く
のは難しそう。

835 :デフォルトの名無しさん:04/05/19 16:00
>>766-770,773
ToolBar2000とTBXというのがあるんですねー。
遅くなりましたが、どうもありがとうございました。
いろいろ試してみます。

836 :デフォルトの名無しさん:04/05/19 16:10
>>818
if Key in ['1'..'9'] then


837 :デフォルトの名無しさん:04/05/19 16:58
Windows.TextOutで書いた文字列を消すにはどのようにすればいいのでしょうか?

838 :デフォルトの名無しさん:04/05/19 17:12
>>837
上塗りしてやればいいんじゃないか?

839 :デフォルトの名無しさん:04/05/19 17:32
>>837
状況にもよるんだが。

とりあえず文字だけを消したいなら、
文字を背景と同じ色にして同じ座標にもう一度書くのが確実。

イメージの上など、背景が単一色じゃない場合はいろいろと面倒。
工夫するしかない。

840 :デフォルトの名無しさん:04/05/19 17:45
Repaint

841 :デフォルトの名無しさん:04/05/19 18:23
>>836
こういう細かな便利技(?)を教えてくれるサイトか本ってないでしょうか?

自分は経験が浅いので
if flag = True then flag := False else flag := True;

flag := not flag;
で済む、というのを見て目からウロコが落ちたぐらいです。

842 :デフォルトの名無しさん:04/05/19 18:27
>>841
言語リファレンスを一回通して読んどけ

843 :841:04/05/19 18:43
あ、818さんの名誉のために言っておくとわたしは818さんじゃないですよ。

>>842
ボーランドからダウンロードしたPersonal版を使ってるんですが
付いてますか?<言語リファレンス

844 :デフォルトの名無しさん:04/05/19 18:56
オンラインのがあるだろ

845 :デフォルトの名無しさん:04/05/19 19:03
>>843
内蔵のエディタで予約後にカーソルを合わせてF1キーを押すと
言語リファレンスに一発で飛べる

846 :デフォルトの名無しさん:04/05/19 20:30
外部データを読み込むにはどうしたらいいですか?

847 :デフォルトの名無しさん:04/05/19 20:32
>>843
落としたアーカイブを展開した先のdocumentationディレクトリ内にoplg.pdfがある。

848 :デフォルトの名無しさん:04/05/19 20:42
>>845
知らなかった...

849 :デフォルトの名無しさん:04/05/19 20:46
>>846

どうしたらいいんでしょうねー。
自分もテキストファイルから1行ずつ読み込んで、
それをrecordに入れてソートしてってのをどうやるかで
困ってます。リストを使うとは思うんですが。

んで、846さんはどんなデータを扱いたいんですか?

850 :デフォルトの名無しさん:04/05/19 20:57
>>849
それならTStringList.LoadFromFile()で十分じゃ?

851 :デフォルトの名無しさん:04/05/19 21:34
If bFlag then
begin
  iValue = 10;
end
else
begin
  iValue = 20;
end;

この構文の代わりに…
const
  IVAL:array[Boolean] of Integer =(10,20);
〜〜〜〜〜
  iValue := IVAL[bFlag];




852 :841:04/05/19 21:36
>>847
こ・・これは!
恐れ入りました。
てかボーランドってかなりサービスいいんだな。

853 :これがすごいとおもった:04/05/19 21:55
with TStringList.Create do
try
  Text := ????String;
  SaveToFile('TMP.TXT');
finally
  Free.
end;

854 :デフォルトの名無しさん:04/05/19 22:28
dynamicとvirtualの違いって、結局のところ速度とメモリ使用量だけ?

855 :デフォルトの名無しさん:04/05/19 22:32
だけ。
dynamicはVCL級にでかいクラス郡を作らない限りはいらないだろ。

856 :デフォルトの名無しさん:04/05/20 00:02
>>818
たまには2のことも思い出してあげてください
>>836
たまには(ry

857 :デフォルトの名無しさん:04/05/20 00:52
過去ログ嫁は無視。どんどんログをつくろう。重複なんか気にしないで。

858 :デフォルトの名無しさん:04/05/20 02:27
ファイルエクスプローラをクリックさせてそこから取得したパスの
画像ファイルを表示させたいのですが ファイルのエクスプローラをひょうじさせるのってどうやったらいいんですか?


859 :デフォルトの名無しさん:04/05/20 08:29
>>857
>>856の最後の行は「たまには0のことも〜」なんだよ。

860 :デフォルトの名無しさん:04/05/20 12:25
(´ゝ`)

861 :デフォルトの名無しさん:04/05/20 13:40
>>858
本当にエクスプローラーを使うならShellExecute
似たようなのを作るならTTreeViewとTListViewを組み合わせて

画像ファイルはTImageで開く

862 :デフォルトの名無しさん:04/05/20 14:43
すいません、初歩的な質問なんですが、DelphiのコンポーネントのMediaPlayer
を使って、簡単な音楽再生をしようと思ってます。

コンパイルしたあと、自分の環境で、再生させるとちゃんと音がでるのですが
他の人にEXEファイルを送って、使ってもらったんですが
MCIエラーというのがでて、使えません。

恐らく、他の人のPCにDelphiのMediaPlayerを再生する環境が入っていないと
思うのですが、再生する環境を、つくったEXEに埋め込んで
使えるようにするには、どうしたらいいのでしょうか?

863 :833:04/05/20 15:22
>>833
ないっすか?

864 :デフォルトの名無しさん:04/05/20 15:34
>>863
ここでも読め
ttp://delphi.about.com/library/weekly/aa072903a.htm

865 :837:04/05/20 16:52
>>838-840
ありがとうございます
いろいろ消すやり方もあるんですね。
とりあえず問題がなさそうなのでRePaintでやってみることにします

866 :デフォルトの名無しさん:04/05/20 17:11
>>862
http://www2s.biglobe.ne.jp/~mix/cm2_help/player_trouble_mci.htm
確認してみそ

867 :デフォルトの名無しさん:04/05/20 17:19
Delphiでブラウザを起動し、指定されたURLを表示したいのですが、
その際404などのHTTPのエラーが帰って来た場合は、
デフォルトのページを表示したいです。
こういうことってできますか??
そもそもHTTPエラーって取得できますか??

868 :デフォルトの名無しさん:04/05/20 17:28
>>867
記憶が正しければ、TidHttpでGetしようとするとエラーが発生する。
そのエラーをCatchして、TIdHTTPResponseInfo.ResponseNoを
みればよかったんじゃないかと覚えている。

869 :デフォルトの名無しさん:04/05/20 17:28
>>868
すまんexceptですた・・・

870 :デフォルトの名無しさん:04/05/20 17:32
DelphiってどこでDLできるの?

871 :デフォルトの名無しさん:04/05/20 17:34
>>868
ありがとうございます。
やってみます!!

872 :デフォルトの名無しさん:04/05/20 17:39
下記のソースで同一フォルダ内のjpgファイルをボタンを押すごとに表示切り替えしているのですが
ImageのproportionalをTrueにすると速度に不満が生じます。切り替わる際に何も表示されない時間帯があるのも困ります。
(1→2へブランクなしに切り替わってほしい Image.Proportional;Falseならそこそこの速度が出ています)
どのようにしたら実現可能でしょうか?


procedure TForm1.Button2Click(Sender: TObject);
Var
Jpeg :TJpegImage;
begin
if StrToInt(Label1.Caption) < FileListBox1.Items.Count -1 Then
begin
Jpeg :=TJpegImage.Create ;
Jpeg.LoadFromFile(FileListBox1.Items[StrToInt(Label1.Caption)]) ;
Image1.Picture.Assign(Jpeg);
Jpeg.Free;
Label1.Caption := IntToStr(StrToInt(Label1.Caption) +1);
end;

873 :デフォルトの名無しさん:04/05/20 17:43
>>870
ttp://www.vector.co.jp/soft/dl/win95/prog/se205882.html
調べりゃすぐわかるだろうに。

874 :デフォルトの名無しさん:04/05/20 17:46
>>873
ごめんよ、ぐぐったら英語しか出てこなかったの・・・
ありがd

875 :デフォルトの名無しさん:04/05/20 17:47
>>872
前後の画像をあらかじめTStreamで読み込んでおいてから、
TImageにぶち込んでもだめかな?
または、もう一つのTImageを非表示状態で予め画像を
読み込んでおいて、ボタンクリックで今までのをVisible:=False、
読み込んでおいたのをVisible:=Trueする。

876 :デフォルトの名無しさん:04/05/20 19:04
TBitmap をつかって予め変換してから、Assign

877 :デフォルトの名無しさん:04/05/20 20:31
フォームエディタ上でボタンをダブルクリックすると、
自動的にBtnClickイベントプロシージャ(だったっけ)が
ソースエディタ側に追加されますよね。

間違えてクリックしちゃって作られたイベントを
一発で取り消す方法はありますか?

今のところ、Type宣言とprocedure本体と、オブジェクトインスペクタの
手続き名をすべて手動で消しているんですが。

878 :デフォルトの名無しさん:04/05/20 20:49
>>877
自動で追加されたプロシージャの
beginとendの間に何も書かずにF9(コンパイル&実行)をかければ
自動で削除されますよ。

879 :デフォルトの名無しさん:04/05/20 20:54
保存でも消せる

880 :デフォルトの名無しさん:04/05/20 21:25
失礼します。

今日練習がてらに落書きソフトを作り始めてみたのですが、
メインメニュー内に[ペン設定]→[太さ]→[1],[2],,,,,[5]
とおき、太さを選択できるようにしようと思ったのですが、
[1]の場合と[2]の場合と……などとと各個入力せずに、なんとか一括でこれらの処理を出来ないものでしょうか?
case文で何とかなりそうな気はするのですが……

それとも各個入力したほうがわかりやすいでしょうか?

881 :デフォルトの名無しさん:04/05/20 21:34
Ctrl+Cのキーボード操作で処理を発生させたいので、
試行錯誤の結果、
以下のようにしてひとまず動くようにはなったのですが、
もっとスマートな書き方はないでしょうか。あればご教授願います。

現在のソース

procedure Form1.StringGrid1KeyPress(Sender: TObject; var Key: Word;Shift: TShiftState);
begin
  if ([ssCtrl] = shift ) and //Ctrl + C の操作で起動
   ((Key = 229) or (Key = 67)) then
  begin
    //処理
  end;
end;

882 :デフォルトの名無しさん:04/05/20 21:36
画面がどのような感じがわからないのですが、
もしボタンで選ばれているなら、ボタンに太さのTagを設定し、
ボタンクリックのイベントを統一して、クリックされたボタンのTagの値に
設定するようにすればよいのではないでしょうか?


883 :デフォルトの名無しさん:04/05/20 21:36
あとはアクションかメニューのショートカットに登録するくらいか

884 :882:04/05/20 21:37
失礼しました>>882>>880さんへです

885 :デフォルトの名無しさん:04/05/20 21:46
>>880
ペンの設定ダイアログをつくって表示

886 :882:04/05/20 21:47
>>880さん
失礼しました。私、何も文章よんでませんでしたね。
ボタンじゃなくて、メニューですね。

procedure TForm1.NClick(Sender: TObject);
begin
Label1.Font.Size := TMenuItem(Sender).Tag
end;
でどうでしょうか。

887 :880:04/05/20 21:58
>>882
解決策の提示ありがとうございます。というかTagプロパティの使い方がわからないorz

ttp://up.isp.2ch.net/up/c917249e1c67.png
ちなみにこんな風なサブメニューつくるつもりです。

この方法がしっくり来なかったら>>885さんのやり方で行こうかと思います

888 :デフォルトの名無しさん:04/05/20 22:07
>>887
Tagプロパティは開発者が自由に使っていいInteger型のプロパティ。
メニューで太さ選ぶならメニューアイテムのそれぞれのTagプロパティに太さを入れとけばおk

889 :882:04/05/20 22:07
>>887
オブジェクトインスペクタの下から2段目あたり
にTagとあれば、それがそうです。
そこに希望の数値を入れておき、Clikイベントを書くメニュー統一すればいけると思います。

などと書いてみましたが、>>885さんの方法のほうがスマートですね。失礼しました。

890 :デフォルトの名無しさん:04/05/20 22:23
Tabcontrolの使い方がいまいちわかりません。
HPを色々まわってみたのですがなかなかみつからなくて…
わかりやすいサンプルや解説のHPなどありませんでしょうか?
よろしくお願いします

891 :デフォルトの名無しさん:04/05/20 22:25
どうわからないのか言ってもらえないと情報の紹介のしようもない・・。

892 :デフォルトの名無しさん:04/05/20 22:27
>>890
タブブラウザ使ってみれ

893 :デフォルトの名無しさん:04/05/20 22:36
>>890
TabControl1.TabIndex
で何番目のタブが選択されているかが分かります。
なので、
何番目のタブが選ばれているかで処理をわければよいかと。
TPageControlと動きの違いを比較されると分かりやすいと思います。

894 :助けてください:04/05/20 23:03
A君は,ある数値計算プログラムを作成していたところ何度もx−sinxの値を計算する必要が
出てきた。そのプログラムではxの値の絶対値が非常に小さな値をとる場合があり,またそ
の値を高精度で求める必要があった。x−sinxの演算はそのまま実行すると|x|<<1の条件で桁
落ちがおきるため,マクローリン展開で計算する必要があるが,|x|<<1の条件でないときは
x-sinxをそのまま使用するほうがよい。そこでA君はx-sinxの値を計算する実数型関数
xmsin(x)を次の考えで作成することとした。
1)ある適当な正の実数x0を考える。
2)引数xの絶対値がx0より小さいときは,マクローリン展開を使って計算する。
|ai/Si|<<ε(εは1より十分小さい正の実数。)を用いて,収束を判定して計算した値を用いる。
3)引数xの絶対値がx0以上では,x-sinxの値を用いる。
Å君はマクローリン展開の計算をいろいろな場合で計算し,x0=0.1,ε=10e-16として関数を作
成した。また,作成した関数に対し,x=10e-10,10e-7,10e-4,0.0999の条件に対しx,xmsin(x),
x-sin(x)の計算値を比較した結果を表示するプログラムをvoid些関数prnrst(x)を用いて作
成し,関数xmsin(x)の動作確認した。
以下にA君が作成したプログラムを,一部を伏せた形で示す。また,実行結果も示す。A
君に成り代わってプログラムを完成しなさい。


895 :デフォルトの名無しさん:04/05/20 23:21
C/C++の宿題をやらせて、お兄ちゃん 22代目
http://pc5.2ch.net/test/read.cgi/tech/1083050221/

896 :デフォルトの名無しさん:04/05/21 04:57
すみません、パワーポイントのテキストボックスのような機能を持つコンポーネントはないものでしょうか?
探してみましたが私は見つけることが出来ず・・・
フォントが一文字単位で設定でき、編集時以外は背景を透過し、クリックすると枠が出て再編集可能なもの。
使用バージョンは6パーソナルです。ようするにタダの。もしかしてプロフェッショナルには入ってます?

897 :デフォルトの名無しさん:04/05/21 07:27
Delphiで長方形を描いてEMFにしたのですが、
できたファイルをIllustratorでよく見ますと、
左上にある始点と終点が閉じてなくて点が5個あります。
閉じた図形にするには(始点と終点を結合させるには)
どのようにしたらよいのでしょうか?

898 :872:04/05/21 08:38
昨日Jpeg画像の連続表示に関して書き込んだものです
教えていただいた複数TImageに前後のファイルを開いておきVISIBLEを切り替える方法を試してみたのですが
最初にやったもの(Image Proportional ON)と同じように切り替わりじにブランク表示がされてしまいます。
他の方法もしくは改善すべき点があったら教えてください。よろしくお願いします。


procedure TForm1.Button1Click(Sender: TObject);
Var
Jpeg :TJpegImage;
begin

if StrToInt(Label1.Caption) < (FileListBox1.Items.Count -2) Then
begin;

if (StrToInt(Label1.Caption) >=1) and (StrToInt(Label2.Caption) <StrToInt(Label3.Caption) ) and (StrToInt(Label2.Caption) <StrToInt(Label4.Caption) ) then
begin
Jpeg :=TJpegImage.Create ;
Jpeg.LoadFromFile(FileListBox1.Items[STrToInt(Label1.Caption) +2]) ;
Image1.Picture.Assign(Jpeg);
Jpeg.Free;
Label2.Caption := IntToSTr(StrToInt(Label1.Caption) +2);
Label1.Caption := IntToSTr(StrToInt(Label1.Caption) +1)
end  //一番古い頁を破棄し今見ているものの2頁先を拾っておく

if (Label2.Caption = Label1.Caption) then
begin;
Image1.Visible := True;
Image2.Visible := False;
Image3.Visible := False;
end

899 :デフォルトの名無しさん:04/05/21 09:00
>>898 ソース読んでないけど。
TImageでないとダメかい?
参考に自作ビューアの手順書いとく。

フォームのOnCreateでDoubleBufferd := True
TBitmapに画像を読む。
フォームに置いたTPaintBoxの位置・サイズを適当に変更。
TPaintBox.Repaint

TPaintBox.OnPaint内は、TPaintBox.Canvas.StretchDrawでTBitmapを描画。

900 :872:04/05/21 09:19
TBitmapにjpegって読み込めませんよね?どうすればいいのでしょうか?

901 :デフォルトの名無しさん:04/05/21 09:24
uses jpeg;


902 :899:04/05/21 09:30
>>900
ごめん、susieプラグインを呼び出して使った。

903 :899:04/05/21 09:47
連続でスマソ
susieプラグインについてはこの辺を参考に。
http://pc5.2ch.net/test/read.cgi/tech/1064420818/720-726

904 :デフォルトの名無しさん:04/05/21 10:08
>>896
漏れがそれに近いものを作った時には、TEditを非3D表示、枠を細い線で
表示させるようにして、マウスドラッグで範囲指定させて、そのドラッグした
場所に合うようTEditを動的に生成した。
んで文字を編集させて、エンターキーで確定。入力内容をその下のTImage
に同じ場所に表示させた。

編集可能で、さらにフォント等を変更させたいなら、TRichEditで同様の処理
をさせてあげればいいんでないかい?


905 :デフォルトの名無しさん:04/05/21 11:00
> Delphiで長方形を描いてEMFにしたのですが、

Rectangle() を使った? LineTo() じゃだめだよ

906 :デフォルトの名無しさん:04/05/21 11:01
質問があります。
パッケージにコンポーネントをインストールする時に、”DesignIntf.dcu”が
見つからない等のエラーが出てしまいインストールすることが出来ないの
ですけど、どうすればインストールすることが可能になるでしょうか?
Delphi6 Personalです。

907 :デフォルトの名無しさん:04/05/21 11:02
> TBitmapにjpegって読み込めませんよね?

ファイル → TJpegImage → TBitmap

908 :デフォルトの名無しさん:04/05/21 11:03
D6用のコンポじゃないんでは?

909 :デフォルトの名無しさん:04/05/21 11:04
>>906
そのままDesignIntf.dcuかDesignIntf.pasがないんじゃない?
もしくは、違うディレクトリに保存されてるとか。

910 :906:04/05/21 11:09
コンポーネントはDelphi6(Delphi6の本のCD-DOMのもの)のものです。

C:\Program Files\Borland\Delphi6 以下を検索したのですけど、
”DesignIntf.dcu”がないようです。

911 :デフォルトの名無しさん:04/05/21 11:24
>>910
DesignIntf.dcuでyahooで検索したら4件でてきたぞ?
ためしてみそ。

912 :906:04/05/21 11:45
4件の中から出てきた内容でとりあえずコンパイルできました。
やっている事の理屈は分らないですけど、パッケージの requires へ designide.dcpを追加で解決です。
これからはDelphiのパッケージのことを理解する必要がありますね。

913 :デフォルトの名無しさん:04/05/21 11:47
>>912
その掲示板に
「ヘルプの中の「DsgnIntf の名前変更および関連する変更」というトピックに記述があるそうです」
とあるから、ヘルプを読めばちゃんとわかったことぢゃないかな。

914 :デフォルトの名無しさん:04/05/21 13:25
超初心者です。
C#.netってC言語で使えますか?
C++はC言語で使えるようなのですが。

915 :デフォルトの名無しさん:04/05/21 13:29
>>914 スレ違い

916 :デフォルトの名無しさん:04/05/21 13:30
>>914
C#スレできいたら?

917 :デフォルトの名無しさん:04/05/21 13:30
超玄人です。
C#.netってC言語で使えません。
C++はC言語用のコンパイラでも使えるような仕組みがあるのです(厳密には嘘だけど)。


918 :デフォルトの名無しさん:04/05/21 13:49
>>913
以前のバージョンから名前が変更されている事を知らないとワカらんでしょ、多分。

919 :デフォルトの名無しさん:04/05/21 15:07
DelphiのUIのような華麗なドラッグ&ドックを実装するにはどうすればいいですか
(プロパティを弄くる以外に。

920 :デフォルトの名無しさん:04/05/21 15:08
Demoミロ

921 :デフォルトの名無しさん:04/05/21 15:27
>>920
こんなんあったのね・・・thx

922 :デフォルトの名無しさん:04/05/21 18:20
>>904
それでやってみます!

923 :デフォルトの名無しさん:04/05/21 18:23
Demoってなんか新種の生き物みたいだな

924 :880:04/05/21 18:41
どうも。ありがとうございました。
おかげさまでTagプロパティを用いて太さ設定、消しゴム大きさ設定とかもできました。
ところで……

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); //ボタンを押したとき
begin
 Image1.Canvas.MoveTo(X,Y); //ボタン押下位置取得
 pen := True; //変数penをtrueに
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
//マウス移動時に
begin
  if pen then //変数penがtrue(=ボタン押下時)のとき
  Image1.Canvas.LineTo(X,Y); //線を引く
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); //ボタンを離したとき
begin
  pen := False; //変数penをfalseに
end;

このように描画しているのですが、クリックして(ドラッグせずに)離すと点が打てないという問題に直面しております。
クリックした地点に点を打つ、という処理はLineToでは無理なのでしょうか?

925 :デフォルトの名無しさん:04/05/21 18:45
>>924
普通のお絵かきソフトの場合、
先を引くという機能を選択する→クリックしたままドラッグさせると
点線が表示される。クリックを止めると点線が線になって確定させる。
ということになるので、普通は点を打つか、線を引くかユーザに
選択させるもんだと思うぞ。

926 :880:04/05/21 18:48
>>925
いや、"直線ツール"の話ではなく、ペイントソフトの言い方をすれば、"鉛筆ツール"のつもりです。

直線ツールはまた追々付けていってみようかなと……

927 :デフォルトの名無しさん:04/05/21 18:54
>>926
ぢゃあ、クリック時のTPointとクリックを止めた時のTPointが同じだったら、
その場所に点を打つという処理にすれば?

928 :デフォルトの名無しさん:04/05/21 19:04
つーか、LineToは最後の点を描かない仕様だったと思うので
LineToを使ったあと、X,Yに点を描けばええと思います。

929 :880:04/05/21 20:38
色々試行錯誤してみた結果、Canvas.Pixelを使えば良いという事になりました
自分の頭の中にはLineToしか思い浮かばなかったです。

名無しに戻って頑張ってみます。アドバイスありがとうございました

930 :デフォルトの名無しさん:04/05/21 20:47
htmlを1タグずつ解釈していって目当ての情報を得る関数を作ったのですが
一般的にこういった関数の関数名はどういう名前が付くのでしょうか?
今は
function KaisekiTextMode(html : String ):Boolean;
という名前をつけていますが、「Kaiseki」の部分にものすごく違和感があります。

多少スレ違いな感がありますが、他に適切なスレも見つからずに困っています。

931 :デフォルトの名無しさん:04/05/21 20:49
> Canvas.Pixelを使えば良いという事になりました

えっ、これ知らなかったの? お絵かきプログラムつくるんだったら、TCanvas の
メソッドをすべて試すことくらいしておけよな

932 :デフォルトの名無しさん:04/05/21 20:50
およ、Pixels[] はプロパティーだな

933 :デフォルトの名無しさん:04/05/21 21:07
飛行機のJPGを左から右へ移動させ、あたかもとんでいるように
見せるにはどうすればよいでしょうか。

934 :デフォルトの名無しさん:04/05/21 21:12
>>933
そのJPGを見ている奴の顔を右から左へ動かす。


935 :デフォルトの名無しさん:04/05/21 21:17
>>933
そんなに頻繁にアニメーション使わないならImageListを使うと楽

936 :デフォルトの名無しさん:04/05/21 21:21
>>933
http://homepage1.nifty.com/MADIA/delphi/DelphiTips/KeySousa.htm
参考に。

937 :デフォルトの名無しさん:04/05/21 21:39
>>930
「Kaiseki」も英語にすればよし

938 :デフォルトの名無しさん:04/05/21 21:53
>>934
見せたい相手が近くにいない場合を想定しているので、
ちょっと難しいです。できればプログラムでできたらうれしいです。

>>935
ありがとうございます。調べてみます。

>>936
ありがとうございます。試してみます。

939 :デフォルトの名無しさん:04/05/21 22:02
>>938
ImageListに画像読み込んでImageList.Draw(0, 0, 0);ってすると
勝手にマスク処理(描画する画像と背景画像を合わせる)してくれるよ
これからもよく使うようなら自分でandだのxorだのしたほうがいいけど

940 :デフォルトの名無しさん:04/05/21 22:05
DirectX使え

941 :デフォルトの名無しさん:04/05/21 22:40
プログラムを打ち込んで実行したら、Runtime error 6とか出て、全く次に進めません
教えてください、お願いします _no
ちなみに、コンソールアプリケーションでやっています


942 :デフォルトの名無しさん:04/05/21 22:43
ソースはこんな感じです

program ps1(input,output);
var m,n:rear;
begin
readln(m);
n:=m+1
writeln(n);
end.

超初心者でゴメンナサイ _no
ちなみにDelphi6 Personalを使用しています

943 :デフォルトの名無しさん:04/05/21 22:46
program OneCoolDelphiProgram1;

{$APPTYPE CONSOLE} //This tells the compiler that the program is a console type

uses
 SysUtils;

begin
 //Insert super cool Delphi Code here
end.

944 :デフォルトの名無しさん:04/05/21 22:48
program ps1(input,output);

これはおかしい。こんな感じ。

program Project1;

{$APPTYPE CONSOLE}

uses SysUtils;

var m,n:real;
begin
readln(m);
n:=m+1;
writeln(n);
end.

945 :デフォルトの名無しさん:04/05/21 22:49
>program ps1(input,output);
無茶苦茶クラシックなPascalだな。

とりあえずここだけ
>program ps1;
に変えとけばいいよ。

946 :デフォルトの名無しさん:04/05/21 22:50
program Project1;

{$APPTYPE CONSOLE}

uses SysUtils;

var m,n:real;
begin
readln(m);
n:=m+1;
writeln(n);

readln;// これ付けるとみやすいかも
end.

947 :941:04/05/21 22:51
すみません、学校でLinuxでPascalやってるのを家に持って帰ってやり始めたんです
いまからまたやってみます、ありがとうございます

948 :デフォルトの名無しさん:04/05/21 22:52
[新規作成] から [コンソールアプリケーション] を選ぶといいよ

949 :デフォルトの名無しさん:04/05/21 23:34
文章ファイルをMEMOやRichEditに読み込まずに行数と文字数を
知る方法はなにかないでしょうか?

950 :デフォルトの名無しさん:04/05/21 23:38
>>949
TStringList

951 :デフォルトの名無しさん:04/05/21 23:40
>>949
TStringListに読み込んだらどうよ?
もしくはStreamに落として改行コードの数を数えるとか

952 :949:04/05/21 23:50
>>950
>>951
ありがとうございます。やってみます

953 :デフォルトの名無しさん:04/05/21 23:57
Delphiしたいんですけど
やっぱり英語読めないとだめですよね。
たとえば>>946の英語って読めますか?

954 :デフォルトの名無しさん:04/05/22 00:04
>>953
読めね
でもDelphi起動
そしてあなたも今日からDelphi起動

955 :デフォルトの名無しさん:04/05/22 00:05
>>953
英語が読めなくてもプログラミングはできる。
英語ができないと困るのは日本語訳されてない資料を読むときぐらい。

956 :953:04/05/22 00:21
>>954-955
ありがとうございます。

957 :デフォルトの名無しさん:04/05/22 00:25
>>950-951
100Mのファイルを全部一度に読み込むのはメモリの無駄だろ。
AssignFile, Reset, Eof, Readln使っとけ。

958 :デフォルトの名無しさん:04/05/22 01:14
TFileStreamを使え。

959 :デフォルトの名無しさん:04/05/22 01:23
>>957

100Mってどこに出てきた? 何メガならメモリの無駄じゃないの?
実行スピードはどうなの?

960 :デフォルトの名無しさん:04/05/22 02:13
最近テキスト処理にstream使うアホが増えてるのは
環境ホルモンの影響なんだろうか??

961 :デフォルトの名無しさん:04/05/22 02:36
>>960
stream使うとどうなるのでつか?

962 :デフォルトの名無しさん:04/05/22 02:41
テキスト処理に TStream 系を使うことが何でアホなのか、アホに説明できるわけない

963 :デフォルトの名無しさん:04/05/22 02:54
if str = 'いち' then result := 1 else
if str = 'にい' then result := 2 else
if str = 'さん' then result := 3 else
・・(略)
if str = 'じゅう' then result := 10;

をもっとうまく書く方法ってありますか?

964 :デフォルトの名無しさん:04/05/22 02:58
テキストから
1文字をだして
数値にかえるにはどうしたらいいでしょうか?

n:=Ord(Copy(FileList[0],1,1));

「互換性のない型です」とエラーがでるのですが・・・


965 :デフォルトの名無しさん:04/05/22 03:09
>>963
面倒だから「さん」まで

function HiraToNum(s:string):integer;
const
numstr : array[0..2] of string = ('いち','にい','さん');
var
i:integer;
begin
i := -1;
repeat
inc(i)
until (i>High(numstr)) or (numstr[i] = s);
if (i>High(numstr)) then result := -1 else result := i+1;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := IntToStr(HiraToNum('にい'));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := IntToStr(HiraToNum('にい'));
end;

966 :デフォルトの名無しさん:04/05/22 03:12
Ord(s[i])

967 :デフォルトの名無しさん:04/05/22 03:13
Copy() の返値はstring型だから Ord は取れない

968 :デフォルトの名無しさん:04/05/22 03:15
文字列は文字の配列だよ

s := '123';

なら s[2] は '2' の Char 型と互換



969 :デフォルトの名無しさん:04/05/22 03:16
>>964
>>963とは同一?
別人ならOrdをStrToIntに。

970 :デフォルトの名無しさん:04/05/22 03:21
ええー、文字コードじゃなくて StrToInt() かよ。 Ord() だからてっきり・・・・・

971 :デフォルトの名無しさん:04/05/22 05:55
こんなのはどうかな。

function HiraToNum(const Hira: string): Integer;
var
 HiraStrings: TStringList;
begin
 HiraStrings := TStringList.Create;
 try
  HiraStrings.Text := 'いち'#13#10'にい'#13#10'さん';
  Result := HiraStrings.IndexOf(Hira);
  if Result >= 0 then Inc(Result);
 finally
  HiraStrings.Free;
 end;
end;

972 :デフォルトの名無しさん:04/05/22 10:39
>>971
いいアイデアだ。
それを見てこんなのも思いついた。

procedure TForm1.Button1Click(Sender: TObject);
var
 SL : TStringList;
begin
 SL := TStringList.Create;
 try
  SL.Add('ぜろ=0');
  SL.Add('れい=0');
  SL.Add('いち=1');
  SL.Add('にい=2');
  SL.Add('さん=3');

  Label1.Caption := (SL.Values[Edit1.Text]);
 finally
  SL.Free;
 end;
end;

SL.Addの部分を外部に用意したファイルをLoadFromFileで読み込むようにすれば手間も省けるし
「ぜろ」と「れい」で同じ値を返せたりと応用もきく。

973 :デフォルトの名無しさん:04/05/22 11:22
>>967
Copy()で取得したものからOrdをとる方法はないものでしょうか?

974 :デフォルトの名無しさん:04/05/22 11:26
>>973
ちゃんとレス読んでるか?
直接とろうと思ってるなら無理。
理由は967の言うとおりCopyの返り値はString型だから。

str := Copy('もげもげ',1,1);
n := Ord(str[1]);

あたりが妥協策だろ。

975 :デフォルトの名無しさん:04/05/22 11:34
>>974
なるほど わかりました
ありがとうございました

976 :デフォルトの名無しさん:04/05/22 12:31
>>963
result := AnsiIndexStr(str, ['ぜろ', 'いち', 'にい', 'さん']);

977 :デフォルトの名無しさん:04/05/22 12:35
>>976
こんな関数があるとは知らなかった・・。

978 :デフォルトの名無しさん:04/05/22 12:37
Jpeg :=TJpegImage.Create ;
Jpeg.LoadFromFile(FileListBox1.Items[STrToInt(Label1.Caption) -1]) ;

PaintBox1.Canvas.StretchDraw(Rect(0, 0, 400, 600), Jpeg);

PaintBoxにJpgファイルを表示させているのですがウィンドウ上に他のウィンドウが重なってしまうとJpg画像が消えてしまい再表示されませんよね?
この回避方法があるんでしたら教えてください。

979 :デフォルトの名無しさん:04/05/22 12:40
PaintBox の OnPaint イベントハンドラで描画する

980 :デフォルトの名無しさん:04/05/22 12:43
再表示を自動でやってくれるのが TImage。
PaintBox でやるなら、OnPaint で描画するが、予めビットマップに変換しておく
ことを推奨 

981 :デフォルトの名無しさん:04/05/22 12:46
ONPaint の条件としてはどんなんがありますか?
TForm1.activeみたいなかんじのがある?


982 :デフォルトの名無しさん:04/05/22 12:48
> ONPaint の条件としてはどんなんがありますか?

意味がよく分からない。条件って何?
どんなときに呼び出されるか、ということなら再描画が必要なときに呼び出される

983 :デフォルトの名無しさん:04/05/22 12:51
>>981
意味がわからない。

他のウィンドウが重なって消えた部分が
他のウィンドウより上に来たとき(消えた部分が再表示される必要が来たとき)に
Windowsから再描画しなさいというメッセージが発行される。
アプリケーションがそのメッセージを受け取ったとき
OnPaintイベントハンドラが呼び出される。

だからOnPaintイベントハンドラにどう再描画するかを記述しておく。

984 :デフォルトの名無しさん:04/05/22 12:52
すみません勘違いしていました 
どんなときに最描写するか ではなく 最描写が必要なときにはどうするかという処理だったのですね。
ありがとうございました。

985 :デフォルトの名無しさん:04/05/22 12:57
こんな感じです

> uses
> Jpeg;
>
> procedure TForm1.FormCreate(Sender: TObject);
> var
> jpg:TJpegImage;
> begin
> bmp := TBitmap.Create;
> jpg := TJpegImage.Create;
> try
> jpg.LoadFromFile('C:\Test.jpg');
> bmp.assign(jpg);
> finally
> jpg.Free;
> end;
> end;
>
> procedure TForm1.FormDestroy(Sender: TObject);
> begin
> bmp.Free;
> end;
>
> procedure TForm1.PaintBox1Paint(Sender: TObject);
> begin
> if Assigned(bmp) then PaintBox1.Canvas.Draw(0,0,bmp);
> end;


986 :デフォルトの名無しさん:04/05/22 12:58
bmp は Form1 の public フィールド bmp:TBitmap ね

987 :デフォルトの名無しさん:04/05/22 13:02
>>930
あなたのアナルをアナライズ

988 :930:04/05/22 13:06
>>937,987
ああっ。すいません。
はい、解析を訳して
AnalyzeTextModeとしました。Interpretも候補に挙がったけどアナライズの方がいいかなと。
目に留めていただきありがとうございました。

989 :デフォルトの名無しさん:04/05/22 13:29
パーサ

990 :デフォルトの名無しさん:04/05/22 15:58
http://yougo.ascii24.com/gh/28/002856.html

991 :デフォルトの名無しさん:04/05/22 23:23
Delphiで作られた有名なソフト教えてください。

992 :デフォルトの名無しさん:04/05/22 23:24
Delphi

993 :デフォルトの名無しさん:04/05/22 23:24
え?DelphiってDelphiで書かれてるの?
てっきりC++かと。

994 :デフォルトの名無しさん:04/05/22 23:47
かちゅーしゃ
OpenJane

995 :そろそろ埋めレスしていいのか?:04/05/22 23:56
HNに「@」が入ってる人、全然反省してない説。

996 :デフォルトの名無しさん:04/05/23 00:18
くだすれDelphi(超初心者用)その14
http://pc5.2ch.net/test/read.cgi/tech/1085239007/

997 :デフォルトの名無しさん:04/05/23 00:24
Delphiもスレとともにもう終了だな。

998 :デフォルトの名無しさん:04/05/23 00:27
終わっているのはお前のプログラマーとしての素質じゃねーの?

999 :デフォルトの名無しさん:04/05/23 00:30
997だけが終わっている。

1000 :デフォルトの名無しさん:04/05/23 00:30
999

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

251 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)