くだすれDelphi(超初心者用)その58【Embarcadero】

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2020/03/11(水) 18:30:39.03ID:NTiFnax/
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、もしくは
質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。

Delphi使いが優しくコメントを返しますが、お礼はDelphiの布教と初心者の救済をお願いします。

■Delphi 10.3
ttp://www.embarcadero.com/jp/products/delphi

■Delphi Community Edition (無料)
iOS、Android、Windows、macOS向けアプリも開発可能。年間売上5000 US$以内の商用開発可。
https://www.embarcadero.com/jp/products/delphi/starter

<前スレ>
くだすれDelphi(超初心者用)その57
https://mevius.5ch.net/test/read.cgi/tech/1476332514/
2021/01/06(水) 11:20:51.65ID:DWMAQd+1
シーケンサーと信号のやり取りをするプログラムを作成中なんだけど、相手からの入力を監視する場合ってマルチタスクで監視するかアイドル時に監視するかどっちが負荷が少ないですか?
2021/01/06(水) 11:54:00.61ID:9KnhFZZ7
>>397
マルチスレッドって言いたいとエスパー
スレッド分けて監視しないとメインスレッドがBusyの時信号が来たら取りこぼす
2021/01/06(水) 13:13:15.14ID:DWMAQd+1
マルチスレッド、その通りです。
ありがとうございます。
2021/01/06(水) 18:47:01.99ID:xfJpH4ty
負荷を計測する方法は知らないけどスレッド増やしまくったらファンがブォンブォン唸り始めるんだがこれは負荷が高いってことなんでないの?
2021/01/06(水) 19:10:41.59ID:tQupLFJC
まず、マルチスレッドかどうかにかかわらずどうやってデータ監視してるの?

データが来なくても、頻繁に無限ループでチェックしたらそりゃマルチスレッドにしたとん、全開のCPUコアが増えるから死ぬだろ
2021/01/06(水) 19:17:25.73ID:tQupLFJC
シーケンサがようわからんが、UIスレッド以外の監視スレッドは一つだけでいいんじゃ?
2021/01/06(水) 19:25:44.95ID:g/7zORbT
アイドル時をどうやって判断してるのかとか色々疑問が残る吉宗であった
404デフォルトの名無しさん
垢版 |
2021/01/06(水) 21:10:21.72ID:ShgVExHv
>>398
メインスレッドがbusyにならない様に、スレッド化するんじゃ無いの?
WindowsのメインスレッドってUIの守備範囲だよ、UIが遅くなるソフトは糞ソフトの認識だが。
405デフォルトの名無しさん
垢版 |
2021/01/06(水) 21:11:11.60ID:ShgVExHv
CPUnの負荷を最小にするには割り込みしか無いよ。
2021/01/06(水) 21:13:14.70ID:v3Dwbq+8
OnIdleとかそういうことじゃね?
2021/01/06(水) 21:43:26.03ID:9KnhFZZ7
>>404
ん?
受信専用のスレッド側で監視してメインがBusyでも受信できるようにってそこまで詳しく説明しないと伝わらなかった?
408デフォルトの名無しさん
垢版 |
2021/01/06(水) 22:17:47.00ID:ShgVExHv
>>407
それが成立するのはPPLを使った場合だけで無いの?
同一コアでの実行ならメインがbusyなら子スレッドもbusyになり結果受信できなくなると思うが違う?
2021/01/06(水) 22:49:58.18ID:tQupLFJC
同一コア?
実行環境が1コアでも、OSのスレッドで分けてればタイムスライスでメインがbusyでも、子スレッドはbusyじゃないが

エスパーして、子スレッドで受信したデータを子スレッドでTThread.synchoronizeしてUIスレッドに同期とってUIスレッドに渡したりしたらメインがbusyなら子スレッドも引きづられるけど
その場合はTThread.Queueでいいのかな
つか、受信したデータどうするのか知らんが..
2021/01/06(水) 23:05:19.23ID:tQupLFJC
ごめん、1コアの話は忘れてくれw

同一コアって、OSのスレッドでわけてれば、OSがスレッドの実行をコアが複数あれば適切に振り分けるし、仮に同一コアになってもタイムスライスでメインがbusyでも子はbusyにならん
2021/01/06(水) 23:07:23.62ID:9KnhFZZ7
>>408
は?
412デフォルトの名無しさん
垢版 |
2021/01/06(水) 23:11:46.48ID:ShgVExHv
>>410
1コアの話は忘れた。

>> OSがスレッドの実行をコアが複数あれば適切に振り分けるし、

PPL使えばね

>>仮に同一コアになってもタイムスライスでメインがbusyでも子はbusyにならん

メインCPUがbusyってCPU使用率が100%近いって事だよね、子スレッドはどのCPUで動いてるの?

もっとググって!
2021/01/06(水) 23:22:00.30ID:tQupLFJC
>>412
いや、君は根本が間違ってる...

DelphiのPPLって内部でOSのスレッド使って実装してて、
スレッドやスレッドプールをもっと使いやすくしたものがライブラリがPPL
2021/01/06(水) 23:24:18.56ID:9KnhFZZ7
>>412
問題です

WebBrokerアプリケーションを新規で作ります

デフォルトのHttp応答にDateTimeToStr(Now)を追加して時間が表示されるようにします

メインフォームにボタンを追加して
d := now;
while True do begin
if secondsBetween(now,d) > 10 then break;
end;
を実行するようにします

コンパイルし、Httpサーバーを起動します
デフォルトのブラウザを開くボタンを押します

追加したボタンを押してメインフォームを応答なしにします

ブラウザ側を更新します

さてどうなるでしょう
2021/01/06(水) 23:25:52.63ID:9KnhFZZ7
答え

メインフォームが応答なしでもブラウザは更新された正常に現在の時間を表示します

WebBrokerは意識せずマルチスレッドを実験できる良いコンポーネントですね
2021/01/06(水) 23:34:47.78ID:tQupLFJC
DelphiのPPLって内部でOSのスレッド使って実装してて、
スレッドやスレッドプールをもっと使いやすくしたものがPPLというライブラリ

文末がおかしかくて放置しようかと思ったけど、彼は根本的に間違ってるのでちゃんと修正しときます
2021/01/07(木) 00:08:05.04ID:yPIN+dBS
>>412
>メインCPUがbusyってCPU使用率が100%近いって事だよね、子スレッドはどのCPUで動いてるの?

だから、タイムスライスとかでOSがスレッド(例えばメインスレッド)の実行を強制的に停止するんだって、で、他のスレッドにそのCPUを割り当てる

https://ascii.jp/elem/000/000/672/672088/
タイムスライスとかプリエンプティブとか、スレッドの実行がどうなってるか勉強しよう
418デフォルトの名無しさん
垢版 |
2021/01/07(木) 00:22:12.33ID:sNfaNTws
>>417
前にも書いたがCPU負荷が100%近いってのが前提だが、その状態で子プロセスにCPUが割り当てられても殆ど動かん。

Webbrokerの話はそもそも、http serverは固まったアプリの子プロセスでないんで無いの?
2021/01/07(木) 00:36:01.13ID:yPIN+dBS
>>418
メインCPU100%とか具体的にあげてきたのは途中からでしょ
最初はメインスレッドがbusyしか君いってないけど
2021/01/07(木) 00:41:06.78ID:yPIN+dBS
だから、メインスレッドがbusyっていってんだから、負荷の原因はそのメインスレッドの処理が主で、そのメインスレッドの実行をOSが強制的に停止して他のスレッドに割り当てるんだから
2021/01/07(木) 00:41:31.32ID:PM727nrP
>>418
???
そもそもCPU使用率が100%なんて前提は誰も話してないわけで(まぁOSのタスクスケジューリングさえなんとか稼働してりゃ例に出したコードは動くが)
机上の空論はいいからコードで示して
2021/01/07(木) 00:50:04.29ID:PM727nrP
あと面倒だけど確認の為にソースおさらいしてきた
WebBrokerの送受信はTThreadから派生したTidThreadが担当してて立派にメインスレッドの子スレッドだった事をお知らせしておきます
423デフォルトの名無しさん
垢版 |
2021/01/07(木) 00:51:53.74ID:sNfaNTws
メインスレッドがbusyってどんな状態?
もしかして、*****中って表示されてる事?
それならあなたの言う通りです。


ウィンドウが真っ白、無応答時のCPU負荷見てみて。
Windows95だとマウスすら動かんかったわ。
424デフォルトの名無しさん
垢版 |
2021/01/07(木) 00:55:48.92ID:sNfaNTws
>>422
嘘はいけないよ
2021/01/07(木) 00:59:01.61ID:yPIN+dBS
>>423
君嘘はいわないでね
君は>>407でPPLなら大丈夫といってるんだけど
2021/01/07(木) 01:00:53.79ID:yPIN+dBS
君が勝手に想定する状態でもPPLなら大丈夫っていってるんだけど
どういうことなの?
2021/01/07(木) 01:08:10.16ID:PM727nrP
>>424
だから嘘だと言うならソコード示してって
2021/01/07(木) 01:08:41.78ID:PM727nrP
ソコードってなんじゃw
コードね
2021/01/07(木) 01:10:13.52ID:PM727nrP
>>425
407だけどアンカー間違いだよね?
2021/01/07(木) 01:11:03.96ID:yPIN+dBS
>>423の君なんか勝手に前提コロコロ変えすぎだろ

>>407の時はPPLなら大丈夫とかいってて、

>>423では
>ウィンドウが真っ白、無応答時のCPU負荷見てみて。
>Windows95だとマウスすら動かんかったわ。
の時でもPPLなら大丈夫なんだろ?

それとも前提を大幅に変えたから>>423ではPPLは駄目になったの?
431デフォルトの名無しさん
垢版 |
2021/01/07(木) 01:11:50.55ID:sNfaNTws
>>426
面倒くさいのでこれが最後ね
PPLは並列プログラミングライブラリーの略で、スレッドを複数のCPUに振り分けて高速化が出来る。
通信スレッドでPPLを使う事は通常少ないと思うが、PPLを使い子プロセスを実装した場合はメインスレッドとCPUが違うので取りこぼしは無いって事。

因みにこのスレはDelphiユーザーが多いからか、話が噛み合わない、日常的にマルチスレッドアプリを作成してるC++builderでした。

おやすみ
2021/01/07(木) 01:13:00.20ID:PM727nrP
いやだから逃げる前にコードをー・・・
2021/01/07(木) 01:13:09.84ID:yPIN+dBS
>>429
ごめん、間違えた
>>407じゃなく>>408
2021/01/07(木) 01:13:55.72ID:PM727nrP
受信用にスレッド作る
メインで全部やると取りこぼす可能性がある
ってだけの話が何故ここまでこじれるかなぁ
2021/01/07(木) 01:16:44.70ID:PM727nrP
>>431
>CPUが違うので

ダウト!
どのスレッドがどのCPU(論理コアか??)使うかはOSのタスクスケジューラーが決める事で違う論理コアか同一論理コアかは一般的なWin32アプリケーションでは意識することができない
2021/01/07(木) 01:23:47.23ID:aDgUeF3/
すげえC++BuilderでPPL使うとCPU使用率100%の壁突破して動けるのか
未来技術やんけ
437デフォルトの名無しさん
垢版 |
2021/01/07(木) 06:24:47.98ID:hT+jKrlH
なんでメインスレッドがbusy=cpu使用率100%前提で話しているの?

メインスレッドbusyっていうのはメインスレッド側の処理が手一杯で受信処理に時間が割り当てられず
取りこぼしてしまうような状態を言うんでないの? 
一つのスレッドがCPU食い潰して他のスレッド止めてしまうのはもはやバグの類だろう
438デフォルトの名無しさん
垢版 |
2021/01/07(木) 06:44:54.69ID:hT+jKrlH
コード実行時のタイムスケジュールの問題とハードウエアであるCPUのリソースの問題を混ぜこぜにして論ずるからこんなことになる。
シーケンサ、乱暴に言ってしまえばプログラマブルリレー回路の出力信号の受信の話だから前者の話だと思うんだけどな。
せいぜい数ms程度の信号でしょ 
2021/01/07(木) 14:24:42.44ID:iqEdBFD0
なんかやけに伸びてるな
10年近くC++Builder使ってるけど>>431が何を言っているのか理解が追いつかん
2021/01/07(木) 21:39:31.17ID:3QA7toxp
ざっと読んでみたけどPPLの並列スレッドとメインスレッドからCreateしたTThreadは別物って考えてそうだね。
メインスレッドのビジー状態が子スレッドを引きずるってTThread.Createで実行するかSynchronize内で実行しないとそんな事にはならないんだけども。
むかーしそれこそDelphi使い始めた頃、TThread.Create内にスレッドでやりたい処理書いちゃって応答なしになったの思い出したわ。なつかしいな。
2021/01/08(金) 07:33:08.43ID:nf9CXDv3
そもそも>>397は負荷を聞いてて
アプリケーションのフリーズの話はしてない

メインVCLスレッドでも別スレッドでも同じ処理の負荷は変わらない
もし割り込みなし、OSのタイムスライスも気になるレベルで
入力監視がしたいと言うなら
sleepもなしにビジーウェイトを全力で回し続けるという事で、
そのスレッドはコア一つを可能な最大限まで食いつぶす
スレッドの優先度を上げれば取りこぼしや遅延が減る代わりに
他のプロセス、スレッドの実行に支障が出る可能性がある

そんだけの話では?
質問が言葉不足で意図や前提条件が不明だから本当に欲しい答えは分からんけど
2021/01/08(金) 10:09:57.74ID:pqOuylpr
>>441
そんな実装メインスレッドでやったらそれこそずっと応答なしのアプリが完成するわ
2021/01/08(金) 10:11:08.99ID:GVXTbeyU
どうやったら応答しないアプリを作れるか考察するスレですね
2021/01/08(金) 15:11:32.92ID:gj5d/kIu
>>396
TValueListEditor と RTTI を使えば
GUIはほったらかしが可能かも
2021/01/10(日) 16:47:14.22ID:YM2bPyCT
Turbo Pascal 6.0(pc98)流したら嬉しい?
2021/01/10(日) 17:32:11.28ID:fr5GfUjj
>>445
流す、とは?
2021/01/10(日) 18:38:31.06ID:7jcMDU2L
流すのはトイレかそうめんぐらいしかない
2021/01/10(日) 18:50:01.17ID:mPqKhk55
背中もお願いします
2021/01/10(日) 19:59:15.57ID:LDe5rN+a
>>445
ありがとう
450デフォルトの名無しさん
垢版 |
2021/01/11(月) 01:31:52.59ID:DVSPXgZF
Kylix3なら封も開封して無いのが内にあるぞ
使えねー
2021/01/11(月) 14:46:44.02ID:jR/gx3T3
ディスク壊れてた
2021/01/12(火) 15:31:20.64ID:5cL+u1HJ
SQLサーバーからデータを読み込んでExcelの表を作るソフトを作ろうと考えています。
会社のPCにDelphi10.4が入っています。
すごくざっくりした質問なのですが標準のVCLの機能だけで作れますでしょうか?
DelphiからExcelを扱うのは練習してできるようになりました。
出来るか出来ないかならできるという答えなのでしょうが、この程度の質問をするような
レベルの人間にはハードルが高すぎますか?
2021/01/12(火) 15:43:48.11ID:j/YjggYo
>>452
簡単
むしろ元々そういうDBのフロントエンド開発ツールだった
2021/01/12(火) 15:45:57.35ID:j/YjggYo
何をやろうとしていて
今はこうやってるけど
ここの動作ができないので方法を知りたい
またはここでこういうエラーが出る

みたいな情報があれば優しい兄貴達がメッセージくれるよきっと
2021/01/12(火) 16:22:19.37ID:I6fF/sQE
でもこんな頭の弱い人が作ったプログラムを使わされる方、もしくは辞めたり移動した後にメンテされられ方にとっては迷惑なんだよ
456452
垢版 |
2021/01/12(火) 17:07:33.71ID:5cL+u1HJ
ありがとうございます。
ぼちぼち調べながらやっていきます。
また、質問させてもらうと思いますがよろしくお願いします。
自分の勉強の為なので、周りには迷惑かけるような事には
ならないと思います。
ご心配どうもです。
457デフォルトの名無しさん
垢版 |
2021/01/12(火) 19:24:04.36ID:dZe4Jb1o
>>456
初めはみんな、そんなもんだよ。
続ければそれが経験になる。
2021/01/12(火) 22:25:33.13ID:j/YjggYo
>>456
がんばれー
459デフォルトの名無しさん
垢版 |
2021/01/13(水) 00:30:16.80ID:bv7dWCc1
>>452
Excelだけで作れるし下手したらプログラムすら必要ないだろ
頭悪いの?
2021/01/13(水) 09:36:17.06ID:++3RBKQw
>>459
こういうバカっていなくならないよねw
2021/01/13(水) 17:28:25.54ID:XY6XuwJD
>>460
上司にクソコード怒られてイライラしてるんだよきっと
2021/01/13(水) 17:30:18.19
まぁどっちの気持ちもわかる
2021/01/13(水) 17:35:13.75ID:Mb95xbD5
TListViewのヘッダが白くなるバグ回避法教えてよ
2021/01/13(水) 17:50:37.60ID:OOEmtSqw
OwnerDrawで塗りつぶし処理実装すりゃいいんじゃね
2021/01/13(水) 17:53:22.33ID:Mb95xbD5
>>464
ヘッダの色を変えるならそれでいいんだけど
デフォでヘッダが真っ白になっててアレ
どうやらOSの設定に依存しているみたいって事がわかったんだけど
Win10の場合どこでその設定があるのかがわからない

TListViewのヘッダの色に影響するWin10の設定教えてエロくさい
2021/01/13(水) 18:04:52.43ID:Mb95xbD5
ちな、TStringGridの固定セルも同様にデフォで白になっとぇr
設計時にTStringGridやTListViewを貼り付けたら既に白
それでexeを作成し実行しても白なんだけど、
別のPCで実行するとちゃんとヘッダに色がついてるのでOS設定っぽい
何か気が付いたらこんなんなってた何時設定かえたんだろか
2021/01/13(水) 18:17:32.16ID:OOEmtSqw
自分でどっかのプロパティいじった結果ならまっさらなプロジェクトで最初から作り直せばいいんじゃね
2021/01/13(水) 19:09:29.35ID:d1Rkm+bX
TListviewの諸問題にはもしtsReportで使ってるなら
いっそVirtualTreeviewなどに乗り換えるのも一つの手
TListviewの描画遅いし
469デフォルトの名無しさん
垢版 |
2021/01/13(水) 20:58:05.24ID:+S7gAlIH
10.4.1のTSpeedButtonおよびそれに派生するバグの件
470デフォルトの名無しさん
垢版 |
2021/01/13(水) 21:02:26.10ID:+S7gAlIH
10.4.1のTSpeedButtonおよびそれに派生するバグの件
QCのコメントが荒れてて、Marco Cantuが釈明する羽目になってるな。
Marcoはβテストに参加してくれといってるが、フリーソフトコミュじゃあるまいし
仕事でDelphiを使っててその開発上でバグに遭遇して困っているわけで、
俺たちはバグFixを期待してサブスク料を払ってるんだという突っ込みは当然だよな。
2021/01/13(水) 21:43:58.51ID:72pGagZC
>>465
2009の設定だけど

プロジェクト→オプション→アプリケーション→ランタイムテーマを有効にする のチェックを外したら「昔ながらの表示」になった
2021/01/18(月) 20:25:38.96ID:Hfw9auVI
超基本機能のデグレのバグ指摘したらβテストに参加せよって
なんてメーカーだよ
今は何人が作ってるんだっけ?
2021/01/18(月) 23:45:51.46ID:s11ixUhB
アメリカ人
2021/01/21(木) 17:45:55.62ID:5uOPQELD
良い
https://i.imgur.com/MGtfM4X.png
https://okoneya.jp/font/download.html#dl-gemn
2021/01/23(土) 17:02:57.42ID:j761FKKd
>>20
メモリーリークを防ぐためにParentを指定するというのは、どうやってやるのですか?
2021/01/23(土) 20:04:23.97ID:cQOSINeL
ParentじゃなくてOwnerだなぁ
Thoge.Create(AOwner);
AOwnerが破棄される時に一緒に破棄される(はず)
俺はなんだか気持ち悪いからCreateした物は明示的にどっかで破棄してるけど
2021/01/24(日) 01:46:16.84ID:OkXYdm3O
>>476
ありがとう
2021/01/28(木) 00:28:57.27ID:/eIE0m5X
レンタルサーバーのMySQLに接続したいのですがFDConnectionにSSHのパスフレーズを書く場所ってどこでしょうか.
よろしくお願いします。
479478
垢版 |
2021/01/28(木) 00:31:26.38ID:/eIE0m5X
すみません、途中で送ってしまいました。
そもそも接続に使うのはFDConnectionでよかったでしょうか。
2021/01/28(木) 00:51:39.09ID:hXwW1wFB
>>478
http://docwiki.embarcadero.com/RADStudio/Sydney/ja/MySQL_%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%B8%E3%81%AE%E6%8E%A5%E7%B6%9A%EF%BC%88FireDAC%EF%BC%89
481478
垢版 |
2021/01/28(木) 10:28:21.01ID:/eIE0m5X
有難うございます。
私に知識がなくMySQL Workbenchで接続ができたので、MySQL Workbenchと比べて設定内容が
違うので戸惑っている現状です。
>>478の質問以前に理解してなさすぎとわかりました。
(ネットの知識もあまりありません。)

MySQL WorkbenchとFDConnectionの比較になるのですが確認と質問をさせて下さい。 
私が借りているサーバーのことをAサーバーとさせてもらいます。
1.ServerはAサーバーのIPアドレス?
2.MySQL Workbenchにはデータベースのホスト名とデータベース名を設定するのですが
  FDConnectionではデータベースのホスト名はどこに書くのでしょうか?
3.Aサーバーへの接続時のユーザー名とパスワードはどこに書くのでしょうか?
4.教えていただいたヘルプにはSSLの事が書いてあったのですが、SSHでの接続はできないのでしょうか?

長くなって申し訳ないですがよろしくお願いします。
2021/01/28(木) 10:48:33.00ID:hXwW1wFB
>>481
SSH TunnelとFireDACのMySQL接続は全く別の機能
何某かのSSH Clientコンポーネント(またはSSH Tunnel機能を持つSSHクライアントソフト)でサーバーにSSH接続してlocalhoatへFireDACを接続する

どこに書くのでしょうか?とか丸投げしてないでちょっとは自分でトライアンドエラーしよう
2021/01/28(木) 14:45:42.45ID:/eIE0m5X
>>482
有難うございます。
丸投げしたつもりはないのですが申し訳ないです。
ググってもDelphi関係は英語ばかりでMySQL Workbenchの説明を見ながら何とか接続できた感じなので
FDConnectionのテストで全然接続できなくて何が間違えているのかさえ良くわからなくて質問させてもらいました。
自分の知識ではだめそうなので他の手を考えます。
ありがとうございました。
2021/01/28(木) 17:17:16.92ID:/fB2idDN
初心者スレなんでいいと思うぜ
回答してくれる人がいるかは別だが
485481
垢版 |
2021/01/29(金) 15:09:24.05ID:08mxf/Xc
>>482さんの
何某かのSSH Clientコンポーネント(またはSSH Tunnel機能を持つSSHクライアントソフト)でサーバーにSSH接続してlocalhoatへFireDACを接続する

をもとにググりまくってなんとか外部サーバーのMySQLと繋ぐことが出来ました。
ありがとうございました。
2021/01/29(金) 15:27:17.80ID:v1y4KIIs
>>485
おめでとう
頑張ればできる
2021/01/29(金) 22:59:53.84ID:7ZkjE6Dj
10.3だけどListViewのGroupsってクリアしちゃまずいの?
クリアしてもIDの値がリセットされずに増え続けて
このあやしいIDをListViewItemのGroupIDに割り当てると項目が表示されなくなる

ListView1.Groups.Clear;
var gi := ListView1.Groups.Add;
// gi.ID => 0
ListView1.Groups.Clear;
gi := ListView1.Groups.Add;
// gi.ID => 1
ListView1.Groups.Clear;
gi := ListView1.Groups.Add;
// gi.ID => 2

この現象のせいで外部ファイルを読み込んでGroupsを(再)構成するというやり方が破綻する
Clearする前なら設計時のGroupsを使ったり動的にAddしていっても正常に動作している

今はClearせずにGroupsを検索してすでにあったらその項目を使い回すというコードでしのいでいるけど実質的なメモリリーク状態になっている
2021/01/30(土) 01:19:38.77ID:fQLcTFFI
ソース見て何してるか調べたほうが早いのでは
2021/01/30(土) 09:51:46.34ID:LGk+5gcn
>>487
なんかバグっぽいね
ListView.Groups.Clear したら NextGroupIDは1に設定されるのに
Groups.Addしたら反映されずCrear前のGroupID + 1になってしまう
2021/01/30(土) 10:01:14.58ID:LGk+5gcn
>>489
と書いた後にソース見たんだけど

ListView.Groups.Clear じゃなくて ListView.Groups.ClearAndResetID を使えば
IDも0にリセットされるのに気付いた。
2021/02/01(月) 09:36:39.55ID:utVqb3+S
そういう仕様か
2021/02/02(火) 01:05:38.43ID:7g9y5NW4
Delphi10.4を使っています。
TEditにデータを入力してからMySQLに対してTFDQueryでSQL文を実行しています。
SQLは実行はできてデータベースも更新されるのですが、DBGridが真っ白になり表示がされません。
そこでSQLを実行した後に下記のようにしています。

FDQuery1.ExecSQL;
FDQuery1.sql.text := 'select * from DB_hoge';
.FDQuery1.open;

これでDBGridに表示はされるのですが、皆さんもこんな感じですか?
また、これだと先頭行に選択行が行ってしまいます。
例えば10行目の内容変更後も10行目が選択された状態にするにはどうすればいいでしょうか?
よろしくお願いします。
2021/02/02(火) 05:07:12.22ID:lxj5XU1q
>>492
どーしてもSQL文でやりたい場合

procedure hogehoge;
var
Qry : TFDQuery;
begin
Qry := TFDQuery.Create(nil);
try
Qry.Connection := FDQuery1.Connection;
Qry.SQL.text := 'update nantoka kantoka';
Qry.ExecSQL;
finally
FreeAndNil(Qry);
end;

if FDQuery1.Active then begin
FDQuery1.Refresh;
end else begin
FDQuery1.Open;
end;
end;
2021/02/02(火) 05:09:47.68ID:lxj5XU1q
>>492
FDQueryの関数を使う場合

procedure hogehoge;
begin
FDQuery1.Edit; //DBのカーソルを編集したいレコードに合わせる事
FDQuery1.FieldByName('fugafuga').Value := something;
FDQuery1.Post;
end;
2021/02/02(火) 05:10:33.84ID:lxj5XU1q
トランザクションとかその他の面倒な事はすべてすっ飛ばしてるから適宜追加して
2021/02/02(火) 06:03:32.97ID:XgMLtpK0
>>492
既存行の状態を管理したいならTBookmarkを使えばよいかと思う
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況