くだすれDelphi(超初心者用)その60【Embarcadero】 (460レス)
1-

1
(3): デフォルトの名無しさん [sage] 2023/11/23(木)20:02 ID:KAoTyDwD(1)
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】
2chスレ:tech
■ 便所の落書きレベルの個人的な悪口やきつい言葉(氏ねとか)は禁止だからな。
■ Embarcaderoヲッチャ的な内容も歓迎だ。
■ 誰も立てないから立てた。さあ語れ。
361: デフォルトの名無しさん [sage] 04/15(火)11:48 ID:CbsPdu2a(1)
字幕スーパー
super impose
「superimpose」は「重ね合わせる」「上に置く」「合成する」という意味の動詞で、「スーパーインポーズ」と発音します。
362: デフォルトの名無しさん [] 04/15(火)16:08 ID:Yc+e0umG(1/2)
>>360
ほんと、ガキだな。
ムキになってDelphiでの定義でないとか。
お前が仕切る事でないのな。お前の定義はいらないのな。わかる?
お前、いちいち全スレをそうやって評価してんのか?
恥かくだけだから、あらしはやめな。
363
(1): デフォルトの名無しさん [sage] 04/15(火)17:04 ID:aP7pFBXX(1)
6レスでしかも連投までしてるほうがガキだしムキになっていると思います
364: デフォルトの名無しさん [] 04/15(火)20:45 ID:Yc+e0umG(2/2)
>>363
悔しいならもっと大人になりな坊主。
365: デフォルトの名無しさん [sage] 04/15(火)21:18 ID:Hj2lC2cB(1)
最近盛況で楽しいね
これくらいDelphiも盛り上がればいいのにね
366: デフォルトの名無しさん [sage] 04/15(火)22:18 ID:5NRpTm0N(1)
Delphiばんざい!
367: デフォルトの名無しさん [sage] 04/21(月)14:42 ID:Yit9TUrJ(1) AAS
AA省
368
(8): 少々スレチな質問です [age] 04/21(月)17:28 ID:ONSY3bFx(1/4)
該当スレが存在しアドレスアンカーがあって書き込めれば移動します。
作成はDelphiで組んでいます。
機能の一部でinput.MP4,mov,aviの動画を調べてShellExecuteでFFmpegを呼び出して処理させている。
(H.265であればH.264に変換させる等)
知りたいのは特にmp4のカラービットBit depth(ビット深度)の8/10/12 Bit判定がドコを参照すれば判るのか?
最終的にやりたいのは input.mp4 が 8bit以外であればH.264 8Bitに自動変換させたい。
同様の質問を「黒羽製作所 総合掲示板 真空波動研」スレに投下中でそちらにはアップルQuickTimeへのアドレス有りです。
ソフトウェア板(ffmpegスレ)にはどんぐりがどーたらで書き込めない。
369
(1): 368 [sage] 04/21(月)17:33 ID:ONSY3bFx(2/4)
真空波動研のDLLを使うのは?、は
DLLを動的リンクさせてinput.mp4のBit判定をリザルトで受け取れたら楽だろうけど
それはそれで仕様が公開されていないのでD6での使用方法が分らない
370
(1): デフォルトの名無しさん [sage] 04/21(月)17:45 ID:Cyno6pDc(1/2)
>>369
コマンドラインバージョン使って、そのテキストを解析すればいいのでは?
371
(1): デフォルトの名無しさん [sage] 04/21(月)18:28 ID:KMmar/P6(1/3)
「作成はDelphiで組んでいます。
機能の一部でinput.MP4,mov,aviの動画を調べてShellExecuteでFFmpegを呼び出して処理させている。
(H.265であればH.264に変換させる等)
知りたいのは特にmp4のカラービットBit depth(ビット深度)の8/10/12 Bit判定がドコを参照すれば判るのか?
最終的にやりたいのは input.mp4 が 8bit以外であればH.264 8Bitに自動変換させたい。」

この文章をそのままGrokに貼り付けたらサンプルコードを書いてくれる
372
(1): デフォルトの名無しさん [sage] 04/21(月)18:29 ID:KMmar/P6(2/3)
MP4動画のビット深度(8bit/10bit/12bitなど)を判定するには、動画のコーデック情報やメタデータを解析する必要があります。DelphiでFFmpegを活用しているとのことなので、FFmpegのコマンドラインツールであるffprobeを使うのが最も効率的です。ffprobeは動画ファイルの詳細なメタデータを取得でき、ビット深度も確認可能です。
373
(1): デフォルトの名無しさん [sage] 04/21(月)19:01 ID:DImNR5cR(1)
ここは、俺が仕切ってる。
Delphiのプログラミング以外の投稿は、俺以外許さん。文句ある奴はどっかへ行け。
374
(2): 368 [sage] 04/21(月)22:43 ID:ONSY3bFx(3/4)
レスありがとう
>370 372
ShellExecuteで外部プログラム結果をテキスト出力させて
それをDelphiのTMemoに読み込んで行を特定して抜き出すという感じ?
>371
スマホ超初心者で課金系はパスです。
375: 368 [sage] 04/21(月)22:45 ID:ONSY3bFx(4/4)
>372
ffprobe の出力例一部抜粋
Stream #0:0[0x1](eng): Video: hevc (Main 10) (hvc1 / 0x31637668), yuv420p10le(pc, bt709), 5320x2280 [SAR 1:1 DAR 7:3], 120149 kb/s, 59.94 fps, 59.94 tbr, 60k tbn (default)
Stream #0:0[0x1](eng): Video: hevc (Main) (hev1 / 0x31766568), yuvj420p(pc, bt709, progressive), 5320x2280 [SAR 1:1 DAR 7:3], 5440 kb/s, 59.94 fps, 59.94 tbr, 60k tbn (default)
Stream #0:0[0x1](eng): Video: h264 (High 10) (avc1 / 0x31637661), yuv420p10le(pc, bt709, progressive), 5320x2280 [SAR 1:1 DAR 7:3], 31555 kb/s, 59.94 fps, 59.94 tbr, 60k tbn (default)
Stream #0:0[0x1](eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, bt709, progressive), 5320x2280 [SAR 1:1 DAR 7:3], 32117 kb/s, 59.94 fps, 59.94 tbr, 60k tbn (default)
上から10/8/10/8 Bit
'Main 10''High 10' 部分が色深度10Bitだろうか?
ffprobeのソース見てmp4部分を特定させる自信がないー
動画trakのメタデータ'xxxC'atom内っぽいなーとは思ってるのですが
詳細な資料にたどり着けてなくて
376: デフォルトの名無しさん [sage] 04/21(月)22:54 ID:Cyno6pDc(2/2)
>>374
それでもいいし、
パイプ作ってそれを渡す(ただしShellExecuteでは出来ないんでCreateProcess)
サブプロセスのstdoutにセットしてDelphiのほうでReadFileする、というのでもいい
377: デフォルトの名無しさん [sage] 04/21(月)23:27 ID:KMmar/P6(3/3)
>>374
いや、今はGrokはxユーザーなら誰でも無料で使える
Grokが書いたコードも直接ここに貼り付けてやろうと思ったが
長すぎて何度も書き込みに失敗したから諦めた
とにかくxアカウント作ってGrokに聞くといい、必ず力になってくれるはず
378: デフォルトの名無しさん [sage] 04/22(火)00:04 ID:GyMhIb89(1/2)
ffprobeで処理するなら出力形式をJSONにできる
379: デフォルトの名無しさん [] 04/22(火)00:10 ID:GyMhIb89(2/2)
-hide_banner -print_format json -show_format -show_streams
380: デフォルトの名無しさん [] 04/22(火)04:10 ID:NQ8RJq1o(1/3)
>>373
オレの真似するお前。
これはいいんだ。
お前は出てけ。
381
(1): デフォルトの名無しさん [sage] 04/22(火)07:22 ID:kJTRiSDQ(1/2)
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)。
382
(1): デフォルトの名無しさん [sage] 04/22(火)07:24 ID:kJTRiSDQ(2/2)
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
(1): デフォルトの名無しさん [] 04/22(火)19:45 ID:NQ8RJq1o(2/3)
それDelphiのコードでないよね。
ここの、微妙なスレにこのタイミングで、空気読めない?
384
(1): デフォルトの名無しさん [] 04/22(火)19:46 ID:NQ8RJq1o(3/3)
それDelphiのコードでないよね。
ここの、微妙なスレにこのタイミングで、空気読めない?
385: 368 [sage] 04/23(水)05:30 ID:KmGEZqMw(1/5)
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
386
(1): 368 [sage] 04/23(水)05:32 ID:KmGEZqMw(2/5)
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ごと一時ファイルをデリート
387
(1): 368 [sage] 04/23(水)05:44 ID:KmGEZqMw(3/5)
>>381 >382
ありがとう!
とりあえず映像深度の数字だけ欲しかったけど他も参照できる余地を残して
-show_streams 全部を出力させることにしました。
頭悪そうなコードになってしまいましたが
他にも動画情報取得に悩んでいる人にもと
388: 368 [sage] 04/23(水)05:50 ID:KmGEZqMw(4/5)
リザルトをBooleanにしてるのは他の関係上です
389
(2): デフォルトの名無しさん [sage] 04/23(水)07:18 ID:o1ve4r3x(1/2)
>>383-384
お前は仕様を理解せずコードだけ求める馬鹿か?

>>387
GJ !!
390
(2): 368 [sage] 04/23(水)19:47 ID:KmGEZqMw(5/5)
>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
(1): デフォルトの名無しさん [] 04/23(水)19:54 ID:tXAJNIU5(1)
>>389
何言ってんだか
真が無い。
392
(1): デフォルトの名無しさん [sage] 04/23(水)22:35 ID:o1ve4r3x(2/2)
>>390
頑張れ
>>391
真て何だ?
393: デフォルトの名無しさん [] 04/24(木)20:18 ID:KDw3CCba(1/2)
>>389
で?
394: デフォルトの名無しさん [] 04/24(木)20:20 ID:KDw3CCba(2/2)
>>392
アホなんだろうな。
395
(1): デフォルトの名無しさん [sage] 04/24(木)22:10 ID:ZEuKqFov(1/2)
CreateProcessでProcessInfoのプロセスハンドルと
WaitForSingleObjectでプロセス終了するまで待機
396: デフォルトの名無しさん [sage] 04/24(木)22:21 ID:ZEuKqFov(2/2)
>のリダイレクトはコンソール用だから
CREATE_NEW_CONSOLEフラグ指定したらどうかな
あってるかしらんが
397
(2): 前117スレ 658 [sage] 04/25(金)01:15 ID:WCPLL/xz(1/6)
プロセス終了待ちは解決しました。
ShellExecuteからCreateProcessに変更
詳細書こうとするとエラー
398
(1): 368(MP4のカラービット色深度) [sage] 04/25(金)01:19 ID:WCPLL/xz(2/6)
>390 のタイトル先をベースに「プロセスの起動と終了を待つ mam-mam vcl_createprocess」検索先を使用。
「Delphi Programming Object Pascal mrxray」の 500_ 490_ 494_ 各検索先も参照。
RetValBool:=CreateProcess(Nil,PChar('Cmd.exe /C ' + SaveName),〜(略)
399: 368(MP4のカラービット色深度) [sage] 04/25(金)01:21 ID:WCPLL/xz(3/6)
とコマンドプロンプト起動の引数扱いのCmd.exe監視にしたら待機になりました。
※mam-mamアドレス参照コード内の
「起動待ちでエラー」表示処理部分を使うとエラー表示になって終了するのでごっそり削除。(謎)
400: 368(MP4のカラービット色深度) [sage] 04/25(金)01:23 ID:WCPLL/xz(4/6)
「黒羽製作所 総合掲示板 真空波動研」スレに管理人さんからレスがあり
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!
401: 368(MP4のカラービット色深度) [sage] 04/25(金)01:25 ID:WCPLL/xz(5/6)
以下新規の参照例
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 (略)
402: 368(MP4のカラービット色深度) [sage] 04/25(金)01:45 ID:WCPLL/xz(6/6)
>395 396 ありがとう
>397 は何度も書き込み試行で名前欄の文字が変わってしまった。
参照先に解説は無かったようなので試行錯誤してると
バッチファイルを直接起動させずにCreateProcessで
コマンドプロンプト起動の引数扱いで親Cmd.exe監視にしたら待機になりました。
FFprobe利用はセーフネット扱いなので400-401内容で詰まってます。
exeを小文字の実行ファイル名書くとサーバーエラーで蹴られるんですねココ
403
(1): デフォルトの名無しさん [sage] 04/25(金)12:50 ID:6ZF7QOEI(1)
Delphi CE 11.3のライセンスキレたんで12.1入れたらメニューのプロジェクトクリックしただけで落ちる
しかたないのでVMでWindows11入れてDelphi12.1入れたら問題無かったのでそっちで使う事にするけどなんかもにょる
404: デフォルトの名無しさん [sage] 04/25(金)16:09 ID:Yet6zdrW(1)
.net関係か?
405
(1): 質問1 実行ファイルがパス上に存在するか?の調べ方で [sage] 04/28(月)23:10 ID:1qNUJnCM(1/2)
(質問者は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バージョン調べて回避するコードいれないと・・・
406
(1): 質問2 iniファイルの存在と重複をWin10(D6)で調べる方法 [age] 04/28(月)23:13 ID:1qNUJnCM(2/2)
Windows の保護領域内でiniを作るとWin8以降ぐらいから
OSドライブ名:\Users\[ユーザー名]\AppData\Local\VirtualStore\Program Files [(x86)]\[実行アプリの階層構造〜]\〜.ini
に生成される訳でそれぞれに以下をすると
if FileExists(TargetFullPath) then Count := Count + 1;
自動的に割り振られてしまい実行場所に無くても自動移動先+直接指定で重複カウントされてしまう。
フォルダ個別に存在を調べるコードはありますか?
407
(1): デフォルトの名無しさん [sage] 04/28(月)23:27 ID:OAf+OdvF(1)
>>405
生成するファイル名が分かっているのにwhereコマンド使う意味が分からない
ファイル検索ならFindFirst関数使えばいいだろうし

>>406
保護領域内でini作らなければいいのでは?
そもそもProgram Files [(x86)以下に設定用のファイルとかを保存するのが良くない
ユーザーフォルダやドキュメントフォルダを取得して明示的にそこに保存するべきだろう
408
(1): 405 406 [sage] 04/29(火)18:09 ID:/fre+7qi(1)
>>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
409: デフォルトの名無しさん [sage] 04/29(火)20:33 ID:LDFwfkd6(1)
>>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: デフォルトの名無しさん [] 05/09(金)00:30 ID:mKYQcf6G(1)
一周回ってDelphiもありかな?と思ったがいかんせん価格が高い
411: デフォルトの名無しさん [sage] 05/09(金)00:41 ID:faN9fJ/K(1)
そんなあなたにCommunity Edition
412: デフォルトの名無しさん [] 05/09(金)15:05 ID:nZMnhT9J(1)
30周年なんだからもっと長期間割引してくれよ
413: デフォルトの名無しさん [sage] 05/09(金)16:34 ID:kxBTusdH(1)
v12のAIによるSmart CodeInsight機能ってCommunity Editionでも使えるの?

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

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

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

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

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

C++Builderとしては以前よりも良くなってはいるけど人がいないw
446: デフォルトの名無しさん [sage] 06/13(金)01:16 ID:sOFsn++d(1)
移植もそろそろAIがやってくれそうな気がする
447: 444 [sage] 06/13(金)13:20 ID:mSGsIOqe(1)
>>445
うっは、まだ当時のスレが残ってるw
頭が回る歳のうちに移植しなきゃいけないものは作り直しておこう・・・
448: デフォルトの名無しさん [sage] 06/14(土)14:26 ID:YZlEn/ao(1)
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」を開いてみたのですが右ドラッグは簡易実装しかしていませんでした

何か参考になるサイトかコンポーネントはありませんでしょうか?
449
(1): デフォルトの名無しさん [sage] 06/17(火)13:39 ID:Zu69+awX(1)
AIに対する訊き方が悪いんじゃない?

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

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

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

:=ですらうざい
全部BASICに戻せよ
454: デフォルトの名無しさん [sage] 07/31(木)15:30 ID:nx6J3OrU(1)
IfThen 関数とか
455: デフォルトの名無しさん [sage] 08/15(金)16:21 ID:5u8kxwvi(1)
Communityのライセンス切れたけど更新ないのか…
456: デフォルトの名無しさん [sage] 08/16(土)09:34 ID:wpc1g/gV(1)
俺もライセンス切れたんで入れ直したが更新無かったから>>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:
457
(1): デフォルトの名無しさん [sage] 08/16(土)23:03 ID:aTXWX5fT(1)
・ごちゃついた環境変数pathを整理
・「Delphi 手動アンインストール」を実行
・マイドク、C:\Users\Public\Documents以下のRadStudio,Embarcaderoフォルダを削除(リネームして退避)
・再インストール
これ試して駄目ならOSごとクリーンインストールだな
458: デフォルトの名無しさん [sage] 08/17(日)08:46 ID:isNfOMKw(1)
>>457
それらは前に全部やったけど効果無かったよorz

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

その前にDelphiか.NETのアプグレで回避できるようになるといいんだが・・・
459: デフォルトの名無しさん [sage] 09/11(木)17:45 ID:9wMhg/CU(1)
Delphi13がリリースされたみたいだけど
CE版はないんだろうか

AndroidPlayでtargetSdkVersionがAPIレベル35以降じゃないってことで
アップデートできずに困ってるんだが
460: デフォルトの名無しさん [] 09/13(土)16:46 ID:pv5pmOEc(1)
13もう出たのか
12出てからまだ1年そこらじゃないのか?
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.016s