AVIファイルの動作について

解決


ぴょん吉  2015-12-12 05:44:20  No: 47792

こんばんは。
ぴょん吉と申します。
Delphi XE5 Enterpriseで簡単なプログラムを
開発しています。
AVIファイルをコンポーネントで指定して
AVIファイルを動くようにしたいのですが
どのようにすれば、いいのでしょうか。


Harry  2015-12-12 07:02:40  No: 47793

>AVIファイルを動くようにしたいのですが

「動く」というのが何を指すのかハッキリと分りませんが…。
普通に動画再生なら TMediaPlayer、アニメーションGIFのように使うなら TAnimate でしょうか。


ぴょん吉  2015-12-12 23:49:05  No: 47794

Harryさん、お返事ありがとうございます。
TFormにTAnimateを張り付けて
ボタンイベントに
以下の記述しました。
Form1.Animate1.FileName    := 'C:\TEMP\SAMPLE.AVI';
Form1.Animate1.Repetitions := 0;
Form1.Animate1.Active      := True;
Form1.Animate1.Refresh;
Form1.Refresh;
しかし、SAMPLE.AVIファイルが動きません。
ちなみにSAMPLE.AVIファイルはコマ送りのファイルです。
(Delphi7では動くのですが・・・)


Harry  2015-12-13 03:41:51  No: 47795

Animate1.FileName:='C:\TEMP\SAMPLE.AVI';
  Animate1.Active:=True;

これだけ↑で動作すると思うのですが…。

>しかし、SAMPLE.AVIファイルが動きません。
これは、「表示されるけど動かない」ですか?

>(Delphi7では動くのですが・・・)
残念ながら、私には Delphi XE5 で動作しない原因が分かりません。


ぴょん吉  2015-12-13 06:18:51  No: 47796

Harryさん、表示はするのですけど
動かないのです。
どうしてかな。


ぴょん吉  2015-12-13 06:18:51  No: 47797

Harryさん、表示はするのですけど
動かないのです。
どうしてかな。


Harry  2015-12-13 15:26:25  No: 47798

>表示はするのですけど動かないのです。
やっと了解しました。
説明は十分にしていただかないと相手に伝わらないことが多いですので、ご注意ください。
それと、いろいろ試す中で追加したのだと思いますが、Refreshは除去したほうが良いですね。

Delphi7で動き、XE5では表示されるも動かない…私には皆目見当が付きませんが、誰か心当たりのある方が
現れるまで、基本的なことを確認しておきましょうか。

・ Delphi7とXE5は、同じOS(何?)、同じPC上、同一の 'SAMPLE.AVI' ですか?
・ 'SAMPLE.AVI' はどのようにして用意したのですか?
・ Delphi付属のサンプル/デモ用データのaviではどうなりますか?
→きっとどのバージョンのDelphiでも、TAnimateで使えるaviが一つ以上は用意されてると思います。
環境によって異なると思いますので、PC内を「*.avi」でファイル検索してしまったほうが早いかも。
検索結果の中でファイルサイズが小さく、Delphi関係のファイルパスに存在するものがそれです。


ぴょん吉  2015-12-14 18:44:39  No: 47799

Harryさん、説明不足でご迷惑お掛けし申し訳ありません。

>Delphi7とXE5は、同じOS(何?)
Delphi 7 はWindows XP Pro  32bit
Delphi XE5 はWindows8.1 Pro 64bitです。

>同じPC上、同一の 'SAMPLE.AVI' ですか?
違うPC上ですが同一ファイルです。(SAMPKE.AVI)

>'SAMPLE.AVI' はどのようにして用意したのですか?
自分で作りました。

>Delphi付属のサンプル/デモ用データのaviではどうなりますか?
Delphi7に cool.avi というファイルがありましたので
確認しましたが  やはり動きませんでした。


Mr.XRAY  2015-12-15 01:01:13  No: 47800

やってみました.Delphi 7 のフォルダにある cool.avi を再生させてみました.
「cool」という文字がある画像が表示され,回転しました.

動作確認環境は,Windows 8.1 Pro 64 ビット版です,
この Windows 8.1 にインストールした Delphi XE5(UP2) でコンパイルした EXE を実行しました.
作成した EXE は 32 ビット,64 ビット,どちらも動作しました.


Harry  2015-12-15 03:02:53  No: 47801

Mr.XRAYさんによって Delphi XE5(UP2) で動くことが示されましたので、他のチェック項目としては…

・ Delphi XE5 のアップデート状況は?
・ XE5で作成したEXEをWindowsXPで、Delphi7で作成したEXEをWindows8.1で動作させるとどうですか?
・ 例によって…アプリケーションを新規作成し、フォームにボタンとTAnimateだけを置いた状態で
下記のコードにするとどうなりますか?('cool.avi' は、EXEと同じフォルダに配置。)

procedure TForm1.Button1Click(Sender: TObject);
begin
  Animate1.FileName:='cool.avi';
  Animate1.Active:=True;
end;


ぴょん吉  2015-12-17 19:44:58  No: 47802

Mr.XRAYさん、Harryさん  お返事ありがとうございます.

procedure TForm1.Button1Click(Sender: TObject);
 begin
   Animate1.FileName:='cool.avi';
   Animate1.Active:=True;
end;

を実行しましたが動作しません。
ん〜。。

バージョン情報で確認しますとDelphi XE5 and C++Builder XE5 Update 2に
なっていたのですが・・・


Harry  2015-12-18 00:03:33  No: 47803

>を実行しましたが動作しません。
新規作成して実行しても、'cool.avi' が表示されるけど動かない、というこですね。

EXEを実行するOSを変えた場合は?
>・ XE5で作成したEXEをWindowsXPで、Delphi7で作成したEXEをWindows8.1で動作させるとどうですか?


ぴょん吉  2016-02-10 23:37:48  No: 47804

こんにちは。
対策はわからなのですが、
問題箇所のようなものは判明しました。

Delphi XE5で新規にアプリケーションを作成した場合は
AVIファイルは動作しました。

しかし、
Delphi 7 Proで作成したソースを(TAnimationを使っている)
Delphi XE5でコンパイルするとAVIファイルが動作しません。

どなたか、対策はご存知でしょうか。


通りすがり  2016-02-11 01:06:50  No: 47805

dfmファイル上でTAnimationコンポーネントのプロパティを比較してみたらどうでしょう?


通りすがり  2016-02-11 04:10:21  No: 47806

通りすがりさん、ご助言ありがとうございます。
動作したソースと動作しないソースのTAnimationのプロパティを
比較しましたが全く同様でした。


通りすがり  2016-02-11 05:39:10  No: 47807

ぴょん吉さん、な、名前が…

XE5に移行するとアニメーションしない最小限の(Delphi 7 Proで作った)プロジェクト一式をどこかに上げてくれれば
検証が可能になるかも、というか、もうそれくらいしか方法がないような?


TS  2016-02-12 07:03:42  No: 47808

>Delphi 7 Proで作成したソースを(TAnimationを使っている)
>Delphi XE5でコンパイルするとAVIファイルが動作しません。
> どなたか、対策はご存知でしょうか。
これは同じフォルダーにプログラムはあるのでしょうか。
フォルダーごとコピーして
拡張子  dpr,dfm,pas以外のファイルを削除してdprのプロジョクトを
開いたらどうなりますか。


ぴょん吉  2016-02-13 23:28:49  No: 47809

通りすがりさん、TSさんアドバイスありがとうございました。
それから、通りすがり名前を間違ええちゃいごめんなさい。

原因がわかりました。
Delphi 7 Proでは以下のコードのListViewの処理でも動作するのですが、
Delphi XE5ではListViewの処理が動作せず、処理が終わるとTAnimationが動作します。

原因はわかったのですが、対策がわかりません。

  //アニメーション開始(START)
  Form2.Animate1.FileName    := 'C:\Sample.AVI';
  Form2.Animate1.Active      := True;
  //アニメーション開始(END)

  //番号チェック(START)
  kk := StrToInt(cntW.Text);
  hantei := 0;
  with ListView1 do
  begin
    DataSource3.DataSet.First;
    for ll := 0 to kk - 1 do
    begin
      if ListView1.items[ll].Selected then
      begin

        hantei := 1;

      end;

      DataSource3.DataSet.Next;
    end;
  end;


TS  2016-02-14 00:40:23  No: 47810

if ListView1.items[ll].Selected then
       begin
         hantei := 1;
         Application.ProcessMessages; //追加
       end;
でどうでしょうか。


ぴょん吉  2016-02-14 01:27:02  No: 47811

TSさん、ありがとうございます。
動きました。
とうとう動きました。
やっと動きました。
本当に本当にありがとうございます。
感謝感謝です。

でも、Delphi7で動いて、どうしてDelphiXE5では動かないのだろう。。。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加