![]() |
Fehler beim starten von MCI !
Hallo
ich versuche Dateien aus einer dll Datei auf die Festplatte zu speichern. Es wird zwar eine Video Datei aus dll geholt aber leer (0 bit) Fehlermeldung : Fehler beim Starten von MCI das ist mein Code :
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var LibraryName, ResourceName, TempName: string; Instance, Resource, Block, BlockSize: LongInt; Buffer:pointer; Stream:TMemoryStream; begin LibraryName:='myarchivdll.dll'; ResourceName:='test.avi'; TempName:=ExtractFilePath(ParamStr(0))+'TEMP.avi'; Instance:=LoadLibrary(pchar(LibraryName)); Resource:=FindResource(Instance, pchar(ResourceName), RT_RCDATA); Block:=LoadResource(Instance,Resource); BlockSize:=(SizeOfResource(Instance,Resource)); Buffer:=LockResource(Block); Stream:=TMemoryStream.Create; try Stream.WriteBuffer(pointer(Buffer)^,BlockSize); Stream.Position:=0; Stream.SaveToFile(TempName); finally Stream.Free; end; MediaPlayer1.FileName:=TempName; MediaPlayer1.Display:=Panel1; MediaPlayer1.Open; MediaPlayer1.Play; end; |
AW: Fehler beim starten von MCI !
Du hast ja keinerlei Fehlerprüfungen in deinem Code!
Man muss ja mindestens mal abfragen, ob der Ergebnis von LoadLibrary in Ordnung ist. Und noch fünf Hinweise: * Besser die DLL so laden:
Delphi-Quellcode:
* nicht vergessen, die DLL mit FreeLibrary freizugeben
Instance:=LoadLibraryEx(pchar(LibraryName),0,LOAD_LIBRARY_AS_DATAFILE);
if Instance = 0 then raise Exception.CreateFmt('%s kann nicht geladen werden', [LibraryName]); * Mit der Klasse TResourcestream kommst du einfacher an die Daten ran. * Im Programmverzeichnis hat man häufig keine Schreibrechte. Die AVI-Datei gehört ins TEMP-Verzeichnis * Trenne das Entpacken der Video-Datei von dem Abspielen der Daten. Mit zwei Funktionen mit entsprechenden Übergabeparametern wird's besser. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:44 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