![]() |
Avi aus Resource laden und abspielen
Hallo ich habe mal ein bisschen was gebastelt
meine frage bezieht sich auf diesem Code. Kann mir einer sagen wie ich eine loop oder Replay funktion für die Avi bekomme so das ,daß Video immer als schleife abspielt. das in die RC Datei schreiben A1 AVI Film.avi Datei speichern als Film.rc und so kompilieren brcc32 Film.rc Film.Res in Programm einbinden mit {$R Film.res}
Delphi-Quellcode:
uses
MMSystem; public { public-Deklarationen } procedure MMNotify(var message: TMessage); message MM_MCINOTIFY; end; implementation const Filename='~temp.avi'; {$R *.dfm} {$R Film.res} procedure TForm1.MMNotify(var message: TMessage); begin MCISendString('close film', nil, 0, 0); end; {$WARNINGS OFF} procedure Temp; var rs: TCustomMemoryStream; s : string; begin s := 'A1'; {Name der Resource} try rs := TResourceStream.Create(hInstance, s, 'AVI'); rs.SavetoFile(Filename); finally rs.Free; end; end; {$WARNINGS ON} procedure TForm1.Button1Click(Sender: TObject); begin Temp(); MCISendString(PChar('Play '+ filename), nil, 0, 0); { Oder auch im Vollbild: MCISendString(PChar('open '+ filename +' alias film'), nil, 0, 0); MCISendString('window film handle 0', nil, 0, 0); MCISendString('window film state show maximized', nil, 0, 0); MCISendString('play film notify', nil, 0, Form1.Handle); } end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin if fileexists(filename) then deletefile(filename); // ~temp.avi' löschen; end; end. |
Eine Antwort auf deine Frage weiß ich auch nicht, aber wo landet deine AVI-Datei?
Delphi-Quellcode:
das sie von deinem Programm gefunden wird, wenn es sie braucht dürfte Zufall sein.
const Filename='~temp.avi';
|
Sie landet im dem Verzeichnis wo sich deine exe befindet
|
Wo steht das? Sie wird in das aktuelle Verzeichnis entpackt. Das muß aber nicht das Exe-Verzeichnis sein. Gib bei einer Verknüpfung ein anderes Arbeitsverzeichnis an und Peng. Genauso sieht es aus, wenn man innerhalb der Anwendung das Verzeichnis gewechselt wird.
|
danke!
vielleicht kannst du mir ein beispiel zeigen so ? extractfilepath(application.exename) |
Zum Beispiel und dann hängst du noch deinen Dateinamen dran.
|
Moin Tino,
grundsätzlich: Ja. Ich persönlich ziehe folgende Variante vor: ExtractFilePath(paramstr(0)) Da paramstr(0) und Application.Exename den gleichen Wert zurückliefern, würde zwar das gleiche dabei herauskommen, aber dafür funktioniert paramstr(0) auch ohne unit Forms, was sich bei Konsolenanwendungen als recht hilfreich erweisen kann (@Luckie: und natürlich auch bei nonVCL ;-) ) |
Wenn mich nicht alles täuscht, ist '.\' doch das .exe-Verzeichnis, und nicht der aktuelle Ordner. d.h. mach aus
'~temp.avi' -> '.\~temp.avi' und es ist eindeutig, oder nicht? |
danke Christian
ich hab mal das so gemacht
Delphi-Quellcode:
{$WARNINGS OFF}
procedure TForm1.Temp; var rs: TCustomMemoryStream; s : string; begin s := 'A1'; {Name der Resource} try rs := TResourceStream.Create(hInstance, s, 'AVI'); rs.SavetoFile(ExtractFilePath(paramstr(0))+Filename); Finally rs.Free; end; end; {$WARNINGS ON} |
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz