Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi AVI aus einer DLL (https://www.delphipraxis.net/12781-avi-aus-einer-dll.html)

xavior 4. Dez 2003 06:06


AVI aus einer DLL
 
HiHo ( :xmas: ), also ich hab ein kleines Problem, ich wollte mit Hilfe der Code-Library eine DLL-Datei erstellen ([cl]Library: Grafik / Sound / Multimedia[/cl]), das hat ja auch geklappt, und zwar so (Für andere die sowas auch machen möchten erklär ich mal den Anfang, mit dem Rest müsst ihr selbst klarkommen, da ich wie man's sieht nicht weiter weis :warn: ):

Eine Datei Names "MData32.rc" mit folgendem Inhalt erstellt :coder: :

Delphi-Quellcode:
ERDEDSDR AVIRES "Erde.avi"
HUNDDLAE AVIRES "Hund.avi"
WARTENEI ANIRES "Wart.ani"
ENDEAUSM ANIRES "Ende.ani"
HAHAHAHA WAVRES "Lach.wav"
ICHLPLAN WAVRES "Plan.wav"
SCHWULOD WAVRES "Schw.wav"
TERMINAT WAVRES "Term.wav"
WATWERBI WAVRES "Watw.wav"
LOGOMFIR BMPRES "Logo.bmp"
MAINICON SYMBOL "Logo.ico"
Dann habe ich unter Neu -> Weiter -> DLL-Experte ausgewählt und denn code volgendermaßen verändert :coder: :

Delphi-Quellcode:
library MData32;

{$R 'MData32.res' 'MData32.rc'}
{$R *.res}

begin
end.
Beim Compilieren hatt Delphi dann eine Datei Names "MData32.dll" erstellt. Jetzt frage ich mich :gruebel: aber, wie man diese Datei einbindet un z.B.: auf Die 'ERDEDSDR AVIRES "Erde.avi"' zugreift um sie in einem TAnimate Rahmen darzustellen ?!? So bis heute Abend dann, wäre über jede mögliche Lösung erfreut! :thuimb:

Luckie 4. Dez 2003 06:32

Re: AVI aus einer DLL
 
Die Units kannst du aus der DLL rausschmeißen.

Dann kuck dir in der Hilfe mal die Klasse TResourceStream an, damit sollte sich schon was anfangen lassen.

xavior 4. Dez 2003 10:49

Re: AVI aus einer DLL
 
Welche Units den ???

:wiejetzt: :gruebel:

Nalincah 4. Dez 2003 10:54

Re: AVI aus einer DLL
 
Wahrscheinlich diese hier:

Delphi-Quellcode:
uses
  SysUtils,
  Classes;

xavior 4. Dez 2003 11:04

Re: AVI aus einer DLL
 
OK hab ich jetzt gemacht! Aber das beantwortet noch immer nich meine Frage! Wie stell ich das den jetzt an das ich die 'ERDEDSDR AVIRES "Erde.avi"' laden und abspielen kann? OK, mit TResourceStream, aber ich weis ja garnicht wo ich anfangn soll!!

scp 4. Dez 2003 11:21

Re: AVI aus einer DLL
 
Da gibt es zwei Möglichkeiten:

Delphi-Quellcode:
FModuleHandle := LoadLibraryEx(PChar(FFileName), 0, LOAD_LIBRARY_AS_DATAFILE);

    AnimateV.CommonAVI := aviNone;

    AnimateV.ResHandle := FModuleHandle; // Hier die Exception

    If (StrToIntDef(Name, 0) <> 0) then
      AnimateV.ResID := StrToIntDef(Name, 0)
    else
      AnimateV.ResName := Name;

    AnimateV.Seek(1);
    AnimateV.Play(1, AnimateV.FrameCount, 0);
Delphi-Quellcode:
FModuleHandle := LoadLibraryEx(PChar(FFileName), 0, LOAD_LIBRARY_AS_DATAFILE);

    AnimateV.CommonAVI := aviNone;

    If (StrToIntDef(Name, 0) <> 0) then
      SendMessage(AnimateV.Handle, ACM_OPEN, FModuleHandle, StrToIntDef(Name, 0))
    else
      SendMessage(AnimateV.Handle, ACM_OPEN, FModuleHandle, Integer(@Name[1]));

    SendMessage(AnimateV.Handle, ACM_PLAY, -1, MAKELONG(0, Word(-1)));
Die obere ist die eigentlich korrekte Vorgehensweise. Da dies zumindest bei mir manchmal nicht funktioniert, verwende ich die untere Methode.

xavior 4. Dez 2003 11:33

Re: AVI aus einer DLL
 
OK danke, aber jetzt kommt bei mir diese Meldung: 'AVI kann nicht geöffnet werden' :wall: und das Programm kackt ab! Wie kann ich eigetlich die Position der AVI bestimmen z.B.: bei Erde.avi ?

Ich hab den Sourcecode folgendermaßen verändert:

Delphi-Quellcode:

 FModuleHandle := LoadLibraryEx(PChar('MData32.dll'), 0, LOAD_LIBRARY_AS_DATAFILE);
 Hund.CommonAVI := aviNone;
 Hund.ResHandle := FModuleHandle; // Hier die Exception    <---- Hier kommt der Fehler
{If (StrToIntDef(Name, 0) <> 0) then
  Hund.ResID := StrToIntDef(Name, 0)
 else
  Hund.ResName := Name;
  Hund.Seek(1);
  Hund.Play(1, Hund.FrameCount, 0);  }

scp 4. Dez 2003 11:50

Re: AVI aus einer DLL
 
Zitat:

Zitat von xavior
Hund.ResHandle := FModuleHandle; // Hier die Exception <---- Hier kommt der Fehler
[/delphi]

Was ist der Unterschied zwischen einem Fehler und einer Exception? Es gibt keinen.

Nein, im Ersnt ich hatte ja geschrieben, das die obere Version aus irgendeinem Grund nicht immer klappt, deswegen habe ich ja zwei Beispiele gegeben. Das unter funktioniert immer, allerdings muss man auf den Komfort der Komponente verzichten.

xavior 4. Dez 2003 12:08

Re: AVI aus einer DLL
 
Achso, dann versuch ich das untere! Aber, was sind ACM_OPEN & ACM_PLAY für Variablen? Und wie kan ich die Position der Datei bestimmen, wenn ich (z.B.: in meinem Fall) mehrer sachen in der DLL habe? :gruebel:

xavior 4. Dez 2003 12:59

Re: AVI aus einer DLL
 
Hallo?


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:28 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz