くだすれDelphi(超初 ..
486:デフォルトの名無しさん
08/12/17 20:09:42
>>485
(最後の行)
>コンパイラはwith文を使わないときと同じようにTForm1のTagだと解釈します。
コンパイラはwith文を使わないときと同じようにTForm1のCaptionだと解釈します。
487:デフォルトの名無しさん
08/12/17 20:12:27
with を使うときは、何がどれに属しているかちゃんと知っていないとあぶない。
488:デフォルトの名無しさん
08/12/17 20:14:11
Delphi7で思考が止まってるけど、withって、コード補完が効かなくない?
なので、withは使わない様にしてる。
設定が足りないだけ?
489:デフォルトの名無しさん
08/12/17 21:05:33
そもそもDelphiのヘルプにObject PascalのBNFの記述がないのがおかしいんだけどな。
CodeGear腐ってる。
490:デフォルトの名無しさん
08/12/17 22:03:18
Synchronizeって引数付き関数呼べないよね?
引数付きの関数を呼ぶ場合どうすれば・・・
491:デフォルトの名無しさん
08/12/17 22:05:41
あ、メインスレッドでクリティカルセクション作っておいて、対象関数をEnterとLeaveで挟めば同じことかな?
492:デフォルトの名無しさん
08/12/17 22:18:11
>>491
気をつけないといけないのは、
メインスレッド側でも、サブスレッドで触る変数とかはクリティカルセクションで
ロック(?)しとかないといけない。
読み込むだけ、ならなくてもよい場合(1つの変数の値をよむだけとか)もある。
書き込むものは、しっかりとロックしとかないといけない
こういうのやるときはいきなり本番環境でやらずに、
簡単なスレッドのテストプログラムを作ってテストしてみるのがよいよ。
ポイントは(テスト駆動開発じゃないけど)必ず失敗するように組んでから、
成功するように組むとテストしやすい。
493:デフォルトの名無しさん
08/12/17 22:23:18
なるほど。
ってか変数読むだけならクリティカルセクション要らないんですか?
読んでる最中に書き換えが起こると可能性があるとしても?(書き換え側は保護してるとして)
494:デフォルトの名無しさん
08/12/17 22:36:05
サブスレッド側で値を書き込み
Synchronize中でメインスレッドから読みだすなら問題なし。
VCLが絡まないならCriticalSectionでももちろんいい。
>ってか変数読むだけならクリティカルセクション要らないんですか?
>読んでる最中に書き換えが起こると可能性があるとしても?(書き換え側は保護してるとして)
実際に遭遇したことはないけどマルチコア環境ではおかしくなるらしい。
495:デフォルトの名無しさん
08/12/17 22:54:16
念のため両方保護しておきます
>>492さん>>494さんありがとうございました
496:デフォルトの名無しさん
08/12/17 23:27:07
もう一つ質問すみません
クリティカルセクションはSyncronizeみたいにメインスレッドで実行するわけじゃないので、共用変数ごとに複数作っても問題ないですよね
もちろん保護内では共用変数は一つしか使わないという条件でです
497:デフォルトの名無しさん
08/12/18 00:16:02
>>496
もちろん可能だけど、(上で出た with のように)ちゃんと設計しないと
恐い恐いデッドロックに遭遇するので要注意です。
498:デフォルトの名無しさん
08/12/18 14:00:11
>>489
昔、breakやcontinueが「手続き」扱いで、びっくりしたことがある。
499:デフォルトの名無しさん
08/12/18 15:51:50
>490
Synchronizeは子スレッドで使用するので子スレッド内のPrivate変数を利用すればok、また参照だけならSynchronize
は必要ないですSynchronizeはあくまでメインスレッドの変数更新時の衝突回避なので
500:デフォルトの名無しさん
08/12/18 16:35:21
>>499
かなり昔のことで忘れたが、Synchronize で引数付き関数が呼べると「便利だなあ〜」などと思ったことがある。
コンパイラが頑張ってくれればできそうなものだと思うけど、間違ってる?
501:デフォルトの名無しさん
08/12/18 17:08:37
スレッドはTThreadをラップしてコンポーネント化してしまうと便利。
OnExecuteイベントハンドラにスレッドのコード書いて
FormのPrivateフィールドの変数を好き勝手に読み書きできて
そこからSynchronizeメソッドを呼ぶとOnSynchronizeイベントが呼び出されるようにして
UseThreadプロパティをFalseにするとサブスレッドを使わずメインスレッドからOnExecuteが実行されるように
小細工してロジックのバグを事前に潰しておくとデバッグがかなり楽になる。
502:デフォルトの名無しさん
08/12/18 19:19:57
なるほどね、コンポーネントにするところまでは考えなかった。
Threadを使うのに便利そうなUnitは作ったことあるけど、なんせ、マルチスレッド
にするプログラムはそう滅多になかったんで、(そのUnitは)どっかでカビが生え
たまま消滅してるはず。(ずーっと見てもいない)(^_^;
そういえばこの2年間シングルスレッドぱっかだなオレ。
503:ななしへたぐらま ◆XcB18Bks.Y
08/12/18 19:35:08
>>486
その通りでございます orz
ありがとう!
504:458
08/12/18 23:44:56
>>485
ありがとうございました
単なる私の不注意だったようですねお恥ずかしい
>>488
with内の[ItemIndex]は昔から効きませんね
505:デフォルトの名無しさん
08/12/19 09:28:39
>>501
コンポ化は便利そうだけど、イベントとして書くと貼り付けたFormのpas内に
コード書くことになるから、なんとなく抵抗があるな
スレッドは別処理するためにスレッドにすることが多いし、それだけで
ひとつのpasにまとめたい気分
506:デフォルトの名無しさん
08/12/19 09:33:42
>>501
それはいいかもね。
ちょっとした、TTimerのマルチスレッド版みたいな感覚かな。
MMTimerってのもあったけど、まあ、あれにはSynchronizeがなかったからな
507:デフォルトの名無しさん
08/12/19 09:54:41
>>505
つ TDataModule
508:デフォルトの名無しさん
08/12/19 21:08:05
TRegExprでExpressionに指定した正規表現が正しいか確認する方法はあるでしょうか?
Compileの例外を監視するとかですかね?
509:デフォルトの名無しさん
08/12/21 18:39:58
Del7でTMyForm作ってpublishedなプロパティ、イベントハンドラを追加して
それをフォームデザイナに反映させる方法ってない?
510:デフォルトの名無しさん
08/12/21 19:08:00
>>509
パッケージにするとか
511:デフォルトの名無しさん
08/12/21 21:43:26
>>509
フォームデザイナに反映させる時は、どうしてもIDEに組み込む必要があって
コンポーネントとかの形にしないといけないみたい
動的にはできないんだよな・・・
512:デフォルトの名無しさん
08/12/21 22:58:34
>>510-511
パッケージ化すればできちゃうの?
普通にコンポーネントとして登録すると
新規作成ででてくるのかな。
513:デフォルトの名無しさん
08/12/21 23:23:07
>509
ない。
あきらめろ(冷たいようだけど)。
514:デフォルトの名無しさん
08/12/23 01:06:16
TRegExprでテキストファイルの空行を削除するには、どうすればよいでしょうか?
^$とかではマッチしないし、(\r\n){2,}を\r\nに置き換えようとすると、そのまま\r\nが
表示されます・・・
515:デフォルトの名無しさん
08/12/23 01:27:44
>>514
^¥r¥n$だとどう?
516:514
08/12/23 01:34:30
>>515
即レスありがとうございます。
それでもマッチしません。
置換の方は、#13#10としてもダメです・・・
517:デフォルトの名無しさん
08/12/23 02:07:29
URLリンク(delwiki.info)
518:514
08/12/23 06:19:49
(?m)^\r\nでマッチするようになりました。
お騒がせしました。
519:514
08/12/23 07:16:29
続けてすみません。
置換後の文字列に改行を含むようにするにはどうすればよいか
分かりますでしょうか?
#13#10とすると、#13#10がそのまま表示されます。
520:デフォルトの名無しさん
08/12/23 07:21:53
'hogehoge'#13#10'fugafuga'
521:デフォルトの名無しさん
08/12/23 09:52:55
'hogehoge'+sLineBreak+'fugafuga'
522:デフォルトの名無しさん
08/12/23 10:15:36
sLineBreakって何で存在するの?
#13#10の方が短くていいじゃん
523:デフォルトの名無しさん
08/12/23 10:29:00
・数字の羅列よりも意味がわかりやすい
・将来、改行コードが変更されても対応しやすい
そんなところかと。
524:514
08/12/23 10:37:55
>>520-522
できました。
ありがとうございました。
525:デフォルトの名無しさん
08/12/23 17:12:04
>>523
追加:
・マジックナンバーつかうような奴とは仕事したくない、という奴と仕事ができる
526:デフォルトの名無しさん
08/12/23 17:37:39
じゃあ使わなくても何の問題もないな
527:デフォルトの名無しさん
08/12/23 21:58:23
>424
むちゃくちゃ遅レスでもう見てないと思うけど、こんなん見つけた。
Andy’s Blog and Tools ? Increase the number of MRU items
URLリンク(andy.jgknet.de)
528:デフォルトの名無しさん
08/12/24 12:52:47
HTMLパーサのコンポーネントでオススメのものありますか?
529:デフォルトの名無しさん
08/12/24 17:58:20
delphiに標準でついているコンポーネントのコンポーネントパレットに出ているアイコンの
画像を取りたいのですが、これらの画像はどこかのフォルダにあるんでしょうか?
delphi4です。
530:デフォルトの名無しさん
08/12/26 19:15:08
Print Screenキーでどうでしょ
531:デフォルトの名無しさん
08/12/26 21:43:48
そんなフォルダはないです? www
532:デフォルトの名無しさん
08/12/26 21:45:58
ない
最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4250日前に更新/151 KB
担当:undef