[VB5] Typen gepackt wie in Delphi

Hallo,

gibt es die Moeglichkeit, in VB Typen zu deklarieren, die sich nicht nach den 4-Byte-Grenzen ausrichten. Etwas wie in Delphi der „packed record“.

Ich muss auf Routinen in einer DLL zugreifen, bei denen ein gepackter Typ uebergeben wird.

Niels

Jedes Byte-Array sollte gepackt sein:

Dim A As Byte (1023)

sind 1024 Bytes in Folge…

Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Reinhard,

das Problem ist, dass die DLL einen relativ aufwendigen Struct/record/Type zurueckgibt etwa folgendes:

Type
 B As Byte
 L As Long
 udf As Userdefined
 I As Integer
 L2 As Long
 udf2 As Userdefined
 .
 .
 .
End Type

die DLL uebergibt dabei den Typ als packed, VB richtet aber normalerweise die einzelnen Werte aus Geschwindigkeitsgruenden an Byte-Grenzen aus.
Wenn ich ein Byte-Array oder einen String bei der Uebergabe verwende, muss ich muehsam die einzelnen Teile herausoperieren. Das wollte ich eigentlich vermeiden!

Niels

Hallo Reinhard,

das Problem ist, dass die DLL einen
relativ aufwendigen Struct/record/Type
zurueckgibt etwa folgendes:

Type
B As Byte
L As Long
udf As Userdefined
I As Integer
L2 As Long
udf2 As Userdefined
.
.
.
End Type

die DLL uebergibt dabei den Typ als
packed, VB richtet aber normalerweise die
einzelnen Werte aus
Geschwindigkeitsgruenden an Byte-Grenzen
aus.

Du meinst sicher: an Wort-Grenzen…
Bist du sicher, dass die Komponenten im Record gepackt sind?
Normalerweise verwendet man doch bei der Parameterübergabe keine gepackte Strukturen - um gerade diese Probleme zu vermeiden. Woher stammt denn die DLL - kannst du die Art der Übergabe nicht beeinflussen bzw. ändern?

Wenn ich ein Byte-Array oder einen String
bei der Uebergabe verwende, muss ich
muehsam die einzelnen Teile
herausoperieren. Das wollte ich
eigentlich vermeiden!

Wenn das Record wirklich derart gepackt ist, wird dir wohl nichts anderes übrig bleiben, fürchte ich.

Reinhard

Hallo Reinhard,
keine Chance! Ich hab den Hersteller gefragt: Ja, sie sind gepackt.
Bleibt wohl nur die harte Tour.

Auf jeden Fall vielen Dank fuer Deine Antwort!

Ciao, Niels