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

■ このスレッドは過去ログ倉庫に格納されています
2021/09/24(金) 11:16:27.40ID:gP9hkwVT
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、もしくは
質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。

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

■ Delphi 11
http://www.embarcadero.com/jp/products/delphi

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

<前スレ>
くだすれDelphi(超初心者用)その58【Embarcadero】
https://mevius.5ch.net/test/read.cgi/tech/1583919039/

■ 便所の落書きレベルの個人的な悪口やきつい言葉(氏ねとか)は禁止だからな。
■ Embarcaderoヲッチャ的な内容も歓迎だ。

■ 誰も立てないから立てた。さあ語れ。
2022/03/26(土) 12:23:04.02ID:ZxvtMkkN
Ruby on Rails なんて、
WSL2, Docker, Kubernetes, AWS Fargate, CircleCI, Github Actions とか、
主にDocker技術だけど、無数にサンプルがある

YouTube で有名な、雑食系エンジニア・KENTA のサロンでは、
初心者が1年で、10年以上のプロよりも上になるから、
そこで、Go へ転職すればよい

キャリアパスは、Rails → Go のみ

でも、GithubのコピーのGitlab は、時価総額2兆円だけど、
RailsからGoへ移行しない事を宣言している

GithubはGoへ移行するけど
2022/03/26(土) 17:44:09.51ID:lYNbpAWh
バカはバカ同志、俺もバカに交れティー
2022/03/27(日) 10:53:25.49ID:ENT40RJM
Delphi→C#ってコンバーター有るのな
C#に変換したらC#→VB.NETへのコンバーターで最終的にVB.NETに移行出来るな
2022/03/27(日) 16:42:26.33ID:vuAOgna9
どのくらい正確にコンバートできるの?
結局、手直し地獄になりそうな気がするけど
2022/03/27(日) 17:28:41.27ID:ENT40RJM
>>352
手直しは発生するだろうね
C#の時点でどの程度発生するか、だろうけど
2022/03/27(日) 19:59:19.99ID:XcOgurrs
その努力はヘルスバーグ殉教者として報われるであろう
2022/03/27(日) 23:46:07.11ID:vDrxftRa
>>348
>必ず反応する馬鹿をからかうと楽しいな
休日にそれしか楽しみがないのか、自宅警備員のアホは大変だな。
2022/03/27(日) 23:49:50.43ID:yCopo4/q
もっとやれやれ
HSPのような地獄絵図見たいな
357デフォルトの名無しさん
垢版 |
2022/03/28(月) 02:27:30.51ID:l6hC6CKS
ほら、反応した
やっぱり必ず反応する馬鹿をからかうのは楽しい
2022/03/28(月) 20:31:29.55ID:BQ2/39ik
>>357
>やっぱり必ず反応する馬鹿をからかうのは楽しい
こっちもアホをからかうのは楽しいぞ、周りにアホはいないからな。
まっ引きこもりの馬鹿なんて、普通は接点なんてないからな。

お前知っているか、外では桜が咲いているんだぞ。
引きこもりのお前には関係のない話しだなw
359デフォルトの名無しさん
垢版 |
2022/03/29(火) 03:33:51.50ID:Al8lhx+b
必ず反応する馬鹿は自分の周りのことが他人全てに通用すると思っているから馬鹿たる所以だ
こういう馬鹿をからかうと楽しい
2022/03/29(火) 21:51:01.05ID:+dEesIdK
>>359
>他人全てに通用すると思っているから馬鹿たる所以だ
ムキになるなw アホは直ぐにムキになるからなw

お前の所はまだ桜が咲いてないのか?じゃ東北か北海道だな。
リストラされて田舎に帰っているのか?

親も大変だな子供の事が恥ずかしくて、近所に合わせる顔がないだろう。
あっ!お前の「引きこもり」は親に言われてやっているのか?
361デフォルトの名無しさん
垢版 |
2022/03/30(水) 03:40:05.05ID:CjCVZGiD
必ず反応する馬鹿はやっぱり自分勝手な幼稚な発想しかできんのだな
馬鹿は結局馬鹿ってことだな
2022/03/30(水) 14:19:22.80ID:YdlWTXYi
お前ら、もういい歳のはずなのに延々と何やってるんだよ・・
2022/03/30(水) 22:16:23.48ID:G7/v6Wes
>>361
>必ず反応する馬鹿はやっぱり自分勝手な幼稚な発想しかできんのだな
最近ムキになって怒るな、図星か?

しかし「自分勝手な幼稚な発想」で馬鹿って、お前酷くないか?
「発想」しただけで馬鹿って、よくそんな人が傷つく事を書き込めるな
人間性を疑うは最低の人間だな。

あと >幼稚な発想
の「幼稚」って俺が前に書いた
>Delphi「使い」ってなんだ、幼稚か?・小学生か?馬鹿が。
の「幼稚」を気にしていたのか?根に持つなよ幼稚だなw
364デフォルトの名無しさん
垢版 |
2022/03/31(木) 03:01:07.72ID:gDEVmBVL
必ず反応する幼稚な馬鹿をからかっていると楽しいな
文字数が悔しさのバロメーターで笑える
2022/03/31(木) 08:35:29.46ID:gdVXGjBZ
常々の疑問だが実行時エラーの「範囲チャック」、「オバーフローチャック」
入れるとまともに動かないの何故、20年間改善する気無いんだが
これ言うと向きになる遣るがこれも判らん
2022/03/31(木) 09:51:04.37ID:lpfaAiIR
チャックだからじゃね?
2022/03/31(木) 10:32:49.36ID:gdVXGjBZ
いまだRegisterClassの解放が治ってないし
RTLのバッチがまともに動かんが
20年放置しやがって
368デフォルトの名無しさん
垢版 |
2022/03/31(木) 11:32:11.40ID:2lKIRJxT
悪行ポイントが追加されます!
2022/03/31(木) 16:06:13.98ID:GburQu6G
>>367
Delphi1 からのユーザーだが、RegisterClass で困ったことはないが。
2022/03/31(木) 19:09:38.04ID:gdVXGjBZ
Delphiで昔から疑問があるがprivateで宣言されてるmessageは何故inherited読み出せる?
たとえば
procedure TPageControl.WMLButtonDown(var Message: TWMLButtonDown);
var
DockCtl: TControl;
begin
inherited ←これ使えるのが不思議?

メッセージだけプライベートでも継承できる不思議
根本的に知識欠如が有るかしら独学だからな
2022/03/31(木) 19:35:52.82ID:gdVXGjBZ
procedure TPageControl.WMLButtonDown(var Message: TWMLButtonDown);
var
DockCtl: TControl;
begin
inherited ←ここにブレークして継承に飛ぶのか
飛ぶよね

procedure TPageControl.WMLButtonDown(var Message: TWMLButtonDown);
var
DockCtl: TControl;
begin
inherited WMLButtonDown;←これコンパイルエラーになるね

たとえば
procedure TForm1.FormShow(Sender: TObject);
begin
inherited
end;
でコンパイルは出来るがコードは作成さえないな
根本的にinheritedは無敵アイテム?
2022/03/31(木) 19:38:35.58ID:gdVXGjBZ
すみません
くだらない事を連投してすまん。
2022/03/31(木) 19:41:44.34ID:gdVXGjBZ
procedure TForm1.FormShow(Sender: TObject);
begin
inherited
end;
は継承する者が無いからコード作成されないのは当たり前だが
374デフォルトの名無しさん
垢版 |
2022/03/31(木) 20:46:12.25ID:2lKIRJxT
チャックマン煩い
2022/03/31(木) 21:06:48.10ID:gdVXGjBZ
不思議です
VCL,RTLのメッセージ関連はどうして多様に継承してるのにprivateにしてprotectedにしなかったんだろう
結局inheritedで継承出来てしまうのに?
2022/03/31(木) 22:28:21.47ID:NGj5aU+h
>>364
>文字数が悔しさのバロメーターで笑える
お前は悔しいのか?やっぱりアホは大変だなw
こっちはアホの相手だから悔しいとか思ってもいなかったわw

明日から新しい年度だ、少しは仕事する気になったか?ニートも退屈だろう?
東北だと外はまだ寒いから家にいるのも悪くはないと思うが、周りの人間は迷惑だと思っているぞw
ひねくれたお前の性格だ、真面目に家庭内暴力だけはやめろよ。
2022/03/31(木) 23:55:51.41ID:ARCWBDb2
スレタイ100回音読しろ
378デフォルトの名無しさん
垢版 |
2022/04/01(金) 02:25:42.19ID:orVLw8Jp
必ず反応する馬鹿をからかうと楽しい
2022/04/01(金) 14:56:34.13ID:15AoAGxM
変な奴が住み着いてしまったなぁ
2022/04/01(金) 22:15:44.88ID:zHXJpqd2
>>378
>必ず反応する馬鹿をからかうと楽しい
馬鹿のクセに楽しいかw 昼間起きていたらもっと楽しいぞw
いいな引きこもりは、こんなのでも楽しいのかw
2022/04/01(金) 23:41:46.63ID:pkXBmuLX
なんかこんな流れの中ですみませんくだすれな質問です
検索ループ中に Esc が押されたらダイアログを出して OK ならば処理を中止したりしているのですが
if (0>GetKeyState(VK_ESCAPE)) then
if MessageDlg('中止しますか?',mtConfirmation,mbOkCancel,0)=mrOk then exit;
このときキャンセルボタンをクリックするか X ボタンで閉じると意図した動作(処理を続行する)になるのですが
ダイアログを Esc キーで閉じようとするとまたこのダイアログが出てきてしまいます
フラグを立てて
if NowEsc and (0>GetKeyState(VK_ESCAPE)) then
などとしても同様だったりダイアログ自体出なくなったりと泥沼にはまっています
普通はどのような処理を行うものなのでしょうか?
2022/04/02(土) 00:32:29.84ID:hGTjsl3r
>>381
フラグを使うだけだと MessageBox を表示した瞬間にダイアログ側で ESC キー押下イベントが処理されてすぐ閉じられてしまう。
MessageBox を表示する直前に Application.ProcessMessages を呼んで未処理のキーイベントをすべて消化しておくと期待通りに動作する。
Application.ProcessMessages を呼ぶと UI の全てが操作可能になるので事前に Form の Enabled を False する等しておく必要がある。

procedure TForm1.Button1Click(Sender: TObject);
var
 Flag: Boolean;
begin
 Enabled := False;
 try
  Flag := False;
  while True do
  begin
   if GetAsyncKeyState(VK_ESCAPE) and $8000 <> 0 then
   begin
    Application.ProcessMessages;
    if not Flag then
    begin
     // ESC キーが押された
     if MessageDlg('中止しますか?', mtConfirmation, mbOkCancel, 0) = mrOk then
      Exit;
    end;
    Flag := True;
   end else
    Flag := False;
  end;
 finally
  Enabled := True;
 end;
end;
383デフォルトの名無しさん
垢版 |
2022/04/02(土) 04:40:50.84ID:rdS8gVmP
必ず反応する幼稚な馬鹿
2022/04/03(日) 11:54:52.41ID:qO50V8jN
>>382
ありがとうございます上手くいきました
Application.ProcessMessages は入れていたのですがフラグと Application.ProcessMessages の位置が
微妙にダメだったようです
2022/04/21(木) 10:35:19.33ID:8x53L1K+
Delphi初心者です
将棋を作りたいんですがちんぷんかんぷんです。
コンポーネントはパネルを使いその上でイメージを敷いて動かしたいと考えてます。
何卒お助け下さい…
2022/04/21(木) 12:01:17.95ID:H/Tnjm7E
こうやったけどだめでしたどこに問題がありますか?
ってコードを見せられるようになったらいくらでも聞いて
2022/04/21(木) 21:52:57.74ID:g/zXK8Pz
終わりかけのIEとIEモードを操作するコードを書いています
いろいろなサイトを回りpDocが少し変そうですが警告はでますが一応動作はしてます
おかしなところがあれば教えてください

var
hIE_S:HWND;
AMsg:Cardinal;
iRes:Cardinal;
pDoc:IHTMLDocument3;
Doc2:IHTMLDocument2;
Doc3:IHTMLDocument3;
begin
hIE_S:=Internet Explorer_Serverを探してくる

AMsg := RegisterWindowMessage('WM_HTML_GETOBJECT');
SendMessageTimeOut(hIE_S, AMsg, 0, 0, SMTO_ABORTIFHUNG, 1000, iRes);
if ObjectFromLresult(iRes, IHTMLDocument2, 0, pDoc) = S_OK then begin
Doc2 := pDoc as IHTMLDocument2;
end;

AMsg := RegisterWindowMessage('WM_HTML_GETOBJECT');
SendMessageTimeOut(hIE_S, AMsg, 0, 0, SMTO_ABORTIFHUNG, 1000, iRes);
if ObjectFromLresult(iRes, IHTMLDocument3, 0, pDoc) = S_OK then begin
Doc3 := pDoc as IHTMLDocument3;
end;

このあとはDoc2とDoc3を使って操作

end;
388デフォルトの名無しさん
垢版 |
2022/04/22(金) 02:22:17.50ID:YzPdyhSS
>>387
おかしいのはこんな所で聞くお前の頭だと思うよ
2022/04/22(金) 17:33:56.83ID:C2KIUZWt
>>387
その手法を使ったことないから処理には特にコメント無いけど
MSHTMLオブジェクトを扱うならOleInitialize、OleUninitializeが必要じゃないかな。
アプリケーションの開始と終了の時でいいからここに書いてないだけかもしれんけど。
あとマルチスレッドならスレッドごとの開始と終了の時にも。
2022/04/23(土) 15:39:58.73ID:rXMWDxdn
TEdgeBrowserのスクリーンショットでツマってる
もちろんCapturePreviewでできるんだけど
pngで1秒近く、jpegにしても100msくらい時間がかかるだよ

APIを使ってフォームをキャプチャすると真っ白だし

OBSとか、他のウィンドウの裏にあるフォーム上のTEdgeBrowser画面を
問題なくキャプチャしてるんだよな どうやってるんだろ
2022/04/23(土) 16:29:12.21ID:r2Xu9J6g
TEdgeBrowserというかEdgeも含めてDirectX描画ウィンドウのキャプチャをするのには、
俺はAPIのPrintWindowをPW_RENDERFULLCONTENTをオプション引数に設定して使ってるな。
もっと洗練された新しいAPIも複数あるようだけどD3Dを扱うのが面倒だし
上ので十分なので俺は使ったことない。
2022/04/23(土) 16:48:48.76ID:r2Xu9J6g
なおPW_RENDERFULLCONTENT:=2。自作のオートパイロットツールのソースコードそのまま張り付け。改行制限に引っかかって行を詰めたので変なところあるけど適当に修正して。
type TDummyCanvas = class(TCustomCanvas) end;
function CaptureWindowDC(Handle: THandle; Bitmap: TBitmap): Boolean;
function HogeGetWindowRect(Handle: THandle): TRect;
begin
if CheckWin32Version(6, 0) then
DwmGetWindowAttribute(Handle, DWMWA_EXTENDED_FRAME_BOUNDS, @Result, SizeOf(TRect))
else
GetWindowRect(Handle, Result);
end;
var
captureRect: TRect;
const
PW_RENDERFULLCONTENT = 2;
begin
if IsWindow(Handle) then
begin
GetWindowRect(Handle, captureRect);
Bitmap.Width := captureRect.Width; Bitmap.Height := captureRect.Height; Bitmap.PixelFormat := pf32bit;
Bitmap.Canvas.Lock;
try
PrintWindow(Handle, Bitmap.Canvas.Handle, PW_RENDERFULLCONTENT);
TDummyCanvas(Bitmap.Canvas).Changed; //ハンドルを直接操作するのでChangedを明示的に呼び出す。
finally
Bitmap.Canvas.Unlock;
end;
Result := True;
end else Result := False;
end;
2022/04/23(土) 18:22:44.07ID:rXMWDxdn
>>391,392
素早いレスに感謝

PrintWindowについては、検索してたときMr.XRAYさんのサイトにサンプルがあって
最後の引数を「1」(クライアント領域)にして試してダメだったので諦めてた

「2」で上手くいって、CapturePreviewだと毎秒8回キャプチャが精いっぱいだったのが
毎秒12回くらいにはなった。OBSみたいに毎秒30フレームでキャプチャとか難しそう
2022/04/23(土) 18:33:02.26ID:bWDJxvK6
https://qiita.com/i_saint/items/ad5b0545873d0cff4604
コピペ
395デフォルトの名無しさん
垢版 |
2022/04/23(土) 18:37:33.16ID:bWDJxvK6
30フレームやりたいなら
Desktop Duplication API

ウィンドウ単位なら
Windows Graphics Capture使え

ググれば一発やろ
2022/04/24(日) 15:29:10.35ID:g1exot/C
>>394
そこに出てるC++のコードを見たけど自分にはDelphiに移植できそうにない
それにWindows Graphics CaptureのDelphi実装例が検索でヒットしなかった
ヘッダも見つからなかったし
2022/04/27(水) 18:05:01.26ID:xM3+K3n7
Desktop Duplication APIなら簡単じゃない?
398デフォルトの名無しさん
垢版 |
2022/04/28(木) 08:16:37.60ID:vpV6GwZW
Delphi XE で WebカメラからPOSTされてくるデータを受け取るようにしたいんですが、
SOAPサーバー/Indy VCL アプリケーション でプロジェクトを作成して、
TWebModuleのDefaultHandlerAction イベントで Request 引数を処理するだけで良いですか?
(送られて来るのは画像に関するXMLだけで、画像自体は別途ダウンロードします)
2022/04/29(金) 15:26:30.67ID:8O1MsCOh
>>397
デスクトップ全体でなく指定したウィンドウをキャプチャしたいんで

自分の目的はデスクトップの外にフォームを置いて
その上のTEdgeBrowserでライブ映像を再生し
キャプチャしながら画質補正してPaintBoxに表示するってもの

PringWindow(+PW_RENDERFULLCONTENT)で速度以外は
まったく問題ないんだけどね

今はDirectXのサンプル(デスクトップ全体のはいっぱいある)を探しているのと
Windows Graphics CaptureをC++でDLL化してる例があったんで
何とか利用できないかと(ちなみにFMXアプリ)
2022/04/29(金) 21:45:43.81ID:OdKoWt8q
最新のDelphi使ってるの??
で、それにヘッダファイル見つからないの??
他のWinRTの移植を真似て自分で移植できない??
401あぼーん
垢版 |
NGNG
あぼーん
402あぼーん
垢版 |
NGNG
あぼーん
403あぼーん
垢版 |
NGNG
あぼーん
404あぼーん
垢版 |
NGNG
あぼーん
405あぼーん
垢版 |
NGNG
あぼーん
406あぼーん
垢版 |
NGNG
あぼーん
407あぼーん
垢版 |
NGNG
あぼーん
408あぼーん
垢版 |
NGNG
あぼーん
409あぼーん
垢版 |
NGNG
あぼーん
410あぼーん
垢版 |
NGNG
あぼーん
411あぼーん
垢版 |
NGNG
あぼーん
412あぼーん
垢版 |
NGNG
あぼーん
413あぼーん
垢版 |
NGNG
あぼーん
414あぼーん
垢版 |
NGNG
あぼーん
2022/05/06(金) 18:46:33.18ID:tF+bWotq
スレタイ100回読み直せ
416あぼーん
垢版 |
NGNG
あぼーん
417デフォルトの名無しさん
垢版 |
2022/05/06(金) 18:52:53.11ID:v46ztTqb
必ず反応する馬鹿がまだいたのか
418あぼーん
垢版 |
NGNG
あぼーん
419あぼーん
垢版 |
NGNG
あぼーん
420あぼーん
垢版 |
NGNG
あぼーん
421あぼーん
垢版 |
NGNG
あぼーん
422あぼーん
垢版 |
NGNG
あぼーん
423あぼーん
垢版 |
NGNG
あぼーん
424あぼーん
垢版 |
NGNG
あぼーん
425あぼーん
垢版 |
NGNG
あぼーん
426あぼーん
垢版 |
NGNG
あぼーん
427あぼーん
垢版 |
NGNG
あぼーん
428あぼーん
垢版 |
NGNG
あぼーん
429あぼーん
垢版 |
NGNG
あぼーん
430あぼーん
垢版 |
NGNG
あぼーん
2022/05/06(金) 21:49:14.33ID:QzjdfZqR
>>430
うぜぇ…
IP変えるの諦めたんか?w
432あぼーん
垢版 |
NGNG
あぼーん
433あぼーん
垢版 |
NGNG
あぼーん
434あぼーん
垢版 |
NGNG
あぼーん
2022/05/06(金) 22:06:04.18ID:V08VGndV
>>434
うぜぇ…
ID真っ赤にして恥ずかしい奴ww
436あぼーん
垢版 |
NGNG
あぼーん
2022/05/06(金) 22:37:25.38ID:wGIC3Nie
これさー
同じIDで両方だったら良かったのに
つかユーザーたくさんいるじゃん7,8人くらい?
438あぼーん
垢版 |
NGNG
あぼーん
439あぼーん
垢版 |
NGNG
あぼーん
2022/05/06(金) 23:35:35.26ID:fXX4C7UQ
>>437
ID真っ赤にしてる恥ずかしい奴は1人だよw

>>439
うぜぇ…
441あぼーん
垢版 |
NGNG
あぼーん
442あぼーん
垢版 |
NGNG
あぼーん
443あぼーん
垢版 |
NGNG
あぼーん
2022/05/07(土) 00:15:03.98ID:7l2LI9Wk
日付変わってもやってるのか?
あたま大丈夫か?w
445あぼーん
垢版 |
NGNG
あぼーん
446デフォルトの名無しさん
垢版 |
2022/05/07(土) 00:20:22.64ID:NNPG57mN
必ず反応する馬鹿だろ
447あぼーん
垢版 |
NGNG
あぼーん
448あぼーん
垢版 |
NGNG
あぼーん
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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