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

2023/11/23(木) 20:02:10.21ID:KAoTyDwD
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、もしくは
質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。

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

■ Delphi 12
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(超初心者用)その59【Embarcadero】
https://mevius.5ch.net/test/read.cgi/tech/1632449787/
■ 便所の落書きレベルの個人的な悪口やきつい言葉(氏ねとか)は禁止だからな。
■ Embarcaderoヲッチャ的な内容も歓迎だ。
■ 誰も立てないから立てた。さあ語れ。
379デフォルトの名無しさん
垢版 |
2025/04/22(火) 00:10:56.41ID:GyMhIb89
-hide_banner -print_format json -show_format -show_streams
380デフォルトの名無しさん
垢版 |
2025/04/22(火) 04:10:59.84ID:NQ8RJq1o
>>373
オレの真似するお前。
これはいいんだ。
お前は出てけ。
2025/04/22(火) 07:22:47.72ID:kJTRiSDQ
MP4ファイルのビット深度は、主に以下の情報を参照することで確認できます:
コーデック情報:H.265(HEVC)やH.264(AVC)の場合、ビット深度は動画ストリームのプロファイルやピクセルフォーマットに依存します。

ピクセルフォーマット(Pixel Format):yuv420p(8bit)、yuv420p10le(10bit)など、ピクセルフォーマットからビット深度を推定可能。

FFmpegのffprobeコマンド:ffprobeを使うと、動画のメタデータを詳細に取得でき、ビット深度(bits_per_raw_sample)やピクセルフォーマット(pix_fmt)を確認できます。

特に、ffprobeの出力から以下のフィールドを参照:
bits_per_raw_sample:ビット深度を直接示す(例: 8, 10, 12)。

pix_fmt:ピクセルフォーマット(例: yuv420pは8bit、yuv420p10leは10bit)。
2025/04/22(火) 07:24:53.28ID:kJTRiSDQ
ffprobeコマンドでMP4ファイルのビット深度を取得する例:
ffprobe -v error -show_entries stream=bits_per_raw_sample,pix_fmt -of json input.mp4


出力例(JSON形式):
{
"programs": [],
"streams": [
{
"bits_per_raw_sample": "8",
"pix_fmt": "yuv420p"
}
]
}

bits_per_raw_sampleが「8」であれば8bit、「10」であれば10bit。
pix_fmtがyuv420p10leやyuv422p10leなら10bit、yuv420p12leなら12bit。

注意:
一部の古いコーデックやファイルではbits_per_raw_sampleが空の場合があります。その場合はpix_fmtを参照して推定。
H.265では10bitが一般的ですが、H.264でも10bit(High 10 Profileなど)が存在するので注意。
383デフォルトの名無しさん
垢版 |
2025/04/22(火) 19:45:54.53ID:NQ8RJq1o
それDelphiのコードでないよね。
ここの、微妙なスレにこのタイミングで、空気読めない?
384デフォルトの名無しさん
垢版 |
2025/04/22(火) 19:46:48.52ID:NQ8RJq1o
それDelphiのコードでないよね。
ここの、微妙なスレにこのタイミングで、空気読めない?
385368
垢版 |
2025/04/23(水) 05:30:57.09ID:KmGEZqMw
D6でjsonコンポーネントが難儀なので構成はこんな感じでいきました
-hide_banner -v error -i input.mp4 -print_format json -show_streams > Output.json
以下かなり省略です 1レス最大32行と警告食らってしまったので

uses
Delimiter, // 外部関数OrderStr

function TForm1.FFprobeBitdepthPickUp(FullFileName: String) : Boolean;
var
(略)
begin
386368
垢版 |
2025/04/23(水) 05:32:04.61ID:KmGEZqMw
Cmd:='FFprobe 〜(略)' + CacheDir + '〜.json';
Memo.Lines.Add(Cmd);
Memo.Lines.Add('exit');
Memo.Lines.SaveToFile(SaveName); // CacheDir + '〜.bat'
ShellExecute(Handle,'open',PChar(SaveName),'',PChar(ExtractFilePath(Application.Exename)),SW_SHOWDEFAULT);
ListBox_Convert.Items.LoadFromFile(FileName); // CacheDir + '〜.json'
LineMax:=ListBox_Convert.Items.Count -1;
for Index:=0 to LineMax do
begin
Str:=ListBox_Convert.Items[Index];
ib:=Length(Str);
StrA:='';
for ia:=0 to ib do
begin
if ord(Str[ia]) <= $22 then Continue;
if ord(Str[ia]) <= $2C then Continue;
StrA:=StrA + Str[ia];
end;
StrB:=LowerCase(OrderStr(':',StrA,0));
if StrB = 'profile'then Profile:=LowerCase(OrderStr(':',StrA,1));
if StrB = 'codec_type' then CodecType:=LowerCase(OrderStr(':',StrA,1));
if CodecType = 'video' then Break;
end;
BitDepth := 0;
if Profile = 'main' then BitDepth:=8;
if Profile = 'main10' then BitDepth:=10;
if BitDepth <> 0 then Check:=True;
終了時にCacheDirごと一時ファイルをデリート
387368
垢版 |
2025/04/23(水) 05:44:03.69ID:KmGEZqMw
>>381 >382
ありがとう!
とりあえず映像深度の数字だけ欲しかったけど他も参照できる余地を残して
-show_streams 全部を出力させることにしました。
頭悪そうなコードになってしまいましたが
他にも動画情報取得に悩んでいる人にもと
388368
垢版 |
2025/04/23(水) 05:50:36.18ID:KmGEZqMw
リザルトをBooleanにしてるのは他の関係上です
2025/04/23(水) 07:18:29.06ID:o1ve4r3x
>>383-384
お前は仕様を理解せずコードだけ求める馬鹿か?

>>387
GJ !!
390368
垢版 |
2025/04/23(水) 19:47:10.02ID:KmGEZqMw
>386 訂正行 if ord(Str[ia]) = $2C then Continue;

デバックに動画を放り込んでると
'〜.json'ファイルが読み込めない(まだ出来上がってないから)と怒られるケースが出た。
さらに頭悪そうなコードを追加
ListBox_Convert.Items.LoadFromFileの1行を
以下に変更
for ia := 0 to 1000 do
begin
Application.ProcessMessages;
if FileExists(FileName) then // '〜.json'ファイルが存在するか?
begin
ListBox_Convert.Items.LoadFromFile(FileName);
Break;
end;
Sleep(100); // 待機
end;

プロセスの終了まで待機させないといけないからかーとこっちにしてみるも
参照 FDelphi Delphi Users' Forum [Q]CreateProcessのパラメータの使い方がヘルプを読んでもよく分かりません。
ht 〜アドレス貼れなかったので略〜
CreateProcess(Nil,PChar(SaveName),〜(略)
テキストでのバッチファイル実行はShellExecuteと同じ結果。
直接FFprobe実行を指定してみると実行できない?っぽいのだが
CreateProcess(Nil,PChar(Cmd),〜(略)
これは '>' 指定はあくまでバッチファイル用なのかな?と無しでやっても
パスは通ってても'〜.json'ファイルが作られないから進まないという結果に(謎)。
(バッチファイル実行ではFFprobeが無くてもパスが通ってなくて起動できなくても
 0バイト(空)の'〜.json'ファイルが出来るだけなので処理が通過する。)
う〜む
391デフォルトの名無しさん
垢版 |
2025/04/23(水) 19:54:36.08ID:tXAJNIU5
>>389
何言ってんだか
真が無い。
2025/04/23(水) 22:35:19.21ID:o1ve4r3x
>>390
頑張れ
>>391
真て何だ?
393デフォルトの名無しさん
垢版 |
2025/04/24(木) 20:18:54.11ID:KDw3CCba
>>389
で?
394デフォルトの名無しさん
垢版 |
2025/04/24(木) 20:20:42.55ID:KDw3CCba
>>392
アホなんだろうな。
2025/04/24(木) 22:10:01.76ID:ZEuKqFov
CreateProcessでProcessInfoのプロセスハンドルと
WaitForSingleObjectでプロセス終了するまで待機
2025/04/24(木) 22:21:13.58ID:ZEuKqFov
>のリダイレクトはコンソール用だから
CREATE_NEW_CONSOLEフラグ指定したらどうかな
あってるかしらんが
2025/04/25(金) 01:15:19.56ID:WCPLL/xz
プロセス終了待ちは解決しました。
ShellExecuteからCreateProcessに変更
詳細書こうとするとエラー
2025/04/25(金) 01:19:12.56ID:WCPLL/xz
>390 のタイトル先をベースに「プロセスの起動と終了を待つ mam-mam vcl_createprocess」検索先を使用。
「Delphi Programming Object Pascal mrxray」の 500_ 490_ 494_ 各検索先も参照。
RetValBool:=CreateProcess(Nil,PChar('Cmd.exe /C ' + SaveName),〜(略)
2025/04/25(金) 01:21:42.92ID:WCPLL/xz
とコマンドプロンプト起動の引数扱いのCmd.exe監視にしたら待機になりました。
※mam-mamアドレス参照コード内の
「起動待ちでエラー」表示処理部分を使うとエラー表示になって終了するのでごっそり削除。(謎)
2025/04/25(金) 01:23:48.92ID:WCPLL/xz
「黒羽製作所 総合掲示板 真空波動研」スレに管理人さんからレスがあり
H.264ならavcC
H.265ならhvcC
の中のSPSにある、bit_depth_luma_minus8
の部分がBit depth(色深度)と教えてもらいました。
プログラムの読み込みで'hvcC'atom位置までは自力でたどり着けているがそこから内容がイミフ

以下これまでの各参照。
https://
QuickTimeフォーマットの仕様書
→ developer.apple.com/documentation/quicktime-file-format
Video Sample Description 'avc1''hev1''hvc1'等の構造
→ engineering.dena.com/blog/2022/07/hevcplayerview/
 'hvcC'のdata部分は外部に飛ぶ
 → www.itu.int/rec/T-REC-H.265 → pdf
HEVC Video with Alpha Interoperability Profile (Preliminary)
→ developer.apple.com/av-foundation/HEVC-Video-with-Alpha-Interoperability-Profile.pdf
資料が難解で頭沸きそうdeath!
2025/04/25(金) 01:25:27.43ID:WCPLL/xz
以下新規の参照例
https://
ExMP4.Box.Hvcc
→ hexdocs.pm/ex_mp4/0.7.0/ExMP4.Box.Hvcc.html#summary
DelphiのIntegerは32bitで最大4バイトだけど↓2バイトなのか?
non_neg_integer(), ←ビッグエンディアンの?何バイトだろう?
'hvcC'のdata構造はコレで合ってるのかな?
@type t() :: %ExMP4.Box.Hvcc{
 bit_depth_chroma_minus8: non_neg_integer(),
 bit_depth_luma_minus8: non_neg_integer(), ←※この部分?
 chroma_format_idc: non_neg_integer(),
 constraint_indicator_flags: non_neg_integer(),
 level_idc: non_neg_integer(),
 nalu_length_size: non_neg_integer(),
 num_temporal_layers: non_neg_integer(),
 ppss: [binary()],
 profile_compatibility_flags: non_neg_integer(),
 profile_idc: non_neg_integer(),
 profile_space: non_neg_integer(),
 spss: [binary()],
 temporal_id_nested: non_neg_integer(),
 tier_flag: non_neg_integer(),
 vpss: [binary()]
}
バイナリの自己例(どーれーだー頭沸きそう)
bytes: Binary : Data field
4 : 00 00 00 7D : Size
4 : 68 76 63 43 : "hvcC" Atom
 01 02 20 00
 00 00 00 00 ←※2段目が無しという事はないハズなので4バイトじゃないよね
 00 00 00 00 B4 F0 00 FC 00 0F 03 A0 00 01 00 21 (略)
2025/04/25(金) 01:45:42.29ID:WCPLL/xz
>395 396 ありがとう
>397 は何度も書き込み試行で名前欄の文字が変わってしまった。
参照先に解説は無かったようなので試行錯誤してると
バッチファイルを直接起動させずにCreateProcessで
コマンドプロンプト起動の引数扱いで親Cmd.exe監視にしたら待機になりました。
FFprobe利用はセーフネット扱いなので400-401内容で詰まってます。
exeを小文字の実行ファイル名書くとサーバーエラーで蹴られるんですねココ
2025/04/25(金) 12:50:15.56ID:6ZF7QOEI
Delphi CE 11.3のライセンスキレたんで12.1入れたらメニューのプロジェクトクリックしただけで落ちる
しかたないのでVMでWindows11入れてDelphi12.1入れたら問題無かったのでそっちで使う事にするけどなんかもにょる
2025/04/25(金) 16:09:41.50ID:Yet6zdrW
.net関係か?
2025/04/28(月) 23:10:49.07ID:1qNUJnCM
(質問者は368です)
今の対象は"FFmpeg""FFprobe"なのでOSが64bit以外では処理を飛ばしてます。
>398 を応用しTMemoに
Memo.Lines.Add('where FFprobe > ' + CacheDir + 'WhereFFprobe.txt');
バッチファイルとして書き出して
コマンドラインで実行し
function TForm1.CmdExeExists(ExeName,TargetName: String) : Boolean;
RetValBool := CreateProcess(Nil,PChar('Cmd.exe /C ' + ExeName),略
生成されるテキストが0行かどうかで判断させてるのですが
関数化に汎用性を持たせようとすると
昔のXPではwhereコマンドが無いと警告を受けてしまいました。
どのOSから搭載されてるんでしょう?
ググり方「windows where command prompt 何時から 搭載」等が悪いのか
「コマンドプロンプトは昔からあります」みたいなのばっかりレスられてしまう。
次はOSバージョン調べて回避するコードいれないと・・・
2025/04/28(月) 23:13:17.83ID:1qNUJnCM
Windows の保護領域内でiniを作るとWin8以降ぐらいから
OSドライブ名:\Users\[ユーザー名]\AppData\Local\VirtualStore\Program Files [(x86)]\[実行アプリの階層構造〜]\〜.ini
に生成される訳でそれぞれに以下をすると
if FileExists(TargetFullPath) then Count := Count + 1;
自動的に割り振られてしまい実行場所に無くても自動移動先+直接指定で重複カウントされてしまう。
フォルダ個別に存在を調べるコードはありますか?
2025/04/28(月) 23:27:44.89ID:OAf+OdvF
>>405
生成するファイル名が分かっているのにwhereコマンド使う意味が分からない
ファイル検索ならFindFirst関数使えばいいだろうし

>>406
保護領域内でini作らなければいいのでは?
そもそもProgram Files [(x86)以下に設定用のファイルとかを保存するのが良くない
ユーザーフォルダやドキュメントフォルダを取得して明示的にそこに保存するべきだろう
408405 406
垢版 |
2025/04/29(火) 18:09:39.01ID:/fre+7qi
>>407
・質問1 実行ファイルがパス上に存在するか?の調べ方で
探すのは実行できる実行ファイルでWindowsでのパスが通っている所に存在するか?です。
プログラム組んでる自分には他のユーザーの使用環境は分かりません。
現時点で"FFmpeg""FFprobe"は64bitOS専用だからそれ以外はコマンド発行させてないので急いでません。
汎用性を求めるならということでFindFirst と FindNextということですよね?
[ delphi Windows パス取得 ]検索
ん〜 "where" 使う方が楽だなぁ(汗)
------
・質問2 iniファイルの存在と重複をWin10(D6)で調べる方法
>ユーザーフォルダやドキュメントフォルダを取得して明示的にそこに保存するべきだろう
あぁなるほど
最近のソフトがやけに「なんでこんな所に生えてんだ?」と思ってたらそういう回避方法なんですね。
実行場所が複数ある場合の同一iniへのアクセスを防ぐ一工夫がいりますが
そっちの方が楽そうですね。
------
[参照]
817_ディレクトリとファイルのリストとファイル検索
02_FindFirst と FindNext による方法 - Delphi 2009 以前用
http://
mrxray.on.coocan.jp/Delphi/plSamples/817_DirFileListTest.htm#02
2025/04/29(火) 20:33:29.79ID:LDFwfkd6
>>408
質問1について
PATHが通っていることが前提なら、その環境変数を取得して、あとはそのディレクトリに対して存在するか確認するだけじゃないかな
CreateProcessもファイル名だけを指定した場合環境変数に従って探索する
https://learn.microsoft.com/ja-jp/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessa
LoadLIbraryなんかも同様の動作をするはずだし、たぶんwhereコマンドもほぼ同じだろうから、この探索順で同じようにFindFirstなり直接FileExistsで有無を確認すればいいのでは?
(ただしOSのバージョンによってこの順序が若干異なる)
ただ環境によるからって話なら、インストーラ使わずに(つまりパスを通さずに)使っている可能性もあるわけで
自分なら最初からファイル選択ダイアログ(またはフォルダ選択)使ってユーザに選択させるけど

質問2について
回避方法というよりWindowsはその方法を推奨している
プログラム(書き換え不可)とデータ(書き換え可)の分離
410デフォルトの名無しさん
垢版 |
2025/05/09(金) 00:30:36.94ID:mKYQcf6G
一周回ってDelphiもありかな?と思ったがいかんせん価格が高い
2025/05/09(金) 00:41:22.58ID:faN9fJ/K
そんなあなたにCommunity Edition
412デフォルトの名無しさん
垢版 |
2025/05/09(金) 15:05:40.34ID:nZMnhT9J
30周年なんだからもっと長期間割引してくれよ
2025/05/09(金) 16:34:36.53ID:kxBTusdH
v12のAIによるSmart CodeInsight機能ってCommunity Editionでも使えるの?

ここのレビューを見たけど、凄い機能だな
https://qiita.com/igy/items/ae428d294cc7fdf5e387
2025/05/09(金) 22:17:03.67ID:gva2Bjpn
Community Edition は12.1(これも本来は12.0だったのが特別に12.1)で記事では12.2で追加ってなってるからあと数年は先だね
2025/05/10(土) 02:25:10.80ID:X7zF2ttY
そうなのか…
微妙なところで有料版との差が付けられるんだなあ
2025/05/13(火) 16:47:36.24ID:hQgf38NW
割とAndroidのPlayStore条件に合わせて
CEが更新されてる気もするが。。。そうでもないか

前回はSDKの手動更新と
AndroidManifest.xmlの編集を強いられたっけ
417デフォルトの名無しさん
垢版 |
2025/05/14(水) 03:59:28.92ID:GEEECwO5
売れてないのに開発たいへんみたいだけど、会社だいじょうぶか?
2025/05/14(水) 20:47:15.01ID:JhVr5soa
そう言われ続けてもう十年以上経つんじゃない?
2025/05/14(水) 21:25:58.47ID:JrBwOKYR
初めからCommunityをくばっとけば……
2025/05/20(火) 01:32:22.31ID:aeGsHWX4
12.3 のインストーラーが手に入るのであれば、12.2 のライセンスで 12.3 comunity edition をインストールできるのだ。
12.3 のインストーラーを手に入れる公式な手段はないため、普通の人は試せないが。
2025/05/20(火) 18:01:08.80ID:0XZTqg/I
どういうこと?
普通の人以外のためのインストーラーなんてものがあるの?
422デフォルトの名無しさん
垢版 |
2025/05/20(火) 20:48:10.46ID:aeGsHWX4
コミュニティエデイションユーザーは 12.2 のインストーラーしかダウンロードできないのだ。
2025/05/28(水) 14:28:19.64ID:xUYap9Oe
RAD Studio次期バージョン「13」の愛称が決定

先月実施されたRAD Studio次期バージョン「13」の愛称選定で、僅差ながら「Florence」が選ばれました。

Florenceは、日本名では「フィレンツェ」と呼ばれ、日本人にもなじみのイタリアの都市です。愛称には英語名が採用されるため、次期バージョンの正式名称は、「RAD Studio 13 Florence(フローレンス)」となります。
2025/05/29(木) 08:00:10.87ID:Q6b8ILPj
香水の匂いがしそうな雰囲気
425デフォルトの名無しさん
垢版 |
2025/05/29(木) 10:01:07.57ID:eIsozZCt
ポトペタ開発を軽く作る気ねーのかなぁ?この業界
426デフォルトの名無しさん
垢版 |
2025/05/30(金) 18:48:32.41ID:iIh5hIgO
もう13出るの?
この前12になったのにさすがに早すぎないか?
2025/05/31(土) 16:58:59.21ID:I466/7cQ
信者からお布施を集めるために必要なんだよ
そして金を取って信者にバグ潰しさせるw
428デフォルトの名無しさん
垢版 |
2025/06/01(日) 01:10:25.84ID:XatgR+WI
個人向けの商売ではなくて企業向けだろ。
信者なんか関係ない。
2025/06/01(日) 04:12:02.33ID:WaUYP8dA
CEはいまだに12.1だというのに・・・
2025/06/02(月) 13:15:51.10ID:spdoBfJv
>>428
そういうお前は信者w
2025/06/04(水) 01:32:22.88ID:C3fiYg13
CEが12.2になってAI Smart CodeInsightが使えるように
なるのを待ち望んでいるのだが、いつになるのやら
432デフォルトの名無しさん
垢版 |
2025/06/04(水) 11:19:33.76ID:jIb7ZVvb
老舗のCDリッピングツール「CD2WAV32」が約20年ぶりの更新 〜Windows 11専用で甦る
「Delphi 12.1」でUnicode対応、UI・設計のモダン化などを実施

https://forest.watch.impress.co.jp/docs/news/2019313.html
2025/06/04(水) 12:08:11.84ID:MDxupint
今それ貼ろうとしていたわ
Delphiやったんやね
2025/06/04(水) 15:16:57.26ID:uzpoTMBl
64bitでも CD2WAV64 とはならないのか
2025/06/04(水) 18:50:04.91ID:x1edjx1s
突然の更新とかジジイどもが退職し始めたのか?
2025/06/04(水) 19:40:57.42ID:Ac7mCrLT
もろぼし☆らむ氏
ハンドルは昔のママなんだな
FDELPHI でやりとりさせてもらったことがあるけどコードも書き込みかたも
なんというか濃ゆいひとであった
2025/06/04(水) 20:08:56.17ID:gOZJfu0W
>>436
そうか?お前が薄いんだろ?
438デフォルトの名無しさん
垢版 |
2025/06/04(水) 22:29:51.22ID:2viGTK+9
俺はなくなった!
2025/06/05(木) 17:27:13.27ID:SQvFMRJB
今のところあるけど、真っ白になりそう
2025/06/05(木) 18:01:21.49ID:z5q+AMkf
FDELPHI懐かしい
今やお爺ちゃんばっかりw
2025/06/07(土) 14:45:55.34ID:CbGtbyv3
もろぼし☆らむって今ではシワシワすぎるハンドル名だなw
今もうる星好きなんだろうか?
442デフォルトの名無しさん
垢版 |
2025/06/08(日) 00:47:59.17ID:BPZQNbCe
>>441
っていうか、アニメのキャラ名そのままのハンドルネームは著作権的な観点から良くないよな。
2025/06/08(日) 00:52:25.40ID:L5en/gYT
モロダシ☆ボンみたいなHNだな・・・
2025/06/12(木) 16:40:40.91ID:kpruTJfW
10年ぶりくらいにここにきた・・・
流石にBCB5で書いたプログラムを移植しないといかん
なかなかな大手メーカー複数で未だに自分が書いたBCB5のツールをメイン業務で使ってるわ
定年までになんとかしておかんと不味いだろうなぁ
2025/06/12(木) 18:58:36.68ID:K0gJGYFj
>>444
BCB民ならこちらへどうぞ
C++Builder相談室 Part21
https://mevius.5ch.net/test/read.cgi/tech/1353189677/

C++Builderとしては以前よりも良くなってはいるけど人がいないw
2025/06/13(金) 01:16:58.37ID:sOFsn++d
移植もそろそろAIがやってくれそうな気がする
447444
垢版 |
2025/06/13(金) 13:20:58.78ID:mSGsIOqe
>>445
うっは、まだ当時のスレが残ってるw
頭が回る歳のうちに移植しなきゃいけないものは作り直しておこう・・・
2025/06/14(土) 14:26:04.45ID:YZlEn/ao
Delphi 12.1 CE で右ドラッグ&ドロップのコンテキストメニュー(「ここにコピー」「ここに移動」「プロパティ」「WinRAR」などインストールされているアプリの固有メニューなどエクスプローラでの実行時と全く同じ物)をコードで再現したい。

という質問を ChatGPT 、copilot、Claude 3.7 Sonnet、 Gemin Grok 3、 Deepseek にしてみたんですけど
「はい、Delphi言語について日本語で質問できます!」と言いながら

procedure ShowDropContextMenu(AFiles: TStrings; ToFolder: string; X, Y: Integer; HND: HWND);
こんな感じで呼び出したいと進めていっても
どれもみな型違いと未定義の識別子からはじまり煮詰めていっても最後はパラメーター間違いや範囲チェックエラーで行き止まりな感じで
メニューが出た場合でも「ToFolder」(ドロップ先のフォルダ)が反映されておらず「ここにFireFileCopyで移動」などもない

そもそも procedure で済ますのがいけないのかと
「IShellFolder.GetUIObjectOf( IID_IDropTarget ) を取得して、自分で実装した IDropTarget の引数をそのまま転送すればいい」
というのを見たので
ドラッグ&ドロップには The-Drag-and-Drop-Component-Suite-for-Delphi の TDropFileTarget を使っているので
TDropFileTarget の DataObject を使ってゴニョゴニョしてみましたがお手上げでした

オープンソースのファイラーがある!とわざわざ Lazarus をインストールして「Double Commander」を開いてみたのですが右ドラッグは簡易実装しかしていませんでした

何か参考になるサイトかコンポーネントはありませんでしょうか?
2025/06/17(火) 13:39:31.72ID:Zu69+awX
AIに対する訊き方が悪いんじゃない?

Delphi 12.1 CE 版において、エクスプローラで任意のファイルを右クリックした時に
出てくるコンテキストメニューとまったく同じメニューを TPopupMenu で再現するには
Windows のどこの情報を読み PopupMenu のアイテムとして格納すれば良いですか?

と訊いたら詳しく教えてくれたよ (長くなるから回答は省略)
450デフォルトの名無しさん
垢版 |
2025/06/17(火) 16:00:40.16ID:1Ch/dDKp
そこまでやったなら回答も教えてやれよって思う俺は器が小さいんかな?
2025/06/17(火) 16:21:19.46ID:JVeNxe0E
右クリックメニューではなく、右ドロップ時のメニューについて聞かれてるので>>449は質問文から間違ってるだろう
そもそもエクスプローラのコンテキストメニューの出し方はFAQレベルの頻出なので検索すればたくさん出てくる
452デフォルトの名無しさん
垢版 |
2025/07/31(木) 03:01:58.76ID:eVY1OvD8
30年前に欲しかった

X := if Left < 100 then 22 else 45;
453デフォルトの名無しさん
垢版 |
2025/07/31(木) 09:49:22.65ID:T+U6YULJ
if Left < 100 then X := 22 else X :=45; でいいじゃん

:=ですらうざい
全部BASICに戻せよ
2025/07/31(木) 15:30:22.48ID:nx6J3OrU
IfThen 関数とか
2025/08/15(金) 16:21:24.38ID:5u8kxwvi
Communityのライセンス切れたけど更新ないのか…
2025/08/16(土) 09:34:15.84ID:wpc1g/gV
俺もライセンス切れたんで入れ直したが更新無かったから>>403がいまだに解消されないorz
アプリに必要なコンポーネントのコンパイルやインストができないんで辛い
イベントビューアでチェックしたら.NET Frameworkのclr.dllの呼び出しでスタックオーバーフローしてるっぽいんだが…
こういうのどこに報告したらいいんだろう?

障害が発生しているアプリケーション名: bds.exe、バージョン: 29.0.51961.7529、タイム スタンプ: 0x65ffd3d4
障害が発生したモジュール名: clr.dll、 バージョン: 4.8.9310.0、タイム スタンプ: 0x67db4f7d
例外コード: 0xc00000fd
フォールト オフセット: 0x004597aa
フォールト プロセス ID: 0x6D80
アプリケーションのフォールトの開始時刻: 0x1DC0D86129A2D56
Faulting アプリケーション パス: C:\Program Files (x86)\Embarcadero\Studio\23.0\bin\bds.exe
Faulting モジュール パス: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Report Id: fa0522c0-2145-4a44-9855-12f14ad76533
Faulting パッケージの完全名:
Faulting パッケージ相対アプリケーション ID:
2025/08/16(土) 23:03:39.80ID:aTXWX5fT
・ごちゃついた環境変数pathを整理
・「Delphi 手動アンインストール」を実行
・マイドク、C:\Users\Public\Documents以下のRadStudio,Embarcaderoフォルダを削除(リネームして退避)
・再インストール
これ試して駄目ならOSごとクリーンインストールだな
2025/08/17(日) 08:46:09.88ID:isNfOMKw
>>457
それらは前に全部やったけど効果無かったよorz

クリーンインストは最終手段だけどなるべく避けたいんだ
再インストするアプリが多数なうえ課金アプリ複数あるから環境再構築がほんと面倒なのよ
ライセンスコードで台数管理されてるやつはサポートに連絡して一旦台数リセットしてもらわないとならんし
やるならWin11 25H2とかの大型アプデがリリースされたあとでかな

その前にDelphiか.NETのアプグレで回避できるようになるといいんだが・・・
2025/09/11(木) 17:45:27.29ID:9wMhg/CU
Delphi13がリリースされたみたいだけど
CE版はないんだろうか

AndroidPlayでtargetSdkVersionがAPIレベル35以降じゃないってことで
アップデートできずに困ってるんだが
460デフォルトの名無しさん
垢版 |
2025/09/13(土) 16:46:05.78ID:pv5pmOEc
13もう出たのか
12出てからまだ1年そこらじゃないのか?
2025/09/14(日) 11:52:47.69ID:BOAbpqSh
13入れたらリファクタリングがメインメニューでも
ポップアップメニューでも項目が無効な状態で使えない
既存のプロジェクトでも新規でも同じ
リファクタリングを有効にするために必要な事ってなんかあったっけ?
462デフォルトの名無しさん
垢版 |
2025/09/14(日) 13:50:53.66ID:yOrWt/NI
ObjectPASCALの時代は使ってた
20年以上前に同業者にDelphiを執拗に薦められたけど
ホイホイ付いて行かなくて本当に良かった
463デフォルトの名無しさん
垢版 |
2025/09/14(日) 18:06:31.46ID:dLZ2w8S2
20年前のそんな事をわざわざこのスレに書き込む必要ある?
464デフォルトの名無しさん
垢版 |
2025/09/16(火) 01:00:52.62ID:zeE//4g5
>>462
今もObject PASCALだけど、違うの?
2025/09/16(火) 23:38:10.64ID:Y6cSXP7b
13は窓の杜の記事の紹介画像でもリファクタリングのメニューが有効になってないな
有効な選択肢がないときはグレーアウトするのは13からの仕様らしいが
2025/09/18(木) 10:58:07.28ID:wzGZt9/Z
RAD Studioの新バージョン「13 Florence」をリリース
2025/9/17

RAD Studioの新バージョン「13 Florence」をリリース
「RAD Studio 13 Florence」の詳細は9月22日のデベロッパーTVで
アップデートサブスクリプションの期限切れに注意!
RAD Studio 13 Florence発売記念キャンペーンを実施
2025/09/18(木) 11:46:08.61ID:HC0w9/Lm
また信者たちから金を巻き上げようとしてるw
468デフォルトの名無しさん
垢版 |
2025/09/18(木) 12:46:46.50ID:OijJYxYd
delphi12が2023年11月発売だから2年も経ってない
本当金儲けに走りすぎてるな
2025/09/18(木) 15:04:32.86ID:DywglQxD
>>461
言語拡張に対応できてないから無効化されてるんじゃないの?
メジャーアップデートは不完全なまま出されるのは毎度毎度のこと
13.1の頃は対応されるのでは。
まともになるのは13.2の頃かな
2025/09/19(金) 03:36:46.69ID:Nq42NZKA
>>464
とっくにDelphi Languageってことになってるだろ
そもそも「ObjectPascal」はobject型拡張のあるPascalのことでTurboPascalの他にMacでも別メーカーの実装があった
Delphi 1でclass型を追加してそっちをメインにした時点で別言語になってた
471デフォルトの名無しさん
垢版 |
2025/09/19(金) 03:48:06.10ID:PDDYXmFj
>>470
馬鹿が嘘まで書いて言い訳してる
2025/09/19(金) 03:54:11.26ID:Nq42NZKA
>>471
マニュアルや製品案内を見てみろ、今はもうObjectPascalの名前はない
Delphi7か8ぐらいで切り替わったはず

MacでObjectPascalを採用してた製品例としてCodeWarrier等
ttps://en.wikipedia.org/wiki/CodeWarrior

さっさと謝れ
2025/09/19(金) 04:05:58.38ID:Nq42NZKA
気になって追加で調べたら、十年ぐらい前にAppMethodというRAD Studioとは別な開発環境を売ってた時期があって
一時期ObjectPascalの名前が復活してたことがあったようだ。なのでちと言い過ぎたかもしれん
今はもうないけど
2025/09/19(金) 04:41:22.80ID:Nq42NZKA
逃げたか…
475デフォルトの名無しさん
垢版 |
2025/09/19(金) 07:02:19.04ID:hY04S+EX
そもそもPascalを継承して新しくしたのがDelphiでしょ
Pascalがもうオワコン
2025/09/19(金) 08:27:20.85ID:hrLohOG1
Delphi言語になったのしらないやついたのか…
2025/09/19(金) 08:59:25.62ID:lOoQ9Zh2
Object PASCALに戻ってるらしいよ
https://qiita.com/pik/items/c34ca15bffc8f09127e6
478デフォルトの名無しさん
垢版 |
2025/09/19(金) 11:49:45.60ID:V6+UCGT4
>>472
謝るのはお前の方だろ
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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