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

このエントリーをはてなブックマークに追加
942デフォルトの名無しさん:2009/06/22(月) 13:49:22
一時的にデータを記憶させておく必要がある時に
例えば、Memoを見えないようにしておいてリストを入れておいて、
後から取り出すとかは邪道?
その都度TStringListをCreate,Freeして使うべき?
943デフォルトの名無しさん:2009/06/22(月) 13:57:12
正統派とは思わないけど、常に一定のCSVデータを格納しておく時、
俺はやってる。
944デフォルトの名無しさん:2009/06/22(月) 17:11:35
どんなデータかにもよるんじゃね
945デフォルトの名無しさん:2009/06/22(月) 18:01:50
Handle 食うから嫌い
946デフォルトの名無しさん:2009/06/22(月) 18:32:10
handle食うから嫌いって何故ですか?
ケチを付けるとかそんなんじゃなくて、私の知識不足
からの質問です。
947デフォルトの名無しさん:2009/06/22(月) 18:37:14
必要なものを必要なだけ確保するというのがプログラミングの基本。
StringListが必要なのにただCreate/Freeが面倒という理由だけで
Memoを配置するなんて論外。

というのが建前。
実際は今時Memoインスタンスひとつ増えただけでWindowsが落ちるわけでもない。
好きにしてくれ。
948デフォルトの名無しさん:2009/06/22(月) 20:09:20
まあウィンドウは見えなくても外部から参照できるからユーザーには笑われるかもしれないけどね
949デフォルトの名無しさん:2009/06/22(月) 20:23:03
気持ち悪いからやだ
StringListもちょっと気持ち悪いけど使っちゃう
950デフォルトの名無しさん:2009/06/22(月) 21:01:11
TStringListの生成ごときでうだうだ言ってる奴は、
TComponentにTStringList持たせただけのコンポーネントでも作ってもらったら?
951デフォルトの名無しさん:2009/06/22(月) 21:10:34
TMemoはWindows管理下にあるので遅いしなぁ。普通にTStringListだろ。
952デフォルトの名無しさん:2009/06/22(月) 21:55:36

with TStringList.Create do
try
  //処理
finally
  Free;
end;
953デフォルトの名無しさん:2009/06/22(月) 22:01:30
長文のテキスト定数を簡単に記述できるヒアドキュメントがないから
TMemo.Linesに書きたくなる気持ちは分からないでもない。
954デフォルトの名無しさん:2009/06/22(月) 22:48:29
TMemo.Lines は TStrings な訳で
TStringList は TStrings の子供だから
TStrings を完全に含んでいる訳だが。
955デフォルトの名無しさん:2009/06/22(月) 23:15:41
>953が言いたかったのは定数として文字列を用意する代わりにForm/Datamoduleに配置した
TMemoにプロパティとして文字列を入れておく、ということだと思う。お手軽デバッグ用以外には
やめてほしい手法だけど。
956デフォルトの名無しさん:2009/06/23(火) 07:48:51
テキストファイルをリソースで組み込めばいいやん
957デフォルトの名無しさん:2009/06/23(火) 08:00:32
TStringList.Create関連の一連の記述を単語登録しとけ。
おれはそうしている。
TMemo貼り付けるより、ずっと楽だ。
958デフォルトの名無しさん:2009/06/23(火) 10:24:18
Delphiアプリのタスクバーアイコンを右クリックしたときのメニューが
他と違うんだけどてっとり早く同じにするコンポかサンプルコードないですか。
959デフォルトの名無しさん:2009/06/23(火) 14:41:47
960デフォルトの名無しさん:2009/06/24(水) 05:05:55
Delphi7Lite はソースコード完全公開ですから、使って安心。
Weaver / Delphi2010 の修正 RTL の取り込みも始まっているので
みんなで使い回しましょう

マルウェアいっているのは円場かのまわしものかね。
961デフォルトの名無しさん:2009/06/24(水) 16:05:32
と犯罪者が仰ってます
962デフォルトの名無しさん:2009/06/25(木) 10:17:32
正規ユーザーなら、RTL/VCL のソースを修正することに何の問題も無いのだが
961 は、どこに問題を感じているのだい?
963デフォルトの名無しさん:2009/06/25(木) 11:05:19
自分に知恵を付けろ
他人に知恵を付けるな
最後には自分の首を絞める事になる
964デフォルトの名無しさん:2009/06/25(木) 16:43:48
Delphi2009を使用しています。

procedure TForm1.Button1Click(Sender: TObject);
begin
{$IFDEF FOO}
  ShowMessage('FOO')
{$ELSE}
  ShowMessage('BAR')
{$ENDIF}
end;

上のようなテストプログラムを書き、プロジェクト オプションのビルド設定で
Baseのプリプロセッサシンボルの定義にシンボルFOOを追加しました。
自動的にデバッグはFOO;DEBUG、リリースはFOO;RELEASEとなっています。
この状態でデバッグおよびリリースの再構築をしたのですが、どうやっても
"BAR"が表示されてしまいます。何か見落としていることがあったら教えてください。
965DEKO ◆Ksf1ckrwGPYc :2009/06/25(木) 18:06:29
>>964
オブジェクトインスペクタを確認してみてください。

ここの "ビルド設定" は
・Debug
・Release
のどちらになっているでしょうか?

# "ビルド設定" はダブルクリックで切り替えられます。
966964:2009/06/25(木) 18:43:33
>>965
オブジェクトインスペクタではビルド設定がみつからなかったのですが、プロジェクトマネージャでは
デバッグが太字になっていました。
スクリーンショットを取ってみましたが、おかしなところあるでしょうか。
http://g2n001.80.kg/_img/2009/20090625/18/200906251833550704734961140.png
967DEKO ◆Ksf1ckrwGPYc :2009/06/25(木) 19:37:58
>>966
>オブジェクトインスペクタ
すみません、プロジェクトマネージャですね。

> おかしなところあるでしょうか。
ここはリソースコンパイラのプリプロセッサ用条件定義になります。
"Delphiコンパイラ" の "条件定義" に FOO を追加してみて下さい。
968964:2009/06/25(木) 20:08:41
>>967
うまくいきました。本当にありがとうございます。
969デフォルトの名無しさん:2009/06/25(木) 21:02:45
Delphiインストールしようとしたら、あらかじめ必要なものが多すぎてめんどくなった
970デフォルトの名無しさん:2009/06/25(木) 21:38:45
>>969
すげーよくわかる、面倒だよな
俺はインストールして作るもの作ってリリースした後
起動すらしてないけどあとで必要になるかもと思って
アンインストールするかどうか迷ってる
971デフォルトの名無しさん:2009/06/26(金) 01:01:13
そんなのなんかあったっけ?
972 ◆XcB18Bks.Y :2009/06/26(金) 05:16:32
統合環境が.netベースになっている比較的新しいバージョンだと
いろいろ入れなければならなくて面倒ですよ。
2009ではだいぶ減ったらしいですけど。
973デフォルトの名無しさん:2009/06/26(金) 09:40:01
netか
俺もC#やってみようかなと思ったが、netも云々でやめたな
974デフォルトの名無しさん:2009/06/26(金) 16:12:35
開発者ならそのくらい入っていても良いかな?と思うが
インストールに必須なものがない方が楽は楽
975デフォルトの名無しさん:2009/06/26(金) 17:26:43
c++で二重ループの先頭にもどるのって
goto使うか二度if文使うしか無いの?

fortranだと

loop: do i=1,n
do j=1,n
if(hoge) cycle loop
enddo
enndo

とかで一行でかけちゃうよね
cで同じようなコードかくと
ループの外に出てしまうのでiがゼロに初期化されたり
jが更新されなかったりで冗長なコードになってしまうのが残念
976デフォルトの名無しさん:2009/06/26(金) 17:27:49
誤爆してしまった
ごめんね
977デフォルトの名無しさん:2009/06/26(金) 18:37:58
コードブロックをキューに突っ込んで言って
スレッドプールから暇なスレッドに割り当てて実行するような
Delphi向けのマルチコア向けのスレッドライブラリってなんかない?
978デフォルトの名無しさん:2009/06/26(金) 23:42:49
効率とか考え出したらライブラリ探した方がいいけど、
単純にそれだけの機能なら自分で書いた方が早くないかね
979デフォルトの名無しさん:2009/06/30(火) 00:31:51
スレチなんだけど、モニターの数ってどうやって確認するの?
980デフォルトの名無しさん:2009/06/30(火) 00:52:02
>>979
Screen.MonitorCount
981デフォルトの名無しさん:2009/06/30(火) 08:12:43
スレチなのか?
982 ◆XcB18Bks.Y :2009/06/30(火) 14:43:54
もうスレも終わりなのでスレ立てトライしてみますが会社なので結果は期待しないでね。
983 ◆XcB18Bks.Y :2009/06/30(火) 14:58:41
珍しく建ちました。

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

関連スレはどれも残っていましたのでそのままです。

>>980
最新の2009はわかりませんがTurbo Delphi Explorerだと
ノートパソコンとかでプログラムの起動中にモニターが増えたり減ったりした場合には反映されないので
こういうケースを想定しているようなソフトでは自力で調べる必要があります。

984 ◆XcB18Bks.Y :2009/06/30(火) 15:24:16
>>983>>980につっこみたかったのではなくてただの補足です。
「やな感じ〜!」に見える書き込みでゴメンナサイ

モニターが増えたり減ったりなんて結構前から珍しくないのに何年放置しているのかと思います。
985|Д゚彡 ◆A6VzDeLphI :2009/06/30(火) 17:07:14
本当だ。

バグ報告っていっているのかな?
986デフォルトの名無しさん:2009/07/01(水) 00:07:28
起動中にって・・・
987デフォルトの名無しさん:2009/07/01(水) 02:04:33
珍しいか?
俺はしょっちゅうやってるが。
988デフォルトの名無しさん:2009/07/01(水) 04:43:35
>>986
常駐系とか思いつきませんでしたか?
貧相な頭ですね
989デフォルトの名無しさん:2009/07/01(水) 04:57:52
TForm.Monitorを参照するとモニタの数更新されるよ
厳密に言えばフォームが新規に接続されたモニタ上にあった場合にだけど
990デフォルトの名無しさん:2009/07/01(水) 14:39:21
なんだこのウンココードは…
function TScreen.GetMonitorCount: Integer;
begin
if FMonitors.Count = 0 then
Result := GetSystemMetrics(SM_CMONITORS)
else
Result := FMonitors.Count;
end;
常にGetSystemMetricsよんどきゃいいんだな
991デフォルトの名無しさん
まぁそんなもんだ