Verschachtelte benutzerdefinierte Typen kopieren

  • VB6

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

    Da wird das ganze statt mit Binary mit Random gespeichert:

    Visual Basic-Quellcode

    1. Open "C:\test.txt" For Random As #1 Len = Len(Item1)
    2. Put #1, 1, Item1
    3. Close #1

    Aber dies geht auch nicht, Fehler wie oben: Objektverweis von Put oder get nciht unterstützt
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    Das Beispiel, dass im Link von alchimist vorkommt (Speichern und Laden von Benutzerdefinierten Typen) funktioniert prinzipiell...
    Aber wenn ich viel verschatle (mit Arrays, in denen wieder Arrays sind), dann bekomm ich nen überlauf in folgender Zeile:

    Visual Basic-Quellcode

    1. Open "C:\test.dat" For Random As FF Len = Len(NeueWohnung(0))


    Ich nehme an, dass das am Typ von Len (integer ?) und an der größe von NeueWohnung(0) liegt...
    Also ich habe jetzt fogendes herausgefunden. Ich habe in einem benutzerdefinierten Typ eine enum-variable drin und wenn ich diese durch integer oder sonstwas ersetze, geht es aufeinmal mit binary oder random ?!
    Jetzt frag ich mich doch, warum darf ich keine enum-Variablen verwenden???

    Visual Basic-Quellcode

    1. Private Enum tAnzahl
    2. nichts
    3. eins
    4. zwei
    5. drei
    6. End Enum
    7. Private Type Item
    8. anzahl As tAnzahl 'Integer
    9. text As String
    10. End Type
    11. Private Sub Command1_Click()
    12. Dim Item1 As Item
    13. Item1.text = "nur so"
    14. Item1.anzahl = zwei '2
    15. Open "C:\test.txt" For Binary As #1
    16. Put #1, , Item1
    17. Close #1
    18. End Sub
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Agent“ ()

    Jetzt frag ich mich doch, warum darf ich keine enum-Variablen verwenden???


    Ich nehm an das wissen nichmal die leute von M$.
    Verwende einfach nen integer und definiere Konstante, die den Gleichen Namen und Wert wie die Enum bestandteile habeb...
    Das hängt wohl mit dem Aufbau von UDTs in Visual
    Basic zusammen. Wer mehr darüber wissen möchte,
    dem empfehle ich, wie schon so oft, einen Blick auf
    diesen Artikel aus der MSDN zu werfen. In Programmen die
    Automatisierung verwenden, wie z.B. VB werden UDTs
    aus VARIANTs, BSTRs und SafeArrays gebildet. Und
    da der VARIANT Datentyp in einer selbstdefinierten
    Struktur wohl kein Zahlendatentyp ist (die Gründe dafür
    sind mir allerdings völlig schleierhaft), muss es ein
    Objektverweis sein und den kann man natürlich nicht
    speichern.
    Dann ist ein enum auch schon ein Objektverweis? Aber müsste man dann nicht bei enums die Werte mit "Set" zuweisen?
    LOL da hat sich MS ja was geleistet, machen aus den kleinsten Variablen schon Objekte. Na da kann ich ja froh sein, das Strings nicht auch schon Objekte sind...
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau

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

    Naja, man sollte vorsichtig mit solchen aussagen sein,
    dass Mircosoft mist gebaut oder sich was geleistet hätte.
    Es geht ja hierbei um eine Sprache, die von Automatisierung
    lebt. Und als solche müssen die Typen, die vom VARIANT
    Datentyp nicht standardmäßig verfügbar sind, für das
    ActiveX/COM/Automatisierungs System irgendwie
    bekannt gemacht werden muss. Dafür ist dann nun
    mal eine bestimmte Schnittstelle (IRecordInfo, wenn
    ich mich richtig entsinne) zuständig und das ist eben
    ein Objekt.

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