[VB5] Typen gepackt wie in Delphi

Von: , Frage gestellt am Do, 4. Nov 1999

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

4 Antworten zu dieser Frage

  1. Antwort von nach 4 Stunden hilfreich
    Re: [VB5] Typen gepackt wie in Delphi

    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]

    • Antwort von nach 15 Stunden hilfreich
      Re^2: [VB5] Typen gepackt wie in Delphi

      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

      • Antwort von nach 17 Stunden hilfreich
        Re^3: [VB5] Typen gepackt wie in Delphi

        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

        • Antwort von nach 18 Stunden hilfreich
          Re^4: [VB5] Typen gepackt wie in Delphi

          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

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!