Einzelnen Beitrag anzeigen

Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.479 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: Bitmaps als AVI-Vido / MPEG-Video speichern

  Alt 4. Okt 2018, 22:45
Ich schrieb doch a) welche Datei und b) welche Zeile

Im Anhang für Leute die mich nicht Verstanden haben das komplette Projekt so wie es bei mir gerade läuft.

Eventuell EurekaLog auskommentieren, das hab ich nachträglich aktiviert.

Danke Harry, hast Du ne Antwort WARUM man es ändern muss? Weil in nem anderen Thread mir wiederholt auf ohne A/W und PChar als das einzig Wahre. Worin liegt da nun der Fehler?
Ja, in dem Fall ist es klar:

In der VFW.pas unit gibt es ganz am Anfang ein

{$UNDEF UNICODE} und weiter unten ein

Delphi-Quellcode:
{$IFDEF UNICODE}
function AVIFileOpen(var ppfile: IAVIFile; szFile: LPCWSTR; uMode: UINT; lpHandler: PCLSID): HResult; stdcall;
{$ELSE}
function AVIFileOpen(var ppfile: IAVIFile; szFile: LPCSTR; uMode: UINT; lpHandler: PCLSID): HResult; stdcall;
{$ENDIF}
daher wird in Deinem Unicode-Delphi mit "AVIFileOpen" die untere Funktion aufgerufen, wo dann in dem Ursprungscode ein Widestring an eine Funktion übergeben wird, die einen Pointer of Ansistring erwartet.

Unter einem Delphi 2007 müsste der Code daher direkt compilieren.

Man hätte alternativ auch

if AVIFileOpen(pfile, PAnsichar(AnsiString(WorkFile)), OF_WRITE or OF_CREATE, nil) <> AVIERR_OK then machen können, das kompiliert und hätte mit normalen Dateinamen auch funktioniert, aber eben nicht mit Unicode-Dateinamen.

Insofern ist Deine Lösung korrekt hier.

Evtl. könnte aber noch besser sein, das Undef Unicode zu entfernen (dann stimmt der Original-Code wieder hier, nur unter TAVICreator muss man

asi: TAVIStreamInfoA; in asi: TAVIStreamInfoW; ändern. Vielleicht funktionierts dann insgesamt besser, aber das war jetzt nur ein kurzer Blick drauf, muss ich mir noch genauer ansehen...
  Mit Zitat antworten Zitat