SCROLLINFO wie wird das eingebunden

  • VB.NET

Es gibt 26 Antworten in diesem Thema. Der letzte Beitrag () ist von -Franky-.

    Ich denke @RodFromGermany hat es nicht ganz korrekt gesagt. In nativen DLLs würde ich sagen ist nahezu der ganze Speicher unmanaged. Da muss man nicht unbedingt reservieren(alloc). Selbst wenn ComPtr zum Einsatz kommen, würde ich sagen das ist in diesem Sinne unmanged.
    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D

    VaporiZed schrieb:

    Kann ich so nicht verifizieren, siehe Video.
    Mit welchem Studio, Framework?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Win10 64-Bit, VS 2022 17.6.0 Preview 1.0, .NET-Framework 4.8
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Hi Ich versuche das mal mit meinen Worten. VB6 kennt keine Vorzeichenlosen Datentypen (bis auf Byte). Man kann in VB6 durchaus Vorzeichenlose Datentypen verwenden. Das entspräche dann einem Variant. Ein Variant ist von Haus aus 16Byte groß. Egal was nun im Variant steckt.

    Visual Basic-Quellcode

    1. Option Explicit
    2. Private Type Foo
    3. a As Long
    4. b As Variant
    5. End Type
    6. Private Sub Command1_Click()
    7. Dim f As Foo
    8. Debug.Print Len(f) ' 20
    9. Debug.Print Len(f.b) ' 0
    10. f.b = CLng(100)
    11. Debug.Print VarType(f.b) ' vbLong -> 4 Byte
    12. Debug.Print Len(f.b) ' 3 -> Len("100")
    13. Debug.Print Len(f) ' 20
    14. End Sub

    Kleiner VB6 Testcode. Egal wie Du es drehst, es würde immer die falsche Anzahl von Bytes herauskommen. Denke daher kommt es auch in .NET zum besagten "provoziertem" Fehler bei Verwendung von Len mit einem Datentyp, den VB6 nicht kennt. Erklärt zwar noch nicht warum Len(UInteger) funktioniert. Evtl. wird vorher mit VarType geprüft und wie in diesem Bsp. bei vbLong, evtl. kennt der .NET-Len ein vbULong, einfach 4 zurück gegeben.
    Mfg -Franky-
    Len gibt für einen UInteger einfach 4 zurück. Microsoft.VisualBasic.Len(0UI) eintippen, dann auf Len klicken und dann F12

    C#-Quellcode

    1. //
    2. // Zusammenfassung:
    3. // Gibt eine ganze Zahl zurück, die entweder die Anzahl der Zeichen in einer Zeichenfolge
    4. // oder die zum Speichern einer Variablen erforderliche nominale Byteanzahl enthält.
    5. //
    6. // Parameter:
    7. // Expression:
    8. // Jeder gültige String-Ausdruck oder -Variablenname. Wenn Expression vom Typ Object
    9. // ist, gibt die Len-Funktion die Größe zurück, wie sie von der FilePut-Funktion
    10. // in die Datei geschrieben wird.
    11. //
    12. // Rückgabewerte:
    13. // Eine ganze Zahl, die entweder die Anzahl der Zeichen in einer Zeichenfolge oder
    14. // die zum Speichern einer Variablen erforderliche nominale Byteanzahl enthält.
    15. [CLSCompliant(false)]
    16. public static int Len(uint Expression)
    17. {
    18. return 4;
    19. }

    Nur bei Structures wird ein wenig mehr gemacht (Überladung mit Object Parameter).
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Schon verrückt irgendwie bei VB6 mit dem Variant welches 16 Bytes hat, aber Len nur 3 ausgibt.

    Ich hab nun Len auch mal angeschut, ich denke es hängt hiermit zusammen, komm aber nicht weiter, weil ich keinen Zugriff auf StructUtils bekomme.
    Aus der Überladung von Len (object expression)

    C#-Quellcode

    1. if (Expression is ValueType)
    2. {
    3. new ReflectionPermission(ReflectionPermissionFlag.MemberAccess).Assert();
    4. int recordLength = StructUtils.GetRecordLength(Expression, 1);
    5. PermissionSet.RevertAssert();
    6. return recordLength;
    7. }


    Wie komm ich an diese Microsoft.VisualBasic.CompilerServices.StructUtils ran? Ich finde da nicht relevantes zu.

    Edit:
    Schon lustig wie man das manchmal findet nachdem man erstmal gefragt hat. :whistling:
    github.com/rashiph/DecompliedD…erServices/StructUtils.cs
    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DTF“ ()