Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、もしくは
質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
■Delphi XE6 Professional/Enterprise/Ultimate/Architect エディション(トライアル版有)
64bit Windows、Mac OS XからiOS、Androidのアプリも開発可能。ライブラリのソースコード付き。アカデミックライセンス有り。
旧バージョン(XE6/5/4/3/2/XE/2010/2009/2007/Delphi 7)のライセンス取得とダウンロードが可能。(アカデミック不可)
ttp://www.embarcadero.com/jp/products/delphi
■Delphi XE6 Starter エディション
個人/5人以下の企業・組織向け。年間売上1000US$以内の商用開発可。
(※)Delphi、Visual Studio等の有償/無償の開発ツールユーザーが対象。インストール確認は特に行わない。
ttp://www.embarcadero.com/jp/products/delphi/starter
■Embarcadero RAD Studio XE6 (Delphi、C++Builder、HTML5 Builder等を含むビジュアル開発スイート)
ttp://www.embarcadero.com/jp/products/rad-studio
<前スレ>
くだすれDelphi(超初心者用)その56
http://echo.2ch.net/test/read.cgi/tech/1405783063/
<過去スレ>
DelWiki (Delphi 関連の過去スレッド)※行方不明
ttp://delwiki.info/?
くだすれDelphi(超初心者用)その57 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2016/10/13(木) 13:21:54.84ID:7i5E+q2+180デフォルトの名無しさん
2016/12/24(土) 05:08:06.07ID:dJj6Jdn2 クラスの継承を使えないか?
レコードのほうに「違い」を押し込んでクラスにして継承して、クラスは共用とできないか?
そもそもクラスとレコードに分ける必要があるのか?
などなど
レコードのほうに「違い」を押し込んでクラスにして継承して、クラスは共用とできないか?
そもそもクラスとレコードに分ける必要があるのか?
などなど
181デフォルトの名無しさん
2016/12/24(土) 16:48:03.74ID:NvTs06qg レコード型をクラスのメンバとしてポインタで管理して
そのポインタの実体を操作する仮想メソッドなどを作る。
そのポインタの実体を操作する仮想メソッドなどを作る。
182デフォルトの名無しさん
2016/12/24(土) 23:24:23.58ID:SRluPO+r firemonkeyを使ってandroid向けのゲームを作り始めましたが
いきなり躓いて困ってます。
ゲームループのスレッドを作って描画を行っていますが
TBitmapがスレッドセーフでないため描画処理が正常に行えません。
firemonkeyでゲームを作る場合はメインスレッドのみで作るのでしょうか。
いきなり躓いて困ってます。
ゲームループのスレッドを作って描画を行っていますが
TBitmapがスレッドセーフでないため描画処理が正常に行えません。
firemonkeyでゲームを作る場合はメインスレッドのみで作るのでしょうか。
183デフォルトの名無しさん
2016/12/25(日) 02:11:22.91ID:dFY2jBPw lockしてもダメ?
184デフォルトの名無しさん
2016/12/25(日) 09:12:26.41ID:LRNNB7e/ DrawGridのセルの色を取得する方法を教えて下さい。
どのセルに何色を塗ったか記憶しているのですか、
もっと簡単に知る方法があると思い質問させてもらいました。
宜しくお願いします。
どのセルに何色を塗ったか記憶しているのですか、
もっと簡単に知る方法があると思い質問させてもらいました。
宜しくお願いします。
185デフォルトの名無しさん
2016/12/25(日) 09:56:13.82ID:HB1HITh4 >>182
スレッド側でBitmap描画してからSynchronize使ってメインスレッドのBitmapに転送すれ
スレッド側でBitmap描画してからSynchronize使ってメインスレッドのBitmapに転送すれ
186デフォルトの名無しさん
2016/12/25(日) 09:59:02.44ID:BtIm+2Ns187デフォルトの名無しさん
2016/12/25(日) 10:11:02.14ID:BtIm+2Ns >>185
スレッド側で描画用のBitmapをCreateしてWidth、Heightを設定した段階で
EBitmapSizeTooBigの例外が発生してしまうため、そこまで辿り着けなくて困ってます。
スレッド側で描画用のBitmapをCreateしてWidth、Heightを設定した段階で
EBitmapSizeTooBigの例外が発生してしまうため、そこまで辿り着けなくて困ってます。
188デフォルトの名無しさん
2016/12/25(日) 10:30:12.14ID:rexwkbDx 例外の種類見る限り、スレッドと関係なさそうに見えるが。
ビットマップが大きすぎるってWidthとHeightをいくつに設定しようとしたの?
ビットマップが大きすぎるってWidthとHeightをいくつに設定しようとしたの?
189デフォルトの名無しさん
2016/12/25(日) 10:36:40.00ID:BtIm+2Ns >>188
サイズは350x450なのでたぶん大きすぎることはないと思います。
メインスレッドで動作させた場合は、例外が発生することなく動作するので
メインスレッド以外ではTBitmapは使えないのかと・・・
また、Windowsでは正常に動作してAndroidで動作させると例外が発生するため
Android固有の問題なのかなと思いまして
サイズは350x450なのでたぶん大きすぎることはないと思います。
メインスレッドで動作させた場合は、例外が発生することなく動作するので
メインスレッド以外ではTBitmapは使えないのかと・・・
また、Windowsでは正常に動作してAndroidで動作させると例外が発生するため
Android固有の問題なのかなと思いまして
190デフォルトの名無しさん
2016/12/25(日) 12:33:01.08ID:dFY2jBPw >>186
map/unmap
map/unmap
191デフォルトの名無しさん
2016/12/25(日) 17:27:44.55ID:HB1HITh4192デフォルトの名無しさん
2016/12/25(日) 17:59:22.97ID:YEQFz9Pa Delのバグかよ
193デフォルトの名無しさん
2016/12/25(日) 18:04:15.67ID:BtIm+2Ns194デフォルトの名無しさん
2016/12/28(水) 09:28:27.13ID:aele3sW5 Delphi 10.1 BerlinのStarterでチュートリアルをやってます。
http://docwiki.embarcadero.com/RADStudio/Berlin/ja/ユーザー アクションに対する応答をコード エディタでコーディングする(IDE チュートリアル)
このページの中ほどまで進んだら
[dcc32 エラー] TextEditorUnit.pas(94): E2003 未定義の識別子 : 'TDialogServiceSync'
というエラーが表示されてしまいます。
どうしたら修正できるのでしょうか?
http://docwiki.embarcadero.com/RADStudio/Berlin/ja/ユーザー アクションに対する応答をコード エディタでコーディングする(IDE チュートリアル)
このページの中ほどまで進んだら
[dcc32 エラー] TextEditorUnit.pas(94): E2003 未定義の識別子 : 'TDialogServiceSync'
というエラーが表示されてしまいます。
どうしたら修正できるのでしょうか?
195デフォルトの名無しさん
2017/01/01(日) 00:51:30.42ID:u9hnImCi >>194
ここで引っかかってるのかな?
UserResponse := TDialogServiceSync.MessageDialog(
'File already exists. Do you want to overwrite?',
TMsgDlgType.mtInformation, mbYesNo, TMsgDlgBtn.mbYes, 0);
TDialogServiceSync はFire Monkeyでしか使えないからvclプログラムではエラーになって当然かも。
チュートリアルのソースコードって色々バグってるからなぁ…
とりあえず
UserResponse := MessageDlg(
'File already exists. Do you want to overwrite?',
TMsgDlgType.mtInformation, [mbYes, mbNo], 0);
と書き換えたらエラー出なくなると思う。
ここで引っかかってるのかな?
UserResponse := TDialogServiceSync.MessageDialog(
'File already exists. Do you want to overwrite?',
TMsgDlgType.mtInformation, mbYesNo, TMsgDlgBtn.mbYes, 0);
TDialogServiceSync はFire Monkeyでしか使えないからvclプログラムではエラーになって当然かも。
チュートリアルのソースコードって色々バグってるからなぁ…
とりあえず
UserResponse := MessageDlg(
'File already exists. Do you want to overwrite?',
TMsgDlgType.mtInformation, [mbYes, mbNo], 0);
と書き換えたらエラー出なくなると思う。
196デフォルトの名無しさん
2017/01/02(月) 05:54:12.25ID:IPXAtosy クラスファンクションなのかそれは?
197194
2017/01/02(月) 12:22:05.25ID:THkmnZCs >>195
ありがとうございました。早速試してみましたが、
[dcc32 エラー] TextEditorUnit.pas(99): E2003 未定義の識別子 : 'mbYes'
[dcc32 エラー] TextEditorUnit.pas(99): E2250 指定された引数で呼び出すことのできるオーバーロード関数 'MessageDlg' が定義されていません
[dcc32 警告] TextEditorUnit.pas(99): W1000 シンボル 'MessageDlg' を使用することは推奨されていません : 'Use FMX.DialogService methods'
とエラーが出てコンパイルが通りませんでした。
FireMonkeyはデフォルトで使えるのかと思ってました。いろいろと無知すぎるので
もうちょっと分かりやすいところから勉強しなおしてみます。
ありがとうございました。早速試してみましたが、
[dcc32 エラー] TextEditorUnit.pas(99): E2003 未定義の識別子 : 'mbYes'
[dcc32 エラー] TextEditorUnit.pas(99): E2250 指定された引数で呼び出すことのできるオーバーロード関数 'MessageDlg' が定義されていません
[dcc32 警告] TextEditorUnit.pas(99): W1000 シンボル 'MessageDlg' を使用することは推奨されていません : 'Use FMX.DialogService methods'
とエラーが出てコンパイルが通りませんでした。
FireMonkeyはデフォルトで使えるのかと思ってました。いろいろと無知すぎるので
もうちょっと分かりやすいところから勉強しなおしてみます。
198デフォルトの名無しさん
2017/01/02(月) 20:49:19.17ID:7Rs/ksIu199デフォルトの名無しさん
2017/01/04(水) 22:56:01.95ID:SVZbRNc5 スレッドからサブフォームを表示する事は可能ですか?
他の機器から特定の信号が来たら、警告画面みたいなのを表示しようとして
スレッドで信号監視してフォーム表示のつもりがうまくいきません。
なのでメインフォームにタイマー置いてタイマーイベントで信号監視しています。
ヘルプを読むとスレッドからフォームはコントロール出来ないような事が書いてあったのですが、皆さんならどうしますか?
他の機器から特定の信号が来たら、警告画面みたいなのを表示しようとして
スレッドで信号監視してフォーム表示のつもりがうまくいきません。
なのでメインフォームにタイマー置いてタイマーイベントで信号監視しています。
ヘルプを読むとスレッドからフォームはコントロール出来ないような事が書いてあったのですが、皆さんならどうしますか?
200デフォルトの名無しさん
2017/01/04(水) 23:19:05.87ID:07zJ2hFc 表示するだけなんでしょ?
自分だったらpostmessage
自分だったらpostmessage
201デフォルトの名無しさん
2017/01/04(水) 23:55:57.26ID:07zJ2hFc ごめん
post-/sendmessageにはwm_closeみたいな表示するメッセージはなかった
独自のメッセージを定義して受け取った側でshowするか
showwindow(async)を使うかだね
post-/sendmessageにはwm_closeみたいな表示するメッセージはなかった
独自のメッセージを定義して受け取った側でshowするか
showwindow(async)を使うかだね
202デフォルトの名無しさん
2017/01/05(木) 00:45:48.42ID:sWl9IbhJ >>199
TThread.Synchronizeで、メインスレッドに切り替えてから、引数で渡されたコールバックメソッド(手続き)でサブフォームを表示させるとか
TThread.Synchronizeで、メインスレッドに切り替えてから、引数で渡されたコールバックメソッド(手続き)でサブフォームを表示させるとか
203194
2017/01/05(木) 06:34:16.06ID:KgVZC7r0204デフォルトの名無しさん
2017/01/05(木) 07:19:36.75ID:DrifgVvY206デフォルトの名無しさん
2017/01/08(日) 16:20:11.76ID:lAdNqeO/ TShellCtrlコンポーネントって、デモに含まれるものなんだよね なんでVCLに含めなかった??
207デフォルトの名無しさん
2017/01/09(月) 14:24:09.01ID:KdQvIKlc208デフォルトの名無しさん
2017/01/10(火) 11:27:52.10ID:D5z5IiVv マルチスレッドが終了したかどうか確認するのに、フラグで確認してるんだけど、
なんかもっとスマートな方法ってありませんか?
ググったらWaitForが出て来たのですが、hoge.WaitForとしてもハンドルエラーとか出て使えませんでした。
宜しくお願いします。
なんかもっとスマートな方法ってありませんか?
ググったらWaitForが出て来たのですが、hoge.WaitForとしてもハンドルエラーとか出て使えませんでした。
宜しくお願いします。
209デフォルトの名無しさん
2017/01/10(火) 12:33:32.63ID:8tL5nmKS 何があなたのスマートの基準なのか?
フラグは別に悪くないと思うけど。
フラグは別に悪くないと思うけど。
210デフォルトの名無しさん
2017/01/10(火) 17:34:35.55ID:cSdSlPHe freeが一番確実じゃない?
211デフォルトの名無しさん
2017/01/10(火) 17:41:03.73ID:9hDOaePS >>208
hogeってTThread?
そんだったらTThread.FreeOnTerminateをTrueにしてるから、
スレッドが終了してFreeされてるから、ハンドルエラーと出てくるんだろう。
FreeOnTerminiateをFalseにすればOK(そのかわりTThreadの破棄は自分でやる必要がある)。
hogeってTThread?
そんだったらTThread.FreeOnTerminateをTrueにしてるから、
スレッドが終了してFreeされてるから、ハンドルエラーと出てくるんだろう。
FreeOnTerminiateをFalseにすればOK(そのかわりTThreadの破棄は自分でやる必要がある)。
212デフォルトの名無しさん
2017/01/10(火) 18:11:59.83ID:uT10hEea 終了したか確認するのにWaitForしたら確認じゃなく待機しちゃってダメじゃないのかと思うけど。
FreeOnTerminiate:=true;で OnTerminateイベントでフラグ立てるので良くないかい?
あとはメインフォームに終了通知としてメッセージ送るとか。
Win32API使うのOKなら FreeOnTerminiate:=false; にして
スレッドハンドルに対して WaitForSingleObject (タイムアウトは0に設定)使い
WAIT_OBJECT_0が返るかWAIT_TIMEOUTが返るか確認する。
もしくはGetExitCodeThread関数を使うとかかな。
FreeOnTerminiate:=true;で OnTerminateイベントでフラグ立てるので良くないかい?
あとはメインフォームに終了通知としてメッセージ送るとか。
Win32API使うのOKなら FreeOnTerminiate:=false; にして
スレッドハンドルに対して WaitForSingleObject (タイムアウトは0に設定)使い
WAIT_OBJECT_0が返るかWAIT_TIMEOUTが返るか確認する。
もしくはGetExitCodeThread関数を使うとかかな。
213デフォルトの名無しさん
2017/01/10(火) 18:56:40.06ID:XaHxjxQc そういやスレッドの終わり方の議論が2、3年前にあったな
214デフォルトの名無しさん
2017/01/10(火) 19:15:27.36ID:9hDOaePS FreeOnTerminateが使えない?とかいう議論じゃなかったっけw
215デフォルトの名無しさん
2017/01/10(火) 21:06:50.37ID:8tL5nmKS FreeOnTerminiate:=true;で OnTerminateイベントでフラグ立てる
に賛成。簡単確実。
に賛成。簡単確実。
216デフォルトの名無しさん
2017/01/11(水) 07:54:30.57ID:7+b9GoiT >>215
そのフラグの排他制御は簡単じゃないよ
そのフラグの排他制御は簡単じゃないよ
217デフォルトの名無しさん
2017/01/11(水) 08:27:35.32ID:7+b9GoiT ああOnTerminate 内はメインスレッドか。
なら簡単だわ。メンゴ。
昔はOnTerminateイベント無かった希ガス
なら簡単だわ。メンゴ。
昔はOnTerminateイベント無かった希ガス
218208
2017/01/11(水) 08:51:02.04ID:jn+AzvnI おはようございます。
皆さん、ありがとうございます。
フラグがやはり良さげなんですね。
もう1つ教えて下さい。
スレッドの中で
try
stringlist:=TStringList.Create;
while not Terminete do
begin
何かの処理
end;
finally
stringlist.free;
End;
とした時に、TermineteをTrueにして終了するとfinallyの処理をしてくれません。
異常終了した時はfinallyの処理をしてくれます。
stringlistの解放はOnTermineteでするのが普通なのでしょうか?
皆さん、ありがとうございます。
フラグがやはり良さげなんですね。
もう1つ教えて下さい。
スレッドの中で
try
stringlist:=TStringList.Create;
while not Terminete do
begin
何かの処理
end;
finally
stringlist.free;
End;
とした時に、TermineteをTrueにして終了するとfinallyの処理をしてくれません。
異常終了した時はfinallyの処理をしてくれます。
stringlistの解放はOnTermineteでするのが普通なのでしょうか?
219デフォルトの名無しさん
2017/01/11(水) 12:16:51.30ID:CK/PUOqI220デフォルトの名無しさん
2017/01/11(水) 14:34:41.49ID:Rshx8mvt >>219
tryはあるが?
tryはあるが?
221デフォルトの名無しさん
2017/01/11(水) 14:43:08.49ID:mOqhfYH5 >とした時に、TermineteをTrueにして終了するとfinallyの処理をしてくれません。
んなわけない。ちゃんとfinallyの処理するはずだからもっとしっかり確認しよう。
>フラグがやはり良さげなんですね。
もうちょっと具体的にスレッド終わった後何したいのかとか書いてくれんと答えようがねぇ。
んなわけない。ちゃんとfinallyの処理するはずだからもっとしっかり確認しよう。
>フラグがやはり良さげなんですね。
もうちょっと具体的にスレッド終わった後何したいのかとか書いてくれんと答えようがねぇ。
222デフォルトの名無しさん
2017/01/11(水) 17:34:02.96ID:y79IyYLw >>220
ホントだtryはあった...でも
最近のdelphiは仕様が変わったのか...
念のため例外処理入れてみたら?
list=:tstringlist.create;
try try
while not terminated do begin ...end;
// ここで正常処理終了のフラグをセット
except....end;
finally list.free; end;
ホントだtryはあった...でも
最近のdelphiは仕様が変わったのか...
念のため例外処理入れてみたら?
list=:tstringlist.create;
try try
while not terminated do begin ...end;
// ここで正常処理終了のフラグをセット
except....end;
finally list.free; end;
223デフォルトの名無しさん
2017/01/11(水) 18:26:26.78ID:tCuecbSb >>218
>TermineteをTrueにして終了するとfinallyの処理をしてくれません。
どうやって確認したの?
あとTThreadの派生クラスならTerminateはメソッドとTerminatedプロパティが使える。
>stringlistの解放はOnTermineteでするのが普通なのでしょうか?
そんなことはない。
>TermineteをTrueにして終了するとfinallyの処理をしてくれません。
どうやって確認したの?
あとTThreadの派生クラスならTerminateはメソッドとTerminatedプロパティが使える。
>stringlistの解放はOnTermineteでするのが普通なのでしょうか?
そんなことはない。
224デフォルトの名無しさん
2017/01/11(水) 18:29:24.22ID:+wq8yOB3 昔昔、QuadrupleDを使ってやってたサウンドの再生を最新のDelphiでやりたいんですが、使えるライブラリを探してます。
・複数のwaveファイルをマルチチャネルで読み込んでそれぞれ別個に再生したい
・チャネル単位でループ再生、ピッチ変更、音量変更がしたい
あるかな…(´・ω・`)
・複数のwaveファイルをマルチチャネルで読み込んでそれぞれ別個に再生したい
・チャネル単位でループ再生、ピッチ変更、音量変更がしたい
あるかな…(´・ω・`)
225デフォルトの名無しさん
2017/01/11(水) 21:03:36.27ID:go3Ym2g4 ブレーク入れてね
ステップで見るときブレーク入れないと
見かけ飛ばすから
ステップで見るときブレーク入れないと
見かけ飛ばすから
226デフォルトの名無しさん
2017/01/12(木) 06:31:56.17ID:a5xM53E0 フラグの排他制御は簡単だと思うが。
boolean変数一個なら読み書きは1命令で、割り込まれることはないだろうし
書く前に消されちゃうようなコードを書かなければいいだけ。
boolean変数一個なら読み書きは1命令で、割り込まれることはないだろうし
書く前に消されちゃうようなコードを書かなければいいだけ。
227デフォルトの名無しさん
2017/01/12(木) 07:43:07.08ID:pteiZ85t >>226
きちんとした知識がある人にとっては簡単だよね
きちんとした知識がある人にとっては簡単だよね
228デフォルトの名無しさん
2017/01/13(金) 08:37:54.09ID:ZuNdbFdt フラグをグローバルやメインフォームなどに
持たせるのはなんか古臭いという気持ちはある
持たせるのはなんか古臭いという気持ちはある
229デフォルトの名無しさん
2017/01/14(土) 13:08:24.40ID:gjFRSJdj 元号変わったらどうすっかな
D7だと対応できんだろ
D7だと対応できんだろ
230デフォルトの名無しさん
2017/01/14(土) 13:25:01.19ID:h3eR+GmF231デフォルトの名無しさん
2017/01/17(火) 17:31:21.77ID:O6RaaTFv Berlin試したみたけど以前ここで言った
gifアニメのバグが解消されてないな
gifアニメのバグが解消されてないな
232デフォルトの名無しさん
2017/01/18(水) 13:40:10.70ID:YhLwefSp string、ansichar、pansicharの型キャストってどうやるの?
暗黙の型キャストの警告を消したいんだけど、ググってstrpcopyとかのサンプルを実行しても消えない。
暗黙の型キャストの警告を消したいんだけど、ググってstrpcopyとかのサンプルを実行しても消えない。
233デフォルトの名無しさん
2017/01/19(木) 15:50:04.40ID:5UKguDxp >>232
string(ansistring変数)とかで消えない?
string(ansistring変数)とかで消えない?
234デフォルトの名無しさん
2017/01/20(金) 09:53:10.19ID:1eiriAuJ 具体的なコードを挙げてみては?
235デフォルトの名無しさん
2017/01/27(金) 12:59:02.17ID:/S2JEwyl Konopkaコンポーネントのアンインストール方法を教えて下さい。
インストール中に異常終了したのでアンインストールしたいのですが、
アンインストールも途中終了してしまって、行き詰ってしまいました。
よろしくお願いします。
インストール中に異常終了したのでアンインストールしたいのですが、
アンインストールも途中終了してしまって、行き詰ってしまいました。
よろしくお願いします。
236デフォルトの名無しさん
2017/01/27(金) 14:49:41.44ID:5OkJm/3R >>235
マイドキュメント\Embarcadero\Studio\18.0\CatalogRepositoryにあるKonopkaのフォルダと
パブリックのドキュメント\Embarcadero\Studio\18.0\CatalogRepositoryにあるKonopkaの
リポジトリデータを削除すればよかったと思う。(心配ならバックアップとっといてね)
konopka、インストール失敗するとアンインストールもできなくなるんだよね。
マイドキュメント\Embarcadero\Studio\18.0\CatalogRepositoryにあるKonopkaのフォルダと
パブリックのドキュメント\Embarcadero\Studio\18.0\CatalogRepositoryにあるKonopkaの
リポジトリデータを削除すればよかったと思う。(心配ならバックアップとっといてね)
konopka、インストール失敗するとアンインストールもできなくなるんだよね。
238デフォルトの名無しさん
2017/02/01(水) 09:20:48.68ID:5qzbuLNZ 入力の支援機能で出て来た候補にカーソルを合わせて、
ピリオド打ったら選んだ候補が入力される設定ってどこにありますか?
ベルリンのup2を入れたのですが、最初は良かったのにいつの間にかピリオドで選択されなくなってしまいました。
ピリオド打ったら選んだ候補が入力される設定ってどこにありますか?
ベルリンのup2を入れたのですが、最初は良かったのにいつの間にかピリオドで選択されなくなってしまいました。
239デフォルトの名無しさん
2017/02/06(月) 19:05:34.17ID:xOrt0AYX StringGridのセルをデータの合わせて塗りつぶすことをしています。
タイマーイベントで0.2秒毎にデータに変化がなくても一旦デフォルト色にしてから他の色を塗っています。
そのせいだと思うのですがセルの選択ができません。
セルをランダムに色を塗りつつ、セルの選択もできるようにするにはどうしたらいいでしょうか?
タイマーイベントで0.2秒毎にデータに変化がなくても一旦デフォルト色にしてから他の色を塗っています。
そのせいだと思うのですがセルの選択ができません。
セルをランダムに色を塗りつつ、セルの選択もできるようにするにはどうしたらいいでしょうか?
240デフォルトの名無しさん
2017/02/06(月) 20:35:02.64ID:iNTq03fP おんどろーせる
241デフォルトの名無しさん
2017/02/06(月) 20:38:57.75ID:U9v8FdBr TSringGridのOnDrawCellイベントの引数で渡されるTGridDrawStateで、選択されたかどうか判断できる。
選択されてないときだけ、色を変更するよろし。
選択されてないときだけ、色を変更するよろし。
243デフォルトの名無しさん
2017/02/07(火) 04:11:46.40ID:odr3U2KT タイマーで200ミリ秒ずつやってるところが壮絶にまぬけっぽい 小学生以下の知能
244デフォルトの名無しさん
2017/02/07(火) 07:48:29.48ID:uL0lBsbg Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、もしくは
質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
245239
2017/02/07(火) 14:14:09.54ID:vf4YiH1/ 昨日はありがとうございました。
TSringGridの特定のセルに数値を書き込むのにDrawTextを使って右寄せで書き込んでいます。
この書き込んだ数値を後から取得することってできますか?
セルにHintみたいに埋め込めたら簡単なんですけどググっても分かりませんでした。
>>243
シーケンサーの信号状態を監視するんで手っ取り早くタイマー使ってます。
TSringGridの特定のセルに数値を書き込むのにDrawTextを使って右寄せで書き込んでいます。
この書き込んだ数値を後から取得することってできますか?
セルにHintみたいに埋め込めたら簡単なんですけどググっても分かりませんでした。
>>243
シーケンサーの信号状態を監視するんで手っ取り早くタイマー使ってます。
246デフォルトの名無しさん
2017/02/07(火) 21:01:48.32ID:qgMFF5pP その「数値」はどこにしまってあるの? それは自分で世話するしかない。
DrawTextは文字列を描画するだけで、何書いたかなんてどこにも覚えていないよ。
DrawTextは文字列を描画するだけで、何書いたかなんてどこにも覚えていないよ。
247デフォルトの名無しさん
2017/02/07(火) 22:53:48.58ID:GEF3mu7C StringGridなんだから、Cellsプロパティを通して、文字列として各セルにでも入れときゃいいんでね?(ハナホジ
248デフォルトの名無しさん
2017/02/08(水) 07:16:05.46ID:3kd0dWw+ >>245
格納するオブジェクトも実装したらいいんじゃ
格納するオブジェクトも実装したらいいんじゃ
249デフォルトの名無しさん
2017/02/12(日) 16:38:05.20ID:iYdKWxWq 整数ならcellのobjects(だったっけかな)に入れときゃ良いじゃん
250デフォルトの名無しさん
2017/02/26(日) 22:21:06.30ID:S5w82ICF vs2015アンインスコしたらDel10.1でコンパイルできなくなった。
Del再インスコするしかない?
Del再インスコするしかない?
251デフォルトの名無しさん
2017/02/26(日) 22:23:37.25ID:8hwVjJWR 環境変数消されてるとか?
252デフォルトの名無しさん
2017/02/26(日) 23:37:41.28ID:S5w82ICF253デフォルトの名無しさん
2017/03/14(火) 14:46:39.28ID:SzM2z6wx スレッド1で変数aの値を読み書きしていてスレッド2では変数aを読み込みしかしない場合って干渉対策って必要?
254デフォルトの名無しさん
2017/03/14(火) 15:58:50.80ID:vbV/Jpv3 うん
255253
2017/03/14(火) 22:26:02.83ID:M7D1b0oM ありがとうございます。
干渉対策じゃなくて排他処理っていうんですね。
失礼しました。
各スレッドで共有する変数を集めたUnitに変数aを宣言して使っています。
この変数aを複数のスレッドからアクセスする場合、Synchronizeを使うのでしょうか?
SynchronizeはスレッドからVCLを描画する場合に使うと書いてあったので、フラグを立てるとかして
排他処理をするのでしょうか?
干渉対策じゃなくて排他処理っていうんですね。
失礼しました。
各スレッドで共有する変数を集めたUnitに変数aを宣言して使っています。
この変数aを複数のスレッドからアクセスする場合、Synchronizeを使うのでしょうか?
SynchronizeはスレッドからVCLを描画する場合に使うと書いてあったので、フラグを立てるとかして
排他処理をするのでしょうか?
256デフォルトの名無しさん
2017/03/14(火) 23:05:45.72ID:137tpMLx クリティカルセクションでも使えばいい、どっかで
CS := TCricalSection.Create()で作っておいて、
同時にアクセスされたら困るところで
CS.Enter();
try
共有リソースの変数Aにアクセスなど
finally
CS.Leave();
end;
CS := TCricalSection.Create()で作っておいて、
同時にアクセスされたら困るところで
CS.Enter();
try
共有リソースの変数Aにアクセスなど
finally
CS.Leave();
end;
257デフォルトの名無しさん
2017/03/14(火) 23:07:46.72ID:137tpMLx まぁ、他にもSyncObjs.pasにTInterlockedとかあるけど、
そこは自分で頑張ってくれ
そこは自分で頑張ってくれ
258デフォルトの名無しさん
2017/03/15(水) 07:56:13.67ID:OMQXGO2Q259253
2017/03/16(木) 09:51:28.35ID:IMOOaoXR 皆さん、ありがとうございます。
これから調べて確認しようと思うのですが、最後に1つ教えて下さい。
シンクロナイズを使い過ぎるとマルチスレッドの意味が無くなるとヘルプに書いてありました。
クリティカルセクション等は使い過ぎてもメインフォームの反応が悪くなるとかそういう事が無くなる、若しくは低減されるとかあるのでしょうか?
もし、それならクリティカルセクション等を推奨すると思うので使い過ぎはやはりダメとは思いますがどうなんでそょう?
これから調べて確認しようと思うのですが、最後に1つ教えて下さい。
シンクロナイズを使い過ぎるとマルチスレッドの意味が無くなるとヘルプに書いてありました。
クリティカルセクション等は使い過ぎてもメインフォームの反応が悪くなるとかそういう事が無くなる、若しくは低減されるとかあるのでしょうか?
もし、それならクリティカルセクション等を推奨すると思うので使い過ぎはやはりダメとは思いますがどうなんでそょう?
260デフォルトの名無しさん
2017/03/16(木) 17:53:22.67ID:Xe646fvV どこからが使いすぎだと思う?
261デフォルトの名無しさん
2017/03/16(木) 18:29:10.53ID:vq3uRAd1 >>259
ウインドウ描画などしているスレッドが「メインVCLスレッド」。
要するにメッセージループが動作しているスレッド。
Synchronizeはこのメッセージループに「渡したプロシージャの処理を任せる」ため
Synchronizeを多用すると「メインフォームの反応が悪くなる」という状況を生む。
Synchronizeはあくまで変数のアクセスと言った軽い処理に限定すればいい。
この場合、メッセージループがウィンドウメッセージを処理する合間に変数へのアクセスを処理する程度なので
その程度で「メインフォームの反応が悪くなる」ということはないだろう。
ただ、もし重たい処理を任せてしまうと、フォームのイベントで処理するのと同じになってしまう。
(フォームなどコンポーネントのイベントはメインVCLスレッドで動作している)
この場合メインフォームの反応が悪くなる。
クリティカルセクションはメッセージループとか関係ないので、それによってメインフォームの反応が悪くなるということはない。
ただ例外として、メインVCLスレッドでクリティカルセクションを使うと、
他のスレッドが使用中はメインVCLスレッドは待機してしまうのでメインフォームの反応が悪くなることはある。
ウインドウ描画などしているスレッドが「メインVCLスレッド」。
要するにメッセージループが動作しているスレッド。
Synchronizeはこのメッセージループに「渡したプロシージャの処理を任せる」ため
Synchronizeを多用すると「メインフォームの反応が悪くなる」という状況を生む。
Synchronizeはあくまで変数のアクセスと言った軽い処理に限定すればいい。
この場合、メッセージループがウィンドウメッセージを処理する合間に変数へのアクセスを処理する程度なので
その程度で「メインフォームの反応が悪くなる」ということはないだろう。
ただ、もし重たい処理を任せてしまうと、フォームのイベントで処理するのと同じになってしまう。
(フォームなどコンポーネントのイベントはメインVCLスレッドで動作している)
この場合メインフォームの反応が悪くなる。
クリティカルセクションはメッセージループとか関係ないので、それによってメインフォームの反応が悪くなるということはない。
ただ例外として、メインVCLスレッドでクリティカルセクションを使うと、
他のスレッドが使用中はメインVCLスレッドは待機してしまうのでメインフォームの反応が悪くなることはある。
262デフォルトの名無しさん
2017/03/17(金) 07:45:46.44ID:88SBOT8h >>259
問題は「使い過ぎ」の定義だと思うけど
僕は1つ1つの処理の長さが長くなってしまった場合をいってるのではないかと思う。
同時処理といっても現実は短い処理が交互に行われるのをスレッドと称しているだけであって
それを否定するようなプログラミングはもはやスレッドではないということではないかと。
問題は「使い過ぎ」の定義だと思うけど
僕は1つ1つの処理の長さが長くなってしまった場合をいってるのではないかと思う。
同時処理といっても現実は短い処理が交互に行われるのをスレッドと称しているだけであって
それを否定するようなプログラミングはもはやスレッドではないということではないかと。
263デフォルトの名無しさん
2017/03/17(金) 09:01:04.72ID:88SBOT8h あ、もしかしたら質問に答えてなかったかな?
つまりsyncronizeだろうがcsだろうが
占有状態が長くなるようなロジックになるなら同じことだ
つまりsyncronizeだろうがcsだろうが
占有状態が長くなるようなロジックになるなら同じことだ
264デフォルトの名無しさん
2017/03/17(金) 17:25:37.85ID:c2lVMe4f265デフォルトの名無しさん
2017/03/18(土) 10:42:58.16ID:TEQZ8ThN266デフォルトの名無しさん
2017/03/18(土) 11:15:40.91ID:uhuX0RUO OSのタスクスケジューリングやスレッド、Delphiのメインスレッドの話がごっちゃ混ぜになっててカオスカオス
267デフォルトの名無しさん
2017/03/18(土) 11:18:08.58ID:At1yjhtj 細かい処理が交互にっていつの時代のタスク割り当ての話してるんだ
268デフォルトの名無しさん
2017/03/18(土) 17:26:39.99ID:qhwfKSm6 >マルチコアなどの詳細な仕組みが現話題の結論に影響を与えるものではない
今の話題においてこれは正しいと思う。
>同時処理といっても現実は短い処理が交互に行われるのをスレッドと称しているだけであって
この話も同じく、“現話題の結論に影響を与えるものではない”
今の話題においてこれは正しいと思う。
>同時処理といっても現実は短い処理が交互に行われるのをスレッドと称しているだけであって
この話も同じく、“現話題の結論に影響を与えるものではない”
269デフォルトの名無しさん
2017/03/18(土) 17:42:46.56ID:uhuX0RUO 中途半端に説明するからややこしくなる
SynchronizeにしろCriticalSectionにしろDelphiのメインスレッドが処理待ちになる状況ができれば反応は悪化する
くらいでイナフ
SynchronizeにしろCriticalSectionにしろDelphiのメインスレッドが処理待ちになる状況ができれば反応は悪化する
くらいでイナフ
270デフォルトの名無しさん
2017/03/18(土) 23:22:19.03ID:toYG3enn >>262が変な説明を入れたのが元凶だ
271デフォルトの名無しさん
2017/03/19(日) 10:14:13.46ID:pPSf+p35 >>269
メインに限らないっしょ。同期されたサブスレッド間でも片方が長い処理すれば片方は待ちになるわけだし。
メインに限らないっしょ。同期されたサブスレッド間でも片方が長い処理すれば片方は待ちになるわけだし。
272デフォルトの名無しさん
2017/03/19(日) 10:31:00.81ID:Zac56zGn >>271
メインスレッドを待機が発生するスレッドと置き換えて考えたら良いだけの話であってそのあたりは柔軟に考えてくだちい
まー、サブスレッド同士が待機しあって停滞しててもメインスレッドがそこに巻き込まれてなければ(見かけ上は)レスポンスの悪化とかは無いけどね
メインスレッドを待機が発生するスレッドと置き換えて考えたら良いだけの話であってそのあたりは柔軟に考えてくだちい
まー、サブスレッド同士が待機しあって停滞しててもメインスレッドがそこに巻き込まれてなければ(見かけ上は)レスポンスの悪化とかは無いけどね
273デフォルトの名無しさん
2017/03/19(日) 12:59:15.63ID:pPSf+p35 結局「スレッド」という英単語が同いう意味かってだけだね。
あと例えば一度にたくさんのログインがあるサーバーなんかは
スレッドたくさん作ることによるメモリの圧迫が指摘されてて
メッセージ処理型に回帰してるよね。
つまり同時(的な)処理においてスレッドが万能ってわけじゃない
ことも知ってたほうがよいよね。
あと例えば一度にたくさんのログインがあるサーバーなんかは
スレッドたくさん作ることによるメモリの圧迫が指摘されてて
メッセージ処理型に回帰してるよね。
つまり同時(的な)処理においてスレッドが万能ってわけじゃない
ことも知ってたほうがよいよね。
274デフォルトの名無しさん
2017/03/19(日) 16:36:19.37ID:z/4QTPa3 で、そのメモリ圧迫とやらは今回の質問のどこにかすっているのかね?
275デフォルトの名無しさん
2017/03/19(日) 18:47:31.53ID:Zac56zGn どんどん話題がすり変わっていくな
276デフォルトの名無しさん
2017/03/20(月) 01:59:24.49ID:Qzpue34I >>262
が悔し紛れに難癖つけてるだけっしょ
が悔し紛れに難癖つけてるだけっしょ
277デフォルトの名無しさん
2017/03/20(月) 07:33:47.40ID:/HDavIr2 予想どおりの反応ですw
278デフォルトの名無しさん
2017/03/23(木) 17:32:52.95ID:0AhE1jWZ 10.2tokyo入れて見たんだけど、10.1でgetitから入れたコンパーネントが入れられなくてプロジェクト開けられない。
エンバカ何なんだ?
エンバカ何なんだ?
279デフォルトの名無しさん
2017/03/24(金) 07:00:18.71ID:w0n9pMnW280デフォルトの名無しさん
2017/03/25(土) 07:13:02.05ID:Hlan26fq StarterのBerlinをTokyoにするんだけど
いったんBerlinをアンインストールするんだっけ?
いったんBerlinをアンインストールするんだっけ?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】習主席とトランプ大統領が電話会談 台湾問題について★3 [ニョキニョキ★]
- 【速報】トランプ大統領、中国の習近平国家主席を「国賓」として招待することに [ニョキニョキ★]
- 人生初黒星の神童、那須川天心がリング上で土下座 [牛丼★]
- 米中電話会談、トランプ氏は「米国側は中国にとっての台湾問題の重要性を理解する」 [1ゲットロボ★]
- 【音楽】「なんでこんなバカが国のトップなの?」 若者に人気のバンド「GEZAN」のマヒトゥ・ザ・ピーポーが高市総理に苦言 [シャチ★]
- 中国人「『日本は危ないから行かないように』と言われたが、日本に来たらとても安全だった」 [お断り★]
- トランプおやびん「米中関係は極めて強固」高市早苗「」 [834922174]
- 【高市悲報】来年、習近平主席がアメリカに「国賓」として訪米。どうするんだよ高市・・・アメリカも敵に回すのか? [483862913]
- 【号外】習近平、米大統領のトランプと首脳会談を行う!日本のの武力による台湾脅しついて共有の追及をする意思統一でおこなう [339712612]
- 【悲報】八田與一容疑者、海に入って大陸へ逃げた可能性😲wwwwwwwwwww [232136196]
- 【高市悲報】トランプおやびん「偉大な指導者である習近平首席、米国は中国にとっての台湾問題の重要性を理解しています」 [115996789]
- 【速報】足立ひき逃げ犯、精神病持ちだった [329271814]
