Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Records von Delphi in VB6 verwenden (https://www.delphipraxis.net/184059-records-von-delphi-vb6-verwenden.html)

EWeiss 22. Feb 2015 20:19

AW: Records von Delphi in VB6 verwenden
 
Zitat:

Wie sind denn diese TMPEG... Typen definiert? Enums, Records, ...?
Bei Enums muss man aufpassen, denn die können unterschiedliche Byte-Längen haben (wenn man da nicht einwirkt).
Ich weis jetzt nicht welche du speziell meinst aber mal das hier.

Delphi-Quellcode:
t_TagsLibrary_GetAudioAttributes   = function (Tags: HTags; AudioType: TAudioType; Attributes: Pointer): LongBool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
Delphi-Quellcode:
type
    TAudioType = (atAutomatic, atFlac, atMPEG, atDSDDSF, atWAV, atAIFF, atMP4, atOpus, atVorbis, atWMA, atWAVPack, atMusePack);
Das TMPEGAudioAttributes hatten wir ja schon.

Delphi-Quellcode:
type
    TMPEGVersion = (tmpegvUnknown, tmpegv1, tmpegv2, tmpegv25);

    TMPEGLayer = (tmpeglUnknown, tmpegl1, tmpegl2, tmpegl3);

    TMPEGChannelMode = (tmpegcmUnknown, tmpegcmMono, tmpegcmDualChannel, tmpegcmJointStereo, tmpegcmStereo);

    TMPEGModeExtension = (tmpegmeUnknown, tmpegmeNone, tmpegmeIntensity, tmpegmeMS, tmpegmeIntensityMS);

    TMPEGEmphasis = (tmpegeUnknown, tmpegeNo, tmpege5015, tmpegeCCITJ17);
gruss

Sir Rufo 22. Feb 2015 20:22

AW: Records von Delphi in VB6 verwenden
 
Ich wette in VB hat ein Enum immer 4 Byte, in Delphi 1, 2 oder 4 Bytes

Hier mal der Link zur Doku.
http://docwiki.embarcadero.com/RADSt...n_%28Delphi%29

Ok, da es alles Enums sind, sage ich, das liegt zu 99,9999% an der Enum Größe

EWeiss 22. Feb 2015 20:26

AW: Records von Delphi in VB6 verwenden
 
Zitat:

Zitat von Sir Rufo (Beitrag 1291016)
Ich wette in VB hat ein Enum immer 4 Byte, in Delphi 1, 2 oder 4 Bytes
Ok, da es alles Enums sind, sage ich, das liegt zu 99,9999% an der Enum Größe

Die frage wäre dann wie ändern in Delphi?
Wüsste jetzt auf anhieb nicht wie ich das in VB casten soll.

Das würde auch erklären warum der zweite Record ungepackt genau so groß wie in VB ist. (88 Bytes)
Während der erste nur mit Packed Record funktioniert. Siehe Anlage.

Hmm.. jetzt wird es schwierig.

gruss

jfheins 22. Feb 2015 20:33

AW: Records von Delphi in VB6 verwenden
 
Zitat:

Zitat von EWeiss (Beitrag 1291017)
Die frage wäre dann wie ändern in Delphi?
Wüsste jetzt auf anhieb nicht wie ich das in VB casten soll.

Wenn du in Delphi noch einen "Fake"-Wert zum enum hinzufügst, und diesem dan Wert $3000000 oder so gibst, dann sollte Delphi für den enum auch vier Byte benötigen.

EWeiss 22. Feb 2015 20:36

AW: Records von Delphi in VB6 verwenden
 
Zitat:

Zitat von jfheins (Beitrag 1291018)
Zitat:

Zitat von EWeiss (Beitrag 1291017)
Die frage wäre dann wie ändern in Delphi?
Wüsste jetzt auf anhieb nicht wie ich das in VB casten soll.

Wenn du in Delphi noch einen "Fake"-Wert zum enum hinzufügst, und diesem dan Wert $3000000 oder so gibst, dann sollte Delphi für den enum auch vier Byte benötigen.

Bitte kannst du das genauer erklären ?
Kleines Beispiel..?
Damit ich dem Developer mitteilen kann wie er das machen soll.

Aber Achtung die DLL unterstützt auch anderer Developer-Sprachen es muss auf jeden fall kompatibel bleiben.

gruss

Namenloser 22. Feb 2015 20:40

AW: Records von Delphi in VB6 verwenden
 
Ich denke, er meint so:
Delphi-Quellcode:
type
    TMPEGVersion = (tmpegvUnknown, tmpegv1, tmpegv2, tmpegv25, tmpegdummy = $FFFFFFFF);
Dann muss Delphi den Typ auf 4 Bytes erweitern.

EWeiss 22. Feb 2015 20:43

AW: Records von Delphi in VB6 verwenden
 
Zitat:

Zitat von Namenloser (Beitrag 1291020)
Ich denke, er meint so:
Delphi-Quellcode:
type
    TMPEGVersion = (tmpegvUnknown, tmpegv1, tmpegv2, tmpegv25, tmpegdummy = $FFFFFFFF);
Dann muss Delphi den Typ auf 4 Bytes erweitern.

Ahh ok Danke..
Wo bekomme ich jetzt die Infos her das ein VB6 Enum auch wirklich 4 Byte hat?
Nicht das ich es euch nicht glaube, will mich aber trotzdem mal informieren (ge-googled hab ich schon)

gruss

Sir Rufo 22. Feb 2015 21:39

AW: Records von Delphi in VB6 verwenden
 
Und was ist mit
Delphi-Quellcode:
{$Z4}
oder
Delphi-Quellcode:
{$MINENUMSIZE 4}
wie der von mir gepostete Link zur Dokumentation zeigt? :roll:

EWeiss 22. Feb 2015 21:46

AW: Records von Delphi in VB6 verwenden
 
Zitat:

Zitat von Sir Rufo (Beitrag 1291028)
Und was ist mit
Delphi-Quellcode:
{$Z4}
oder
Delphi-Quellcode:
{$MINENUMSIZE 4}
wie der von mir gepostete Link zur Dokumentation zeigt? :roll:

verstehe ich irgendwie nicht.
Kannst mir bitte erklären?

Meinst den Schalter {$MINENUMSIZE 4} für Enums setzen?

gruss

Sir Rufo 22. Feb 2015 21:52

AW: Records von Delphi in VB6 verwenden
 
Muss ich jetzt schon die Dokumentation vorlesen?

Muss wohl so sein ... Auszug aus der Delphi-Dokumentation (Link habe ich schon ein paar Beiträge vorher angegeben):
Zitat:

Die Direktive $Z legt die minimale Speichergröße für Aufzählungstypen in Delphi fest.
Ein Aufzählungstyp wird als vorzeichenloses Byte gespeichert, wenn die Aufzählung aus maximal 256 Werten besteht und der Typ im Status {$Z1} (Voreinstellung) deklariert wurde. Enthält der Aufzählungstyp mehr als 256 Werte oder wurde er im Status {$Z2} deklariert, wird er als vorzeichenloses Wort gespeichert. Aufzählungstypen, die im Status {$Z4} deklariert wurden, werden als vorzeichenloses Doppelwort gespeichert.
{$Z2} und {$Z4} sind hilfreich, wenn eine Schnittstelle zu C und C++ Bibliotheken benötigt wird, die Aufzählungstypen in der Regel als Wörter oder Doppelwörter darstellen.
Zur Erläuterung:

Wort und Doppelwort sind durch die (wohl automatische) Übersetzung gelaufen und lauteten im Original Word (2 Byte) und Doubleword (4 Byte).

Der letzte Satz aus dem Zitat ist so lange zu lesen, bis man ihn verstanden hat ... (VB ist kein C/C++ aber da von MS in den Dingen wohl ähnlich bis gleich)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:21 Uhr.
Seite 2 von 3     12 3      

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 by Thomas Breitkreuz