![]() |
DirectShow: IMediaEvent.GetEvent Syntaxfehler
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
es geht um folgende Methode: ![]() Ich habe drei Variablen für den Event-Code sowie die beiden Parameter deklariert. Ich habe es mit Integer und 2x Pointer (wie aus der verlinkten Doku abzulesen) probiert sowie mit 3x Integer. In beiden Fällen bekomme ich folgende Meldung: E2033 Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen. Wenn ich mit der Maus auf die Methode zeige werden mit aber alle Parameter als Integer angezeigt (siehe Bild). Welches sind nun die richtigen Typen? Wo kann ich die nachschlagen? Die F1-Hilfe findet für die Methode nichts. Viele Grüße Felix |
AW: DirectShow: IMediaEvent.GetEvent Syntaxfehler
Zitat:
sorge aber dafür das sie auch in der DirectShow9.pas dementsprechend deklariert sind! gruss |
AW: DirectShow: IMediaEvent.GetEvent Syntaxfehler
Zitat:
![]()
Delphi-Quellcode:
ist auch tatsächlich gleich
LONG
Delphi-Quellcode:
, bloß hast du den Zeiger unterschlagen. Mach mal ein
Integer
Delphi-Quellcode:
vor die ersten 3 Parameter, dann sollte es ohne weitere Änderungen kompilieren.
@
|
AW: DirectShow: IMediaEvent.GetEvent Syntaxfehler
Zitat:
Delphi-Quellcode:
Ich arbeite mit dem Kram jetzt schon 3 Monate es ist definitiv LONG_PTR;
var
hr: HResult; iEventCode: integer; {$IF CompilerVersion < 25} iParam1, iParam2: integer; {$ELSE} iParam1, iParam2: LONG_PTR; {$LEGACYIFEND ON} {$IFEND}
Delphi-Quellcode:
gruss
{$HPPEMIT 'typedef System::DelphiInterface<IMediaEvent> _di_IMediaEvent;'}
{$EXTERNALSYM IMediaEvent} IMediaEvent = interface(IDispatch) ['{56A868B6-0AD4-11CE-B03A-0020AF0BA770}'] (*** IMediaEvent methods ***) function GetEventHandle(out hEvent: OAEVENT): HResult; stdcall; function GetEvent(out lEventCode: Longint; out lParam1, lParam2: Long_ptr; msTimeout: DWORD): HResult; stdcall; function WaitForCompletion(msTimeout: DWORD; out pEvCode: Longint): HResult; stdcall; function CancelDefaultHandling(lEvCode: Longint): HResult; stdcall; function RestoreDefaultHandling(lEvCode: Longint): HResult; stdcall; function FreeEventParams(lEvCode: Longint; lParam1, lParam2: Longint): HResult; stdcall; end; |
AW: DirectShow: IMediaEvent.GetEvent Syntaxfehler
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
also heißen sie wie im MSDN, danke, hätte jetzt erwartet, dass ich das "übersetzen" muss in einen Delphi-"Pointer". Nein, ein @ gehört nicht davor, das sind VAR/OUT-Parameter die Pointer zurückgeben (daher hatte ich es mit "Pointer" probiert). Im MSDN gibt es kein var/out, daher sind es dort Pointer bzw. Pointer auf Pointer, aber VAR ist intern auch ein Pointer, nur Delphi ist so nett es sprachlich zu unterstützen. Was ich nicht verstehe ist wieso mir angezeigt wird, dass long_ptr ein Integer sei aber Integer nicht akzeptiert wird. Ist wohl doch nicht kompatibel... siehe auch nochmal Screenshot. Ich darf mich wohl nicht auf die Popups verlassen... Die DirectShow9 habe ich nur als DCU da bei der Starter die ich gerade ausprobiere keine Sourcen dabei sind. Daher kann ich nicht schauen - und Ändern kommt ohnehin nicht in Frage, wenn dann Bugreport und Ändern lassen, sind ja Dateien von Embarcadero und nicht von mir. (Nachdem ich langsam meine Dateien mit per Turbo Delphi erzeugten Programmen nicht öffnen kann da diese Unicode nicht so gut unterstützen probiere ich gerade eine neue aus. Ob sich ein Kauf der Professional für meine rein private und inzwischen eher seltene Nutzung lohnt habe ich noch nicht entschieden.) Viele Grüße Felix |
AW: DirectShow: IMediaEvent.GetEvent Syntaxfehler
Zitat:
Die gehören zum DSPack hat nix mit Embarcadero zu tun. Nun gut dann kann ich leider nicht weiter helfen. Habe dir den richtigen weg gezeigt ;) gruss |
AW: DirectShow: IMediaEvent.GetEvent Syntaxfehler
Zitat:
Delphi-Quellcode:
.
LONG_PTR = NativeInt
War irgendwie beim MSDN Eintrag für .NET gelandet, wo alle Parameter als
Delphi-Quellcode:
definiert werden.
long*
Zitat:
Delphi-Quellcode:
deklariert sind, kommt natürlich kein
var/out
Delphi-Quellcode:
davor. Bin davon ausgegangen, dass die Header 1 zu 1 übersetzt worden sind. Einen Pointer geben die Parameter dennoch nicht zurück.
@
Delphi-Quellcode:
ist irreführend. Es handelt sich dabei nicht um einen Zeiger auf
LONG_PTR
Delphi-Quellcode:
, sondern den
LONG
Delphi-Quellcode:
Typ, der immer die Größe von
LONG
Delphi-Quellcode:
hat.
SizeOf(Pointer)
|
AW: DirectShow: IMediaEvent.GetEvent Syntaxfehler
Zitat:
Und da hier ein var Parameter voransteht ist man gezwungen LONG_PTR zu verwenden. Habe mich anfangs auch schwer damit getan, die einzige Lösung war halt es in der DirectShow9.pas selbst zu editieren. Das Problem war halt das alles mit Madvr und den LavFiltern zu kombinieren. Jeder kocht irgendwo sein eigenes Süppchen. gruss |
AW: DirectShow: IMediaEvent.GetEvent Syntaxfehler
Hi,
ich habe ja schon danke gesagt, geht ja jetzt. Aber: Zitat:
Code:
liegt Delphi bei. Aber in der Starter ohne Source. Heißt das nun, dass DSPack bereits in compilierter beiliegt?
C:\Program Files (x86)\Embarcadero\Studio\19.0\lib\win32\release\Winapi.DirectShow9.dcu
Indy liegt ja bei obwohl nicht von Embarcadero aber dazu gibt es dann auch den Source. Viele Grüße Felix |
AW: DirectShow: IMediaEvent.GetEvent Syntaxfehler
Zitat:
![]() Ich persönlich verwende das DSPack nicht weil das zu aufgebläht ist und nicht das zur Verfügung stellt was ich benötige. Musste mir auch alles zusammen lesen und selbst verarbeiten. Das Hauptproblem ist aber das dieses Pack, die Demos davon die Theme ausschaltet und Aero deaktiviert. Oder! ![]() gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 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