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

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

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

<その他>
BorlandHomePage
http://www.borland.com/jp/
DelWiki避難所
http://wiki.s54.xrea.com/delphi/
BDN(BorlandDeveloperNetwork)※英語
http://bdn.borland.com/delphi/

#過去スレは>>2-10のどこかに
2デフォルトの名無しさん:2006/08/11(金) 11:27:01
3デフォルトの名無しさん:2006/08/11(金) 11:28:04
4デフォルトの名無しさん:2006/08/11(金) 11:29:38
Delphiに関係してる雑談および関係してない雑談については以下で

バカボンのDelphi不買談話室その29
http://pc8.2ch.net/test/read.cgi/tech/1153227982/
5デフォルトの名無しさん:2006/08/11(金) 11:54:45
まだ早い。だが乙
6デフォルトの名無しさん:2006/08/11(金) 14:52:48
もういらね。だが乙
7デフォルトの名無しさん:2006/08/11(金) 15:09:48
こ、こんなスレなんて要らないんだからねっ
>1がかわいそうだったから書き込んだんたからねっっ
8デフォルトの名無しさん:2006/08/11(金) 16:09:58
乙かれさま。
愛してるわ>>1
9デフォルトの名無しさん:2006/08/12(土) 07:01:20
フォームの中にフォームを表示できますか?
vb.netではできるんですが
10デフォルトの名無しさん:2006/08/12(土) 07:26:39
できるが、厨房と初心者プロしかそんなことしない。
11デフォルトの名無しさん:2006/08/12(土) 07:35:30
>>9
MDIのことなら、MDIでぐぐれ。
意味があると思えないUIなら、
FormChild.Parent := TWinControl(FormParent);
FromChild.Show;
12デフォルトの名無しさん:2006/08/12(土) 07:50:00
http://dobon.net/vb/dotnet/form/formwithinform.html
こんな感じでお願いします。
13デフォルトの名無しさん:2006/08/12(土) 08:18:39
>>9
vb.netではできるんですが X
.netのAPIには実装されているんですが ○
14デフォルトの名無しさん:2006/08/12(土) 08:21:03
>>13
どっちでもいいですよw
15デフォルトの名無しさん:2006/08/12(土) 10:36:52
なんかいつもDelphiスレが他のDelphiスレと一緒に並んでるのは気のせい?
16デフォルトの名無しさん:2006/08/12(土) 19:02:44
新たに投入するTurbo製品セットには、「Turbo Delphi for Win32」
「Turbo Delphi for .Net」「Turbo C++」「Turbo C#」が含まれるという。
各バージョンには2つのエディションが用意される。無償ダウンロード版の
「Turbo Explorer」と有償版(価格は500ドル以下)の「Turbo Professional」である。
http://www.itmedia.co.jp/enterprise/articles/0608/08/news056.html
17デフォルトの名無しさん:2006/08/12(土) 21:34:12
>>16 すれ違いだ
18デフォルトの名無しさん:2006/08/12(土) 21:45:07
>>16
日本語の無料版はいつダウンロード開始ですか?
19デフォルトの名無しさん:2006/08/12(土) 22:36:15
何でDelphi使いって日本語に拘るんだろうね。
このインターナショナルなワールドワイドがグローバルの時代に。
俺たちVB使いには理解できないよ。
20デフォルトの名無しさん:2006/08/12(土) 22:55:14
ロクな日本語ヘルプも提供されないVBカワイソス
DirectXにいたっては無かったことにされてるしw
21デフォルトの名無しさん:2006/08/12(土) 23:11:08
Turbo Delphi
ちょいと興味がそそられた。

今じゃWebアプリしか作らん自分だが、その昔はずいぶんボーランド製品
使ってたからなあ。
たまにはバリバリのWindowsアプリも作りたいと思う今日この頃。
22デフォルトの名無しさん:2006/08/13(日) 00:21:26
なにつくるの?
23デフォルトの名無しさん:2006/08/13(日) 07:35:40
>DirectXにいたっては無かったことにされてるしw

俺みたいな日曜グラマーにはDirectX使いづらくなってるよ(´・ω・`)
堀さんやSandmanさんが活発にやってくれてた頃は週末が楽しみだったのに。
24デフォルトの名無しさん:2006/08/13(日) 15:10:14
なぜ、使いやすくなってるけど。きみが他人頼みだから退化してるんでは?
25デフォルトの名無しさん:2006/08/13(日) 16:53:42
>使いやすくなってるけど

使いやすくなってんの?
7から買ってないからわからん。
8以降のネットでの評価があんまりにも悪かったから。
26デフォルトの名無しさん:2006/08/13(日) 22:54:51
DirectXのヘッダは昔と比べて使いやすいものが出てる
もともと複数の関数で同じ引き数だったものが
それぞれ別のユーザー定義型になってる、なんていう間違いが減ってる
サンプルもちゃんと移植されていい感じ

Delphi用のライブラリってもう新しいのが出てこないけど
C++用だって新機能を積極的にサポートしようとするのは無いよ
みんな保守ばかり

.NETの事情は知らんけどどうなの?
27デフォルトの名無しさん:2006/08/14(月) 06:48:25
>Clootie graphics pages
>delphi dot dx

ググッたらこんなの出た。
どっち使ってるの?
28デフォルトの名無しさん:2006/08/14(月) 15:13:42
delphi dot dxはサイトごと消滅してないか?
29デフォルトの名無しさん:2006/08/14(月) 20:08:29
TStringListのcommatextを使ってCSVファイルを書き出しているのですが、
文字列をダブルクオーテーションでくくらないようにするにはどうすればいいですか。
30デフォルトの名無しさん:2006/08/14(月) 20:24:44
LANで繋がっている他のPC上のファイルをコピーしたり他のpcにファイルを書き出したり
したいのですが、assignfileやTFilestreamでファイル名の指定をどのようにすればいいでしょうか。
OSはXPでLANはTCP/IPです。
31デフォルトの名無しさん:2006/08/14(月) 20:49:38
>>29
TStrings.CommaText を使わず、自前で分割する。
若しくは代案として、ダブルクォーテーションで括られても構わないように実装する。
32デフォルトの名無しさん:2006/08/14(月) 20:52:16
","を置換すればいいんじゃね
33デフォルトの名無しさん:2006/08/14(月) 20:54:09
>>30
アクセス先のPC/フォルダが共有されており、同一ワークグループ内であれば、
\\(コンピュータ名)\(共有名)\パス
とか。
マイネットワークから実際にアクセスしてみて確認して見れ。
34デフォルトの名無しさん:2006/08/15(火) 04:48:01
任意のディレクトリを基準にして相対パスを絶対パスに変換する方法教えて。
GetFullPathNameだとカレントディレクトリを基準した変換しかできない。
35デフォルトの名無しさん:2006/08/15(火) 05:58:54
a案
 任意のディレクトリをカレントディレクトリに設定してGetFullPathName。
b案
 任意のディレクトリを基準にして相対パスを絶対パスに変換するコードを書く。
36デフォルトの名無しさん:2006/08/15(火) 07:53:23
IndyってMoziall Public License 1.1 (MPL 1.1)だよな?
これって配布する時ソースも配布しろってこと?
37デフォルトの名無しさん:2006/08/15(火) 16:58:05
Indy Modified BSD License
Indy MPL (Mozilla Public License) License

http://www.indyproject.org/License/index.html

どっちか好きな方って事じゃね
38デフォルトの名無しさん:2006/08/15(火) 18:52:15
パソコンに入れてパソコンごと配布しる!
39デフォルトの名無しさん:2006/08/15(火) 23:25:29
stringgridに書いたデータの保存方法を教えてください。
ネットで調べたところ、
var
F : TextFile;
I,J:Integer;
begin
AssignFile(F,'Grid.dat');・・・@
ReWrite(F);・・・A
for I:=0 to StringGrid1.ColCount-1 do・・・Bの1
for J:=0 to StringGrid1.RowCount-1 do・・・Bの2
Writeln(F,StringGrid1.Cells[I,J]);・・・C
CloseFile(F);・・・D
end;
という方法が載っていたのですが、ヘルプを見てもあまり意味が理解できませんでした。

@は「これからF=Grid.datを指す」という意味で、
Aは「grid.datという名前の新しいファイルを作成する」という意味でしょうか?
もしかすると全然的外れなことを書いているかもしれませんが、よろしくお願いします。
40デフォルトの名無しさん:2006/08/15(火) 23:25:48
MPLも「改変した場合は」差分を公開する等の必要があるってだけだし
41デフォルトの名無しさん:2006/08/15(火) 23:31:27
MPLは、ソースの改変にはGPL並の厳しさがあるけど、
ソースを改変せずに自分のプログラムに組み込む分にはえらく甘い。
MozillaのFAQサイトによると、MPLなライブラリを自分のアプリに組み込む場合は、
MPLなライブラリの著作権を明示、そしてどこでライブラリのソースが手にはいるか明記して、
さらに自分のアプリのドキュメントにライセンスに関する記述があるならば、MPLの条文をコピーしろ
とか書いてある。

でも、Indyの場合は、IndyのFAQで更に甘く設定されていて、単純にcopyright(c)以下略を書けばそれで良いと書いてあったはず。
42デフォルトの名無しさん:2006/08/15(火) 23:33:16
>>39 HelpでRewriteを読めば分かる。
43デフォルトの名無しさん:2006/08/16(水) 00:15:21
>39
まあ大体解釈合っているけど、
これはかなり原始的な手段だ。
VCL覚えた方が楽よ。TStringListとか。
44デフォルトの名無しさん:2006/08/16(水) 01:19:56
image[1]:=Image1;
image[2]:=Image2;
image[3]:=Image3;
・・・

をfor文を使って書くにはどうすればいいんでしょうか?
45デフォルトの名無しさん:2006/08/16(水) 04:33:04
FindCompon
46デフォルトの名無しさん:2006/08/16(水) 15:14:00
>>41
ありがとう。
tb2k等もMPLなので助かります。
こういう著作権関係の情報を
噛み砕いて教えてくれるところってどこかありますか?
47デフォルトの名無しさん:2006/08/16(水) 15:30:02
48デフォルトの名無しさん:2006/08/16(水) 15:37:59
>>39のプログラムを見て、いつも、turbo pascalから引きずっている、組み込み
手続きを懐かしく思うんだよなぁ。object pascalにstreamって概念なかったっけ?
49デフォルトの名無しさん:2006/08/16(水) 15:39:14
DBGridの特定行の色を変えたくて、金井利美男って人の書いた本のとおりに次のコードを書いてみました。

procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect:TRect; DataCol:Integer; Column: TColumn; State:TGridDrawState);

をprivate部に宣言
で、implementationで

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect:TRect; DataCol:Integer; Column: TColumn; State:TGridDrawState);
begin
 if (Table1.FieldByName('Age').AsInteger>16) then // 歳が16より高ければclAquaに変えたい
 begin
  DBGrid1.Canvas.Brush.Color := clAqua;
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
 end;
end;

と、ほぼ本に書いてある通りに打ち込んだんですけど、色が変わってくれません。
おそらく、DBGrid1DrawColuumnCellを呼んでないせいだと思うんですが、本ではどこで呼べとは書いてなくってそのままコンパイルしてみたんですが。

どうすればいいんでしょうか?
50デフォルトの名無しさん:2006/08/16(水) 15:42:58
なんだっけ、ほら、
つか、マルチポストかよ >>49
51デフォルトの名無しさん:2006/08/16(水) 15:50:03
ありゃ? 前スレに>>49書いたの僕ですが、こっちのスレには書いてませんよ?
誰かが移してくれたんですね。
52デフォルトの名無しさん:2006/08/16(水) 16:32:50
コマンドラインで、条件定義他を切り替えて、コンパイルできませんか?
コンパイルといか再構築というか。
リリース版とデバッグ版を一度に生成したいのですが。
53デフォルトの名無しさん:2006/08/16(水) 16:41:58
>>47
サンクス。
でも私にはそこ見てもよくわからなかったよ。
InnoEditXが色々なMPLのコンポつかって配布してあるようなので
これを参考にしたいと思います。
54デフォルトの名無しさん:2006/08/16(水) 18:35:46
アプリ起動時に例えばShiftキーを押しっぱなしなら別の処理をするような場合はどうすればいいんでしょう?
55デフォルトの名無しさん:2006/08/16(水) 20:21:22
>>54
イベントが使えないから、
GetAsyncKeyStateかな〜
5654:2006/08/16(水) 20:54:03
>>55
ありがとうございます、出来ました。
57デフォルトの名無しさん:2006/08/17(木) 11:26:59
単一ListBox 内で項目の並べ替えをドラッグドロップで実現しようと、こういうコンポを調べていたんですがリンク切ればかりで困っています。
やり方を知っているか、生きているサイトorコンポの所在を知っている方がいたら助けてください。
58デフォルトの名無しさん:2006/08/17(木) 12:13:14
ListのDragModeをAutomaticにしとく

procedure TForm1.ListBox1DragDrop(〜
var i: integer;
begin
i:= ListBox1.ItemAtPos(Point(X, Y), True);
if i<0 then i:= ListBox1.Count-1;
ListBox1.Items.Move(ListBox1.ItemIndex, i);
end;

procedure TForm1.ListBox1DragOver(〜
begin
Accept:= (Sender=ListBox1);
end;
59デフォルトの名無しさん:2006/08/17(木) 12:14:44
>>58
ありがとうございます!
今いじってて、DragModeってなんの役に立つんだ〜
って悩んでいたとこでした。

助かります!
60デフォルトの名無しさん:2006/08/17(木) 12:29:42
む、俺の環境では>>58のコードが通らないのはなぜだ?
6160:2006/08/17(木) 12:32:28
いやいや、Items.Countでしたね。
単純なことでした。
62デフォルトの名無しさん:2006/08/18(金) 01:19:08

image[2].parent によってコントロールの親を参照できるように
親から子を参照する方法はあるのでしょうか?
63デフォルトの名無しさん:2006/08/18(金) 01:42:36
Controls プロパティは,すべての子コントロールを表示します。
64デフォルトの名無しさん:2006/08/18(金) 10:02:10
Delphi 6 Personal で質問があります。

設計時パッケージとして設定できません。
パッケージをインストールした後、誤ってそのファイルを消してしまい、
次に Delphi を起動した時に、よく覚えてないのですが、
「次からはを読み込まない」みたいなことを尋ねられ、
「はい」と答えた後、再度パッケージをインストールしたのが、原因なのかもしれません。

また、パレットも再度インストール時に指定したものではなく、
パレットの設定で既に削除した筈の以前のパレットが勝手に復活して、
そこに設定されてしまいます。

何度もやってみたのですが、駄目でした。
何か情報が残ってしまってる感じがするのですが、
ちゃんとインストールするはどうしたら良いのでしょうか?
65デフォルトの名無しさん:2006/08/18(金) 11:03:16
レジストリに残っているのでは

HKEY_CURRENT_USER\Software\Borland\Delphi\6.0\Known Packages のエントリを消すと
直るかも。
66デフォルトの名無しさん:2006/08/18(金) 11:14:58
StringListでアイテムを重複無しにするため、何かプロパティがないか見てたんですが、Duplicatesっていうのがあって、これをdupIgnoreにすれば、重複は防げるようです。
ところが、dupIgnoreにするには、前提としてStringListをソートしとかないとダメみたいなんですが、使う頻度の高いものから上にしたい事情があって、ソートで順番を崩したくないんです。

forの二重ループでなんとかこの問題を解決できないか頭を捻ってみたんですが、いいアイデアがうかばず、それ以前にループなど使わなくても簡単にする方法があるのではないかと思い、質問します。

誰か、アイデアください!
67デフォルトの名無しさん:2006/08/18(金) 11:22:15
>>66
StringListを継承したクラスを作ってAddメソッドをオーバーライド。

Addの先頭で重複チェック処理を追加して、重複が無ければinheritedでStringList.Addを呼び出す
68デフォルトの名無しさん:2006/08/18(金) 11:59:44
>>66
Values 使えば?
69デフォルトの名無しさん:2006/08/18(金) 12:02:17
重複チェックしてからAddするのと変わらんくね?
要するに「重複チェック処理」が知りたいんだとオモ
マンドクセけど、Strings[hoge]のアイテムと同じものがStrings[hoge]のライン以前にあればAddしないようにすればいいんじゃね?
7066:2006/08/18(金) 12:06:13
>>67-69
レスありがとうございます

悩んでるんですけど、一つの方法としてstringList.IndexOf('hogehoge')>-1なら足すって感じがどうかなって思ってます
どっちみちforループは使わないとダメみたいですね
71デフォルトの名無しさん:2006/08/18(金) 14:11:00
どなたか、メモリリークがしてないかのチェックの仕方を教えてください。
72デフォルトの名無しさん:2006/08/18(金) 14:12:51
>70
だから Values って言ってんだろ!
73デフォルトの名無しさん:2006/08/18(金) 14:26:22
>71 MemCheck
74デフォルトの名無しさん:2006/08/18(金) 14:38:13
Values?
=が無いのにどこで使うんだ?
75デフォルトの名無しさん:2006/08/18(金) 15:22:23
質問させてください!

DBGridで、フォーカスが外れても選択されたままにしたい(TListViewのHideSelection := falseのようなことをしたい)んですが、どうすれば実現できますか?
7666:2006/08/18(金) 15:25:07
>>67-69
>>72

なんとか、stringList.IndexOfで初期の目的を達成しております。ありがとう。
77デフォルトの名無しさん:2006/08/18(金) 15:54:44
78デフォルトの名無しさん:2006/08/18(金) 16:01:44
>>75
OptionsにdgAlwaysShowSelectionをインクルード汁。
79デフォルトの名無しさん:2006/08/18(金) 16:16:10
Delphiでファイルの結合コピーってできますか?
MS-DOSの
copy /A 1.txt+2.txt 3.txt
みたいな事をしたいのですが、何かいい方法あるでしょうか?
80デフォルトの名無しさん:2006/08/18(金) 16:34:41
AssignFileしてAppendで開いてEofまでループ回すとか
StringListに1行ずつAddして最後にSaveToFileとか
TFileStream使ってファイルサイズ取得してWriteBufferでドカッと書いちゃうとか
81デフォルトの名無しさん:2006/08/18(金) 17:25:06
79です。
そうですか、やはり地道にやるしかないのですね。
ありがとうございました。
82デフォルトの名無しさん:2006/08/18(金) 17:32:53
>>63
ありがとうございました
83デフォルトの名無しさん:2006/08/19(土) 05:53:03
>>52
できる。 ヘルプ見よう。
8466:2006/08/19(土) 06:17:05
>>77
>>78
75です。ありがとう。
85デフォルトの名無しさん:2006/08/19(土) 21:42:53
>>71
Delphi2005以降なら、

dprのbeginの次に、
ReportMemoryLeaksOnShutdown := True;
でおk
86デフォルトの名無しさん:2006/08/19(土) 21:43:23
Delphiから使えるテンプレートエンジンはないですか
Rubyでいえば、erbみたいなものです
87デフォルトの名無しさん:2006/08/19(土) 21:49:06
88デフォルトの名無しさん:2006/08/19(土) 22:03:33
Delphiが大好きだ


でも、無くなってしまうのが残念だ
89デフォルトの名無しさん:2006/08/19(土) 22:28:56
Delphiが犬好きだ

でも、仕事場では使わせて貰えないの
90デフォルトの名無しさん:2006/08/20(日) 06:16:43
>>88
ラザスルがあるぞ。
コンパイルが遅いのが難だがまあまあ使える。
91デフォルトの名無しさん:2006/08/20(日) 08:43:37
>>87
DMonkeyはちと違うような・・・
単なるスクリプトですよね?
これを組み込んで、解釈すればってことでしょうか?
92デフォルトの名無しさん:2006/08/20(日) 14:45:43
ラザスル? ぐぐっても見つからないけど
93デフォルトの名無しさん:2006/08/20(日) 15:48:42
【Delphi互換!?】FreePascal【GPL】
http://pc8.2ch.net/test/read.cgi/tech/1137051510/
94デフォルトの名無しさん:2006/08/20(日) 15:57:46
Turbo Delphiが出るというのに何故ラザラス
95デフォルトの名無しさん:2006/08/20(日) 17:35:30
Turboって名前が嫌いだからにキマットル
96デフォルトの名無しさん:2006/08/20(日) 18:15:09
WebBrowserを使ってHTMLソースを手軽にイジル方法はありませんか?
今の所、Webで調べてWebBrowserからソースを取り出すことは出来たんですが、
それを戻したときにページのリンク先によってはうまくジャンプできなくなってしまいます。
バージョンはDelphi6です。何かよい方法があれば、よろしくお願いします。

var
StrList1: TStringList;
ms: TMemoryStream;
begin
StrList1 := TStringList.Create;
ms := TMemoryStream.Create;
StrList1.Text := OLEVariant(WebBrowser1.Document as IHTMLDocument2).Body.InnerHTML;

//ソースをいじる処理

StrList1.SaveToStream(ms);
ms.Seek(0, 0);
if Assigned(WebBrowser1.Document) then
(WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms));
StrList1.Free;
ms.Free;
end;
97デフォルトの名無しさん:2006/08/20(日) 23:13:14
//ソースをいじる処理

がなんだか分からないとコメントしようがない
98デフォルトの名無しさん:2006/08/21(月) 00:24:44
これは駄目なん?
(WebBrowser1.Document as IHTMLDocument2).Body.InnerHTML := StrList1.Text;
99デフォルトの名無しさん:2006/08/21(月) 01:08:25
Delphiで,マウスカーソルをプログラム側で動かすには,どうすればいいですか?
100デフォルトの名無しさん:2006/08/21(月) 02:47:36
The SetCursorPos function moves the cursor to the specified screen coordinates

SetCursorPos(X, Y) API
10196:2006/08/21(月) 14:17:48
>>98
ありがとうございます。出来ました。
102デフォルトの名無しさん:2006/08/21(月) 18:16:30
なんかTurboC++に駆逐されそうな気もしないでもない
103デフォルトの名無しさん:2006/08/21(月) 18:26:33
独り言はチラシの裏へ
104デフォルトの名無しさん:2006/08/21(月) 21:03:51
Memoコンポーネントで現在表示されている行数を取得するというテクニックはWeb上でも割と見られるものですが、
http://202.33.253.145/qanda/delphi/d0002808.html
(↑これなど)
では、Memoコンポーネントで、現在最上段に表示されている行のインデックスと、最下段に表示されている行のインデックスを取得する方法はあるんでしょうか?
アマチュアの僕には方法も思いつきません(APIか!?)

マスター、導師、鉄人クラスの方、ご指南おねがいします。
105デフォルトの名無しさん:2006/08/21(月) 21:17:02
EM_GetLineCount
EM_GetFirstVisibleLine
106デフォルトの名無しさん:2006/08/21(月) 21:38:27
最上段の行を取得する方法について、こういうのを見つけたんですが

http://www.wwlnk.com/boheme/delphi/tips/tec0290.htm

最下段を取得するのは(最上段+表示されている行数)で取得しろってことなんでしょうか?
最下段を取得する方法がわからない。

人大杉でなかなか書き込めん
107デフォルトの名無しさん:2006/08/21(月) 21:52:53
下=上+表示行数
108デフォルトの名無しさん:2006/08/21(月) 22:03:28
そうなのか…
ありがとうござんッス
109デフォルトの名無しさん:2006/08/22(火) 00:01:24
copyrect はjpegに対して使用することは出来ないんでしょうか?
また、それに準じる何らかの方法はありますか?
110デフォルトの名無しさん:2006/08/22(火) 00:34:22
こんばんは。教えてください。
フォームにストリンググリッドが張り付けられたプログラムがあるのですが、
メモ欄は小さいのにフォームだけが無駄に大きいので、フォームの隅をドラッグして
フォームだけ小さくしようと思いましたが、一定の距離ストリンググリッドに近づくと、
まだフォームの方が随分大きいのに、ストリンググリッドにスクロールバーが表示され、
一緒に狭くなってしまいます。
どうしたらフォームをストリンググリッドギリギリまで狭くできますか?よろしくお願いします。
111デフォルトの名無しさん:2006/08/22(火) 00:56:45
>109 BitmapにAssign(jpeg)するとか?
>110 Constraints
112デフォルトの名無しさん:2006/08/22(火) 03:08:30
エスパーな人に質問です
どうしてDelphiのアレって、アレなんですか?
113デフォルトの名無しさん:2006/08/22(火) 03:35:16
よくもまあ、そんなアホな書き込みができるな。
114デフォルトの名無しさん:2006/08/22(火) 08:55:12
>>112
pascal言語だからです。
115デフォルトの名無しさん:2006/08/22(火) 11:51:02
だからアレだよ?
夏だな。
116デフォルトの名無しさん:2006/08/22(火) 13:58:27
そのわりに、入門者がほとんどいない、という現実。
117デフォルトの名無しさん:2006/08/22(火) 15:19:38
>そのわりに、入門者がほとんどいない、

ここにいます!

MainMenuの意図した場所に動的にアイテムを追加して、そのアイテムをクリックで使えるように(自分で書いた処理とイベントをつなぐ?)にはどうしたらいいでしょう?
適切なサイトが見つからず、困っています。
118デフォルトの名無しさん:2006/08/22(火) 15:30:11
自作のプログラム内で圧縮した外部ファイルを展開するには、どういう方法があるんでしょうか?
119デフォルトの名無しさん:2006/08/22(火) 15:41:33
>アイテムをクリックで使えるように(自分で書いた処理とイベントをつなぐ?)

ヒント:OnClickプロパティ
120デフォルトの名無しさん:2006/08/22(火) 15:42:37
>>117
var
  MI: TMenuItem;
begin
  MI := TMenuItem.Create(Self); // 新しいメニュー項目のインスタンスを生成
  MI.OnClick := MenuItemClick;  // OnClick イベントハンドラの設定
  MainMenu.Items.Insert(0, MI);       // MainMenu の適当な位置に挿入

>>118
圧縮するためのプログラムを自分で組んだのならば、
展開するためのプログラムも同様に組んだらいいじゃない
121109:2006/08/22(火) 15:59:01
>>111
どういうことでしょうか?
122デフォルトの名無しさん:2006/08/22(火) 16:05:45
118です。

>>120
いいえ。LHASAなんかの別のアプリで圧縮したファイルを同一フォルダにでも置いて、実行時に展開しようかと思ったんです。
暗号化が精一杯で圧縮まで出来ませんです。
123デフォルトの名無しさん:2006/08/22(火) 16:21:38
>>122
普通にコンポ使えばいいじゃん。
124デフォルトの名無しさん:2006/08/22(火) 16:23:36
>121 何が分からないのか書け。
125デフォルトの名無しさん:2006/08/22(火) 16:25:33
>>124
BitmapにAssign(jpeg)する
という意味がよく分かりません。
一応ググってみてあたりをつけて何度か試してみたのですが画像のロード時にエラーがでてしまいまして
126デフォルトの名無しさん:2006/08/22(火) 16:50:27
procedure TForm1.Button1Click(Sender: TObject);
var j: TJpegImage; b: TBitmap;
begin j:= TJpegimage.create; j.LoadFromFile( '〜〜〜.jpg' );
b:= TBitmap.create; b.Assign(j);
Canvas.CopyRect(ClientRect, b.canvas, ClientRect);
j.Free; b.Free;
end;
copyrectを使うなら、CanvasプロパティがあるBitmapなどを使えば?
という事だけど、それ以前にcanvasとかは分かるのか?
127デフォルトの名無しさん:2006/08/22(火) 17:44:02
a
128デフォルトの名無しさん:2006/08/22(火) 17:52:19
>>106
>人大杉
つ 専ブラ
129デフォルトの名無しさん:2006/08/22(火) 18:40:52
>つ 専ブラ

ギコナビで書き込めなくて書くときだけブラウザ起動してるんだけど、
専ブラの種類によっては書き込めるの?
130デフォルトの名無しさん:2006/08/22(火) 19:08:19
>>129
クッキー対応した最新の専ブラにバージョンアップ
131デフォルトの名無しさん:2006/08/22(火) 19:30:54
助言くだされ。
Web(http/https)にアクセスしてタイトルだけ
とってきたいんだけど、どれが一番適切なんでしょう?
1.WinIntでとってくる
(文字のエンコードがやっかい.jconvertで全てを対応できない)
2.Indy
(httpsとかdll配布しないとだめだから、却下)
3.WebBrowser
(いい、けどマルチスレッド使えない。文字のエンコードが必要ない。後、微妙に無駄な気がする)

出来ればマルチスレッドでがんがんまわしたいんだけど
中々いい手法が思いつきません。
文字コード変換はjconvert一本じゃ手に負えないし
どうか助言くださいませんでしょうか。
132デフォルトの名無しさん:2006/08/22(火) 19:36:01
>>130
ギコナビからどれにバージョンうpすれば良いでつか?
133デフォルトの名無しさん:2006/08/22(火) 19:36:45
>>132
ギコナビの最新バージョンにすれ。
別にギコでなくてもいいけど、とりあえず最新版。
134デフォルトの名無しさん:2006/08/22(火) 19:42:48
あ、本当だ、書けた。
135デフォルトの名無しさん:2006/08/22(火) 22:41:11
TurboPascalやTurboを使っていたおじさんとしては
TurboC++の復活はうれしいけど、(もちろんTurboC#もうれしい)

Turbo Delphiは ゆ る せ ま せ ん

何ですかこのネーミング。 みなさん許せますか? 

TuboPascalのDOS/V版がでるのを夢見て、PC-9801用のVer6から使える部分だけ
抽出してDOS/V上で動かしていた頃が懐かしい。結局、TurboPascalはDelphiへ
進化したわけで、いまさらTurboを付けてほしくない。

21世紀の「コンパクトで安くて初学者向けのコンパイラ」=TurboPascal を
出してほしい。たとえ中身がDelphiでも、Delphi100%互換コンパイラ「TurboPascal」と
して販売してほしい。
136デフォルトの名無しさん:2006/08/22(火) 22:51:55
元より君の許しは必要ない
137デフォルトの名無しさん:2006/08/22(火) 23:19:35
くだらん
138デフォルトの名無しさん:2006/08/22(火) 23:48:27
Delphi言語に今さらPASCALなんて名前つけて売るなよ
139デフォルトの名無しさん:2006/08/22(火) 23:51:51
じじいの懐古趣味だろ
140デフォルトの名無しさん:2006/08/22(火) 23:52:19
そもそもDelphiとPascalは別の言語だろ
141デフォルトの名無しさん:2006/08/23(水) 00:04:30
Basic と VB の違いみたいなもんか?
142デフォルトの名無しさん:2006/08/23(水) 00:16:01
Basic → 言語
VB → 開発環境

Delphi → 言語
Pascal → 言語
143デフォルトの名無しさん:2006/08/23(水) 05:24:18
言語名がDelphi言語になったのを知らないで言ってるんだろw
144デフォルトの名無しさん:2006/08/23(水) 05:52:06
>>143
その話は夢でした。
インプライズって社名に変わったということも夢でした。
145デフォルトの名無しさん:2006/08/23(水) 10:11:52
editに文字が無いときはイベントを起こさない
という風にしたいのですが、
editに文字があるかどうかを判定するには
どうすればよいのでしょうか。
146デフォルトの名無しさん:2006/08/23(水) 10:18:31
if trim(edit.text)='' then
147デフォルトの名無しさん:2006/08/23(水) 10:18:52
if Length(Edit1.Text) = 0 then
148145:2006/08/23(水) 10:26:15
出来ました。ありがとうございます
149デフォルトの名無しさん:2006/08/23(水) 11:16:53
trimで判定? こんなの初めてみた。Length とどっちがいいんだろう。
150デフォルトの名無しさん:2006/08/23(水) 11:50:43
別にTrimで判定してるわけじゃないだろw
Trimはトリムしてるんだろwww

まあ、この場合はTrimいらないと思うけど。
151デフォルトの名無しさん:2006/08/23(水) 14:20:28
begin
活性水素;
日本トリム;
end;
152デフォルトの名無しさん:2006/08/23(水) 15:28:38
if Edit1.Text<>'' then
begin 〜

じゃ、いかんのん?
153デフォルトの名無しさん:2006/08/23(水) 16:56:13
もうそれは済んだ
154デフォルトの名無しさん:2006/08/23(水) 22:20:24
if trim(edit.text)='' then
if Length(Edit1.Text) = 0 then
if Edit1.Text<>'' then

どれが一番速いの?
155デフォルトの名無しさん:2006/08/23(水) 22:29:19
つCPUウィンドウ
156デフォルトの名無しさん:2006/08/23(水) 23:23:35
そんなものの速さが気になるなら、そもそもVCLは使わないようにしないと
157デフォルトの名無しさん:2006/08/23(水) 23:56:05
>>154
100万回ループさせて試してミリ!
つーかそれよりこのDBの最適化を何とかシリ!無茶苦茶ya
158デフォルトの名無しさん:2006/08/24(木) 02:17:52
>>155-157が答えを知らないのは解った
159デフォルトの名無しさん:2006/08/24(木) 02:19:37
>>158が答えを知ろうともしてないのは解った
160158死ね:2006/08/24(木) 02:29:28
スピードはLength>''>Trimの順番だと思う
TEdit.Textプロパティは長い文字列だから参照カウンタを持ってる
なのでそれを見るのが一番速い
''との比較もTrimも文字列操作だからそんなに変わらないと思うけど
なんとなく''との比較のほうが速そう
161デフォルトの名無しさん:2006/08/24(木) 02:43:10
一定時間ごとに音を鳴らすタイマーみたいなのを作る場合

タイマーコンポーネントを使うのが一番ですかね?

Timer1.Interval:=min*60+60000*sec
みたいなやり方でやってるんですが。
162デフォルトの名無しさん:2006/08/24(木) 02:50:52
タイマーつくるために TTimer をつかうことになんの疑問が?
163デフォルトの名無しさん:2006/08/24(木) 03:27:49
10ミリ秒毎に音を鳴らしたい場合TTimerだと分解能が足りないんです
2400日後にアラームをならしたい場合もTTimerだとオーバーフローします
164デフォルトの名無しさん:2006/08/24(木) 04:08:11
じゃあApplication.OnIdle
165デフォルトの名無しさん:2006/08/24(木) 05:30:41
>>163
2400日後に10ミリ秒の精度でアラーム鳴らすの?凄いね。

NextTime := now + 2400;
Timer1.Interval := 10:

と、コンストラクタで初期化して、タイマーイベントで

if now >= NextTime then 〜

で判定すれば良さそうだがどうか。
166デフォルトの名無しさん:2006/08/24(木) 05:46:54
それじゃだめ
167デフォルトの名無しさん:2006/08/24(木) 06:16:30
電源入れっぱなしだと日付が初期化されなかった?
168デフォルトの名無しさん:2006/08/24(木) 07:02:32
なんで誰もTrimに関して突っ込まないんだぜ?
Edit1.Textが「    」だった場合にも反応するぜ?
Lengthでの判定と明らかに結果が違う
169165:2006/08/24(木) 07:12:54
何が駄目なんだ。w
じゃあTTimerと同じようなコンポーネントでも作ったら。
スレッドで時間見てイベント発生させるだけだし。
170デフォルトの名無しさん:2006/08/24(木) 08:45:35
2400日後?
ずーっとパソコンの電源入れっぱなしにするの?

何に使うんだろう。
171デフォルトの名無しさん:2006/08/24(木) 09:53:23
>>161
mmtimer でググれ
172デフォルトの名無しさん:2006/08/24(木) 12:20:48
ネタスレだろここw
173デフォルトの名無しさん:2006/08/24(木) 14:27:06
>>161
精度がほしいならマルチメディアタイマー。
ただし、マルチスレッドになるので、マルチスレッドの知識がないと変なところでバグだすことも。
気をつけれ。

あとは、OnIdleか?
174デフォルトの名無しさん:2006/08/24(木) 14:31:29
imageコンポーネントに読み込んだ画像が大きかったとき画像をimageコンポーネントのサイズにあわせて縮小することはできますか?
Proportionalプロパテぃがそれに該当するかと思われたのですが駄目でした。
175デフォルトの名無しさん:2006/08/24(木) 14:35:23
Streatch := True
176デフォルトの名無しさん:2006/08/24(木) 14:56:30
うわーありがtぷ
勘違いしてた
177デフォルトの名無しさん:2006/08/24(木) 16:26:31
>>171
なんだか、Delphi 2.0,3.0用って書いてあるけど、Delphi6や7に入れてもだいちょぷなの?
178デフォルトの名無しさん:2006/08/24(木) 18:39:48
API のラッパだろ。バージョンはあまり関係ない
179デフォルトの名無しさん:2006/08/24(木) 19:43:15
WINDOWS VISTAに対応しますか?
180デフォルトの名無しさん:2006/08/24(木) 19:45:47
コンポーネントの状態の更新に、
TActionList.OnUpdateを使いたいのですが、
空のTActionListをフォームに置いただけでは、OnUpdateを呼ばれないようです。
OnUpdate互換のイベントは何かありませんか?
もしくは、TActionList.OnUpdateを呼ばせる方法はなにかありませんか?
181デフォルトの名無しさん:2006/08/24(木) 20:04:38
BDS2006なんですが、Update2あてたころからか、
コンパイルすると、ヒントが出たときに、なぜか外のウインドウに表示されます。

デスクトップの設定を「Default Layout」にすると、ドッキングされるのですが、
その後、実行して、再度ヒントが出ると、また別にウインドウが開きます。

別のウインドウがこれまた小さくて、エラーが見えづらいのです。
必ず起こるので、こまってます。
これって、バグなんでしょうか?
182デフォルトの名無しさん:2006/08/24(木) 20:05:33
バグでないと余計困るだろ。
183デフォルトの名無しさん:2006/08/24(木) 20:14:30
>>180
TApplication.OnIdle
184デフォルトの名無しさん:2006/08/24(木) 20:19:07
でました、StringReplace と同じくらい万能の TApplication.OnIdle
185デフォルトの名無しさん:2006/08/24(木) 20:33:55
>>183
OnIdleってつねに呼ばれ続けませんか?
ポーリングするときに使うもんだと思ってました・・・
186デフォルトの名無しさん:2006/08/24(木) 20:43:57
そりゃ、メッセージループでメッセージが途切れたらそこで呼ばれる。
逆に最小化されたりして、メッセージが飛んでこない時は一度も呼ばれない。
187デフォルトの名無しさん:2006/08/25(金) 06:24:37
Delphi覚えればメシが食えますか?
どのくらい使いこなせれば食えますか?
188デフォルトの名無しさん:2006/08/25(金) 07:36:06
使えなくても食えるから覚えなくていいよ
189デフォルトの名無しさん:2006/08/25(金) 08:10:07
Delphiをはじめてた初心者です
どうぞよろしくです

Editを3つ貼り付け、2つの数字と答えを出す
ごく初歩的な物を試しに作ってみたのですが
思ったような動きをしてくれません・・・
Procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
 i,j,k ; integer;
begin
 i := StrToInt(Edit1.Text);
 j := StrToInt(Edit2.Text);
 k := i + j;
 Edit3.Text := IntToStr(k);
end;

1.数字のみのキー入力に制限するのには???
2.Editコンポーネントに数字を入れた直後に答えを表示させたい
いまはEnterを押さないと計算してくれません

凄〜〜く素人な質問をしてるのは十二分に分かっていますが
こんな僕にやさしく教えてください
190デフォルトの名無しさん:2006/08/25(金) 08:22:35
procedure TForm1.Edit1Change(Sender: TObject);
begin
if (Edit1.Text <> '') and (Edit2.Text <>'') then
begin
try
Edit3.Text := IntToStr(StrToInt(Edit1.Text) + StrToInt(Edit2.Text));
except
ShowMessage('値が不正ですぅ・・・');
end;
end;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9']) then
Key := #0
end;
191デフォルトの名無しさん:2006/08/25(金) 09:10:00
>>187
ソフトハウスなどでは、ユーザー先がVB使っているから、
仕方無しにVBで開発っていうケースが多いと日経バイトか何かで読んだ。

うちの会社は全員Delphi使いだからVB使いは仕事無し。

結局、働く環境によるってことじゃない?
192189:2006/08/25(金) 12:31:34
>>190
こんなに早くのレスにびっくりです!
ありがとうございます!

ChangeとKeyPressの2段構えにしたのと
例外処理を書かないとダメなんだと言うのが勉強になりました

でも Edit○.Text <> " と Key:=#0 は何でしょうか?
参考書と睨めっこしたんですが分からなかったです・・・
193デフォルトの名無しさん:2006/08/25(金) 12:36:02
>>192
>Edit○.Text <> ""
今現在Edit○に何か入力されているかを判定。

>Key:=#0
今入力されようとしている文字を『何も入力されていない』ものとみなす。
194デフォルトの名無しさん:2006/08/25(金) 12:51:50
>>192
おにーさんはヒマだからいつでも質問待ってるよ
キミが可愛い男の子となら尚更だ
195デフォルトの名無しさん:2006/08/25(金) 13:09:13
すごいライブラリがきたよ
http://koyakudvd3.blog42.fc2.com/blog-entry-766.html
196デフォルトの名無しさん:2006/08/25(金) 13:32:40
アホか。
197189:2006/08/25(金) 13:36:58
>>193-194
またありがとうございます!
意味がやっと分かりました!

KeyPressで、数字以外は何も入力されてないようにして
Changeで、"空"以外の入力があったら目的の計算
例外処理が発生したら、値が間違ってるよと表示
とっても納得です!
意味が分かるととっても楽しいです〜

可愛い男の子かどうか分からないですけど
大学生1回生なので、中高生と違うから
あんまり可愛くないのかもしれないです。。。

これから図書館に行ってDelphi本を借りて勉強しようと思ってますが
また分からないことが出ちゃうと思うのでまた良かったら教えてください
ホントにありがとうございました
198デフォルトの名無しさん:2006/08/25(金) 16:54:10
>>191
Delphiだけでも食えることは食えるんですね。
最低でもプロになるにはVS.NetでC++使えないとダメだとおもってました。
実はVS.C++の前のステップに、とおもってDelphiやりはじめたんですが…

ところで、Panel1.Anchorsをコード上で設定したいんですが、どういう風に書けばいいんですか?
199デフォルトの名無しさん:2006/08/25(金) 17:01:39
今じゃ言語指定の仕事なんて少ないんじゃないかな
言われればVCでもDelphiでもVBでもJavaでも作るけど
VBだけは勘弁して欲しい

Panel1.Anchors := [akLeft, akTop];
200デフォルトの名無しさん:2006/08/25(金) 17:09:48
>>195
ブラクラ
201デフォルトの名無しさん:2006/08/25(金) 17:10:41
BDSで生成される.identcacheって消していいのかしら・・・
これってなんに使ってるんだろ?
バージョン管理ソフトにつっこんでいいんのか
202デフォルトの名無しさん:2006/08/25(金) 17:48:33
名前から察するに識別子のキャッシュ・・・入力支援で使われる物かな?
キャッシュなら消してもまた生成される気がする。
203デフォルトの名無しさん:2006/08/25(金) 22:33:39
財布から俺のキャッシュが消えるのが禿げしいんですが、どうすれば…
204デフォルトの名無しさん:2006/08/26(土) 00:09:06
最初から財布を空にしておけば良い。
ところでホモプログラマなんているの?
205デフォルトの名無しさん:2006/08/26(土) 00:47:50
D7のQuickReportで罫線をbandのframeで描いているのですが、width=1でも太さがちがうとゆう現象に悩まされています。
途中の横線より一番上や一番下の線が明らかに太いので、同じ太さにしたいのですが、どうしたらよいでしょうか。
206デフォルトの名無しさん:2006/08/26(土) 11:58:11
BANDで描かないで、QRShapeで描くと良い
207デフォルトの名無しさん:2006/08/26(土) 14:23:38
>>206
QRShapeだとプレビューと印刷のイメージが違いすぎるので使わなかったんですが、
これもどうにかならないんでしょうか。
罫線用のフリーのコンポーネントって無いのかな。
208デフォルトの名無しさん:2006/08/26(土) 14:51:43
×ゆう
○いう
209デフォルトの名無しさん:2006/08/26(土) 17:47:43
QRShapeはBandの境界付近はクリッピングの対象になるから気をつけろ。
ぎりぎりに配置するんじゃなくて数Pixel分余裕をもたせ。
210デフォルトの名無しさん:2006/08/26(土) 20:52:08
テキストファイルなどを、関連付けしているプログラムで開くならば

ShellExecute(Application.Handle,'Open', PChar('c:\aaa.txt'), '', '', SW_SHOW);

で、できたのですが、アプリを指定したい場合にはどうすればよいでしょうか?
よろしくお願いします。
211デフォルトの名無しさん:2006/08/26(土) 20:55:02
CreateProcessでググレ
212デフォルトの名無しさん:2006/08/26(土) 20:57:06
ありがとうございました。
調べます
213デフォルトの名無しさん:2006/08/26(土) 23:34:50
DBGridで特定の列だけ右寄せにするにはどうすればいいですか?
214デフォルトの名無しさん:2006/08/27(日) 01:30:58
ShellExecute(Application.Handle,'Open', 'notepad.exe', PChar('c:\aaa.txt'), '', SW_SHOW);
215デフォルトの名無しさん:2006/08/27(日) 04:33:32
Delphi6 personal で使用できるフリーなファイルDBライブラリを探しています。

sqliteなどのライブラリをみつけたのですが、vcldbが見つかりませんとなりコンポーネントのインストールすらできません。
(ちなみにvcldbはpro以上に付属してくるライブラリ)

いろいろ調べてるのですが、もし知っていらっしゃる方がいらっしゃれば教えてください。
216デフォルトの名無しさん:2006/08/27(日) 04:43:19
>>215
Wrapperならここに幾つか
http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers

www.torry.netにも色々と
217デフォルトの名無しさん:2006/08/27(日) 05:49:15
拡張子がwavのサウンドを鳴らすためには
MediaPlayerコンポーネント使うのが一番簡単なほうほうでしょうか
MediaPlayer使わなかったらwav鳴らせないよね?
218デフォルトの名無しさん:2006/08/27(日) 06:16:33
うんや 鳴らせる
219デフォルトの名無しさん:2006/08/27(日) 07:23:12
ググッたらすぐ出るだろ
220デフォルトの名無しさん:2006/08/27(日) 08:59:53
検索ばかりしてると馬鹿になるらしいから、ゴーグルは使いません。
221デフォルトの名無しさん:2006/08/27(日) 09:46:20
VBなら検索しなくていいのにね
222デフォルトの名無しさん:2006/08/27(日) 10:24:03
>>220
すでになっている、と思われ
223デフォルトの名無しさん:2006/08/27(日) 10:24:38
グーグルだし・・
224デフォルトの名無しさん:2006/08/27(日) 10:34:40
sndPlaySoundだっけか?
使わないから忘れたけど、確かいっぱい出てくるはず。

>DBGridで特定の列だけ右寄せにするにはどうすればいいですか

横やりすまないけど、これどうやるの?
こっちも知りたいし
225デフォルトの名無しさん:2006/08/27(日) 11:48:15
>>209
クリッピングって何でしょうか。
間空けると隙間出来ないですか?

追加で質問です。
クイックレポートのプレビュー画面で印刷ボタンを押すとすぐ印刷が始まりますが
ページ設定のダイアログを出してから印刷するように出来ないでしょうか。
一部だけ印刷したいときにうっかり印刷ボタンを押してしまって失敗することが無いようにしたいのです。

226デフォルトの名無しさん:2006/08/27(日) 12:40:47
クリッピングくらいぐぐればすぐでるだろ・・・
227デフォルトの名無しさん:2006/08/27(日) 12:48:32
VBならぐぐらなくてもいいのにね
228デフォルトの名無しさん:2006/08/28(月) 02:34:52
Delphi6 Personalで、VCLを使ったUnicodeアプリケーションを作ることは無理ですか?
TEdit等でUnicode文字を扱えるようにしたいのですが。

http://www.tntware.com/delphicontrols/unicode/
のようなコンポーネントもありますが、6 Personalでは一部必須ファイルがなく、
使えないようです。
229デフォルトの名無しさん:2006/08/28(月) 02:54:44
> 一部必須ファイルがなく、使えないようです。

聞いたことが無いが、具体的には?
230228:2006/08/28(月) 03:11:22
>>229
パッケージdclact, vcldbが見つからないとでて、インストールが出来ません。

http://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200312_03120110.html
にも書いてありました。Professional以上なら大丈夫そうですが
231デフォルトの名無しさん:2006/08/28(月) 03:53:42
例えば、1.exeから、2.exeを起動し、2.exeの処理が終わった時に、結果の文字列を1.exeに返して終了したい場合、
ファイルやDBを使わずにどのような方法があるでしょうか。

PostMessageや、標準入出力を使うにしても、どのようにすると実装できるのかわかりません。
232デフォルトの名無しさん:2006/08/28(月) 03:54:27
こちらに
http://www.tntware.com/delphicontrols/unicode/downloads.htm

Package for Delphi 6 Personal というページが紹介されています。
http://osdevel.org/projects/show_files.jsp?project=12
233デフォルトの名無しさん:2006/08/28(月) 04:03:50
234デフォルトの名無しさん:2006/08/28(月) 04:05:52
>>232
ありがとうございます。使うことが出来ました。
235デフォルトの名無しさん:2006/08/28(月) 10:34:38
>>231

「CreateProcess CreatePipe Delphi」でぐぐる
236デフォルトの名無しさん:2006/08/28(月) 11:49:43
TWebBrowserを非表示にしたままで、JavaScriptでタイトルを変更するHTMLを読み込むと、
JavaScriptでのタイトル変更時にTitleChangeイベントが発生しません。
TWebBrowserを表示してからNavigateすると発生するのですが、一度も表示させずにTitleChangeイベントを
発生させる方法はないでしょうか。
237デフォルトの名無しさん:2006/08/28(月) 12:08:41
ついでに、StatusChangeイベント等も発生しないようです。
もしかすると、TWebBrowserを非表示にしてページを開くと、Javascriptが実行されないのでしょうか?
そうだとすると、実行させる方法は無いものでしょうか。
238デフォルトの名無しさん:2006/08/28(月) 13:33:16
自分のコードで呼んだらいいんでは
239デフォルトの名無しさん:2006/08/28(月) 14:03:16
>>236-237
IEコンポは非表示の場合は描画が発生せず、イベントも起きない。
フォームの端っこに一ドットでも表示されているとイベントは起こる。
240デフォルトの名無しさん:2006/08/28(月) 15:03:38
>>239
それは知っているのですが、フォームを表示してしまうとフォームにフォーカスが移るため、それを避けたかったのです。

現在の構成は、メインアプリからブラウザ専用アプリを呼び出し、ブラウザ専用アプリで取得したWebページのタイトルを、メインアプリに返すというものです。
この時、ブラウザ専用アプリを表示してしまうと、メインアプリのフォーカスが奪われるため、困っていました。

フォーカスを奪わずに、アプリを起動させることができれば問題無いのですが、少なくともShellExecuteでSW_SHOWNOACTIVATEを指定しても駄目でした。
WebBrowserにメッセージを送るなどして、表示されたかのように思わせる事はできないものでしょうか。
241デフォルトの名無しさん:2006/08/28(月) 16:18:31
非表示でもかまわないなら、なぜ WebBrowser をつかうんですか?
メインのプログラムから、テキストとして Get して、タイトル部分を抜き出しらいいんでは
242240:2006/08/28(月) 16:21:00
>>241
javascriptがタイトル部分を生成するので、テキストでGetする場合はjavascriptを自前で実行しなければならなくなるんです。
243デフォルトの名無しさん:2006/08/28(月) 18:50:11
Enable:= false
244デフォルトの名無しさん:2006/08/28(月) 20:11:03
DisEnable:= true;
245デフォルトの名無しさん:2006/08/28(月) 22:57:10
配列の要素の最小値と最大値を返す関数ってなんだっけ?
for i := Min(HogeArray) to Max(HogeArray) do
みたいなの
246デフォルトの名無しさん:2006/08/28(月) 23:05:10
Low,High
247デフォルトの名無しさん:2006/08/28(月) 23:07:15
dくす
248デフォルトの名無しさん:2006/08/28(月) 23:13:07
MinIntValue, MaxIntValue
249240:2006/08/29(火) 00:18:31
>>243
メインフォームのEnableをfalseにしても効果無しです。
250デフォルトの名無しさん:2006/08/29(火) 01:03:00
ブラウザがあるフォームのEnable
251デフォルトの名無しさん:2006/08/29(火) 02:06:28
100000など6桁の数字の中にカンマではなく#2Cという文字を入れるには
どうすればいいですか?
100#2C000 このようにしたいんです。
252デフォルトの名無しさん:2006/08/29(火) 04:50:18
質問させてください
TableのFilterには条件式をシングルクォーテーションで包んで書けっていうのをみつけたんですが、
この条件式を

Table1.Filter := '([コード]>=1000)and([年齢]>=Edit1.Text)'

のようにEdit1.Textの値如何の式にしたい場合は''の中をどのように書けばいいんですか?
253デフォルトの名無しさん:2006/08/29(火) 06:28:44
フォーカスをどこに移していてもOnKeyPress時に実行するプログラムを作りたいのですがどうしたらいいですかね?

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char;);
begin
If (Key='a') then ShowMessage('Aが押されました');
end

これだとフォーカスがButton1になってる場合キーを押しても何も起きないので
Button1にもButton2にも同じようにaを押されたときの処理をコピペしてるのですが非効率的です

フォーカスにかかわらずOnKeyPressイベントを発生させるためにはどうやればいいでしょうか?
254デフォルトの名無しさん:2006/08/29(火) 07:59:05
>>253
一番わかりやすいのは Button1.onKeyPress := Form1.onKeyPress;
255デフォルトの名無しさん:2006/08/29(火) 08:53:24
>>253
TForm.KeyPreview
256デフォルトの名無しさん:2006/08/29(火) 10:18:49
最近ポインタを扱い始めましたが、メモリリークなどが発生するかどうか不安です。
下記のような書き方は問題ないですか?

type
 PMyRecord = ^TMyRecord;
 TMyRecord = record
  a, b: Integer;
 end;

var
 L: TList;

procedure Form1Create; // フォームが作成されたとき
var
 i: Integer;
 p: PMyRecord;
begin
 L := TList.Create;
 for i := 0 to 10000 do begin // 適当な回数
  New(p);
  p^.a := Random(10000); // 適当な数
  p^.b := Random(10000);
  L.Add(p);
 end;
end;

procedure Form1Destroy; // フォームを破棄するとき
var i: Integer;
begin
 for i := 0 to L.Count - 1 do Dispose(L[i]);
 L.Free;
end;
257デフォルトの名無しさん:2006/08/29(火) 10:23:17
また、下の3つのコードは、どれも結果としては同じ処理になるのでしょうか。

var i: Integer;
begin
 for i := 0 to L.Count - 1 do Dispose(L[i]);
 L.Free;
end;
------------------------------------
var i: Integer;
begin
 for i := 0 to L.Count - 1 do Dispose(PMyRecord(L[i]));
 L.Free;
end;
------------------------------------
var
 i: Integer;
 p: PMyRecord;
begin
 for i := 0 to L.Count - 1 do begin
  p := L[i];
  Dispose(p);
 end;
 L.Free;
end;
------------------------------------
最後に、このコードで、レコード型にStringを含めても大丈夫でしょうか。
258デフォルトの名無しさん:2006/08/29(火) 10:34:22
「delphiで作った全てのソフトはほぼ同じ文で作成されたもの。だから同じもの」福岡地裁でとんでも判決
http://news20.2ch.net/test/read.cgi/news/1156757299/
259デフォルトの名無しさん:2006/08/29(火) 10:46:43
ネタかと思ったぜ
260デフォルトの名無しさん:2006/08/29(火) 12:42:30
>>256

Dispose(PMyRecord(L[i])); にすべき。

>>257

最初だけ違う。それだとリークする。ニ番目と三番目は同等で、それでOK。

New() Dispose() を使う限り、string 入れてもOK。

おれだったらクラスにして TObjectList を使うが。
261デフォルトの名無しさん:2006/08/29(火) 17:23:37
TTreeViewで

@親があるかどうか
Aあったとして親のキャプション

を知るにはどうしたらいいんでしょうか?
子があるか知るにはHasChildrenがあるんですが、親の場合、わかりません…
262デフォルトの名無しさん:2006/08/29(火) 17:28:19
TTreeViewではなくて、TTreeNodeのプロパティを使う。
例えばTTreeView.Items[a].Parent でよい。

TTreeNode.Parent は、一番上のノードの場合にはnilになる。
子の場合は、TTreeNode.Count TTreeNode.Item を使う。
263デフォルトの名無しさん:2006/08/29(火) 17:54:43
なるほど、

if TreeNode1.Parent=nil then 親
でいいですね。

それで子を選択したとして、その子の直親のキャプション名を取得するにはどうしたらいいんでしょう?
264デフォルトの名無しさん:2006/08/29(火) 18:02:33
例えば
TreeView1.Items[1].Parent.Caption とすれば、Item[1]のcaptionが得られるのはわかるよね。
勿論、この処理の前に、if TreeView1.Items[1].Parent<>nil を入れてな。
265264:2006/08/29(火) 18:03:16
> TreeView1.Items[1].Parent.Caption とすれば、Item[1]のcaptionが得られるのはわかるよね。

もとい

TreeView1.Items[1].Parent.Caption とすれば、Item[1]の親のcaptionが得られるのはわかるよね。
266デフォルトの名無しさん:2006/08/29(火) 18:05:38
あー なるほど。
ParentはTTreeNodeで、Captionを持ってるんですね?

よくわかりました!
ありがとう
267デフォルトの名無しさん:2006/08/29(火) 19:22:43
Jane系はDelphiで作られているようですが、
Doeの表示部分のコンポーネントは何を使っているのですか?TRichEditでしょうか
268デフォルトの名無しさん:2006/08/29(火) 19:24:40
ソース公開されてるから探せ
269240:2006/08/29(火) 20:21:26
TWebBrowserを表示せずにjavascriptの実行及びイベントを発生させる件ですが、方法が見つかり無事解決しました。
有り難うございました。
270デフォルトの名無しさん:2006/08/29(火) 20:58:11
方法は未公開ですか。そうですか。
271デフォルトの名無しさん:2006/08/29(火) 21:20:58
OpenJaneのソース見ろや。
272質問です:2006/08/29(火) 23:26:02
Delphi 6 Personal版です。よろしくお願い致します。
自作のプロシージャ内でコンポーネントに変更を加えようとするとエラーになります。
例えば、フォームにEdit1を置き、またSUB1というプロシージャを作り、その中でEdit1の値を変更しようとすると、
『')'が必要な場所に':='があります』『未定義の識別子:'Edit1'』と表示され止まってしまいます。

implementation // ここから上は何も変更していません

{$R *.dfm}
// ↓このプロシージャを追加しました
procedure SUB1;
begin
Edit1.Text := 'ABC'; //←ここでエラーになります
end;
// ↑ここまで
procedure TForm1.FormCreate(Sender: TObject);
begin
//Edit1.Text := 'ABC'; //←ここで変更すると上手くいきます
SUB1;
end;
end.

コンポーネントの値を変更する時は、上の方で何か宣言が必要なのでしょうか?
273デフォルトの名無しさん:2006/08/29(火) 23:29:31
>>272
Pascal≠Cですよ。
endの前の ; は邪魔です。削りましょう。
274デフォルトの名無しさん:2006/08/29(火) 23:29:33
Form1.Edit1.Text := 'ABC';
とすればよい。
275デフォルトの名無しさん:2006/08/29(火) 23:30:35
>>273
別につけたって構わんし、普通はつける。
276デフォルトの名無しさん:2006/08/29(火) 23:31:59
C++で言うと、TForm1:: が抜けているのと同じ感覚だな。
クラス外からprivateメンバにアクセスする事なので、見つからない。
277デフォルトの名無しさん:2006/08/29(火) 23:32:43
private じゃないけどな。
278デフォルトの名無しさん:2006/08/29(火) 23:34:41
スコープ外
procedure SUB1は汎用的な手続き
procedure TForm1.FormCreate(Sender: TObject)はForm1に属する手続き
279デフォルトの名無しさん:2006/08/29(火) 23:36:00
純粋に俺が無知でわからないのだけど、
>>273は具体的にどこの ; のこと?
280デフォルトの名無しさん:2006/08/29(火) 23:38:49
procedure TForm1.hoge
begin
 なんたらかんたら〜
end; ←ここのend

;が文の終わりを表すCと;が文と文の区切りに過ぎないPascalの違い棚
281質問です:2006/08/29(火) 23:52:11
遅れてすみません、皆さんどうもありがとうございます!!
//書き込み直後のリロードでは自分の投稿しか表示されないのに気づかず、
//ずっと更新ボタン押してました…

できました。昨日からずっとネットや書籍で調べていたのですが、分かりませんでした。
本当にありがとうございました。
282279:2006/08/29(火) 23:59:52
>>280
へ〜、そこのendの前の ; はつけなくてもいいんだ
漏れも ; が文の終わりだと勘違いしてた
サンクス
283デフォルトの名無しさん:2006/08/30(水) 00:45:09
> 昨日からずっとネットや書籍で調べていたのですが、分かりませんでした。

クラス、スコープ、self について勉強するといいよ。
284デフォルトの名無しさん:2006/08/30(水) 01:00:17
困ったらまたおにーさんが教えてあげるよ
キミが可愛い美少年なら尚更
285デフォルトの名無しさん:2006/08/30(水) 02:41:36
YOUはこっち来なよ
286デフォルトの名無しさん:2006/08/30(水) 03:18:33
YOUはSHOKC!
287デフォルトの名無しさん:2006/08/30(水) 04:17:17
>>286
まいどん
288デフォルトの名無しさん:2006/08/30(水) 04:27:39
shock
289デフォルトの名無しさん:2006/08/30(水) 16:25:43
よくprivateなメンバ変数の名前は、F〜ってなってるけど、このFって何の略?
290デフォルトの名無しさん:2006/08/30(水) 16:32:48
フィールド
291デフォルトの名無しさん:2006/08/30(水) 16:33:06
藤井フミヤだよ!
292デフォルトの名無しさん:2006/08/30(水) 16:36:47
>>291
つまんね
293デフォルトの名無しさん:2006/08/30(水) 17:28:35
    / ̄ ̄ ̄ ̄\,,      /_,,    ,,_  \
   /_____  ヽ    / (@)ヅ=ヾ(@));;;;;  \     
   | ─ 、 ─ 、 ヽ |  |   / /〆"●⌒ヾ;;;;;\    ヽ
   | @ | @ |─ |___/   |三(__|___)三、   |
   |` - c ヾー' ;;;;; 6 l    |.  |  |  | ノ::ヾ  |   |
.   ヽ ィエエエエ》ヾ,,,-′   |  Y ̄Y ̄Y ̄Yノノ   |   l
     ヽ ___ /ヽ    ヽ と ̄^ ̄^ ̄^"シ   / /
     / |/\/ l ^ヽ    \ """"""     / /
     | |      |  |     l━━(t)━━━━┥
294デフォルトの名無しさん:2006/08/30(水) 18:22:29
Paradox <- TQuery <- TDataSetProvider <- TClientDataSet <- TDataSource <- TDBGrid

の構造の時に一旦設定してしまったDBの特定のフィールドを無効値(Null)に
設定しなおすのはどうやればいいのでしょうか?
295デフォルトの名無しさん:2006/08/30(水) 18:35:38
Paradox のテーブルを作り直して
データを入れなおす?
296デフォルトの名無しさん:2006/08/30(水) 18:38:19
ちなみに、
Quety1.Open;
Query1.Edit;
Query1.FieldByName('フィールド名').Assign(Nil);
だと、「書き込み禁止のデータは変更できません」とか言われます。
同じフィールドをSQLを設定してからExecSqlを使って更新するとちゃんと
更新できるのになぜ書き込み禁止と言われるのかもよくわかりません。
297デフォルトの名無しさん:2006/08/30(水) 18:40:43
さっぱり意味わからんが
キャッシュアップデートと、updatesqlで解決。
298デフォルトの名無しさん:2006/08/30(水) 18:45:39
Query1.FieldByName('フィールド名').Clear
とか無かったか。
299デフォルトの名無しさん:2006/08/30(水) 18:57:17
300デフォルトの名無しさん:2006/08/31(木) 03:25:47
WinXp SP2でBDS使ってます(SP2あててます)
今までずっとBCBしかいじってなかったので、ASP.NETに興味ががありまして(ネット関連は殆どやったことなし)、
書籍のサンプルコードをDELPHI.NETで入力し、指定のフォルダに置いて実行してみたのですが
エラーになりました。
IISはインストールしてあったので、理由がわかりません。
そこで、書籍に紹介されていた「Cassini」というローカルサーバ(というのでしょうか?)をインストール
してみたら、期待通りの結果が得られました。
BDSのプロジェクト→オプション→デバッガ→ASP.NETでは、IISかCassiniを選択できるのですが、なぜIIS
だとエラーになってしまうのでしょうか?

ちなみにエラーメッセージは「仮想ディレクトリ”xxx”がASP.NET version 1.1で設定されていないため、
プロジェクトがデバッグできません。 aspnet_regiis.exeを使ってローカルIIS Web サーバを設定してください」
という内容です。
aspnet_regiis.exeを「ファイル名を指定して実行」すると、一瞬、コマンドプロンプトが表示されてすぐ消えてしまいます。
どうぞよろしくおねがいします。
301デフォルトの名無しさん:2006/08/31(木) 04:53:48
>>251
L := N div 1000;
R := N mod 1000;
Result := IntToStr(L) + '#2C' + IntToStr(R);
でどうかな。
302デフォルトの名無しさん:2006/08/31(木) 08:30:37
123056 だと 123#2C56 になるでしょ、それだと。
303デフォルトの名無しさん:2006/08/31(木) 08:32:03
まず文字列にしてからInsertするんだな。
304240:2006/08/31(木) 08:34:45
>>300
コマンドプロンプトを開いてから実行すれば消えないよ。
305デフォルトの名無しさん:2006/08/31(木) 14:38:17
TEditに数字だけを入力させる方法はわかりました。
次に、TUpDownをアソシエイトして、かつEditからも数字を入力できるようにしたいんですが、TUpDownのMaxがSmallIntなのでSmallIntの最大値より大きな数はEditに入力できないようにしたいんです。
そこで、TEditのOnkeyPressに

// constで
// EDIT_MAX=32767; を宣言している

if EDIT_MAX-1 < StrToInt(Edit1.Text) then Edit1.Text=IntToStr(EDIT_MAX);

と書き加えたら、「プロセスは停止しています」とエラーが出てしまいました・・
UpDown付きのEditに、ある数以上の数を入力した場合、設定してある最大値に下げるには、どうやってるんでしょうか?
306デフォルトの名無しさん:2006/08/31(木) 15:08:52
キーが押された時じゃなくて離した時点で判定を行うから
onKeyPressじゃなくてonKeyUpイベント内に記述する
Edit1.Textが空白ならIntToStrで例外が発生するから対策をしておいて
数字以外の入力を防ぐためKeyPressイベントにも記述する

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
 if Edit1.Text = '' then exit;

 if EDIT_MAX-1 < StrToInt(Edit1.Text) then
  Edit1.Text := IntToStr(EDIT_MAX);
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 if not (Key in ['0'..'9']) then Key := #0;
end;
307デフォルトの名無しさん:2006/08/31(木) 15:25:34
文字列からクラスに変換する方法ってありませんでしたっけ・・・
googleってもいまいちやり方が出てこない・・・
308デフォルトの名無しさん:2006/08/31(木) 15:31:54
意味不明
309307:2006/08/31(木) 15:33:46
えっとですね。

 StringToClass("TString").Create

みたいにしたいのですが・・・

ちょっと調べた限り、
RegisterClassとFindClass使うようなのですが、
TPersistentClass継承していないと無理なようですね・・・
310デフォルトの名無しさん:2006/08/31(木) 15:39:53
任意の文字列を渡してその文字列名クラスを作りたいのね
TStrings.Create→StringToClass("TStrings").Createこういうノリか
ごめんシラネw

蛇足だけどTStringsは抽象クラスだから
直接インスタンスを生成したらDelphiの神様の天罰が下ります
311デフォルトの名無しさん:2006/08/31(木) 15:42:53
みなさんこんにちわ(o*。_。)o
お尋ねしたい事があり書き込みさせて頂きます。

色々なサイトでIDやPassを自動配信するシステムがありますよね?
そのシステム方法を教えて頂けないでしょうか。
探してみて無料配布しているところなど探してみたのですが
見当たりませんでした。配布されているものじゃなく作る物なのでしょうか?
もし、作る物であるのならわかる方に教えて頂きたく思います。

どうぞ宜しくお願い致します(*- -)(*_ _)
312デフォルトの名無しさん:2006/08/31(木) 15:55:37
>>311
たとえば何処?例をあげないと、いろいろあるからやりたいことが特定できないと思うよ
313デフォルトの名無しさん:2006/08/31(木) 16:09:22
Delphi じゃなくて Perl や Ruby や Python のすれにいくべきだと思うが
314デフォルトの名無しさん:2006/08/31(木) 16:10:16
312さん、ありがとうございます。
例えば、yahoo等でもIDをもらう前に登録をしますよね。
その際に、IDやPassがyahooから自動的に送信されますよね。
そのシステムを知りたいのです。

説明が下手で申し訳ありません(*- -)(*_ _)
315デフォルトの名無しさん:2006/08/31(木) 16:14:25
316デフォルトの名無しさん:2006/08/31(木) 16:17:16
313さん申し訳ありませんでした。
317307:2006/08/31(木) 16:19:28
>>310
TStringsは適当です。ごめん。



TPersistent継承してれば、以下のような形で生成はできるっぽい。
RegisterClass(THoge);
が、めんどくせーよ。クラスがたくさんあると大変だ orz


type
  THoge = class(TPersistent)
    procedure Print;
  end;

{ THoge }
procedure THoge.Print;
begin
  OutputDebugString('Hello in THoge.Print');
end;

318デフォルトの名無しさん:2006/08/31(木) 16:25:50
Javaのクラスローダーみたいなもんか
319307:2006/08/31(木) 16:30:15
procedure Nontoka;
var Hoge: THoge;
begin
  Hoge := THoge(GetClass('THoge').Create);
  try
    Hoge.Print;
  finally
    Hoge.Free;
  end;
end;

initialization
  RegisterClass(THoge);
320デフォルトの名無しさん:2006/08/31(木) 16:35:00
キャストするのが泣かせるねぇー。
321デフォルトの名無しさん:2006/08/31(木) 17:01:08
クラスローダーの様な実行時バインディングはネイティブアプリである
Delphiではどちらかというと不向きではあるが・・・

実際は抽象化されたスーパークラスやインターフェースで具象クラスを
隠すべきなのだろうな。DelphiのインターフェースはCOM用に拡張されたもの
なので若干扱いが面倒だが。
322305:2006/08/31(木) 18:05:07
>>306
サンクスです!
323デフォルトの名無しさん:2006/08/31(木) 18:18:05
次のような動作をするアプリケーションAを作るにはどうすればよいのでしょうか?

1)アプリAを前もって起動させておく
2)他のアプリがアクティブな状態で、例えば、CTRL+ALT+A を押すと
 アプリAにある特定の処理をさせる。(フォーカスはそのまま)

フック関数を使って、メッセージを横取りする方法しかありませんか。
よろしくお願いします。

 
324デフォルトの名無しさん:2006/08/31(木) 18:30:45
グローバルフックでググレ
325デフォルトの名無しさん:2006/08/31(木) 19:13:29
クラスの概念がまったくわからん
構造体じゃ駄目なのか?
326デフォルトの名無しさん:2006/08/31(木) 19:33:55
構造体で用が足りるなら別にそれでいい。設計の問題だ。
327デフォルトの名無しさん:2006/08/31(木) 19:44:29
C++なんかでは元々差がないしな。
Delのレコード型もメソッド持たせられるようになったからクラスとの差がかなり縮まった気はする。
でもレコード型は継承できないから多態させることができない。これは大きい。
328デフォルトの名無しさん:2006/08/31(木) 20:01:07
>>325
スレッドまるまる費しそうな質問だな。(w
とにかくその手の質問は自転車に乗ったことの無い人に
乗り方を教えるぐらい説明が難しい。
329デフォルトの名無しさん:2006/08/31(木) 20:38:59
自転車の概念がまったくわからん
徒歩じゃ駄目なのか?
330デフォルトの名無しさん:2006/08/31(木) 20:41:58
概念とかいってるより、まず、使って見れ。作って見れ。
だんだん分かってくる。自転車は、徒歩よりずっと便利な場合が多い。
もちろん、徒歩でも十分な場合もある。トイレいくとき、とか。
331デフォルトの名無しさん:2006/08/31(木) 20:43:04
自転車なんて自作するようなものじゃないだろ
332デフォルトの名無しさん:2006/08/31(木) 20:46:17
クラスなんか自作するもんじゃないだろ。適当にひろってくるものなんだ。なぁ、>>331
333デフォルトの名無しさん:2006/08/31(木) 21:28:53
Delを使えば嫌でもクラス自作することになるのだが。
334デフォルトの名無しさん:2006/08/31(木) 22:04:46
拾いもので済む程単純なクラスで間に合うのなら、それでいいだろうな。
335デフォルトの名無しさん:2006/08/31(木) 22:42:56
TShapeを拡張したのを自分で作ったは良いが、後で見つけた同じような
コンポーネントの方がよっぽどマシだったことがある。くやしかった。
336デフォルトの名無しさん:2006/08/31(木) 23:35:14
その悔しさを本当に無駄にするかどうかは自分次第。

>>333
フォームのイベントハンドラを実装している行為そのものがそうだからね。
あまり意識されてないけど。自分では自転車に乗れないと思い込んでる
人が足元を見てみたらペダル漕いで進んでたみたいなもんだな。
337デフォルトの名無しさん:2006/08/31(木) 23:56:48
そうなんだ。原理をしらないDelphiユーザ大杉。Win32も知らなさすぎ。
338航海王子 ◆U6/faU4Zww :2006/09/01(金) 00:02:28
お前だけだろw
339デフォルトの名無しさん:2006/09/01(金) 02:37:57
>>301
せっかくだからdivmodつかったらどうよ
340デフォルトの名無しさん:2006/09/01(金) 02:52:46
じゃこう。
Result := Format('%d#2C%.3d', [N div 1000, N mod 1000]);
341300:2006/09/01(金) 08:07:33
>304
レスアリガd

確かに消えずに見れました!
で、help見てみたんですがさっぱり用語が分かりません^^;
まず、意味の分からない用語から調べてみます。

また何かありましたらよろしくです。
342デフォルトの名無しさん:2006/09/01(金) 16:53:02
過疎スレsageておきますね^^
343デフォルトの名無しさん:2006/09/02(土) 04:29:43
>>342
乙。
344デフォルトの名無しさん:2006/09/02(土) 05:14:00
使わないからド忘れしてるんだけど、ボタンを押しっぱなしにできるコンポは標準でなかったっけ?
TSpeedBtnにあったと思ったんだけどプロパティが見つからん。
345344:2006/09/02(土) 07:25:17
ごめんちゃい。
自己解決。
346デフォルトの名無しさん:2006/09/02(土) 07:31:51
StringReplace使えよ。
S := FormatFloat('#,##0', N);
S := StringReplace(S, ',', '#2C', [rfReplaceAl]);
347デフォルトの名無しさん:2006/09/02(土) 09:22:53
StringReplaceは万能だからな
348デフォルトの名無しさん:2006/09/02(土) 18:35:57
Windows APIのBitbltやTCanvasクラスのDrawメソッドを使って画面上に
画像を描写した場合、画像の上にウインドウが重なると重なった部分が削除
されてしまいます。

うまく、ずっと表示させておく方法を教えてください。
349デフォルトの名無しさん:2006/09/02(土) 18:46:43
1. 再描画が必要になるたびに描き込む。
2. TImage コンポーネントを使う。

好きなほう選べ。
350デフォルトの名無しさん:2006/09/02(土) 20:14:23
ListViewのアイテム数分処理を繰り返す時に
for i := 0 to ListView1.Items.Count - 1 do begin
 S := ListView1.Items[i].Caption;
 他の処理
end;
こんな感じの所があるのですが、例えばListViewにアイテムが5個ある時、何故かループ用変数「i」が4で止まらずに
延々ループしてしまう現象に出くわしました。
ListView1.Items[5]が無いのでエラーが出ます。
今までは上記のような記述でうまくいっていたので何故i=4の時点でループを脱出しないのかさっぱりわかりません。
何かおわかりになられる方はおられますでしょうか?
351デフォルトの名無しさん:2006/09/02(土) 20:34:06
>>349
ありがとうございます。それぞれの方法を模索してみます。

>>350
ループの中で変数iを弄ってたりするのではないでしょうか。
単純化してまたそれが起こるような事はないと思います。
352350:2006/09/02(土) 20:57:27
>>351
ループ中に変数iを弄るような事はしてませんです。

色々コメントアウトしてみた結果、どうやら正規表現のマッチングを調べる自作関数を呼ぶとおかしくなるようです。
正規表現部分はググり先から拾ってきた物を関数化した物です。
ループ中に何度も呼ぶのでどこかでおかしくなってるのかもしれません。

という事でお騒がせしました。ちょっとやり直しのようです。
353デフォルトの名無しさん:2006/09/02(土) 23:31:20
  with dmRirekiEdit.SHOMQuery do begin
    Close;
    Parameters.ParamByName('TOKU_CODE').Value := W_TOKU_CODE;
    Open;
    if recordcount <> 0 then begin
      First;
      While not EOF do begin
          with dmRirekiEdit.RIREKIQuery do begin
            Close;
            Parameters.ParamByName('TOKU_CODE').Value  := dmRirekiEdit.SHOMQuery.FieldByName('TOKU_CODE').Value;
            Parameters.ParamByName('SHOU_CODE').Value  := dmRirekiEdit.SHOMQuery.FieldByName('SHOU_CODE').Value;
            Open;
            if recordcount <> 0 then begin
              for i := 0 to  30 do begin
                SG2.Cells[i*2+7,y] := IntToStr(FieldByName('OUT' + IntToStr(i + 1)).AsInteger);
              end;
            end
        Next;
      end;
    end;
354353:2006/09/02(土) 23:32:23
上記SQLでStringGridへのセットをおこなっていますが、
表示までに1分近くかかります。
内側のSQLをやめて外側のSQLからのタイトルセットだけにした場合は2秒ほどで表示されます。
根本的におかしな使い方をしているのでしょうか?
解決するまで帰れません orz
355デフォルトの名無しさん:2006/09/03(日) 00:29:52
外側でレコード件数が何件あるか分かりませんが、
素直にタイトルと履歴情報を含めて一発でデータ取得した後に、処理すればいいような気がする
356デフォルトの名無しさん:2006/09/03(日) 00:59:26
end
357353:2006/09/03(日) 01:42:30
>>355
ありがとうございます。
400件ほどです。
一発でやれれば良いのですが、商品マスタがあっても履歴情報がない場合は
空白を埋める必要があるのでできないのです。
最初一発でやっていて早かったので安心していたのですが
商品マスタが全部表示されてないと指摘され変更したところ
動きが遅くなってしまいました。

>>356
コピペミスです。
念のためNextの位置は見直しました。
358デフォルトの名無しさん:2006/09/03(日) 02:29:42
withのネストは関心しない。
359353:2006/09/03(日) 03:08:56
>>358
修正します。
が、明日出勤してからすることにします。
360デフォルトの名無しさん:2006/09/03(日) 03:11:41
無理せずACCESSのVBAで組めよ。楽だぞ。
361デフォルトの名無しさん:2006/09/03(日) 03:59:48
http://news.google.co.jp/news/aaa?q=aaaaaaaaa
といったアドレスで
news.google.co.jpを返す関数ありますか?

それと、news/aaa?q=aaaaaaaaaを返すような関数も探しています。
362デフォルトの名無しさん:2006/09/03(日) 04:31:05
エスパー募集中な予感・・・
363デフォルトの名無しさん:2006/09/03(日) 04:45:15
自分で文字列パースしる
364デフォルトの名無しさん:2006/09/03(日) 04:46:43
function Mae(s: string):string;
begin
  s := StringReplace(s, '//', '++', [rfReplaceAll]);
  result := Copy(s, Pos('++', s)+2, Pos('/',s) - Pos('++', s) - 2);
end;

function Usiro(s: string):string;
begin
  s := StringReplace(s, '//', '++', [rfReplaceAll]);
  result := StringReplace(Copy(s, Pos('/',s)+1, Length(s)), '++', '//', [rfReplaceAll]);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := Mae('http://news.google.co.jp/news/aaa?q=aaaaaaaaa');
  Label2.Caption := Usiro('http://news.google.co.jp/news/aaa?q=aaaaaaaaa');
end;
365デフォルトの名無しさん:2006/09/03(日) 04:48:45
訂正

function Usiro(s: string):string;
begin
  s := StringReplace(s, '//', '++', [rfReplaceAll]);
  result := Copy(s, Pos('/',s)+1, Length(s));
end;
366デフォルトの名無しさん:2006/09/03(日) 05:07:22
TListViewで、OwnerDrawをTrueにすると、アイテム数が多くても軽く表示できる、と聞きました。
このOwnerDrawというのは具体的には何なのでしょうか。ヘルプには「仮想リストビュー」とありますが、理解できません。
実際にTrueにし、いつも通りアイテムをAddしても何も表示されず、メモリリークしているようです。
どのようにして使うのか、ご教授下さい。
(OwnerDraw Delphi でググりましたが、最適なページを見つけられませんでした
367365:2006/09/03(日) 05:08:53
↑ごめんなさい。本文全て OwnerDraw ではなく、 OwnerData の間違いです。
368デフォルトの名無しさん:2006/09/03(日) 05:33:40
369デフォルトの名無しさん:2006/09/03(日) 06:19:32
StringReplaceの人気に嫉妬。
370デフォルトの名無しさん:2006/09/03(日) 09:24:37
どうぞよろしくお願いします

Delphi7.0上で、3層の情報系の業務アプリケーションを構築しています
データベースはOracle9iです
UIでは、ADOレコードセットを入力データソースするMicrosoftのActiveXコンポーネント
を使用しています
BDE、DBExpressやBizSnapを利用すれば3層のデータアプリケーションは作成できる
ことは分かりました
データセットプロバイダ経由でデータを取得しようとすると、クライアント側はClientDataSet
として受け取ることになるのですが、どこかでADOレコードセット形式に変換しなければなりません

試しにClientDataSetをまわしながらADOレコードセットにフィールド定義とデータ値をコピーする
方法を試してみましたが、処理時間とCPU負荷が半端ではなく、とても採用できませんでした
他には、BizSoapを利用した形式では、サーバー側でADOレコードセットとしてデータ取得後に
Saveメソッドを利用してXML形式で一旦データ出力し、Soap経由でテキスト送信し、クライアント
側では受信内容をファイルとして出力しADOレコードセットのLoadメソッドをCallしてXMLファイル
から復元する方法を試したみましたが、これも採用できるものではありませんでした
素直にクライアント側でADOレコードセットとして取得可能な方法としては、リモートデータセット
(Microsoft RDS)を利用したDComアプリケーションとして構築する方法もあるので試してみました
これは、非常に高速で20万件程度のデータもほぼ一瞬でクライアント処理でき驚いたものですが、
MicrosoftのサポートページではRDS自体が今後は非推奨の技術として明記されており、その点
が引っかかっております

どうしてもクライアント側で扱うデータ量が数十万件程度あることでパフォーマンスが重要になって
しまいます。
オーバーヘッドがなるべく最小の形でClientDataSetからADOレコードセット形式に変換する方法は
ないものでしょうか
もしくは、素直にADOレコードセットとしてクライアント側で一発でデータ取得できれば嬉しいです

長文になってしまい申し訳ありません
どうぞよろしくお願いいたします
371デフォルトの名無しさん:2006/09/03(日) 09:46:15
すなおにMicrosoft RDS とやらを使ったほうがいいと思うが・・・
お仕事系は2chよりMLで聞いた方がいいよ。
372デフォルトの名無しさん:2006/09/03(日) 13:58:21
StringReplaceって、gsubとか、subないDelphiには、重宝されそうだなw
373デフォルトの名無しさん:2006/09/03(日) 17:38:03
自分で作ればいい
374デフォルトの名無しさん:2006/09/03(日) 18:03:22
Wininetでhttpのヘッダ取得したいんだがどうやるんだ?
HttpQueryInfoやらでやっても取得できん。
375デフォルトの名無しさん:2006/09/03(日) 18:17:30
あ、それらしいの引数あったわ。(HTTP_QUERY_RAW_HEADERS)
で、この返り値がnull区切のデータなんだが
これを簡単にパースするのはどうするんだ?
こんな感じのデータを
Buf = ['a','b','c',#0,'d','e','f',#0,〜]

Buf1 = 'abc'
Buf2 = 'def'

としたい。
376デフォルトの名無しさん:2006/09/03(日) 18:54:57
TParser
377デフォルトの名無しさん:2006/09/03(日) 21:42:55
多分基本的なことなんだと思うんだけど、
TObjectの子クラスのデストラクタは必ず親クラスのデストラクタ(TObjectのDestroy)を呼び出さなきゃだめなの?
378デフォルトの名無しさん:2006/09/03(日) 21:52:58
へ?
379デフォルトの名無しさん:2006/09/03(日) 21:58:54
Destroyにinherited指令を付けるってことか?
上位クラスにアクセスしなければ必要ないけど
付けても実害は(たぶん)ないからいつも付けてる
380デフォルトの名無しさん:2006/09/03(日) 23:09:06
>上位クラスにアクセスしなければ必要ないけど
what?
381デフォルトの名無しさん:2006/09/03(日) 23:40:57
矢印キーを押したときに反応するようにするにはどうすればいいのでしょうか?
382デフォルトの名無しさん:2006/09/03(日) 23:49:30
常に呼び出す習慣をつけておけば良い。
383デフォルトの名無しさん:2006/09/04(月) 00:13:48
子クラスのDestory で、 inheritedは必須。覚えとけ。
384デフォルトの名無しさん:2006/09/04(月) 03:21:36
385デフォルトの名無しさん:2006/09/04(月) 04:58:35
文字コード変換でISO-8859-1からShift-JISに変換するライブラリある?
jconvertだけじゃ無理ぽ。
386デフォルトの名無しさん:2006/09/04(月) 06:06:19
TWebBrowserでリンク先へマウスのポインタを置いたときに、そのリンク先へのURLを文字列として取り出す(できればそのリンク先になってる文字列も)方法ってありますか?
素人なのでOLEとかサッパリ解らんとですバイ。
387デフォルトの名無しさん:2006/09/04(月) 08:45:31
>>385
ISO-8859-1 -> Unicode -> Shift-JIS かな。
388デフォルトの名無しさん:2006/09/04(月) 09:25:42
>>386
OnStatusTextChange かな。
389デフォルトの名無しさん:2006/09/04(月) 19:19:00
他のプログラムをフックして、
WM_INITMENUPOPUPのタイミングで、
PostMessageを送りメニュー選択しています。

この時、メニューの枠が一瞬表示されるのですが
表示させない方法はありますか?
390デフォルトの名無しさん:2006/09/04(月) 20:22:47
ない
391デフォルトの名無しさん:2006/09/04(月) 23:49:38
Delphi6PerでWebをみながらWebBrowserをつくりはじめています。
ところでTWebBrowserにはOnMouseDownとかOnClickとかがないんですけど、代わりに使える方法はないんですか?
392デフォルトの名無しさん:2006/09/04(月) 23:57:45
ない
393デフォルトの名無しさん:2006/09/05(火) 00:05:02
以下の手続きで、フォームのコントロールを取得するとして
ctrl変数に入る順番はどのような基準で決まるのでしょうか?

procedure TForm1.test;
var
i: Integer;
ctrl: TControl;
begin
for i := 0 to Form1.ControlCount-1 do begin
ctrl := Form1.Controls[i];
・・・・・
end;
end;
394デフォルトの名無しさん:2006/09/05(火) 00:12:28
コンストラクタの直後に親に設定された順番じゃないの?

いずれにしても、この順番に依存したコードは書くべきじゃないと思う。
395393:2006/09/05(火) 00:32:50
>>394
そうなんですか、設定された順番とかって何かで分かるんでしょうか?
動的に生成した大量のコンポーネントの情報をループで回して
設定ファイルに保存しようと思ったんですが。
作法上、あんまよくないんですかね。

何か他に方法考えてみます。
396デフォルトの名無しさん:2006/09/05(火) 00:45:59
TObjectList に自分で登録する分には、順番は保証されるね。
397デフォルトの名無しさん:2006/09/05(火) 05:20:55
このスレって簡単な事しかこたえられないようだな。
もしかして超初心者用って回答者のこと?
398デフォルトの名無しさん:2006/09/05(火) 06:04:14
YES
399デフォルトの名無しさん:2006/09/05(火) 06:05:37
>>391
elementFromPoint は?
400393:2006/09/05(火) 06:21:54
>>396
ありがとうございます。
試してみます。
401デフォルトの名無しさん:2006/09/05(火) 09:01:49
 タスクバーのメニューに「移動」を追加するにはどうしたらいいのでしょう?
 使用しているのはDElphi5なのですがデフォルトでは
・最小化
・元のサイズに戻す
・閉じる
の3つしかありません。
402デフォルトの名無しさん:2006/09/05(火) 10:39:14
Application ウィンドウは目に見えないので移動しても無意味
403デフォルトの名無しさん:2006/09/05(火) 10:43:06
>>397
文句しか言えないお前よりは超初心者の方が数億倍マシ
404デフォルトの名無しさん:2006/09/05(火) 10:47:46
>401 俺の6パーでは、↓だけ書けばいける。5は知らん。

procedure TForm1.FormCreate(Sender: TObject);
begin
GetSystemMenu(Application.Handle, true);
405404:2006/09/05(火) 10:59:04
すまんIDEから実行した時しか効かなかった。
406デフォルトの名無しさん:2006/09/05(火) 11:20:58
>>404
 ありがとう。できました。が・・・・・
 しかし、メニューの移動をクリックしても普通ののアプリのようにマウスカーソルがウィンドウのタイトル欄
(DelphiのForm1.caption)に移動でずフォームの中ほどで止まってしまいます。
407デフォルトの名無しさん:2006/09/05(火) 11:45:55

タスクバーのウィンドウは Application ウィンドウなんだ。

>Application ウィンドウは目に見えないので移動しても無意味

408デフォルトの名無しさん:2006/09/05(火) 11:47:29
アメリカではTurbo Delphiは7〜9月に出るって書いてたけど、日本語版はいつでるんッスか?
409デフォルトの名無しさん:2006/09/05(火) 11:58:38
そのうち
410デフォルトの名無しさん:2006/09/05(火) 12:37:14
>>407
 じゃあどうすれば仏のアプリのような動作ができるのですか?
 それともDelphiじゃ無理なのでしょうか?
411デフォルトの名無しさん:2006/09/05(火) 12:39:28
仏の⇒普通の(^^;

 いまここをJaneで見てるのですが確かこれもDelphiアプリのはず。やはりタスクバーのメニューは
3つしかない。やはりDelphiじゃ無理なのかなあ・・・・・
412デフォルトの名無しさん:2006/09/05(火) 12:44:03
普通のアプリはDelphi製じゃないってことだな。
413デフォルトの名無しさん:2006/09/05(火) 13:04:31
WS_EX_APPWINDOW
414デフォルトの名無しさん:2006/09/05(火) 18:42:04
そんなにDelphi製であることを隠蔽したいの?
やぱりDelphi製には著作権がないから?
415デフォルトの名無しさん:2006/09/05(火) 20:03:01
VBなら著作権あるのにね
416デフォルトの名無しさん:2006/09/05(火) 20:18:21
>>411
可能。VCLを使わず、Win32APIで書けばいい。
俺はそうしている。
417デフォルトの名無しさん:2006/09/05(火) 23:02:43
それなら Delphi より VC++ の方がいいね。普通のアプリもそれで作られてるし。
418デフォルトの名無しさん:2006/09/05(火) 23:07:38
テーブル1
{'い','jfie'},
{'ろ','fdsa'},
{'は','dsas'}

テーブル2
{'い','gsgs'},
{'ろ','ydjs'},
{'は','osas'},
{'に','saas'}

たとえば上みたいなテーブルを2つをconst定義でソースの中に固定変数としてもたせて
CONST_TABLE_A {テーブル1,テーブル2};



CONST_TABLE_A[0][1]
とやったら'jfie' を返すような宣言の仕方はどうやったらできますか?

CONST_TABLE_A[3][0] で 「に」を返すような感じです。

constとしてやらないならTStringとか使ってできるのだけれども、constで持たせたいのです。
アドバイスをお願いいたします。
419デフォルトの名無しさん:2006/09/05(火) 23:08:27
他人が使う開発環境にいちいちケチつけてる暇があるなら、
誰もが認める開発環境でも作っててくださいよ。
420418:2006/09/05(火) 23:09:36
constとしてやらないならTStringとか使ってできるのだけれども、constで持たせたいのです

× TString
○ TStringList
421デフォルトの名無しさん:2006/09/05(火) 23:24:57
Object Pascal 言語ガイド
配列型定数
422Delフサギコ ◆A6VzDeLphI :2006/09/06(水) 00:58:56
|,,∧   >>416
|Д゚彡   おいおい。
| U    それじゃ質問の回答になってないって
| ミ    
| U

//Project1.dpr
begin
 //Application ウィンドウをタスクバーから消してしまう
 SetWindowLong(Application.Handle, GWL_EXSTYLE,
  GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW);

 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
end.
423Delフサギコ ◆A6VzDeLphI :2006/09/06(水) 01:00:04
|,,∧   そんでもって
|Д゚彡
|⊂ミ
| ミ    
|''U

//Unit1.pas
 TForm1 = class(TForm)
 protected
  procedure CreateParams(var Params: TCreateParams); override;
  procedure WMSYSCommand(var Msg: TWMSYSCOMMAND); message WM_SYSCOMMAND;
  procedure DoShow; override;

424Delフサギコ ◆A6VzDeLphI :2006/09/06(水) 01:02:27
|,,∧   こんな感じに
|Д゚彡
| ミつ
| ミ    
|''U

//MainWindow をタスクバーに表示させる
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
 inherited CreateParams(Params);
 Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
 Params.WndParent := GetDesktopWindow;
 //親ウィンドウを DeskTopWindow にする
end;
//最小化メッセージをVCLではなく自分で処理する
procedure TForm1.WMSYSCommand(var Msg: TWMSYSCommand);
begin
 if Msg.CmdType = SC_MINIMIZE then begin
  DefaultHandler(Msg);
  WindowState := wsMinimized;
 end else
  inherited;
end;
425418:2006/09/06(水) 01:12:01
>>421
テーブル1とテーブル2の要素数が違うのです・・・・。

テーブルの型は
TStrTable = record =
col1: String;
col2: String;
end;

var
table1: array[0..2] of TStrTable = (
(col1:'い',col2:'jfie'),
(col1:'ろ',col2:'fdsa'),
(col1:'は',col2:'dsas')
);
table2: array[0..3] of TStrTable =(
(col1:'い',col2:'gsgs'),
(col1:'ろ',col2:'ydjs'),
(col1:'は',col2:'osas'),
(col1:'に',col2:'saas')
);


この2このテーブルを結合して
CONST_TABLE_A[1].col1

みたいにして取得したいのです。
テーブルを2こつなげる方法がわからないのです。


説明が下手でごめんなさいm(_ _)m
426418:2006/09/06(水) 01:15:09
ソース間違ってたので一部修正

TStrTable = record
col1: String;
col2: String;
end;

const
TABLE1: array[0..2] of TStrTable = (
(col1:'い',col2:'jfie'),
(col1:'ろ',col2:'fdsa'),
(col1:'は',col2:'dsas')
);
TABLE2: array[0..3] of TStrTable =(
(col1:'い',col2:'gsgs'),
(col1:'ろ',col2:'ydjs'),
(col1:'は',col2:'osas'),
(col1:'に',col2:'saas')
);
427デフォルトの名無しさん:2006/09/06(水) 01:16:45
うーん…これはエスパーが必要だな。
428Delフサギコ ◆A6VzDeLphI :2006/09/06(水) 01:27:55
procedure TForm1.DoShow;
begin
 inherited;
 ShowWindow(Application.Handle,SW_HIDE);
 //タスクマネージャー内のApplicationWindowの登録を消す
end;

|∧,,∧ こんなもんでどや?
ミ,,゚Д゚ミ   >>401
|⊂ ミ
|  ミ  
|''∪
429デフォルトの名無しさん:2006/09/06(水) 01:41:01
それだと、Form2 などの他のモードレスフォームが最小化に追随しない。
430デフォルトの名無しさん:2006/09/06(水) 01:49:06
 type
  TStrTable = record
  col1: PChar;
  col2: PChar;
  end;
 
  TStrTableArray1 = array[0..2] of TStrTable;
  TStrTableArray2 = array[0..3] of TStrTable;
 
  TTable = record
  case Integer of
  0: (Table1: TStrTableArray1);
  1: (Table2: TStrTableArray2);
  end;
 
 const
  Table: array[0..1] of TTable = ( 不明
431Delフサギコ ◆A6VzDeLphI :2006/09/06(水) 02:08:14
|,,∧    ・・・
|゚Д゚彡  >>429
|⊂ミ   
| ミ    レス早ーじゃん
|`J    さては、おぬし、このテクは既知じゃな。

//Unit2.pas
 TForm2 = class(TForm)
 protected
  procedure CreateParams(var Params: TCreateParams); override;

procedure TForm2.CreateParams(var Params: TCreateParams);
begin
 inherited;
 Params.WndParent := GetDesktopWindow;
end;

はたして、モードレスでサブフォームを持つアプリがどれほど
存在するのか、という点はさておき

モードレスサブフォームをタスクバーに登録せずに使いたいって場合は、
WndParentをForm1.Handleにしたりすることができるが
Zオーダーの関係から、おすすめしない。
※そんな挙動をするアプリは漏れの非VCL系常用アプリには存在しないし。
432デフォルトの名無しさん:2006/09/06(水) 02:10:50
Application を殺して、Form 間の Owner - Owned の関係を断ち切ると、コードで修復するのは
大変だよ。移動メニューを増やすためにこんなことするのは馬鹿げてる。
433デフォルトの名無しさん:2006/09/06(水) 02:34:03
TApplication.CreateHandle で 削除してるから、作り直せばいい。
SysMenu := GetSystemMenu(Application.Handle, False);
InsertMenu(SysMenu, 0, MF_BYPOSITION or MF_STRING, SC_MOVE, '移動(&M)');
434デフォルトの名無しさん:2006/09/06(水) 02:40:58
>>433

それの結果は

404 :デフォルトの名無しさん :2006/09/05(火) 10:47:46
>401 俺の6パーでは、↓だけ書けばいける。5は知らん。

procedure TForm1.FormCreate(Sender: TObject);
begin
GetSystemMenu(Application.Handle, true);

これと一緒。だから

406 :デフォルトの名無しさん :2006/09/05(火) 11:20:58
>>404
 ありがとう。できました。が・・・・・
 しかし、メニューの移動をクリックしても普通ののアプリのようにマウスカーソルがウィンドウのタイトル欄
(DelphiのForm1.caption)に移動でずフォームの中ほどで止まってしまいます。

こうなる。
435デフォルトの名無しさん:2006/09/06(水) 03:19:32
これでうまくいきそう。

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if (Msg.message = WM_SYSCOMMAND) and
     (Msg.hwnd = Application.Handle) and
     (Msg.wParam and $FFF0 = SC_MOVE)
  then
  begin
    PostMessage(Handle, Msg.message, Msg.wParam, Msg.lParam);
    Handled := true;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  GetSystemMenu(Application.Handle, true);
end;
436デフォルトの名無しさん:2006/09/06(水) 03:47:13
Application.Handleが受け取った WM_SYSCOMMAND を MainForm へ渡さないと駄目なのか。
437デフォルトの名無しさん:2006/09/06(水) 04:51:59
MLでちょろっと流れてたんだけど
tdump.exeってどうやって使えばいいのですか?
単体で起動してもコマンドプロンプトみたいなのが一瞬だけ出てすぐ終了されてしまう
438デフォルトの名無しさん:2006/09/06(水) 05:08:35
DOS窓で実行しよう。
tdump -?
439デフォルトの名無しさん:2006/09/06(水) 05:24:53
>>438
できたーありがとうございました。
440デフォルトの名無しさん:2006/09/06(水) 11:01:02
>>430

その初期化部分が知りたいです
m(_ _)m
441デフォルトの名無しさん:2006/09/06(水) 16:10:59
TSpeedButtonについて質問させてください。
TSpeedButtonのGroupIndexが0以上の場合で、
SpeedButton1.DownをTrueにすると、コード上からボタンを押下することができます。

ところがSpeedButton1.DownをFalseにしてもボタンが上がりません。
コード上でSpeedButton1.Clickを実行しても上がりません。

コード上でSpeedButtonを上げる方法はないんですか?
442デフォルトの名無しさん:2006/09/06(水) 16:30:32
>441
TSpeedButton.AllowAllUp
443デフォルトの名無しさん:2006/09/06(水) 17:57:59
>>442
ありがとう。

ところで、いつもアンカーが
>>442
じゃなくて
>442みたいに一つの>で書いている人は同一人物なんですか?
444デフォルトの名無しさん:2006/09/06(水) 18:29:14
ListBoxの文字列の上に一本の線を引きたいです。

ListBoxにはそんな機能は無いと思うので、自分でラインを引く事になると思いますが、
ListBoxの1行のRectって取得できるのでしょうか?

Del/VCLのラッパコンポーネントか何かありそうだと思ったので質問してみました。
上記ができるコンポがあれば、そのまま使っても良いんですが。
445444:2006/09/06(水) 18:39:58
標準コントロール(ListBox)に、文字列に訂正線を引く機能が標準であったりはしないでしょうか?
446デフォルトの名無しさん:2006/09/06(水) 19:45:25
>>444
TListBox1.ItemRect
447デフォルトの名無しさん:2006/09/06(水) 20:21:05
Delphi6もこれでお役ごめんか

ボーランド、伝統ある“Turbo”ブランドを復活、開発環境の無償提供を開始
“Turbo Explorer”は無償、“Turbo Professional”は4万円以下の低価格
http://www.forest.impress.co.jp/article/2006/09/06/borlandturbo.html

 ボーランド(株)は、伝統ある“Turbo”ブランドを復活し、6日より開発環境の無償提供を開始した。
今回提供が開始された製品は、「Turbo Delphi for Win32」「Turbo Delphi for .NET」「Turbo C++」「Turbo C#」の4つ。
それぞれの製品には2つのバージョンが用意されており、“Turbo Explorer”バージョンは無償でダウンロードできる。
一方“Turbo Professional”バージョンは、税抜き4万円以下の低価格で、19日よりパッケージ販売が開始されるとのこと。
また“Turbo Professional”バージョンには、学生向けのアカデミックライセンスも用意されている。
2つのバージョンの違いは、開発環境の拡張・カスタマイズ機能の有無。
448デフォルトの名無しさん:2006/09/06(水) 21:19:50
IDEがドットネット製なら、D6からの乗り換え対象にはなり難い。
449デフォルトの名無しさん:2006/09/06(水) 21:38:47
今気づいたけどVistaって現時点で.NET1.1に対応してないからDelphi使えないよw
450デフォルトの名無しさん:2006/09/06(水) 21:52:54
ダウンロードできないんだが
451デフォルトの名無しさん:2006/09/06(水) 21:56:47
コンポをインストールできないから D6per の方がマシ。軽いし。
452デフォルトの名無しさん:2006/09/06(水) 22:16:15
J#インスコしろって言われたんだけどふざけてるの?
453デフォルトの名無しさん:2006/09/06(水) 22:18:14
なんか IDE の機能の一つが J# で書かれてるらしい。
454デフォルトの名無しさん:2006/09/06(水) 22:44:01
コードの折りたたみ機能ってどうなん?
あれだけでも使う価値ありそうだ。
6PerもTurboも使ったこと無い。
455Delフサギコ ◆A6VzDeLphI :2006/09/06(水) 23:18:32
          _________
   ∧,,∧   / もれは
  ミ,,゚Д゚彡<  BDSでOFFにしてる...
   ミ つ旦)~~ \ 折りたたみ
 〜ミ  ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ∪''∪

456デフォルトの名無しさん:2006/09/06(水) 23:42:10
自作コンポインストできねぇのかよ!?

工エエェェ(´д`)ェェエエ工
457デフォルトの名無しさん:2006/09/06(水) 23:53:17
J#で書かれているんじゃなくて、Javaのコンポーネントを移植するのにJ#を使ったんだ。
ちなみにTogethreなんでDelphi.NETとC#でしか使わないはずなんだが、
なぜかDelphi.W32とC++でもJ#を入れさせられる。
458デフォルトの名無しさん:2006/09/07(木) 00:13:57
それって J# で書かれているってことじゃないのか。
459Delフサギコ ◆A6VzDeLphI :2006/09/07(木) 00:20:19
          _________
   ∧,,∧   /インスコできなくて 
  ミ;゚Д゚彡<  何を嘆くか...
   ミ つ旦)~~ \ 
 〜ミ  ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ∪''∪

嘆く事なんて、全くない
もっと工夫して使いこなそうよ。

Turboの実装がどうなっているか詳細までわからんが
Libraryパス通して、Createするだけで張り付くでしょ。
少し手間がかかるだけではないのかと。

IDEにインスコせずに、コンポーネントを使う方法は
工夫しだいでどうにでもなる。

RADでGUIの位置配置したい場合でも
継承元となるコンポーネントを貼り付けておいて
起動時に位置とプロパティを置き換えちゃえばよかったりする。

なんぼでも工夫できるですよ。
工夫こそ、開発者魂ですやんか。

460Delフサギコ ◆A6VzDeLphI :2006/09/07(木) 00:21:44
    ∧,,∧  トゲザは
   ミ,,゚Д゚彡   Win32でも
    ミ つ旦)~~   うごく
  〜と,,,~),,~)      たぶん
461デフォルトの名無しさん:2006/09/07(木) 00:26:19
開発者は開発に力を注ぐべきだろ。道具を磨くのも仕事のうちだが、
はじめから今持ってるのよりナマクラな道具を選ぶ必要はない。
462456:2006/09/07(木) 00:26:55
冷静に考えてみればオレのコンポて非ビジュアルコンポばっかりだったw
463デフォルトの名無しさん:2006/09/07(木) 00:30:19
ところで TWebBrowser のような ActiveX は Explorer で使えるの?
464デフォルトの名無しさん:2006/09/07(木) 00:30:24
465デフォルトの名無しさん:2006/09/07(木) 00:34:10
J#を要求しているのはエディタのリファクタリング機能だった気がずる。
466デフォルトの名無しさん:2006/09/07(木) 00:36:24
リファクタリングは.NETだがJ#ではないよ
467デフォルトの名無しさん:2006/09/07(木) 00:37:31
>>458
書いたんじゃなくてコンパイルした
468デフォルトの名無しさん:2006/09/07(木) 00:39:31
>>463
TWebBrowserはExplorerに付いてたよ。
469デフォルトの名無しさん:2006/09/07(木) 00:40:55
>>467
コンパイル済みなら、MSIL になってるんだろ? なぜ J# がいるんだろ?
470デフォルトの名無しさん:2006/09/07(木) 00:42:42
J# 特有のアセンブリ使ってるとか
471デフォルトの名無しさん:2006/09/07(木) 00:43:15
>>468 さんくす
472デフォルトの名無しさん:2006/09/07(木) 04:26:03
>>440
コンパイルは通ったけど、使い方はまだ不明。

const
 Table: array[0..1] of TTable = (
  (TableArray1: (
   (col1:'い'; col2:'jfie'),
   (col1:'ろ'; col2:'fdsa'),
   (col1:'は'; col2:'dsas')
  )),
  (TableArray2: (
   (col1:'い'; col2:'gsgs'),
   (col1:'ろ'; col2:'ydjs'),
   (col1:'は'; col2:'osas'),
   (col1:'に'; col2:'saas')
  ))
 );
473デフォルトの名無しさん:2006/09/07(木) 04:41:08
これでつかえたけど。

ShowMessage(Table[0].TableArray1[0].Col1); // い
ShowMessage(Table[1].TableArray2[3].Col2); // saas
474デフォルトの名無しさん:2006/09/07(木) 04:49:00
とりあえず連想配列使えたりしないかなぁとか。
TStringListで代用すんのダル
475デフォルトの名無しさん:2006/09/07(木) 09:23:42
ここに書き込んでまったりしてるほうがダル
476デフォルトの名無しさん:2006/09/07(木) 10:50:07
Turboのミラーが増えた。
477444:2006/09/07(木) 19:42:47
>>446

有難うございます。

ItemRectで線引いてみようとおもいますが、
どのイベントハンドラで引けば良いでしょう?
478デフォルトの名無しさん:2006/09/07(木) 19:51:33
>>477
オーナードローにしてOnMeasureItem
479デフォルトの名無しさん:2006/09/07(木) 21:44:36
>>474
JclHashMaps
480418:2006/09/08(金) 00:27:59
>> 472
Thx!
481デフォルトの名無しさん:2006/09/08(金) 01:09:40
TListBoxでアイテムのドラッグ中に次入される部分に太線を表示させたいのですが、
どうすればいいんですか?
482デフォルトの名無しさん:2006/09/08(金) 01:47:58
indyのidHttpって非同期できたっけ?
後、indyってスレッド対応してる?
結果が妙におかしくなる。
483デフォルトの名無しさん:2006/09/08(金) 18:00:57
ListBoxに右マウスクリックしたときに、
マウスの位置の行を選択状態にしたいのですが、
簡単にできますか?
484デフォルトの名無しさん:2006/09/08(金) 18:13:07
できる
485483:2006/09/08(金) 18:24:26
記述教えて下さい。
486デフォルトの名無しさん:2006/09/08(金) 18:52:13
procedure TForm1.ListBox1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  i: integer;
begin
  if Button = mbRight then
  begin
    i := ListBox1.ItemAtPos(Point(x, y), true);
    if (i > -1) then ListBox1.ItemIndex := i;
  end;
end;
487デフォルトの名無しさん:2006/09/08(金) 19:07:08
Delphi.NETじゃないので、Delphi 風の.NET開発言語ありませんでしたっけ?
なんていうんだっけ・・・。
ラザロスじゃないやつ
488デフォルトの名無しさん:2006/09/08(金) 19:09:48
思い出した!
chromeでした。
http://www.chromesville.com/
489デフォルトの名無しさん:2006/09/09(土) 10:48:16
THoge = class
private
  Fhage: Single;
  procedure Sethage(Value: Single);
public
  property hage: Single read Fhage write Sethage;
end;

アクセスメソッドを持ったこんなクラスがあって、

Unko(@Hage.hage);

みたいにhageのポインタを渡して、渡した先の手続きで値を代入させたいんだけどうまくいきません・・・
なにがいけないのでしょうか
490デフォルトの名無しさん:2006/09/09(土) 14:04:18
プロパティにアドレスはない。
Sethage 渡せないの?
491デフォルトの名無しさん:2006/09/09(土) 15:04:12
d:= Hage.hage;
Unko(@d);
Hage.hage:= d;
492デフォルトの名無しさん:2006/09/09(土) 18:23:19
うーん、SethageをPublicにしたほうが良さそうですね
お二方ありがとうございました
493デフォルトの名無しさん:2006/09/09(土) 19:37:27
D7+FB1.5+IBXで開発してます。
DBCtrlGridを使ってみたのですが、tabで移動していくと最後のコンポーネントまでいったら
次に最初のコンポーネントに戻ってしまい新しい行が追加されません。
2度目に最後のコンポーネントまでいってtabを押すとようやく追加されます。
D7付属のデモでも同じ症状なのですが、これが正常な動きなのでしょうか。
1度で新しい行が追加されるようにするにはどうしたらいいでしょうか。
494デフォルトの名無しさん:2006/09/09(土) 22:04:48
たしかに他のスレッドでは書き込めない超低レベル
495デフォルトの名無しさん:2006/09/09(土) 23:24:46
2006でコンポーネントの追加ってどうすればいいんでしょう??
496デフォルトの名無しさん:2006/09/09(土) 23:28:33
Turbo Delphiを手に入れました。

書店にはあまり本が無いようです。お勧めの(まずはこれは読め)本を
教えてください。

当方のスキルは 簡単なメモ帳を作れる程度です。
497デフォルトの名無しさん:2006/09/09(土) 23:35:47
日本語の本ではおすすめはないな・・・
498デフォルトの名無しさん:2006/09/09(土) 23:38:23
オフィシャルコースウェア
499デフォルトの名無しさん:2006/09/09(土) 23:42:09
初心者です。
現在delphi2006でバッチのプログラムを書いているのですが
その際にコマンドライン引数を設定してdprから起動しています。
このときはコマンドライン引数を取得しているので処理が行われますが
exeから起動した場合、コマンドライン引数がとれなくてエラーで落ちてしまいます。
どなたかexeから起動した場合でもコマンドライン引数を取得できる方法を
教えてください。
500デフォルトの名無しさん:2006/09/10(日) 00:02:20
たぶん、他で落ちてると思う。これ(↓)は動く。
{$APPTYPE CONSOLE}
var
I: Integer;
begin
for I := 1 to ParamCount do
WriteLn(ParamStr(I));
end.
501デフォルトの名無しさん:2006/09/10(日) 00:09:28
502デフォルトの名無しさん:2006/09/10(日) 00:14:53
>>496
Delphi逆引き大全500の極意
http://www.amazon.co.jp/gp/product/4798011355/

Delphi 2005プログラミングテクニック シリーズ
http://www.amazon.co.jp/gp/product/4877831401/
503デフォルトの名無しさん:2006/09/10(日) 00:17:39
<500

エラーが起きた時はログを出力しているようにしていますが
'コマンドラインが取得できません'と表示されます。
ただし、iniファイルからは取得できています。

プログラム起動時に以下のように記述してコマンドラインを取得しています。

A = ParamStr(0)
B = ParamStr(1)
C = ParamStr(2)
D = ParamStr(3)

この記述方法ではダメでしょうか...

504デフォルトの名無しさん:2006/09/10(日) 00:27:23
パラメーター入ってないからじゃないの?
paramcountで有無を判断すればいいんじゃね
505デフォルトの名無しさん:2006/09/10(日) 00:30:32
ParamStr(3) まで行った直後で、A〜Dを確認できます?
WriteLn(A); WriteLn(B); WriteLn(C); WriteLn(D); ReadLn; して、
.exeを直接実行するときと
IDEから引数渡して実行するときと比べてみて。
   
506デフォルトの名無しさん:2006/09/10(日) 00:45:38
<504,505
アドバイスありがとうございます。

IDEから引数渡しでの実行とexe実行とでは
勝手が違うのでしょうか...
仮にexe実行で入っていないのであれば原因は何でしょうか...
507デフォルトの名無しさん:2006/09/10(日) 02:49:02
>>506
まったく違う。 IDEの実行時引数はIDEから実行したときのみ有効。

ショートカットを作って引数を設定するか、
バッチファイルで引数を設定するかして。

何もしなければParamCount=0になってるよ。
あと、ParamStr(0) は実行ファイル名ね。
508デフォルトの名無しさん:2006/09/10(日) 10:42:28
実行時引数がどういうものか、知らない、ってことだな。
Delphi のまえに Windows を勉強しないと
509デフォルトの名無しさん:2006/09/10(日) 12:18:09
>501
サンクスコ。たすかりました。
510デフォルトの名無しさん:2006/09/10(日) 17:58:36
Delphi 2005プログラミングテクニック シリーズ
http://www.amazon.co.jp/gp/product/4877831401/

便乗して伺いますがTurboでもこのサンプルは動きますか?
511デフォルトの名無しさん:2006/09/10(日) 18:19:08
>>510

動きます。C++がわかるなら、同社がすでに刊行しているBCB6のシリーズも
大変参考になるでしょう。

しかし、クラスの設計やオブジェクト指向について学ぶのなら
技術評論社 塚越一雄「Delphiオブジェクト指向プログラミング」を
お勧めします。この本は絶版だったのを復刊ドットコムがリクエストにより
復刊したものでもう残部が少ないのですが、絶対手元に置くべきです。
Delphiアプリケーションの動作メカニズムがしっかりわかります。
512511:2006/09/10(日) 18:21:42
しかし、技術評論社のこの本は復刊しても誤植を訂正してくれません。
まぁ、箇所は少ないし、読めばおかしいなと気づくので問題ないのですが。
513デフォルトの名無しさん:2006/09/10(日) 20:07:30
タブキーでカーソルを移動する時に、移動順を指定することはできますか?
今はボタン1→2→3と移動しますが、それを1→3→2としたいのです…。
514デフォルトの名無しさん:2006/09/10(日) 20:44:06
>>513
各コントロールの持つ、タブオーダーのプロパティを変更すればよし。
515デフォルトの名無しさん:2006/09/10(日) 21:13:58
>>514 ありがとうございます!やってみます!
516デフォルトの名無しさん:2006/09/10(日) 21:25:46
>>511
ご親切にありがとうございます
さっそく明日三省堂まで見に行ってみます
517デフォルトの名無しさん:2006/09/10(日) 21:28:07
そんな古い本はすすめない。たしか、初代のDelphi16ビット用のだろ。
OOP なら、Delphi みたいな中途半端なやつより、Java とか C# で
いい本がたくさんあるよ。
518デフォルトの名無しさん:2006/09/10(日) 21:30:00
ボタン1を押すと時間のかかる処理が始まります。
ボタン2を押したときにそれを中断させて、安全にプログラムを終了させたいんですけど、
Button2.OnClickでApplication.MainForm.Close;させても反応しません。
どうしたらいいんでしょうか?
519デフォルトの名無しさん:2006/09/10(日) 21:33:22
ボタン1を押すと時間のかかる処理の中で Application.ProcessMessages を
頻繁に実行しないと、Button2 が押された事に気づかない。

んで、Button2Click でなにかのBoolean変数を false にすると。
Button1Click の処理ではそれ見て抜け出すと。

そんなシナリオになる。
520518:2006/09/10(日) 21:38:48
>>519
Application.ProcessMessagesを調べてやってみます。
if BoolHoge = false then 終了させる処理; にするわけですね。
ありがとうございます。
521518:2006/09/10(日) 21:47:31
簡単なテストプログラムでうまく行ったので何とかなりそうです。
どうもありがとう。
522デフォルトの名無しさん:2006/09/10(日) 21:49:56
>>517
そうかな?

Createメソッドの意味、なぜオブジェクトの開放でdestroyでなくFreeを使うのか。
メモリ上でのオブジェクト・メソッド・フィールドの関係、Application.Runで
内部的に何が行われているのか。等、初心者が疑問に思うことが書いてありますよ。
自分でクラスを設計したり、あるいはコンポーネントを設計する基礎知識の育成として
大変お勧めです。
なお、コンポーネントの設計は 

インプレス 「Delphiコンポーネント設計&開発 完全解説」中村拓男

以上をお勧めします。
523522:2006/09/10(日) 21:53:42
アスキーのオフィシャルコースウエアもDel7で終わってしまいましたが、

大野さんの「基礎編」は、他の本でまかなえるとして、井上さんの「応用編」は
結構使えます。こちらでもクラスの勉強ができます。個人的によくお世話になりました。
524デフォルトの名無しさん:2006/09/10(日) 22:27:08
夜遅くにすみません。教えてください。

(1)F1キーを押したらカーソルがEDIT1に移動するというのは、どのように書いたらいいでしょうか?
ファンクションキーと結びつけた動きをさせたいのです。

(2)stringGridのカーソルがあたっている部分でエンターキーを押した時に、そのセルのrow位置を取得できるようにするにはどのような記載をすればいいでしょうか?

よろしくお願いします。
525デフォルトの名無しさん:2006/09/10(日) 22:43:29
カーソルとフォーカスがごっちゃで意味がとれないんだが。ほんとにカーソルを
移動させたいんか?
526デフォルトの名無しさん:2006/09/11(月) 02:57:47
>>522
VCLソース読んだ方がいいよ。

527デフォルトの名無しさん:2006/09/11(月) 03:19:46
またVCLソース厨か
528デフォルトの名無しさん:2006/09/11(月) 04:26:54

ドキュメント不足には、「ソース読め」と呪文を唱える。これが信者の掟。
529デフォルトの名無しさん:2006/09/11(月) 05:49:11
著者もソースを読むことを勧めているはずですが。
ライブラリソースは読まなくて良いなんて言うプログラマはいませんよ。
530デフォルトの名無しさん:2006/09/11(月) 06:02:15
本を買うよりVCLのソース読んだ方がいいんでしょ?
なんの著者?
531デフォルトの名無しさん:2006/09/11(月) 07:00:54
はいはい、私の負けです。 あなたはソースを読まなくてよろしい。
532524:2006/09/11(月) 08:44:49
>>525 レスありがとうございます。すみません、「カーソルが移動」と「フォーカスが移動」の違いを理解していないのですが、どちらも「Edit1に入力ができるようになる」ということですか?私のやりたかったことはそのようなことなのですが…。
あまり正確な表現方法を知らないため、うまく説明できないです…。
533デフォルトの名無しさん:2006/09/11(月) 09:04:01
FormのKeypreviewをTrueにしとく

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var R: integer;
begin case Key of VK_F1: Edit1.SetFocus;
VK_RETURN: R := StringGrid1.Row; end;end;
534デフォルトの名無しさん:2006/09/11(月) 09:48:29
String型で、右から三文字ごとに空白を入れるのはどうやればいいのでしょうか
たとえば
var s1,s2:string;
s1:='あいうえabcd1234!!'


だった場合s2を
'あい うえa bcd 123 4!!'
にしたいのですが
535524:2006/09/11(月) 10:31:17
>>533 ありがとうございます!今からやってみます!
536デフォルトの名無しさん:2006/09/11(月) 11:42:35
var
s1: WideString;
i: integer;
begin
s1:='あいうuuuunkounkoあああああfだfだfだfさgふぁgbgb';
i:= Length(s1);

while 2<i do begin
dec(i, 3);
Insert(' ', s1, i+1);
end;

ShowMessage(s1);
end;
537デフォルトの名無しさん:2006/09/11(月) 13:39:29
DBGridでキーフィールドを修正するときに重複だったら修正前の値に戻すようにするにはどうしたらいいですか
重複のチェックはフィールドのOnValidateで行っています。
538デフォルトの名無しさん:2006/09/11(月) 19:28:09
Delphiをこれから学ぼうかと考えている者です。

とりあえず、無償のDelphi6とTurbo Delphiの両方を
ダウンロードしてみたのですが、
どちらの方が学びやすいとか
こっちは古いから(新しいから)、初心者はやめておけとか
なにかアドバイスなどいただけるとありがたいのですが・・・。
539デフォルトの名無しさん:2006/09/11(月) 19:33:57
どっちでもいい
そうかわらん

重くて機能制限があるのはTurbo
商用に使えないのはD6
540毛の生えたブリーフ:2006/09/11(月) 19:42:30
>>538
マシンスペックが思い切り旧型(私は仕事で500MHz、メモリ192M、(;;))
でなければ、Turboの方をお勧めします。周波数1ギガ以上、メモリ1ギガ以上
であれば、まったく問題ありません。

Turboのほうが新しいぶんだけIDEも便利な機能がついていますし、
便利なコンポーネントもついています。Delphi言語も幾分強化されていますし、
これといって駄目になった部分はないとおもいます。
(初心者の間はあまり関係ありませんが、商用開発OKとかVCLソース付とか、後々
有り難味を感じることがあるかもしれませんね)

私は、コンポーネントパレットは旧タイプのほうが使いやすいと思うのですが
これはもう慣れの問題でしょう。

がんばってください。くだすれはあなたを応援します。
541デフォルトの名無しさん:2006/09/11(月) 19:45:14
いまから Delphi か・・・・
逃げ出したひとがいっぱいいるし、
もっと本がいっぱいあったり、WEB 上での情報が多かったり、
ヘルプがしっかりしている言語から始めた方がいいと思うけど
542デフォルトの名無しさん:2006/09/11(月) 20:21:10
まあ、C#かJAVAの方が幸せかもね
Windowsネイティブなバイナリを作りたいとかじゃなければ
543デフォルトの名無しさん:2006/09/11(月) 20:44:57
このスレッドはBorland(ボーランド)のDelphi(デルファイ)について、
他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphi(の布教と初心者の救済をお願いします。
544デフォルトの名無しさん:2006/09/11(月) 20:53:53
[エラー] 543(5): ')'がありません
545毛の生えたブリーフ:2006/09/11(月) 20:54:30
すごく他愛のないことだけど、作ったアプリのデフォルトアイコンが
オーブというかビー玉というか透き通った感じの丸いアイコンです。
デスクトップにいくつか置くと、ちっぽけな自作アプリが、自分だけの
小さな宝石みたいに見えて愛着がわきます。

BDS2006やTurboではそれが一番お気に入りです。
546デフォルトの名無しさん:2006/09/11(月) 22:05:09
じゃ、アイコンだけちょうだい。D6 で使うから
547デフォルトの名無しさん:2006/09/11(月) 22:21:00
俺にはオーブというより金玉に見える。
548デフォルトの名無しさん:2006/09/11(月) 23:16:29
俺にはヨーヨーに見える
549デフォルトの名無しさん:2006/09/11(月) 23:52:02
D6からTD2006になってパワーアップされたDelphiの文法には
どのようなものがありますか?
550デフォルトの名無しさん:2006/09/11(月) 23:59:52
inlineと演算子オーバーロードとfor-inぐらいじゃね
あとはasmでSSE4以外対応とか
551デフォルトの名無しさん:2006/09/12(火) 01:56:51
それとレコード型が旧オブジェクト型みたいにメソッドをサポートしたことかな。
どうせなら、Win32でも、C++みたいにコンストラクタ・デストラクタをサポートしてほしかったな。
552538:2006/09/12(火) 05:59:08
538のDelphiをこれから学ぼうかと考えていた者です。
みなさん、貴重なアドバイスをしていただきありがとうございます。

>>539
>どっちでもいい
>そうかわらん
どちらもそんなに変わらないですか。じゃあ新しい方がいいかな。
Delphi6はコンパイル速度が速いと聞いていたので
Delphi6も捨てがたいと考えていたのですが・・・。

>>540
>周波数1ギガ以上、メモリ1ギガ以上 であれば、まったく問題ありません。
調べてみたら、2.60GHzの376MBでした。メモリがきびしいな・・・。

>がんばってください。くだすれはあなたを応援します。
あたたかい言葉をかけていただき、ありがとうございます。

>>541
>いまから Delphi か・・・・
私が過去にいいなと思ったフリーソフトは結構Delphi製が多かったので
Delphiなら簡単にソフトが作れそうという考えから
今更ですがDelphiを学んでみようかという気になりました。
他の言語で挫折したというのもありますが(VisualC++とか)・・・。

>>542
>Windowsネイティブなバイナリを作りたいとかじゃなければ
それなんですよね。C#もJavaも多少かじった事があるので
いいのはわかってるんですけど、.netとかJVMとかがなくても
動くものを作りたいんですよね。
楽に結果を出せてネイティブとなると
自分的にはDelphiしかないのかな・・・と
553デフォルトの名無しさん:2006/09/12(火) 06:56:11
こんなのはどうだ。

var
 S1, S2: WideString;
 I: Integer;
begin
 S1 := 'あいうえabcd1234!!';
 S2 := '';
 for I := Length(S1) downto 1 do
 begin
  S2 := S1[I] + S2;
  if Length(S2) mod 3 = 0 then
   S2 := ' ' + S2;
 end;
554デフォルトの名無しさん:2006/09/12(火) 08:28:22
>>538
>>Windowsネイティブなバイナリを作りたいとかじゃなければ
>それなんですよね。C#もJavaも多少かじった事があるので
>いいのはわかってるんですけど、.netとかJVMとかがなくても
>動くものを作りたいんですよね。
>楽に結果を出せてネイティブとなると
>自分的にはDelphiしかないのかな・・・と

そんなあなたに D言語

555デフォルトの名無しさん:2006/09/12(火) 09:28:49
悩んでる時間があるのなら他人のコードを見て勉強しなさい
556デフォルトの名無しさん:2006/09/12(火) 10:14:50
> 楽に結果を出せてネイティブとなると

Delphi がそうだ、には賛成。自分もそうだし。

でも、これから入門する人にとって Delphi が楽かどうかは疑問。
情報すくなすぎ。ひといなさすぎ。ヘルプひどすぎ。
なぜ、ネイティブにこだわるのかが分からないですけど、C# をやる
ことをすすめるね。
557デフォルトの名無しさん:2006/09/12(火) 10:58:39
で、いつになったら
begin
  var sl := TStringList.Create;
って書けるようになるの?
558デフォルトの名無しさん:2006/09/12(火) 11:01:06
>でも、これから入門する人にとって Delphi が楽かどうかは疑問。

これって大昔から言われながら問題無いじゃん。

>なぜ、ネイティブにこだわるのかが分からないですけど、C# をやる

ユーザーはドトネトのアプリなんて触りたくも無いんだよ。
C丼なんて言語も変わり続け。
初心者に悪いだけでなく、何時消滅するか。
559デフォルトの名無しさん:2006/09/12(火) 11:10:39
しかしお前は一体何度同じことを書き続ければ気が済むんだ。
ただの健忘症なら病院逝っとけ。
560デフォルトの名無しさん:2006/09/12(火) 11:33:29
ポルトガル語でも勉強するか、と思ってる人に英語にしとけとアドバイスするバカ
561デフォルトの名無しさん:2006/09/12(火) 11:50:44
>>557
VCL.NET なら今でも出来る。
562デフォルトの名無しさん:2006/09/12(火) 14:41:55
>>554
プハハハハー!
「楽に結果を出せて」が読めないのかよ。
まともなGUIライブラリもない、統合環境もない、
コンパイラがベータを取れてないものをよく初心者にすすめられるなwww
563562:2006/09/12(火) 14:42:30
もしかして、俺つられた・・・?
564デフォルトの名無しさん:2006/09/12(火) 15:27:07
VBなら楽に結果が出るのにね
565デフォルトの名無しさん:2006/09/12(火) 15:52:19
DelphiにはStringReplaceがある
566デフォルトの名無しさん:2006/09/12(火) 16:55:36
>>564
しょうもない結果がな
567デフォルトの名無しさん:2006/09/12(火) 18:04:14
>>561
.NET 以外では?
568デフォルトの名無しさん:2006/09/12(火) 20:06:53
>>565
しょうもない関数だな
569デフォルトの名無しさん:2006/09/12(火) 20:09:42
TD2006です

新規作成するとProject2、Unit2、Form2って名前がついちゃう
これForm1になるように戻すにはどうすればいいんでしょうか?
570デフォルトの名無しさん:2006/09/12(火) 20:32:16
バージョン依存は専用すれへ
571毛の生えたブリーフ:2006/09/12(火) 20:40:07
>>569
おそらく、TD2006を起動させてから、そのままメニューから「新規作成」を
選んだのでしょうね。

いったんTD2006を全て終了させてから、もう一度起動させてください。
そしてフォームエディタのCaptionが「Form1」になっていることを確かめましょう。

             がんばってね くだすれは あなたの味方
572デフォルトの名無しさん:2006/09/12(火) 22:40:04
先生質問です。
Labelへの文字列出力で、クソ長い文字列を表示させたいのですが1行で書くとソースが凄く不細工です。
複数行に分けて1行の文字列を書く方法を教えてください。
573デフォルトの名無しさん:2006/09/12(火) 22:46:19
label1.caption :='aaaaaaaaaaa';
label1.caption := label1.caption + 'aaaaaaaaaaaaaaaaaa';
574デフォルトの名無しさん:2006/09/12(火) 22:46:57
>>572
Label1.Caption := 'あいうえお' +
               'かきくけこ';

でもいいし

Label1.Caption := 'あいうえお';
Label1.Caption := Label1.Caption + 'かきくけこ';

でもOK
575デフォルトの名無しさん:2006/09/12(火) 22:48:43
先生方ありがとうございます。
576デフォルトの名無しさん:2006/09/12(火) 22:54:24
TD2006です

デフォルトの保存位置を変更するにはどうすればよいでしょうか?
Delphi6と同じように作業フォルダを変更してみましたがうまくいきませんでした
577デフォルトの名無しさん:2006/09/12(火) 22:58:24
デフォルトプロジェクトオプションのディレクトリの事?
578毛の生えたブリーフ:2006/09/12(火) 23:40:47
>>576

577さんがヒントを書いてくれていますが、
「プロジェクト」−「オプション」をたどって、「デバッガ」−「環境変数」
をみてください。

システム環境変数というところに、「BDSPROJECTSDIR」という部分がありますが、
ここの値を変更すればよろしいでしょう。
579毛の生えたブリーフ:2006/09/13(水) 00:06:07
そうそう、どうでもいいことですが、DelphiのIDEにおいて伝統的に
バージョン情報のダイアログを出しているとき・・・

Alt+「version」のタイプでバージョン番号が、
Alt+「developers」のタイプで、Delphi開発チームのリストが、
Alt+ 「team」のタイプで、Delphiチームのリストが、表示されます。

今回は、「team」のタイプをしてみてください。画面上にでかでかと
「Borland Rules!」の文字が表示され、右下の「GUNGLA」という文字を
クリックすると、画面中央にサーフィンしているサルのフィギュアが表示されます。
またスタッフ名は左下のボタンをクリックすると上からドロップダウンして
きます。ドロップダウンは「ESC」でキャンセルしてください。

このサル。いったいどんな意味があるのでしょうか????
580デフォルトの名無しさん:2006/09/13(水) 00:13:12
日本人は黄色いサルって言いたいんじゃね?
581デフォルトの名無しさん:2006/09/13(水) 01:10:52
>>573-574
定数式をコンパイル時に処理する574の上のほうが、
メモリ確保もアクセッサの呼び出しも余分がなく圧倒的に推奨ではなかんべか?
582デフォルトの名無しさん:2006/09/13(水) 04:52:24
Builder使いですが、Delphiやってみようと思いました。
グローバル変数は良いとして、ローカル変数(FormCreateだけで使う変数)などは
どのように宣言すればよいのでしょうか?
583デフォルトの名無しさん:2006/09/13(水) 04:59:09
procedure TForm1.FormCreate(Sender: TObject);
var
 hoge : String;
begin

end;
584デフォルトの名無しさん:2006/09/13(水) 05:12:25
なるほどThanks
585デフォルトの名無しさん:2006/09/13(水) 21:02:46
>>577
>>578
環境変数を書き換えてもうまくいきませんでした
ユーザー定義環境変数に追加したり、OSの環境変数を書き換えるのではダメでしょうか?

次善策として下記の方法をwiki(グーグルのキャッシュ)でみつけたので試してみたところうまくいきました

ここで関連した新たな疑問が発生しました
この方法では起動後すぐにプロジェクトファイルを読み込もうとしても設定したディレクトリが開きません
起動後すぐにProject1を新規作成した状態にする(Delphi6のように!)にはどうすればよいでしょうか?


----
デフォルトプロジェクトディレクトリを変更するには †
環境変数 $(BDSPROJECTSDIR)の上書き変更ができない

レジストリエディタでHKEY_CURRENT_USER\Software\Borland\BDS\3.0\Globals に DefaultProjectsDirectory?を追加して希望のディレクトリを書く。(確認済み、自己責任で)
586デフォルトの名無しさん:2006/09/13(水) 21:25:12
大変そう・・・・
587デフォルトの名無しさん:2006/09/13(水) 22:17:44
Dataset.Stateの変化をラベルかeditに表示したいのですがどのようにしたらいいでしょうか。
588デフォルトの名無しさん:2006/09/14(木) 15:52:23
Delphiで無料でプログラミングしてみるお
http://pc8.2ch.net/test/read.cgi/tech/1139675970/

これの次スレ立てれ
589デフォルトの名無しさん:2006/09/14(木) 16:06:10
何故?
590デフォルトの名無しさん:2006/09/14(木) 20:29:36
Del6Personalですが、TStatusBarをXPスタイルにするのは、無理またはかなり面倒なことになるのでしょうか。
591毛の生えたブリーフ:2006/09/14(木) 20:37:57
>>585
ごめんなさい、きちんと検証してみたら、だめのようですね。
プロジェクトを保存するデフォルトディレクトリはどういうわけか、変更できません。
あなたの記述通り、レジストリをいじらないと変更できないのかもしれませんね。
592デフォルトの名無しさん:2006/09/14(木) 20:43:06
>>590
StatusBarの場合、uxthemeに関する知識があるならそこそこ簡単
593デフォルトの名無しさん:2006/09/14(木) 20:43:08
ていうか、起動時のカレントディレクトリじゃないのか?
594デフォルトの名無しさん:2006/09/14(木) 20:51:02
何が?
595デフォルトの名無しさん:2006/09/14(木) 20:51:55
ひどいデキだな TurboDelphi
596デフォルトの名無しさん:2006/09/14(木) 20:54:05
>>595の作った開発環境に期待
597デフォルトの名無しさん:2006/09/14(木) 21:07:08
>590
洋物でよろしければいろいろ対応コンポありますんで

とりあえず基本
ttp://www.delphi-gems.com/ThemeManager.php

金出してもいいならもっと多機能なのもあるけど…
ttp://www.rhostyle.com/xpStyle.html

斜め上を狙うなら(Win2000やTheme停止でもOfficeXPルックで動作)
ttp://www.jrsoftware.org/tb2k.php
  &
ttp://www.g32.org/tbx/index.html
598デフォルトの名無しさん:2006/09/14(木) 22:30:12
ADO+Oracleでやってるんだけど、やった事ある人いる?
繋がる事は繋がるんだが、どうSQLを投げて結果を引き取って良いのやら・・・。
使い方がさっぱり分からないよ、ママンorz ダレカオシエテ
599デフォルトの名無しさん:2006/09/15(金) 00:00:35
TurboDelphiにXPスタイル関係のソースが色々入ってるみたい
まだ見て無いけど
600デフォルトの名無しさん:2006/09/15(金) 00:16:13
>>598
ADOQueryがあるじゃん。
DataSetでもいいし、何が問題なんだ?
ほんとにちゃんと接続(ログイン)できてる?
権限もちゃんとあるよね?
601デフォルトの名無しさん:2006/09/15(金) 00:46:26
Del7からThemeManagerが内蔵されてるっしょ。
602デフォルトの名無しさん:2006/09/15(金) 07:21:41
おはよう。

>>600
ADOQueryって、こいつだけ単独でいけるのかな?
直に接続文字列いれてSQL投げて。
ADOConnection使ったんだけど、TNSエラーでちゃった。
まぁ、これはoracle側の問題とは思うけど。
とりあえず、今日、色々試して頑張ってみる。
ありがとう。
603デフォルトの名無しさん:2006/09/15(金) 09:45:01
>>601
うーむ
見た事ねーなぁ
604デフォルトの名無しさん:2006/09/15(金) 10:37:06
朝、姉ちゃんが俺の部屋に起こしに来てたんだけど
俺は連日の2ch閲覧による夜更かしで眠すぎて起きれなかったんだ
全然起きる気の無い俺を見て、姉ちゃんが部屋に入ってきて、俺に馬乗りになる
鬱陶しいなーとか思ってると、姉ちゃんが寝てる俺の耳元で

「朝だぞおおおお早く起きなさああああい」

寝起きの悪い俺は姉ちゃんにムカついてガバっと起きた
「キャッ!!」
起きた瞬間俺の唇に何か柔らかい感触、びっくりして目を開けたら
俺が急に起きたせいでベッドの上に転んでる姉ちゃん
「え・・・と、今口に何か当たったんだけど・・・」
「ん・・・んー?wなぁに?w」

二人でちょっと無言になっちゃったけど気づくと姉ちゃんの手が俺の股間に乗ってるのがわかった
「ちょっと姉ちゃん、とりあえず降りて、ベッドから降りて!」
俺は焦って、慌てて姉ちゃんをどかそうとする。
「なによwせっかく起こしてあげたのにー・・・あ、そっかwコイツのせいかw」
俺の股間の硬さに気づかれた、俺は思わず逃げようとしたが寝起きで力が入らない。

「ちょっとおとなしくしててw」

そう言うと姉ちゃんが両手で俺の股間に手を置き、触りだした。
初めて他人に触られる俺の股間・・・みるみるうちに大きく膨れ上がるのが自分でわかった
「あ・・・wおっきくなってきた・・・もうwしょうがないなぁw」
そう言うと姉は俺のトランクスの中に手を入れてきて

長くなりそうなんで続きはこっちで↓
http://hobby7.2ch.net/test/read.cgi/point/1146442166/
605デフォルトの名無しさん:2006/09/15(金) 11:33:11
    へ          へ|\ へ     √ ̄|        へ
   ( レ⌒)  |\   ( |\)| |/~|  ノ ,__√    /7 ∠、 \  厂|       __厂|__
|\_/  /へ_ \)   | |   | |∠  | |__   | /   !  |   | |       |__  __|
\_./| |/   \     .| |( ̄  _) |     )  | |    i  |  | |    _ |__  __|
  /  / ̄~ヽ ヽ.   | | フ  ヽ、 ノ √| |   ! レノ  |  !.  | ヽ__/ | /┌┐ _ \
 / /| |   | |   | |( ノ| |`、) i ノ  | |   \_ノ  ノ /    \__/ ヽ、二__ノ  ヽ/
 | |  | |   / /    | | .  し'  ノ ノ   | |       / /     厂|      _厂|__
 \\ノ |  / /      | |___∠-".   | |      ノ /       | |    └┐┌─┘
  \_ノ_/ /     (____)     し'      ノ/        | |_,ノ|    | | l二二l
     ∠-''~                        ノ/           ヽ__/   ∠_/ l二二l
606デフォルトの名無しさん:2006/09/15(金) 13:35:50
クイックレポートでQRShapeで表を作ってるんですが、4隅を丸めてくれと言う要望が出ました。
可能でしょうか。
607デフォルトの名無しさん:2006/09/15(金) 14:10:50
○────────○
│            │
│            │
│            │
│            │
○────────○

とりあえずこれで時間稼いでくれ
608デフォルトの名無しさん:2006/09/15(金) 15:31:44
時間稼ぎがやがて正式版に
609デフォルトの名無しさん:2006/09/15(金) 17:19:17
丸も微分すれば直線だ
610デフォルトの名無しさん:2006/09/15(金) 18:54:29
丸を定義してください
611デフォルトの名無しさん:2006/09/15(金) 19:17:28
TQRShapeを継承して拡張
612デフォルトの名無しさん:2006/09/15(金) 21:38:17
音楽を繰り返し流すにはどうすればいいでしょうか?
613デフォルトの名無しさん:2006/09/15(金) 21:59:38
iPod なら出来るんじゃない
614デフォルトの名無しさん:2006/09/16(土) 00:01:36
>>612
「繰り返しじゃない」方法は、見当付いてるってこと?
それとも、「音楽を流す方法」も込み?
615デフォルトの名無しさん:2006/09/16(土) 00:04:51
>>612は典型的な情報不足な質問
こんなやつに付き合うのは時間の無駄

>>613が申しております。
616デフォルトの名無しさん:2006/09/16(土) 00:49:00
>>615
お前だけ付き合わなければ良いじゃん
617デフォルトの名無しさん:2006/09/16(土) 00:52:42
Hage: Array[0..256*1024] of Byte;

という配列に TFileStream からテキストデータを読み込みました
Byteを文字として扱いたいのですが、このとき1バイト文字と2バイト文字の
判別はどうしたらいいでしょうか
618デフォルトの名無しさん:2006/09/16(土) 01:05:25
if StrByteType(@Char(Hage[0]), i) =
619デフォルトの名無しさん:2006/09/16(土) 01:06:42
>>617
漢字コードによるが、SJISなら、
二通りある。
・コードで判定
・APIに任せる

function IsKanji1(const c: Char): Boolean;
begin
{
 Result := (($81 <= Ord(c)) and (Ord(c) <= $9F))
  or (($E0 <= Ord(c)) and (Ord(c) <= $FC));
}
 Result := IsDBCSLeadByte(Byte(c));
end;
620デフォルトの名無しさん:2006/09/16(土) 01:23:13
>>619
前者 LeadBytesは第2バイトにも含まれる 第2バイトはAsciiを含む
後者 LeadByteしか判定出来ない
621デフォルトの名無しさん:2006/09/16(土) 02:39:38
うーん難しそうですね
とりあえず教えてもらった関数を調べて試してみますね
622デフォルトの名無しさん:2006/09/16(土) 02:42:36
WideChar('a') は問題ないですが、
なぜ WideChar('あ') はダメなんでしょうか。
WideChar($3042) とか WideString('あ')[1] とするしかないんでしょうか。
623デフォルトの名無しさん:2006/09/16(土) 03:34:45
>>622
'あ'の時点で、文字じゃなくて文字列だからだよ
624デフォルトの名無しさん:2006/09/16(土) 03:39:09
'あ'がSJISだからかな。
WideCharは単なるキャストで、JSIS→UNICODEの返還をしてくれるわけではないと思うぞ。
625デフォルトの名無しさん:2006/09/16(土) 03:47:45
L'あ'

・・・・ごめん
626デフォルトの名無しさん:2006/09/16(土) 09:44:07
ttp://homepage2.nifty.com/Mr_XRAY/Halbow/VCL05.html
ここのみたいにAnsiStrLCompじゃいかんの?
627デフォルトの名無しさん:2006/09/16(土) 12:34:01
Delphi 7 で、ToolButton に Image は表示せず Caption のみを表示して
います。ここで ToolBar の ButtonHeight を変更しようしてもできない
のですが、どうしたらボタンの高さを変更できるのでしょうか。
628デフォルトの名無しさん:2006/09/16(土) 12:47:38
AutoSize := False
629627:2006/09/16(土) 16:01:30
AutoSize に False を設定しても変更できませんでした。
ShowCaption を True にしちゃうと変更できないんです。
630デフォルトの名無しさん:2006/09/16(土) 16:29:03
ツールバー自体のHeightを変更してみるとか
631デフォルトの名無しさん:2006/09/16(土) 16:29:40
回答者は試してから言いなさい
632デフォルトの名無しさん:2006/09/16(土) 16:37:33
大変だな、回答者。こんなスレ、放置したらいいのに
633デフォルトの名無しさん:2006/09/16(土) 16:43:48
同一のプロジェクトを、自分がDelphiでWindows用のソフトを、別の人がLazarusでLinux用のソフトを開発しています。
プログラムの中で、Delphiのときに行う処理とLazarusのときに行う処理の場合分けをしたいのですが、
{$IFDEF VCL}
 Delphiの時の処理;
{$ELSE}
 Lazarusの時の処理;
{$ENDIF}
と書いても、Delphiでコンパイルしたときに Lazarusの時の処理; をしてしまいます。
どこが間違えてるんでしょうか?
634デフォルトの名無しさん:2006/09/16(土) 16:45:03
Font小
635デフォルトの名無しさん:2006/09/16(土) 16:50:39
>>633
そんなのは試して回答するやついるんか?
636633:2006/09/16(土) 16:54:11
>>634
VCLをvclにしてもうまく行きません。

>>635
過去に同じような経験をした人が回答してくれるかと思いました。
637デフォルトの名無しさん:2006/09/16(土) 16:54:40
>633 Help 条件指令の使い方
638デフォルトの名無しさん:2006/09/16(土) 16:58:43
>>633
VCLなんて定義されてないんじゃないのか。
VCLのソースには
{$IFDEF MSWINDOWS}
uses Windows, Messages, SysUtils, Variants, TypInfo, ActiveX;
{$ENDIF}
{$IFDEF LINUX}
uses Libc, SysUtils, Variants, TypInfo, Types;
{$ENDIF}

なんて記述があるからLINUXの場合はさらにKylixとLazarusで分ければいいんじゃないの。
639633:2006/09/16(土) 17:01:03
>>637
>>638

ありがとうございます。
{$IFDEF MSWINDOWS} と {$IFDEF LINUX} を使うべきだったのですね。
解決しました。
640627:2006/09/16(土) 17:09:21
私のツールボタンは解決しない…
しかたないので、>>634 をヒントにフォントを少し大きくしてokと
641デフォルトの名無しさん:2006/09/17(日) 05:31:12
 TCustomShellTreeView から派生している TShellTreeView と TFileListBox
を貼り付け
procedure TForm1.ShellTreeView1Change(Sender: TObject; Node: TTreeNode);
begin
FileListBox1.Directory := ShellTreeView1.Path;
end;
というコードを書いただけのプロジェクトでもメモリーリークしてしまいます。
 これを避けるにはどうしたらいいのでしょう?
642デフォルトの名無しさん:2006/09/17(日) 06:52:07
TShellTreeView というコンポーネント自体が既にメモリリークしている模様(6Per付属の物)。
上のコンポ置いただけでなんのコードを書いてないプログラムからもリークが検出される。
コンポのソースが\Demos\ShellControls\ShellCtrls.pasにあるから、本当にリークしているのか、
誤検出なのか、検証してみてください。
643デフォルトの名無しさん:2006/09/17(日) 10:13:22
>>641
・ID: 16739 Updated Delphi 6 shell controls demo components
 http://codecentral.borland.com/Item.aspx?id=16739
・BPSoftware.com Blog
 http://www.bpsoftware.com/blog/2005/11/fastmm-saves-day.html
644デフォルトの名無しさん:2006/09/17(日) 13:43:14
みなさんは、1クラス1ファイル(pasファイル)で作っていますか?
それとも、結合度が強いクラスは一つにまとめていますか?
ちなみに、おいらは1クラス1ファイルで作って結合度が強いクラスを
フォルダで分けています。
しかし、Delphi2006のモデルビューで見るときには複数のクラスを
一つにまとめた方が良さそうな気がしましたので聞いてみました。
645デフォルトの名無しさん:2006/09/17(日) 13:46:59
> 結合度が強いクラスは一つにまとめています
646デフォルトの名無しさん:2006/09/17(日) 14:15:07
最近のDelphiはともかく、
基本的にDelphiにはクラス内クラスが無いから、
他のクラスのプライベートメンバーにアクセスさせたいときだけ同じユニットにしているかな。

もちろん、パブリックなプロパティを作ってもいいんだけど、そうするとどのクラスからでも見ることができちゃうからね。
647デフォルトの名無しさん:2006/09/17(日) 14:27:18
基本は1クラス1ユニット
しかし俺様ライブラリは複数クラス混在型
648デフォルトの名無しさん:2006/09/17(日) 15:06:22
ソースみれば分かるように、1クラス1ユニットなんか無意味だ
649デフォルトの名無しさん:2006/09/17(日) 15:24:26
>>644
結合度の強いのは、1つにまとめてる。
privateでも同ファイル内ならアクセスできるのを利用している
650644:2006/09/17(日) 15:36:51
参考になりました
複数のクラスを1ユニットに結合する場合、複雑なモデルでは
すぐ1万行突破とかになりませんか?

でも、名前空間に階層構造が無いので、本来は機能毎にユニットを管理する
のが正しいのかもしれませんね。

これを機に設計を見直そうかなぁ
651デフォルトの名無しさん:2006/09/17(日) 17:50:07
さくっとカット&ペーストで別ユニットに移動できるような独立性の高いクラスは
1ユニットにまとめておいてもあまり問題を感じない。
逆にフォームとかが絡んでくるとすぐ破綻するな。
652デフォルトの名無しさん:2006/09/17(日) 19:09:04
>>639
解決したんで横やりにしかならないが、
Delphiとlazarus(というかfpc)を分けたいなら、
{$ifdef FPC}
だと思う。
653delphiそれは・・:2006/09/17(日) 21:07:32
BSD2006と共存させて旧バージョンのDelphiを使おうと思っています。

手元にVer4,5,6,7の三つがあるのですが、みなさんどのバージョンを
よく使われて(今も使って)いましたか?

できるだけ、できたアプリのサイズが小さくて、IDE等のバグが少なくて
使い勝手の良かったバージョンを教えてください。
654デフォルトの名無しさん:2006/09/17(日) 21:12:17
>>653
2
655delphiそれは・・:2006/09/17(日) 21:15:30
>>654
う〜ん D2はもっていないのです。
このバージョンはD1がオマケでついていたそうですね。Warp4でつかえるな。
656デフォルトの名無しさん:2006/09/17(日) 21:21:51
俺は5,6,7,2005持ってるけど6使ってる
理由は特に無い
657デフォルトの名無しさん:2006/09/17(日) 21:30:57
3.1 std, 4 pro, 6 per, 2005 pro ともっていて、3.1 -> 4 -> 2005 と6以外の手持ちの最新を使い続けてるね.
今は turbo delphi 2006 explorer に移行中.
658delphiそれは・・:2006/09/17(日) 21:35:03
>>656
D5はスプラッシュ画面がBCB見たいですが、認証しなくていいから楽ですね。
D6は私も先月まで使っていましたがHDを整理して現在消しております。
実は最近までWin2000だったもので、D7のメニューアイコンに違和感があり、
あまりD7は使っておりません。それにあの実行ファイルのチェスの駒(ナイト)
見たいなアイコンよりD6の柱のアイコンがまだ好きだったせいもあります。
D7はメニューのキャプション、たとえばファイル(F)の(F)の部分が、起動時に
なぜか表示されなくて、マウスポインタを近づけると表示するという変な挙動が
あって(私だけか?)なんか気持ち悪かった部分もあります。
今月、5年ぶりにノートパソコンを買い替え、OSもXPになり、BSDがインストール
できるようになりましたが、IDEの機能がごちゃごちゃして、イラついています。
上で毛の生えたブリーフさんが言われてますが、私はコンポーネントパレットの
使い勝手は改悪だとおもいました。オプションで旧タイプに変更できないし・・・。
659ミ,,゚Д゚彡 ◆A6VzDeLphI :2006/09/17(日) 21:40:06
D_DevLog DDevExtensions
http://ddev.blog46.fc2.com/blog-entry-57.html#more

>私はコンポーネントパレットの
>使い勝手は改悪だとおもいました。オプションで旧タイプに変更できないし・・・。

満足いかないとは思いますが、
一応、ご紹介しときます。
660delphiそれは・・:2006/09/17(日) 21:40:23
アイコンの宝石化は私も好きです。できればWin32版のほうが青い宝石で
あって欲しかった。右下のシンボルはいりませんね。

しかし、一番BSDで悲しかったのはHELPがいっそう使いづらくなったことです。
なんか違和感あります。うまく説明できません。

D8とBSD2005は暗黒史という人がおられますが、ほんとバグが多かったのでしょうか?
661デフォルトの名無しさん:2006/09/17(日) 21:43:13
>>660
BDS2006 でD7 以前のヘルプを使えるようにするプラグイン
http://cc.borland.com/Item.aspx?id=23948
662デフォルトの名無しさん:2006/09/17(日) 21:44:41
誰か宝石のアイコンリソースうpしてくれない?
Del6に組み込みたい。
663delphiそれは・・:2006/09/17(日) 21:50:21
>>659
>>661
本当にありがとうございます。
664デフォルトの名無しさん:2006/09/17(日) 22:44:06
なんか涙が出てきた・・・
665633:2006/09/17(日) 23:01:51
>>652
追加情報ありがとうございます。
やりたいことは「もしDelphiだったら」なので、{$IFDEF WIN32}で行こうと思います。
今後「もしLazarusだったら」という場面が出たらそちらを使おうと思います。
666デフォルトの名無しさん:2006/09/18(月) 00:49:47
BDS2006と、D7を使っているなあ。
667デフォルトの名無しさん:2006/09/18(月) 01:10:03
バージョンUpの葉書が届いた…
BDSじゃないと多言語で入れられないみたいね。

BDS買っちまうかなぁ…
これが某の狙いだったりして。
668デフォルトの名無しさん:2006/09/18(月) 02:07:55
でも、もうしばらくするとHighlanderがでるかもだぜ?
669デフォルトの名無しさん:2006/09/18(月) 02:34:44
TTableのLocateを使おうとして

if not Table1.Locate('Comment',Edit1.Text, [loCaseInsensitive,loPartialKey]) then
MessageDlg('該当するデータがありません。',mtInformation,[mbOK],0);

例えば'Comment'に「わたしのカメは大きいです」という文字列が入っていたとして、Edit1に「カメ」と入力して
このコードを実行しても、'該当するデータがありません。'というダイアログがでてしまいます。
OptionでloPartialKeyを指定すれば部分的に含まれると止まってくれると思ったんですが、どこがいけないんでしょうか?

仮にEdit1に「わたしのカメは大きいです」と全部入力すれば、このレコードで止まってくれます。
670デフォルトの名無しさん:2006/09/18(月) 03:29:19
タブキーを押した時にカーソルが今は8マスくらい進んでしまうのですが、4マスくらい進むように設定を変えたいのですが、どこから変更できますか?
671デフォルトの名無しさん:2006/09/18(月) 03:53:55
コードエディタの話?
TMemoの話?
672デフォルトの名無しさん:2006/09/18(月) 05:43:34
>>669
使うべきメソッドがちげーよ。
Findなんとかとかを使えよ。
673デフォルトの名無しさん:2006/09/18(月) 09:32:15
StatusBarにProgressBarを組み込む方法は、Webページが見つかったのでわかりました。

これって、StatusBar.Panels[2]とかにProgressBarを組み込む方法はないんですか?
674デフォルトの名無しさん:2006/09/18(月) 09:58:47
位置とサイズをpanel[2]とかに合わせるだけだ。やってみろ。
675デフォルトの名無しさん:2006/09/18(月) 10:51:44
>>674
やってみますた… できました…
Parentに指定はできないんですね…
676デフォルトの名無しさん:2006/09/18(月) 11:54:14
677デフォルトの名無しさん:2006/09/18(月) 12:19:59
>>673
ソースよく見れば分かる
678677:2006/09/18(月) 12:20:35
リロードしてなかった。ごめん
679670:2006/09/18(月) 14:16:09
>>671 ソースを書くところのことです。前に一回変更できたような気がするのですが、思い出せません(´・ω・)
680ミ,,゚Д゚ミノ ◆A6VzDeLphI :2006/09/18(月) 14:43:06
BDS2006
[ツール][オプション][エディタ設定][ソースオプション][タブ位置][4]

で、いい?
681デフォルトの名無しさん:2006/09/18(月) 15:03:37
Delphi 6 Personal なんですが、半角スペースの表示はできないですか?
682679:2006/09/18(月) 15:16:00
>>680 アリヤトー(´ω`*)
683デフォルトの名無しさん:2006/09/18(月) 15:58:46
>>681
kwsk
684681:2006/09/18(月) 16:35:43
>>683
エディタなどで、半角スペースや改行やEOF表示できるものは多いと思うのですが、
あんな感じで、半角スペースを表示できると把握しやすくて好ましいです。
685デフォルトの名無しさん:2006/09/18(月) 16:36:00
ftp://ftp.borland.co.jp/pub/delphi/delphi6update2.exe
ダウンロード出来ないのですが他に入手する方法はあるでしょうか?
pingが返ってこないです
686デフォルトの名無しさん:2006/09/18(月) 16:59:47
>>685
つ サポセンに電話
687デフォルトの名無しさん:2006/09/18(月) 17:09:16
Delphi使っててよく思うんだけど、
1フォームにつき1クラスという概念ではなく(継承ではなく)
オブジェクト単位にクラスを指定できれば
もっと綺麗な設計ができるのになぁと思うんだけど
みなさんは如何思いますか?

ターゲットアクションというデザインパターンがそうらしいけど。
688デフォルトの名無しさん:2006/09/18(月) 17:35:07
689デフォルトの名無しさん:2006/09/18(月) 17:35:38
何言ってるかわからない
690デフォルトの名無しさん:2006/09/18(月) 17:47:15
(´・ω・`) ショボーン
691デフォルトの名無しさん:2006/09/18(月) 17:51:12
同じく何を言ってるのかわからない。
どっかで新しく覚えた単語をただたんに書きたいののではと邪推してしまう。

わかる単語がある文章も(”オブジェクト単位にクラスを指定”ってとこね)
さっぱり意味がわからない。
692デフォルトの名無しさん:2006/09/18(月) 17:59:59
>>688
上はダウンロードできませんでしたが
下はうまくいきました
ありがとうございます
693Delフサギコ ◆A6VzDeLphI :2006/09/18(月) 18:12:41
           >>687
   ∧,,∧   / つまり
  ミ,,゚Д゚彡 <  Button1じゃなくて
   ミつ旦(ミ~~ \ TButton1を生成して
 @ミ   ミ     コードかければ
   ∪''∪    イベントハンドラなんて持たずに
          メソッド編集できてい〜〜〜なーーー、
って事?

漏れも昔、妄想したが
まあ、今のままでもいいんじゃないかとも思う。

全部の部品が決まった既存のクラスではなく
継承関係にあるってのは、それはそれでクラス大杉るんじゃないかと。

IDE上にコンポーネントを配置する、
という行為が、継承クラスではなく、
既存のクラスである必要があったりして
実装するのが楽だったんじゃないのかね?
694デフォルトの名無しさん:2006/09/18(月) 19:24:51
>>692
直リンは NG だったか。すまん
695デフォルトの名無しさん:2006/09/18(月) 19:31:39
JaneViewのビューアは、TWebBrowserのようなリッチなコントロールをイメージして
コントロールを継承して機能を追加する形でプログラムを組んだのだけど、
どうしようもないくらいぐだぐだな、見るのも嫌なソースになってしまいました。

自分が初心者だったこともあるけど、やはりUIとそれ以外のロジックは別な機能で、
その間の結合はできるだけ弱めておく方がよいと思います。
696デフォルトの名無しさん:2006/09/18(月) 20:21:52
JaneはFreePascalで、非Windows対応のものが出ないものか。
697デフォルトの名無しさん:2006/09/18(月) 22:09:42
>>691さん
>>693さん
そんじゃなくて、各オブジェクトをTFromのサブクラスに配置するのではなく
指定したクラスに配置できればいいかなぁと思ってね。
同一画面上に検索する部分、データ入力する部分、その他の部分があったとすると
それらを独立したクラスで実装できると嬉しいなぁと思うけど、みんさんは
そんな風に思わないのかな?(今も、カスタムコンポーネントにすればできる
けど、初期設計から利用するのは現実的ではないと思ってね)

※例!あまり良い例ではないけど・・・
画面上の検索領域のイベント処理はAクラスで処理
入力領域のイベント処理はBクラスで処理
その他のイベント処理はCクラスで処理
のように、ターゲットクラスを指定してイベント処理を記述できれば
設計もシンプルになるだろうとおもうんだけど。。。ダメ?
698デフォルトの名無しさん:2006/09/18(月) 22:18:27
フォームに置くんだから、インスタンスがフォームのフィールドになるのは極めて自然だと思う。
そんなもんが独立したクラスなら、面倒でたまらん。
699デフォルトの名無しさん:2006/09/18(月) 22:33:00
>>698
でもそれじゃ、TFormのサブクラスで全部処理するか、
モデル部分だけを切り出して別のクラスで処理するか、
(これもコントロール部分が複雑になる可能性あり)
該当部門のコントローラを別のクラスに渡して処理させる
(このケースが発生するのであれば、元々別のクラスで処理できればもっと良いよね)
必要があるよね。

あー、クラス設計って難しいぃーーーーーーーーーーーー
700デフォルトの名無しさん:2006/09/18(月) 22:34:40
>>697
Frame を使ったらどうでしょう。
Form にForm をはめこむ技もあります。
701デフォルトの名無しさん:2006/09/18(月) 22:39:19
>>700 それ話の焦点がずれてるような・・
702デフォルトの名無しさん:2006/09/18(月) 22:40:21
> でもそれじゃ、TFormのサブクラスで全部処理するか

それで都合が悪いことってなに?
やたらでかいユニットになるってこと?
703Delフサギコ ◆A6VzDeLphI :2006/09/18(月) 22:40:33
           _________
   ∧,,∧   / 
  ミ,,゚Д゚彡 < ええっと、質問、いいかしら。 
   ミつ旦(ミ~~ \ 
 @ミ   ミ     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ∪''∪
function ExtFileOpenExePath(Ext: String): String
ってのを作りたいです。教えてくださいま。

ExtFileOpenExePath('txt')
ってやると、
C:\WINDOWS\system32\notepad.exe
が戻ってくるのがいい。

実在のファイルがあるときは
function ExtRunExeFileName(FileName: String): String;
var
 AppName: array[0..MAX_PATH] of Char;
 AppHandle: THandle;
begin
 AppHandle := FindExecutable(PChar(FileName), nil, AppName);
 if AppHandle > 32 then
  Result := AppName
 else
  Result := '';
end;
ってやると、求まるんだけど、実在のファイルがない(作りたくもない)
場合でも拡張子からExeパスを取得したい。
704Delフサギコ ◆A6VzDeLphI :2006/09/18(月) 22:43:37
          _________
   ∧,,∧   / まさにFrameか
  ミ,,゚Д゚彡<  データモジュールではないかと
   ミ つ旦)~~ \ 
 〜ミ  ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ∪''∪  >>697

理想を最初から追うのではなく
必要になったときに、設計変更も辞さない構えで
いけばいいんとちゃうかしら。

705デフォルトの名無しさん:2006/09/18(月) 22:47:53
706デフォルトの名無しさん:2006/09/18(月) 22:54:03
(´・ω・`) ショボーン
707デフォルトの名無しさん:2006/09/18(月) 22:56:59
再利用も考えるとTFrameだな。
中村氏もたしか多用してたよな。
まぁ、継承に若干バグがあるのが難点だが。

>>704
つか、データモジュールはこういうケースにどうつかうんだ?
708デフォルトの名無しさん:2006/09/18(月) 22:59:21
>>695
マークしたTabをショートカットで閉じると全部閉じちゃうバグもそのせいという感じなのかな
チェンジイベントの使い方が原因なんだけど

とか本物か分からずに書いてみるてすと
709デフォルトの名無しさん:2006/09/18(月) 23:02:37
>>687
> ターゲットアクションというデザインパターンがそうらしいけど。

つ TAction
710Delフサギコ ◆A6VzDeLphI :2006/09/18(月) 23:24:47
           _____
   ∧,,∧∩  /
  ミ*゚Д゚*ミ < ありがとーう>>705さん
  (ミ   ミ   \
 〜ミ ,,, ミ      ̄ ̄ ̄ ̄ ̄
   し' `J
711デフォルトの名無しさん:2006/09/18(月) 23:53:59
TFrameって、FormCreateとFormDestroyがないんだよなあ。
生成と、破棄処理どうしてる?
712デフォルトの名無しさん:2006/09/18(月) 23:55:39
ちょっとききたいのですが、
Delphiで、タブブラウザを作ろうというホームページがあったと思うのですが、
おぼえている人がいたら、教えてください。
713デフォルトの名無しさん:2006/09/18(月) 23:56:11
ごめんw
いきなり見つかった
http://delphi.sakura.vg/index2.html
714デフォルトの名無しさん:2006/09/19(火) 00:02:19
>>711
Create とDestroy をoverride
715デフォルトの名無しさん:2006/09/19(火) 00:55:48
>>714
それだと不都合があったような。・・・
ごめん確認してないけど。
716デフォルトの名無しさん:2006/09/19(火) 01:01:16
717デフォルトの名無しさん:2006/09/19(火) 03:52:23
Edit1のTextの文字列が、『半角スペース』か『全角スペース』のみだった場合は、Edit1.Text:='';にしてやろうと思いました。

ところが、実際コードを考えようとすると、@lengthで長さをとって、A'_(半角スペース)'か' (全角スペース)'が存在するか、
Bその場合に半角スペースか全角スペース以外の文字が存在しない。 場合にText:=''

っていうとてつもなく厨なコードしか思い浮かばないので、ベテランの方ならどうやって解決するのか教えてほしいです。
718デフォルトの名無しさん:2006/09/19(火) 04:05:16
3以外の必要性がわからんのだが。
まあ長さ0の時に判定を端折るというのはあるかもしれないが。
719デフォルトの名無しさん:2006/09/19(火) 04:05:46
if ExecRegExpr('^[\s ]+$', Edit1.Text) then Edit1.Text := '';
720デフォルトの名無しさん:2006/09/19(火) 07:07:43
オレなら面倒くせぇからとりあえずTrimしてLengthだな
721デフォルトの名無しさん:2006/09/19(火) 07:26:32
D6パーで、AssinFile()のUnicode版みたいの無いス化?
722デフォルトの名無しさん:2006/09/19(火) 07:51:45
エロい関数名だな
723717:2006/09/19(火) 08:35:21
あ、レスありがとうございます。

>>718さんへ
未定義の識別子’ExecRegExpr’って出てしまいます。
Delphiはバージョン5Proです。

>>720さんへ
Trimは全角スペースは消さないと思うです。
724デフォルトの名無しさん:2006/09/19(火) 10:09:30
StringReplace2連発とか
ま、普通にチェックした方が速いけど
725デフォルトの名無しさん:2006/09/19(火) 11:00:28
いつもはDelphi2005を使っているのですがマシンの調子が悪いので
Delphi7にソースをフォルダごと移動してデバッグしようとしたところ全く動きません。
難しいコードやAPIは使わずにボタンを押したらFunctionを読んでファイルに書き込んで
終わりってコードなのですが、Functionにすら飛びません。

これってどうすればいいのでしょうか?
もしかして2005のソースは7では動かないの?
726デフォルトの名無しさん:2006/09/19(火) 11:01:44
普通に
if (Edit1.Text = ' ' or Edit1.Text = ' ') then Edit1.Text := '';
にするけどなー俺なら。
727デフォルトの名無しさん:2006/09/19(火) 11:04:16
>>726
edit1.textが'    'だったり'  'だったらどうする?
728デフォルトの名無しさん:2006/09/19(火) 11:21:49
>>725
「全く動きません」では情報不足。
どこでこけるのか、コンパイルは通るのか通らないのか、そのときのエラーメッセージは何なのか、
などの情報がないと答えようがないです。
とりあえずコンパイルが通らないならばどういうメッセージが表示されるのか、
通る場合は[F8]でステップ実行を行ってどこに原因があるのかを確認してみよう。
729デフォルトの名無しさん:2006/09/19(火) 11:25:27
>>728
情報不足ですみません。

とりあえずBP設定してF8でステップ実行しようとしても、
ステップを時々すっ飛ばします。
あと、Functionに飛ばないといけないところでFunctionの中にもBPを
設定してるのに、Functionに飛ばずにすぐ下のコードを実行します。
結果Functionからの戻り値を参照しようとしても''のためにエラーになりコードが停止します。
730デフォルトの名無しさん:2006/09/19(火) 11:46:28
最適化オフ
デバッグ情報関連全部オンにしてリビルドしたら
731デフォルトの名無しさん:2006/09/19(火) 11:57:58
>>727
あー1個じゃない場合か。
それなら正規表現かな。
732デフォルトの名無しさん:2006/09/19(火) 13:07:33
>>730
駄目でした。

たしかいくつかのファイルを消してコンパイルしたら再度それらのファイルを作り直すって方法が
あったと思いますがあれってどのファイルを消せばいいんでしたっけ?
733デフォルトの名無しさん:2006/09/19(火) 13:14:31
再構築すればいい。と思う。

てゆうかダメな全ソース晒せ
734デフォルトの名無しさん:2006/09/19(火) 13:53:14
AnsiTrim を使え。
735デフォルトの名無しさん:2006/09/19(火) 14:16:07
>>732
修正してるプログラムと
実行してるプログラムが別物。
736デフォルトの名無しさん:2006/09/19(火) 22:16:39
質問というわけではないのですが、愚痴らせてください。

私はDelphiをVer1の時から知っており、Ver1はフロッピーで買いました。
当時、いろいろ入門本が発行されており、私は本のとおりにコンポーネントを
フォームに置いて、プロパティを弄って、メソッドを書いてと、アプリケーションを
作っておりました。しかし、すぐにDelphiやVB、その後購入したBCBもやっぱり
その程度のプログラミングで、飽きたというか留まってしまいました。

原因は、プロパティやメソッドをいくら勉強しても、他人が作ったアプリケーションと
大差ないものしかできないと痛感したからです。たとえば、テキストエディタを
作ろうとおもって、メモコンポーネントをフォームに置いて・・・を
しても、Winに搭載されている「メモ帳」と同じ程度のエディタしかできません。
見栄えを徹底的に変えるとか、すごい機能を搭載するとか、拡張の仕方があるとは思うの
ですが、新しくコンポーネントを設計するとかWin32APIを勉強するとか、結局
結論はそこに行き当たるわけで、楽に高度なアプリケーションを作りたいのに、
オリジナリティを追求すると決して楽じゃなくDelphi以外の知識がDelphi以上に
要求され、それをどういう順番で、何を利用して学ぶのか、道しるべが無くて
いつも、入門者レベルで留まってしまうのです。
737デフォルトの名無しさん:2006/09/19(火) 22:21:58
一太郎やWordの編集画面はどうやって実現するのでしょう。
両者ともにVC++でできているので、道具はVC++を持っていればそろっているはず、
またDelphiだって理屈上、VC++とまったく同じ道具として利用できるはずだから
一太郎やWordと同じアプリケーションを開発できるはず、しかし、実際、
何をどういう考えで、どういう順番で開発し、必要なコンポーネントを用意して
それらを組み合わせてアプリケーション一本を構築していくのか、さっぱりわからず、
書店を探しても、WordやExcelなみのソフトウエアをどう作り上げるのか、基礎レベル
から教えてくれる書籍は、私はまだ一冊も見つけたことがありません。
738デフォルトの名無しさん:2006/09/19(火) 22:25:38
プロ、アマ問わず、Delphiでソフトウエアを開発して配布しておられる方は
いったい、どんな書籍や講習会を通して、オリジナリティあふれる高度な
ソフトが開発できるようになったのか、本当に知りたいです。

私はいつも貧弱な、誰でも一度は作ったようなソフトしか作れません。
739デフォルトの名無しさん:2006/09/19(火) 22:43:24
大規模なソフトウェアの開発に必要なのは、言語に対する習熟度よりも、
ソフトウェア工学に類するような、より広範囲な、方法論的な知識が求め
られるのではないか。
740デフォルトの名無しさん:2006/09/19(火) 22:48:49
>>736
APIとか別に覚えるようなもんではない。
必要なとき探せればそれで無問題。
WordやExcel並みのソフトを個人で作れたら、そりゃ天才だわな。
まずはコンポーネントを自分で作れるようになってみそ。
そしたら今より世界が広がるから。
741デフォルトの名無しさん:2006/09/19(火) 23:00:51
TEditor という、日本人開発者が作ったテキストエディタコンポーネントがある。
これはVCLやWindowsの、エディットコントロール機能には頼らず、処理はほぼ
時前で実装されているようだ。
エディタコンポーネントの設計と実装の実態について、これの日本語でのコメ
ント付きのソースコードは、なにより具体的な参考書と成り得るのではないか。

VCLの拡張で大規模ソフトウェアの基盤となるコンポーネントを、というなら、
JCL、JVCLのソースコードも参考になる。コメントやドキュメントの英語が苦に
ならないなら、膨大なコンポーネントのソースは、Delphiのいわば国語辞書になる。
742デフォルトの名無しさん:2006/09/19(火) 23:15:28
>>737
> 基礎レベルから教えてくれる書籍は、私はまだ一冊も見つけたことがありません。

当たり前です。
どこの世界に、飯の種を公開する人が居るでしょう?

>>738
> どんな書籍や講習会を通して

一太郎やWordみたいなアプリを作っている会社に入るか
オープンソースや商用アプリ・コンポーネントのソースを購入して解析するか
詳しい人を探して、友達になるか。

・・・プロでも、自分の会社が作っている分野&自分が関わった範囲でしか分かりませんし
前任者や同僚の成果を頼りながら、人海戦術で作っていくので、
1から作れるかと言うと、なかなか難しいと思います。
743デフォルトの名無しさん:2006/09/19(火) 23:35:25
>>733
駄目ですた。
ソースの公開は勘弁。

>>734
なんでしょそれ。
Helpにも無いぽ。

>>735
いや、さすがにそれは無いです。
744デフォルトの名無しさん:2006/09/19(火) 23:48:42
まぁ、要するに、なぜこうするとああなるのか? という原理がわかってないんでしょ。
Word や一太郎をつくる、ってことは量的な側面は一人じゃ無理。質的な面では
DelphiでもVC++でも同等の事が出来る、ってことはほんと。じゃ、何が分からないのか、

結局、自分の知りたい事がなんなのか分かってないんだよ。

メモ帳を越えるエディタは、TEditor を使えば出来る。だから、時間を惜しまず
TEditor がどのようにしてつくられてるかを研究するとよい。

そういうことをしないと、なんにも具体的なことは理解できないだろう。
745デフォルトの名無しさん:2006/09/19(火) 23:59:57
結局のところ、道具や材料を揃えたからといって
素人にビルは建てられません。

プロですら、色々な業者が寄ってたかって、何ヶ月もかかって
ようやく、1棟建てられるのです。

素人が1人で気軽に短時間で作れるのは、犬小屋くらいが関の山です。

>>744
> 結局、自分の知りたい事がなんなのか分かってないんだよ。

その通り!オリジナリティあふれる、高度な犬小屋を作りたい
-> 具体的には、どんな犬小屋なのか?が分かれば、解決策が見えてきます。

あとはお金の問題です。見栄えのする高度な機能の部品を買ってくれば
それなりの物が完成します。
746デフォルトの名無しさん:2006/09/20(水) 08:18:12
んだ。
プロの仕事を一朝一夕にマネできるわけがない。

その道に生きる覚悟を持って日々研鑚すべきだ。
747デフォルトの名無しさん:2006/09/20(水) 08:19:11
TListやTStringsらに頼らずポインタがんがん使ったプログラムにすりゃあ
C波の速度が出るよあほか。
コンパイラとスクリプトとVMの区別ぐらいできるようになっとけよ。
748デフォルトの名無しさん:2006/09/20(水) 09:53:46
>>743
その呼び出してる関数の中で raise 記述してたらそこでとまる?
749デフォルトの名無しさん:2006/09/20(水) 09:54:44
なんですか、不躾に。
750デフォルトの名無しさん:2006/09/20(水) 10:01:21
>>749
?
751デフォルトの名無しさん:2006/09/20(水) 10:08:36
>>750
747へのレスでした。

多分、コンパイルされてないんでしょ。
DCUを消せば、動きがあると思います。
752デフォルトの名無しさん:2006/09/20(水) 10:25:17
ちょっと質問です。まず自作の構造体を宣言しまして、
TKokyaku = record
 Myoji: string;
 Name: string;
 Age: integer;
 Memo: string;
end;

こいつをTListで管理しようと思い、
var
 listKokyaku: TList;
 …

このlistKokyakuにTKokyakuのポインタを追加するには、

Kokyaku.Myoji := 'いとう';
Kokyaku.Name := 'さだのすけ';
Kokyaku.Age := 22;
listKokyaku.Add(Pointer(Kokyaku));

で、追加できると思うんですが、取り出す方法がわかりません。
仮にKokyakuがinteger型だったら、Interger1 := integer(listKokyaku[2]);
みたいな方法で取り出せると思うんですが、独自の構造体型の場合のinteger()のようなキャストの仕方がわからないのです。
753デフォルトの名無しさん:2006/09/20(水) 10:42:14
PKokyaku = ^TKokyaku;
TKokyaku = record
 Myoji: string;
 Name: string;
 Age: integer;
 Memo: string;
end;

var
 Kokyaku: PKokyaku
begin
 New(Kokyaku);
 Kokyaku.Myoji := 'いとう';
 Kokyaku.Name := 'さだのすけ';
 Kokyaku.Age := 22;
 List.Add(Kokyaku);



 for i := 0 to List.Count - 1 do begin
  Kokyaku := PKokyaku(List[i]);
  Kokyaku.Age := Kokyaku.Age * 1024;
 end;
754デフォルトの名無しさん:2006/09/20(水) 10:42:37
用が済んだら Dispose
755デフォルトの名無しさん:2006/09/20(水) 10:56:23
ありがとうございます。

for i := 0 to List.Count - 1 do begin
  Kokyaku := PKokyaku(List[i]);

ループ使わないといけないのか〜
ところで、>Kokyaku.Age := Kokyaku.Age * 1024;
なんで1024を掛けるんですか? (^^;

>>754
デストラクタで、
for i := 0 to List.Count - 1 do begin
  Dispose(PKokyaku(List[i]));
end;
で、いいですか?

756デフォルトの名無しさん:2006/09/20(水) 10:57:50
>>755
それでもいいが、delのソース参考にして
Clearメソッドを実装しとけ。
757デフォルトの名無しさん:2006/09/20(水) 11:12:11
BDS2006は何かとクソと言われますが、バグが多いんですか?買わない方がいいんですかね
758デフォルトの名無しさん:2006/09/20(水) 11:16:27
そんなん聞かれてもオラ知らんよーーーーー
759デフォルトの名無しさん:2006/09/20(水) 11:18:11
>Clearメソッド

procedure ClearKokyaku;
var
i: integer;
begin
 for i := 0 to List.Count - 1 do Dispose(PKokyaku(List[i]));
end;

でつか?
いや!違うな。Itemの中のある一つのKokyakuが不要になった時にそれだけDisposeですよね?
どこで実装すべきか… 悩みます。
760デフォルトの名無しさん:2006/09/20(水) 11:30:29
>>759
そのリストのクラスを作ったほうがよくね?
そっちの方が再利用しやすいと思うが・・・。
Add
Clear
Delete
Count
あとは各プロパティを書けば幸せになれるぞ。
761デフォルトの名無しさん:2006/09/20(水) 11:36:32
こんなの
TKokyakuList = class(TList)
private
 function GetKokyaku(index: integer): PKokyaku;
 procedure SetKokyaku(index: integer; const Value: PKokyaku);
public
 destructor Destroy; override;
 function Add(Value: PKokyaku): integer;
 procedure Delete(Index: integer);
 procedure Clear; override;
 property Items[index: integer]: PKokyaku read GetKokyaku write SetKokyaku; default;
end;

762デフォルトの名無しさん:2006/09/20(水) 11:37:03
つーかだんだんrecordじゃなくてclassにしたくなってきた、、
763752:2006/09/20(水) 11:48:23
>TKokyakuList = class(TList)

いま書きかけてたんですが、俺のはFListをフィールドで作って、コンストラクタでCreateするというやつorz
いわゆるhas a関係ってやつです。
継承して作るほうがスマートですけど、override(下位で再定義)の理解が曖昧なんでできません…
数日間、悶えてみます。
764デフォルトの名無しさん:2006/09/20(水) 11:48:53
record型の話を756がclass型の話にしちゃったからなあ
765デフォルトの名無しさん:2006/09/20(水) 11:50:05
>>763
無用なメソッドを隠蔽したいから、おれもそっち派だ。
766デフォルトの名無しさん:2006/09/20(水) 11:55:35
>>764
この手の奴は普通にクラスでスマートに実装するだろ。
データとUIを簡単に繋げるし、何よりメンテしやすいしな。
この考えは規模によらず基本だろ。
767デフォルトの名無しさん:2006/09/20(水) 11:56:34
>>763
それでもいいと思うぞ。
または、そのFListが上記のTList派生TKokyakuListってのもありかも。
768デフォルトの名無しさん:2006/09/20(水) 11:58:57
>>766
規模によるとは思うけど、
確かにクラスにしとけば何かと楽だね。
769デフォルトの名無しさん:2006/09/20(水) 12:10:19
っていうか基礎作っておけばコピペしてちょろっと書き換えてにょろーんだろ
770769:2006/09/20(水) 12:22:25
ていうかマリオの神業をいろいろ見たけどこれが一番衝撃的
http://www.youtube.com/watch?v=Q8M7fuWjod0&eurl=
771デフォルトの名無しさん:2006/09/20(水) 12:26:24
>>770
俺の予想では次のステージのどっかで怖い画像が出てくる奴と思う。
ちがうかい?
772デフォルトの名無しさん:2006/09/20(水) 12:37:42
見てみた。

>>771の予想通り過ぎて呆れた
773デフォルトの名無しさん:2006/09/20(水) 17:37:53
なぜBCBよりDelphiの方が初心者向きと言われているのであろうか。
BCBもRADだし、VCLが使えてDelphiと大差ないはずである。
774デフォルトの名無しさん:2006/09/20(水) 17:38:24
無料分があるかないかじゃない?
775デフォルトの名無しさん:2006/09/20(水) 17:55:18
C++の文法がとても初心者向きじゃないから。
776デフォルトの名無しさん:2006/09/20(水) 18:25:47
ロマンチックがとまらないからじゃねーの
777デフォルトの名無しさん:2006/09/20(水) 18:45:38
「->」と「.」を使い分けれ!って点でもうだめ
778デフォルトの名無しさん:2006/09/20(水) 18:47:57
それは敬語と謙譲語を使い分けるのより簡単だぞ
779デフォルトの名無しさん:2006/09/20(水) 19:18:59
初心者のくせに生意気な
780デフォルトの名無しさん:2006/09/20(水) 21:30:36
Application.ExeName 以外で、自分自身の実行ファイル名をフルパスで取得する方法はありませんか?

コンポーネントを作っているのですが、コンポーネント自身で使用されている実行ファイル名のフルパスを取得したいのです。
よろしくお願いします。
781デフォルトの名無しさん:2006/09/20(水) 21:39:56
ParamStr(0)
782デフォルトの名無しさん:2006/09/20(水) 21:52:09
GetModuleFileName
783デフォルトの名無しさん:2006/09/20(水) 21:57:40
>>781
>>782

Thx!
784デフォルトの名無しさん:2006/09/20(水) 22:13:45
SpinEdit の数値を右寄せにするには、どうしたら良いのでしょうか?
785デフォルトの名無しさん:2006/09/20(水) 22:23:22
昨日気づいたんだけど、Delphi7のTListSortCompareの説明が間違ってるな
符号の意味が逆だ
786デフォルトの名無しさん:2006/09/20(水) 22:40:28
>784
spin.pas
createparams
or DT_RIGHT
787デフォルトの名無しさん:2006/09/21(木) 07:07:40
>>785
ボーランドほどの大きな会社でさえ、バグや間違いだらけなんだもん。
俺らがバグだしたって不思議じゃないよなぁってことで、大変励みになるよな。
788デフォルトの名無しさん:2006/09/21(木) 09:41:38
いや、それ、単なるこじつけ。悪いことは真似しないように。
789デフォルトの名無しさん:2006/09/21(木) 10:46:16
D4からD2006にうpしたらHelpがあまりにも糞なのですが、Helpが昔と同じ形式で
一番最新なのはどのバージョンでしょうか。
また、そのバージョンと最新版は機能面で何が異なりますか?
教えてください。
790デフォルトの名無しさん:2006/09/21(木) 11:44:54
>>789
つ Delphi 7のヘルプを使う方法
Delphi 7 help for BDS expert (updated again)
ttp://cc.borland.com/Item.aspx?id=23948

Delphi6のヘルプがBorland からダウンロードできたはず。
791デフォルトの名無しさん:2006/09/21(木) 11:53:36
>>790
D7のヘルプもFTPからダウンロードできるよ。
792デフォルトの名無しさん:2006/09/21(木) 13:33:14
> ボーランドほどの大きな会社
大きくないって。キミの妄想。
793デフォルトの名無しさん:2006/09/21(木) 13:38:00
今はググルみたいに小さい会社の時代。

大手メーカーは中核商品にイノベーションで潰されたとき負け組みに。
794デフォルトの名無しさん:2006/09/21(木) 14:44:41
youtubeも従業員30人程度の小さな会社だけど、ワーナーが擦り寄ってくるぐらいだぜ?
795デフォルトの名無しさん:2006/09/21(木) 15:16:55
ワーナーが擦り寄ってくる(笑)
796デフォルトの名無しさん:2006/09/21(木) 19:15:10
DBを利用するソフトって、使う場合、DBがインストールされていないと使えないのですか?
797デフォルトの名無しさん:2006/09/21(木) 20:01:06
そらそうだ
DBエンジン自体組み込むという手もあるが
798デフォルトの名無しさん:2006/09/21(木) 20:33:03
BDE がインストールされていれば
Paradox は使えると思うけど。
799デフォルトの名無しさん:2006/09/21(木) 20:43:21
今までのDelphiでもっとも安定し、バグも少なく、
今後もWin32下で使えるバージョンは何ですか。BDS2006がインストール
できないので、過去バージョンでお願いします。
800デフォルトの名無しさん:2006/09/21(木) 20:45:28
よくわからないけど、D5
理由:認証がいらない最終バージョン、D6みたいに糞なCLXが無い。
ヘルプがまだましだった頃の製品
801デフォルトの名無しさん:2006/09/21(木) 22:51:25
各バージョンそれぞれにファンが居るから、難しいね。その話題は。
2ch やってて一番驚いたのは、D3 の熱烈ファンが生存していることだな。
802デフォルトの名無しさん:2006/09/22(金) 00:40:46
Performance Data Helperを簡単に扱えるコンポーネントか何かありましたら教えて下さいまし。
803デフォルトの名無しさん:2006/09/22(金) 02:08:31
D5はQD3が動けば使うんだけどねえ
804デフォルトの名無しさん:2006/09/22(金) 02:48:29
D5だなぁ
D5が駄目ならD7
805デフォルトの名無しさん:2006/09/22(金) 03:04:46
そういや、グーグルで思い出したけど、グーグルの検索文字入力するところって、半角か全角スペースで何個か検索ワードを入れられるでしょ?
あれをTEditで実現しようとチャレンジしたことあるんですよ。
で、Edit1.Textのlengthとって、半角スペースか全角スペースならbreakするようにしてTStringListにAddしていこうとしたけど、力不足でできなかったorz

あれを実現するのはCommmaTextみたいにスペースを区切り文字として簡単にできるんですかね?
誰かトライしたことある人、教えてほしい。
806デフォルトの名無しさん:2006/09/22(金) 03:22:41
>>805
ヒント:正規表現
807デフォルトの名無しさん:2006/09/22(金) 04:25:22
正規表現を使うまでもないと思うが
808デフォルトの名無しさん:2006/09/22(金) 04:44:45
ちかんすればいいのに
809デフォルトの名無しさん:2006/09/22(金) 04:48:13
パーサの初歩だな
810デフォルトの名無しさん:2006/09/22(金) 05:01:00
今こそStringReplaceを使う時

var
 hoge : TStringList;

procedure addstrlist;
begin
 Edit1.Text := StringReplace(' ',' ',[rfReplaceALL]);
 hoge := TStringList.Create;
 hoge.CommaText := Edit1.Text;
end;
811805:2006/09/22(金) 05:21:14
>Edit1.Text := StringReplace(' ',' ',[rfReplaceALL]);

ん?全角スペースを半角スペースにして実現できますか?
そういえば全角スペース→comma、半角スペース→commaにStringReplaceして、CommmaTextにぶち込めばできますね!
812デフォルトの名無しさん:2006/09/22(金) 05:24:19
フォームがある大きさ以下にならないようにするコードは見つかるんですけど、TPanelがある大きさ以下にならないようにするコードはありませんか?

Panel1.OnResizeで
if Panel1.Width<300 then Panel1.Width:=300;
みたいにするしかないんですか?
813805:2006/09/22(金) 05:32:14
あーダメだ。
スペースが続いたらcommaも連続してしまいますね。
StringListに集めて文字がない行を削除すればいいのかな?

なんか、スマートじゃないな…
814デフォルトの名無しさん:2006/09/22(金) 07:07:56
#32#32 → #32 を文字列の長さが変わらなくなるまで繰り返したらどぉ?
やっぱりStringReplaceでしょ。

>>812
Constraints
それか、PanelもWindowだからウィンドウメッセージで。
815デフォルトの名無しさん:2006/09/22(金) 07:16:39
TRichEditを使って自作のエディタを作成しはじめました。
例えば「procedure DeleteListItem(ItemName: string)」とRichEdit1に打ち込んだとして、「procedure」の文字の色をコード上から赤とかに変えるにはどうすればいいでしょうか?

はじめから予約語を登録できるコンポなんかもありますが、勉強のためにつくってます。
816デフォルトの名無しさん:2006/09/22(金) 07:40:54
>>814
ありがとう。
継承元のプロパティまで見るように習慣つけないとダメですね〜。
817デフォルトの名無しさん:2006/09/22(金) 07:48:13
そんな簡単なアルゴリズムも思いつかないなんて・・・
転職した方がイクナイ?
818デフォルトの名無しさん:2006/09/22(金) 08:22:06
大丈夫か日本の技術力は……

procedure T(L: TStringList; const S: string);
var
F, I, CharLen: Integer;
Add: Boolean;
begin
L.Clear;
F := 1;
I := 1;
repeat
CharLen := 1;
Add := False;
if I > Length(S) then
Add := True
else
begin
if (S[I] in LeadBytes) and (I < Length(S)) then Inc(CharLen);
if (S[I] = #32) or (CharLen = 2) and (S[I] = #$81) and (S[I + 1] = #$40) then
Add := True;
end;
if Add then
begin
if F < I then L.Add(Copy(S, F, I - F));
F := I + CharLen;
end;
if I > Length(S) then Break;
Inc(I, CharLen);
until False;
end;
819デフォルトの名無しさん:2006/09/22(金) 08:24:51
人間なら、文字列の先頭から見て行って、
終わりか空白があれば前に区切ったところからそこまでを塊として追加していくだろ?
そのまま書けばいい。
ってことで>>818 >>805な。
820デフォルトの名無しさん:2006/09/22(金) 09:25:38
>大丈夫か日本の技術力は……

うん、日本にはもうギジュツが無くって、韓国のサムスンからパクってるんだって。
エンコリの韓国人が言ってた。
821デフォルトの名無しさん:2006/09/22(金) 10:34:37
 TStringListをつかうならdelimitedtextてメソッドあるからそれ使ってみたら、引数を複数とるプログラムの例ならコンソールプログラムに例があると思いますが・・・
822デフォルトの名無しさん:2006/09/22(金) 10:49:44
>>743
レスありがとうございます。
raiseもやってみたのですが、スルーでした。

意味不明だったのでD7を再インストールしたらきちんとできるようになりました。

でも、きちんとサブルーチンに飛ぶようになっても戻り値がめちゃくちゃでして。。。
外部pasファイルも同じフォルダに置いててフォルダごと移動してるのですがなぜか
きちんと値が帰ってきません。
F8でステップをトレースしていくとサブルーチンから外部PASファイルを呼び出したとき
までは同じ動作なのですが、外部PASからの戻り値が空白になってしまいます。

こういう場合は外部PASにもBP設定してひとつずつ確認するしか無いのでしょうか。
823デフォルトの名無しさん:2006/09/22(金) 10:50:15
×>>743
>>748
824デフォルトの名無しさん:2006/09/22(金) 11:16:11
アホだけどすげぇ!!
100億円を縦に積んだ!
高層ビルと並ぶ万札!ΣΣ(゚д゚lll)
http://gotodmc.ath.cx/uploader/src/hyakuoku.jpg
825デフォルトの名無しさん:2006/09/22(金) 11:37:07
>>822
その外部PASってやつを、プロジェクトから削除して、
同じフォルダに置いた外部PASを、プロジェクトに追加。


826デフォルトの名無しさん:2006/09/22(金) 12:00:20
>>825
レスありがとうございます。
やってみたのですが、駄目でした。
外部PASやサブルーチンにBP設定してもスルーされます。
ちなみにD2005だときちんとできますしraiseもきちんと動作します。
827デフォルトの名無しさん:2006/09/22(金) 12:05:29
今あるdcu を全部削除
828デフォルトの名無しさん:2006/09/22(金) 13:08:11
> CPU とオペレーティングシステムにとって最適な処理効率が得られるため,通常はできるだけ汎用整数型を使うようにします。
汎用型と基本型の、それぞれのメリットとデメリットが分からない……
829デフォルトの名無しさん:2006/09/22(金) 13:22:46
32bit CPUと32bit OSでは、
4バイトの整数型を使うのが速度的には一番有利なわけよ。
で、16bit CPUと16bit OSでは、
2バイトの整数型が一番有利なわけね。

で、Pascalの場合、integerと宣言した場合は、コンパイラが開発環境によって
integerを2バイト型と4バイト型を自動的に使い分けてくれる。
これが汎用整数型。

でも、DLLで、エクスポートする関数の引数とか、レコード型をDLLをまたいで渡す場合、
あらかじめ整数型のバイト数を決めておかないといけないわけよ。
そう言う場合は、どんな開発環境でもバイト数が変わらないShortIntやLongIntといった基本型を使うってこと。

なお、Delphiの場合のintegerは、LongIntと一緒。
昔のPascalコンパイラでは、integerは、ShortIntと同じものと扱うものもあったんでしょ多分。
830デフォルトの名無しさん:2006/09/22(金) 13:25:48
しかしx64環境ではIntは未だに32ビットなのが解せない。
まあLongとの差別化と、メモリの節約を考えたんだろうが。
Long DoubleがSSE2のせいで64bitに縮小されたのも解せない。
831デフォルトの名無しさん:2006/09/22(金) 13:27:47
>>827
DCUを両方とも削除してコンパイルしてみたのですが、駄目でした。

もう全く意味不明です。。。
832デフォルトの名無しさん:2006/09/22(金) 13:29:32
まあソースを晒せないって所でもう終わってるよ。。
誰もこれ以上まともに答えてくれないと思う。
833デフォルトの名無しさん:2006/09/22(金) 13:30:24
>>831
ソースが少ないのなら、新規で作ってコピペ。
これで絶対直るから、やってみろ。
834828:2006/09/22(金) 13:34:28
>>828
おおおおお、まじさんくす。すごくわかりやすかったです。
有利になる理由や、コンパイルの話、DLL の話、たいへん勉強になりました。
835829:2006/09/22(金) 13:55:24
なにそのジサクジエンw
836828:2006/09/22(金) 15:05:26
正直スマンカッタ orz
837デフォルトの名無しさん:2006/09/22(金) 15:06:36
>>831
参照パスがおかしいんだと思うけど…
いっそのことソースを消してコンパイルしてみたら?
意外とどっかにdcuがあってビルドが通ったりして。
838デフォルトの名無しさん:2006/09/22(金) 15:32:08
FormとFrameってどう違うの?
839デフォルトの名無しさん:2006/09/22(金) 15:46:55
Formの上に貼り付けるのがFrameじゃね?

Formの上にFormは貼れなかった希ガス
840838:2006/09/22(金) 15:55:55
>>839
FormがなくてもFrameを新規作成できよね……
貼り付けて何か得があるのだろうか。
基本的過ぎるのか、検索しても全然わかんねぇ。
841627:2006/09/22(金) 15:57:08
Frame をいぢれば Form もかわる。
842839:2006/09/22(金) 16:01:54
いや、だから、Formに動的に生成したFrameを何枚も貼る場合に使う。

Frameだとペタペタ貼っといてそのカタマリをFormに貼れるけど、
同じことをPanelでしようと思っても出来ないじゃない。
843デフォルトの名無しさん:2006/09/22(金) 16:02:56
>>840
集合コンポーネント的な部品を簡単に作れる。
844838:2006/09/22(金) 16:08:07
>>842, 843
あぁ、なるほど。理解しました。ありがとう。
845デフォルトの名無しさん:2006/09/22(金) 18:05:33
Label1.captin:='ちょっと待て'と書いた後で重い処理をさせてるんだけど、
ちょっと待ての表示がされない。
重い処理が終わった後で表示される。
すぐに表示させるにはどうすればいいの?
846デフォルトの名無しさん:2006/09/22(金) 18:06:01
>>845
update
847デフォルトの名無しさん:2006/09/22(金) 18:16:06
>>846
即レスありがとう
848デフォルトの名無しさん:2006/09/23(土) 00:00:57
>>815
google
849815:2006/09/23(土) 07:54:42
>>848
遅レスありがとう
850815:2006/09/23(土) 08:30:38
てか、ググっても出ないし orz
851デフォルトの名無しさん:2006/09/23(土) 11:04:08
調べ方がわるいんでないの
852デフォルトの名無しさん:2006/09/23(土) 11:27:04
turbo delphiの無料版を使用して、
ホットキー(特定のキーを押すとアクティブになる機能)
の機能を付けたいのですがどうすればよいのでしょうか。
THotKeyコンポーネントを見つけ配置してみたのですが
その後どうすればよいのか分かりません。
853デフォルトの名無しさん:2006/09/23(土) 11:50:12
>>852
THotKeyはホットキーを設定するEditコンポみたいな物だから
実際のホットキー登録とかはAPI使わないとできない。
854デフォルトの名無しさん:2006/09/23(土) 13:06:45
RegisterHotKeyでぐぐれ
855デフォルトの名無しさん:2006/09/23(土) 18:28:13
>>848
俺もチラッとググたけど出ないな。
他人事だからそう熱心に調べようと思わないけど。
>>854みたいに何でググるか書いてやったらいいとおもう。
856デフォルトの名無しさん:2006/09/23(土) 18:37:11
リストボックスで、アイテムを上下に移動したいんだけど、簡単にできる方法ってありますか?
挿入や削除をやればできるんだけど、ちらつく気がする……

横から見てて、そもそも RichEdit と Edit の違いが良く分かってないことに気がついた俺 orz
プロパティ数が違うけど、どう使い分けるんだろ。
857デフォルトの名無しさん:2006/09/23(土) 18:47:04
>>856
TListBox.Items.Move

RichEdit は書式付きエディット。
簡易ワープロみたいな感じ。
858デフォルトの名無しさん:2006/09/23(土) 18:48:13
procedure ほにゃららForm.ListBoxDragOver(Sender, Source: TObject; X,
 Y: Integer; State: TDragState; var Accept: Boolean);
var
 Index: Integer;
begin
 Index := ListBox.ItemAtPos(Point(X, Y), True);
 if Index < 0 then
 begin
  Accept := False;
  Exit;
 end;
 if Index > DragItemIndex then
 begin
  with ListBox do
  begin
   Items.Insert(Index + 1, Items[DragItemIndex]);
   Items.Delete(DragItemIndex);
   DragItemIndex := Index;
  end;
 end else if Index < DragItemIndex then
 begin
  with ListBox do
  begin
   Items.Insert(Index, Items[DragItemIndex]);
   Items.Delete(DragItemIndex + 1);
   DragItemIndex := Index;
  end;
 end;
 ListBox.ItemIndex := DragItemIndex;
end;
859デフォルトの名無しさん:2006/09/23(土) 18:48:39
procedure ほにゃららForm.ListBoxMouseDown(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 if (Button = mbLeft) and (ListBox.ItemIndex >= 0) then
 begin
  DragThreadIndex := ListBox.ItemIndex;
  ListBox.BeginDrag(False);
 end;
end;

マウスでドラッグしてListBoxのアイテムを移動するコードサンプル。
860デフォルトの名無しさん:2006/09/23(土) 18:49:27
>>859 DragThreadIndex -> DragItemIndexでした。
861856:2006/09/23(土) 18:54:37
>>857
ありがとうございます、すぐにできました。
RichEdit の方も、分かりました。

……まんまあったのに、気が付かなかった orz
付属マニュアルが使い難くて、コード補完がマニュアル状態 ('A`)
862デフォルトの名無しさん:2006/09/23(土) 21:44:16
2ちゃんのカキコでサンプルコードを書くときに、.を打ったらコード補完が始まるのを待ってる自分に気づいたさ
863デフォルトの名無しさん:2006/09/23(土) 23:53:51
ちゃんと試してから、コードはコピペしろ。手打ちなんざ信用できん。
864デフォルトの名無しさん:2006/09/24(日) 00:37:52
>>815
いっちゃ悪いが一体何を調べてるんだ?
ttp://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200409_04090068.html
検索ワードは delphi richedit 色分け
865デフォルトの名無しさん:2006/09/24(日) 01:00:26
手打ちで間違えずに書く訓練をしてんねん。
866デフォルトの名無しさん:2006/09/24(日) 01:15:29
>>863
不具合あるなら自分で直せw
867デフォルトの名無しさん:2006/09/24(日) 02:37:05
ひどいスレだな、ここ。Del使いはみんなこんなの?
868デフォルトの名無しさん:2006/09/24(日) 02:52:40
今頃気づいたのかよw
869デフォルトの名無しさん:2006/09/24(日) 03:14:40
ツンデルだな。
870デフォルトの名無しさん:2006/09/24(日) 03:38:23
・・・・え?
871デフォルトの名無しさん:2006/09/24(日) 06:52:27
ApolloをDelphi2006でコンパイルしようとしているのですが、
socket.soをコンパイルしようとすると、
NMConstがない、言われてコンパイルできません。

どうやらpsock.dcuが利用しているようなのですが、
BDSのインストールディレクトリを検索してもでてきません。

これはもうサポートされないライブラリなのでしょうか?
872デフォルトの名無しさん:2006/09/24(日) 06:55:46
どうやら、昔あった、FastNetというコンポーネントみたいですね。
今は、Indyにとってかわられたようですね。
なぜ、psockだけ残っているかは疑問ですが。
873デフォルトの名無しさん:2006/09/24(日) 09:00:12
ツンデル、はいってる?
874デフォルトの名無しさん:2006/09/24(日) 11:52:06
こりゃいかん
875デフォルトの名無しさん:2006/09/24(日) 12:09:30
TTableについてなんですが、レコードの総数はRecordCountプロパティで取得できます。
ここでFilterをかけた場合、Filterに該当するレコードの数を知る方法はありませんか?
While Table1.Eof doでも使って自前で数えるしかないんでしょうか?
876デフォルトの名無しさん:2006/09/24(日) 13:56:04
使用してるSQLにコマンドがあるならそれを投げればいいし、ないならそれしかない
877デフォルトの名無しさん:2006/09/24(日) 13:56:52
×SQL
○データーベースソフト
878 ◆DQN/VWXNR6 :2006/09/24(日) 15:20:37
TabControlでテキストエディタ作ってるんだがタブ切り替え時にエディターも切り替えるにはどうすればいいんですか
教えてください
879デフォルトの名無しさん:2006/09/24(日) 15:33:41
文字列を式や変数として評価したいのですが、eval みたいのってありますか?
880デフォルトの名無しさん:2006/09/24(日) 16:24:48
>>875
RecordCountでとれなかったっけ?
TClientDataSet経由だと、たしか取れた気がするが・・・。
881デフォルトの名無しさん:2006/09/24(日) 18:26:34
>878
OnChengeイベントに、エディターを切り替えるコードを書く。
882デフォルトの名無しさん:2006/09/24(日) 19:45:19
OnChange などのイベントをコードで発生させるには、どう書いたら良いのでしょうか?
あ、単語が続いてるけど、自分は >>878 じゃありません。
883デフォルトの名無しさん:2006/09/24(日) 19:50:19
イベントハンドラを直接呼び出せばいいだけ。
884デフォルトの名無しさん:2006/09/24(日) 20:10:35
>>882
TEdit.OnChange(TEdit);
こんなかんじ。
直接
TEditOnChange(TEdit);
のように読み出してもいい。
885882:2006/09/24(日) 20:25:40
>>883, 884
ありがとうございます。解決しました。
サンプルを書いてくれて助かりました。
886デフォルトの名無しさん:2006/09/24(日) 21:37:13
ってか、イベントハンドラは派生フォームのメソッドだ、ってことに気づいた?
ただ呼び出すだけ。
887デフォルトの名無しさん:2006/09/24(日) 23:55:14
「いつも気になってるけど、Sender: TObjectって何?」
っていうひと多そう
888デフォルトの名無しさん:2006/09/25(月) 00:20:01
Sender は送り主って意味。
呼び出し側では通常 Self を渡す。
VCLソース見るとそうなってる。
複数のコンポーネントでイベントハンドラを共有するとき、
この Sender で誰のイベントか識別できる。
889デフォルトの名無しさん:2006/09/25(月) 08:19:42
過疎ってて、質問なくても解説するようになったか・・・
890デフォルトの名無しさん:2006/09/25(月) 09:39:12
・・・・と、朝から暇な粘着アンチですた
891デフォルトの名無しさん:2006/09/25(月) 11:04:45
まだボトペタしかできない1年生です。
TTreeViewでOnMouseUpしたときに、それが「ノードを展開するためにしたクリック」なのか「アイテムを選択するためにしたクリック」なのかを判別するにはどうしたらいいんですか??

ノードを開いただけなのにアイテムを選択されたときの処理がされてしまい、困っています。
892デフォルトの名無しさん:2006/09/25(月) 15:53:08
delphiでハードディスクの情報を取得するにはどうしたらいいでしょうか?
欲しい情報は
各HDDの
index
モデル名
サイズ
HDDが持つドライブレター
ドライブレター別のサイズと空き容量
です
893デフォルトの名無しさん:2006/09/25(月) 16:47:24
Win32APIスレ池
894デフォルトの名無しさん:2006/09/25(月) 17:40:09
>>892
Windowsの構造をきちんと理解するという点ではお勧めできないかもしれないが、
とりあえず手っ取り早くサボるには
ttp://www.mitec.cz/msi.htm
895デフォルトの名無しさん:2006/09/25(月) 19:54:26
誰か、CRC32を簡単に求めるを知っていませんか?
Kodersのものを片っ端から試してみたんだけど、結果が合わない……
896デフォルトの名無しさん:2006/09/25(月) 21:01:54
>>894
>>892じゃないが、これはすごい。
サポート時にユーザー情報を得るのに使えると思った
freeならなあ

>>895
自作したのソースうpろうか?依存ユニットがあるから、改造しないといけないけど
897デフォルトの名無しさん:2006/09/25(月) 21:08:05
898デフォルトの名無しさん:2006/09/25(月) 22:08:25
>>895
おれはいつも
ttp://forum.nifty.com/fdelphi/samples/00229.html
を使ってる。
問題なし。
899デフォルトの名無しさん:2006/09/25(月) 22:18:27
CRCの算出とかってコア部分が小さいから、asm化を追求すると楽しくて燃えるよな。
900デフォルトの名無しさん:2006/09/25(月) 22:24:22
901895:2006/09/25(月) 22:25:13
>>896, >>898
ありがとうございます。
試してみます。
902デフォルトの名無しさん:2006/09/25(月) 23:16:51
TMetafile に文字や画像をガンガン Draw しまくってから、
TImage に Draw して表示させているのですが、文字や画像が
表示されない場合あります。特に何かエラーが起こるわけでも
なく、ただ表示されない(場合がある)のです。いったい
どのようなことが考えられるのでしょうか。(WindowsXp, Delphi7です)
903デフォルトの名無しさん:2006/09/25(月) 23:20:37
・縮小すると線が細くて見えない
・クリッピングされている
904デフォルトの名無しさん:2006/09/25(月) 23:30:05
レスありがとうございます。まったく説明不足でしたが、例えば全く同じ
配置の画像 & 文字のグループを縦に4段くらい並べて表示させる場合が
あるのですが、最後の段で表示されない画像や文字があるのです。
表示されるのもあるのです。繰り返し処理で Draw しているのですが…
905デフォルトの名無しさん:2006/09/26(火) 00:01:02
メモリ不足
906デフォルトの名無しさん:2006/09/26(火) 00:06:05
晒せ
907895:2006/09/26(火) 00:40:51
>>896
唯一、できましたぁ。助かりました。

>>898
cc ってなんなのさ、返り値はなんなのさ orz
buf: pbyte ということは 1byte が引数になってると思うんだけど、そこに len: integer を要求されてる時点で何が何だか orz
これで、例えば 'abc' という文字列を計算するには、どうしたら良いんだろう orz

できれば、有名そうな JclMath.pas でやってみたかったけど、さっぱり分からない。
908デフォルトの名無しさん:2006/09/26(火) 01:07:32
Byte の配列を指すポインタだろ。
909898:2006/09/26(火) 02:44:29
>>907
おまいさんが、ポインタとかあんまり詳しくないなら、
その調べたいバイナリを全てTMemoryStreamに突っ込んで、

lw:=crc(0,ms.Memory,ms.Size);

とやれ。
返値がCRC32。
910デフォルトの名無しさん:2006/09/26(火) 04:21:11
>>891
OnMouseUpより前のイベントでフラグを設定。
911デフォルトの名無しさん:2006/09/26(火) 04:48:24
イミフメ。どうやって判別するのかを質問してる
912デフォルトの名無しさん:2006/09/26(火) 04:55:04
>>911
OnMouseUpより前のイベント立てているフラグが立っているかどうかで判別する。
913891ですが:2006/09/26(火) 08:31:25
多分、>>910さんの言ってることは、MouseMoveなんかで、カーソルがノードの+マークの上にあるならbool型にtrueでも格納しろってことだと思います。
確かに、それをどうやるかが初心者には難問です・・
914デフォルトの名無しさん:2006/09/26(火) 08:39:02
VirtualTree あたりのソースでも見て研究しなよ。
915デフォルトの名無しさん:2006/09/26(火) 11:29:58
Del厨はソースよく読んで研究しろw
916デフォルトの名無しさん:2006/09/26(火) 11:41:24
ソースをよく読まないマなんて存在するの?
917デフォルトの名無しさん:2006/09/26(火) 12:07:09
ブビ(ry
918デフォルトの名無しさん:2006/09/26(火) 13:09:15
デル(ry
919デフォルトの名無しさん:2006/09/26(火) 13:24:52
痛いな
920デフォルトの名無しさん:2006/09/26(火) 13:25:54
ブビ厨は揚げ足しか取れないから
921デフォルトの名無しさん:2006/09/26(火) 16:47:49
おれ、Del使いだけどみんなでソース音読しようぜ
922デフォルトの名無しさん:2006/09/26(火) 16:56:34
むしろ初心者には、どこにソースが転がってるのかわからない
923デフォルトの名無しさん:2006/09/26(火) 18:45:57
これからはどんな質問にも「ソース嫁。」でよさそうだな
924デフォルトの名無しさん:2006/09/26(火) 19:29:50
「Personalなのでソースありません><」
と言われる
925デフォルトの名無しさん:2006/09/26(火) 19:38:38
ageるから煽られる。
926デフォルトの名無しさん:2006/09/26(火) 19:59:03
読めない奴が書けるわけない
927デフォルトの名無しさん:2006/09/26(火) 20:54:43

これからはどんな質問にも「ソース嫁。」でよさそうだな

「Personalなのでソースありません><」と言われるたら、Turbo Explorer DL しろ
と言えばいい
928デフォルトの名無しさん:2006/09/26(火) 21:21:36
定義されてないメッセージに反応するのはどうすればよいのですか?
929デフォルトの名無しさん:2006/09/26(火) 21:53:55
定義すればよい。

質問の意味はよくわからんが。
930デフォルトの名無しさん:2006/09/26(火) 22:19:30
分からないなら黙っててください
931デフォルトの名無しさん:2006/09/26(火) 22:25:45
>>930
・・・・。
932デフォルトの名無しさん:2006/09/26(火) 22:26:17
・・・
933デフォルトの名無しさん:2006/09/26(火) 22:29:20
>>930
アホめ
934デフォルトの名無しさん:2006/09/26(火) 22:37:43
あっはっは。
Del厨っておもすれ。
935デフォルトの名無しさん:2006/09/26(火) 22:40:26
>>934
del厨がやってるとは限らない
俺はC厨
Delは仕事で触った事があるだけ。
936デフォルトの名無しさん:2006/09/26(火) 23:49:23


・・・・・・伝統あるくだスレ崩壊か・・・・・・・・・・



937デフォルトの名無しさん:2006/09/27(水) 00:08:19
リストラVB厨が煽りに必死なんだ
938デフォルトの名無しさん:2006/09/27(水) 03:02:49
過疎ってるし、たまに質問あっても、ソース嫁、だし、
雑談ばかりじゃ、VB 厨関係なく尻すぼみ。ひとがいなくなったな
939デフォルトの名無しさん:2006/09/27(水) 03:43:52
ソース嫁に反応するのはVB使い。 VBはソース嫁ないから。
Del使いなら自然とソースを読みたくなる。 それが本当のプログラマ。
940デフォルトの名無しさん:2006/09/27(水) 08:07:37
VBならソース読めなくてもプログラマになれるのにね
941デフォルトの名無しさん:2006/09/27(水) 08:29:29
VBだと読みたくてもソースが付いていないからなぁw
942デフォルトの名無しさん:2006/09/27(水) 08:39:59
それはマじゃなくてチュウ。

マってのは各種プログラムからライブラリまで自由に使いこなせる人のこと。
M$謹製ライブラリじゃないと、なんていうのはチュウ。
943デフォルトの名無しさん:2006/09/27(水) 10:47:18
どうすればシフト+スペースができますか?

if (Key = VK_SHIFT+VK_SPACE ) then
begin
ShowMessage( 'test' );
end;
944デフォルトの名無しさん:2006/09/27(水) 10:47:40
以前、Metafile に大量の画像をDrawした場合に表示されない画像がある件に
ついて質問をした者です。Delphiに関連しないかもですが、PCの画面の解像度を
変更して試すと、以下のような結果になりました。
解像度800×600 → 不完全さ大
解像度1024×768 → 不完全さ中
解像度1152×864 → 不完全さ小
解像度1280×1024 → 完全に表示
なぜ高解像度にするとちゃんと表示されるのか、見覚え聞き覚えのある方が
いらっしゃいましたらお願いいたします。
945デフォルトの名無しさん:2006/09/27(水) 11:08:22
>>943
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
 if ( (Key = VK_SPACE) and (Shift = [ssShift]) ) then
  ShowMessage('Test');
end;

>>944
このページ読んで研究してみればどうだろう
http://www.asahi-net.or.jp/~HA3T-NKMR/vcl2-8.htm
946デフォルトの名無しさん:2006/09/27(水) 11:14:22
>>945さん ありがとうございました
947デフォルトの名無しさん:2006/09/27(水) 12:59:10
948944:2006/09/27(水) 16:08:34
>>945 さま >>947 さま
参考サイトありがとうございます。しかーし、解決にいたってません。
ビデオメモリが32MBしかないのが原因なのかなー。ビデオカード買って
こようかななどと考えています。
949デフォルトの名無しさん:2006/09/27(水) 19:09:42
Metafileって、VRAM使ったけ?
950905:2006/09/27(水) 19:15:40
大漁のメタファイルなんて扱っちゃだめずら。
すぐにメモリ不足になるずら。理由は不明ずら。
きっとOSかドライバのバグずら。
つまり運任せずら。
他の方法考えた方が賢いずら。
951デフォルトの名無しさん:2006/09/27(水) 20:16:57
今晩は、教えてください。

(アプリのGUI状態)
1枚のForm1にButton1が1個、Panel1が1枚、あります。Panel1のAlignプロパティは
alBottomでCaptionプロパティは空です。ButtonのHintプロパティに'実験です'を書き込んでいます。

(コーディング状態)
TFrom1の宣言で procedure ShowHint(Sender:TObject);を記述し、
Implementation部で
 procedure ShowHint(Sender:TObject)
 begin
Panel1.Caption := Application.Hint;
end;

と記述しています。さらに Form1のOnCreateイベントで

procedure TForm1.FormCreate(Sender:TObject)
begin
Application.OnHint := ShowHint;
end;

と記述しました。
952デフォルトの名無しさん:2006/09/27(水) 20:19:01
何を教えて欲しいんだよ
953デフォルトの名無しさん:2006/09/27(水) 20:22:42
以上のように記述すると、Button1にマウスポインタが入ると、
Panel1に'実験です'が表示され、マウスポインタが出ると表示が消えます。

問題は、Application.OnHint := ShowHint; の部分です。

ShowHintはメソッドの名前です。これをApplicationのOnHintプロパティに
代入するということはいったいどういうことなのかさっぱりわかりません。
このコードの作動メカニズムを教えてください。
954デフォルトの名無しさん:2006/09/27(水) 20:25:46
>>953
作動のメカニズムって・・・。
ただたんに、ユーザが捜査して、ヒントを出すべき操作になったら
OnHintのイベントがよばれるだけ。
コードでしりたいなら、ソースを呼んで納得するといい。
955デフォルトの名無しさん:2006/09/27(水) 20:33:11
まだDelphi言語に慣れていないのですが、右辺のShowHintはメソッド名ですから、
C/C++のように、これはメモリ上におけるメソッドのポインタを表し、Application
オブジェクトのOnHintプロパティは関数や手続きのポインタを代入するプロパティと
考えて良いのかどうか不安なのです。それとButtonにマウスポインタが入った、出た
というイベントはButtonに生じたはずですが、Buttonにはオブジェトインスペクタで
そのイベントを関連づけていません。なのにボタンに発生したイベントに呼応してメソッド
ShowHintが呼ばれています。このメソッドはどうやってButtonに関連づけているのですか。
956デフォルトの名無しさん:2006/09/27(水) 20:48:12
イベントは、メソッドポインタ一つを格納するプロパティーに過ぎない。
それはボタンに関連づけられてるんじゃなくて、Button2 でも出るでしょ。
Application.OnHint はどんな場合でもヒントが表示されるべきときに呼ばれるだけ。
957デフォルトの名無しさん:2006/09/27(水) 20:54:08
RichEditに改行を含んだ文字列をを挿入させたいのですが、改行文字ごとでてきます。
改行させるためにはどうしたらいいですか?

RichEdit1.SetSelTextBuf('test1\ntest2\ntest3');
この場合は、test1\ntest2\ntest3 このまま挿入されます。
958デフォルトの名無しさん:2006/09/27(水) 20:55:03
sLineBreak 又は #13#10
959デフォルトの名無しさん:2006/09/27(水) 21:01:22
>>958 ありがとうございます。
RichEdit1.SetSelTextBuf('test1'+ sLineBreak + 'test2' + #13#10 +'test3'+ #13+'test4'+#10+'test5');

全部改行できたのですが、一般的にどれを使うのでしょうか?
960デフォルトの名無しさん:2006/09/27(水) 21:04:54
解決しました。
はじめ教えて頂いた、 sLineBreak  か #13#10 を使います。
961デフォルトの名無しさん:2006/09/27(水) 21:32:13
普通に Clear して一行ずつ Add していけばいいのに
962デフォルトの名無しさん:2006/09/27(水) 21:35:47
>>961
ヒント:SetSelTextBuf
963デフォルトの名無しさん:2006/09/27(水) 21:42:39
あぁ、SelText なわけね
964デフォルトの名無しさん:2006/09/27(水) 22:35:48
RichEditで、VK_TAB キーを押したとき、
文字を寄せたいのですが、どこかにいってしまいます。
どうすればいいですか?

965デフォルトの名無しさん:2006/09/27(水) 22:43:43
続きでました。、TABは、となりのボタンとかにいってました。 
tabstopをtrueとかFlalseにしても移動してしまいます。
止めることはできませんか?
966デフォルトの名無しさん:2006/09/27(水) 22:49:50
WantTabs プロパティに注目。
ここで聞く前に付属ドキュメントを精読する癖をつけよう。
967895:2006/09/27(水) 22:50:30
しつこくてすまないです。
>>909 で静的配列なら @ を付ければ求められたんだけど、
動的配列の場合は、Pointer ってどう求めれば良いのでしょうか?
968デフォルトの名無しさん:2006/09/27(水) 23:17:41
>>967
ポインタ型にキャスト又は、@最初の要素。
969デフォルトの名無しさん:2006/09/27(水) 23:21:11
>>966 ありがとうございました。 
970デフォルトの名無しさん:2006/09/28(木) 00:58:09
TServerSocketのServerType を stThreadBlocking にしたとき、
TServerClientThread を継承してつくったクラスのClientExecute をオーバーライドしたプロシージャ内で
クライアントの切断を検知するほうほうってないですか?
while (not Terminated) and ClientSocket.Connected do
だと無限ループになってしまうんで。
971デフォルトの名無しさん:2006/09/28(木) 10:22:21
TServerSocketのDisconnectイベントは信用できない。
972デフォルトの名無しさん:2006/09/28(木) 13:13:17
RichEditとListBoxでコード補完を作っています。
Richeditを下キーを押したときListBoxに移りたいのですが、
ListBox.Forcused := true だとエラーがでてしまいます。
ListBoxに移るにはどうすればいいでしょうか?
973デフォルトの名無しさん:2006/09/28(木) 13:25:23
一例としては
ListBox.SetFocus;
974デフォルトの名無しさん:2006/09/28(木) 13:28:06
>>973 ありがとうございます。 できました。
975デフォルトの名無しさん:2006/09/28(木) 13:40:24
ためしにインストールしてみたが何が何だかさっぱり分らない
やっぱり専門書とか買ったほうがいいのかな?
976デフォルトの名無しさん:2006/09/28(木) 13:41:08
>>975
マスタリングの本を一冊かっとけ。
977デフォルトの名無しさん:2006/09/28(木) 13:49:31
>>976
ありがとうございます。
それは、どんな本ですか?
978デフォルトの名無しさん:2006/09/28(木) 13:50:26
>>977
あっ、おいらではなかったです。
979デフォルトの名無しさん:2006/09/28(木) 13:52:03
>>976
マスタリングの本?わかりました
少し調べてみます
980デフォルトの名無しさん:2006/09/28(木) 13:52:21
>>977
MarcoCantu著のやつだ。
翻訳したやつは今も手に入るか知らんが
これが全て理解できる事には中級者の中ぐらいにはなれる。
981デフォルトの名無しさん:2006/09/28(木) 13:58:19
>ここで聞く前に付属ドキュメントを精読する癖をつけよう。

>これが全て理解できる事には中級者の中ぐらいにはなれる。

こういうレスがつくようになると、こういうスレの存在意味がなくならね?
俺なんて使いはじめの頃はドキュメント読んでもチンプンカンプンだったさ。

ひとつの区切り目はオブジェクト指向がおぼろにでも見える頃かなぁ…
982デフォルトの名無しさん:2006/09/28(木) 14:01:42
>>981
安心しろ。
そう思ってるだけで、質問は全然してもいいから。
分かる範囲で、できるだけ答えてやるよ。

まあ、俺も最初のころは、メーリングリストの過去ログだけで、がんばったものさ。
ガムバレ!!
983デフォルトの名無しさん:2006/09/28(木) 14:01:53
>>981
それが理解できるようにこのスレにくるんじゃないか。
どの本がおすすめと聞かれれば、どの本がおすすめか返す。

至極真っ当なレスだとおもうが。
984デフォルトの名無しさん:2006/09/28(木) 14:03:11
よく見たら、テンプレに過去ログないんだな。

Delphi-ML過去ログ検索 (namazu バージョン)
http://leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/nsearch.cgi

ここは絶対検索してみるべし!
ネットで検索しても出てこない情報がでてくるぞ。
# 逆に言うと、過去ログ、googleに拾われないんだよなあ。
# なんとかならない?
985デフォルトの名無しさん:2006/09/28(木) 15:47:19
コード補完を作っています。
ListBoxの単純リストを選べるところまでできました。
RichEditの文字を書いてる途中にctrl+spaceでListBoxが開き、
そのRichEditの書きかけの文字列をListBoxに反映させたいのですが、
RichEditの書きかけの文字列を取得する方法を教えてください。
986デフォルトの名無しさん:2006/09/28(木) 16:35:48
Formを表示した後、一回だけ実行するには、どうしたらよいでしょうか?
OnCreateや、OnShowだと、表示する前だし・・・

↓こういう風にやるしかないですか?
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=071062
もっとスマートな方法はないでしょうか?
987デフォルトの名無しさん:2006/09/28(木) 16:57:48
onActivateイベントに、

procedure Form1Activate(Sender:TObject);
begin
form1.OnActivate:=nil;

・・・処理・・・

end;

これで1回限り。
988デフォルトの名無しさん:2006/09/28(木) 17:06:45
俺はCM_SHOWINGCHANGEDメッセージのトラップでやってるなあ。
フォームのクリエイト時にフラグを立てて、トラップ時にフラグをOFFにする感じで。
989デフォルトの名無しさん:2006/09/28(木) 19:06:18
exe起動時にメインフォーム以外のフォームも一緒に表示させたいのですがどうすればいいのか教えて下さい
メインフォームのOnActivateでshowさせようと思ったのですが例外で表示する事ができませんでした
990デフォルトの名無しさん:2006/09/28(木) 19:11:09
>>989
OnShowでShowしてみ
991デフォルトの名無しさん:2006/09/28(木) 20:54:42
>>989 メインフォーム以外のフォームのVisible:= true
992989:2006/09/28(木) 21:40:12
なんだかよくわからないけど両フォームのvisibleいじったりしてたらOnActivateから呼べるようになりました
お騒がせしました
993デフォルトの名無しさん:2006/09/29(金) 01:36:23
Button1をOnClickすると、Exe.exeを実行して、パラメータに「"ComboBox1.Text" "ComboBox2.Text" "ComboBox3.Text"」実行する、といったようにするにはどうすればいいでしょう?
994デフォルトの名無しさん:2006/09/29(金) 01:39:22
shellexecuteでパラメータを渡すには?
http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200309/03090028.txt
995デフォルトの名無しさん:2006/09/29(金) 02:25:01
起動の方法は↓が参考になったんですが、ComboBox内のTextをパラメータの文字列に含めるにはどうしたらいいんでしょうか…
ttp://www.eva.hi-ho.ne.jp/taketani/delphi/system.shtml#0001
996デフォルトの名無しさん:2006/09/29(金) 04:51:42
>>995
CreateProcessなら994のリンク先に書いてあるとおりにexeのパスの後ろにずらずら書けばいいんじゃね?
ShellExecuteなら
ShellExecute(Handle,'open',PChar(exeパス),PChar(オプション),PChar(作業フォルダ),表示形式);
って感じで、オプションの部分にずらずら書けばいいんじゃね?
997デフォルトの名無しさん:2006/09/29(金) 05:59:24
一番肝心なのはパラメータにComboBox1の内容を含めることでして…
998デフォルトの名無しさん:2006/09/29(金) 07:44:31
PChar(Format('%s %s %s', [ComboBox1.Text, ComboBox2.Text, ComboBox3.Text]))
999デフォルトの名無しさん:2006/09/29(金) 08:08:02
ume
1000デフォルトの名無しさん:2006/09/29(金) 08:09:10
ume
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。