こんばんは。
ぴょん吉と申します。
Delphi XE5 Enterpriseで簡単なプログラムを
開発しています。
AVIファイルをコンポーネントで指定して
AVIファイルを動くようにしたいのですが
どのようにすれば、いいのでしょうか。
>AVIファイルを動くようにしたいのですが
「動く」というのが何を指すのかハッキリと分りませんが…。
普通に動画再生なら TMediaPlayer、アニメーションGIFのように使うなら TAnimate でしょうか。
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では動くのですが・・・)
Animate1.FileName:='C:\TEMP\SAMPLE.AVI';
Animate1.Active:=True;
これだけ↑で動作すると思うのですが…。
>しかし、SAMPLE.AVIファイルが動きません。
これは、「表示されるけど動かない」ですか?
>(Delphi7では動くのですが・・・)
残念ながら、私には Delphi XE5 で動作しない原因が分かりません。
Harryさん、表示はするのですけど
動かないのです。
どうしてかな。
Harryさん、表示はするのですけど
動かないのです。
どうしてかな。
>表示はするのですけど動かないのです。
やっと了解しました。
説明は十分にしていただかないと相手に伝わらないことが多いですので、ご注意ください。
それと、いろいろ試す中で追加したのだと思いますが、Refreshは除去したほうが良いですね。
Delphi7で動き、XE5では表示されるも動かない…私には皆目見当が付きませんが、誰か心当たりのある方が
現れるまで、基本的なことを確認しておきましょうか。
・ Delphi7とXE5は、同じOS(何?)、同じPC上、同一の 'SAMPLE.AVI' ですか?
・ 'SAMPLE.AVI' はどのようにして用意したのですか?
・ Delphi付属のサンプル/デモ用データのaviではどうなりますか?
→きっとどのバージョンのDelphiでも、TAnimateで使えるaviが一つ以上は用意されてると思います。
環境によって異なると思いますので、PC内を「*.avi」でファイル検索してしまったほうが早いかも。
検索結果の中でファイルサイズが小さく、Delphi関係のファイルパスに存在するものがそれです。
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 というファイルがありましたので
確認しましたが やはり動きませんでした。
やってみました.Delphi 7 のフォルダにある cool.avi を再生させてみました.
「cool」という文字がある画像が表示され,回転しました.
動作確認環境は,Windows 8.1 Pro 64 ビット版です,
この Windows 8.1 にインストールした Delphi XE5(UP2) でコンパイルした EXE を実行しました.
作成した EXE は 32 ビット,64 ビット,どちらも動作しました.
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;
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に
なっていたのですが・・・
>を実行しましたが動作しません。
新規作成して実行しても、'cool.avi' が表示されるけど動かない、というこですね。
EXEを実行するOSを変えた場合は?
>・ XE5で作成したEXEをWindowsXPで、Delphi7で作成したEXEをWindows8.1で動作させるとどうですか?
こんにちは。
対策はわからなのですが、
問題箇所のようなものは判明しました。
Delphi XE5で新規にアプリケーションを作成した場合は
AVIファイルは動作しました。
しかし、
Delphi 7 Proで作成したソースを(TAnimationを使っている)
Delphi XE5でコンパイルするとAVIファイルが動作しません。
どなたか、対策はご存知でしょうか。
dfmファイル上でTAnimationコンポーネントのプロパティを比較してみたらどうでしょう?
通りすがりさん、ご助言ありがとうございます。
動作したソースと動作しないソースのTAnimationのプロパティを
比較しましたが全く同様でした。
ぴょん吉さん、な、名前が…
XE5に移行するとアニメーションしない最小限の(Delphi 7 Proで作った)プロジェクト一式をどこかに上げてくれれば
検証が可能になるかも、というか、もうそれくらいしか方法がないような?
>Delphi 7 Proで作成したソースを(TAnimationを使っている)
>Delphi XE5でコンパイルするとAVIファイルが動作しません。
> どなたか、対策はご存知でしょうか。
これは同じフォルダーにプログラムはあるのでしょうか。
フォルダーごとコピーして
拡張子 dpr,dfm,pas以外のファイルを削除してdprのプロジョクトを
開いたらどうなりますか。
通りすがりさん、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;
if ListView1.items[ll].Selected then
begin
hantei := 1;
Application.ProcessMessages; //追加
end;
でどうでしょうか。
TSさん、ありがとうございます。
動きました。
とうとう動きました。
やっと動きました。
本当に本当にありがとうございます。
感謝感謝です。
でも、Delphi7で動いて、どうしてDelphiXE5では動かないのだろう。。。
ツイート | ![]() |