vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter -> Int32.Max.Valu 
Autor: Seek1
Datum: 03.02.21 12:31

Hallo Leute,

Wollte mit dem Binary Formater ein Array of Struct für das Speichern serialisieren und deserialisieren.
Leider bekomme ich immer den Fehler "Das interne Array kann nicht mehr als Int32.MaxValue-Elementen erweitert werden.

  Sub WriteRawFileToFile(ByVal BigFile As BigFileStruct(), ByVal Filename As _
    String)
        Dim bf As New _
        System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
        Dim fStream As New FileStream(Filename, FileMode.OpenOrCreate)
        bf.Serialize(fStream, BigFile) ' write to file
    End Sub
Umstellung 32bit auf 64bit und wechseln zwischen verschiedenen Frameworks brachte keine Lösung.

Gibt es eine Alternative dazu?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter -> Int32.Max.Valu 
Autor: Manfred X
Datum: 03.02.21 18:49

Hallo!

Das hört sich nach einem Überlauf an.
Wie sehen diese Strukturen aus? Wie viele Elemente enthält das Array?
Wandle die Struktur versuchsweise in eine entsprechende (serialisierbare)
Klasse um?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter -> Int32.Max.Valu 
Autor: Seek1
Datum: 04.02.21 10:08

In eine Klasse umwandeln hat nichts gebracht.
Die Struktur enthällt jeweils 5 Unterstrukturen.
Das Arrays hat ca. 800 000 Einträge. (Daher der Int32 Überlauf)

Was für eine Alternative habe ich?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter -> Int32.Max.Valu 
Autor: Manfred X
Datum: 04.02.21 21:44

Hallo

Folgender Code läuft bei mir problemlos durch (ca. 20 Sekunden)
Visual Studio 2019 - Framework 4.8

  'eine Struktur 
  <System.Serializable>
    Private Structure Anything
 
        Dim a As Integer
        Dim b As String
        Dim c As Decimal
        Dim d As String
        Dim e As Double
    End Structure
 
 
  Private Sub SerializeTest()
 
        Dim Big(800000) As Anything
 
        'Testdaten
        For i As Integer = 0 To Big.Length - 1
            Big(i) = New Anything With
            {.a = i, .b = New String(CChar(i.ToString), 10),
            .c = i / 123, .d = .b, .e = i * 1.456}
        Next i
 
 
        Dim fmt As New _
            System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
 
        'raus
        Using fs As New IO.FileStream("H:\Test\anything.ser",
                                      IO.FileMode.Create, IO.FileAccess.Write)
            fmt.Serialize(fs, Big)
        End Using
 
        Dim big2() As Anything
 
        'rein
        Using fs As New IO.FileStream("H:\Test\anything.ser",
                                      IO.FileMode.Open, IO.FileAccess.Read)
            big2 = DirectCast(fmt.Deserialize(fs), Anything())
        End Using
 
        'check
        For i As Integer = 0 To Big.Length - 1
            If Big(i).a <> big2(i).a Then Stop
            If Big(i).b <> big2(i).b Then Stop
            If Big(i).c <> big2(i).c Then Stop
            If Big(i).d <> big2(i).d Then Stop
            If Big(i).e <> big2(i).e Then Stop
        Next i
 
    End Sub
Alternative wäre vielleicht eine Datenbank.
Wie sieht diese Struktur eigentlich aus. Enthält sie Arrays? Listen?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel