AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi DirectShow: IMediaEvent.GetEvent Syntaxfehler
Thema durchsuchen
Ansicht
Themen-Optionen

DirectShow: IMediaEvent.GetEvent Syntaxfehler

Ein Thema von FAlter · begonnen am 28. Okt 2017 · letzter Beitrag vom 28. Okt 2017
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: DirectShow: IMediaEvent.GetEvent Syntaxfehler

  Alt 28. Okt 2017, 16:14
Wo kann ich die nachschlagen?
Für MS APIs/Interfaces, kannst du in der eigentlich als erste Anlaufstelle immer das MSDN konsultieren. Meistens hast du für die C-Typen in Delphi einen gleichnamigen Typ.

LONG ist auch tatsächlich gleich Integer , bloß hast du den Zeiger unterschlagen. Mach mal ein @ vor die ersten 3 Parameter, dann sollte es ohne weitere Änderungen kompilieren.
Delphi-Quellcode:
var
  hr: HResult;
  iEventCode: integer;
  {$IF CompilerVersion < 25}
  iParam1, iParam2: integer;
  {$ELSE}
  iParam1, iParam2: LONG_PTR;
  {$LEGACYIFEND ON}
  {$IFEND}
Ich arbeite mit dem Kram jetzt schon 3 Monate es ist definitiv LONG_PTR;

Delphi-Quellcode:
  {$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;
gruss
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: DirectShow: IMediaEvent.GetEvent Syntaxfehler

  Alt 28. Okt 2017, 17:00
Ich arbeite mit dem Kram jetzt schon 3 Monate es ist definitiv LONG_PTR;
Ja, Korrektur: LONG_PTR = NativeInt .

War irgendwie beim MSDN Eintrag für .NET gelandet, wo alle Parameter als long* definiert werden.

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.
Wenn sie als var/out deklariert sind, kommt natürlich kein @ davor. Bin davon ausgegangen, dass die Header 1 zu 1 übersetzt worden sind. Einen Pointer geben die Parameter dennoch nicht zurück. LONG_PTR ist irreführend. Es handelt sich dabei nicht um einen Zeiger auf LONG , sondern den LONG Typ, der immer die Größe von SizeOf(Pointer) hat.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: DirectShow: IMediaEvent.GetEvent Syntaxfehler

  Alt 28. Okt 2017, 17:08
Zitat:
Ja, Korrektur: LONG_PTR = NativeInt .
yep
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:57 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