Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

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

AW: Events von Delphi to C++

  Alt 5. Aug 2017, 02:42
Also wenn du es in Delphi mit stdcall deklariert hast, musst du das in C++ auf jeden Fall schonmal auch verwenden. Auch beim Typedef!

Jetzt ist die Frage:
Wird das Event wirklich nicht ausgelöst, oder stimmt nur der "Event Code" nicht? Lass mal eine MessageBox vor der Auswertung von event anzeigen.

Enums in C++ sind standardmäßig 4-Bytes groß, während sie bei Delphi dynamisch skalieren.

Du kannst jetzt entweder in Delphi das Enum per Compiler-Switch auf 4-Bytes vergrößern (oder als letztes Element ein FORCE_DWORD = MAXINT hinzufügen), oder du verkleinerst die Enum-Größe entsprechend im C++ Code. Hier würde ich dir generell zu typisierten Enums raten (Delphi Enums sind auch typesafe):
Code:
enum class PlayerEvent : std::uint8_t // #include <cstdint>
{
    PlayEnded,
    ErrorEnded
};
Statt uint8_t sind je nach Anzahl der Elemente dann auch andere Typen wie z.b. uint16_t , etc. Möglich.

Deine Abfrage sieht mit typisierten Enums dann so aus:
Code:
void _stdcall OnPlayerEvent(TPlayerEvent event)
{
    if (event == PlayerEvent::PlayEnded)
    {
        KillTimer(MovieHandle, MOVIE_TIMER);
    }
}
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)

Geändert von Zacherl ( 5. Aug 2017 um 02:45 Uhr)
  Mit Zitat antworten Zitat