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

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

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001774: 3   挿入2005/06/17(金) 20:34:51
このスレッドはBorland(ボーランド)のDelphi(デルファイ)について、
他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。

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

<雑談・討論などはこちらへ>
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その23
http://pc8.2ch.net/test/read.cgi/tech/1116997081/

<その他>
Borland Home Page
http://www.borland.co.jp/
DelWiki (無料版Delphiの入手方法など)
http://onigiri.s3.xrea.com:8080/delphi/
0809デフォルトの名無しさん2005/07/05(火) 10:52:52
教養無いってのは、部位ビーでいいじゃーん、とか、VSにしる!ドトネトはイラン!、みたいなの。
0810デフォルトの名無しさん2005/07/05(火) 10:54:14
>>808 と鏡に映った自分に話し掛けてるわけですか? と質問スレなんで質問してみる
0811デフォルトの名無しさん2005/07/05(火) 11:01:14
このスレ読むとDelphiユーザの教養がいかに豊かであるか身にしみるわな。(藁
0812デフォルトの名無しさん2005/07/05(火) 11:14:13
プログラマーは所詮電脳土木作業員。
いろいろな言語を覚えるよりも別の仕事を探すほうが賢いであろう。
0813デフォルトの名無しさん2005/07/05(火) 11:18:15
そんなくだらないプログラマはどうだっていいわけだが
0814デフォルトの名無しさん2005/07/05(火) 11:22:16
ああでも電脳土木作業員が減るとフリーウェアも減ってしまって
俺様が困るから、やっぱ浮気せずにプログラマ続けて。
0815デフォルトの名無しさん2005/07/05(火) 11:35:05
と土木作業員が申しております
0816デフォルトの名無しさん2005/07/05(火) 12:23:05
副業にしたら?

ソフトは すばらいしい
自動販売機

さくさく ほくほく あ〜ん し・あ・わ・せ
0817デフォルトの名無しさん2005/07/05(火) 15:34:04
Delphiだと自動販売機のコード書けないよ
0818デフォルトの名無しさん2005/07/05(火) 15:42:39
>>817
0819デフォルトの名無しさん2005/07/05(火) 17:58:07
エクセル出力ってどうやるんでしょ?ヘルプも無くてよく分かりません。
なんとなくTExcelApplicationを使うのかな〜って思ってる程度です。
よろしければご教授ください。ちなみに当方Delphi6です。
0820デフォルトの名無しさん2005/07/05(火) 18:38:19
>>819
http://66.102.7.104/search?q=cache:UyPm28Re_m8J:forum.nifty.com/fdelphi/samples/01096.html++TExcelApplication&hl=ja&lr=lang_ja
08218192005/07/05(火) 18:51:20
>>820
ぬおお〜ありがと。
こっから自分なりに解読してみるよ。
次からは自分の力見つけれるようにします。お手数かけました。
0822デフォルトの名無しさん2005/07/05(火) 21:23:35
D5のTNMFTPのListコマンドを繰り返し実行すると
たまにListコマンドが帰って来ずにフリーズすることがあるんだけど、
回避策なんかありませんかねぇ???
0823デフォルトの名無しさん2005/07/06(水) 10:17:37
さすがに TNM*** コンポを使ってる人はもういなさそう
Indy はただだし、D5 でも使えるし
0824デフォルトの名無しさん2005/07/06(水) 17:36:23
「'」を文字列として変数に代入するにはどうしたらいいですか?
0825デフォルトの名無しさん2005/07/06(水) 17:42:08
#39
0826デフォルトの名無しさん2005/07/06(水) 17:43:14
''でも良い
0827デフォルトの名無しさん2005/07/06(水) 17:53:47
''''
0828デフォルトの名無しさん2005/07/06(水) 18:13:22
>825-827
ありがとうございます
0829デフォルトの名無しさん2005/07/07(木) 09:04:42
Delphi での一般的なソースの分割方法ってどうすれば良いのか分かりません orz
コンポとして書いて分離すれば良いのでしょうか?
0830デフォルトの名無しさん2005/07/07(木) 09:16:09
>>829
新規作成->ユニット

interface部のものが他のunitからも使えるものになる。
コツはinterfaceは必要最小限にとどめ
できるだけimplementationに隠蔽することかな。
0831デフォルトの名無しさん2005/07/07(木) 23:14:27
フォーム
データモジュール
ユニット
パッケージ
DLL
0832デフォルトの名無しさん2005/07/07(木) 23:15:11
フレーム
コンポーネント
0833デフォルトの名無しさん2005/07/07(木) 23:52:53
DLL だけ横文字なのが違和感ある
0834デフォルトの名無しさん2005/07/08(金) 00:00:09
ダイナミックリンクロンリー
0835デフォルトの名無しさん2005/07/08(金) 08:41:07
あとは設計論かな。分割の仕方って奥が深いよ。
目指せ。アーキテクト
0836デフォルトの名無しさん2005/07/08(金) 14:36:21
クライアント領域に頻繁にイメージを描きこむような処理をしてるんですが
フォームを透過にすると、それだけでCPU使用率が跳ね上がります。
TransparentColor:=TrueをやめてAPI関数を使う方法にしても
負荷は変わらないものでしょうか?
0837デフォルトの名無しさん2005/07/08(金) 14:49:53
VCL は API を使ってない、とか思ってるみたいだな・・・・
0838デフォルトの名無しさん2005/07/08(金) 15:05:53
Longhornにすればむちゃくちゃ速くなるよ
0839デフォルトの名無しさん2005/07/08(金) 15:09:21
まだ出てないくせに
0840デフォルトの名無しさん2005/07/08(金) 16:26:23
日本でわな
0841デフォルトの名無しさん2005/07/08(金) 23:38:02
TScrollBoxの中にTPaintBoxを置いて、TPaintBoxのOnDrawイベントで
TPaintBoxのCanvas.ClipRectを描画するようにしているんだけど、ちらつく。
ちらつかないようにする方法はないものだろうか?
0842デフォルトの名無しさん2005/07/09(土) 01:15:20
…OnDraw?
0843デフォルトの名無しさん2005/07/09(土) 01:54:14
目をつぶる。
08448412005/07/09(土) 06:54:39
OnDrawじゃなくてOnPaintだったな。
DoubleBufferedを有効にしたら少しましになったぞ。
0845デフォルトの名無しさん2005/07/09(土) 07:19:54
ちらつくのは、消してから描いたりしてるから、

だから、「自分が全部を塗るから消さなくていいよ」という指示をしておいて、
描画する時に塗り直さないような方法で描画すればいい。
たとえば重なる描画がどうしてもあるなら、先にビットマップに裏で描いておいて
からビットマップを描画するとかね
 でもそれをやってくれるのがDoubleBfferdだけど
0846デフォルトの名無しさん2005/07/09(土) 11:12:43
>>837
VCLよりAPI使ったほうがパフォーマンスが改善されるのはよくあること。
0847デフォルトの名無しさん2005/07/09(土) 12:25:29
WindowsAPIのSetFocusを使いたいのですがどうしたらいいですか?
0848デフォルトの名無しさん2005/07/09(土) 12:32:10
> VCLよりAPI使ったほうがパフォーマンスが改善されるのはよくあること。

例えば?
よくあるなら10例ぐらいあげてごらん
0849デフォルトの名無しさん2005/07/09(土) 12:54:19
>>847
Windows.SetFocus
0850デフォルトの名無しさん2005/07/09(土) 13:09:48
> VCLよりAPI使ったほうがパフォーマンスが改善されるのはよくあること。

そうかなぁ?
直接 API をつかわなくてはできないことは多いけど、パフォーマンス改善のために
使う場面って思い浮かばないなぁ
0851デフォルトの名無しさん2005/07/09(土) 13:12:06
うん。 VCLの実装はよく出来てるよね。
0852デフォルトの名無しさん2005/07/09(土) 13:54:23
そうそう。ここは >>846 の回答を期待して待とう。
0853デフォルトの名無しさん2005/07/09(土) 14:24:17
ウィンドウをTopMostにする時VCLだとちらつくし遅いな
0854デフォルトの名無しさん2005/07/09(土) 14:29:16
それは機能が違うでしょ。API では他フォームの管理が出来ないし。
0855デフォルトの名無しさん2005/07/09(土) 14:31:30
Form自体重すぎだし
0856デフォルトの名無しさん2005/07/09(土) 14:32:18
exeも起動は遅いしでかいし
0857デフォルトの名無しさん2005/07/09(土) 14:40:59
>>856
起動遅いか?
0858デフォルトの名無しさん2005/07/09(土) 15:02:12
>>856
すげえ。ダイナミックリンクしといてファイルサイズが小さいとかいってるよ。この人。
0859デフォルトの名無しさん2005/07/09(土) 15:20:01
MFC使った方が倍はデカくなるよ。 MFCxxDLLをみんな使いたがるのはソコ。
0860デフォルトの名無しさん2005/07/09(土) 15:26:24
>>855
何と比べるかだけど、VBやMFCと比べたらVCLは軽いよ
0861デフォルトの名無しさん2005/07/09(土) 17:25:14
>>849
なるほど・・・
ありがとうございました
0862デフォルトの名無しさん2005/07/09(土) 17:43:47
TClientSocketや、TServerSocketのOnReadイベントに、 Socket.ReceiveLength を使うと、受信したバッファのサイズが分かりますよね。
OnWriteイベントで、ソケットが送信したバッファのサイズを調べることって出来ますか?
0863デフォルトの名無しさん2005/07/09(土) 18:02:13
PaintDesktop(Image1.Canvas.Handle);
とやっても何も塗り潰されないのですが、何故でしょうか?
0864デフォルトの名無しさん2005/07/09(土) 19:22:39
へえ、そんなAPIがあったのか。

BOOL WINAPI PaintDesktop(
HDC hdc // デバイスコンテキストのハンドル
);

Image1はTGraphicControl継承だからかと思ったけど
PaintDesktop( PaintBox1.Canvas.Handle) なら描画出来るね。

何でだろ?
08658462005/07/09(土) 19:55:21
836は描画に関して言ってるから、とりあえずその例を挙げるなら。

for i:=1 to 1000000 do
begin
Form1.Canvas.TextOut(0,0,'あいうえお');
end;
Beep;

と

for i:=1 to 1000000 do
begin
TextOut(Form1.Canvas.Handle,0,0,'あいうえお',10);
end;
Beep;

で、実行速度が1.5倍ぐらい違う。
0866デフォルトの名無しさん2005/07/09(土) 20:22:39
じゃ、実際100万行もTextOutすることはないから使うことはないね
0867デフォルトの名無しさん2005/07/09(土) 20:24:48
TextOut のパフォーマンス改善のためなるべく API を使いましょう、ってか?

アホ
08688462005/07/09(土) 20:37:01
>>866
馬鹿か。実際にこんなコードがあるわけねーだろ。
内部的にどれぐらいのパフォーマンスの差が出ているか
差が顕在化するようにコードで示しただけだろ。
そのぐらいなぜわからない?頭が悪い?

おれがいつAPIしか使うななんて書いた?
APIよりVCLの生産性が高いのは当然なんだから。
ただ、パフォーマンス的にAPIを使ったほうがいい場合があるってだけだ。



0869デフォルトの名無しさん2005/07/09(土) 20:50:41
>>867
論点ずらしてるね。

>>868
釣られてるぅぅっΣヽ(`ロ´;)ノ
0870デフォルトの名無しさん2005/07/09(土) 21:03:19
> パフォーマンス的にAPIを使ったほうがいい場合があるってだけだ。

だからどんな場合?
ラッパよりナマのAPIが速いという当たり前の >>865 のようなアホな例はなしで。
0871デフォルトの名無しさん2005/07/09(土) 21:08:41
何言ってるのこの人は?
08728462005/07/09(土) 21:09:04
やっぱりアホと話しててもしょうがねーな。
ラッパだから遅くなるのと、VCLのTextOut()が遅くなるのは意味が違うだろ。
0873デフォルトの名無しさん2005/07/09(土) 21:12:52
>>870
あたり前とわかってるなら、そもそも>>846に例を求める理由もないと思うけど。
0874デフォルトの名無しさん2005/07/09(土) 21:16:13
>>870
VCLのソースは読んだ?
0875デフォルトの名無しさん2005/07/09(土) 21:21:42
>870
VCLはいろいろ内部的にチェックや変換を行ってるから、速度が落ちることもあるよ。
あらかじめ扱いたいデータがわかってるなら、APIをたたいた方が速かったり。
0876デフォルトの名無しさん2005/07/09(土) 21:24:35
TFileStreamって速くなったの?
0877デフォルトの名無しさん2005/07/09(土) 22:18:33
>>856
VBと間違えてない?
0878デフォルトの名無しさん2005/07/09(土) 22:23:34
空のフォーム一枚でDelphiは600kbに対してVB.NETは4kb
ちょっと無駄が多すぎるね。
0879デフォルトの名無しさん2005/07/09(土) 22:26:20
俺の場合は409kbなんだが
0880デフォルトの名無しさん2005/07/09(土) 22:27:27
空プロジェクトで8kb。 ところでVB.NETってランタイム無しなの?
0881デフォルトの名無しさん2005/07/09(土) 22:32:16
>>880
.net freamwork
0882デフォルトの名無しさん2005/07/09(土) 23:18:23
AAの縦横の長さを計るツールを作ろうと思ったんですが、
Memoに貼り付けた文字列の長さを、
ピクセル単位で調べる方法を教えていただけませんでしょうか?
とりあえず1行分の横幅さえ計ることができれば何とかなりそうなんですけど…
0883デフォルトの名無しさん2005/07/09(土) 23:20:52
Canvas.TextWidth
0884いやあ名無しってほんとにいいもんですね2005/07/09(土) 23:22:44
>883
どうもありがとうございます。
それでやってみますね。
0885デフォルトの名無しさん2005/07/09(土) 23:39:09
やってみますね、じゃなくてやってみてから結果を報告しろよ。
0886デフォルトの名無しさん2005/07/09(土) 23:42:51
うるせーバカ
0887デフォルトの名無しさん2005/07/10(日) 00:12:16
>>885
邪魔だからどっか池。
0888デフォルトの名無しさん2005/07/10(日) 00:34:06
>>884=886=887
0889デフォルトの名無しさん2005/07/10(日) 00:56:14
>>888
違う。アホだな。
0890デフォルトの名無しさん2005/07/10(日) 01:47:34
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その24
http://pc8.2ch.net/test/read.cgi/tech/1120195090/

続きはこっちで
0891デフォルトの名無しさん2005/07/10(日) 01:52:49
http://www.aducom.com/sqlite/
これってD6Personalじゃ使えないですか?
0892デフォルトの名無しさん2005/07/10(日) 02:11:19
使えません。
08938912005/07/10(日) 02:21:27
よくわかりました。
ありがとうございました。
0894デフォルトの名無しさん2005/07/10(日) 02:50:09
Delphi6に対応というだけでPerはいいとも悪いとも書いてなくないか
0895デフォルトの名無しさん2005/07/10(日) 03:04:02
they require that you have the DB VCL.
0896デフォルトの名無しさん2005/07/10(日) 10:27:47
結局パフォーマンス改善のためのAPI具体例は TextOut のアホな例しかないのか

0897デフォルトの名無しさん2005/07/10(日) 11:23:19
おれも Win32 API はよく使うけど、パフォーマンスの改善のためにつかったことは
ないような気がする。よく使うとかいう人がいるけど、どんな場合なのかな
具体例希望
0898デフォルトの名無しさん2005/07/10(日) 12:23:49
>>897
単純にDelphi言語の既存の関数よりもAPI関数が優れてる場合じゃないのか?
0899デフォルトの名無しさん2005/07/10(日) 12:27:20
ライブラリのソースコード読めばおのずとわかることだと思うが・・・
0900デフォルトの名無しさん2005/07/10(日) 12:33:31
>>896
865の例で1.5倍も差が出てるのはなぜか考えたか?
0901デフォルトの名無しさん2005/07/10(日) 12:58:59
>>900
875あたりを読んでも理解できてないみたいだから、
これ以上何を言っても無駄。放置。
09029002005/07/10(日) 13:04:49
>>848 :デフォルトの名無しさん :2005/07/09(土) 12:32:10
>>> VCLよりAPI使ったほうがパフォーマンスが改善されるのはよくあること。
>>例えば?
>>よくあるなら10例ぐらいあげてごらん

こういう小学生みたいなことを言うやつだし。
0903デフォルトの名無しさん2005/07/10(日) 13:08:43
Canvas.DrawとBitBltならどっち使ったほうが良いかな
用途は画面更新
0904デフォルトの名無しさん2005/07/10(日) 13:16:15
>>866
>>じゃ、実際100万行もTextOutすることはないから使うことはないね

百万回も同じテキストを書くことはないだろうけど、
頻繁に描画するプログラムはあるでしょ。
http://www.geocities.jp/gimproject/scripts/matrix.html
0905デフォルトの名無しさん2005/07/10(日) 13:20:25
一般論ばかりで具体例ゼロ。Del厨の限界かな
0906デフォルトの名無しさん2005/07/10(日) 13:22:06
>>905
もうお前いいよw
0907デフォルトの名無しさん2005/07/10(日) 13:24:35
あんまり煽るとDelphi系クソスレが上げ荒らしくらうからその程度にしとけ
0908デフォルトの名無しさん2005/07/10(日) 14:02:24
Del厨って絶滅危惧種なんだからやさしくしてあげなきゃダメだよ
レス数が900を超えています。1000を超えると表示できなくなるよ。