AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Records von Delphi in VB6 verwenden
Thema durchsuchen
Ansicht
Themen-Optionen

Records von Delphi in VB6 verwenden

Ein Thema von EWeiss · begonnen am 22. Feb 2015 · letzter Beitrag vom 23. Feb 2015
Antwort Antwort
Seite 2 von 3     12 3      
EWeiss
(Gast)

n/a Beiträge
 
#11

AW: Records von Delphi in VB6 verwenden

  Alt 22. Feb 2015, 20:19
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.

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

Geändert von EWeiss (22. Feb 2015 um 20:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#12

AW: Records von Delphi in VB6 verwenden

  Alt 22. Feb 2015, 20:22
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
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#13

AW: Records von Delphi in VB6 verwenden

  Alt 22. Feb 2015, 20:26
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

Geändert von EWeiss (11. Jul 2019 um 16:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#14

AW: Records von Delphi in VB6 verwenden

  Alt 22. Feb 2015, 20:33
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.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#15

AW: Records von Delphi in VB6 verwenden

  Alt 22. Feb 2015, 20:36
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
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#16

AW: Records von Delphi in VB6 verwenden

  Alt 22. Feb 2015, 20:40
Ich denke, er meint so:
Delphi-Quellcode:
type
    TMPEGVersion = (tmpegvUnknown, tmpegv1, tmpegv2, tmpegv25, tmpegdummy = $FFFFFFFF);
Dann muss Delphi den Typ auf 4 Bytes erweitern.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#17

AW: Records von Delphi in VB6 verwenden

  Alt 22. Feb 2015, 20:43
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
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#18

AW: Records von Delphi in VB6 verwenden

  Alt 22. Feb 2015, 21:39
Und was ist mit {$Z4} oder {$MINENUMSIZE 4} wie der von mir gepostete Link zur Dokumentation zeigt?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#19

AW: Records von Delphi in VB6 verwenden

  Alt 22. Feb 2015, 21:46
Und was ist mit {$Z4} oder {$MINENUMSIZE 4} wie der von mir gepostete Link zur Dokumentation zeigt?
verstehe ich irgendwie nicht.
Kannst mir bitte erklären?

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

gruss

Geändert von EWeiss (22. Feb 2015 um 21:52 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#20

AW: Records von Delphi in VB6 verwenden

  Alt 22. Feb 2015, 21:52
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)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 02:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz