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

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2005/06/16(木) 09:27:08
>>949
日本語限定というのが、おかしいですね。
そのGoogle検索でも、すでに大量にヒットしているじゃないですか。
英語が分からなくても、コードをみれば「適当に」分かるのでは?

付属ヘルプもリンク切れしていないようですし。
初心者すれで聞けば、すぐ回答がつく事ですし
何を求めているのか良く分かりません。

完璧を求めるなら、ソース付のPro版をお勧めします。
953デフォルトの名無しさん:2005/06/16(木) 09:39:53
> 他の言語では、こんな酷い状態に陥りまくったことはないんだけど
何と比較しているのか良く分からんが
他の言語は金を出してもソースがついて来ないからな。

つか、適当に使って、上手く行かないって逆切れしている>>949って・・・
954デフォルトの名無しさん:2005/06/16(木) 09:40:45
>>949
ヘルプのリンク切れであれこれ悩んで長文書く間に
お気軽にWideFormatってなんだと聞いてくれればいいのに。



# 気持ちはわかるがこのスレでそういう物言いをすると
# おにいさんたちが嬉々として寄ってくるので正直もう少し言葉遣いを考えてくれ。
# このスレの平和と安定の為に・・・
955デフォルトの名無しさん:2005/06/16(木) 09:51:18
いまから、Delphi入門は正直おすすめしない。
956デフォルトの名無しさん:2005/06/16(木) 09:58:13
そうそうWIN32対応のLonghornがリリースされるもんね。
957デフォルトの名無しさん:2005/06/16(木) 10:07:56
最近プログラマにも、安定した公務員が一番、みたいなやつが増えてきたな。
958デフォルトの名無しさん:2005/06/16(木) 10:09:50
そろそろこっちにおいで、ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その23
http://pc8.2ch.net/test/read.cgi/tech/1116997081/
959デフォルトの名無しさん:2005/06/16(木) 11:27:32
タダにしても流行しない、それがDelphiクオリティ
960デフォルトの名無しさん:2005/06/16(木) 14:17:07
ファイルの更新日時を秒単位まで正確に取得したいのですが、奇数秒が偶数に切り上げられてしまいます。
Delphiでファイルの更新時刻を正確に取得するにはどうしたらいいんでしょうか。
調べてみたところ、ファイルシステムがFAT32だと、奇数秒が切り上げられるというファイルシステム上の
制限があるらしいのですが、私の使用している端末はNTFSです。

テストに使用した関数は、
・FileAge→FileDateToDateTime
・FileGetDate→FileDateToDateTime
・(FindFirst→)SearchRec.Time→FileDateToDateTime
です。すべて同じように奇数秒が偶数に切り上げられます。

OSはWindowsXP SP1
DelphiはDelphi7 Enterprise
です。
よろしくお願いします。
961デフォルトの名無しさん:2005/06/16(木) 14:54:52
GetFileTime API
962デフォルトの名無しさん:2005/06/16(木) 15:41:19
内部でDOS形式に変換してるから必ず2秒きざみになる
NTFS専用ならばSearchRec.FindData.ftLastWriteTimeを
FileTimeToSystemTimeで変換しる
>>961使う場合のやり方は>>961に聞け
963960:2005/06/16(木) 15:48:37
>>961
私ももうちょっと調べてみましたが、Delphiから呼ばれるAPIは
・FileAge→FindFirstFileA
・FileGetDate→GetFileTime
・(FindFirst→)SearchRec.Time→FindFirstFileA
となっていました。
GetFileTime APIは、FileGetDateから呼ばれているようですね。
FATの最終更新時刻の分解能は 2 秒で、NTFSでは1秒(?)なので、
FileGetDateで正しく取得できるはずなんですけどねえ...
964デフォルトの名無しさん:2005/06/16(木) 15:53:24
>>963
FileTimeToDosDateTimeを見落としてる
965デフォルトの名無しさん:2005/06/16(木) 15:54:33
>>963
ごめん、>>962はFileTimeToLocalFileTimeしてからFileTimeToSystemTimeだ
966デフォルトの名無しさん:2005/06/16(木) 16:08:30
皆さんありがとうございます。なんとかできました。
SearchRec.FindData.ftLastWriteTime→FileTimeToLocalFileTime→FileTimeToSystemTime→SystemTimeToDateTime
とすればうまく取得できますね。
こんな感じになりました。

function GetFileUpdTime(sFileName: String): TDateTime;
var
SearchRec: TsearchRec;
LocalTime: TFileTime;
SysTime: SYSTEMTIME;
begin
FindFirst(sFileName, faAnyFile, SearchRec);
try
FileTimeToLocalFileTime(SearchRec.FindData.ftLastWriteTime, LocalTime);
FileTimeToSystemTime(LocalTime, SysTime);
result := SystemTimeToDateTime(SysTime);
finally
FindClose(SearchRec);
end;
end;
967960:2005/06/16(木) 16:31:28
966=960です。

FileAgeやFileGetDateでは、内部でFileTimeToLocalFileTime→FileTimeToDosDateTime
と変換しているため、秒が切り上げられてしまうんですね。
というわけで、GetFileTime(API)→FileTimeToLocalFileTime→FileTimeToSystemTime→SystemTimeToDateTime
でもうまくいきました。
ところでなぜ、DelphiではFileTimeToSystemTimeを使わずに、FileTimeToDosDateTimeを使っているのでしょうか?
FileTimeToSystemTimeがWin95/98に対応している以上、FATでも問題あるじゃないですよね?
968デフォルトの名無しさん:2005/06/16(木) 16:49:06
>>967
WindowsAPIのヘルプにFATは2秒単位だと書いてあるが?
互換性という意味ではDOS形式にするのが正しい罠
ただ、プラットフォームで切り分けれとも思うけどさ
969デフォルトの名無しさん:2005/06/16(木) 17:01:54
D1からの名残かもね。
970960:2005/06/16(木) 17:35:54
>>968
互換性ですか。分解能が高くなる分には問題ないような気はしますが、もし互換性のためであれば、
やっぱりNTFSとFATの両方に対応した新しい関数も用意して欲しいものですね。
971ななしへたぐらま ◆XcB18Bks.Y :2005/06/16(木) 17:43:51
>>892
フォームを閉じただけではフォームは廃棄されず,そのコンポも廃棄されません.
閉じるときに廃棄したい場合はOnCloseイベントでAction に caFree を代入します.

>>929
もう5年くらい前ですが東京・新宿の紀伊國屋書店にDelphi関連書籍がほとんど無くて参ったことがありました.
近場の書店の方が揃っていたという.
(※近年,某魔法メガネ君の本で有名になった八王子駅前の某書店)

>>948
Delphiのヘルプは駄目なのは事実ですけどね.
J Builderの成功例をまねて普及のために無料版をばらまくなら
初心者がしっかり学べるドキュメントを残さなければいけなかったのですが….
972デフォルトの名無しさん:2005/06/16(木) 17:44:11
>解能が高くなる分には問題ないような
偶数しか入ってこないはず、と思い込んでるソフトもあるんじゃないかな?
973デフォルトの名無しさん:2005/06/16(木) 19:33:12
> J Builderの成功例をまねて普及のために無料版をばらまくなら
> 初心者がしっかり学べるドキュメントを残さなければいけなかったのですが….

personal では作れないチュートリアルとかがあって、まだ修正されてないし、
もうそのときからドキュメントに関してはアキラメ。よって、ユーザ拡大もアキラメ。
先細りは自業自得だわな
974デフォルトの名無しさん:2005/06/16(木) 19:57:53
パーソナルの登録で
「登録の最終確認のメールを xxxxx@xxxxxx に送信しました」
って出てから2日待ってもメールが来ないのは俺だけ?
もちろんメアドが間違ってるなんてオチじゃないよ。
975デフォルトの名無しさん:2005/06/16(木) 19:58:10
>>973
もう暗くなったよ。巣にお帰り。
976デフォルトの名無しさん:2005/06/16(木) 20:29:26
一定時間コンピュータがアイドル状態になったら
イベントが起きるようなコンポーネントかAPIってあります?
スクリーンセーバーみたいなことをやりたいんですが、
TApplication.OnIdle はメインスレッドが暇になったときにガンガン呼ばれるようで、
目的に合致しません。

Delphi 2005使ってます。
977デフォルトの名無しさん:2005/06/16(木) 20:51:08
>>976
OnIdle イベント
アプリケーションがアイドル状態になったときに一度だけ呼び出され,
Done プロパティが False に設定されない限り再び呼び出されることはありません。
Delphi6のヘルプより。
978976:2005/06/16(木) 21:04:27
>>977
Done := True; すればいいのではないか、ということでしょうか?

アイドル状態の説明が不十分だったのでちゃんとしておきます。
私がやりたいのは、一定時間マウスやキーボードをいじらずに
放置しておいた場合、イベントを発生させるということです。

TApplication.OnIdleは、処理すべきウィンドウメッセージがなくなったりすると
Done := True としてもミリ秒単位で発生するので向いていないようです。

よろしくお願いします。
979デフォルトの名無しさん:2005/06/16(木) 21:11:30
GetLastInputInfo
980976:2005/06/16(木) 21:24:19
>>979
ありがとうございます。
そのキーワードで検索したらDelphi-MLが出てきました。
お恥ずかしい限りです。
http://leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/browse.cgi?index=079021
981デフォルトの名無しさん:2005/06/17(金) 04:34:35
Pasclソースの整形ツールってありますか?
982デフォルトの名無しさん:2005/06/17(金) 08:52:42
983デフォルトの名無しさん:2005/06/17(金) 08:55:22
984デフォルトの名無しさん:2005/06/17(金) 10:30:40
八王子駅前って、くまざわ書店?
985デフォルトの名無しさん:2005/06/17(金) 10:38:07
986ななしへたぐらま ◆XcB18Bks.Y :2005/06/17(金) 16:52:47
レスしたいところですが,もうすぐ1000なのでテンプレ作ってみたです.

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

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

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

<その他>
Borland Home Page
http://www.borland.co.jp/
DelWiki (無料版Delphiの入手方法など)
http://onigiri.s3.xrea.com:8080/delphi/
----------
(続く)
987ななしへたぐらま ◆XcB18Bks.Y :2005/06/17(金) 16:56:14
988ななしへたぐらま ◆XcB18Bks.Y :2005/06/17(金) 16:56:37
989ななしへたぐらま ◆XcB18Bks.Y :2005/06/17(金) 18:43:13
コメントが抜けておりました.問題点等ありましたらご指摘下さい.
特になければこのテンプレでスレ立てにトライしてみます.


以下,1レス消費してしまったので.
>>975 >>973の指摘は正しいと思います.ヘルプのリンク切れってぶっちゃけあ(ry
>>984 そうです.ここ数ヶ月は理工書売り場に行っていませんが,多分今でもおいてあると思います.
990デフォルトの名無しさん:2005/06/17(金) 18:49:09
雑談・喧嘩はフサフサスレへっていれておいたら?
991デフォルトの名無しさん:2005/06/17(金) 19:07:50
喧嘩って書くとかどが立つから、「雑談・討論」はフサスレへかな。
992デフォルトの名無しさん:2005/06/17(金) 19:25:26
random(10)
とすると
かなり数値が偏るんですが
対処法は無いでしょうか?
993デフォルトの名無しさん:2005/06/17(金) 19:27:46
random初期化関数無かったっけ?
994デフォルトの名無しさん:2005/06/17(金) 19:31:33
ランドミゼ
995デフォルトの名無しさん:2005/06/17(金) 19:34:29
つうか初期化の話じゃないし
ttp://tobysoft.net/wiki/index.php?Delphi%2FMersenne%20Twister
996ななしへたぐらま ◆XcB18Bks.Y :2005/06/17(金) 20:29:31
>>990-991を考慮してスレ立てにトライします.
997ななしへたぐらま ◆XcB18Bks.Y :2005/06/17(金) 20:38:10
建てました.

くだすれDelphi(超初心者用)その25
http://pc8.2ch.net/test/read.cgi/tech/1119008091/

以後の質問は上記スレでおねがいします.

>>992
起動時にRandomize手続きを実行していますか?
998デフォルトの名無しさん:2005/06/18(土) 00:46:11
>>997
乙です。
999デフォルトの名無しさん:2005/06/18(土) 00:46:42
999
1000デフォルトの名無しさん:2005/06/18(土) 00:47:14
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。