AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Enum verursacht eine ungültige gleitkommaoperation in Kernel32
Thema durchsuchen
Ansicht
Themen-Optionen

Enum verursacht eine ungültige gleitkommaoperation in Kernel32

Ein Thema von EWeiss · begonnen am 11. Jul 2016 · letzter Beitrag vom 12. Jul 2016
 
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: Enum verursacht eine ungültige gleitkommaoperation in Kernel32

  Alt 11. Jul 2016, 22:48
Sobald man Interaktionen zwischen Sprachen hat, sollte man am besten Enums durch einfache Konstanten ersetzen. Enums sind kein Standard-Typ, und es hat sich imho auch nie eine wirkliche Standardimplementierung etabliert, so dass hier vermutlich jeder Compiler das Eigensüppchen brodelt. Ist zwar dann vom Interface her nicht mehr so nett anzuschauen und muss mit etwas mehr Kommentararbeit garniert werden wenn auch andere den Code leicht lesen können müssen, aber das ist die Lösung, die mir da fast ausschließlich über den Weg läuft.
Nimmt man dann auch noch brav typisierte Konstanten (VB6 kann glaube ich auch auf einen Typ festgenagelt werden wenn man es will, oder?), dann sollte es eigentlich keine Probleme mehr geben. Sieht dann halt so aus:

Delphi-Quellcode:
const
// PlayState Konstanten
  psError : SmallInt = -1;
  psStop : SmallInt = 0;
  psPlay : SmallInt = 1;
  psIsPlaying : SmallInt = 2;
  psPause : SmallInt = 3;
  psPrevTitle : SmallInt = 4;
  psNextTitle : SmallInt = 5;
  psSetPlaylistTitle : SmallInt = 6;
  psGetPlaylistTitlePos: SmallInt = 7;
  psSetPlaylistPos : SmallInt = 8;
  psGetSelectedTitlePos: SmallInt = 9;
  psPlaylistClear : SmallInt = 10;
  psAddPlaylistTitle : SmallInt = 11;

type
  TBASSVIS_STATECALLBACK = procedure(NewState: SmallInt); stdcall; // Gültige Werte siehe "PlayState Konstanten" im Header

var
  AmpStateCallback : TBASSVIS_STATECALLBACK;

.
.
.

  if (assigned(AmpStateCallback)) then
    AmpStateCallback(psExternalClose);
SmallInt heisst in VB6 übrigens "Short". Schnell mit dem Delphi-ShortInt verwechselt, der aber nur 1 Byte groß ist. (Das hat mich schon immer sporadisch verwirrt.)

Eine schlauere Lösung die zugleich simpel umzusetzen und zu nutzen wäre fällt mir nicht spontan ein.

Edit: Grrrr! So schön eingerückt, und der "nette" DP Code-Parser zeigt immer noch nicht mehr als 1 Leerzeichen am Stück an. GRRRRRR! Warum!?
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
 


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 19:11 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