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...