トップページ⇒tech
1001コメント323KB

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
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/
0002デフォルトの名無しさんNGNG
<過去ログ>
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
0003デフォルトの名無しさんNGNG
3げっと。
0004デフォルトの名無しさんNGNG
>>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 を調べたところファイルは正しく開かれているようなのですが…
一体に何が間違ってるのでしょうか?
0005デフォルトの名無しさんNGNG
ガン( ゚д゚)ガレ
0006デフォルトの名無しさんNGNG
if FS.Size > 0 then begin
 SetLength(S, FS.Size);
 FS.Read(S[1], FS.Size);
0007デフォルトの名無しさんNGNG
>>6
出来るようになりました。
ありがとう御座います。
0008デフォルトの名無しさんNGNG
何で Lines.LoadFromFile を使わないの?
0009デフォルトの名無しさんNGNG
>>8
遅いからじゃないの?
オレは使わんなぁ。
さらに言うと、TFileStreamじゃなくてTStringlist使うな。オレだったら。
0010デフォルトの名無しさんNGNG
>>9
> 遅いからじゃないの?

ほんとにおそいの?
Lines.LoadFromFile() は TFileStream を使って LoadFromStream() してる
し、TStringList を使うのより、速いのでは?
0011デフォルトの名無しさんNGNG
Delphiとは直接関係はないのですが
Indyコンポーネントについて質問させてください。
IndyはTCPを利用した通信において、ブロック単位を保証してくれるのですか?
WriteBufferを利用してクライアントが800B送ったとしたら、受信側である
サーバーは受信バッファが800Bに達するまで待ってくれるのですか?
(800B送ったら、受信側も必ず800B受信できることを保証するものですか?)
どうしてもTCPでパケット単位の処理をしたいので…
教えてください
0012デフォルトの名無しさんNGNG
>>8
いえ、Memo1に出しているのは読み込みの確認の為で、実際にはメモリ内での処理だけです。
>>9
TStringsのソースでは>>10 のようになっていたので。
0013デフォルトの名無しさんNGNG
>>12
どうも余計な口出しをしたようで失礼しました。

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

動的変数って何? 動的配列のこと? なら、SetLength() しなきゃならないのは
同じでは?
0015デフォルトの名無しさんNGNG
manifestを組み込んだソフトにおいて、
設定でビジュアルスタイルの適応の有無の切り替え方のできる方法があれば教えてください。
0016デフォルトの名無しさんNGNG
クラシックスタイルとXPスタイルを切り替える
001715NGNG
>>16
そういう意味ではなくて…
秀丸の動作環境設定の、「XPのVisual Style表示」
のような動作を実現したいです。
0018デフォルトの名無しさんNGNG
DelphiでAownerになるのはコンポーネントか親フォームですよね?
VCでこれに代わるものは何でしょうか?

Delphiで引数が(AOwner:TComponent)となっているのを
VCで使いたいんです。
0019デフォルトの名無しさんNGNG
無理
NULLでも突っ込んどいたら。
0020デフォルトの名無しさんNGNG
>>14
動的変数は GetMem で作成する名前なしのメモリ空間のことです。
作成や解放などメモリそのものの管理を手動で行わないといけない代わりに
どんなデータでも格納することができます。
長い文字列や動的配列も動的変数の一種ですが、メモリ管理は Delphi が
勝手にやってくれます。
0021デフォルトの名無しさんNGNG
NewしてTListに格納。大好き
0022デフォルトの名無しさんNGNG
>>20
レスさんくす

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

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

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

はい、そうですね。書き込み・読み出しは Move() でやるわけですね?
わたしは普通そういうときは、TMemoryStream のインスタンスをつくって、
SetSize() で領域を確保します。そうすると、Write() や Read() などの
メソッドがつかえたり、Position プロパティーで任意のオフセットに移動で
きたり、ファイルへの読み書きも簡単です。またインスタンスを Free すると
メモリの解放も自動的に行えます。以前は GetMem() FreeMem() を愛用して
ましたが、いまはもっぱら TMemoryStream を使っています。
0023デフォルトの名無しさんNGNG
http://www.borland.co.jp/tips/delphi/dh002/dh_17.html
0024デフォルトの名無しさんNGNG
今日Del6 personalをインストールしました。
初めてのプログラムとしてメモ帳をタブ化したいと思っているのですが、ずぶの素人の
私にでも出来るのでしょうか?
0025デフォルトの名無しさんNGNG
>>24
本物のメモ帳をタブ化したいの?
それともタブ型のメモ帳クローン?
まぁどっちもできるよ。
002624NGNG
>>25さん、どちらの方が簡単でしょうか?
なにぶんプログラムなどはじめてでして。
0027デフォルトの名無しさんNGNG
ガン( ゚д゚)ガレ
0028デフォルトの名無しさんNGNG
>>26
はじめてなら両方とも難しい。
まずは普通のメモ帳をつくりなされ。
0029デフォルトの名無しさんNGNG
>>26
文字コードとかにこだわらないならメモ帳もどきの方が簡単かな。
0030デフォルトの名無しさんNGNG
チュートリアルはやるべきかやらざるべきか(藁
せっかく門戸叩いても、「無いものを使え」って書いてあるチュートリアルってのもなぁ。
まぁ過ぎた話ではあるが。
幸い、オレはやらなかった。
0031Cappuccino ◆OTxNmva8vI NGNG
Windows XP SP2 RC1を入れたらデバッガが使えなくなったのですが、どうにかなる方法ご存知の方いらっしゃったらお教えください。
ttp://cafe-au-lait.ath.cx/img/d6err.png みたいに出て、そのあと固まります。
Delphi6で、一応Borlandから出ている修正はすべて当ててます(RTL Update #3まで)。
0032デフォルトの名無しさんNGNG
XP RC2 で修正されていますから、それまでお待ちください。
0033デフォルトの名無しさんNGNG
出典
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.
0034Cappuccino ◆OTxNmva8vI NGNG
やっぱりどうにもならないよね・・・待つしかw
別マシンでしばらく組むことにします。
0035デフォルトの名無しさんNGNG
XP SP2 はいわゆる「ベータ版」なのですから、これくらいの問題は予想しておくべきでしょう。
で、SP2/RC1 をアンインストールすれば問題ないでしょ?

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

OS のベータ版なんて一般公開するもんじゃないだろうに > MS
0036Cappuccino ◆OTxNmva8vI NGNG
XP SP2はアンインストするとIEに不具合出るらしいです。
0037デフォルトの名無しさんNGNG
じゃ、己の不幸を呪うがよかろう。

RC2 は一般公開されないから、もう RTM まで待つしかないか。どれくらいかかるかな。
0038Cappuccino ◆OTxNmva8vI NGNG
一般公開するらしいよ?
0039デフォルトの名無しさんNGNG
XP SP2 RC2 も公開するの?
今の時点で日本語版が出てないが時間的に間に合うのかな?
0040デフォルトの名無しさんNGNG
>>38
えーと、今使っている XP SP2 RC1 のビルド番号はいくつですか?
コントロールパネルのシステムで確認できると思います。
0041デフォルトの名無しさんNGNG
D6 Update#2 を当てない状態だと RC1 でも動くことを確認しました。
BorDbg60.dll を使うようにすれば、当面は回避可能。
さてさて。
0042デフォルトの名無しさんNGNG
はいよ。

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

結果教えてね。

RC2 が出たらこのレジストリを取り去ってください。
0043デフォルトの名無しさんNGNG
海外のコンポでDBCtrlGridを継承したものありますか?
付属のものだと、ちょっと不満足なので

DBGridを拡張したコンポですといろいろと見かけますが
DBCtrlGridを拡張したコンポは、どこにもみあたらなかったので・・・
0044デフォルトの名無しさんNGNG
>>43
DBCtrlGridは使い勝手よくないからねぇ。DBCtrlGridじゃなければならない
理由は何かな?
「もしGrid上に任意のコントロールが乗っていることが必要」と言う理由ならば
ここがお勧めです。
http://www.devexpress.com/

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

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

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

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

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

なんだか、まとまらない文章でごめんなさい、、、
0046Cappuccino ◆OTxNmva8vI NGNG
>>40
2096です
>>42
実行できましたー。ありがとうございます。
0047デフォルトの名無しさんNGNG
2000/xpで動かしているDOSアプリの仮称:abc.exeっていうのが
あるのですが、button1で終了、button2で再実行させたいのです。
DOSプロンプトから実行しているときは、停止させるには
ctrl+cを実行する以外に手はありません。
諸先生方、なにとぞHELPを。
0048デフォルトの名無しさんNGNG
DOSアプリでボタン?
0049デフォルトの名無しさんNGNG
ctrl+cをエミュればいいじゃない?
keybd_eventで調べれ
0050デフォルトの名無しさんNGNG
button1 を押したとたんフォーカスが移動して keybd_event が効かなくなるんじゃ・・・・
0051デフォルトの名無しさんNGNG
質問します。

dprファイルで宣言した変数はそのファイルからusesしたユニットで
扱うことはできないんですか?
0052デフォルトの名無しさんNGNG
>>51
似たような質問をしたら、自分で調べろと言われたよ!
0053デフォルトの名無しさんNGNG
>>51
ユニットの方でプロジェクトファイルを uses できないので使えない。

そもそもプロジェクトファイルだけがメインルーチンなのに、サブルーチン
に相当する *.pas のほうからアクセスするのは変。
0054デフォルトの名無しさんNGNG
そう。別にユニットを作って宣言すればいいだけの事だと思う。
0055デフォルトの名無しさんNGNG
>>52
超初心者という言葉に甘んじてしまいました。
軽率な行動を取らぬようにします。

>>53 >>54
そのように指摘していただくともっともな話だと思えます。
勉強になりました。どうもありがとうございました。
0056デフォルトの名無しさんNGNG
>>50
BringWindowToTopとかSetForeGroundWindowってDOS窓には使えへんの?
アクティブになる前にSleep(100)とか挟まないとうまくいかない
0057デフォルトの名無しさんNGNG
>>56
うまくいくならそれでいいじゃないか(・∀・)ニヤニヤ
0058デフォルトの名無しさんNGNG
------------------
これ以外にもレジストリの書き換えで Windows に DLL を開放させる
方法もありますが、この場合に DLL の開放処理が呼び出されるかどうか
は未確認です。方法は AlwaysUnloadDll をキーに google して見て
ください。
------------------
0059デフォルトの名無しさんNGNG
ttp://www.h3.dion.ne.jp/~tokky/p21.htm より。

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


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

ExitProc 変数は下位互換性のために残されています。かわりに finalization を使用してください。
ExitProc はパッケージと互換性がないので,かわりにユニットの finalization 部にコードを追加することをお勧めします。
DLL 内部では,かわりに DLLProc 変数を使用できます。
0062デフォルトの名無しさんNGNG
実際のサンプル
DLL のデバッグ時には、DLL にたいして「TD32 デバッグ情報を含める」をチェックすること

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

begin
DllProc := DllProcedure;
end.
0063デフォルトの名無しさんNGNG
nandaka DQNdousi no yaritorimiteru to tukarerune
0064デフォルトの名無しさんNGNG
>>63

ここに書き込みたくなる気持ちは分かるよなぁ
0065デフォルトの名無しさんNGNG
質問いいかな。
肛門ダイアログって実装できますか?
変な質問でごめんね
0066デフォルトの名無しさんNGNG
(;´Д`) ?
0067デフォルトの名無しさんNGNG
パスワードを*で表示するやつのことじゃない?
0068デフォルトの名無しさんNGNG
コモンダイアログですた。
0069デフォルトの名無しさんNGNG
ワロタ
0070デフォルトの名無しさんNGNG
>>65
米MSに就職してコモンダイアログを作って下さい。

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

肛門ダイアログの拡張のやり方なら別のスレへ。
0072デフォルトの名無しさんNGNG
超初心者のスレをみて DQNばっかしだというほうが おかしい。
0073デフォルトの名無しさんNGNG
>>72
某 ML の話だとおもわれ
0074デフォルトの名無しさんNGNG
メモ帳の色をしろ意外にして、字を大きく書くと字の周りに白い点々が
でて汚いのを直す方法を教えて下さい。
0075デフォルトの名無しさんNGNG
> メモ帳の色をしろ意外にして、字を大きく書くと

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

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

0077デフォルトの名無しさんNGNG
>>75
TMemoのことだと思われ
0078デフォルトの名無しさんNGNG
>>74
再現しない。ディスプレイを買い換えるといい。
0079デフォルトの名無しさんNGNG
>>78
「ディスプレイを買い換えるといい。」は
「ビデオカードを買い換えるとよい。」かな?

>>74
もしできるなら、問題と思うコントロールのキャプチャ画面をどこかにアップして
URL をここに貼りなさい
008043NGNG
>>76
そうですよね、DBCtrlGridでコーディングしている最中に
いかに使いにくいかがわかってきました。

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

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

貴重なご意見、本当にありがとうございました
0081デフォルトの名無しさんNGNG
Formが最小化、最大化状態の時に、
元に戻した位置(Left,Top)、サイズ(Width,Height)を知りたいんですが方法が分かりません。
どなたか教えてください。お願いします。
0082デフォルトの名無しさんNGNG
>>81
GetWindowPlacement っていうAPIがあるよ。
008381NGNG
ありがとうございます。
0084デフォルトの名無しさんNGNG
MDIの子フォームを常に最大化の状態にしておいて、最小化もサイズ変更も
できない状態(すなわち×しか使用できない状態)にするにはどうすればよいでしょうか。
以下のコードを書いて「サイズ変更」ボタンを使用不可にしようと試みたのですが、
使用不可になりませんでした。

procedure TfrmMain.FormActivate(Sender: TObject);
var
 Menus: HMENU;
begin
//システムメニューの「サイズ変更」を使用不可にしてみる
 Menus := GetSystemMenu(Handle, False);
 DeleteMenu(Menus, SC_RESTORE, MF_BYCOMMAND);
 DrawMenuBar(Handle);
end;
0085デフォルトの名無しさんNGNG
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));


最後灰色で塗っていますが、他の色で塗りつぶすにはどうしたらいいですか?
0086デフォルトの名無しさんNGNG
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;
0087デフォルトの名無しさんNGNG
>>86
ありがとうございました。
0088デフォルトの名無しさんNGNG
現在、D6Personalでいろいろ勉強中なのですが、
参考にAge2chのソースを見ているとなにやらConfig.Save;とかがありまして、、
なんか管理しやすそうな設定の保存の仕方をしているのですが、

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

ソースあるなら、それと同じようにするとよい、のでは?
0090デフォルトの名無しさんNGNG
すいません、言うの忘れてました。
ソースで
var Config: TAgeConfig;

この部分で何故TAgeConfig;と宣言できているのかわからんのです。。
_| ̄|○ |||
0091デフォルトの名無しさんNGNG
var
 Number: Integer;

の意味はわかるのか?
それとも TAgeConfig というクラスがどこで定義されているのかがわからない?
0092デフォルトの名無しさんNGNG
personalじゃ定義へ簡単にジャンプできねえからな。
0093デフォルトの名無しさんNGNG
>>91
あー、どこで定義されているのかわからないという感じかもしれません。
クラスとかが関係しているんですね、ヒントありがとうございます。もう一回調べてきます。
0094デフォルトの名無しさんNGNG
検索くらいはできるだろうに。
90 さんがどこで躓いているのかがわからないとなんともいえないな
0095デフォルトの名無しさんNGNG
UConfig.pas を見なさい。>>93

たぶん、いろいろ大事なことがまだ学習できていないのだと思いますが
ゆっくり学んでください。
0096デフォルトの名無しさんNGNG
>>94
いや、それがTAgeConfigで検索かけても見つからなかったんです。。
0097デフォルトの名無しさんNGNG
>>95
おぉぉ、ありがとうございます。まさしくそれっぽいです。
別のファイルに書かれていたのですね。。がんばります。
0098デフォルトの名無しさんNGNG
あとは main.pas の uses 節に UConfig とあることを見つければ、
分割コンパイルとユニット単位の名前空間の概念が身につくでしょう。
0099デフォルトの名無しさんNGNG
数字を0埋めしたいのですがどうしたらできますか?
7->07というように。
0100デフォルトの名無しさんNGNG
>>99

Str(i:2,S);
0101デフォルトの名無しさんNGNG
ファイル名変更にエディタボックスを使ってるのでファイル名に使えない文字は無効化しようと

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;

こんなことやってる漏れってバカかな。。_| ̄|○ |||
0102デフォルトの名無しさんNGNG
>>99
Format('%.4d', number)
で4桁分、0 で埋める。0007 0012 0345 1234 56789 という感じになる
0103デフォルトの名無しさんNGNG
>>101
良いのでは?目的を満たしているなら実装はどうやっても良いわけだし。趣味プログラマーならなおのこと。

ただその実装だと、コピー/ペーストしたときにチェックできないよ。
0104101NGNG
>>103
ガーン、コピペでできちゃうのか。。

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

検索してみても複数の文字を置き換えられるような関数ってないんですよね。。
0105デフォルトの名無しさんNGNG
>>101
俺だったら警告ダイアログ->再入力にするけどな。
入力内容を勝手に変更するのはよくない、と思ってるんで。
0106デフォルトの名無しさんNGNG
>>100さん、>>102さん、レスありがとうございます。
102さんのを探してたのですが、0埋めとかでもなかなか出てこなくて・・・
100さんのはシンプルですね。初めて見ました。
ただ、関数で値が返ってくるほうがうれしいので、102さんの使わせて貰います。
ありがとうございました。
0107ななしへたぐらま ◆XcB18Bks.Y NGNG
>>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;
0108101NGNG
>>107
うわぁ、なんかすごいですね。
一つ一つ勉強したいと思います。ありがとうございます。
0109デフォルトの名無しさんNGNG
今日、BorlandDelphiPersonal6.0をDLしたばかりなんですが、ヘルプに載っている
クイックスタートのトコのチュートリアルをやりながら勉強してるんです

さっそく詰まったんですが質問です・・
「1コンポーネントパレットの[Additional]ページにある ActionManager コンポーネントをダブルクリックして,」
↑
これが見当たらないんですがActionManagerはどこにあるんでしょう?
もしくは変わりになるモノありますか?

ヘルプの先頭にこんなの書かれちゃってたのでヤパーリ無理でしょうか・・?
「ここで取り上げている機能の一部は Delphi の Personal 版では使用できません。」
:・゜・(ノД‘)・゜・。
0110デフォルトの名無しさんNGNG
>>109
パレットの上にカーソル置いたら名前出るから総当りで探せ
Personalにもちゃんとあるから
0111デフォルトの名無しさんNGNG
別にこれを使わなくても十分アプリケーションは構築できる。
練習ならば、まずはメニューだけでツールバーなしで作ってみれ。

ちなみにメニューはTMainMenu[Standard]、ツールバーはTImageList+TToolBar[Win32]を使えば実現できる。
フローティングとか実行時編集とかそういう機能はないが、無ければ困るような機能でもないし。
0112デフォルトの名無しさんNGNG
ネタは他のスレでやってくれんか?
0113デフォルトの名無しさんNGNG
>>109
http://www.borland.co.jp/delphi/devsupport/d6issues.html

パレットで見つからない場合は
表示→コンポーネント一覧
で探すと良い
0114109NGNG
>>110
>>113
探したけど見当たらないです
http://upld.komugi.net/img/up169.jpg

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

>>112
超初心者用だったので_| ̄|○ガクッ
0115デフォルトの名無しさんNGNG
>>114
とりあえずヘルプなんかで覚えるより
http://kakinotane.s7.xrea.com/dirDelphi/mainmenu.html

ここで基本の大体のことは覚えられる。
0116デフォルトの名無しさんNGNG
ActionManager コンポーネントは、Delphi 6 Personal には含まれません。
0117うろ覚えNGNG
PersonalにはActionListしかないんじゃなかったっけ?
ActionManagerあるの?
0118デフォルトの名無しさんNGNG
だから「ネタ」だと…。
悪質だぞ>答えてるヤツ
0119109NGNG
>>115-116
了解です、すいませんでした

>>118
いや、ネタのつもりは全くないですが、スレ汚しすいませんでした
0120デフォルトの名無しさんNGNG
>>119
いや「答えてるヤツ」だと…。
0121101NGNG
>>107
EditChengeに
if SameText(Edit.Text,DeleteInvalidChars(Edit.Text))=False then
begin
ShowMessage('ファイル名に使えない文字が含まれていました。'+ Char(13) +
DeleteInvalidChars(Demo.Text) + 'に変更します。');
Edit.Text:=DeleteInvalidChars(Edit.Text);
end;

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

>>109
ブラクラじゃないから踏んでも大丈夫だよ
0123デフォルトの名無しさんNGNG
>>30 って意見もあるな
0124デフォルトの名無しさんNGNG
>>123
それ、オレ。
そーいや、既に書いてたんじゃないか(藁
0125125NGNG
コンポーネントのインストールができません。

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

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

0127125NGNG
>>126
いま読んでみましたが意味がさっぱりわからないのでコンポーネントの
作者さんに伺ってみようと思います。いいご回答ありがとうございました。
0128デフォルトの名無しさんNGNG
簡単なタブ型テキストエディタを作ろうと思うんですが、参考になるソースを
置いてるところを知りませんでしょうか?
0129デフォルトの名無しさんNGNG
>>128
 TSonEditを使えばいいんじゃ
0130デフォルトの名無しさんNGNG
>>128
タブ化の部分を参考に、ということだと勝手に解釈して
どっかにタブブラウザをDel6perで作るチュートリアルがあったはず。
ググってくれ。
0131デフォルトの名無しさんNGNG
>>128
SynEditのDemoの中に有ったと思う。
0132デフォルトの名無しさんNGNG
>>127
uses節にある DsgnIntfを削除して代わりに
DesignEditors, VCLEditors, RTLConsts を追加すれば
大抵の場合はうまくいくはず。

ヘルプにそう書いてあるはずなんだが・・・
0133128NGNG
アドバイスをくれた美奈さん、ありがとさんです。
これで何とかなりそうです。
0134デフォルトの名無しさんNGNG
 Delphiで作成されたブラウザ(2ちゃん専用はのぞく)ってどんなものがありますか?
0135デフォルトの名無しさんNGNG
Form1をTransparentColor,TransparentColorValueで透明にした時に、
Form1のParentをForm2のPanelなどに変えると、
透明で無くなってしまうのですが、
これを透明のままにする方法がありましたら教えてください。お願いします。
0136デフォルトの名無しさんNGNG
Delphiで作成されたブラウザ?
IEコンポーネント使ったやつ?
ActiveX使ったやつ?
Delphiなのに他にDLLがいるやつ?
0137デフォルトの名無しさんNGNG
>>135

Form1 はデフォルトの MainForm です。その親を Form2.Panel1 などにするアプリ
をつくってはいけません。
0138135NGNG
逆でした。
Form2を透明にした状態で変える場合でお願いします。
0139デフォルトの名無しさんNGNG
Webbrowserで表示されているTEXTAREAの文字を取得したいんですが、
出来ませんというか分かりません。
APIとかで出来るのでしょうか?教えてください。お願いします。
0140デフォルトの名無しさんNGNG
>>139
IEコンポスレへ行けといいたかったがあのスレずいぶん前に落ちていたんだな。
TWebBrowserコンポーネントのWebBrowser1があると仮定して、
text := WebBrowser1.Document.all.tags('textarea').item(n).innerText;
でTEXTAREA内の文字列を取得できる。
0141139NGNG
出来ました。ありがとうございます。
0142デフォルトの名無しさんNGNG
BitBltでマスク処理するときに、
検索したサイトではSRCERACE→SRCINVERTと書いてありましたが、
実際にやってみると変な色になってしまします。どうすればいいでしょうか。
0143デフォルトの名無しさんNGNG
BitBlt って DC から DC にイメージをコピーするものじゃないの?

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

見当違いなこと書いてたらごめん。
0144デフォルトの名無しさんNGNG
カッコイイツールバー用のアイコンてどっかにありませんかね
0145デフォルトの名無しさんNGNG
ImageList使ったほうが早い
0146デフォルトの名無しさんNGNG
フォームを透明にしておいて、Canvasで直接フォームに
字を書くと字の周りにフォームの元の色が出るんですが、
綺麗に書くにはどうすればいいですか?
0147デフォルトの名無しさんNGNG
試してないんですが DrawText API で書く場合は
SetBkMode(Canvas.Handle, TRANSPARENT); を呼び出してから書く、
TextOut, TextRect メソッドで書く場合は、Canvas.Brush.Style を
bsClear にして書いたらどうですか?
0148デフォルトの名無しさんNGNG
procedure TForm1.Button1Click(Sender: TObject);
begin
with Canvas do begin
Brush.Style := bsClear;
TextOut(10,10,'lkhnoihcw');
end;
end;

これでもダメ?
0149デフォルトの名無しさんNGNG
>>143さん、145さん、ありがとうございます。
park18.wakwak.com/~greenspace/dev-api/theapi/reference/bitblt.html
↑のサイトを見ると透過ができそうな気もするのですが・・・
他のDelphi系のサイトではImageList使ってました。
(´・ω・`)IL使います・・・。
0150デフォルトの名無しさんNGNG
{$R *.res}

非常に簡単な質問かと思いますが、、
これってresファイル全部を指定しているということですよね?
resファイル関係はこれ一つ書いておけば全部取り込んでくれるということですよね。
0151デフォルトの名無しさんNGNG
>>150
ヘルプでRESOURCEコンパイラ指令のところを読んでくらはい
0152デフォルトの名無しさんNGNG
>>150
自分で作ったリソース(例:アイコン)は自分で「取り込むように」指定する。
つーか、ソレに追加する形。
0153152NGNG
ちょっと勘違いするかもしれないので、訂正。
「自作リソースを取り込むように指定する箇所を自分で追加する」。
あああ、まだ何か勘違いされそう…。
ま、最終的には>>151
0154デフォルトの名無しさんNGNG
ヘルプより

記号 * は $R 指令では特別な意味を持ちます。これは,指令が現れるソース
コードファイルの基本名(拡張子を除いた部分)を表します。通常は,アプリ
ケーションのリソース(.RES)ファイルの名前はそのプロジェクト(.DPR)
ファイルと同じです。この場合,プロジェクトファイルに {$R *.RES} を指
定すると,対応するリソースファイルがアプリケーションにリンクされます。
同様に,フォーム(.DFM)ファイルの名前は通常そのユニット(.PAS)ファイ
ルと同じです。.PAS ファイルに {$R *.DFM} を指定すると,対応するフォーム
ファイルがアプリケーションにリンクされます。
0155デフォルトの名無しさんNGNG
ワイルドカードじゃなかったのか_| ̄|○
0156デフォルトの名無しさんNGNG
147,14さん、ありがとうございます。
bsClearにしているんですけど、文字サイズを大きくすると
文字の周りにフォームの色が出てきてしまいます。
リージョンなんて物を使って背景を透明にしてやると
うまくいくんですけど、フォームの移動とかをどうすればいいか
分からなくて、教えて君で済みません。
0157デフォルトの名無しさんNGNG
> リージョンなんて物を使って背景を透明にしてやると

リージョンと背景の透明化に何の関係が?
0158146NGNG
>>157
何でと言われても。。。。
色々ホームページを見てた時に、
リージョンを使ったフォームの作成の仕方
を解説してたとこがあって、その例題を元に
したので。
0159デフォルトの名無しさんNGNG
>>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;
0160146NGNG
>>159
ありがとうございます。
できました。
自分のと何が違うか見直します。
0161デフォルトの名無しさんNGNG
前スレの252です。
WebBrowserを使用したブラウザを作ってるんですが、新しいウインドを
開くリンクをクリックすると自分自身を立ち上げて、リンク先をブラウズできるようにしました。

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

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

どうすればいいんでしょうか?
ご教授よろしくお願いします。
0162デフォルトの名無しさんNGNG
どうでもいいことだけど最近よく見かける
ご教授じゃなくてご教示じゃないんか?
0163デフォルトの名無しさんNGNG
そーでもない
0164デフォルトの名無しさんNGNG
どっちゃでもええ
0165デフォルトの名無しさんNGNG
ご教示 の検索結果のうち 日本語のページ 約 55,100 件中 1 - 50 件目 (0.59 秒)
ご教授 の検索結果のうち 日本語のページ 約 86,200 件中 1 - 50 件目 (0.34 秒)

ご教授の勝ちです
0166デフォルトの名無しさんNGNG
procedureで引数無しで作るとき、どうすればいいのでしょうか?
0167デフォルトの名無しさんNGNG
procedure honwakapappahonwakapappadoraemon; でも
procedure honwakapappahonwakapappadoraemon(); でも
好きなようにすればいいよ。
0168デフォルトの名無しさんNGNG
>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
0169デフォルトの名無しさんNGNG
きょうじゅ けう― 【教授】

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


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


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

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


三省堂提供「大辞林 第二版」より
0170デフォルトの名無しさんNGNG
ソースを印刷すると procedure のeとか 欠けるんですが、どうしてでしょうか?
欠けないようにできないんでしょうか?
0171デフォルトの名無しさんNGNG
>>170
わけわからん?!
0172デフォルトの名無しさんNGNG
Delphiのソースを印刷すると なぜか
procedure
の 最後の eの部分が 欠けるというのだ。
印刷して確認してみてくれ。
0173デフォルトの名無しさんNGNG
>>172
それが人に物を頼む態度か?
0174デフォルトの名無しさんNGNG
>>173
あなたには頼んでいません。
0175デフォルトの名無しさんNGNG
意味が わからんのなら やってみてくれというだけだろ。

やっていなくて 意味がわかるはずもない。
0176デフォルトの名無しさんNGNG
>>170
フォントの設定がまずいんじゃないの?
ていうかsageれ。
0177161NGNG
>>168
ありがとうございます。解決しました。
ブラウザでTargetが効くようになりました。

ご教示ありがとうございました。
0178デフォルトの名無しさんNGNG
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)
0179デフォルトの名無しさんNGNG
>>176
印刷時の構文強調表示をオンにすると俺のところでも欠ける。
単なるバグだと思う。

>>174-175
アフォは放置で。
0180デフォルトの名無しさんNGNG
>>178
TabSheet := TTabSheet.Create(Self);
たぶんコレ
0181デフォルトの名無しさんNGNG
>178
TEmbeddedWBの場合は、このページの一番下に書いてある通り、
TEmbeddedWB.Create(nil);としてやらないと、その症状が出た気がする。
http://www.euromind.com/iedelphi/embeddedwb/tips.htm
それ以外が原因だと、俺には解らない。
0182デフォルトの名無しさんNGNG
フォームデザイナ上で今まではボタンなどを選択して、
上下左右の矢印キーを押せば移動していたのですが、
なぜか突然その方法では移動しなくなりました。

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

どうすれば元に戻りますか?
0183178NGNG
>>180-181 ありがとうございます。
nilでやってみたのですが変わりませんでした。
よくよく調べてみるとOnNewWindows2で同じことをして作ったページを
削除したときだけプログラム終了時に例外が出ることがわかりました。
(OnNewWindows2では>>178の最後のNavigateを>>168の ppDisp := に変えてある)
どう回避すればいいのでしょうか?
0184デフォルトの名無しさんNGNG
>>170
予約語を斜体にしてるから印刷時に末尾が切れるんじゃないの?
0185デフォルトの名無しさんNGNG
>>170, 1884
IDE のバージョンなんぼ?
0186178NGNG
PageControl1.ActivePage.Free;
の前に
PageControl1.ActivePage.PageControl := Nil;
してなかったからでした。WebBrowserに罪はなかったようです。
失礼しました。
0187デフォルトの名無しさんNGNG
>>179
やはりバグかな?
これって 古いバージョンからあると思うけど どう?
0188デフォルトの名無しさんNGNG
できれば IDE で選択しているフォント名、教えていただけますかいな。
あと IDE のバージョンも。
0189デフォルトの名無しさんNGNG
>>187
できればあげずに書き込めませんかね?
E-Mail 欄に sage と入れてください。
ttp://info.2ch.net/guide/faq.html#C1 にざっと目を通してください。
0190デフォルトの名無しさんNGNG
あげるのが好きなのに どうして さげないと いけないのか。
0191デフォルトの名無しさんNGNG
そう。じゃかってにどうぞ
0192デフォルトの名無しさんNGNG
何だかいちいちトゲのある言い方をしますね(^-^;
やれやれです(^-^;
0193デフォルトの名無しさんNGNG
>>182
Ctrl+矢印キーで移動、Shift+Ctrl+矢印キーでグリッドに沿って
移動、Shift+矢印キーでサイズ変更だったと思うけど。
0194デフォルトの名無しさんNGNG
Form1ウィンドウの右上にある三つのボタン[_□×]
最大化は必要ないので、これを[_×]にする方法を教えてくらさい。

Windowsに付属の「電卓」や「マインスイーパ」みたいに、
最大化ボタンを押せなくするだけならbiMaximizeプロパティで
できるとわかったのですが、
見た目カッコ悪いのでボタンを消してしまいたいのです。
0195194NGNG
書き忘れました。
Delphiのバージョンは6の無料版です。
0196デフォルトの名無しさんNGNG
>>194
不可能
0197デフォルトの名無しさんNGNG
>>195
bsDialog
0198デフォルトの名無しさんNGNG
bsDialog にすると最小化ボタンやコントロールメニューボックスも消えますよ。
まあ、絶対に不可能というわけじゃなさそうだけどかなり難しい。

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

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

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

描くだけでなくクリックしたときにへこむとかの応答も提供する必要がある。
さらに最小化のメニュー項目も消えるので自分で追加する必要がある。
0199デフォルトの名無しさんNGNG
逆に、最大化を押しても何も起こらないようにするとか・・。
まぁ、わしのスキルでは出来るかどうかもワカランが。
0200デフォルトの名無しさんNGNG
質問しようと思ったけど>>4とほぼ同じだった。
>>4、>>6、有り難う。

>>195
「何処までそれにこだわるか」だと思います。
デザインに凝りたいのなら、自分で描くしかないのでは?
0201デフォルトの名無しさんNGNG
>>195
フォームをbsNoneにする。
パネルをAlign=alTopに設定して、Width=45、Align=alRightに設定したツールバーを
パネルに貼りつけて、ツールバーを右クリックしてボタンを2つ作り、
左でApplication.Minimize、右でCloseを実行させるようにすれば、あとはなんとかなるぞ。
0202デフォルトの名無しさんNGNG
おまけ。
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;
0203デフォルトの名無しさんNGNG
>>202
aterollBrowser.Handle??
0204デフォルトの名無しさんNGNG
どなたか>>182に答えてくださると嬉しい感じです。
0205デフォルトの名無しさんNGNG
しまった間違えた。
SendMessage(Fram1.Handle, WM_NCLBUTTONDOWN, HTCAPTION,0);
0206デフォルトの名無しさんNGNG
>>204
>>(182 + 204) div 2
0207デフォルトの名無しさんNGNG
ヽ(`Д´)ノ ウワァァァン
SendMessage(Form1.Handle, WM_NCLBUTTONDOWN, HTCAPTION,0);
0208194NGNG
>>196-203
どうもありがとうございます。
どっかのプロパティ(visibleとか?)を例えばFalseにするだけで
消えてくれるもんだと思ってましたが、なんか大変そうですね。
超初心者の私には無理そうですので、今回はあきらめます。
0209デフォルトの名無しさんNGNG
>>207
ワロタ
0210デフォルトの名無しさんNGNG
>>206
Σ(゚Д゚ )オオッ
0211デフォルトの名無しさんNGNG
>>204
よくわからんが [ツール | エディタ オプション] あたりの設定じゃない?
0212204NGNG
>>193
>>206
矢印キー押しただけでボタンとか移動できてたのは錯覚ですか(;´Д`)ノ?

>>211
なんかそこ見ても設定できなくて(´・ω・`)
0213デフォルトの名無しさんNGNG
>>212
俺の環境だと矢印キーでコントロール間をフォーカスが「移動」するし、
Ctrl+矢印だとコントロール自体が「移動」するよ。Delphiではこれが普通の動作のはず。
何か別のアプリと混同してるんじゃないの?
0214204NGNG
なんかそう言われるとすごいそんな気がしてきました(;´Д`)
どうも勘違いだったっぽいです。
お騒がせしました。

元に戻そうとして3時間くらい格闘したのに。。_| ̄|○
0215デフォルトの名無しさんNGNG
教えてください。
D6パーソナルで、Memcheckを使うと、
Formに何もない状態でも5回と出るんですが、
5回より増えないようにすればいい。って事ですか?
0216デフォルトの名無しさんNGNG
MemCheck の使い方を間違えている。ってやつだと思う。

メモリリークがあると、MemCheck で見つけられるが
MemCheck がレポートしたからといって、それがメモリリークであるとは限らない。
0217デフォルトの名無しさんNGNG
ちゃんと <project>.dpr に MemCheck のコードを入れましたか?>> 215
0218デフォルトの名無しさんNGNG
>>215
.dprでMemCheckをusesして、プロジェクトオプションの
ディレクトリ/条件タブの条件定義に<MemCheckStackTrace>を追加(括弧はいらない)。
リンカタブのTD32デバッグ情報を含めるにチェック。
コンパイラタブのスタックフレームの生成をチェック。
こんな感じだったかのぅ。
0219215NGNG
新規プロジェクトで
>218と同じにしてやってみましたが5回と出ます。
何かまだ設定が足りないんでしょうか?
他のD6パーソナルの人は出ないのかな?
0220デフォルトの名無しさんNGNG
>>216
アフォ?
0221デフォルトの名無しさんNGNG
>5回より増えないようにすればいい。って事ですか?
とりあえず、これでよいと思うよ。

で、D6 のアップデートは当ててありますか?
0222デフォルトの名無しさんNGNG
>>215
>>218と同じ条件にしてやってみたけど1つもレポート出ないよ。
Del6per+up2+rtl3
0223デフォルトの名無しさんNGNG
おそらく >>215 はアップデートを当てていない。
0224215NGNG
http://www.borland.co.jp/delphi/del6up.html
ここに書いてあるものは
やってるつもりなんですが、後でやり直してみます。
ありがとうございました。
0225デフォルトの名無しさんNGNG
>>224
ガンガレ
0226デフォルトの名無しさんNGNG
>>216
メモリリークでは無い場合のレポートを見せて頂けませんか?
0227デフォルトの名無しさんNGNG
例外処理の利点と欠点について教えてください。
たとえば、自分でとある関数を作ったとして、その関数の処理に失敗した場合、
raiseで例外を生成する場合と、WinAPIっぽく関数の戻り値にエラーを示す値を返す方法とでは、
どうメリット、デメリットがあるかがよくわからない。
0228デフォルトの名無しさんNGNG
もっと質問しぼります。
関数でエラー値戻す方法よりも、例外生成ほうが何かメリットがあるんでしょうか?
0229デフォルトの名無しさんNGNG
例外生成→使用時にtryで捕獲
関数の戻り値にエラー値→ifで処理

違ってたらマターリする
0230デフォルトの名無しさんNGNG
今気づいたんだけど、MainMenuで
「ツール」って項目設けたらデフォのNameが「ool1」になった
もしかして俺のDelphi壊れてる?
0231デフォルトの名無しさんNGNG
気にすんな
漏れのDelphiは右クリックメニューとかの各Captionが''だったりするけどがんがって使ってる
0232デフォルトの名無しさんNGNG
気にした方が(藁
0233デフォルトの名無しさんNGNG
例外を出せば 例外を出した時点でメッセージを用意しておける。
呼び出した側ではしらんかおしておけばいい。
0234デフォルトの名無しさんNGNG
教えてください。

Panel上にドッキングするコントロールが3つあって、
┌┬─┐
│├─┤
││  │
└┴─┘
↑のように3つドッキングしてる状態を記憶させるには、
iniファイルにどう書けばいいですか?
0235デフォルトの名無しさんNGNG
┌┬─┐ ←B
│├─┤
││  │ ←C
└┴─┘
 ↑A
だとしたら、
1.設定ロード前に全コントロールのAlignをNone
2.最初にAのコントロールをLeftにする
3.BのコントロールをTopにする
4.CのコントロールをClientにする

覚えさせておくのは、各コントロールの設定状態と、設定する順序だ。
0236234NGNG
順序ってどうやるとわかるのかが分かりませんが、
何か色々やってみます。ありがとうございました。
0237デフォルトの名無しさんNGNG
すみません質問です。
フォームに配置したコントロールのヒントを非アクティブ状態でも表示したいのですが、
その方法がわかりません。
調べると、SetFocusというメソッドを見つけたんですけど、どうもこれは違うようですし。

他のアプリケーションに隠れた状態でもヒントを表示させる事は可能なんでしょうか?
0238デフォルトの名無しさんNGNG
どうしてそうしたいのか、よく分からんが。
質問者は「これこれこーゆーことがしたいので、こーなりませんか?」って
書くと代替案が出るかも。
ちょっとソレはナニだと思う>>237
0239デフォルトの名無しさんNGNG
>>237
THintWindow のインスタンスを自分で作成して、そいつをコードで
適当な場所に表示させるというのはどうですか?
0240デフォルトの名無しさんNGNG
>>237の質問を見た感じでは恐らく>>239が何を言ってるのかが解からないと思う。
0241デフォルトの名無しさんNGNG
>>239

どのタイミングでどこに表示するの?
0242デフォルトの名無しさんNGNG
>>239が何を言ってるのかが解からないと思う。

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

1.どのタイミングで?
2.どこに表示?
3.Enabled が true のときは、本来のヒントとかち合わないの?
0243デフォルトの名無しさんNGNG
あるアプリケーションを作成していて、
「何秒後にフォームを閉じたい」とか、「何分ごとに文字を表示させる」とか、
それぞれ時間の異なるタイマーイベントを複数用意しなければいけなくなりました。
時間は正確ではなくていいのですが、たくさんのタイマーを動かすのも
悪いかなと思い、例えば2秒間隔でイベントを発生させるタイマーを一つだけ用意し、
なんとかまとめて処理できないかなと思っています。

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

3つ、4つ動かすくらいなら平気でしょ。ややこしいこと考えずにタイマつかっとけよ。
0245デフォルトの名無しさんNGNG
>>244
ユーザの操作によるんですが、可能性としては5−6個動くことがあるので、
一つにしたいなぁぁぁと・・・

どのぐらいまで可能なんですかね。
0246デフォルトの名無しさんNGNG
簡単な処理なら、100個のタイマーを同時に使っても、問題無かったよ。
0247デフォルトの名無しさんNGNG
>>246
NT 系列の OS ならね。ってはなしでは?
98 でも事実上、無制限に近かったとも思ったが..
0248デフォルトの名無しさんNGNG
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);
というコメントがありました。どこで開放すればいいのでしょうか?
0249デフォルトの名無しさんNGNG
100個もいけるんですか!!??じゃあ、問題ないですねぇぇ。

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

をTListにポインタで格納して、定期的にTListに登録された
メソッドを実行するClassを作成中でした。
大丈夫なら、こんなの作る必要ないか・・・・
0250デフォルトの名無しさんNGNG
>>248
開放しない。が正解。
0251デフォルトの名無しさんNGNG
ちょいと質問させてください..

LABELで出力した文字列を選択、コピーできるようにする方法はあるのでしょうか?
もしくはLABEL以外の何かを使わないといけないでしょうか?
0252デフォルトの名無しさんNGNG
TLabel は選択もコピーもできないと思ったが..
TEdit と間違えているのかな?
0253デフォルトの名無しさんNGNG
>>243
大麻やりまくっちゃえよー
0254デフォルトの名無しさんNGNG
>>252
だから、それを可能にさせる方法ってことでは?

>>251
TLabel では出来ないが、TEdit の Color と BorderStyle を弄れば同じモノが作れる
0255デフォルトの名無しさんNGNG
あ、後 ReadOnly もか
0256デフォルトの名無しさんNGNG
TLabelに右クリックつけてコピーって出せば







あふぉ
0257248NGNG
>>250
リークはしていないと理解していいのでしょうか?
0258デフォルトの名無しさんNGNG
>>257
MemCheckってDel7でもいける?
0259デフォルトの名無しさんNGNG
無害なリーク。
または
(メモリリークの定義にもよるが)リークしていない。

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

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

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

もちろん、プロセスをまたがるリソースや、OS が開放してくれないリソースはこの限りではないので
状況に応じて判断すること。
0260デフォルトの名無しさんNGNG
>>258
D7 でもいけるけど、元からパッケージに対応していないので、俺は捨てた。
0261248NGNG
>>259
えーと、>>248のは必ず開放されるということで。ありがとうございました。

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

とか、「あっちのスレッドで質問しろ!」とかでもいいです。
(その場合、あっちがどこなのか教えてください)
0263デフォルトの名無しさんNGNG
どのイベントで設定保存してる?
0264デフォルトの名無しさんNGNG
closeと見た。
そーだったら、デストローイに変えてみる。
違ったら↓
0265デフォルトの名無しさんNGNG
あなご自力で捕まえる
0266デフォルトの名無しさんNGNG
マルチ

ttp://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200404/04040053.txt
0267デフォルトの名無しさんNGNG
>>264
ふつーonCloseQueryじゃねーの?
0268デフォルトの名無しさんNGNG
>>261
これ便利かも。こういうのがあるって知らなかった。
他にも、こういうチェッカーみたいなのありますか?
0269デフォルトの名無しさんNGNG
>>262
プロセスタブからならTerminateProcessされるからメッセージもなしに問答無用で終了。

デストラクタも呼び出されないのでリソースリークが発生したりするから凍った時以外はその方法で終了させるのは論外。
あくまでも非常手段。
0270デフォルトの名無しさんNGNG
MemCheckしたら、なんかいっぱいでてきた・・・
自分でFree等のし忘れはないみたいだけど、
種類とサイズとバイナリしか表示されてなくて、
どのファイルでリークしてるか表示されない・・・

これじゃ対処のしようがないし、解放されるはず
のリークかどうか判断できないよ
かなーり心配 ウワワワワン
0271デフォルトの名無しさんNGNG
>>270
VCL のバグもみつけるには Debug DCU を使う。をチェック。
リンカー設定で TD32 デバッグ情報をつける。をチェックしたか?
そうすれば、ソースがあるコードなら行番号まで出てくるはずだ。
0272デフォルトの名無しさんNGNG
>解放されるはずのリークかどうか判断できないよ
良性か悪性かの判断の(ひとつの)目安。

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

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

6. 最後によく考える。

あまりにも多くの未開放メモリがレポートされた場合は、本質的なバグを持っていると
判断するか、または手順をもう少し簡単にすること。
0273デフォルトの名無しさんNGNG
>>271-272
272さんの方法ですと、行った動作に対して数と量は変化ないです。
そしたら良性かなぁ。
TreeItem.Dataに確保したメモリのポインタを入れて、OnDeletionで
Disposeしてるんだけど、その確保したメモリはごっそりリークとして
判断されてしまうらしいでつ。
でも、なんか心配だなぁ。


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

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

ここでもたびたび話題になる例のやつではありませんか?
Dispose() するとき、ちゃんと New() したときのポインタ型にキャストしてますか?
0275デフォルトの名無しさんNGNG
>>274
うわっ まさにそれだ・・・ガックシ
でも理由がわかってよかったありがとう・・・
さっそくキャストして調査してみます。

TBitMap、自作Createしたモーダルフォームあたりでも
発生しているみたいだけど、これも何かやり忘れてるのかな。
調べてみます。
0276デフォルトの名無しさんNGNG
>>275
それが問題なのだとしたら、New/Dispose の組み合わせを呼ぶ数が異なるような
テストケースを考えて、272 みたいに呼び出し数が変わるようにしてチェックしてみたら?

New/Dispose の組み合わせが定数回しか呼ばれないなら、それは良性のメモリ未開放。
けど、直せるのであれば直したほうが良い。
0277デフォルトの名無しさんNGNG
> けど、直せるのであれば直したほうが良い。

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

良性とかいっても、悪性じゃない、という意味であり、
メモリ未開放が良性であるはずがないよね
0278デフォルトの名無しさんNGNG
>>269
えー!そーなのー!_| ̄|○
うすうすは気づいていだんだけど・・・(問答無用か・・・)
じゃぁどうすることもできないのかぁ・・・(諦め)
CreateProcess使ってwait・・・で待とうと思ってたんだけど意味ないか・・。
どーもでーす!
0279>>269NGNG
あ、ちょと待った。
アプリAから
CreateProcessでアプリBを起動して
WaitForSingleObjectで待って
プロセスタブでアプリBを終了させたら
WaitForSingleObjectを抜けてきた!
これで終了されたか判断できそーだ。
気持ちやりたい事とは違うけど、応用すればなんとかなるかも。
269さんありがとう。
0280251NGNG
>>254
どもです、やってみたらそれらしいものが出来ました。
しかし..複数行にわたる場合がどうも上手くいかんのですが、どうにかならんもんでしょうか?
一応いろいろやってみます..
0281デフォルトの名無しさんNGNG
>>280
Memoを使えばできるよ。
詳しくはOpenJaneのソースの設定画面ちょこちょこ覗いてみればわかるかも
0282デフォルトの名無しさんNGNG
ウィンドウを持たないアプリでWindowsの終了を感知する方法って何かご存じですか?
0283デフォルトの名無しさんNGNG
TTimerのように表示しない窓ハンドルを持たせたら?
0284デフォルトの名無しさんNGNG
> TTimerのように表示しない窓ハンドルを持たせたら?

メッセージループが必要になるけどね。
0285デフォルトの名無しさんNGNG
おー、なるほど!俺ってアホっすね。
それだとそーですね、ループ必要っすね。
あー、でもexeのサイズが・・・
・CPUに負担かけずに
・exeのサイズは小さく
が条件でして・・・ちょっとやってみます。
0286デフォルトの名無しさんNGNG
別に
>・CPUに負担かけずに
>・exeのサイズは小さく
この条件と照らし合わせてもなんの問題もないように思うのは漏れだけ?
0287デフォルトの名無しさんNGNG
Var
 S: Array Of String;
begin
 SetLength(S,2);
 SetLength(S,1);
 S[1] := '';
end;

これでエラーにならないのは何故ですか?
SetLength(S,2) が無ければ Invalid pointer operation になるんですが…
妙な動作なので不安です…
0288デフォルトの名無しさんNGNG
むしろなんでエラーになると思うのかを聞きたい。
SetLength(S,2);
をコメントアウトしてもエラーにならなかったよ?
0289デフォルトの名無しさんNGNG
>>288
え?だって SetLength(S,1) とやれば 存在する要素は 0 番目だけじゃないですか?
あと SetLength(S,2) の件も改めて試してみましたがエラー出ました。
0290デフォルトの名無しさんNGNG
string型について調べてみな。
0291デフォルトの名無しさんNGNG
String 型についても調べていますが、 String 型でなくても出ます。

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

でも同様に出ました。
0292デフォルトの名無しさんNGNG
すみません Array Of Char では出ませんでした。
0293デフォルトの名無しさんNGNG
>>289
>え?だって SetLength(S,1) とやれば 存在する要素は 0 番目だけじゃないですか?

じゃあ「SetLength(S,0)」とやったらどうなると思うんだい?
0294デフォルトの名無しさんNGNG
うあ、間違えた
Array Of Integer では Array Of String と同じでエラーにならず、
SetLength(i,2) を消すとエラーになり、
Array Of Char だとSetLength(C,2) を消してもエラーになりませんでした。
0295デフォルトの名無しさんNGNG
>>293
要素を1つももたない配列になるのでは?
0296デフォルトの名無しさんNGNG
昔のString型は0番目の要素が文字列の長さを表していたが
最近のStringの0番目の要素には#0が入ってたような気がする
だから結局Stringに格納される文字列は1番目の要素から始まるんじゃない?
0297デフォルトの名無しさんNGNG
おいおい、質問者の質問の意図を
よく理解してないヤツは答えなくて良いよ。
0298デフォルトの名無しさんNGNG
>最近のStringの0番目の要素には#0が入ってたような気がする

文字列の開始アドレスが入ってるんじゃないの?
0299287NGNG
えー、どうも行き違いがあるような・・・
やってることは
文字列型に SetLength して長さを弄っているのでは無くて
文字列の配列に SetLength して要素数を弄っているのですが。
0300296NGNG
あー、スマソ。
俺勘違い。
0301296NGNG
失礼のお詫びに俺でわかるだけのことはしてみた。

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

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

なのでS[x]:=''の時は実際に参照が行われないからなんじゃない?
0302287NGNG
>>301
なるほど、どうもありがとう御座います…といって完結したかったのですが、うちの環境だと

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

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

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

だとエラーになります
もう、何がなんだか…
0303デフォルトの名無しさんNGNG
Var
 S: Array Of String;
begin
 SetLength(S,2);
 ShowMessage(IntToHex(Integer(@S),8));
 SetLength(S,1);
 S[1] := 'ああああ';
end;

これだとエラーが出ない。ShowMessageを//するとエラーが出る。
0304デフォルトの名無しさんNGNG
>>287
SetLength(S,1);S[1]:='';の動作は不定なので妙な動作になるのは当然。
{$R+}付ければ例外発生するし。

---------------------------
デバッガ例外が発生
---------------------------
プロジェクト Project1.exe が ERangeError クラスの例外を生成しました。
'Range check error'
プロセスは停止しています。再開するにはステップ実行または実行を選択してください。
---------------------------
OK ヘルプ(H)
---------------------------
0305287NGNG
>>304
範囲チェック有りででエラー出ました。
そういうものだったんですか、どうもありがとう御座います。
お騒がせしました。
0306デフォルトの名無しさんNGNG
明示的に領域が確保されてないから勝手に格納される(参照不可能)んだと思ってたけど違ってたみたいね
ありが�d
0307デフォルトの名無しさんNGNG
(・♂・) ユースケ・キンタマリアですが、何か?
0308デフォルトの名無しさんNGNG
MXMoniter(http://www3.to/mxmonitor/)的なものをDelphiで作ってみたいのですが
他のアプリを絡めてモノを作った経験がありません。どのような勉強が必要でしょうか?
お勧めの本やサイトがあったら教えてください。
0309デフォルトの名無しさんNGNG
「他のアプリを絡めてモノを作った経験」
は
「他のアプリを絡めるモノを作った経験」
の間違いかな?

普通のアプリは作れるの?
0310308NGNG
簡単なテキストエディタやブラウザのようなものを作った経験はあります。
超初心者向けのサイトなどだとそこらへんの段階で一段楽してしまっているところが多く
他のアプリとの絡みに関してわかりやすく解説されているサイトがちょっと見当たらなかったもので・・・
もしご存知でしたら教えてください よろしくお願いします。
0311デフォルトの名無しさんNGNG
Delphiとはあまり関係無いのでは?
必要なのは Windows Programming の知識でしょ。
WIN32APIのスレとかを過去ログから漁ったりした方が
知識を得られると思うけど。
0312デフォルトの名無しさんNGNG
他人のアプリ(ソースコードが無いアプリ)を、アプリの外から操作する。
ということだ。対象アプリが外部コントロールを許しているかどうかから調査を
はじめないと。WinMX のことは良く知らんが、多分 OLE AUtomation なんて機能は無いだろう。

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

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

けして初心者向きでは無いし、作るなら根気が必要。
0313デフォルトの名無しさんNGNG
Halbow の負の遺産として
「他のアプリのウィンドウ情報の取得 」
ttp://homepage2.nifty.com/Mr_XRAY/Halbow/VCL08.html

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

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

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

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

そなの?
ListView の Items の内容は、コントロールキャプションじゃないけど取れるの?
0315デフォルトの名無しさんNGNG
他プロセスの作ったウィンドウ情報は文字列だけじゃないし
0316デフォルトの名無しさんNGNG
そうだね。ヘッダーの幅だとかヘッダーテキストの配置だとか、レコード型を
通してしか取得できないものは共有メモリつかうしかないでしょう。
0317デフォルトの名無しさんNGNG
313は共有メモリを使わずにあの内容と同じことができるのか?
0318デフォルトの名無しさんNGNG
無理
0319デフォルトの名無しさんNGNG
>>313

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

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

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

なんか、313 の勘違いじゃないの。
0320デフォルトの名無しさんNGNG
> Delphiとはあまり関係無いのでは?
> 必要なのは Windows Programming の知識でしょ。

おもしろい。
Delphi だと Windows Programming の知識はあまり必要じゃない、ってことかしら?
Delphi は Windows 以外のプラットフォームのアプリはつくれないのに?
0321晒しあげNGNG
Delphi は Windows 以外のプラットフォームのアプリはつくれないのに?
Delphi は Windows 以外のプラットフォームのアプリはつくれないのに?
Delphi は Windows 以外のプラットフォームのアプリはつくれないのに?
Delphi は Windows 以外のプラットフォームのアプリはつくれないのに?
Delphi は Windows 以外のプラットフォームのアプリはつくれないのに?
0322デフォルトの名無しさんNGNG
Delphi は Windows 以外のプラットフォームのアプリをつくれるの?
Kylix とかいうんじゃないだろね。
0323晒しあげNGNG
Delphiは言語名ですよw
0324デフォルトの名無しさんNGNG
> Delphiは言語名ですよw

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

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

おもしろいね。
0325デフォルトの名無しさんNGNG
晒しさげ

Delphiは言語名ですよw
Delphiは言語名ですよw
Delphiは言語名ですよw
Delphiは言語名ですよw
Delphiは言語名ですよw
Delphiは言語名ですよw
Delphiは言語名ですよw
Delphiは言語名ですよw
Delphiは言語名ですよw
0326デフォルトの名無しさんNGNG
>>324
http://www.borland.co.jp/kylix/kx3/fact01.html

> C/C++言語とDelphiTM言語の 自由な選択
>
> Borland Kylix 3は、ANSI/ISO標準規格の C++と
> 弊社独自規格の Delphiの二つの言語による
> プログラミングを可能にします。
0327デフォルトの名無しさんNGNG
ボーランド自らDelphiは言語だと言っている。
さあ後がなくなったぞw
0328デフォルトの名無しさんNGNG
>Delphi だと Windows Programming の知識はあまり必要じゃない
誰がこう言ってるのかわからないので、レス番指定してもらえますか?
0329デフォルトの名無しさんNGNG
Delphiが言語名になったのは、Delphi6 くらいからだろ、たしか。
Delphi5以下では Object Pascal だよね。

絶滅寸前の Kylix ユーザも「自分は Delphi つかい」とか思ってるんだろうか。w
0330デフォルトの名無しさんNGNG
>>328

誰もいってないと思うよ。
0331デフォルトの名無しさんNGNG
>>330 ですよね。
>>320がなに言ってるかさっぱりわかりません。

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

               ,i`'ー‐'\
          ,.-∠,,,、 `' /~‐-、,
     ._  ,/ ,,.-''",、=-,`'ー-、 \
    /  ``'_」``ヽー‐'i''ー-<''ー'',.r'"<-‐''"'、
   ./ /``''7ー--、\ `''‐-"/,,....-┬'''"'、 '、
   ./ /   .| i''ー-、,,,,ヽ ̄ ̄/,,,...,,,、、 |   .'、 '、
  / /  r、|. ヽ、,_●ノ    ヽ、,_●ノ |/i  '、 '、
 ./ /   ,,ヽ`ヽ、,,___,/-,-,-\,___,,,.-'",ノ_  .'、 '、
 ヽ,/_   >、        ,/ .ヽ、     ,イ    '、,,..ゝ
    .`''ー-| `'ー--‐‐'',,.--、_`'ー--‐''" |,,.-‐''"
        └───、 '"    `'.,r──‐┘ 
0332デフォルトの名無しさんNGNG
>>329
> Delphi5以下では Object Pascal だよね。
そもそも、それはObject Pascalだったわけじゃなく、
単に名前が間違っていただけだし。

http://pcweb.mycom.co.jp/news/2002/08/08/05.html
> もともとDelphi言語と呼ぶつもりだったのが、
> Delphi 1のドキュメントで何故かObject Pascalという名前が出てしまった。
> 今回の製品を機会に、この"歴史的な間違い"を正しい名前に戻した」とも述べる。
0333デフォルトの名無しさんNGNG
いきさつはともかく、ヘルプにも「Object Pascal 言語ガイド」っていうのがあるし。
0334デフォルトの名無しさんNGNG
>>311 を素直に読むと、「Delphi」と「Windows Programming の知識」は
あまり関係がない、ということだよね。

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

はぁー、リストボックスもツリービューも共有メモリもレジストリも
あまり関係なしですか?
0335デフォルトの名無しさんNGNG
Object PascalじゃないのにObject Pascalだなんて詐欺ですね。
0336デフォルトの名無しさんNGNG
>はぁー、リストボックスもツリービューも共有メモリもレジストリも
>あまり関係なしですか?

共有メモリ以外はVCLでラップされてんじゃないの?
VCL内部でWin32コールさせた方が、Kylixしやすいと思うが。
0337デフォルトの名無しさんNGNG
>>331
>>320がなに言ってるかさっぱりわかりません。

疑問文でしょ。誰も答えないが。
0338デフォルトの名無しさんNGNG
ボーランドが「ほんとは最初からdelphi言語って名付けるつもりだったんだ」って
今になってわめいているという可能性はないの?

別にボーランドを非難している訳じゃないけど、間違ったのなら2からでも
改めそうな気がしたんで。
0339デフォルトの名無しさんNGNG
>>336
VCLはライブラリでしょ。言語じゃないよ。
0340デフォルトの名無しさんNGNG
>>338
わめいてはいないけど、「実はさぁ」といいわけがましいのは事実。
0341デフォルトの名無しさんNGNG
>>340
なるほど。ボーランドも大変ですね。
どうもありがとう。
0342デフォルトの名無しさんNGNG
Wirth 先生やその取り巻きが、Turbo Pascal までは許せたけど、OOP を
導入した以降の 「Object Pascal」 に Pascal という名前を使ってほしくない
とか文句言ったそうで。Oberon とかの関連もあって。Wirth 先生は Turbo Pascal
には論文で言及するけど、Delphi は完全無視だよ。
0343デフォルトの名無しさんNGNG
TListViewで個々のセルに対してフォント色等を設定したいのですが、
関連するようなプロパティやメソッドがヘルプにないということはできない
ということですよね?

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

0344デフォルトの名無しさんNGNG
TStringGrid か TDrawGrid だと
0345デフォルトの名無しさんNGNG
>>343
やったことないけど、オーナードローでできないかな?
0346デフォルトの名無しさんNGNG
> TListViewで個々のセルに対してフォント色等を設定したいのですが、

の質問に

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

とかは、はまりますよね?
0347デフォルトの名無しさんNGNG
なんか粘着してるな。
VCLの利用法はDelphiの知識の範疇に入ると思うけど。
0348デフォルトの名無しさんNGNG
> VCLの利用法はDelphiの知識の範疇に入ると思うけど。

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

347は311のコメントをどう思ってる?
0349デフォルトの名無しさんNGNG
>>281
ありがとぉ〜今からやてきます
0350デフォルトの名無しさんNGNG
「Delphiは言語名ですよw」 ってのはどうなった?
0351デフォルトの名無しさんNGNG
>>348
>347は311のコメントをどう思ってる?
いちいち気にしてない。じゃないかな。

さてつぎいきましょ。
0352デフォルトの名無しさんNGNG
>>343
TListViewのOnCustomDrawItem辺りに
if Item.Caption='ぬるぽ' then Sender.Canvas.Font.Color:=clBlue;
とか入れてみ
0353デフォルトの名無しさんNGNG
> TListViewで個々のセルに対してフォント色等を設定したいのですが

結構面倒なので、セルとかとして使うんなら、すなおに TStringGrid にする
0354デフォルトの名無しさんNGNG
ボーランド社特有の問題というかなんというか
delphi7トライアルをダウソしてインストールしたんですけど、
その後の登録が上手くいきません。
delphi7を起動し、登録サイトにジャンプしてログインしてもログインできないし、
キーやらレジトリなんちゃらなど、どれがどれでいったい何を登録しろというのか
送られてきたメールはいったいなんのためにあるのか
初心者にとって全くもって理解しがたいプロシージャを要求しすぎだと思います。
ボーランド社特有のアクセシビリティの悪さはみなさん問題なくクリアされているのでせうか。
0355デフォルトの名無しさんNGNG
>>350
ボーランド自らDelphiは言語ですと言い切っている
ソースを出されてあっさり終了。
0356デフォルトの名無しさんNGNG
ObjectPascalは、Del7からDelphi言語と改称。
0357デフォルトの名無しさんNGNG
「delphi7を起動し、登録サイトにジャンプしてログイン」
そんなこと要求されたっけ?
大体ダウンロードするときにキー送付のためのユーザー登録をしているはず。

多分、難しく考えているだけだと思うけどね。
0358デフォルトの名無しさんNGNG
もともとDelphi言語と呼ぶつもりだったのが、
Delphi 1のドキュメントで何故かObject Pascalという名前が出てしまった。
0359デフォルトの名無しさんNGNG
>>357
なにが悪いのかまったくわからず、
しかも登録失敗とかログインできませんとかで
結局、書籍付録の6パーソナルで済ましました。
0360デフォルトの名無しさんNGNG
> ボーランド自らDelphiは言語ですと言い切っている

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

Delphi が言語になって2年だろ。開発環境の名前としては、9年だよ。
Delphi と言ったら、普通は、間髪環境のことだろ。
0361デフォルトの名無しさんNGNG
× 間髪環境
○ 開発環境
0362デフォルトの名無しさんNGNG
> ボーランド自らDelphiは言語ですと言い切っている

ボーランドのHPより

Delphiは、ビジュアル開発による生産性とネイティブコードによる高速性を
両立させたWindows用ビジュアル開発ツールです。
0363デフォルトの名無しさんNGNG
仕様許諾コードを取得するプログラムは、
キチンと動いてないらしいという話が、
前スレかどっかであったよ。
0364デフォルトの名無しさんNGNG
仕様許諾コードを取得させたくないんだよ、きっと。

プログラム開発環境だか言語だか知らないけど、その製品の会社が作った
「仕様許諾コードを取得するプログラム」がまともに動かないのは
お笑いだよな。
0365デフォルトの名無しさんNGNG
ん、仕様許諾? 使用許諾だよね
0366363NGNG
プログラムの不備と言う記述はなかったや、ごめんよ。
レジストサーバーが死んでるんじゃないか、と言う話だった。
0367デフォルトの名無しさんNGNG
われながら程度の低い質問だと思うのですが、
程度が低すぎるせいかヘルプを見てもgoogle検索してもひっかかりません。

Extended型をinteger型に変換するにはどうしたらよいのでしょうか?
普通の型キャスト
integer(Extended);
では「正しくない型キャスト」といわれてしまいます。
0368デフォルトの名無しさんNGNG
Round(), Tranc()
0369デフォルトの名無しさんNGNG
×Tranc
○Trunc
0370デフォルトの名無しさんNGNG
>>367
用途によって違う
Trunc, Floor, Ceil, Round
0371367NGNG
>>368-370
ありがとうございます。
Truncで無事解決できました。
ほんと低レベルな質問で失礼しました。
0372デフォルトの名無しさんNGNG
型キャスト っていうのは、実体が同じで、コンパイラに見方を変えてね
っていう指示なんだよね。内部データ形式が全く異なるExtended型をinteger型
にキャストできないのは当然。この辺の感覚はだんだんついてくるようになる。
0373デフォルトの名無しさんNGNG
二つの値を渡して比を求める関数を作っているのですが、どう求めればいいかわかりません
現状だと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;
0374デフォルトの名無しさんNGNG
>>373
比というのはどちらかを 1 としたときにもう一方の Y/X あるいは
X/Y のことですよね。
失礼ながらこのソースでは何をしたいのかよくわかりません。

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

最大公約数の求め方

http://oto.chu.jp/kujira/text/delphi/zero/11.htm
0376デフォルトの名無しさんNGNG
どうも失礼しました。ちょうど Rect に収まるようにイメージをストレッチ描画
するものを書いてたので、それと同じようなものかと勝手に勘違いしていました。
0377デフォルトの名無しさんNGNG
質問です。
Delphiの事をよく理解しないまま、ネット上のTipsを参考にしたり、
ダウンロードした自作コンポーネントを貼り付けたりして、気がついたら
千行を越える複雑怪奇なプログラムが組みあがってしまったんですが、
普通にCloseすると例外が発生します。
仕方が無いのでHaltで終わらせてるんですが、これってやっぱまずいんでしょうか?
0378デフォルトの名無しさんNGNG
> 普通にCloseすると例外が発生します。

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

なんとか頑張って例外が発生しないようにしてみます。
0380デフォルトの名無しさんNGNG
>>366
D7 は日本のサーバーではなくあっちのサーバーにつながっているので、めったに
こけることは無いと思いますが。
0381デフォルトの名無しさんNGNG
>>376
アスペクト比を保ったまま、ある Rect に収まる最大の描画方法は、長辺を Rect の
対応する辺にぴったり収まる比率を求めて、その比率で短辺を描画したとするとき
はみ出すかどうか確認し、はみ出さなければその比率で、はみ出したら、短辺の
対応する辺にぴったり収まる比率を求めて、それで全体を描画する。 if 文が二つ。
0382デフォルトの名無しさんNGNG
訂正 if は一つ
0383デフォルトの名無しさんNGNG
>>379
例外が出て、IDE / デバッガで捕捉できているのなら、直せるかどうかは別にして
バグの場所だけでも特定できそうなものだが。
デバッグ情報をつけて、デバッグ版の .DCU を使って再コンパイル。
例外でデバッガに戻った時にソースコードが表示されればしめたもの。

>千行を越える複雑怪奇なプログラム
は、一関数が千行越えたのかな?
バグを直しつつかきかえなされ。
0384デフォルトの名無しさんNGNG
'AAA',1
'BBB',2
'CCC',3
というリストをTStringsで扱いたいのですが、AddObjectの第2引数はどのように
書けばいいのでしょうか? 数値だけのクラスを定義しないとダメですか?
0385デフォルトの名無しさんNGNG
AddObject('AAA',TObject(1));
0386デフォルトの名無しさんNGNG
TStrings は抽象クラスだよ、分かってると思うが。
0387384NGNG
>>385
できました。単純にキャストしてしまえばいいのですね。
でもなんか不思議な気がします。「1」の実体は一体どこに格納されてるのでしょう??

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

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

この "TObject" 型の値は、本物ではありませんから、メソッド呼び出しなどを行うと
AV がおきるでしょう。TObject 型に見せかけた4バイトの領域でしかありません。
0389デフォルトの名無しさんNGNG
>>342
ObjectPascal自体は、昔AppleがWirth先生と共同で策定した言語で別にちゃんとある。
初期のMac用のクラスライブラリ(OWLのようなアプリケーションフレームワーク)、
MacAppのために設計された。
その後AppleがC++に傾倒してMacAppもC++で書き直された事や、
OSのヘッダファイルがPascal用だけでなくC用も提供されるようになったので、
あまり使われなくなった。
0390デフォルトの名無しさんNGNG
>>387

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

ちなみにHPで公開されてるソースはどのようにして利用すればいいのでしょう?
貼り付けるだけではエラーばっかりでハングアップしてしまいます。。。
アドバイスお願いします
0392デフォルトの名無しさんNGNG
いろいろやってみて。
0393デフォルトの名無しさんNGNG
>>391

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

>貼り付けるだけではエラーばっかりでハングアップしてしまいます。。。
何を貼り付けたかにもよるので何とも。
具体的に何さ?どんなエラー返すんだ?
0394デフォルトの名無しさんNGNG
レスありが問うございます
>>392
がんばります

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

それにソース貼り付けだけでもプログラムは組めるんですか?
エラーが出たのは全部なんですがたとえば
ttp://forum.nifty.com/fdelphi/samples/00109.html
このソースを全部コピーして新規作成で貼り付けたんですが…
思いっきり固まりました。
0395デフォルトの名無しさんNGNG
(´-`)。o ○ (レジストリだけは完全に学習してからにして欲しいと
思うのはオレだけか?
つーか、自分が使うツールってことであって欲しい…)
0396デフォルトの名無しさんNGNG
レジストリは怖い。

0397デフォルトの名無しさんNGNG
ヘルプの文字列リストの使い方では、TStrings型で宣言してTStringList型をCreateしていますが、
TStringList型で宣言してはいけないのですか?
0398391NGNG
>>395
自分で使うツールです。
たとえばyahooメッセで表示される広告を変えるとか。
普通に弄ったらエラーがでるんです。
この操作のツールはもう出てるんですけど勉強の為です。
できるなら完全に学習できる方法を教えてください。

いちをVBも持ってるんですが素人はどちらを使えばいいのでしょう。。。
0399デフォルトの名無しさんNGNG
>>395
たかだか設定情報の場所が違うだけだ。
気にすんな。
0400デフォルトの名無しさんNGNG
>>394
TRegistry は例外処理が必須なので最初に始めるプログラムとしては
少し難しいと思います。

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

>>397
TStrings で宣言する理由がなければ (例えば TStringList のメンバーを
隠蔽したいとか) 、TStringList で宣言する方がむしろ普通かと思います。
0401デフォルトの名無しさんNGNG
(´-`)。o ○ (「どちらが」なんてことを他人に決めてもらうのはどうか。
自分の好きなようにすればいいし、挫折したらしたで他やれば良いかと)
0402397NGNG
>>400
そうですか、どうもありがとう御座います
0403398NGNG
>>400
アドバイスありがとうございます
基本からやっていきたいと思います。

>>401
あくまでも参考にと思って聞いてみただけです。
そうですね
0404デフォルトの名無しさんNGNG
しおりの設定なんですが、設定したしおり(□に数字が入ってる)の数字が非常に
みにくいので、色を変えたりしてみやすくしたいのですが、どうすれば
いいのでしょうか?
0405デフォルトの名無しさんNGNG
某に要望書をだす。
0406デフォルトの名無しさんNGNG
>>404 色覚異常者かな?
バイナリに格納されているビットマップを書き換える。ってことになると思うけど。
0407デフォルトの名無しさんNGNG
>>404
ちゃんと見たことあるのかな?

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

0408デフォルトの名無しさんNGNG
俺も見難い。
Delphi 6 Personal
濃い緑に黒字の奴だろ?
これを見やすいと言ってる香具師の気が知れない。
0409デフォルトの名無しさんNGNG
数字が書いてるのにも気づかなかった漏れ。
まあしおりは使ってないけど。
0410デフォルトの名無しさんNGNG
俺は栞使わないで別ウィンドウで開く使ってる。
0411デフォルトの名無しさんNGNG
見やすくは無いが見えないことも無いって位か。
モニターのブライトネスはかなり低いけど。
0412デフォルトの名無しさんNGNG
しおりは ひとつか ふたつ記憶させるのにいい。
0413デフォルトの名無しさんNGNG
ヘルプのフォントを変更することはできますか?行間の広いフォントにしたいのですが。
DelphiのヘルプはHTMLヘルプじゃないのでできないのでしょうか。
0414デフォルトの名無しさんNGNG
ガーン。オレも数字なんて知らなかった…<しおり
見づらいとは思わなかったが。
7とか8だと「しおりの保存機能」は付いてんだろうか?
多分無いような気がするが。便利だと思うのに。
0415デフォルトの名無しさんNGNG
脳で考えただけでそこへ移動できたら便利だね。
0416デフォルトの名無しさんNGNG
夢物語見てないで、現実にあるものをもっと使いやすくしろ>Delphi
0417デフォルトの名無しさんNGNG
>>415
ロシア語で…。
0418デフォルトの名無しさんNGNG
>>413
できない,氏ね。
0419デフォルトの名無しさんNGNG
すみません、質問です。
プロジェクトを読み込むと「フォーム作成中にエラーが発生しました。2197行で行が長すぎます」という
エラーが発生しました。
どうもUnit1.dfmが壊れてるみたいなのですが・・・。
どうすればいいんでしょうか?
0420デフォルトの名無しさんNGNG
・Unit1.dfmを修復する
・諦めて作り直す
・悔しくても泣かない
0421419NGNG
_| ̄|○
0422デフォルトの名無しさんNGNG
functionとprocedureでオーバーロードすることは出来ないんですか?
0423デフォルトの名無しさんNGNG
2197行を含む一番内側のbegin〜endを削除すれば他の部分は助かる
0424デフォルトの名無しさんNGNG
>>422 できるでしょ
0425デフォルトの名無しさんNGNG
function Hoge: Integer; overload;
procedure Hoge; overload;

begin
 Hoge;
end;

どっちのHogeを呼び出すの?
0426デフォルトの名無しさんNGNG
やりゃわかるだろ
0427デフォルトの名無しさんNGNG
同じパラメータを持つメソッド 'Hoge' がすでに定義されています

だってさ
ケッ
0428デフォルトの名無しさんNGNG
何するかわからんコード書いても仕方ないな
0429422NGNG
たとえば
function hoge(i:integer):integer;
procedure hoge(var i:integer);
とか
0430デフォルトの名無しさんNGNG
引数が同じヤツはオーバーロード無理
0431デフォルトの名無しさんNGNG
最近プログラミングに興味をもって、
無料でできるというのでDelphi6をインスコしたんだが
ホームページでの学習はたいていのところが更新とまってたりして
変数って何よ。ってなぐらいの俺にとって結構しんどそうなので
本買ってみようと思って
http://www.amazon.co.jp/exec/obidos/ASIN/4839907161/ref=pd_ecc_rvi_4/249-4988864-8187503
を検討してるんだが
これでいいのだろうか?
中村拓男?て人のレビューにのところが気になるのだが・・・

長文スマソ
0432デフォルトの名無しさんNGNG
アマゾンは返品可能だから、新品買って読んでみて合わないと思ったら返品するか
それは気まずいと思うなら、
ユーズド価格 : ¥2,000よりを買って、合わないと思ったらまた売ればいいじゃない。
0433デフォルトの名無しさんNGNG
>>431
http://www.fukkan.com/sell/index.php3?mode=detail&i_no=13893706

大きな書店でもたまに見る
関西でスマンが難波ジュンク堂や日本橋のジョーシンで売ってた
0434デフォルトの名無しさんNGNG
「Delphi オブジェクト指向プログラミング」
何年たっても不滅の名著ですねー。
この本を読んで初めてオブジェクト指向をなんとなく理解できました。
最近書店で見かけないので絶版になったのかと思ってた。
0435431NGNG
復刊ドットコムでは
中級者以上必携になってますが、
俺でも理解できるようなものなんですか?
0436デフォルトの名無しさんNGNG
古すぎだと思う。
0437デフォルトの名無しさんNGNG
すみませんが...
real型はstr型に直せないですか?
0438デフォルトの名無しさんNGNG
>>437
FloatToStr
0439デフォルトの名無しさんNGNG
ド素人ほど必須だと思うけど。>Delphi オブジェクト指向プログラミング

復刊を期に手に入れた方だけど、これがなかったと思うとぞっとする。
0440431NGNG
Delphi オブジェクト指向プログラミング
買ってみました。
アドバイスくれた方々どうもありがとうございました。
0441デフォルトの名無しさんNGNG
持ってない漏れには持ってないことの不便さが分からん
そんなにいいの?
0442デフォルトの名無しさんNGNG
ヘルプの言語ガイドを読んで理解できない人にはいい本かも知れないね。
0443デフォルトの名無しさんNGNG
Delphiにおけるオブジェクト指向をこれほどわかりやすく解説した本は他に知らない。
自前のクラス作成・活用もコンポーネント作成もVCLのソース読むのも
この本を読んでからできるようになった。
この本読んでなければ私はきっと今も初心者だったことでしょう。

>>440
超初心者には難しすぎる本かも。
しかし良い本なので将来役立ててください。
まずは他の本で言語の基本を勉強しましょう。
0444デフォルトの名無しさんNGNG
>436
純粋にオブジェクト指向の解説本なんだから古いも新しいも関係ないのでは。
0445431NGNG
>>443
そうか・・・でも有用な本なら損はないと思っておいて、
もう一冊買って見ます。

わからないことがあったらまた
質問させてくれ。
そのときもよろしく頼みます。
0446デフォルトの名無しさんNGNG
>>439
確かにその本は不朽の名著だと思うけど、Delphi1に準拠している点を改訂して
新版を出してほしかったな

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

Delphiなんかやめとけ。
0448デフォルトの名無しさんNGNG
結論


釣られた奴は敗北者。 以上。
0449デフォルトの名無しさんNGNG
> 中村さんあたりの大御所に

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

今からですと、Delphi の先細りがハッキリしてきているので、あまり意味ない
と思います。しかし、オブジェクト指向そのものの思想というか基礎的な事柄は
言語によらず重要だと思っています。
0450デフォルトの名無しさんNGNG
内容は古いけど筆者の読者をオブジェクト指向への
誘導のさせかたは今でも好き。代入互換性の重要さ
を説いてる人はこの人以外あまり見かけないね〜。
0451デフォルトの名無しさんNGNG
この筆者、LINUXの本も出してるけど、かなり独特。
ブートローダーの解説で、OSがブートする仕組み(カーネルは何者なのかとか、
OS起動前になぜファイルをメモリに展開でき実行できるのかとか)
を非常に詳しく書いていたりする。
たかがブートローダーの解説でブートストラップの説明する本なんて他にないと思う。

筆者の信念は
「ツール使い方を覚える」のではなく「ツールの根底にある概念や原理を理解する」
のが大事だと思っているのだと思う。
実際、書いてある事を理解すれば仕組みを理解でき、応用力がつく。
この筆者の本は役に立ちます。
0452デフォルトの名無しさんNGNG
> 代入互換性の重要さ

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

Delphi は、C++ と同様、クラスの外に、関数やレコード型や変数を宣言できたり
して、OOP 用の言語としては、Java や C# よりも構造化言語に近くて、中途半端
です。
0453デフォルトの名無しさんNGNG
だが本音と建前を使い分けられる仕様だからこそよい。
0454デフォルトの名無しさんNGNG
> だが本音と建前を使い分けられる仕様だからこそよい。

同意。中途半端さ加減が絶妙ではあるね。
0455デフォルトの名無しさんNGNG
(´・ω・`)さっぱりわからない…。
0456デフォルトの名無しさんNGNG
"代入互換"や"代入互換性"じゃほとんどヒットしないけど
どんなキーワードで検索すればいいのですか?
0457デフォルトの名無しさんNGNG
> どんなキーワードで検索すればいいのですか?

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

0458デフォルトの名無しさんNGNG
塚越本は超初心者にはやや難しいし、中級者には陳腐だな。
まず、初心者サイトでポトペタの練習をして、「なぜ、このように動作するのか」を
考えてから読むといいかも。
0459デフォルトの名無しさんNGNG
質問させて下さい。
ScrollBox上でマウスホイールを回転させても、OnMouseWheelイベントが発生せずに
スクロールバーが動いてしまいます。
スクロールバーを動かさずOnMouseWheelイベントを発生させる方法はありませんか?
0460デフォルトの名無しさんNGNG
マウスに依存するみたいだよ。

http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200312/03120057.txt
0461459NGNG
そうなんです。マウスドライバをバージョンアップしてからなんです。
どうやらフォーカスに関係無く、マウスカーソル直下をスクロールさせてるみたいで
ドライバ側でホイールを切れば、今まで通りに動くんです。

どのような環境でも一定の操作感で動かしたいんですが無理でしょうか?
0462デフォルトの名無しさんNGNG
どのような環境でもって言われても、普通は検証できないし
0463デフォルトの名無しさんNGNG
TFormにあるヘルプ機能や、WinHelpは.hlpのヘルプファイルにしか
対応してないようですが、.chmにはデフォルトで対応してないのでつか?

F1キーを押したときに表示させるようにするには、F1が押されたことを
イベント関知して、そして自分でフォームに応じたヘルプのトピックを表示
させるようにしなければならないんでしょうか?
0464デフォルトの名無しさんNGNG
吐駄っちって
「家族に不幸があったため NET 活動を自粛しています。m(_~_)m」
なんて書いといて全然自粛してないしw
0465デフォルトの名無しさんNGNG
外出
0466デフォルトの名無しさんNGNG
プリンターの制御(ってほどのものではないけど)についてお聞きしたいのですが、
デジタル複合機があって、ホチキス止めする機能があります。
ここからここまでを印刷してホチキスで止めるというのはどのように書けばよいのでしょうか?
0467466NGNG
すいません sageてました。
0468デフォルトの名無しさんNGNG
>>463
Delphi.NET使え
0469デフォルトの名無しさんNGNG
>>466
情報が少なさ過ぎる。
ホチキス止め処理をしているのがプリンタドライバかハード側かすらも解らない。
ハード側で制御しているなら、アプリケーションでは如何なる言語を使おうがムリ。
プリンタドライバでしているとしても、それを行うAPIやコマンドの類が公開されていない限り不可能。
0470デフォルトの名無しさんNGNG
>>468
.NET使えない開発もあるだろ
答えてやれないなら返事するな

>>463
HtmlHelpを使えるようにす.pasや、メッセージをフックする方法が
米のBorlandのTipsにあるよ。
あと、フリーの.pasでF1キーその他を関知して、TFormコンテキスト等を
HtmlHelpに渡してくれるソフトなんかもあるので、調べてみたら?
0471466NGNG
wordでホチキス止めを実施したときはプリンターの設定で実施しました。
なので、プリンタドライバ側で処理しているのではないかと思います。
このような、APIはWindowsの標準ではないのでしょうか?

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

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

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

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

0474デフォルトの名無しさんNGNG
Win32APIスレかそのプリンタメーカーに問い合わせたら?
0475466NGNG
>474

わかりました。
明日、メーカーに聞くか
Win32APIスレをしばらくROMって質問します。
0476デフォルトの名無しさんNGNG
調べてみたのですがよくわからなかったのでヒントをください。

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

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

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

よろしくお願いします。
0477デフォルトの名無しさんNGNG
ヘルプでキーワード検索タブを表示して rollback と入力
その下の TDatabase をダブルクリックして出てきたヘルプの例を見る。(D7)
0478デフォルトの名無しさんNGNG
TEditコンポーネントに数字を入力させて、
それを変数に格納したいのですが、
どうすればいいですか。

自動的に Form1: TForm1;とグローバル変数が定義されています。
イベントはOnChangeを使うのか程度しかわからないです。
0479478NGNG
変数にしなくてもEdit1.textで直接入力した内容を読み出せるみたいなので
それでいいことにしました
0480デフォルトの名無しさんNGNG
>>479
strtointdefあたりをお忘れなく(数字しか入力出来ないようになってるんなら
別だけど)。
0481デフォルトの名無しさんNGNG
indyのTIdTCPServerとTIdTCPClientを使って接続先の
MACアドレスの取得をしたいのですがどうすればいいですか?

よろしくおねがいします。
0482デフォルトの名無しさんNGNG
DelphiからExcelのセルに数値を読み書きしたいのですが
セルに書き込む方法は解りましたが、セルから数値を取得するにはどうすればいいでしょうか?
0483デフォルトの名無しさんNGNG
Delphi6インストールしたんですが起動アイコンが見当たりません
どこにあるんでしょうか?
0484デフォルトの名無しさんNGNG
delphi32.exe
0485デフォルトの名無しさんNGNG
>>484 ありがと〜、ファイル名で実行してみます
0486デフォルトの名無しさんNGNG
スタートメニューに無かったのかの小一時間(ry
0487デフォルトの名無しさんNGNG
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によりました。
0488デフォルトの名無しさんNGNG
>483
こんな初心者がどうやってD6手に入れたのか小一時間w
0489デフォルトの名無しさんNGNG
むしろ普通にパッケージを入手したに20Mag
0490デフォルトの名無しさんNGNG
むしゃくしゃしてやったに30孫
0491デフォルトの名無しさんNGNG
>>487
Del6perはIndy使えないの。
はずしてたらゴメンネ。
0492デフォルトの名無しさんNGNG
>>491
んなことはない。
0493デフォルトの名無しさんNGNG
>>491
るるとん@K?
0494デフォルトの名無しさんNGNG
>>487

同梱マニュアルは読んでないから解からんが、少なくともここに書いてある方法でならインストールできた
ttp://deuxdeux.hp.infoseek.co.jp/gikobuild.html#Indy9
0495デフォルトの名無しさんNGNG
Windows初心者がデル手に入れてもただのゴミ。
しかもどう考えても違法品でしょ。今時D6売ってないし。
0496デフォルトの名無しさんNGNG
>>495
売ってなくても合法的に手に入るんだよ。
0497デフォルトの名無しさんNGNG
>>486 それが無いから驚いたんです、
探せど探せどエクスプローラが展開するばかりで
0498デフォルトの名無しさんNGNG
>>497
もう一度、インストし直せよ
0499デフォルトの名無しさんNGNG
>>498 見つけたから大丈夫です、ちなみにVectorから落としました
0500デフォルトの名無しさんNGNG
微妙に話しがかみ合ってないような気もする。
0501デフォルトの名無しさんNGNG
>>500
たぶん、>>499はインストールとダウンロードを間違えてるんだと思う
0502487NGNG
自己解決してしまいましたのでご報告を。

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

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

それでは皆さま、どうもありがとうございました。
0503デフォルトの名無しさんNGNG
OpenDialogのOnIncludeItemで、
特定の拡張子のファイルを非表示にするやり方をどなたか教えてください。
0504デフォルトの名無しさんNGNG
http://www.vector.co.jp/soft/dl/win95/prog/se205882.html

こいつをDLしたのか・・・。
0505デフォルトの名無しさんNGNG
>>504そうです、VBのただのやつに似てるネこれ
0506デフォルトの名無しさんNGNG
>>503
uses ShlObj;
var file_name: packed array[0..MAX_PATH] of Char;
SHGetPathFromIDList(OFN.pidl, file_name);
これでファイル名がとれるから後は煮るなり焼くなり
0507デフォルトの名無しさんNGNG
どうやって 煮るのか 焼くのか 教えてくれ(w
0508デフォルトの名無しさんNGNG
それが人に者を頼む態度かっ!!





なんつって。
フィルターに必要な拡張子だけ許可入れるんじゃダメなんか?
0509デフォルトの名無しさんNGNG
漢字間違ってんじゃんorz
0510デフォルトの名無しさんNGNG
Inc(rya := CompareT(ry ExtractF(r (
0511デフォルトの名無しさんNGNG
MIDI再生プログラムを作りたいのですが、
再生、制御に関するコンポーネントは存在するのですが、
スペクトラム表示機能みたいなコンポーネントって存在するのでしょうか。

自分でやろうと思っても全然その辺のことわかんないんですorz
0512503NGNG
Include:=False;でもTrueでも全部表示されるみたいなんですが、
Includeで表示させるかを指定するものとは違うんでしょうか?
この辺が良く分かりません。
0513デフォルトの名無しさんNGNG
delphi personalでタイプライブララリって作るの無理?
0514513NGNG
>delphi personal
delphi6 personal
0515デフォルトの名無しさんNGNG
>>510
何じゃそりゃw

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

[ヒント] Unit1.pas: 変数 'a' が宣言され(ry
[警告] (r
0516デフォルトの名無しさんNGNG
Tpanel上にあるTbuttonがクリックされた時に
Tpanel.nameを取得したいのですがどうすれば良いですか?
0517デフォルトの名無しさんNGNG
TButton.Parent.Name
0518516NGNG
>>517
実際にやってみた結果、取得する事が出来ました。
ありがとうございました。
0519デフォルトの名無しさんNGNG
ObjectList.Add(追加Object);
でどんどんObjectListにオブジェクトを追加していくとして、
終了時にObjectList.Freeとすれば追加Objectの使用しているメモリも開放されるのでしょうか?
0520デフォルトの名無しさんNGNG
OwnsObjectsの値による。
0521デフォルトの名無しさんNGNG
>>520
格納されているobjectはこんな感じです。

TData=class(Tobject)
public
 string型と
 integer型の値が複数
end;
0522デフォルトの名無しさんNGNG
いや、そのだな……うがーっ
TObjectListのメンバをOからOまで全部見ろ
0523デフォルトの名無しさんNGNG
すみません。とりあえず出直してきます・゜・(ノД`)・゜・。
0524デフォルトの名無しさんNGNG
>>522
理解しました。初心者以前の問題でした…
本当にごめんなさい。
0525デフォルトの名無しさんNGNG
「くだすれ」だから謝る必要無し。
0526デフォルトの名無しさんNGNG
誠意がなくなったら人間お終いよ
0527たまNGNG
さよなら人類
0528デフォルトの名無しさんNGNG
>>527
古すぎw
0529527NGNG
この間友達4人とカラオケ行って歌ったら、すごく盛り上がったよ
知ってたのは漏れを含めて2人だったがw
0530デフォルトの名無しさんNGNG
TObjectListで質問です。
フォームをたくさん作るので、TObjectListで管理しようと思っています。
しかし、TObjectListはRemove時に自動的にオブジェクトを解放してくれるので、
作成したFormはFreeしなくてもいいのですよね?

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

もし安全にTObjectListのようにフォームのオブジェクトを管理する方法があったら
教えてください。
0531デフォルトの名無しさんNGNG
> Remove時に自動的にオブジェクトを解放

ヘルプより

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

つーか、Screen.Forms や FormCount を使うのが普通だけど
0532デフォルトの名無しさんNGNG
Remove メソッドは,指定したオブジェクトをリストから削除し,(OwnsObject プロパティが Trueの場合)オブジェクトを解放します。

function Remove(AObject: TObject): Integer;

説明

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

(オブジェクト参照ではなく)添字を使ってオブジェクトの削除を指定するには,Delete メソッドを呼び出します。
オブジェクトを解放せずにリストから削除するには,Extract メソッドを呼び出します。
0533デフォルトの名無しさんNGNG
マウスカーソルの下にあるウィンドウのHWNDの取得をする方法を教えてください
0534デフォルトの名無しさんNGNG
>>531
おおFormCountはしらんかった。これは使えそう。
画面に表示されてるってのは、Visible := Trueの場合だけなんですかね。
実験してみます。

RemoveでFreeしてくれるのはわかるのですが、安全に破棄するなら
Releaseのほうがいいんじゃないかと思って、ReleaseではなくFreeして
しまうTObjectListではFormは扱うべきじゃないのでは?と思ったんです。
0535デフォルトの名無しさんNGNG
>>533
WindowFromPoint
0536デフォルトの名無しさんNGNG
ボタンを押すと、新しいウィンドウが出てきて
そこで色々な設定出来るようにしたいのですが。

Formを新しく一つ作って、ユニットの参照をして・・・と
こんなんで方向性はあってるのでしょうか(´Д`;)
0537デフォルトの名無しさんNGNG
>>536
間違いない!
0538デフォルトの名無しさんNGNG
ありがとう

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

ですが、これでウントモスントモ言いません_| ̄\○_
0539デフォルトの名無しさんNGNG
show しないとね。
デフォルトの例では、プロジェクトオプションで Form2 を自動生成からはずしておいて

uses
Unit2;

procedure TForm1.Button1Click(Sender: TObject);
begin
with TForm2.Create(Application) do
show;
end;

な感じね
0540デフォルトの名無しさんNGNG
>>535
出来ましたサンクス
0541デフォルトの名無しさんNGNG
>>539
出来ますた!�dクス
感謝です!
0542デフォルトの名無しさんNGNG
超初心者スレでそれをやるのは・・・
0543デフォルトの名無しさんNGNG
そもそも何処までが『超初心者』なのか…
コンポーネント自作の話まで出たことあるし
0544デフォルトの名無しさんNGNG
ふと気になったんですが、適当に宣言している変数は
その処理内でFreeしてやらなくていいのですか?
Char : Array[0..10000] of Char;
という宣言をしたのですが、ちゃんと開放されるのか心配になりました。
色々なWebサイト見てもされてないので必要なさげに思えるのですが、
どうも気になってしょうがありません。
0545デフォルトの名無しさんNGNG
>>544 ただの変数は解放の必要ない。クラス型だけ気にすれば(・∀・)イイ!!

Createした時は最後にFree と思っていればいい。
0546544NGNG
>>545
ありがとうございます。
喉の小骨取れました。
0547デフォルトの名無しさんNGNG
>>543
いや、質問じゃなくて解答のほう
0548デフォルトの名無しさんNGNG
まぁ補足すると
クラス型変数も 変数は解放してないしね。 オブジェクトを解放してるだけだし。
var list:Tstringlist;
begin
list:= TStringList.create(self);←listは今作ったTstringlistを指しているだけ
list.free;←なんとな変数を解放しているかのような印象を受けちゃうね
end;
0549デフォルトの名無しさんNGNG
> list:= TStringList.create(self);

TStringList のコンストラクタでオーナを設定できるとは知らなかったなぁ
0550デフォルトの名無しさんNGNG
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 に詳しい方はおられませんか?
0551550NGNG
(追記)

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
0552デフォルトの名無しさんNGNG
>>550
うちの環境だとAccessViolationエラー出ないぞ
AgentChar の宣言、間違たりしてないか?
0553550NGNG
え、そうなんですか・・。
私の宣言部はこんな感じなんですけど、552さんとは違いますか?

type
TForm1 = class(TForm)
Agent1: TAgent;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
AgentChar: IAgentCtlCharacterEx;
end;


0554550NGNG
uses 節はこんな感じになっています。

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, AgentObjects_TLB;
0555552NGNG
>>553

んーむ…全く同じだが正常に動作するな
環境依存…?
0556550NGNG
そうですか・・。
どうも、ありがとうございました。
現在はWinXP&Delphi7の環境なので、Win98とかDelphi6でも試してみようと思います。
0557550NGNG
>>552
さっそくDelphi6で試してみたら、動きました!
AgentObjects_TLBのコードがDelphi7に対応していないのでしょうか・・・。
少しDelphiの将来が不安になってしまいました。(関係ない?)
0558デフォルトの名無しさんNGNG
delphiでmp3を再生する方法を教えてください。
関連サイトを探しのですが見つかりませんでした。
御願いします。
0559デフォルトの名無しさんNGNG
MediaPlayerかShellExecute使っとけ
0560デフォルトの名無しさんNGNG
MCIもお忘れなく。

BCBだったらDirectShowでFAなんだが‥‥
0561デフォルトの名無しさんNGNG
ケン 2004/05/03(月) 20:07:55
550 :デフォルトの名無しさん :04/05/04 16:30

一日たったから、こっちへマルチポストですか。
0562デフォルトの名無しさんNGNG
いいんじゃないでしょうか。レスつかなかったし。
0563デフォルトの名無しさんNGNG
>>562
レス付かなきゃいいってセンスが分からん。
削除するんならまだしも。
マルチポストするヤツは人間として失格。
0564デフォルトの名無しさんNGNG
>>563
>削除するんならまだしも。

どうやって削除するの?

>マルチポストするヤツは人間として失格。

適切なレスがなければいいんじゃないでしょうか。削除する手段がないし。

>レス付かなきゃいいってセンスが分からん。

わからんヤツは人間としてどうなの? たんに頭わるいだけじゃないの?
0565デフォルトの名無しさんNGNG
>マルチポストするヤツは人間として失格。

これを呪文みたいにとなえるヤツがいるよね。
なぜ、マルチポストが嫌われるか、その理由を一度考えてみたらいい。
0566デフォルトの名無しさんNGNG
>どうやって削除するの?
2ちゃんは無理だけど、他は削除出来るところあるだろ。

>適切なレスがなければいいんじゃないでしょうか。削除する手段がないし。
↑上と同じ。

>レス付かなきゃいいってセンスが分からん。
>わからんヤツは人間としてどうなの? たんに頭わるいだけじゃないの?
失礼なことをするヤツにマトモな脳味噌はありません。
それくらいも分からんの?
0567デフォルトの名無しさんNGNG
まぁ「マルチポストがなぜ悪いのかが分からない」ってヤツは
返答する側になったことが無いんだろうな。
0568デフォルトの名無しさんNGNG
> 2ちゃんは無理だけど、他は削除出来るところあるだろ。

マルチポストはいけないことである、これは同意。
今回の件は、どうやって削除するか訊いている。答えろよ。
0569デフォルトの名無しさんNGNG
>>568
はぁ?あっちは消せるだろ。
もちろん消した後に謝罪でも書かなきゃダメだが。
つーか、噛みつく所が違うぞ、お前(w
0570デフォルトの名無しさんNGNG
> 返答する側になったことが無いんだろうな。

勝手な推測は迷惑。どんな根拠あるの?
0571デフォルトの名無しさんNGNG
まぁまぁ。
ケン=550が、マナー知らずのクズだったってことで。
0572デフォルトの名無しさんNGNG
> はぁ?あっちは消せるだろ。

そなの? 書き込んだことは何回もあるけど、消し方知らないんだけど。
0573デフォルトの名無しさんNGNG
>>572
管理者に頼めば消せるのでは?
2ちゃんじゃ、そう簡単には行かないが。
0574デフォルトの名無しさんNGNG
> ケン=550が、マナー知らずのクズだったってことで。

そんなことはない。ちゃんと結果だけは報告してるし。
ほめられたことではないが、最低限のことはしてるようだよ。

全部同時ポストで、すべて放置、というのがもっとも悪質。
0575デフォルトの名無しさんNGNG
返答する側で「マルチポストされて、自分のレスの方は無視されて
知らん所で解決してた」
なーんてことになっても平気な人は人間が出来てて素晴らしい。
0576デフォルトの名無しさんNGNG
> 管理者に頼めば消せるのでは?

いちいち管理人を引っ張り出す方が迷惑なんじゃないの?
消してくれる保証もないし。2ちゃんじゃ簡単じゃなくて、ほかは簡単だから消せ、
ってどういうこと?
0577デフォルトの名無しさんNGNG
>>575
あのね、マルチポストはいけないことである、と、これは同意。
一般論ではなく、今回の件を議論してる。 OK?

今回は解決するようなレスはついていない。OK?
ついたレスにはちゃんと応答している。OK?
0578デフォルトの名無しさんNGNG
>>576
今回は2chと「簡単には消せない掲示板」だったけど、
大抵は投稿者が削除(パスワード設定)出来るのが普通では?
0579デフォルトの名無しさんNGNG
>>577
今回の件限定なんて、誰が決めた?
勝手なルール出すなよ。
0580デフォルトの名無しさんNGNG
やはり頭のわるいのと議論するんじゃなかった。アホらし。
0581デフォルトの名無しさんNGNG
580が逃げましたw
0582デフォルトの名無しさんNGNG
役に立たない話はフサギコのほうでやってくんない?
0583デフォルトの名無しさんNGNG
必死に言い返しましたw
0584デフォルトの名無しさんNGNG
マルチポストしても
両方の板にちゃんと結果報告して
レスも返したらOKですか?
0585デフォルトの名無しさんNGNG
http://pc5.2ch.net/test/read.cgi/tech/1076095856/
続きしたいんなら、ここの方が良いかと。
0586デフォルトの名無しさんNGNG
「返答する側の気持ちも考えろ」っていうが
レスつかなかったんだろ?
質問する側の気持ちも考えろよ。

まぁマナーとして、最初に質問したほうに
「レスがつかなかったので他所で聞いてみます」ぐらい書いておくべきとも思うがな
0587550NGNG
みなさん、すみませんでした。
もうひとつのサイトではMSAgentに詳しい方がおられないようだったのと、
早く問題を解決したいという身勝手な気持ちで、こちらにもお願いしてしまいました。
私は、返答してくれる皆さんのおかげで助けられているのに、配慮が欠けていました。
かばってくれかた方、すみませんでした。
0588Delフサギコ ◆A6VzDeLphI NGNG
          
   ∧,,∧   マターリいこうよ
  ミ*゚Д゚彡
   ミつ旦(ミ~~
 @ミ   ミ  マルチポストの1コや2コや
   ∪''∪  3コや4コや…ひゃくコくらい
        大目に....

100個所もマルチできるとこないか。
0589デフォルトの名無しさんNGNG
マルチ野郎はゴミクズ
0590デフォルトの名無しさんNGNG
フォーム内に複数のフレーム(大きさや位置はバラバラ)が
重なって表示されるような画面を作っているのですが、
フレームの重なる順序(表示順序?)を変える方法を教えてください。
Delphiのバージョンは6です。

関連するメソッド、またはプロパティ名などを教えていただければ、
具体的な使い方は自分で調べるようにしますので、
よろしくお願いいたします。
0591デフォルトの名無しさんNGNG
test
0592デフォルトの名無しさんNGNG
フレームの表示順序を変えればいいんだよ
0593デフォルトの名無しさんNGNG
フレーム
画面

Delphiユーザ5年。知らないことばかり。
0594デフォルトの名無しさんNGNG
フレームって、TFrame のこと? BringToFront メソッドだろうか。
0595デフォルトの名無しさんNGNG
procedure foobar(var hoge, fuga: string);
みたいな手続きがあって、fugaの値はいらない場合、
fugaには何を渡せばいいでしょうか。
捨て変数渡してるのですが、どうも無駄な気がして・・・
0596デフォルトの名無しさんNGNG
>>595
デフォルトパラメータ
0597デフォルトの名無しさんNGNG
>>592-593
質問の仕方が悪かったようです。すみません。
>>594
そうです。TFormの上に並べたTFrame(から派生したクラス)の
順序を変えたいのです。
BringToFrontメソッドで目的が達成できました。
どうもありがとうございました。
0598デフォルトの名無しさんNGNG
なんだか最近、とあるプロジェクトが
IDEからコンパイル&実行して、終了すると
オブジェクトインスペクタやエディタなどが再表示されるのに
時間がかかるようになってしまいました。
こういう症状ってなにが原因なんでしょうか?
0599デフォルトの名無しさんNGNG
プログラミング用のテキストエディターを書いていて
C/C++のソースファイルを解析して関数や変数名をファイルに出力したいんですけど
どうすればいいのでしょうか・・・・
0600デフォルトの名無しさんNGNG
>>599
ソースファイルをTStringListあたりに読み込んで1行ずつループまわして解析して
関数や変数名を抜き出して別のTStringListに蓄えていってSaveToFileすればよいのでは?
0601デフォルトの名無しさんNGNG
パーサ書け。
0602デフォルトの名無しさんNGNG
>>595
PString(nil)^

>>598
とあるプロジェクトが原因。
0603598NGNG
>>602
いやぁ、それはわかってます。
例えば「未解放のクラスがあるんじゃないか?」とかそういうのを聞きたかった。
ちなみに自分でCreateしたクラスは全部Freeしてあります。

一度コンパイルすると症状は出ないんですけど
現在進行形のプロジェクトなのでコンパイルの機会が頻繁なのです。
「リソースの読み込みに時間がかかる」とかならまだわかるんだけど
プログラム終了→IDE復帰が遅いんだよなぁ
0604デフォルトの名無しさんNGNG
・とあるプロジェクトだけでおきるのか?たのプロジェクトでは?
・せめて OS と Delphi のバージョンだけでも書いとくれ。
・遅い、って何秒くらい?

デバッグ対象アプリのプロセス終了時に時間がかかるのだとすると..

・ウィルスチェッカーを常駐させていませんか?
・ネットワークやデータベース接続を行っていませんか?それらがタイムアウトを待っているとか..
・環境設定ファイル等に存在しないネットワークパスを示すものが混ざっていませんか?
0605デフォルトの名無しさんNGNG
怪しそうなのどんどん削除していけばいい、いつか見つかる。
ソース晒すんならまだしも(誰も見たがらないと思うけど)
とあるプログラムと言われても発生しうること予想しろなんてそりゃないぜ。
原因特定後に解からないならソースの一部晒すなりしたほうがいい。
0606デフォルトの名無しさんNGNG
まぁまぁ。
複雑なときのみ出るバグだってあるんだし。
人生相談だと思って回答するくらいの余裕をもとうや。
0607デフォルトの名無しさんNGNG
DelでDefaultGateを取得する方法を教えてください
0608デフォルトの名無しさんNGNG
DefaultGate ってなんだろう..
TCPIP の Default Gateway のことかなぁ?
0609デフォルトの名無しさんNGNG
>>608
そうです。そうです。
DefaultGateWayです。コマンドプロンプトでipconfigを実行したときの、
同等の表示をさせたいのですが、SubnetMaskとDefaultGatewayが
わからなくて・・・
0610デフォルトの名無しさんNGNG
過去ログ嫁。
で終わっちゃいそうだ..
0611デフォルトの名無しさんNGNG
最近の OS (NT4 SP4 以降)なら IpHlpapi.dll が提供している GetAdaptersInfo を。
Win98 とかになると、レジストリをつつくしかない。

GetAdaptersInfo Delphi
でググりなさい
0612デフォルトの名無しさんNGNG
>>611
ありがとうございます。
いちおうなんとかできますた!!

ところがAdapterNameを取得しても、名前じゃなくクラスIDを
取得しちゃうんですが、これは自分でレジストリいじって探せって
ことですか?
0613デフォルトの名無しさんNGNG
delphiをはじめようと思うんですが
プログラミング自体が初めてなので
初心者でも分かるようなサイトってありませんか?
0614デフォルトの名無しさんNGNG
>>613
>>1
0615デフォルトの名無しさんNGNG
指定したURLのファイルをダウンロードするツールは沢山ありますが、
Delphiでそれをするにはどうすればよいでしょうか。

具体的には、
ttp://www.url.jpg
ttp://www.url2.jpg
ttp://www.url3.ljp
みたいな文字列を受け取り、そのファイルのダウンロードをするソフトを作って見たいのです。
0616デフォルトの名無しさんNGNG
>>615
TIdHTTP.Get
0617デフォルトの名無しさんNGNG
>>616
すばやい返答ありがとうございました。
頂いたキーワードで調べてみます。
0618デフォルトの名無しさんNGNG
ソレなんだっけかなー?と思って、日本語でググルと1件だけだね…。
>>617
余計なお世話かもしれんが、「urlmon」か「Wininet」ではどーだろう。
0619デフォルトの名無しさんNGNG
>>618
実は616さんから頂いたキーワードは自分では処理しきれず、
まだファイルダウンロードは早いのかとあきらめていたところでした。
ところがwininetでググったら、素人の自分でも一発で実現できました。
本当にありがとうございました。
0620デフォルトの名無しさんNGNG
なんか微妙に腹たつな〜
0621デフォルトの名無しさんNGNG
そうだね。Indy の方が簡単だよね。
0622デフォルトの名無しさんNGNG
簡単だからわざわざWEBで書くこともないので情報が少ない、ということ。皮肉だね。
619はずっとWininetやってればいいんじゃないの。
0623619NGNG
本当にすみません。自分があまりにも無能である上、書き方も変であったと思われる為、
このスレ全体の方へ不愉快な思いをさせてしまったことをお詫びします。
0624デフォルトの名無しさんNGNG
気にすんなハゲ
0625デフォルトの名無しさんNGNG
へりくだり杉。ヒクツになるなや。
0626デフォルトの名無しさんNGNG
        Λ_Λ . . . .: : : ::: : :: ::::::::: :::::::::::::::::::::::::::::
       /:彡ミ゛ヽ;)ー、 . . .: : : :::::: :::::::::::::::::::::::::::::::::
      / :::/:: ヽ、ヽ、 ::i . .:: :.: ::: . :::::::::::::::::::::::::::::::::::::::
      / :::/;;:   ヽ ヽ ::l . :. :. .:: : :: :: :::::::: : ::::::::::::::::::
 ̄ ̄ ̄(_,ノ  ̄ ̄ ̄ヽ、_ノ ̄ ̄ ̄ ̄ 
大ちゃん、公然猥褻で捕まっちゃうよ・・・
0627デフォルトの名無しさんNGNG
ごめん、誤爆った…
0628デフォルトの名無しさんNGNG
大ちゃんて、大ちゃん☆タフィの大ちゃん?
0629デフォルトの名無しさんNGNG
想像上の生物だろ
0630デフォルトの名無しさんNGNG
え?ナマハゲ?
0631デフォルトの名無しさんNGNG
>>602
nil逆参照すると、EAccessViolation出ね?
0632デフォルトの名無しさんNGNG
>>602
別に '' でよくね?
0633デフォルトの名無しさんNGNG
あぁ、varなのか…
0634デフォルトの名無しさんNGNG
>>631
知らない。
0635Delフサギコ ◆A6VzDeLphI NGNG
     ∧,,∧,,,,,, )      (´⌒(´
  ⊂ミ゚Д゚⊂,,,,,,,`つ≡≡(´⌒;;;≡≡≡
ズザーーーーーッ    (´⌒(´⌒;;

IPアドレス入力用コントロールって
どこにあるでしょうか?
0636デフォルトの名無しさんNGNG
TMaskEdit ではいかんの?
0637デフォルトの名無しさんNGNG
>>635
私が最近練習用に作ったのでよければ、TIPAddress というのを↓に置いてます。
Delphi6 用ですので、古いバージョンで使うにはソースを修正する必要があります。
ttp://xd3e8d081.at.infoseek.co.jp/cgi-bin/default.cgi
0638デフォルトの名無しさんNGNG
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しなきゃダメ?
0639Delフサギコ ◆A6VzDeLphI NGNG
   ∧,,∧   ふつうMaskEdit使うのかしら...
  ミ,,゚Д゚彡
   ミつ旦(ミ~~
 @ミ   ミ  >>637さん
   ∪''∪ まあ!素敵!
     ありがとう。勉強&使用してみるです。
0640デフォルトの名無しさんNGNG
Delphiとは直接関係ない質問かもしれないんですけど、
LabelのフォントとかってWindows上では変えることはできなくて、
常にMS UI Gothicでサイズも9ですよね?

変える事ができるのはそのプログラム上からしか
変えることはできないんですよね?(;´Д`)
0641デフォルトの名無しさんNGNG
わけわからん。

> Windows上では変えることはできなくて

これの意味は? デフォルトフォントのことを言ってるの?
TLabel は Delphi 独自の実装だから、直接 Windows とは関係ないよ
0642デフォルトの名無しさんNGNG
Windowsの設定でLabelのフォントを変えてしまう事ができるのかどうかということです。。
説明不足ですみません。。。
0643デフォルトの名無しさんNGNG
>>639
> ふつうMaskEdit使うのかしら...

ふつうは、コモンコントロールの IP Address Control を使うんだけど、Delphi
にはラッパーがないよね。いつか ML でも話題になったので過去ログ見てみたら。
0644デフォルトの名無しさんNGNG
CaptionとかTipヘルプとかのフォント設定を取得してTLabelとかにセットするとか。
どう取得するのか知らんけど
0645デフォルトの名無しさんNGNG
TLabel に限らず、Delphi のコントロールのデフォルトフォントは、Windows の
システムフォントと無関係に設定されているので、できません。
0646デフォルトの名無しさんNGNG
>>645
あぁ、やっぱりそうですか。ありがとうございます。
0647デフォルトの名無しさんNGNG
> ふつうは、コモンコントロールの IP Address Control を使うんだけど

数字しかいれられないんで、あまり便利じゃないね。MaskEdit の方がいいかも。
0648デフォルトの名無しさんNGNG
簡単なプレイヤーを作っています。
プレイヤーと拡張子を関連付けてファイルをクリックするだけで
起動してファイルを開けるようにしました。

さて、アプリ起動中に別のファイルを開いた場合、
二重起動を防止して、起動中のアプリでそのファイルを開きたいのです

現在、二重起動を防止するところまではできたのですが
起動中のアプリに新しいファイル名を渡すにはどうしたらよいのでしょうか?
0649デフォルトの名無しさんNGNG
ファイル名を受け取るインターフェースを実装してそのインターフェースを使って渡せばいいだけ。
DDE とかでやればいいと思うが。
0650デフォルトの名無しさんNGNG
>>647
IPアドレスに数値以外の文字がありえるのか?
0651デフォルトの名無しさんNGNG
IPv6アドレスはA〜Fもあるな
0652デフォルトの名無しさんNGNG
16進は数値ではないと
0653デフォルトの名無しさんNGNG
数字の話を数値の話にねじまげられても。
0654デフォルトの名無しさんNGNG
IPv4/6の話を数字の話にねじまげられても。
0655デフォルトの名無しさんNGNG
>>654
流れが読めてない人は吊って来てね
0656デフォルトの名無しさんNGNG
>648 http://www2.big.or.jp/~osamu/Delphi/tips.cgi?index=267
0657648NGNG
>>649&>>656
ベリーサンクスv
0658デフォルトの名無しさんNGNG
OpenDialogを使用してファイル選択ダイアログ
を出したのはいいのですけど、キャンセル処理って
どうやるのでしょうか(;´Д`)
VBだったらCancelErrorがあったから出来たんですが。。。
0659デフォルトの名無しさんNGNG
ヘルプより

Execute メソッドはファイル選択用のダイアログボックスを開き,ユーザーが
ファイルを選択して[開く]をクリックしたときに True を返します。ユーザー
が[キャンセル]をクリックした場合,Execute メソッドは False を返します。
0660658NGNG
659タソアリガトン
こんなに簡単だったとはorz
0661デフォルトの名無しさんNGNG
>>660
まぁ、ヘルプぐらい読めってこったな
0662デフォルトの名無しさんNGNG
☆★☆★ 日本語プログラミング言語『ひまわり』 ☆★☆★

日本語で『こんにちはと、言う。』と入力すれば
ダイアログに『こんにちは』と出るプログラミング言語登場!!
PNGもサポートしてるので、かなりおすすめです!!
また、【『http://www.xxxx.xx/』を、『index.htm』へ、HTTPダウンロード。】
とすれば自動的にダウンロードできる優れ物です!!

↓日本語プログラミング言語『ひまわり』
http://hima.chu.jp/index.htm
↓日本語プログラミング言語『ひまわり』スレッド
http://pc5.2ch.net/test/read.cgi/tech/1083053283/l50
0663デフォルトの名無しさんNGNG
>>662
IdHTTP1.Get("http://www.xxxx.xx/index", stream);と比べてどう優れていますか?
0664デフォルトの名無しさんNGNG
>>663
メソッドの構文を知らなくてもソースが読める
0665デフォルトの名無しさんNGNG
>>662
英語じゃないとかっこよくないじゃないか!
0666デフォルトの名無しさんNGNG
indyを入れたら恐ろしい量のコンポーネントが追加されたのですが
ネット上にあるjpgファイルやgifファイルをダウンロードするには
どのコンポーネントを使えばいいのでしょうか?
0667デフォルトの名無しさんNGNG
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桁ともなると、大変なことになってしまいます。
もっと効率のいい方法を教えていただけますでしょうか。
よろしくお願いします。
0668デフォルトの名無しさんNGNG
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
0669デフォルトの名無しさんNGNG
>>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;
0670デフォルトの名無しさんNGNG
>>668-669
なるほど、配列を使うんですね。
勉強になりました。
ありがとうございました。
0671デフォルトの名無しさんNGNG
while じゃなくて repeat〜until の方がスマートだわ。
普段使わないから存在を忘れてた。
0672デフォルトの名無しさんNGNG
>>666
そのファイルをダウンロードするのに適切なプロトコルに合わせて選ぶ。
0673デフォルトの名無しさんNGNG
ひまわりか。懐かしいな。
かなり昔に興味本位で落としてみて、10分でアンインスコしたな。
0674デフォルトの名無しさんNGNG
>>666
>>663
0675デフォルトの名無しさんNGNG
キャレットを指定した行、列に移動させる方法を教えてください
SelStartだと文頭からの文字数でしか指定できません
位置を取得する方法はたくさん出てくるのですが・・・

TRichedit、Delphi6です
0676デフォルトの名無しさんNGNG
> 位置を取得する方法はたくさん出てくるのですが・・・

逆に、指定した行、列をSelStartに換算するといいのでは。
0677デフォルトの名無しさんNGNG
> 指定した行、列をSelStartに換算する

RichEdit1.Perform(EM_LINEINDEX,行,0) + 列
0678デフォルトの名無しさんNGNG
IdHTTP1.Get("http://www.xxxx.xx/index", stream);を
ひまわり風に書くとどうなるんだろ・・
0679デフォルトの名無しさんNGNG
Delphi6パーソナルで、
AND DWORD[EAX],0
が6Byteにアセンブルされてしまうんです。
本来は3Byteで済むはずなのに。
アップデートを適用したらしたら直りますか?
ダイヤルアップで数十MB DLはきついので、教えてほしいんです。
0680デフォルトの名無しさんNGNG
直ってる
0681679NGNG
うぉ、直ってるんですか。うれしいけど...がんばってDLしよう。
60MBを5時間かけてDLしたんだから...
0682デフォルトの名無しさんNGNG
うふ、3byte 削るための努力としては見合っていますか?
0683デフォルトの名無しさんNGNG
奇数は遅くなるのでは?
0684デフォルトの名無しさんNGNG
ちょっと聞きたいんですが、あるクラス内での処理結果を
呼び出し側(Form1とか)に必要に応じて返したい場合
普通はどんな手段が一般的なんでしょうか?
0685デフォルトの名無しさんNGNG
メソッドの戻り値にする
0686デフォルトの名無しさんNGNG
あと、引数を参照渡し var にするとか。インスタンスをつくることと、可視性を
除くと、メソッドの呼び出しは普通の関数の呼び出しと形式的には同じだよ。
なぜ特別視して質問するのかな?
0687デフォルトの名無しさんNGNG
>>685
早速の回答、ありがとうございます。。。そうですか。

たとえば、クラスには、作成時に、作成したフォームに含まれる
コントロールを渡すようになっていて、そのコントロールの
イベントをクラス内で処理するような場合です。

で、そのイベント処理後、フォーム側の変数の一部を
変更したりするケースです。

まあ、クラス側からフォームの変数や手続きにアクセス
するっていう反則技も考えたんですが、やっぱ。。。
0688デフォルトの名無しさんNGNG
>>684
1.グローバル変数を使う。
2.処理をメソッドとして実装、Form1から呼び出して戻り値やVar引数で取得
3.処理結果はそのクラスの別のPublicメンバにセットしておき、必要に応じてそこから取得する。
4.クラスにユーザー定義イベントプロパティを作成し、Form1に作成した関数を割り当てる。
 処理が終了した時点で、そのイベントを呼び出す。
0689デフォルトの名無しさんNGNG
>>688
ありがとうございます。

何か4のユーザー定義イベントプロパティってのが
一番すっきりするみたいです。どうもです。
0690デフォルトの名無しさんNGNG
('A`)ノWebBrowserで開いたリンク先が画像かHTMLか見分けるには
どうすればいいんですか?
0691デフォルトの名無しさんNGNG
>>690
ソレだけじゃ、状況がよく分からないから答えようがない。

とりあえず、イベントでリンク先に飛ばないようにして
リンク先を裏でDLするなり拡張子チェックするなりするとか。

拡張子偽装がイヤだとか?
0692デフォルトの名無しさんNGNG
書き忘れた。
照れ隠しからなのか知らんが、質問にAA付けるのは
回答者のやる気を削ぐだけと思われ。
0693デフォルトの名無しさんNGNG
┌─┬────┬────┐
│aa│bbb .    │ccc   .  │
├─┼────┼────┤
│01│dog   . │A      │
├─┼────┼────┤
│02│cat..  . │B      │
├─┼────┼────┤
│03│mouse   │A      │
└─┴────┴────┘
のようにListViewでreport表示したデータを
01,dog,A
02,cat,B
03,mouse,A
と言う感じでcsvファイルに出力するにはどうしたらいいんですか?

0694デフォルトの名無しさんNGNG
行ごとに Caption とSubItems を読み出してコンマを挟んで連結する。
それを TStringList にadd、SaveToFile() でセーブ。以上。
0695693NGNG
>>694
できたー!ありがとー
0696デフォルトの名無しさんNGNG
”で誤動作する悪寒
0697デフォルトの名無しさんNGNG
SubItemsはTStringsだからCommaTextを使うと楽かも。
0698教えて君NGNG
Project読込時に下記メッセージが出るのですが

フォーム読込中のエラー
クラス***が見つかりません、エラーを無視して
続けますか? 注意:エラーを無視すると、コンポーネント
またはプロパティを失う場合があります。

***を何処で追加すれば良いのでしょうか?
0699デフォルトの名無しさんNGNG
>>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の場合ブラウザの大きさを変えないようにしてみます。
0700デフォルトの名無しさんNGNG
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;
0701デフォルトの名無しさんNGNG
Sortedプロパティをtrueにしてる?
0702デフォルトの名無しさんNGNG
してませんでした
0703デフォルトの名無しさんNGNG
>>698
おそらく設計時パッケージ。
0704デフォルトの名無しさんNGNG
>>699
やりたいことは分かった…ような分からないような…。
そのexceptには例外処理が省略してあるんだよね?
ソレは必要なのかな?

pngの「サイズを求める方法」を変えた方が良い…ような気がする。
現時点のはAlign任せってことだよね?
0705デフォルトの名無しさんNGNG
>701

うまくいきました。
ありがとうございます。
0706デフォルトの名無しさんNGNG
Delphi初心者なんですが
画像を読み込みをして、ある点(例:20pix,20pix)のRGBの値を
得たいのですが どのようにしたらいいでしょうか?
できましたら教えてください。
0707デフォルトの名無しさんNGNG
>>706
pixels
0708デフォルトの名無しさんNGNG
>>707
ありがとうございました
0709デフォルトの名無しさんNGNG
>>704
>やりたいことは分かった…ような分からないような…。

すみません、説明が足りませんでした。
自分が作ってるのはタブブラウザーではなく、IEもどきのブラウザーを
作ってるんですが、新しくウインドウを開くリンクをクリックたびに
ShellExcuteで自分自身を立ち上げて、最初のナビゲートの時に
699の処理でブラウザの大きさを変更するようにしています。
大きさを変えるのは最初だけで、それ以降のナビゲートでは
ブラウザの大きさは変わりません。

なんでこんな面倒な事をしてるかというと、ポップアップ広告や
固定サイズのポップアップウインドウ(?)をブラウザで表示させた場合、
ブラウザの大きさを変更しないと余白が見苦しいので・・・。

>そのexceptには例外処理が省略してあるんだよね?
>ソレは必要なのかな?
exceptを外すと、特定のページで例外が発生する場合があるので
例外を回避するために付けてます。



ウインドウの大きさを変える方法は、現時点では699の方法が
自分で実装出来る限界なんですが、PNGファイルだけでなく
サイズを変えて欲しくないページまで変更してしまうのが悩みの種です。

やはりPNGファイルの大きさを取得したり、HTMLからページの大きさを
記述してる部分を解析して表示するようにしたほうが良いんでしょうか?
0710デフォルトの名無しさんNGNG
>>709
オレはpngからサイズ得た方がいいと思う。個人的に。

>記述してる部分を解析して表示するようにしたほうが良いんでしょうか?
記述してないことがあるから、無駄なような…。つーか、記述してない方が
多いかも…。
0711デフォルトの名無しさんNGNG
あらかじめ指定していた座標にマウスを動かし、
指定していた操作(右や左クリック)を行うプログラムを作るにはどうすればいいでしょうか。
SetCursorPos
で希望の位置へマウスカーソルが動くのですが、そこから先がすすみません。
よろしくお願いいたします。
0712デフォルトの名無しさんNGNG
>>711
mouse_event
0713デフォルトの名無しさんNGNG
>>712
ありがとうございました
0714デフォルトの名無しさんNGNG
初めてカキコさせていただきます、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
0715デフォルトの名無しさんNGNG
Keybd_event
0716デフォルトの名無しさんNGNG
>>714 ネットゲーか!
0717デフォルトの名無しさんNGNG
SetWindowHookExってコールバックできちんとCallNextHookEx呼んでれば普通にフック先にメッセージ行くと思うんだが‥‥
0718デフォルトの名無しさんNGNG
>>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さんの言っていることは全くやっていません・・・
まだまだ勉強不足で、フリーのコンポに走りました・・・
0719679NGNG
コードサイズの問題は、
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でサイズが無駄に大きくなる可能性がある。
小さく速く短く理解しやすいコードは美しい...気がする。
0720デフォルトの名無しさんNGNG
>>719
まだダウンロード終わらないの!?
0721デフォルトの名無しさんNGNG
>>718
M でなく 'M' を hotkey〜 に置き換えれ
0722デフォルトの名無しさんNGNG
相手に、
自分のマシンのファイルを見せる方法として、
ttp://forum.nifty.com/fdelphi/samples/00986.html
という方法があるみたいなのですが、これと同じようなことをindyでするには
どうすればいいでしょうか。
よろしくお願いします。
0723デフォルトの名無しさんNGNG
>>714です

>>721さん、お返事ありがとうございます

'M'の部分を

hotkey1.hotkey

に置き換えて、実行をしてみました。
すると、プログラムがフリーズしてしまいました

何が悪いのか自分でもほとんど理解していないので、お手数かけます・・・
0724デフォルトの名無しさんNGNG
4000行ぐらいのCSVのファイルをListViewへ表示させたのですが
その表示している状態をキャッシュみたいなファイルを作って次回から
高速に表示出来るようなコードとかってありますか?
なんかヒントになるようなこと教えてください。
0725デフォルトの名無しさんNGNG
>723 ShortcutToKey(hotkey,うんこ,ちんこ);とかではダメなのか?
0726デフォルトの名無しさんNGNG
(´-`)。o ○ (「うんこ、ちんこ」にツッコミ欲しいんやろか…)
0727デフォルトの名無しさんNGNG
>>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') のかわりに放り込んでみたんですが、使い方間違ってますよね・・・
0728デフォルトの名無しさんNGNG
keybd_event(key,0,0,0);
ではダメなの?
0729デフォルトの名無しさんNGNG
具体的にショートカットキーは何をどう押すの?
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 をシミュレートしているから。
参考になりますか?
0730デフォルトの名無しさんNGNG
>>727
キー操作をトレースしてる側のHツールが
AツールにHotkeyの値を送るのはどんな意味があるの?
0731714NGNG
>>728さん お返事ありがとうございます
その構文のkeyの定義について、ちょっとまだ理解できていないので
これから勉強して理解していきたいと思います

>>729さん お返事ありがとうございます
ネットゲームの補助ツールということで、魔法を詠唱し、その効果時間をタイマーで
計る、といったことができるツールを作りたいと思っています。

魔法の効果時間を計るために、タイマーを用意しています
そのタイマースイッチを、メインメニューのショートカットを利用して
Hotkeyに設定したキーが押されれば、メインメニューの「タイマーON」を押し
タイマーのスイッチをONという形にしています。

そして、Hookをして、メインメニューの「タイマーON」を押しているので、
魔法キャストのキーを押したはずなのに、タイマーは動いているが
Hookでキーをとられたために、魔法が詠唱されてない、という状態になってます。

そのために、Hotkeyに登録したキーを、そのままアクティブなウィンドウに送信したいのです。

決まったキーであれば、例にあるように、
Keybd_event(Ord('M'), 0, 0, 0);
といった形で対応はできると思うのですが、人によって魔法の詠唱するキーが
違うので、その人に対応するために、ホットキーに登録したキーをそのまま
アクティブなウィンドウに送信したいのです。

まだまだ勉強不足で、いろいろアドバイスをいただいているのですが、
たぶん半分も理解できていません・・・

こんな私ですが、よろしくお願いしますm(_ _)m


0732デフォルトの名無しさんNGNG
誰か>>714にSetWindowsHookExの使い方レクチャープリーズ
俺あほだから正しい使用法忘れた・゜・(ノД`)・゜・。
0733デフォルトの名無しさんNGNG
登録してどうこうってのをやめて、Hツールが取得したキーを
そのままAソフトに流してはダメなんだろうか…

いや、むしろ登録してあるキー情報のデータ形式が問題なのかも…?
「hotkey1.hotkey」に、どのように格納されているのか…
0734デフォルトの名無しさんNGNG
var
 key:word;
 Shift:TShiftState;
begin
 Shortcuttokey(hotkey1.hotkey,key,Shift);
0735デフォルトの名無しさんNGNG
>>732 >>714
っミ
http://homepage1.nifty.com/MADIA/delphi/tokusen.htm
の
システム全体に影響を及ぼす強力なフックの方法

dwThreadIdに対象のスレッドID入れればそのスレッドのウィンドウだけに対象を絞れる。
0736デフォルトの名無しさんNGNG
なんか、マラソンはじめて1ヶ月で、2時間30分を切りたい、と望んでいるような。
ちゃんと地道で基礎的な訓練が必要なんでは?
0737デフォルトの名無しさんNGNG
>>736
ここはそういうスレじゃないの?
コーチのいない無名の選手がマラソンで成績を残したいという。
もし基礎的な訓練が必要なら、その訓練方法なりを示してあげないと、
路頭に迷うことになっちゃうよん。

参考書読んで勉強しろ、とか講座サイト見て勉強しろ、ということだったり、
過去ログ嫁、というだけだと、「どうすればいいか分かりません」という答えが
返ってくるだけだと思うけどね…
0738デフォルトの名無しさんNGNG
>>737
> コーチのいない無名の選手がマラソンで成績を残したいという。

そりゃそうだ。でも望んでる成績がトンデモだったりしたら、やはり、それなり
の訓練をしろ、というアドバイスもあり、では。地道に努力しろ、というのは、
掲示板でどうしろ、と簡単に書けない内容なのでは? 簡単に書ける内容だったら
地道な努力は必要ないわけで。
0739デフォルトの名無しさんNGNG
くだすれの意味は、その比喩でいうと、

3時間30分の記録をあと十分縮めるにはどうしたらよいか、という質問を
しろ、という感じかな?
0740デフォルトの名無しさんNGNG
Delphi Personal ダウンロードしようと思って、
http://register.borland.co.jp/regist/delphipersonal/delphipersonal.dll/
で登録したんですが、いつまで経ってもメールが送られてきません。
0741デフォルトの名無しさんNGNG
>>740
土日は休みだから
0742デフォルトの名無しさんNGNG
>>739
>記録をあと十分縮めるにはどうしたらよいか
!!
そういうことか。納得。
ただ、3時間30分というのがどのくらいか分からないけど、
「走ったことないんですけど、どうしたら完走できますか? 私は完走できそうですか?」
という質問は御法度というわけですね。
あくまでも記録なり足跡なりを残した上で、あと十分縮めるための方法を模索する、というスレ
だという認識で問題ないかな。

>>740
いつ頃登録したのか分からないけど、3日程度は待った記憶がある。
0743デフォルトの名無しさんNGNG
TEditのOnChangeイベントなんですけど
アプリが内容を変更したときのOnChangeイベントは無効にして
ユーザーが内容を変更したときだけOnChangeイベントを発生させるにはどうしたらよいのでしょうか?
0744デフォルトの名無しさんNGNG
>>743
イベントの発生を制限するのではなく、イベントが発生しても、それがアプリによるものか、
ユーザによるものかを判断させてみたらどうだろう。
0745デフォルトの名無しさんNGNG
>>744
それはどうやってやったらいいのでしょうか?
Senderとかで判断できるのでしょうか?
0746デフォルトの名無しさんNGNG
おっ、すこしは質問の色を変えましたね。

Edit1.OnChange := nil;
ここで内容変更のコード
Edit1.OnChange := Edit1Change;

な感じ。
0747デフォルトの名無しさんNGNG
>>746
あ!なるほど。
でもTEditって毎回こんなことしないとだめなんですか・・
プログラミングって思ったより手間がかかりそうですね
0748デフォルトの名無しさんNGNG
> プログラミングって思ったより手間がかかりそうですね

どう思ってたか知らないけど、Delphi より十倍も手間がかかる言語もあるよ。
0749743=745=747NGNG
ありがとうございました。
おかげさまでうまくいきました
0750デフォルトの名無しさんNGNG
例えにマジレスするのも何だが
素人にいきなりフルマラソン走らせるなよ
0751デフォルトの名無しさんNGNG
>でもTEditって毎回こんなことしないとだめなんですか・・
継承しとけ。
ChangeメソッドとTextプロパティをオーバーライドすればいい
0752デフォルトの名無しさんNGNG
>>724
一番簡単なのは
ListView1.BeginUpdate;
〜追加処理
ListView1.EndUpdate;


あとはMLにある TMandom を使うとか(注意書きをよく読んだほうがいい
OwnerDrawで色々工夫するとかかな

もしTStringListでCSVファイルを読み出してるのなら
サンプル蔵の高速TStrings読込でファイル読込高速化はある程度可能

キャッシュファイルを作って高速化とかはわからん
0753 NGNG
失礼します。
練習として
「スクロールバーでRGB変化させて色表示」するプログラムや
「ボタンがクリックされた回数を表示」するプログラムなど、
ホントに小さなプログラムを作ってみました。
が、どれもexeファイルにすると400kb以上になってしまって…。
この程度のものなら通常、20kb前後に収まると思うんですが…。
何か解消の方法ありましたらお教え下さい。
0754デフォルトの名無しさんNGNG
>>753
Delphiで小さな実行ファイルを作ろう
http://pc5.2ch.net/test/read.cgi/tech/1009080085/
0755 NGNG
>>754
ありがとうございます。
0756デフォルトの名無しさんNGNG
>>753
UPX
http://homepage2.nifty.com/maskp/
を使用すると、EXEファイルのサイズが半分以下になります。
0757デフォルトの名無しさんNGNG
いまある exeファイルのサイズを小さくしたい

のと

小さな実行ファイルを作りたい

を混同する人が多いよね
0758753=755NGNG
>>756
>754さんのリンク先をザッと読んで、
「随分手間が掛かるみたいだから、現状のままでもいいか」と考えていました。
でもこれを使えば、
さほど手間をかけずにファイルサイズを小さく出来ますね。
しばらく使ってみてデメリットが無いようであれば、常用させていただきます。
ありがとうございました。
0759デフォルトの名無しさんNGNG
> さほど手間をかけずにファイルサイズを小さく出来ますね。

プログラミングは全く関係ないし
0760デフォルトの名無しさんNGNG
754のスレもいいけどさ
http://homepage2.nifty.com/Mr_XRAY/Halbow/index.html
なんかどうよ。
勉強にもなるし9KBのプログラム作れたよ。
0761デフォルトの名無しさんNGNG
Win32がらみの質問になるのかもしれませんが失礼します。
デバイスマネージャからデバイスの有効、無効を切り替える
操作をプログラムで処理したいのですが可能でしょうか?
0762714NGNG
たくさんのレス、ありがとうございます714です

Hotkeyに登録したキーをショートカットとして使うのに、TH○okhotkeyというフリーの自作コンポーネントを
使ったことが、混乱の原因のような気がします・・・

結局、よく見てみると、このコンポのおかげで、メインメニューのショートカットは使用しておらず
こちらの勘違いで、ご迷惑をおかけしましたm(_ _)m

また、このコンポのおかげで、自動的にHookをしてくれるために、Hookに関する知識もいらずに
Hookができています

やりたいことは、Hokeyに登録したキーを、そのままアクティブなウィンドウに流したい

ということなのですが、このTH○okhotkeyの便利さもあって、Hookの勉強をおろそかにしていました
もっと勉強してHookを身に着けて、CallNextHookExで、やりたいことをできるように
がんばりたいと思います。

ご指導ありがとうございましたm(_ _)m
0763724NGNG
>>752
アドバイスありがとうございます。
StringListで読み込んでるので
サンプル蔵のコードを一度試してみます。
0764デフォルトの名無しさんNGNG
>>762
そのコンポーネントがやってるのはフックじゃなくてホットキーだ。
0765デフォルトの名無しさんNGNG
OfficeXPや一部のソフト(タブブラウザのSleipnirとか)で使用されて
いる独特なメニュー、ツールバーなどの(フラットでマウスオーバーで
ふちの色が変わったり)インターフェイスはDelphiからでも使用できるんですか?
正式名称があったら教えていただきたいです。
0766デフォルトの名無しさんNGNG
色が変わるのは標準ではないかも

自前で作るのがおそらく1番手っ取り早い
0767デフォルトの名無しさんNGNG
普通にTToolBarとTToolButtonで実現できるはず・・<作った覚えがある
0768デフォルトの名無しさんNGNG
TToolBar.Flatやね
0769767-768NGNG
なんか勘違いしてるような気がしてきた。
とりあえず謝っときます。
スレ汚しスマソ>ALL
0770デフォルトの名無しさんNGNG
>>765
Toolbar2000+TBXで出来るよ
0771デフォルトの名無しさんNGNG
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;
0772デフォルトの名無しさんNGNG
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のデータが追加がされません。
どこがおかしいのでしょうか。
0773デフォルトの名無しさんNGNG
>>765
関係ないけどプニルはこれを使ってるらしい。
http://www.bcgsoft.com/bcgcontrolbar.htm
0774デフォルトの名無しさんNGNG
>>772
TFolder.ListはどこでCreateしてる?
0775デフォルトの名無しさんNGNG
>>774
TFolderの、Create内でCreateして
DestroyでFreeしています。
0776デフォルトの名無しさんNGNG
>FL := TFile.Create;
コピペミスだよね?

データが追加されないってどう確認した?
0777デフォルトの名無しさんNGNG
>>772
FL := TFile.Create;
ここを
FL := TFolder.Create;
にしたら?
0778デフォルトの名無しさんNGNG
>>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);
この処理を実行した時点でエラーが出て止まります。
0779デフォルトの名無しさんNGNG
Result := List.Items[i] as TFile;
でどうよ?
0780デフォルトの名無しさんNGNG
>>779
ありがとうございます、取得できました。
でもあいかわらず終了時に読み込み違反が出てしまいます。
ListにTFileを追加する部分を省くとエラーは出ないのですが。
0781デフォルトの名無しさんNGNG
>>780
ListをCreateするとき、引数にFalseを書いてみれば?(ヘルプ参照)
TFileを二重解放してる気がする。
0782デフォルトの名無しさんNGNG
>>781
全部スムーズに行きました。
親切丁寧なご指導本当にありがとうございます・゜・(ノД`)・゜・。
0783デフォルトの名無しさんNGNG
>>782
書き忘れたけど、解放を自力でやるかTObjectListにまかせるかは
プログラムによるので考えてみてね。
0784デフォルトの名無しさんNGNG
RicheditでURLだけクリックできるようにするには
どうすればいいですか?
0785デフォルトの名無しさんNGNG
ほかの場所をクリック出来ないようにするには? ということをききたいの?
0786デフォルトの名無しさんNGNG
ほかの場所には行かせないように、マウスを動かせなくするとか?
0787デフォルトの名無しさんNGNG
VBの方がよいかなあ
0788デフォルトの名無しさんNGNG
>>784
カーソルお変えろ
0789デフォルトの名無しさんNGNG
ApplicationのOwner以外のフォームをMDIの親にしたいんですが、
どうすればいいですか?
0790デフォルトの名無しさんNGNG
>>787
VBしか使ったことない人は、そのように感じることが多いようだね。
自分も長い間VBを使ってきてそう思っていたが、いざDelphiを触ってみると
以下に長い間自分が無駄な時間を過ごしてきたかが一瞬にしてわかった。
ただ、VB.NETに関してはそうとはいえない(VB.NET/C#の方がよいと思う点が
かなり出てきている)。
0791デフォルトの名無しさんNGNG
> ApplicationのOwner以外のフォームをMDIの親にしたいんですが、

回答じゃなくてすみませんが、なぜ「したい」のか教えてください。
0792デフォルトの名無しさんNGNG
>>790
> 以下に長い間自分が無駄な時間を過ごしてきたかが一瞬にしてわかった。

具体例プリーズ。
でないと、単なるデル厨にしか見えん。
0793デフォルトの名無しさんNGNG
> VBの方がよいかなあ

具体的理由プリーズ。
でないと、単なるVB厨にしか見えん。
0794デフォルトの名無しさんNGNG
板が荒れるのを見て楽しむような奴の相手はするな。
0795Delフサギコ ◆A6VzDeLphI NGNG
>>784

 ∫,,,,,,,,,∧,,∧  たしか、どこかにあったけど・・・
⊂,,,,,,,,,つ,,゚Д゚ミつ
  デルヒワールドだったかな。
0796初心者1NGNG
失礼します。デルファイ初心者です。
delphi6.0でORACLEのストアドプロシージャに引数を渡そうと
しているのですが、1つの時はうまくいき、2つになると2つ目の
parambyname("→この部分←")の名前が見つからないというエラーが
発生します。
どのような原因が考えられるか教えてください。
よろしくお願いします。
0797デフォルトの名無しさんNGNG
画面のハードコピーをクリップボードを経由せずに、
JPGファイルで作成したいのです。
とりあえず、一度ビットマップ形式でデータを読み込み
JPGに変換保存という方法で成功はしたのですが、
いかんせん遅いので、画像のデータをスマートにJPGに取り込むにはどうすればよいか、
ご教授願います。

よろしくお願いします。
0798デフォルトの名無しさんNGNG
>>784
非常に泥臭いですが、
いちおう、下の方法でうまくいきました。もしご参考になれば・・・

・文字列からURLを探す
・URLの部分を青くアンダーバー付で表示するようにする。
・カーソルの動きをチェックし、URL部分の上にいるときにはクリックカーソルに変える
・URLの上でクリックしたらURLを開くイベントを実行
0799デフォルトの名無しさんNGNG
>>797
GetDesktopWindow+GetDC+BilBlt
0800デフォルトの名無しさんNGNG
JPEGへの変換が遅いのは仕方が無いでしょう。
0801デフォルトの名無しさんNGNG
>>796
引数1個ならうまく実行できるんだよね?
・2つめの引数の微妙なスペル違い(実はこれが一番多い)
・PL/SQLには実は引数は1つしかなかったというオチ
・2つめの引数の種類が in ではなくて outだった
・(Delphi上で)Parametersが最初の一つしか指定されていなかった
が考えられる。

とりあえずDelphi抜きでSQL Plus*あたりから手動で引数を渡して実行して
確認してみれ。

ちなみに、DBアクセスの方法を書いておいたほうがいい(BDEとか、dbExpressとか)
漏れはサードパーティーのOracle VCLを使っているので、BDEやdbExpressに特化した
ものだとうまく答えられない。もしそうなったらゴメン。
0802デフォルトの名無しさんNGNG
> JPGファイルで作成したいのです。

bmp → jpg の変換速度は、ディスクアクセスに比較すると十分速いと思うぞ。
巨大なデスクトップを使ってるとか?
0803797NGNG
>>799
ありがとうございます。
試してみます。

>>800
やはりそうなのでしょうか。
やりたいことは画像ファイルの送受信して、相手の端末に
自分のデスクトップや画像を送る処理なので、
HDCの情報を直接送ることができればわざわざ
ファイルを作成する必要はないのですが。

>>802
作成処理から作成までで、1秒弱かかってしまいます。
壁紙とか使用してないシンプルなデスクトップなのですが
0804デフォルトの名無しさんNGNG
> 自分のデスクトップや画像を送る処理なので、

jpg にする必要ないんじゃないの。

> ファイルを作成する必要はないのですが。

そうですね、TBitmap に写し取って、SaveToStream() でメモリストリームにして
そのメモリイメージをそのまま送れば、すべてメモリ上の処理で済む。

> HDCの情報を直接送ることができればわざわざ

HDCの情報がそのビットマップに相当する
0805デフォルトの名無しさんNGNG
>>804
ありがとうございます。早速試してみたいと思います。
0806デフォルトの名無しさんNGNG
相互依存するクラス
(たとえば、クラスAのフィールドにクラスBのインスタンスがあるけど、BはAのフィールドも参照する)
これを別のユニットの置く方法ってありますか?
0807デフォルトの名無しさんNGNG
あります。
0808デフォルトの名無しさんNGNG
ありません。
0809デフォルトの名無しさんNGNG
・クラスAのフィールドにクラスBのインスタンス
・BはAのフィールドも参照する

classA → UnitA
classB → UnitB

として、UnitA では、宣言部の uses に UnitB を含め、UnitB では実装部の uses に UnitA を含める
0810デフォルトの名無しさんNGNG
> ・BはAのフィールドも参照する

どのように参照するかによる
0811デフォルトの名無しさんNGNG
TObjectで持ってimplementationでusesしてキャストすればいい
0812デフォルトの名無しさんNGNG
>>811
オレもそうしてるけど、一々キャストしなければいけないから
余りエレガントには思えないね。ローカルで代入するとしても、なぁ。
もっと良い方法は

無いんだろうなァ
0813デフォルトの名無しさんNGNG
> これを別のユニットの置く方法ってありますか?

ありますか?  って質問だっただろ。キャストは実装コードだけだろ。
0814デフォルトの名無しさんNGNG
相互に参照するクラスを別々のユニットに分ける時点でエレガントさとはオサラバ
0815デフォルトの名無しさんNGNG
Edit1に入力された数を2倍にして、Edit2に表示させたいんですが
文字が入力されたり、何も入力されていない時にエラーが出ます。
どうしたらいいでしょうか?

procedure TForm1.Edit1Change(Sender: TObject);
var x:integer;
begin
x:=StrToInt(Edit1.Text);
x:=x+x;
Edit2.Text:=IntToStr(x);

end;
0816デフォルトの名無しさんNGNG
わけの分からない値が表示されるよりはエラーになったほうがいいだろ。
その時どうしたいんだ?それはプログラム作成者が決めることだ。
とりあえず適切なエラーメッセージを表示したければこんな感じ。
begin
 try
  x:=StrToInt(Edit1.Text);
  x:=x+x;
  Edit2.Text:=IntToStr(x);
 except
  on E: EConvertError do
   ShowMessage('Edit1に数値を入れろゴルァ!!');
 end;
end;
0817デフォルトの名無しさんNGNG
>>815
エラーが嫌ならStrToIntDefでも使ってください。
0818804NGNG
>>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;
//以下略
でいけるかと。質問の意味が違うかもしれないけど
0819818NGNG
失礼しました>>818
は以下の間違いです
procedure TForm1.Edit1Change(Sender: TObject);
var x:integer;
begin
if Edit1.Text = '' then
begin
Edit2.Text:='';
exit;
end;
//以下略
0820デフォルトの名無しさんNGNG
delphiで、ウィンドウを持たないプログラムって
どうやって作るんでしょうか?(コンソールアプリではなく)

やりたい事は、外部プログラムの起動です。

新規作成→アプリケーション のプロジェクトで
ウィンドウを作成する前に、処理をして
ウィンドウを作成せずに終了する。
って感じですか?

もしかして、personal版以外だと適応したプロジェクトがあるのでしょうか?
0821デフォルトの名無しさんNGNG
>>820
それでもいいしけど、コンソールアプリプロジェクト作って
program Project1;
{$APPTYPE GUI}
uses
Windows;
begin
OutputDebugString('hello,world');
end.
とか書き換えるだけ。
0822820NGNG
>821
ありがとうございます。

なんだか、とても簡単なんですね。
勉強させてもらいました。
また、何かあったらよろしくお願いします。
0823デフォルトの名無しさんNGNG
ファイルの転送処理を、
ここのソースをそのまま使って実行できたのですが、
ttp://www.ipc.hokusei.ac.jp/~z00104/delphi/thread.html

サンプルでは一度送信する度に切断してしまうため、
送信処理をする度にアクセスする為の時間がかかってしまいます。
切断せずに処理を続けるにはどうすればよいでしょうか。
よろしくお願いいたします。
0824デフォルトの名無しさんNGNG
ソケットをクローズしなけりゃいいだけだろ
0825デフォルトの名無しさんNGNG
>>818
> なぜか遅くなってしまいました。多分BMPのメモリストリームそのまま送ると、

TJpegImage にも SaveToStream() メソッドがあるよ。
0826823NGNG
>>824
最初、自分もそうかと思いまして
ソケットをクローズしないで、
while (not Terminated) and ClientSocket.Connected do
のループをデータ受信後抜ける方法を模索してみましたが
分かりませんでした。どのようにすればよいでしょうか。お願いいたします。
0827デフォルトの名無しさんNGNG
もうDelの問題じゃないな。
0828デフォルトの名無しさんNGNG
>>826
全部受信し終わってたら Break すればええやん
0829デフォルトの名無しさんNGNG
delphiでDLLの練習をしているのですが
フォームのハンドル等をDLL側に送る方法ってないでしょうか?
0830デフォルトの名無しさんNGNG
関数の引数にする
0831デフォルトの名無しさんNGNG
>>826
TCPのストリームには区切りがないので自分で目印をつけるしかない
[データサイズ][データ本体][次のデータサイズ・・・]
とか
[データ本体][データ終端][次のデータ・・・
0832デフォルトの名無しさんNGNG
Canvasの持ち主(「Form1.Canvas」なら「Form1」、「Image1.Canvas」なら「Image1」)を
Canvasから調べるにはどのようにしたらよいのでしょうか?
0833デフォルトの名無しさんNGNG
RSSのコンポーネントってありませんか?
0834デフォルトの名無しさんNGNG
Canvas が TControlCanvas なら簡単なんだけど(Form1 や PaintBox1 などは簡単)
Image1.Canvas は実装部に定義がある TBitmapCanvas なので Image1 にたどり着く
のは難しそう。
0835デフォルトの名無しさんNGNG
>>766-770,773
ToolBar2000とTBXというのがあるんですねー。
遅くなりましたが、どうもありがとうございました。
いろいろ試してみます。
0836デフォルトの名無しさんNGNG
>>818
if Key in ['1'..'9'] then
0837デフォルトの名無しさんNGNG
Windows.TextOutで書いた文字列を消すにはどのようにすればいいのでしょうか?
0838デフォルトの名無しさんNGNG
>>837
上塗りしてやればいいんじゃないか?
0839デフォルトの名無しさんNGNG
>>837
状況にもよるんだが。

とりあえず文字だけを消したいなら、
文字を背景と同じ色にして同じ座標にもう一度書くのが確実。

イメージの上など、背景が単一色じゃない場合はいろいろと面倒。
工夫するしかない。
0840デフォルトの名無しさんNGNG
Repaint
0841デフォルトの名無しさんNGNG
>>836
こういう細かな便利技(?)を教えてくれるサイトか本ってないでしょうか?

自分は経験が浅いので
if flag = True then flag := False else flag := True;
が
flag := not flag;
で済む、というのを見て目からウロコが落ちたぐらいです。
0842デフォルトの名無しさんNGNG
>>841
言語リファレンスを一回通して読んどけ
0843841NGNG
あ、818さんの名誉のために言っておくとわたしは818さんじゃないですよ。

>>842
ボーランドからダウンロードしたPersonal版を使ってるんですが
付いてますか?<言語リファレンス
0844デフォルトの名無しさんNGNG
オンラインのがあるだろ
0845デフォルトの名無しさんNGNG
>>843
内蔵のエディタで予約後にカーソルを合わせてF1キーを押すと
言語リファレンスに一発で飛べる
0846デフォルトの名無しさんNGNG
外部データを読み込むにはどうしたらいいですか?
0847デフォルトの名無しさんNGNG
>>843
落としたアーカイブを展開した先のdocumentationディレクトリ内にoplg.pdfがある。
0848デフォルトの名無しさんNGNG
>>845
知らなかった...
0849デフォルトの名無しさんNGNG
>>846

どうしたらいいんでしょうねー。
自分もテキストファイルから1行ずつ読み込んで、
それをrecordに入れてソートしてってのをどうやるかで
困ってます。リストを使うとは思うんですが。

んで、846さんはどんなデータを扱いたいんですか?
0850デフォルトの名無しさんNGNG
>>849
それならTStringList.LoadFromFile()で十分じゃ?
0851デフォルトの名無しさんNGNG
If bFlag then
begin
  iValue = 10;
end
else
begin
  iValue = 20;
end;

この構文の代わりに…
const
  IVAL:array[Boolean] of Integer =(10,20);
〜〜〜〜〜
  iValue := IVAL[bFlag];


0852841NGNG
>>847
こ・・これは!
恐れ入りました。
てかボーランドってかなりサービスいいんだな。
0853これがすごいとおもったNGNG
with TStringList.Create do
try
  Text := ????String;
  SaveToFile('TMP.TXT');
finally
  Free.
end;
0854デフォルトの名無しさんNGNG
dynamicとvirtualの違いって、結局のところ速度とメモリ使用量だけ?
0855デフォルトの名無しさんNGNG
だけ。
dynamicはVCL級にでかいクラス郡を作らない限りはいらないだろ。
0856デフォルトの名無しさんNGNG
>>818
たまには2のことも思い出してあげてください
>>836
たまには(ry
0857デフォルトの名無しさんNGNG
過去ログ嫁は無視。どんどんログをつくろう。重複なんか気にしないで。
0858デフォルトの名無しさんNGNG
ファイルエクスプローラをクリックさせてそこから取得したパスの
画像ファイルを表示させたいのですが ファイルのエクスプローラをひょうじさせるのってどうやったらいいんですか?
0859デフォルトの名無しさんNGNG
>>857
>>856の最後の行は「たまには0のことも〜」なんだよ。
0860デフォルトの名無しさんNGNG
(´ゝ`)
0861デフォルトの名無しさんNGNG
>>858
本当にエクスプローラーを使うならShellExecute
似たようなのを作るならTTreeViewとTListViewを組み合わせて

画像ファイルはTImageで開く
0862デフォルトの名無しさんNGNG
すいません、初歩的な質問なんですが、DelphiのコンポーネントのMediaPlayer
を使って、簡単な音楽再生をしようと思ってます。

コンパイルしたあと、自分の環境で、再生させるとちゃんと音がでるのですが
他の人にEXEファイルを送って、使ってもらったんですが
MCIエラーというのがでて、使えません。

恐らく、他の人のPCにDelphiのMediaPlayerを再生する環境が入っていないと
思うのですが、再生する環境を、つくったEXEに埋め込んで
使えるようにするには、どうしたらいいのでしょうか?
0863833NGNG
>>833
ないっすか?
0864デフォルトの名無しさんNGNG
>>863
ここでも読め
ttp://delphi.about.com/library/weekly/aa072903a.htm
0865837NGNG
>>838-840
ありがとうございます
いろいろ消すやり方もあるんですね。
とりあえず問題がなさそうなのでRePaintでやってみることにします
0866デフォルトの名無しさんNGNG
>>862
http://www2s.biglobe.ne.jp/~mix/cm2_help/player_trouble_mci.htm
確認してみそ
0867デフォルトの名無しさんNGNG
Delphiでブラウザを起動し、指定されたURLを表示したいのですが、
その際404などのHTTPのエラーが帰って来た場合は、
デフォルトのページを表示したいです。
こういうことってできますか??
そもそもHTTPエラーって取得できますか??
0868デフォルトの名無しさんNGNG
>>867
記憶が正しければ、TidHttpでGetしようとするとエラーが発生する。
そのエラーをCatchして、TIdHTTPResponseInfo.ResponseNoを
みればよかったんじゃないかと覚えている。
0869デフォルトの名無しさんNGNG
>>868
すまんexceptですた・・・
0870デフォルトの名無しさんNGNG
DelphiってどこでDLできるの?
0871デフォルトの名無しさんNGNG
>>868
ありがとうございます。
やってみます!!
0872デフォルトの名無しさんNGNG
下記のソースで同一フォルダ内の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;
0873デフォルトの名無しさんNGNG
>>870
ttp://www.vector.co.jp/soft/dl/win95/prog/se205882.html
調べりゃすぐわかるだろうに。
0874デフォルトの名無しさんNGNG
>>873
ごめんよ、ぐぐったら英語しか出てこなかったの・・・
ありが�d
0875デフォルトの名無しさんNGNG
>>872
前後の画像をあらかじめTStreamで読み込んでおいてから、
TImageにぶち込んでもだめかな?
または、もう一つのTImageを非表示状態で予め画像を
読み込んでおいて、ボタンクリックで今までのをVisible:=False、
読み込んでおいたのをVisible:=Trueする。
0876デフォルトの名無しさんNGNG
TBitmap をつかって予め変換してから、Assign
0877デフォルトの名無しさんNGNG
フォームエディタ上でボタンをダブルクリックすると、
自動的にBtnClickイベントプロシージャ(だったっけ)が
ソースエディタ側に追加されますよね。

間違えてクリックしちゃって作られたイベントを
一発で取り消す方法はありますか?

今のところ、Type宣言とprocedure本体と、オブジェクトインスペクタの
手続き名をすべて手動で消しているんですが。
0878デフォルトの名無しさんNGNG
>>877
自動で追加されたプロシージャの
beginとendの間に何も書かずにF9(コンパイル&実行)をかければ
自動で削除されますよ。
0879デフォルトの名無しさんNGNG
保存でも消せる
0880デフォルトの名無しさんNGNG
失礼します。

今日練習がてらに落書きソフトを作り始めてみたのですが、
メインメニュー内に[ペン設定]→[太さ]→[1],[2],,,,,[5]
とおき、太さを選択できるようにしようと思ったのですが、
[1]の場合と[2]の場合と……などとと各個入力せずに、なんとか一括でこれらの処理を出来ないものでしょうか?
case文で何とかなりそうな気はするのですが……

それとも各個入力したほうがわかりやすいでしょうか?
0881デフォルトの名無しさんNGNG
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;
0882デフォルトの名無しさんNGNG
画面がどのような感じがわからないのですが、
もしボタンで選ばれているなら、ボタンに太さのTagを設定し、
ボタンクリックのイベントを統一して、クリックされたボタンのTagの値に
設定するようにすればよいのではないでしょうか?
0883デフォルトの名無しさんNGNG
あとはアクションかメニューのショートカットに登録するくらいか
0884882NGNG
失礼しました>>882は>>880さんへです
0885デフォルトの名無しさんNGNG
>>880
ペンの設定ダイアログをつくって表示
0886882NGNG
>>880さん
失礼しました。私、何も文章よんでませんでしたね。
ボタンじゃなくて、メニューですね。

procedure TForm1.NClick(Sender: TObject);
begin
Label1.Font.Size := TMenuItem(Sender).Tag
end;
でどうでしょうか。
0887880NGNG
>>882
解決策の提示ありがとうございます。というかTagプロパティの使い方がわからないorz

ttp://up.isp.2ch.net/up/c917249e1c67.png
ちなみにこんな風なサブメニューつくるつもりです。

この方法がしっくり来なかったら>>885さんのやり方で行こうかと思います
0888デフォルトの名無しさんNGNG
>>887
Tagプロパティは開発者が自由に使っていいInteger型のプロパティ。
メニューで太さ選ぶならメニューアイテムのそれぞれのTagプロパティに太さを入れとけばおk
0889882NGNG
>>887
オブジェクトインスペクタの下から2段目あたり
にTagとあれば、それがそうです。
そこに希望の数値を入れておき、Clikイベントを書くメニュー統一すればいけると思います。

などと書いてみましたが、>>885さんの方法のほうがスマートですね。失礼しました。
0890デフォルトの名無しさんNGNG
Tabcontrolの使い方がいまいちわかりません。
HPを色々まわってみたのですがなかなかみつからなくて…
わかりやすいサンプルや解説のHPなどありませんでしょうか?
よろしくお願いします
0891デフォルトの名無しさんNGNG
どうわからないのか言ってもらえないと情報の紹介のしようもない・・。
0892デフォルトの名無しさんNGNG
>>890
タブブラウザ使ってみれ
0893デフォルトの名無しさんNGNG
>>890
TabControl1.TabIndex
で何番目のタブが選択されているかが分かります。
なので、
何番目のタブが選ばれているかで処理をわければよいかと。
TPageControlと動きの違いを比較されると分かりやすいと思います。
0894助けてくださいNGNG
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
君に成り代わってプログラムを完成しなさい。
0895デフォルトの名無しさんNGNG
C/C++の宿題をやらせて、お兄ちゃん 22代目
http://pc5.2ch.net/test/read.cgi/tech/1083050221/
0896デフォルトの名無しさんNGNG
すみません、パワーポイントのテキストボックスのような機能を持つコンポーネントはないものでしょうか?
探してみましたが私は見つけることが出来ず・・・
フォントが一文字単位で設定でき、編集時以外は背景を透過し、クリックすると枠が出て再編集可能なもの。
使用バージョンは6パーソナルです。ようするにタダの。もしかしてプロフェッショナルには入ってます?
0897デフォルトの名無しさんNGNG
Delphiで長方形を描いてEMFにしたのですが、
できたファイルをIllustratorでよく見ますと、
左上にある始点と終点が閉じてなくて点が5個あります。
閉じた図形にするには(始点と終点を結合させるには)
どのようにしたらよいのでしょうか?
0898872NGNG
昨日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
0899デフォルトの名無しさんNGNG
>>898 ソース読んでないけど。
TImageでないとダメかい?
参考に自作ビューアの手順書いとく。

フォームのOnCreateでDoubleBufferd := True
TBitmapに画像を読む。
フォームに置いたTPaintBoxの位置・サイズを適当に変更。
TPaintBox.Repaint

TPaintBox.OnPaint内は、TPaintBox.Canvas.StretchDrawでTBitmapを描画。
0900872NGNG
TBitmapにjpegって読み込めませんよね?どうすればいいのでしょうか?
0901デフォルトの名無しさんNGNG
uses jpeg;
0902899NGNG
>>900
ごめん、susieプラグインを呼び出して使った。
0903899NGNG
連続でスマソ
susieプラグインについてはこの辺を参考に。
http://pc5.2ch.net/test/read.cgi/tech/1064420818/720-726
0904デフォルトの名無しさんNGNG
>>896
漏れがそれに近いものを作った時には、TEditを非3D表示、枠を細い線で
表示させるようにして、マウスドラッグで範囲指定させて、そのドラッグした
場所に合うようTEditを動的に生成した。
んで文字を編集させて、エンターキーで確定。入力内容をその下のTImage
に同じ場所に表示させた。

編集可能で、さらにフォント等を変更させたいなら、TRichEditで同様の処理
をさせてあげればいいんでないかい?
0905デフォルトの名無しさんNGNG
> Delphiで長方形を描いてEMFにしたのですが、

Rectangle() を使った? LineTo() じゃだめだよ
0906デフォルトの名無しさんNGNG
質問があります。
パッケージにコンポーネントをインストールする時に、”DesignIntf.dcu”が
見つからない等のエラーが出てしまいインストールすることが出来ないの
ですけど、どうすればインストールすることが可能になるでしょうか?
Delphi6 Personalです。
0907デフォルトの名無しさんNGNG
> TBitmapにjpegって読み込めませんよね?

ファイル → TJpegImage → TBitmap
0908デフォルトの名無しさんNGNG
D6用のコンポじゃないんでは?
0909デフォルトの名無しさんNGNG
>>906
そのままDesignIntf.dcuかDesignIntf.pasがないんじゃない?
もしくは、違うディレクトリに保存されてるとか。
0910906NGNG
コンポーネントはDelphi6(Delphi6の本のCD-DOMのもの)のものです。

C:\Program Files\Borland\Delphi6 以下を検索したのですけど、
”DesignIntf.dcu”がないようです。
0911デフォルトの名無しさんNGNG
>>910
DesignIntf.dcuでyahooで検索したら4件でてきたぞ?
ためしてみそ。
0912906NGNG
4件の中から出てきた内容でとりあえずコンパイルできました。
やっている事の理屈は分らないですけど、パッケージの requires へ designide.dcpを追加で解決です。
これからはDelphiのパッケージのことを理解する必要がありますね。
0913デフォルトの名無しさんNGNG
>>912
その掲示板に
「ヘルプの中の「DsgnIntf の名前変更および関連する変更」というトピックに記述があるそうです」
とあるから、ヘルプを読めばちゃんとわかったことぢゃないかな。
0914デフォルトの名無しさんNGNG
超初心者です。
C#.netってC言語で使えますか?
C++はC言語で使えるようなのですが。
0915デフォルトの名無しさんNGNG
>>914 スレ違い
0916デフォルトの名無しさんNGNG
>>914
C#スレできいたら?
0917デフォルトの名無しさんNGNG
超玄人です。
C#.netってC言語で使えません。
C++はC言語用のコンパイラでも使えるような仕組みがあるのです(厳密には嘘だけど)。
0918デフォルトの名無しさんNGNG
>>913
以前のバージョンから名前が変更されている事を知らないとワカらんでしょ、多分。
0919デフォルトの名無しさんNGNG
DelphiのUIのような華麗なドラッグ&ドックを実装するにはどうすればいいですか
(プロパティを弄くる以外に。
0920デフォルトの名無しさんNGNG
Demoミロ
0921デフォルトの名無しさんNGNG
>>920
こんなんあったのね・・・thx
0922デフォルトの名無しさんNGNG
>>904
それでやってみます!
0923デフォルトの名無しさんNGNG
Demoってなんか新種の生き物みたいだな
0924880NGNG
どうも。ありがとうございました。
おかげさまで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では無理なのでしょうか?
0925デフォルトの名無しさんNGNG
>>924
普通のお絵かきソフトの場合、
先を引くという機能を選択する→クリックしたままドラッグさせると
点線が表示される。クリックを止めると点線が線になって確定させる。
ということになるので、普通は点を打つか、線を引くかユーザに
選択させるもんだと思うぞ。
0926880NGNG
>>925
いや、"直線ツール"の話ではなく、ペイントソフトの言い方をすれば、"鉛筆ツール"のつもりです。

直線ツールはまた追々付けていってみようかなと……
0927デフォルトの名無しさんNGNG
>>926
ぢゃあ、クリック時のTPointとクリックを止めた時のTPointが同じだったら、
その場所に点を打つという処理にすれば?
0928デフォルトの名無しさんNGNG
つーか、LineToは最後の点を描かない仕様だったと思うので
LineToを使ったあと、X,Yに点を描けばええと思います。
0929880NGNG
色々試行錯誤してみた結果、Canvas.Pixelを使えば良いという事になりました
自分の頭の中にはLineToしか思い浮かばなかったです。

名無しに戻って頑張ってみます。アドバイスありがとうございました
0930デフォルトの名無しさんNGNG
htmlを1タグずつ解釈していって目当ての情報を得る関数を作ったのですが
一般的にこういった関数の関数名はどういう名前が付くのでしょうか?
今は
function KaisekiTextMode(html : String ):Boolean;
という名前をつけていますが、「Kaiseki」の部分にものすごく違和感があります。

多少スレ違いな感がありますが、他に適切なスレも見つからずに困っています。
0931デフォルトの名無しさんNGNG
> Canvas.Pixelを使えば良いという事になりました

えっ、これ知らなかったの? お絵かきプログラムつくるんだったら、TCanvas の
メソッドをすべて試すことくらいしておけよな
0932デフォルトの名無しさんNGNG
およ、Pixels[] はプロパティーだな
0933デフォルトの名無しさんNGNG
飛行機のJPGを左から右へ移動させ、あたかもとんでいるように
見せるにはどうすればよいでしょうか。
0934デフォルトの名無しさんNGNG
>>933
そのJPGを見ている奴の顔を右から左へ動かす。
0935デフォルトの名無しさんNGNG
>>933
そんなに頻繁にアニメーション使わないならImageListを使うと楽
0936デフォルトの名無しさんNGNG
>>933
http://homepage1.nifty.com/MADIA/delphi/DelphiTips/KeySousa.htm
参考に。
0937デフォルトの名無しさんNGNG
>>930
「Kaiseki」も英語にすればよし
0938デフォルトの名無しさんNGNG
>>934
見せたい相手が近くにいない場合を想定しているので、
ちょっと難しいです。できればプログラムでできたらうれしいです。

>>935
ありがとうございます。調べてみます。

>>936
ありがとうございます。試してみます。
0939デフォルトの名無しさんNGNG
>>938
ImageListに画像読み込んでImageList.Draw(0, 0, 0);ってすると
勝手にマスク処理(描画する画像と背景画像を合わせる)してくれるよ
これからもよく使うようなら自分でandだのxorだのしたほうがいいけど
0940デフォルトの名無しさんNGNG
DirectX使え
0941デフォルトの名無しさんNGNG
プログラムを打ち込んで実行したら、Runtime error 6とか出て、全く次に進めません
教えてください、お願いします _no
ちなみに、コンソールアプリケーションでやっています
0942デフォルトの名無しさんNGNG
ソースはこんな感じです

program ps1(input,output);
var m,n:rear;
begin
readln(m);
n:=m+1
writeln(n);
end.

超初心者でゴメンナサイ _no
ちなみにDelphi6 Personalを使用しています
0943デフォルトの名無しさんNGNG
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.
0944デフォルトの名無しさんNGNG
program ps1(input,output);

これはおかしい。こんな感じ。

program Project1;

{$APPTYPE CONSOLE}

uses SysUtils;

var m,n:real;
begin
readln(m);
n:=m+1;
writeln(n);
end.
0945デフォルトの名無しさんNGNG
>program ps1(input,output);
無茶苦茶クラシックなPascalだな。

とりあえずここだけ
>program ps1;
に変えとけばいいよ。
0946デフォルトの名無しさんNGNG
program Project1;

{$APPTYPE CONSOLE}

uses SysUtils;

var m,n:real;
begin
readln(m);
n:=m+1;
writeln(n);

readln;// これ付けるとみやすいかも
end.
0947941NGNG
すみません、学校でLinuxでPascalやってるのを家に持って帰ってやり始めたんです
いまからまたやってみます、ありがとうございます
0948デフォルトの名無しさんNGNG
[新規作成] から [コンソールアプリケーション] を選ぶといいよ
0949デフォルトの名無しさんNGNG
文章ファイルをMEMOやRichEditに読み込まずに行数と文字数を
知る方法はなにかないでしょうか?
0950デフォルトの名無しさんNGNG
>>949
TStringList
0951デフォルトの名無しさんNGNG
>>949
TStringListに読み込んだらどうよ?
もしくはStreamに落として改行コードの数を数えるとか
0952949NGNG
>>950
>>951
ありがとうございます。やってみます
0953デフォルトの名無しさんNGNG
Delphiしたいんですけど
やっぱり英語読めないとだめですよね。
たとえば>>946の英語って読めますか?
0954デフォルトの名無しさんNGNG
>>953
読めね
でもDelphi起動
そしてあなたも今日からDelphi起動
0955デフォルトの名無しさんNGNG
>>953
英語が読めなくてもプログラミングはできる。
英語ができないと困るのは日本語訳されてない資料を読むときぐらい。
0956953NGNG
>>954-955
ありがとうございます。
0957デフォルトの名無しさんNGNG
>>950-951
100Mのファイルを全部一度に読み込むのはメモリの無駄だろ。
AssignFile, Reset, Eof, Readln使っとけ。
0958デフォルトの名無しさんNGNG
TFileStreamを使え。
0959デフォルトの名無しさんNGNG
>>957

100Mってどこに出てきた? 何メガならメモリの無駄じゃないの?
実行スピードはどうなの?
0960デフォルトの名無しさんNGNG
最近テキスト処理にstream使うアホが増えてるのは
環境ホルモンの影響なんだろうか??
0961デフォルトの名無しさんNGNG
>>960
stream使うとどうなるのでつか?
0962デフォルトの名無しさんNGNG
テキスト処理に TStream 系を使うことが何でアホなのか、アホに説明できるわけない
0963デフォルトの名無しさんNGNG
if str = 'いち' then result := 1 else
if str = 'にい' then result := 2 else
if str = 'さん' then result := 3 else
・・(略)
if str = 'じゅう' then result := 10;

をもっとうまく書く方法ってありますか?
0964デフォルトの名無しさんNGNG
テキストから
1文字をだして
数値にかえるにはどうしたらいいでしょうか?

n:=Ord(Copy(FileList[0],1,1));

「互換性のない型です」とエラーがでるのですが・・・
0965デフォルトの名無しさんNGNG
>>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;
0966デフォルトの名無しさんNGNG
Ord(s[i])
0967デフォルトの名無しさんNGNG
Copy() の返値はstring型だから Ord は取れない
0968デフォルトの名無しさんNGNG
文字列は文字の配列だよ

s := '123';

なら s[2] は '2' の Char 型と互換

0969デフォルトの名無しさんNGNG
>>964
>>963とは同一?
別人ならOrdをStrToIntに。
0970デフォルトの名無しさんNGNG
ええー、文字コードじゃなくて StrToInt() かよ。 Ord() だからてっきり・・・・・
0971デフォルトの名無しさんNGNG
こんなのはどうかな。

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;
0972デフォルトの名無しさんNGNG
>>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で読み込むようにすれば手間も省けるし
「ぜろ」と「れい」で同じ値を返せたりと応用もきく。
0973デフォルトの名無しさんNGNG
>>967
Copy()で取得したものからOrdをとる方法はないものでしょうか?
0974デフォルトの名無しさんNGNG
>>973
ちゃんとレス読んでるか?
直接とろうと思ってるなら無理。
理由は967の言うとおりCopyの返り値はString型だから。

str := Copy('もげもげ',1,1);
n := Ord(str[1]);

あたりが妥協策だろ。
0975デフォルトの名無しさんNGNG
>>974
なるほど わかりました
ありがとうございました
0976デフォルトの名無しさんNGNG
>>963
result := AnsiIndexStr(str, ['ぜろ', 'いち', 'にい', 'さん']);
0977デフォルトの名無しさんNGNG
>>976
こんな関数があるとは知らなかった・・。
0978デフォルトの名無しさんNGNG
Jpeg :=TJpegImage.Create ;
Jpeg.LoadFromFile(FileListBox1.Items[STrToInt(Label1.Caption) -1]) ;

PaintBox1.Canvas.StretchDraw(Rect(0, 0, 400, 600), Jpeg);

PaintBoxにJpgファイルを表示させているのですがウィンドウ上に他のウィンドウが重なってしまうとJpg画像が消えてしまい再表示されませんよね?
この回避方法があるんでしたら教えてください。
0979デフォルトの名無しさんNGNG
PaintBox の OnPaint イベントハンドラで描画する
0980デフォルトの名無しさんNGNG
再表示を自動でやってくれるのが TImage。
PaintBox でやるなら、OnPaint で描画するが、予めビットマップに変換しておく
ことを推奨 
0981デフォルトの名無しさんNGNG
ONPaint の条件としてはどんなんがありますか?
TForm1.activeみたいなかんじのがある?
0982デフォルトの名無しさんNGNG
> ONPaint の条件としてはどんなんがありますか?

意味がよく分からない。条件って何?
どんなときに呼び出されるか、ということなら再描画が必要なときに呼び出される
0983デフォルトの名無しさんNGNG
>>981
意味がわからない。

他のウィンドウが重なって消えた部分が
他のウィンドウより上に来たとき(消えた部分が再表示される必要が来たとき)に
Windowsから再描画しなさいというメッセージが発行される。
アプリケーションがそのメッセージを受け取ったとき
OnPaintイベントハンドラが呼び出される。

だからOnPaintイベントハンドラにどう再描画するかを記述しておく。
0984デフォルトの名無しさんNGNG
すみません勘違いしていました 
どんなときに最描写するか ではなく 最描写が必要なときにはどうするかという処理だったのですね。
ありがとうございました。
0985デフォルトの名無しさんNGNG
こんな感じです

> 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;
0986デフォルトの名無しさんNGNG
bmp は Form1 の public フィールド bmp:TBitmap ね
0987デフォルトの名無しさんNGNG
>>930
あなたのアナルをアナライズ
0988930NGNG
>>937,987
ああっ。すいません。
はい、解析を訳して
AnalyzeTextModeとしました。Interpretも候補に挙がったけどアナライズの方がいいかなと。
目に留めていただきありがとうございました。
0989デフォルトの名無しさんNGNG
パーサ
0990デフォルトの名無しさんNGNG
http://yougo.ascii24.com/gh/28/002856.html
0991デフォルトの名無しさんNGNG
Delphiで作られた有名なソフト教えてください。
0992デフォルトの名無しさんNGNG
Delphi
0993デフォルトの名無しさんNGNG
え?DelphiってDelphiで書かれてるの?
てっきりC++かと。
0994デフォルトの名無しさんNGNG
かちゅーしゃ
OpenJane
0995そろそろ埋めレスしていいのか?NGNG
HNに「@」が入ってる人、全然反省してない説。
0996デフォルトの名無しさんNGNG
くだすれDelphi(超初心者用)その14
http://pc5.2ch.net/test/read.cgi/tech/1085239007/
0997デフォルトの名無しさんNGNG
Delphiもスレとともにもう終了だな。
0998デフォルトの名無しさんNGNG
終わっているのはお前のプログラマーとしての素質じゃねーの?
0999デフォルトの名無しさんNGNG
997だけが終わっている。
1000デフォルトの名無しさんNGNG
999
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。